Skip to content

chore: completed sprints are disposable — contract reworded, 36 sprint files deleted - #489

Merged
sungjunlee merged 1 commit into
mainfrom
chore/disposable-sprints
Sep 20, 2026
Merged

sungjunlee merged 1 commit into
mainfrom
chore/disposable-sprints

Conversation

@sungjunlee

Copy link
Copy Markdown
Owner

Decision (maintainer, 2026-09-20)

Sprint files are disposable work units, not history. What was done and how is already known from Issues, epics, and PRs, so the "completed sprints are immutable history / permanent execution record" contract is withdrawn: completed sprint files may be deleted at any time.

What stays unchanged:

  • an active sprint is still the execution hub while it runs;
  • status: completed is still never flipped back — reopening means a new sprint;
  • _context.md (cross-sprint context promoted at close) stays, and is the only thing worth keeping after a sprint closes.

What changed, per file

spec/capabilities.md — sprint-execution Hard Constraint, never-flip-back half kept:

  • Never mutate a sprint's status: completed back to active — reopening the work means a new sprint. Completed sprint files are disposable and may be deleted at any time: the record of what was done and how is the Issue, the epic, and the PR, and the only thing to keep is what was promoted to _context.md.

One append-only Decisions row added (no existing row edited or deleted):

| 2026-09-20 | Completed sprint files are disposable and may be deleted at any time; after a close the only thing kept is what was promoted to _context.md. status: completed is still never flipped back — reopening the work is a new sprint | a sprint is a disposable work unit, not a record: what was done and how already lives in the Issue, the epic, and the PR, so retaining closed sprint files only adds surface to read and to drift; the repo's own 36 completed files are deleted with this decision and remain in git history | the "completed sprints are immutable history" half of this capability's Hard Constraint, and the "Deletion stops at history: v1.0.0 is reserved and is not a cleanup cut, so completed sprint files stay" gotcha in _context.md |

The capability's Expected Behaviors and In-scope carried no "permanent record" wording, so nothing else in that section moved.

spec/system-map.md — Storage And External Systems:

  • .dev-backlog/sprints/ — admitted execution state; completed sprints are disposable; delete them freely, the record is the Issue/epic/PR.

skills/dev-backlog/SKILL.md (164 lines, unchanged — three one-line rewrites):

  • Core model: "…stay in an admitted sprint file while it runs; once completed that file is disposable — the record is the Issue, the epic, and the PR."
  • Complete rail: "…promote project-level Running Context to _context.md, which is the only thing worth keeping — the completed sprint file is disposable and may be deleted at any time."
  • Hard Constraint: "status: completed is never flipped back (reopening means a new sprint); completed sprint files are disposable and may be deleted at any time — keep only _context.md."

skills/dev-backlog/references/authority-contract.md — the Historical evidence row no longer routes reads to committed sprint files, which would otherwise have pointed at deleted files:

| Historical evidence | Repository history (git plus the authority's closed tasks and PRs) | Read closed Issues/PRs and commits (completed sprint files are disposable and may already be deleted) | … |

.dev-backlog/sprints/_context.md — the Architecture Decisions bullet's closing clause replaces "Deletion stops at history: v1.0.0 is reserved and is not a cleanup cut, so completed sprint files stay." with:

Completed sprint files are disposable and may be deleted at any time: the record of what was done and how is the Issue, the epic, and the PR, and _context.md is the only thing kept after a close.

Sprint files — all 36 .dev-backlog/sprints/2026-*.md deleted (git rm); _context.md and .dev-backlog/triage-config.yml kept. Git history keeps the deleted files.

README.md, CLAUDE.md, skills/dev-backlog/references/file-format.md, tests/evals/dev-backlog.md — grepped for "permanent" / "immutable" / "history" near "sprint"; no sprint-lifecycle claims found (the only hits are about docs/ retention and comment history), so no change. Eval scenario 9 already says only "promote durable context to _context.md, set the sprint completed", so nothing graded moved. docs/conformance/ is a recorded run artifact and was deliberately left as-is.

Test fixture change

tests/dev-backlog/authority-contract.test.js read .dev-backlog/sprints/2026-07-github-native-core-simplification.md and asserted two things on it: objectives: [O10] present, and no read-only fallback wording. That content moved to a new tests/fixtures/admitted-sprint.md — a minimal admitted-sprint file (frontmatter with the spec axis, Goal / batched Plan with [x] [~] [ ] and a moored in-flight pointer / Running Context / Progress) — and the test now reads the fixture. No test depends on a real repo sprint file any more.

Swept the rest of tests/ for real-file dependencies: every other .dev-backlog/sprints/2026-* path is written into a temp dir by the test itself. The doc-drift check (tests/tools/doc-drift-check.js) scans skills/*/SKILL.md, skills/*/references/*.md, and .dev-backlog/sprints/_context.md only — it never read the completed sprint files, and still reports zero dangling mentions.

Verification

Chained with &&, both green on the final tree:

node --test --test-concurrency=1 tests/*.test.js tests/*/*.test.js && bash tests/smoke/smoke-test.sh
  • Node: 188 tests, 187 pass, 0 fail, 1 skipped (the opt-in live triage-apply integration case, skipped without TRIAGE_APPLY_INTEGRATION=1), 36 suites
  • Smoke: 167/167 passed, 0 failed
  • Combined exit code 0

Diff: 44 files, +54 / −1,806.

BREAKING for nothing in code — prose and dogfood state only.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ

…t files deleted

Maintainer decision (2026-09-20): sprint files are disposable work units, not
history. What was done and how is already durable in the Issue, the epic, and
the PR, so the "immutable history / permanent execution record" contract paid
upkeep for a record that was never the record.

Withdrawn: the immutable-history half of the sprint-execution Hard Constraint
(spec/capabilities.md), "completed sprints are history" (spec/system-map.md),
the two "permanent record" clauses and the Hard Constraint in SKILL.md, and the
"Deletion stops at history: v1.0.0 is reserved and is not a cleanup cut" gotcha
in _context.md. references/authority-contract.md no longer routes historical
evidence to committed sprint files. One append-only Decisions row dated
2026-09-20 records the withdrawal.

Kept: an active sprint is still the execution hub while it runs, status:
completed is still never flipped back (reopening means a new sprint), and
_context.md remains the one thing promoted at close.

The repo's own 36 completed sprint files are deleted; git history keeps them.
tests/dev-backlog/authority-contract.test.js no longer reads a repo sprint file
— the sprint-shape assertions ride tests/fixtures/admitted-sprint.md.

Verified: node --test 188 tests, 187 pass / 0 fail / 1 skipped (live
triage-apply integration, opt-in); smoke 167/167.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
@coderabbitai

coderabbitai Bot commented Sep 20, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: e38da728-a224-4fe5-9bdb-755498337808


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-20T08:58:15.452040Z 20bb0af PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@sungjunlee

Copy link
Copy Markdown
Owner Author

Independent review round 1 (GPT-6 Astra via codex exec, read-only, with scripts/doctor/tests as context): LGTM — no residual contradiction, decision row appended only, fixture faithfully replaces the deleted sprint file, scripts run without completed files.

@sungjunlee
sungjunlee merged commit 2083272 into main Sep 20, 2026
3 checks passed
@sungjunlee
sungjunlee deleted the chore/disposable-sprints branch September 20, 2026 09:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant