Section 04: /continue-roadmap + /fix-next-bug Queue Filter
Goal: Eliminate the false-positive critical redirect — /continue-roadmap and /fix-next-bug no longer treat subsumed bugs as standalone work items.
Success Criteria: see frontmatter.
Implementation Sketch
The double-tracking pain point lives here. Today /continue-roadmap Step 1.5 enumerates bugs in the active section’s subsystem and redirects to /fix-bug if any are blocker/critical/high. Subsumed bugs trigger this redirect spuriously — the plan IS the fix; redirecting to /fix-bug is duplicate work.
The fix is mechanically simple: filter status: subsumed from queue inputs. The interesting design question is the visibility tradeoff — subsumed bugs SHOULD still be visible somewhere (otherwise the user loses track of what the plan is dissolving), just not in the active queue.
Two surfaces:
/continue-roadmapStep 1.5 relevant-bugs gate: filter applied. Subsumed bugs do not block roadmap continuation.- Owning plan’s quick-reference: preserved. The plan’s
00-overview.md §Mission Success Criteriaalready listssubsumes:claims;intel-query.sh plan-status <plan>includes them; this surface continues to show them.
Implementation Items
- §04.1 Modify
.claude/skills/continue-roadmap/roadmap_scan.py(the canonical relevant-bugs gate perask-user-question.mdconsumer list) to filterstatus: subsumedfrom the bug-enumeration step. Add a one-line filter in the bug-loading phase; preserve the existing severity/blast-radius logic for non-subsumed bugs. - §04.1 Update
.claude/skills/continue-roadmap/SKILL.mdStep 1.5 prose to document the filter (one-line cite torouting.md §2.X+00-overview.md §Missionof this plan). - §04.2 Modify
.claude/skills/fix-next-bug/SKILL.mdStep 2 (queue selection). Addstatus: subsumedto the existing skip set (alongsideclosed,in-progressif applicable). Verify severity ordering still produces correct next-bug for non-subsumed bugs. - §04.3 Extend
known-state.jsonschema (perstate-discipline.md §6) with asubsumed_bug_count: intfield tracked alongsidetest_dispositions. Populate viastate.sh refresh(full or--dispositions-onlymodes both touch bug-tracker enumeration)./continue-roadmapStep 1.5 readssubsumed_bug_countfrom cache for fast gate evaluation. - §04.4 Verify visibility —
intel-query.sh plan-status <plan-with-subsumes>lists thesubsumes:array prominently in human/json output; the plan’s00-overview.mdsubsumes:field is rendered byplan-status. If gaps exist, file follow-up bugs (do NOT defer in this section).
Test Strategy
Test matrix for queue-filter behavior:
| Bug status | /continue-roadmap Step 1.5 | /fix-next-bug Step 2 | Owning plan quick-ref |
|---|---|---|---|
open | Surfaces (existing behavior) | Surfaces (existing behavior) | N/A |
in-progress | Surfaces (existing behavior) | Skipped (existing behavior) | N/A |
subsumed | FILTERED (new) | FILTERED (new) | Surfaces (preserved) |
closed | Skipped (existing behavior) | Skipped (existing behavior) | Filtered (existing) |
Semantic pins:
- Positive: bug
status: subsumedis excluded from/continue-roadmapStep 1.5 redirect AND from/fix-next-bugStep 2 queue. Reverting the filter causes the redirect / queue to surface the subsumed bug spuriously. - Negative: bug
status: open(or any non-subsumed status) is NOT affected by the filter. Test that the filter doesn’t accidentally strip non-subsumed work. - Visibility-preserved positive: bug
status: subsumedIS visible viaintel-query.sh plan-status <owning-plan>. Test that visibility doesn’t regress.
Intelligence Reconnaissance
(2026-05-09) Section modifies .claude/skills/continue-roadmap/roadmap_scan.py + .claude/skills/fix-next-bug/SKILL.md + scripts/state.sh + extends known-state.json schema. roadmap_scan.py and state.sh are scripts (scripts/) — graph-indexed Python/Bash. The filter is a one-line predicate addition (status != "subsumed") in the existing bug-loading phase; no new call sites or symbol invocations beyond the existing bug-enumeration code path. Per compose-intel-summary.md, recording graph unavailability for the skill-body edits; the script-file changes (roadmap_scan.py, state.sh) are scoped narrowly enough that targeted symbol queries (callers / callees of the bug-enumeration helpers) provide no actionable additional context beyond direct Read. Cross-references resolved by direct Read: roadmap_scan.py (existing relevant-bugs gate verified per ask-user-question.md consumer list), state.sh (refresh modes verified per state-discipline.md §6), known-state.json schema v2 verified.
Cross-References
- §01 — routing rule defining the
subsumedstatus. - §02 — classifier that produces
status: subsumedbug states. - §05 — schema field this filter reads.
.claude/rules/state-discipline.md §6— known-state.json cache discipline./continue-roadmapSKILL.md,/fix-next-bugSKILL.md — host skills.scripts/state.sh— refresh script extended withsubsumed_bug_count.
04.1 Add status: subsumed filter to /continue-roadmap Step 1.5
- Read
.claude/skills/continue-roadmap/roadmap_scan.pyto locate the bug-loading function in the relevant-bugs gate (search for the existingstatusfilter — likely at the bug-enumeration site that already excludesclosed). - Pre-flight check: assert §05 schema ships
subsumedinOVERVIEW_STATUSES+FIX_STATUSES(grep "\"subsumed\"" scripts/plan_corpus/schemas.py). Abort §04 if not — §05 dependency unmet. - Implement filter: extend the existing skip-set predicate to also skip
status == "subsumed". Document the skip perrouting.md §2.Xrationale (subsumption is consequence-of-completion; redirecting from roadmap to /fix-bug on a subsumed bug is duplicative work). - Update
.claude/skills/continue-roadmap/SKILL.mdStep 1.5 prose: add one bullet documenting the filter. Citerouting.md §2.X+plans/plan-bug-subsumption/00-overview.md §Mission. - Test cases (matrix dimension table per Test Strategy section above): each row of the table verified by an end-to-end dry-run of
/continue-roadmapon a synthetic plan-and-bug fixture.
04.2 Add status: subsumed filter to /fix-next-bug Step 2
- Read
.claude/skills/fix-next-bug/SKILL.mdStep 2 (queue selection) — locate the existing skip set (likely includesclosed, possiblyin-progress). - Add
subsumedto the skip set. Document the addition with same one-line rationale +routing.md §2.Xcite. - Verify severity ordering still produces correct next-bug for non-subsumed bugs (regression test): synthetic fixture with mixed-status bugs of varying severities; assert correct next-bug picked from non-subsumed members only.
04.3 Add subsumed_bug_count cache field to known-state.json + state.sh
- Extend
compiler_repo/.claude/state/known-state.jsonschema (perstate-discipline.md §6) withsubsumed_bug_count: intfield, peer to existingtest_dispositions.{total,untracked,entries[]}block. - Extend
scripts/state.sh refresh(full mode +--dispositions-onlymode) to enumerate subsumed bugs (grep -l 'status: \"subsumed\"' bug-tracker/plans/*/00-overview.md | wc -l) and write the count toknown-state.json. - Update
/continue-roadmapStep 1.5 to readsubsumed_bug_countfrom the cache rather than re-grepping (reads-from-cache is the canonical pattern perstate-discipline.md §6). - Document the cache field in
state-discipline.md §6(or its consumer table) — adds one row to the existing table. - Schema regression:
python -m scripts.plan_corpus checkexit 0 after the schema extension; consumer pin advance per/sync-from-orilangStep 6.5.
04.4 Verify subsumed bugs still surface in owning plan’s quick-reference
- Verify
scripts/intel-query.sh plan-status <plan-with-subsumes>lists thesubsumes:array prominently in human + JSON output. If the existingplan-statusrendering does NOT surface subsumes, that’s a §06 implementation gap — file as a §06 follow-up (do NOT defer in this section perfeedback_no_nice_to_have_deferrals.md). - Verify the plan’s
00-overview.mdsubsumes:block renders in any human-readable plan-summary tool (e.g.,scripts/plan-complete.py --check-only). - Add a regression test asserting visibility: synthetic plan with
subsumes: [BUG-XX-NNN], runintel-query.sh plan-status, assert BUG-XX-NNN appears in output. - If §06 is not yet shipped at §04 close time, the plan-status assertion remains a future check — gate §04 close on a temporary hand-rendered visibility check (
grep -A 5 "subsumes:" plans/<plan>/00-overview.md) until §06 lands.
04.R Third Party Review Findings
- (no findings yet — populated post-TPR by Step 6
/tpr-reviewround)
04.N Completion Checklist
- All §04.1–§04.4 implementation items checked.
- Test matrix from Test Strategy section all passing (end-to-end dry-runs of
/continue-roadmapand/fix-next-bugagainst synthetic fixtures). -
python3 scripts/prose-lint.py .claude/skills/continue-roadmap/SKILL.md .claude/skills/fix-next-bug/SKILL.mdexit 0. -
python -m scripts.plan_corpus checkexit 0 (no schema regressions from the cache field addition). -
grep -nE '\(placeholder' plans/plan-bug-subsumption/section-04-queue-filter.mdreturns no hits. -
grep -nE '^- \[ \]' plans/plan-bug-subsumption/section-04-queue-filter.md— every remaining unchecked carries a concrete artifact pointer. - §05 schema dependency verified:
grep "\"subsumed\"" scripts/plan_corpus/schemas.pyreturns ≥2 hits (in OVERVIEW_STATUSES + FIX_STATUSES). -
scripts/state.sh refresh --dispositions-onlyproducessubsumed_bug_countin the resultingknown-state.json. - Section frontmatter
status:flippednot-started→complete;00-overview.mdmission criteria checkbox for §04 flipped[x];index.mdrow updated. - (NOT-APPLICABLE:)
compiler_repo/test-all.sh— skill-infra-docs plan; no compiler crate touched. - (NOT-APPLICABLE:)
/impl-hygiene-review— skill-infra-docs plan, no compiler Rust source touched.