Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions docs/plans/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ no other guidance is needed. Follow it top to bottom:
| ---- | ----- | ------ | ------------- |
| **W1** | 2.1.169 adoption + 2.1.168 orphan/boot correctness | #58 #45 #43 #26 | none — active now |
| **W2** | Verdict-signal trust (triage decisions) | — (#62 shipped) | none — triage anytime |
| **—** | Cross-cutting / later | #11 #8 #76 #77 #75 | n/a |
| **—** | Cross-cutting / later | #11 #8 #80 #81 (#83 #84 #85) #76 #77 #75 | n/a |

## Master census (all issues)

Expand All @@ -45,10 +45,15 @@ no other guidance is needed. Follow it top to bottom:
| - | ----- | ---- | ------ | ----- | -------- | ---- | ----- |
| 58 | Adopt CC 2.1.169 | W1 | Backlog | human | `/release-adoption` | — | **Both leaf sides now AUTHORED.** Patcher half MERGED → skrabe/tweakcc-fixed#5 (prompts + extractor); skrabe adopted the extractor as-is, verified independently (same 6 gaps / 2 `@internal` excludes) and on merge **regenerated the JSON via the canonical pipeline** (`e335fb9`, `TWEAKCC_UPSTREAM_JSON` set) — fixing an `agent-prompt-worker-fork` mis-bind (`WORKER_DIRECTIVE`/`ADDITIONAL_CONTEXT` slot-shift from inserted `AGENT_TOOL_NAME`) the carryover JSON had. **Lesson:** our seed-from-prior-JSON (no `TWEAKCC_UPSTREAM_JSON`) yields valid-but-wrong slot binds the union/skip guards miss — validate overrides vs **canonical main** JSON, not the adopt branch. Lobotomized half **shipped by skrabe** → lobotomized-claude-code@411f5e6 (opus-4-8 realigned onto 2.1.169 pristine: RETRIM×5, RESYNC×1, KEEP_SUPPRESSED×1, NET-NEW×3; his verify: four-zeros + mis-bind 0 + version-bump 0 blocking / 0 UNKNOWN) — so #26 no longer gates the 4-8 2.1.169 path (its croncreate-4-7 / inline-blob residual is a separate item). **Remaining = control-plane (HITL):** add 2.1.169 to the Support matrix + `pnpm tsx src/cli.ts` + save the Adoption record. Re-scope detail in #58 comment (2026-06-09). |
| 45 | Swap tweakcc-fixed#4 detector to the identifierMap-union check | W1 | Blocked | human | `/tdd` | — | agent work **done** (commit `bc60baa` on leaf PR #4); owner now human — remaining is HITL boot-verify vs stock 2.1.168 + skrabe merge (both his), relabeled `ready-for-human`. Not agent-pickable. Re-verified 2026-06-09: `pnpm build` + `pnpm test` green (275 pass), commit on the fork branch, skrabe notified — awaiting his merge |
| 43 | Patcher `--report-orphans` (producer, leaf PR to skrabe) | W1 | Backlog | human | `/release-adoption` | — | skrabe-facing PR + merge timing not ours. On landing, also wire `RealAdoptionEnvironment.adopt` to call the flag and populate `orphanReport` — the consumer is ready (#31), the env just omits the call until the flag exists. **Fresh-eyes 2026-06-09:** confirmed NOT superseded — auditMisbinds checks slot *correctness* (pre-apply) and versionBumpReport scans the JSON for `UNKNOWN_*` (build-time); neither emits the **apply-time surviving-placeholder** set this asks for. Reframe the ask as an **extension of `auditMisbinds` output** (skrabe's architecture; he's already extending that file) rather than a standalone flag, and open it **draft + intent ping** per the leaf-PR coordination rule (it's a feature ask into his patcher, a real imposition) |
| 43 | Patcher `--report-orphans` (producer, leaf PR to skrabe) | W1 | Backlog | human | `/release-adoption` | — | skrabe-facing PR + merge timing not ours. On landing, also wire `RealAdoptionEnvironment.adopt` to call the flag and populate `orphanReport` — the consumer is ready (#31), the env just omits the call until the flag exists. **Fresh-eyes 2026-06-09:** confirmed NOT superseded — auditMisbinds checks slot *correctness* (pre-apply) and versionBumpReport scans the JSON for `UNKNOWN_*` (build-time); neither emits the **apply-time surviving-placeholder** set this asks for. Reframe the ask as an **extension of `auditMisbinds` output** (skrabe's architecture; he's already extending that file) rather than a standalone flag, and open it **draft + intent ping** per the leaf-PR coordination rule (it's a feature ask into his patcher, a real imposition). **2026-06-09 reframe (issue comment):** largely SUPERSEDED by skrabe's published `driver.mjs` — `report` already emits the orphan-not-in-JSON + `UNKNOWN_N` counts and `auditMisbinds` is the slot gate; only the apply-time *surviving-placeholder set* remains, and that's now an ask against `driver.mjs report`/`auditMisbinds` output (his architecture), not a bespoke flag. Consumer routes through #80 |
| 26 | Leaf finding: lobotomized breaks CC 2.1.168 (evidence) | W1 | Backlog | human | — | — | **Un-parked** — live blocker for #58's lobotomized half. Pre-existing & version-independent: overrides ref slot names absent from the canonical identifierMap → guard-skip (override silently inert) or boot `ReferenceError`. **opus-4-7 vocab alignment shipped** → skrabe/lobotomized-claude-code#5 (4-7 lagged: `767011b` converged only 4-8 onto upstream vocab): memory-synthesis `OPTIONAL_TAIL_NOTE`→`EMPTY_STRING`, enterplanmode →`CONDITIONAL_WHAT_HAPPENS_NOTE_FN()`, workflow 5-slot rename — all 3 confirmed correct by skrabe vs committed `prompts-2.1.169.json`. Validated vs **canonical** tweakcc-fixed `main` JSON (post `e335fb9` regen — NOT the pre-regen adopt branch; that flipped my first memory-synthesis edit, reverted). **2026-06-09 correction:** the 2 opus-4-8 `\${VERSION}`/`\${GITHUB_TOKEN}`/`\${DATADOG_*}` escapes also in PR #5 were **wrong and rejected by skrabe** — `data-anthropic-cli`/`skill-cowork-…mcp-discovery` are stored under quote (not backtick) delimiters in `cli.js`, so `${VAR}` is inert literal text and the patcher's backslash-doubling makes escaping corrupt the rendered output. Escape-or-not is decided by quote-vs-backtick delimiter, not "looks like a doc example." **Remainder open (`ready-for-human`):** croncreate-4-7 (expression-form `${CRON_DURABLE_FLAG?…}`→bundle-owned `CRON_DURABILITY_SECTION`, real restructure) + inline-blob minified ids (`inline-*`, both 4-7/4-8 — need re-extraction). Static pre-check only; HITL boot-verify is authority |
| 11 | Roadmap: behavioral A/B benchmark (stock vs lobotomized) | — | Parked | human | — | — | roadmap item |
| 8 | Roadmap: leaf test broadening (tweakcc-fixed + lobotomized) | — | Blocked | human | `/tdd` | — | **Agent work DONE (2026-06-09)** — gap inventory posted (issue comment, grouped per leaf, ranked); tweakcc-fixed test PR prepared → skrabe/tweakcc-fixed#6 (escape/identifier customization units + pinned 2.1.169 golden digest; +17 tests, full suite + lint green). Lobotomized per-override coverage resolved as **already covered by `tools/auditMisbinds.mjs`** (the slot-binding gate, confirmed by skrabe on lobotomized#5) — no parallel harness in the data-only repo (ADR 0001); the only residual (gate-ify auditMisbinds + a quote-context escape check) is patcher-altitude and skrabe-owned, not a lobotomized PR. Remaining: per the leaf-PR coordination rule, #6 was set to **draft + intent ping** — awaiting skrabe's call on whether he wants the tests and in what shape (he may want the version-pinned golden dropped, keeping only the maintenance-free helper units). Not a plain merge-wait. Relabeled `ready-for-human`, owner→human |
| 8 | Roadmap: leaf test broadening (tweakcc-fixed + lobotomized) | — | Blocked | human | `/tdd` | — | **Agent work DONE (2026-06-09)** — gap inventory posted (issue comment, grouped per leaf, ranked); tweakcc-fixed test PR prepared → skrabe/tweakcc-fixed#6. Lobotomized per-override coverage resolved as **already covered by `tools/auditMisbinds.mjs`** (the slot-binding gate, confirmed by skrabe on lobotomized#5) — no parallel harness in the data-only repo (ADR 0001). **2026-06-09 — skrabe reviewed #6:** keep `systemPromptCustomization.test.ts` (version-independent pipeline-helper units — "exactly the shape I want"), **drop** `promptsGolden.test.ts` + the 2.1.169 snapshot (redundant with his showtime no-regression check + auditMisbinds + capture/read-consistency tests; regen-every-bump friction; snapshots quirks rather than root-causing them). Done (commit `e835b4f`, suite green), PR **un-drafted** → now a plain merge-wait. Bonus: our snapshot surfaced a real extractor finding (`system-reminder-cross-session-peer…` flip-flop 2.1.167↔2.1.169 + 4× dup-id) he'll root-cause; evidence left on the PR. Relabeled `ready-for-human`, owner→human |
| 80 | Gate shells to skrabe's published `driver.mjs` instead of reconstructing the four-zeros verdict | — | Backlog | agent | `/tdd` | — | **Filed 2026-06-09** from skrabe's `skills/showtime/` publish (`c5fabdf`). `real-adoption-environment.ts` + `four-zeros-verdict.ts` hand-roll a parser of his `--apply` output (the #58 drift risk); shell to `driver.mjs check` (zeros #1/#2) + `report` (zero #3 + UNKNOWN) instead, keep static validator advisory (ADR 0005), driver-absent fallback like #31. Treat `auditMisbinds=0` as four-zero #4. Needs-triage |
| 81 | Maintenance machine — epic: index both leaf repos, synthesize, extract a defer-vs-lead improvement backlog | — | Tracking | mixed | — | — | **Tracking epic (2026-06-09).** North star: a first-class maintenance machine that doesn't replicate skrabe but stands on his canonical work to make meaningful improvements/bug-fixes. Ships via 3 phase children #83→#84→#85. Holds the operating doctrine + seed findings (private third layer `91df974`, publish-hygiene, the canonical showtime skill, his PR-#6 review bar) |
| 83 | Maintenance machine — Phase A: index both leaf repos (tree + history + PRs) | — | Backlog | agent | `/improve-codebase-architecture` | _#81_ | **Phase A of #81.** Read-only per-repo sub-agent fan-out → ref-anchored index artifact (no judgment yet). Blocks #84/#85. Needs-triage |
| 84 | Maintenance machine — Phase B: synthesize the index into durable knowledge | — | Blocked | mixed | — | #83 | **Phase B of #81.** Route findings → CONTEXT/ADR/skill/runbook/memory + no-synonyms terminology pass + explicit defer-vs-reinvent calls. Blocked on #83. Needs-triage |
| 85 | Maintenance machine — Phase C: extract the defer-vs-lead improvement backlog (the value-add) | — | Blocked | mixed | — | #84 | **Phase C of #81 — load-bearing payoff.** Ranked defer-vs-lead backlog (bug discovery / hardening / anticipation / cross-leaf invariants), filtered by skrabe's PR-#6 bar; top "lead" items opened as their own issues + operating-doctrine note. Blocked on #84. Needs-triage |
| 76 | deepening: export `versionPassed` from integration-gate so adoption-history doesn't redefine it | — | Backlog | agent | `/improve-codebase-architecture` | — | **Loop-filed** (architecture-review loop, from #52). Dedup: adoption-history redefines the `versionPassed` predicate instead of importing the gate's. Needs-triage (only `source:architecture-review` label). Agent-doable code change |
| 77 | Add PreToolUse hook to gate typecheck before git commits | — | Backlog | agent | `/update-config` | — | **Loop-filed** (apply-agent-research Consumer, from #51). Proposes a project-scope typecheck gate in the git-guard/secret-guard mold (ADR 0006). Needs-triage (only `source:agent-research`); confirm it earns its line vs CI before wiring — a slow pre-commit hook can be friction |
| 75 | staleness-review: Node + pnpm pins (2 satisfy, 1 floor; no Dependabot config) | — | Backlog | mixed | `/staleness-audit` | — | **Loop-filed** (staleness-review loop, from #53). 2 pins satisfy, 1 at floor; no Dependabot config. Needs-triage (only `source:staleness-review`). **EOL ranking absent** — the harness web-validate is disabled (dividedby/skills#179), so this report is unverified/un-EOL-ranked until that lands. In-major bumps are gate-guarded auto-apply; cross-major stays a recommendation |
Expand Down