Blocker Matrix - Fix What Unblocks the Most Flows

Tier by flows unblocked, not ticket age

Share

Cert week: integrated TEST is red, every team claims their ticket is P0, and FIFO plus loudest voice decide the order. You clear easy single-flow bugs while entitlement still blocks registration, detail, and critical-path complete. Launch standups need leverage, not ticket age.

Here's what this piece covers: why FIFO fails under deadline, what the 2026-08-01 blocker matrix measured, priority tiers and focus order, the named pattern, and three habits for Monday publish. Same math as spread triage - rank by contexts (here: flows) cleared.

Part of the Field Notes: agentic delivery series.


1. The leadership problem

Without flow mapping, you fix cosmetic tickets while the critical path stays broken. Phase 2/3 SIT cannot prove team → seam → journey until tier-1 blockers clear.

Wrong: "Prioritize blockers."
Right: "Aug 2026 matrix: P0/P1/P2 by journey leverage - recommended focus order for cert, not FIFO."

The anti-pattern is loudest-voice prioritization - random fix order under deadline.


2. What the matrix shows

Derived 2026-08-01 from the integrated-environment status deck into docs/cubsit-blocker-priority-matrix.md. Method: each deck row linking a ticket to a blocked feature/flow = one link; dedupe per distinct flow name.

Metric Value
Unique blocking tickets 27
Total blocked flow links 40
Top ticket CUB-1066 - 5 flows
Tickets blocking 2+ flows 7
flowchart TD D[Status deck rows] --> L[Ticket to flow links] L --> U[Dedupe per flow] U --> T[Tier by link count] T --> F[Focus order for cert] F --> G[Flow green criteria]

3. What I built: tiers and focus order

Tier 1 (3+ flows): CUB-1066 (5), CUB-1054 (4), CUB-1062 (3).
Tier 2 (2 flows): PTC-4786, PTC-5231, GLSCM-4686, CUB-1065.
Tier 3: single-flow blockers - still ordered by surface (critical path before cosmetic).

Recommended focus:

  1. CUB-1066 + CUB-1054 - entitlement / warranty and pending-registration paths ripple across product registration and critical-path complete (9 combined links).
  2. CUB-1062 - promotions across listing, detail, and cart surfaces (PDP / PLP / Cart as technical labels).
  3. Multi-flow tier-2 tickets, then single-flow - prioritize default address/email on complete among singles.
from collections import defaultdict

def build_blocker_matrix(deck_rows):
    # Each (ticket, flow_name) once - leverage = distinct flows blocked
    links = defaultdict(set)
    for ticket, flow in deck_rows:
        links[ticket].add(flow)
    return sorted(
        ((t, len(flows)) for t, flows in links.items()),
        key=lambda x: (-x[1], x[0]),
    )

def tier(flow_count):
    if flow_count >= 3:
        return 1
    if flow_count == 2:
        return 2
    return 3

Cross-cutting clusters matter: fix the capability (extended warranty, pending registration, promotions), not one deck row in isolation. Same idea as registration/CRM handoffs - the seam is the unit of work.


4. Named pattern: blocker matrix

Blocker matrix - tier tickets by flows unblocked, not age or volume; publish leverage order for cert week.
Artifact Who uses it Decision it supports
Priority tiers EM, program What ships Monday
Focus order Integrators Sequence across teams
Reverse lookup (flow → tickets) QA / SIT Triage a red journey
Cluster notes Leads Fix once, clear many rows

What broke: deck drifts and the matrix goes stale. Unticketed blockers (service not yet integrated, SSO not ready) still hold progress - list them so FIFO theater does not hide them. Declaring "launch ready" without flow green criteria recreates parallel truths.


5. What I'd do as a lead

Three habits - steal one this month:

  1. Publish the blocker matrix Monday; rederive when the status deck updates. Stale leverage is worse than no matrix.
  2. Assign one integrator to cross-ticket flows (registration / entitlement path), not per-team silos racing FIFO.
  3. Define "flow green" before declaring launch ready. Ticket Done ≠ journey proven - same bar as integration chain tests.

Further reading