Skip to content

[meta] dev-workflow roadmap — status & where to start #29

Description

@azevedo

A living map of open work. Most items here are triaged decisions (deferred/declined with a documented trigger), not live backlog — so this issue, not the raw issue list, is the place to answer "where do I start?". Last updated 2026-08-11 (#85 closed — the 5f capture receipt shipped, v0.46.0; follow-up #87 added to Ready to build now. See the note on #81 below: its ba-propose Step 5f target was rewritten by this ship). Updated 2026-08-25 — #34 raised in the plan→execute lane: #92's brainstorm (ship-time ticket write-back) deliberately scoped plan-time write-back out and handed it to #34, which now owns every planning-time tracker write.

Evidence for the plan→execute thrust below: docs/research/2026-06-17-plan-execute-vs-ce-comparison.html — dev-workflow vs compound-engineering (ce-plan / ce-work).

🔭 Plan→execute evolution (current thrust — from the CE comparison)

Sequenced; the keystone (#31) shipped (#40, v0.27.0) — read-only plans + git-derived progress are now live. #33 (HTML output mode) shipped (PR #42, v0.30.0) — see Recently resolved. #27 (/ba:review-plan upgrade) shipped in v0.29.0 — see Recently resolved.

Stacked-workflow support (#45 + #47) shipped — PR #51, v0.33.0. The new resolve-stack-base(git, opts) owned operation narrows <base> to the detected stack parent across execute / handoff / propose / review. See Recently resolved.

Issue What Impact State
#34 ⬆️ Next up in this lane. Planning-time deferred-work capture — file a Linear ticket / plan deferred section (authoring-time only — #31 makes plans read-only). Widened 2026-08-25: #92 scoped plan-time write-back out, so this is now the sole owner of all planning-time tracker writes — deferred work and the Step 4.6 reconciliation ledger. Note its blocker: no ticket ID survives /ba-plan today (origin: is a brainstorm path), and Step 4.6 forbids tracker calls by name at skills/ba-plan/SKILL.md:510-511. High (was Med) — stop losing deferred work you currently track by hand, and the only route by which a plan's narrowing reaches its ticket. needs-brainstorm
#36 Tiered review escalation for /ba:review — size/sensitivity → depth. Med — right-sizes review effort across varied PR sizes (work-scale). needs-brainstorm
#37 Approach-altitude — "plan a plan" before a full plan for high-uncertainty work. Med — cheaper bets on uncertain work; may cut "plan feels lacking" churn. needs-brainstorm
#38 Reconsider the mandatory convention-compliance gate in /ba:plan. ➡️ superseded by #58 (model-fit lane) — the tradeoff now has external evidence.

Parked / not-doing: parallel worktree execution (Low — your call) · post-deploy-monitoring in /ba:propose (Low) · non-software planning path (dropped, not relevant).

✅ Ready to build now

#41 shipped (see Recently resolved). Of the two follow-ups it surfaced, #71 shipped narrowed and is closed (v0.40.0, PR #73 — see Recently resolved) and #72 (ba-execute has no failure branch for an explicitly-provided missing path) is still open and unlaned.

Independent — take any: #87 (presence-only CI pin for /ba-propose's six-value capture-receipt enum — the follow-up #85 deferred; rubric-mirror is the precedent shape, and #82 is adjacent work in the same script), #79 (two parts: a live resolve-stack-base bug making every non-stacked repo report ambiguous, plus letting ba-execute's menu invoke /ba-propose instead of printing it), #60 (audit reviewer dispatch prompts for recall-suppressing language), #83 (range/list line-anchors silently dropped by the review validator — affects all eight reviewers, surfaced by #55's dry-run; overlaps #69 and arguably belongs with #61). #59 is closed — both slices shipped (see Recently resolved). Its unfinished scope is #81, which is needs-brainstorm, not ready work: one of its three targets (ba-propose Step 5f) is pick-up-able, the other two are blocked on the always-reached problem. #65 shipped and is closed (v0.40.1, PR #74 — see Recently resolved).

#79 is the cheapest item on this map — item 1 is a two-line fix to a wrong string comparison, and its blast radius is all four resolve-stack-base consumers. Item 2 is small but revises CLAUDE.md's disable-model-invocation criterion, which #71 established; read that criterion before starting.

#64 shipped (see Recently resolved). The mirror-site check it might have supplied was dropped during planning, since CLAUDE.md's convention prose is not machine-readable — still a separate, undecided question.

The plan→execute items (#34, #36, #37) still need a brainstorm first; #38 is superseded by #58. #24 was deferred 2026-07-06 (see Deferred).

🤖 Autonomy chain (north-star — sequenced; start at the substrate)

#10#9 → independent validator → #19. Don't start at #19 (unshaped) or the validator (needs the autonomous path to exist first).

Issue Role
#10 Non-interactive / headless / report-only modes — the substrate; start here.
#9 Autofix-class field — feeds an autofix mode; needs #10.
(research doc) Independent validator (verify fix + precondition) — build when an autonomous-action path exists. docs/research/2026-06-07-verify-fix-precondition-frequency-research.md
#19 Autonomous MR lifecycle orchestrator (/ba:autopilot) — umbrella; needs its own brainstorm.

🧠 Knowledge compounding (cluster:compound)

/ba:compound works when run, but only runs when typed by hand — so compounding opportunities are lost. This lane fixes triggering first, then hardens doc quality, with corpus maintenance deferred. Evidence: docs/research/2026-07-18-ba-compound-auto-trigger-and-ce-capture-research.md (mechanics + ce-compound comparison).

Issue What State
#52 Fire at the right moment — dropped the auto-path confirmation friction and added an assessment-gated ship-time capture offer to /ba:propose. The felt problem; highest value. ✅ shipped (v0.34.0)
#53 Doc-quality hardening — two stdlib validators (claims + frontmatter), grounding prose rules, bug/knowledge track split (⚠️ existing-doc migration), overlap→update-vs-create, auto-memory scan. needs-brainstorm
#54 /ba:compound-refresh — corpus maintenance (five-outcome Keep/Update/Consolidate/Replace/Delete). Deferred behind the capture-side work. deferred

Sequence: #52 shipped → #53 next → #54 (healthier capture before maintenance).

🧩 Model fit (cluster:model-fit — new thrust, 2026-07-26)

Anthropic published new context-engineering guidance for the Claude 5 generation, and Every reported that Opus 5 broke their existing plugin workflows — the same class of artifact as this one. Their fix was deleting scaffolding, not adding it. This lane adapts the prompt surface. Evidence: docs/research/2026-07-26-opus5-context-engineering-fit-research.md (external sources linked inside).

Headline: /ba:plan runs four same-turn self-verification layers over a plan the same model just wrote — the exact pattern the Opus 5 guide says to remove — and the two largest commands are ~18k tokens each with 40–60% unreachable per run.

Issue What Impact State
#58 Remove same-turn self-verification from /ba:plan + /ba:execute. Subsumes #38 (that question's missing external evidence now exists). High — the guide claims token savings with no quality loss. needs-brainstorm
#59 Closed. Slices 1 + 2 shipped (PR #78, v0.43.0); skill-local references proven to load on demand at runtime. ✅ closed
#81 Successor to #59. ⚠️ Its Step 5f premise is stale: #85 rewrote 5f (v0.46.0) — the predicate moved to 5e and 5f shrank to a one-branch consumer, so the ~150-line block this item sized is gone. Re-measure before picking it up. ba-propose Step 5f was pick-up-able; ba-review's Step 5 resolvers and ba-plan's templates are reached on every run, so relocating them adds weight — blocked on design, with a revisit trigger. ⬇️ Downgraded from High — slice 2 measured −544 est tok on a /ba-review run but +29 on every other session and +1536 on --persist. The win is real and small; the conditional path got worse. needs-brainstorm
#60 Audit reviewer dispatch prompts for recall-suppressing language (the guide: report everything, filter in a separate pass — which already exists). Med — wording audit, not a redesign. ready
#61 Give reviewer subagents a declared output contract (the legacy_format/mixed_format salvage counters are evidence the prose contract drifts). Med needs-brainstorm
#62 Replace mechanical over-specs with judgment framing — excluding machine-boundary contracts. Med needs-brainstorm
#63 Adopt effort as the cost lever + calibrate artifact length. Overlaps #36 (tiered review escalation) — effort is the control surface that item was reaching for. Med needs-brainstorm

Sequence: #60 next (#59 closed; its successor #81 needs a brainstorm first) #62/#63/#61. #58 is on hold — the v0.36.0 harness runs went against its premise; see the counter-evidence comment there before starting it. #65 shipped (v0.40.1 — and its own comment thread now carries a third data point against #58's premise: the convention gate returned three real findings that changed the artifact). #64 shipped (see Recently resolved).

(Historical: the #41#59 sequencing debate is resolved — both shipped. #41 renamed the files, #59's slices then shrank them.)

Caveat carried by every item in this lane: prompt-only changes cannot be dry-run in a live session, and there is no eval harness, so each needs a fresh-session before/after.

⏸️ Deferred — trigger-gated

Issue Trigger to revisit
#24 /ba:polish v0 (browser polish command) — deferred until further notice (2026-07-06): no current need, worth questionable. Revisit only if a concrete need for a post-review browser-polish phase appears.
#6 Review-completeness check (plan or MR-description source; #11 merged in) — revisit when review traffic shifts toward plan-linked self-authored diffs, or you want completeness on plan-less MRs. #35 resolved (verification model locked); not slice-aware; re-check coupling vs #31.
#25 /ba:polish Tier-2 platform map — after #24 ships and a consuming repo owns a map
#54 /ba:compound-refresh (corpus maintenance) — revisit when corpus drift/overlap becomes a felt cost (duplicate docs that mislead, stale learnings citing moved code); already close in a consuming repo. Behind #52/#53.
(research doc) Pre-existing collapsed section — if real code review shows a higher rate. docs/research/2026-06-07-preexisting-finding-frequency-research.md

❌ Declined — revisit-gated

Issue Revisit trigger
#8 B7 evidence-match — hallucinated-citation pain appears
#7 A3 behavioral reviewer-prompt fixtures — re-declined 2026-07-27; the prompt-edit-velocity trigger was consumed by #64. Remaining: C2 lands · contributors >1 · an observed regression incident. Stays a per-change method, not a suite.

💭 Needs brainstorm (idea, not yet shaped)

Issue What
#34 Planning-time deferred-work capture
#36 Tiered review escalation for /ba:review
#37 Approach-altitude ("plan a plan")
#38 Reconsider the /ba:plan convention-compliance gate
#44 /ba:review Med-conf-100 posting/apply filter recalibration (taste-domain reviewers; cluster:review-quality)
#69 /ba:review-plan's anchor grammar silently drops cross-unit findings (cluster:review-quality) — found by a live run on the #41 plan; overlaps #61, may fold into it
#53 /ba:compound doc-quality hardening — validators, track split, overlap-aware writes (cluster:compound)
#20 /ba:prove — screenshot evidence for the MR
#19 autopilot orchestrator (autonomy chain)
#58 Remove same-turn self-verification from /ba:plan + /ba:execute (cluster:model-fit; subsumes #38)
#61 Reviewer subagent output contract (cluster:review-quality)
#62 Mechanical over-specs → judgment framing (cluster:model-fit)
#63 Effort as cost lever + artifact-length calibration (cluster:model-fit; overlaps #36)
#76 Verification-first investigation skill — factful "how does X work" reports via a claim/confidence ledger, evidence-type triangulation + adversarial critique→refine, evidence-before-theory discipline (cluster:research, new lane)

🗄️ Recently resolved

  • [roadmap] /ba-propose Step 5f is silently skipped; its own trace mechanism cannot detect the skip #85/ba-propose Step 5f (the ship-time /ba-compound capture offer) was specified as a required terminal step but routinely did not run, and its own trace mechanism could not witness the skip — the four 5f: capture offer suppressed — <reason> lines were printed by the very prose being skipped. The fire/suppress predicate now resolves in 5e and rides the success block as a third line, capture: <value>, over a closed six-value enum; 5f is a one-branch consumer (fire on judged-reusable, no-op otherwise). Step 5's completion invariant became the receipt printed, not 5f ran. Decided by a fixture A/B, and the instrument's limits are on the record: four arms, and the hoisted arm won as the only one where no cell had to improvise (0 improvisations at high confidence, against 9 at medium for the nearest arm) — but the fixtures did not reproduce the field skip (5f ran in all four baseline cells), so the run is evidence about receipt shape and emission and is silent on whether co-location prevents the skip. The pre-committed decision rule also proved unsatisfiable as written (one fixture's ground truth is the line's absence) and was rescored, with a fourth arm added by a user-approved decision round. Verified at runtime before merge, not just by grep: a real commit_push_create ship on a stacked branch printed the three-line receipt in the correct order with a valid enum value, and the retired token appeared nowhere. That dry-run's own vehicle — a note on how to read a local version-bump FAIL — shipped with it (PR docs(prompt-authoring): prevent a second bump from a version-bump FAIL #88, squashed in). An 8-reviewer review pass closed two High findings pre-merge, both drift: README.md claimed the disposition is always "the third line" (the unresolved-URL route legitimately makes it line 2, at three further sites), and the 5e sketch used a goto 5f_dispatch(decision=None) label defined nowhere. The 5e mirror list was also corrected to separate the two sites that restate the literals from the three that are pointers. Residuals, recorded not closed: the six literals are pinned by no CI check (→ [roadmap] Presence-only CI pin for /ba-propose's six-value capture-receipt enum #87); unavailable and suppressed — non-interactive remain unexercised by any fixture; 5f's offer branch (judged-reusableAskUserQuestion/ba-compound) was not exercised by the dry-run, which resolved judged-not-reusable; and whether hoisting prevents the skip is unfalsified in either direction and only accrues from field use. Learnings: docs/solutions/prompt-authoring/2026-08-11-absence-grep-proves-spelling-not-concept-removed.md — a full-token grep read green while the file still described the deleted machinery in other words. Also found incidentally: Step 2e's n/a enumeration for Proof: does not know about .claude/agent_docs/, so passive prose there falls through to pending. Shipped (v0.46.0, PR fix(ba-propose): report the capture disposition on every ship receipt #86, main d0e6b28).
  • [roadmap] Comment-quality review — dedicated agent vs. fold-in, seeded by the antirez comment taxonomy #55 — comment-quality review, resolved as a dedicated agent (not fold-in): ported the user-level reviewer in as the eighth built-in, on ~78% sole-attribution / 3.3% exact-anchor overlap across 36 production runs. Dropped from the port: the read-ordering rule (the original justification, and measured-unsupported), the verdict line, and the input-shape pass selector, whose single-symbol branch is unreachable once the sole consumer always supplies a multi-file diff. Also repaired a live routing bug — complexity-reviewer deferred comment findings to architecture-reviewer (where "comment" appears nowhere) and to a reviewer that did not exist. Landed narrowed, user-approved pre-plan: no /ba-review-plan roster row, since plan documents carry no code comments — /ba-review is eight, /ba-review-plan stays seven, asymmetry stated at the roster site and both docs, reachable via Adjust → Other. Verification is four fresh-session dry-runs, not a suite. The first silently dropped 6 of 10 findings on line-range anchors against a single-integer grammar — the highest-value six — mitigated in this agent and split out to [roadmap] Range and list line-anchors are silently dropped by the review validator #83, which affects all eight and is long-standing. A validation criterion was also found self-contradictory mid-flight (zero-comment diffs required findings-none, contradicting the retained missing-contract rule) and loosened. Residuals, recorded not closed: missing-contract findings ship structurally suppressed at confidence 50 against a Medium floor of 75 ([roadmap] /ba:review — recalibrate the "Med-conf-100" posting/apply filter for taste-domain reviewers #44's tier); the evidence corpus was collected at model: inherit while it ships model: sonnet; and reviewer counts across skills and docs stay hand-maintained literals behind no CI check. Shipped (v0.45.0, PR feat(ba-review): add comment-quality-reviewer as the eighth built-in reviewer #84, main 6ced791).
  • [roadmap] Shrink the always-resident prompt surface in review.md and propose.md #59 — closed, both slices shipped. Slice 1 de-triplicated the dispatch templates, collapsed the rubric out of the 7 reviewer agents and purged maintenance chatter (−213 ln). Slice 2: extract ba-review's --persist run-artifact procedure into skills/ba-review/references/review-persist.md, behind two load sites gated on PERSIST=true. The repo's first skill-local reference and first bare-relative citation. The probe, not the shrink, was the deliverable: a pre-registered three-arm live harness (7 cells, 0 void) established that a bare-relative skill-local citation resolves to the skill-local path (arm A), that the file is genuinely not read on a run that skips the branch (arm B, 3/3, each cell having dispatched reviewers and reached Step 5 — which is what makes the zero mean "skipped" rather than "died early"), and that a missing reference file makes the run skip-and-continue without improvising a directory (arm C, 3/3). Landed narrowed, and the numbers are worse than the lane assumed: two of the three planned targets were dropped during planning once shown to be reached on every run, and the measured resident saving is 70161 → 67641 bytes (~3.6%) while a --persist run now costs ~1318 est tokens more than before — conditionality bought at a cost on the conditional path. Also disclosed: the brainstorm's "exactly one load site per region" lock was overridden to two (to preserve the pre-reviewer ^C affordance), and an acceptance criterion was found self-contradictory mid-flight and re-anchored. Residuals, recorded not closed: --plugin-dir collapses plugin-root onto cwd, so this does not generalise to an installed plugin; and there is no regression detector — nothing re-verifies the Read on future runs, so re-run arms A and B on any model bump touching /ba-review. Found incidentally and split out to [roadmap] Fix resolve-stack-base's origin/HEAD exclusion; make /ba-propose invokable from ba-execute's menu #79: resolve-stack-base never excludes origin/HEAD. Unfinished scope moved to [roadmap] Finish the prompt-surface shrink: propose.md 5f, and two targets blocked on always-reached design #81. Shipped (v0.43.0, PR refactor(ba-review): stop loading persist prose on non-persist runs #78); issue closed 2026-08-09.
  • [roadmap] /ba:plan writes the plan to disk before the pre-write gate #65/ba-plan wrote the plan to disk before its own pre-write gate (Step 5). The step order was already correct; the prose contradicted itself, and in three places rather than the two the issue named — Step 4's bare "Write the plan", and Step 5 item 5's "Append compliance summary to the plan's end (as before)", which instructed an append to a file the same step forbids writing. Four wording edits, no new mechanism. Step 7 names Steps 5 and 6, not just 5: review caught that Step 6 also mutates the draft pre-write, so naming only 5 would license writing at 5's end. Shipped without a plan or a brainstorm artifact — it collapsed to +8 −6 across 4 files and the commit message carries the rationale. CLAUDE.md and README.md were amended to stop overclaiming: the gate convention stands, but only ba-plan enforces the ordering and ba-brainstorm is now named as known debt (its Phase 3 writes, then Phase 3.5 gates). Verification is a null, and a new kind: a two-arm live-harness dry run looked directional (baseline wrote at +125s, treatment wrote nothing) but neither arm ran Step 5 — the caller's global CLAUDE.md suppressed the subagent dispatch in both arms, symmetric so it left no asymmetry to spot, and claude -p exposes no AskUserQuestion. The baseline also never reproduced the bug, so the floor effect was confirmed rather than merely predicted. The coherence half needed no run; the sequencing claim is unverified and the commit message makes none. Learnings: docs/solutions/prompt-authoring/2026-07-31-global-instructions-replace-the-step-under-test.md — the third instrument-failure axis (subject substitution, vs. context and mechanism/filesystem). Shipped (v0.40.1, PR fix(ba-plan): remove the write-early contradiction around the pre-write gate #74, main 135be88).
  • [roadmap] ba-plan's description is a capability blurb, and it is now model-invocable #71 — trigger-scope the three model-invocable skill descriptions (ba-plan, ba-review-plan, ba-compound — the only three omitting disable-model-invocation: true, so the only three a model can fire autonomously). Each gained a three-part shape: what it produces, an enumerated "Use when …" list, a shedding clause. ba-review-plan also discloses its in-place plan-file write in the description; its newest-file auto-detect hazard moved into the body, where the post-invocation behavior it describes actually lives. Landed narrowed: the issue's third bullet (rewrite all nine) was dropped — confirmed under the harness that the model-visible listing contains only those three, so the other six cannot affect triggering. Verification substituted, and it is a null: the mandated fixture A/B was declined (it scores post-invocation body behavior; triggering is a pre-invocation picker decision, and its global-CLAUDE.md confound biases both arms toward the treatment) in favour of a 36-session live-harness probe. The baseline never false-fired (0/3 on every ambiguous cue) — a floor effect, so the false-firing claim is not made; true-positive firing held or rose, and a FAST-TRACK-shaped cue went 2/3 → 3/3. Also fixed, found by this branch's own handoff refusing at runtime: three menu branches told the model to invoke a flagged skill (ba-execute/ba-review, → /ba-propose; ba-plan/ba-execute), and CLAUDE.md's flag criterion was corrected — it now turns on whether the caller must invoke the target to continue its own run, since an end-of-run handoff menu is not an in-run continuation. Learnings: docs/solutions/prompt-authoring/2026-07-31-probe-instrument-validation-false-zeros.md. Shipped (v0.40.0, PR fix(skills): bound when ba-* skills fire, and fix three dead handoffs #73, main 4fe2c27).
  • [roadmap] Migrate dev-workflow commands → skills (/ba-<name>) #41 — migrate the nine commands to plugin skills: commands/ba/<n>.mdskills/ba-<n>/SKILL.md, invoked /ba-<n>. Claude Code 2.1.216 stopped resolving the directory-derived ba: namespace, so the short form returned Unknown command and nothing the plugin could ship restored it; the ba identity moved into the skill name (hyphen, never a colon — a colon is upstream's parser to redefine, and colons break Windows paths). All nine renames at 92–98% similarity. disable-model-invocation: true on the six non-dispatch-targets, omitted on the three another skill invokes. references/ stays repo-root and shared, with skill bodies anchored to ${CLAUDE_PLUGIN_ROOT}/references/… — which also fixed a pre-existing latent bug where the bare path only resolved when cwd happened to be this repo. A fourth standing invariant (retired-invocations) now fails on any reintroduction of the colon form outside docs/, with file:line; selfcheck 25 → 34 cases. docs/ deliberately untouched (~2400 historical occurrences are the record of what these were called when written). Every acceptance criterion verified at runtime via claude --plugin-dir ., including the ba-planba-review-plan --auto dispatch and its [AUTO-SCORE: …] sentinel parse — see the issue for the probe table. An 8-reviewer review pass caught one Critical (CLAUDE.md claimed CI enforced the name:-equals-basename rule; no check does) and two High, all fixed pre-merge; CLAUDE.md ended 13 lines lighter than before the review. Follow-ups [roadmap] ba-plan's description is a capability blurb, and it is now model-invocable #71, [roadmap] ba-execute has no defined failure branch for an explicitly-provided missing plan path #72. Shipped (v0.39.0, PR fix: make the nine ba workflows invocable again as /ba-<name> skills #70, main c65387c).
  • [roadmap] /ba:review-plan recommendations ignore the plan's own scope exclusions #66/ba:review-plan scope-exclusion anchor: Step 5 now treats a fix that edits/narrows/qualifies the plan's own ## What We're NOT Doing section as a spec decision regardless of severity bucket, routed through the existing Decide-now/Iterate-the-plan pair, quoting the exclusion verbatim. Narrowed during a fixture A/B (docs/research/2026-07-28-review-plan-scope-anchor-ab-research.md): a second, more ambitious trigger ("resolution requires arguing a remedy doesn't cross an exclusion," without editing the exclusion text) was tested and dropped as unproven prompt weight — it showed no separation from main across three fixture attempts. Covers the literal incident (exclusion text rewritten to pre-justify a fix); the subtler "argues around it" shape stays open — see the issue's closing comment. Shipped (v0.38.0, PR fix(review-plan): don't silently cross a plan's stated exclusions #68).
  • [roadmap] Structural assertions for cross-file invariants #64 — structural assertions for cross-file invariants: scripts/check-invariants.mjs (three checks — cross-command [AUTO-SCORE: …] sentinel agreement with fence-scoped heredoc pairing, references/*.md load-site resolution, .claude-plugin/plugin.json version-bump discipline), each a tri-state PASS/FAIL/UNKNOWN verdict with subject count + reason so a vacuous-empty subject set can never read as green. scripts/selfcheck-invariants.mjs (25 cases) exercises every FAIL/UNKNOWN branch against ephemeral os.tmpdir() trees. .github/workflows/invariants.yml runs both on push to main and on pull_request — the repo's first executable code and first CI. Rescoped from 5 checks to 3 during planning (two were vacuous/red at HEAD — see the issue for the dropped-checks findings). Code review surfaced and fixed two real bugs pre-merge (heredoc terminator double-count across a shared fence; a closing fence accepted past CommonMark's 0-3-space indentation cap). Shipped (v0.37.0, PR feat: catch cross-file convention breaks via CI #67, main 9fab557).
  • [roadmap] /ba:compound — fire at the right moment (drop friction, offer capture at ship-time) #52/ba:compound ship-time capture (triggering-only slice): stripped the inert auto-trigger block + Step 0 friction gate from compound.md; added an assessment-gated, lean-silent ship-time capture offer as a terminal Step 5f in /ba:propose (after a successful create only) that offers to run /ba:compound on the just-shipped learning; corrected the README/CLAUDE auto-trigger claims and documented the /ba:compound hand-off exception. Host = propose only; nudge → single accept; human gate kept. Shipped (v0.34.0, main 579f12b). Next in lane: [roadmap] /ba:compound — doc-quality hardening (validators, track split, overlap-aware writes) #53 (doc-quality hardening).
  • [ba:execute] U-ID collisions across stacked plans break the subject-scan resume tier #45 + [ba:propose] Stack-aware MR targeting — default to the parent branch, not master, for stacked MRs #47 — stacked-workflow support: new resolve-stack-base(git, opts) → resolution owned operation in execute.md (sibling to the U-ID convention) narrows <base> to the detected stack parent by window-narrowing — fixing the U-ID subject-scan collision that silently skipped units on resume/handoff ([ba:execute] U-ID collisions across stacked plans break the subject-scan resume tier #45) and /ba:propose's always-target-master mis-scope/mis-target ([ba:propose] Stack-aware MR targeting — default to the parent branch, not master, for stacked MRs #47). Consumed by execute / handoff / propose / review via injected host_signal (propose only); no change to the U-ID commit-subject grammar; own 4-site citation axis rendered as a 2-axis grid in CLAUDE.md. Shipped (v0.33.0, PR feat: correct /ba:* base resolution on stacked branches #51).
  • [roadmap] /ba:review — Apply all dispositions (collapse per-finding confirmation loop) #43/ba:review collapse the per-finding confirmation loop: replaced the "Apply all fixes" resolution option with "Accept all recommendations" (final label — "dispositions" dropped as user-facing jargon), which executes each finding's recommended disposition (apply recommended-Apply, skip recommended-Skip, pause only at recommended-Modify) with a single confirmation. Reuses the existing reconciliation + verify-then-keep guard; own-MR top-menu shortcut swap; confidence filter retained as the severity escape hatch. Shipped (v0.32.0, PR feat(review): accept all reviewer recommendations in one step #50).
  • [roadmap] /ba:propose apply-by-default — skip Step 4 confirm via --yes / env var #46/ba:propose apply-by-default: propose now applies without the Step 4 confirm by default; --review / BA_PROPOSE_REVIEW=1 restores the confirmation gates (the opt-in was inverted from the original --yes design). Shipped (v0.31.0, PR feat(propose): default to apply, surface proof/risk/where-to-look #49).
  • [roadmap] HTML output mode for plans (executable, agent-consumable) #33 — HTML output mode for plans + brainstorms: single self-contained .html artifact, visible-text header as frontmatter equivalent, <article id="u<n>"> unit cards (id on container, not heading tag), named HTML conformance preflight (3-signal conjunction) cited by all three consumers (execute / review-plan / handoff), references/html-rendering.md + per-command section contracts. Extension-first routing; md vs html guidance in README. Shipped (v0.30.0, PR feat: add HTML output mode for /ba:plan and /ba:brainstorm #42).
  • Bring /ba:review-plan up to parity with /ba:review #27/ba:review-plan parity with /ba:review: dropped external discovery; ported the judged selection ledger (re-keyed to plan sections / ### U<n> / keyed AC<n>), per-finding confidence + soft gate (Must-Address ≥50, Consider ≥75) + Suppressed bucket, and the parse→validate→group→merge→gate→render pipeline. The inline-vs-lean fork resolved to hybrid: a self-suppressing section-scoring auto-score runs at the end of /ba:plan (Step 7) via --auto + an [AUTO-SCORE: …] verdict sentinel, while the standalone command stays lean. Shipped (v0.29.0).
  • Flatten agents/ to collapse the plugin-agent namespace #26 — Flatten agents/ namespace: 17 agents moved to agents/ flat, dispatch qualified to dev-workflow:<name> across all command files. Shipped (v0.28.0).
  • [roadmap] Decouple plan-state from the plan file (stable U-IDs + code-derived progress) #31 — Decouple plan-state (keystone): shipped in refactor: decouple /ba:execute state from the plan file into git #40 (v0.27.0). Read-only plan + plan_schema: 2 hard cutover + U-ID/derive-state hybrid resume (single convention owner in execute.md, cited by plan/propose/handoff) + deviations via Deviation (U<n>): trailers rolled up by /ba:propose + Step 1.5 retired + [roadmap] Reconcile Behaviors-to-Test vs Acceptance Criteria in plans #35's remainder folded in. Unblocks [roadmap] HTML output mode for plans (executable, agent-consumable) #33.
  • [roadmap] Reconcile Behaviors-to-Test vs Acceptance Criteria in plans #35 — Reconcile Behaviors-to-Test ↔ Acceptance Criteria: model locked (3-role schema: keyed ## Acceptance Criteria + per-unit Test scenarios: + per-unit Verify: as sole done-authority — docs/brainstorms/2026-06-21-reconcile-acceptance-verification-schema-brainstorm.md); keyed-AC slice shipped (0.26.0), remainder shipped with [roadmap] Decouple plan-state from the plan file (stable U-IDs + code-derived progress) #31 in refactor: decouple /ba:execute state from the plan file into git #40 (0.27.0).
  • [roadmap] Retire reactionary plan-pipeline features (slice + plan-LoC gate) #32 — retired reactionary plan-pipeline features: /ba:slice + the plan-LoC iteration gate removed. Shipped (convention-gate question split to [roadmap] Reconsider the mandatory convention-compliance gate in /ba:plan #38).
  • refactor: default /ba:plan to decisions, gate code behind a shape label #30 — justification-gated plan code: /ba:plan defaults to decisions; literal code only under a **Code-shape decision:** label. Shipped (0.24.0).
  • [roadmap] /ba:review own-MR resolution pipeline — route → walk → guard (items 5/6/7) #28/ba:review own-MR resolution pipeline (route → walk → guard, items 5–7). Shipped.
  • [roadmap] automate the /ba:review interactive loop while preserving reviewer taste #23/ba:review automation items 1–4: Item 1 shipped, 2 & 3 deferred (research-backed), Item 4 declined. Downstream 5–7 → [roadmap] /ba:review own-MR resolution pipeline — route → walk → guard (items 5/6/7) #28 (shipped).

🧭 Where to start — pick a lane

Newly visible after #41 (2026-07-30), updated 2026-07-31: three items converged on how a plan gets selected and executed#65 (a plan reaches disk ungated), #71 (ba-plan is now model-invocable, so a plan can be generated unbidden), #72 (ba-execute has no failure branch for an explicit path that does not exist, adjacent to the auto-detect it would otherwise fall through to). All three terminate at the same mechanism: ba-execute auto-detects the most recent plan_schema: 2 file in docs/plans/.

#71 shipped without touching that mechanism (consumer-side hardening was scoped out, user-approved), so the convergence is unchanged by it — the question of whether these are three tickets or one is still open, now over #65 + #72 + #71's residual. Note the residual needs a joint call with the shipped plan-gate work (#65 / PR #74 — its reasoning is recorded in the commit message and the issue's closing comment; the brainstorm artifact was deliberately deleted before merge, so do not look for it under docs/brainstorms/). #65 declines consumer-side guards on reasoning that does not cover #71's case: "if the ordering invariant holds, no ungated plan exists to detect" is silent on a spuriously triggered ba-plan, which produces a fully gated, well-formed plan. Both threads decline the guard by pointing at the other's threat model, and now that #65 has shipped without it, the union still leaves it open — with #72 as the third arm.


Labels: ready · deferred · declined · needs-brainstorm, plus cluster:autonomy | polish | review-quality | infra | compound | model-fit | research. Filter the issue list by these to slice this map.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions