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
45 changes: 45 additions & 0 deletions backlog/sprints/2026-07-multi-track-sprints.md
Original file line number Diff line number Diff line change
@@ -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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Fix capability anchors before routing the spec amendment

When the #294 spec amendment is picked up from this active sprint, these anchors send the reader to the wrong contracts in the current tree: spec/capabilities.md:28 is in tracker-task-truth, while the sprint-execution singleton is at line 69, and :69 is not the backlog-sync/sprint-mirror contract, which is at line 111. Since this line is the handoff for a human-gated amendment, please update the anchors or remove the brittle line numbers so the spec pass edits the intended blocks.

Useful? React with πŸ‘Β / πŸ‘Ž.

- 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 <path>` 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.
Loading