From eb909a56ae77289308812ad5817257f456561075 Mon Sep 17 00:00:00 2001 From: SJ Lee Date: Sun, 12 Jul 2026 17:17:57 +0900 Subject: [PATCH] chore: re-add multi-track sprint file as sole active (#289) Held out of #296 because a second active sprint was illegal pre-#293; the tracker-adapter sprint has since closed (1d47692), so this returns as the sole active track. Content from 78981eb, refreshed: #290/#291/ #293 ticked with their merged PRs, Running Context notes the shared scopesOverlap contract and the G4 anchor, Progress records the landings. Refs #289. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../sprints/2026-07-multi-track-sprints.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 backlog/sprints/2026-07-multi-track-sprints.md diff --git a/backlog/sprints/2026-07-multi-track-sprints.md b/backlog/sprints/2026-07-multi-track-sprints.md new file mode 100644 index 0000000..18cbbf2 --- /dev/null +++ b/backlog/sprints/2026-07-multi-track-sprints.md @@ -0,0 +1,45 @@ +--- +milestone: 2026-07 multi-track sprints +status: active +started: 2026-07-11 +due: TBD +objectives: [O1] +component: "sprint-execution" +--- + +# multi-track-sprints + +## Goal +Replace the global single-active-sprint invariant with a component-partitioned model — multiple disjoint-scope tracks active at once — with single-track behavior byte-identical. Tracked by epic #289; design in `docs/prd-2026-07-multi-track-sprints.md`. dev-relay coordination is a separate repo epic (`sungjunlee/dev-relay#954`). + +## Plan + +### Batch 1 — RED gate (test-first) +- [x] #290 Phase 0: multi-track RED gate — evals + smoke fixtures → PR #297 (merged) + +### Batch 2 — Resolver foundation +- [x] #291 Phase 1a: scope: frontmatter + portfolio-aware read resolvers → PR #300 (merged) + +### Batch 3 — Behavior (parallel-safe: disjoint files) +- [ ] #292 Phase 1b: sprint lifecycle track-awareness (init/close/mirror) +- [x] #293 Phase 1c: backlog-doctor active_sprint → scope-disjointness check → PR #305 (merged) + +### Batch 4 — Spec amendment (HUMAN-GATED) +- [ ] #294 Phase 1e: amend capabilities.md singleton invariant + +### Batch 5 — Docs + contract +- [ ] #295 Phase 3: docs + integration-contract schema_version → 2 + +## Running Context +- Design + decisions frozen in `docs/prd-2026-07-multi-track-sprints.md` (§9 D1–D4 resolved). +- The singleton is a durable capability contract, not just SKILL prose: `spec/capabilities.md:28` (sprint-execution invariant), `:69` (backlog-sync/sprint-mirror), `:7` (component single-slug). Amendment is human-gated via spec-grill → tracked as #294, which gates the SKILL/process prose flip in #295. +- Charter O1 ("single execution **state**") is about shared state, not sprint count — compatible with multi-track, but its wording is a candidate for a human-gated clarification alongside #294. Do not silently amend the charter. +- dev-relay coupling is shallow: the only hard code-level singleton is `append-learnings.js:resolveActiveSprint` (dev-relay#955); the rest is prose (dev-relay#956) + an indirect fleet fail-loud (dev-relay#957). `sprint-close-report.js --sprint ` is the agnostic pattern to replicate. +- Back-compat is the merge gate for Batch 2–3: single-active output must stay byte-identical (PRD G4). The G4 anchor lives in smoke-test.sh (single-track doctor/next.sh text; never snapshot --json). +- `scopesOverlap()` in `scripts/lib.js` is the ONE overlap predicate — sprint-state and backlog-doctor consume it; #292's sprint-init refusal must import it too, never re-implement. +- This sprint file was held out of #296 (a second active sprint was still illegal pre-#293) and re-added 2026-07-12 as the sole active after the tracker-adapter sprint closed. + +## Progress +- 2026-07-11: sprint planned. Epic #289 + children #290–#295 filed; dev-relay epic #954 + #955–#957 filed. Design doc landed in docs/ (uncommitted). +- 2026-07-12: Batches 1–2 landed while the sprint file was held: #290 RED gate (PR #297), #291 Phase 1a resolvers (PR #300) — sprint-state schema 2, portfolio + --track/--component, scopesOverlap in lib.js. +- 2026-07-12: #293 Phase 1c landed (PR #305) — doctor scope-disjointness with per-track fan-out; GATE_MT_DISJOINT/GATE_MT_OVERLAP enforced, smoke 172/172, 0 xfail; single-active output verified byte-identical. Sprint file re-added as sole active.