Symptom
Every open BUGFIX PR is silently invisible in the dashboard's Needs Attention list — the architect doesn't see it even after CMAP completes. Repro: spawn any BUGFIX builder, let it complete CMAP and reach phase: verified with an open PR, observe the Needs Attention list does not include that PR.
Confirmed today on Shannon workspace (PR 1846, bugfix-1845 builder) — and the same condition would have applied to bugfix-844 / PR #845 in the Codev workspace, except the builder pinged me directly via afx send so I noticed the PR anyway.
Root cause
PR #844's filter (NeedsAttentionList.tsx:42-100, shipped in v3.1.3) gates PR inclusion on b.blocked === 'PR review'. This is the gate label for the porch pr gate, which SPIR/ASPIR/PIR/AIR all have. BUGFIX does not have a pr gate — codev-skeleton/protocols/bugfix/protocol.json's pr phase has no gate field, so the builder transitions cleanly from pr to verified after CMAP without ever blocking.
For BUGFIX builders post-CMAP:
b.blocked is null (no gate held)
b.phase is verified
- An open PR is linked to the builder's issue
Neither condition in the current filter fires:
- Condition A (builder at pr gate) → fails (
blocked is null)
- Condition B (no builder +
reviewStatus === 'REVIEW_REQUIRED') → fails on both (builder exists; fresh-PR reviewDecision is "", not "REVIEW_REQUIRED")
Fix (the B path — fast, filter-only)
In NeedsAttentionList.tsx's buildItems (or upstream in overview.ts), replace blocked === 'PR review' with a derived "CMAP-done" check that handles both gated and gateless protocols:
const prReady = builder
? builder.blocked === 'PR review' || (builder.phase === 'verified' && hasOpenLinkedPR)
: (pr.reviewStatus === 'REVIEW_REQUIRED' || pr.reviewStatus === '');
if (!prReady) continue;
Rename the derivation prReady (not blocked === 'PR review') so the intent is in the code, not just the head of whoever wrote it.
Acceptance criteria
Out of scope
[Linked issue for the A path] tracks the canonical-porch-signal version of this fix — adding pr_ready_for_human to status.yaml so consumers don't have to derive. This issue is the immediate filter patch.
References
packages/dashboard/src/components/NeedsAttentionList.tsx:42-100 — the regression site
packages/codev/src/agent-farm/servers/overview.ts — where OverviewBuilder is shaped
codev-skeleton/protocols/bugfix/protocol.json — BUGFIX's gateless pr phase
- v3.1.3 release notes — for context on what shipped
- Live evidence: Shannon workspace PR 1846 (today)
Symptom
Every open BUGFIX PR is silently invisible in the dashboard's Needs Attention list — the architect doesn't see it even after CMAP completes. Repro: spawn any BUGFIX builder, let it complete CMAP and reach
phase: verifiedwith an open PR, observe the Needs Attention list does not include that PR.Confirmed today on Shannon workspace (PR 1846, bugfix-1845 builder) — and the same condition would have applied to bugfix-844 / PR #845 in the Codev workspace, except the builder pinged me directly via
afx sendso I noticed the PR anyway.Root cause
PR #844's filter (
NeedsAttentionList.tsx:42-100, shipped in v3.1.3) gates PR inclusion onb.blocked === 'PR review'. This is the gate label for the porchprgate, which SPIR/ASPIR/PIR/AIR all have. BUGFIX does not have aprgate —codev-skeleton/protocols/bugfix/protocol.json'sprphase has nogatefield, so the builder transitions cleanly fromprtoverifiedafter CMAP without ever blocking.For BUGFIX builders post-CMAP:
b.blockedisnull(no gate held)b.phaseisverifiedNeither condition in the current filter fires:
blockedis null)reviewStatus === 'REVIEW_REQUIRED') → fails on both (builder exists; fresh-PRreviewDecisionis"", not"REVIEW_REQUIRED")Fix (the B path — fast, filter-only)
In
NeedsAttentionList.tsx'sbuildItems(or upstream inoverview.ts), replaceblocked === 'PR review'with a derived "CMAP-done" check that handles both gated and gateless protocols:Rename the derivation
prReady(notblocked === 'PR review') so the intent is in the code, not just the head of whoever wrote it.Acceptance criteria
phase: verifiedwith open PR → PR appears in Needs Attention.prgate with open PR → PR appears in Needs Attention (existing behavior preserved).Out of scope
[Linked issue for the A path] tracks the canonical-porch-signal version of this fix — adding
pr_ready_for_humantostatus.yamlso consumers don't have to derive. This issue is the immediate filter patch.References
packages/dashboard/src/components/NeedsAttentionList.tsx:42-100— the regression sitepackages/codev/src/agent-farm/servers/overview.ts— whereOverviewBuilderis shapedcodev-skeleton/protocols/bugfix/protocol.json— BUGFIX's gatelessprphase