Repository navigation
chore: compact _context.md to the current state - #487
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 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. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
`_context.md` is read first by every session, so it has to be true today, not a record of 36 sprints. 55 -> 30 lines (`wc -l`), one line per item, three headings kept. Dropped as false or superseded: - "GitHub-only since v0.12.0 ... `.tracker` is parked ... a leftover `.tracker` is ignored" — v0.15.0 made `.tracker` the one-line declared task authority (absent = github; backlog/files; gitlab), read by `readTaskAuthority` in `lib.js` and a mirrored guard in `sprint-close.sh`. - "Tracker generality is a charter Non-Goal (rev 19) ... do not re-add ... a selection file" — charter rev 20 scopes the Non-Goal to a tracker abstraction *in code*; the one-line selection IS the supported mechanism. - Relay-shaped lines: relay was deprecated 2026-09-19, so the `sprint-state` JSON is the fresh-session recovery rail rather than a consumer contract, and `[~]` is moored by `-> PR #N (state)` or `[branch:name]` only. - `docs/conformance/2026-09-17-tracker-wave.md` — deleted from the tree; the harness recipe and the retention rule now live in `docs/conformance/README.md`. - Script line-count inventories (2,255 lines / 11 files, the 13-vs-14 miscount) — stale every wave; replaced by the rule not to quote counts here at all. - Historical bookkeeping with no behaviour attached: #366 closing without a matrix, the wave-3/wave-4 epic framing, the `lib.sh` `DEFAULT_BACKLOG_DIR` incident, setup/`config.yml` preservation (`config.yml` is gone), "prefer minimal-diff refactors" and "script interfaces stay stable" (both subsumed by the keep test). Merged, not dropped: the keep test appeared twice; the per-model "Astra caught X" gotchas collapse into one cross-family-review convention plus the two-parsers-drift rule; the spec-fallback boundary, the optional `objectives:`/`component:` rules, and the measurement-hygiene lessons (one stated glob, `path.join`, no quoted line counts) are one line each. Attributions to a specific reviewer model and dates that carry no meaning are gone. Every "keep" rule survives: the one `scopesOverlap` predicate, commit the sprint file when opening it, JSON surfaces as the machine path, no unconditional cross-repo `../spec-charter/` read, SKILL.md goal/rail/Done-when discipline, evals in `tests/evals/`, the four surfaces scripts own, the fail-closed Work rail, session-written GitHub-only triage, the `gh issue create` flag-parsing trap, the offline smoke test, v1.0.0 not being a cleanup cut, capturing `$?` before `gh pr merge`, the in-flight pointer grammar, explicit rejection of deleted flags, amending acceptance instead of trimming to a number, and no line budgets for subagents. Completed sprint files and `spec/*` are untouched. Verification: `node --test --test-concurrency=1 tests/*.test.js tests/*/*.test.js` 188 tests / 187 pass / 0 fail / 1 skipped, and the smoke test 167/167; the doc-drift check reports no dangling script mentions. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
71f1add to
5e72836
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 71f1add5bb
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - Milestones, PR relationships, comments, and closing semantics are plain `gh` calls the session (or one small bash guard in `sprint-close.sh`) makes. (Mirrors and progress issues were removed by #340/#347.) | ||
| - Setup re-runs preserve user-authored configuration and task bytes; `config.yml` is neither read nor written by this skill. | ||
| - Active sprints partition by track scope (2026-07, epic #289): `component:` equality or explicit `scope:` globs decide overlap through the ONE `scopesOverlap()` in `scripts/lib.js` — never re-implement it. Disjoint tracks coexist as a portfolio; overlap fails loud; single-track behavior is the G4 text-byte-identity compatibility surface (anchored in the smoke test; never snapshot `--json`, which is schema-versioned instead). | ||
| - One declared task authority: `.dev-backlog/.tracker` is one line the session reads (absent = `github`; `backlog` for the Backlog.md CLI, `files` as its legacy spelling; `gitlab`), parsed by `readTaskAuthority` in `scripts/lib.js` and by a mirrored guard in `scripts/sprint-close.sh`. The rails are the SKILL.md Task Authority table; there is no adapter in code (charter rev 20 Non-Goal), so adding an authority is one table row plus one allow-list entry and needs a measured consumer (GitLab is the stated exception). Scripts never call `gh`/`backlog`/`glab` for task state; milestones, comments, PR links, and closing are calls the session makes. |
There was a problem hiding this comment.
Keep the scripted authority-call exceptions
This now tells every session that authority mutations are exclusively session calls, but sprint-close.sh --close-milestone invokes gh api, while triage-apply.js --apply invokes gh issue view/comment/close/edit; the authority contract explicitly preserves both scripted exceptions. A maintainer following this operational context could incorrectly duplicate or remove those guarded paths, so retain the prior exception or point readers to the authoritative exclusion list.
AGENTS.md reference: AGENTS.md:L39-L41
Useful? React with 👍 / 👎.
…mit rule, and sprint-init field truth Astra round 1: (1) milestone close and triage-apply are scripted authority calls kept by authority-contract.md; (2) sprint-init never emits objectives: and takes --component as a free string; (3) the sprint file must reach main, not just a branch, to be visible to delegate worktrees. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
|
Independent review round 1 (GPT-6 Astra via codex exec, with the pre-PR |
…ce cadence, setup re-run preservation Astra round 2: four still-true rules had been dropped or widened. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
|
Independent review round 2 (GPT-6 Astra): CHANGES REQUESTED — (1) Agent Brief precedence widened beyond GitHub and |
Astra round 3. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
|
Independent review round 3 (GPT-6 Astra): CHANGES REQUESTED — (1) script CLI contracts change only via an explicit issue; (2) triage fetches comments/closing PRs only when a judgment needs them. Both restored in the fourth commit; PR body count corrected to 55 → 31. |
|
Independent review round 4 (GPT-6 Astra): LGTM. |
…, five contradictions) Round-1 findings from the independent cumulative release review (GPT-6 Astra) over v0.15.0..release. Seven items: 1. Numbers. The CHANGELOG Headline and the PR body quoted the delta excluding the release commit. Re-measured `git diff --numstat v0.15.0..HEAD`: +298 / -3,659 over 69 files (was +166 / -3,210 over 59). Shipped scripts were not unchanged: 2,301 -> 2,298 lines, 11 files both. 2. Review history. "seven reviewed PRs" overstated it: #482 (docs prune) had no independent review before merge. Now stated as six reviewed to LGTM before merge (#481, #483-#487), with #482 covered by the cumulative release review of the v0.16.0 PR. 3. `spec/system-map.md` Complete flow said "close an admitted sprint only when its whole Plan is done", contradicting SKILL.md and capabilities: close when every Plan item is `[x]` or the rest are struck or carried with a Progress entry (`sprint-close.sh` only warns). 4. `README.md` in-flight example used `-> PR #87`, which is not the parser grammar and so reads as unmoored; now `-> PR #87 (reviewing)` with U+2192, matching `PR_RE` in `sprint-state.js`. `spec/capabilities.md` Hard Constraint now says convert to `[~]` moored by a PR or branch pointer plus a parking note, since a note alone leaves it unmoored. 5. `skills/dev-backlog/references/authority-contract.md` claimed `triage-apply --apply` is one call per accepted action and that re-running a failed command is safe except for a create. It is not: a close is comment-then-close and a priority change looks the labels up first, so a lost response can duplicate a comment. Reworded to no automatic retry, and verify the target's state before re-running any non-idempotent write (create, comment, close). 6. `spec/charter.md` Non-Goals said the GitLab row "costs one line of prose and no code", contradicting capabilities and `_context.md`; now "one table row and one allow-list entry, no adapter code". Prose only; Decision rows untouched. 7. `CLAUDE.md` said "scripts own everything checkable", contradicting the keep test; now names the four kept surfaces (sprint-file contract, fail-loud shared-state guards, the `sprint-state` JSON recovery rail, the `triage-apply` human gate) and says anything else is deleted, not rewritten. Verification: `node --test --test-concurrency=1 tests/*.test.js tests/*/*.test.js` 188 tests / 187 pass / 0 fail / 1 skipped, then `bash tests/smoke/smoke-test.sh` 167 tests / 167 passed / 0 failed; chained with `&&`, exit 0. No test asserted any of the replaced sentences, so no assertion needed updating. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
* chore(release): v0.16.0 The deprecation release: dev-backlog names no delegate, its docs and dogfood state describe only the current lightweight direction, and the spec says what the scripts do. - VERSION 0.15.0 -> 0.16.0 - CHANGELOG: the Unreleased items become [0.16.0] - 2026-09-20 with a Headline paragraph (measured deltas, conformance file, BREAKING, rollback point); the .dev-backlog leftover cleanup (#483) and the new conformance record get their own bullets; Unreleased is left empty - docs/conformance/2026-09-20-v0160.md + 2026-09-20-v0160/ (prompt and both model outputs); the wave-5 report and raw dir are deleted per the retention rule in docs/conformance/README.md Range v0.15.0..HEAD is PRs #481-#487: +166 / -3,210 lines over 59 files; SKILL.md 165 -> 164; sprint-state.js 697 -> 694; shipped scripts 11 files / 2,298 lines; smoke 170 -> 167 assertions. Conformance (deletion-and-wording wave, one after-run per model against the wave-5 record, current 13-scenario evals x current SKILL.md): Claude Fable 5.1 13/13 PASS, GPT-6 Astra 13/13 PASS with the same single Plan-fold MUT note as wave 5. Identical profile, no regression. BREAKING: the sprint-state JSON run_id field is deleted and the [run:id] Plan grammar is dropped; a legacy trailing [run:...] is stripped and ignored rather than parsed. Rollback point: tag v0.15.0. Verified: node --test 188 tests / 187 pass / 0 fail / 1 skipped (includes the doc-drift check); smoke 167/167. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ * chore(release): apply release review round 1 (numbers, review history, five contradictions) Round-1 findings from the independent cumulative release review (GPT-6 Astra) over v0.15.0..release. Seven items: 1. Numbers. The CHANGELOG Headline and the PR body quoted the delta excluding the release commit. Re-measured `git diff --numstat v0.15.0..HEAD`: +298 / -3,659 over 69 files (was +166 / -3,210 over 59). Shipped scripts were not unchanged: 2,301 -> 2,298 lines, 11 files both. 2. Review history. "seven reviewed PRs" overstated it: #482 (docs prune) had no independent review before merge. Now stated as six reviewed to LGTM before merge (#481, #483-#487), with #482 covered by the cumulative release review of the v0.16.0 PR. 3. `spec/system-map.md` Complete flow said "close an admitted sprint only when its whole Plan is done", contradicting SKILL.md and capabilities: close when every Plan item is `[x]` or the rest are struck or carried with a Progress entry (`sprint-close.sh` only warns). 4. `README.md` in-flight example used `-> PR #87`, which is not the parser grammar and so reads as unmoored; now `-> PR #87 (reviewing)` with U+2192, matching `PR_RE` in `sprint-state.js`. `spec/capabilities.md` Hard Constraint now says convert to `[~]` moored by a PR or branch pointer plus a parking note, since a note alone leaves it unmoored. 5. `skills/dev-backlog/references/authority-contract.md` claimed `triage-apply --apply` is one call per accepted action and that re-running a failed command is safe except for a create. It is not: a close is comment-then-close and a priority change looks the labels up first, so a lost response can duplicate a comment. Reworded to no automatic retry, and verify the target's state before re-running any non-idempotent write (create, comment, close). 6. `spec/charter.md` Non-Goals said the GitLab row "costs one line of prose and no code", contradicting capabilities and `_context.md`; now "one table row and one allow-list entry, no adapter code". Prose only; Decision rows untouched. 7. `CLAUDE.md` said "scripts own everything checkable", contradicting the keep test; now names the four kept surfaces (sprint-file contract, fail-loud shared-state guards, the `sprint-state` JSON recovery rail, the `triage-apply` human gate) and says anything else is deleted, not rewritten. Verification: `node --test --test-concurrency=1 tests/*.test.js tests/*/*.test.js` 188 tests / 187 pass / 0 fail / 1 skipped, then `bash tests/smoke/smoke-test.sh` 167 tests / 167 passed / 0 failed; chained with `&&`, exit 0. No test asserted any of the replaced sentences, so no assertion needed updating. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ * chore(release): before/after conformance pair, strict regrade, release-review record Astra release review round 1 items 3 and 4: add the v0.15.0-SKILL.md before-runs for both models, regrade scenarios 1 and 8 as PARTIAL under the Expected text, count Astra MUT 0, and record the review round. Also fix the ASCII arrow in the file-format in-flight example. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ * chore(release): re-measure the cumulative delta Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ * chore(release): thousands separator Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ * chore(release): release review round 2 — consistent strict grading, _context.md baseline 52 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ * chore(release): release review round 3 — Astra before scenario 7 regraded PARTIAL Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ * chore(release): release review round 4 LGTM — narrow the scenario-9 claim Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Summary
.dev-backlog/sprints/_context.mdis the first file every session reads, and several of its lines had gone false across 36 completed sprints. This rewrites it against today's contracts (skills/dev-backlog/SKILL.md,references/authority-contract.md, charter rev 20,spec/capabilities.md, CHANGELOG 0.12.0–Unreleased) so a fresh session reads only what is still true and still changes behaviour.55 → 31 lines (
wc -l, after three review rounds). The three headings (Architecture Decisions / Conventions / Known Gotchas) stay; one line per item, no dates that carry no meaning, no per-model reviewer attributions. Completed sprint files andspec/*are untouched.Dropped, and why
.trackeris parked … a leftover.trackeris ignored".trackeris the one-line declared task authority (absent =github;backlog/files;gitlab), read byreadTaskAuthorityinlib.jsand a mirrored bash guard insprint-close.sh.sprint-stateJSON is the fresh-session recovery rail;[~]is moored by→ PR #N (state)or[branch:name]only.docs/conformance/2026-09-17-tracker-wave.mdas the harness recipedocs/conformance/README.md; the only report isdocs/conformance/2026-09-18-wave5.md.tests/tools/drift-check warning is kept.lib.shDEFAULT_BACKLOG_DIRincident, setup/config.ymlpreservation, "prefer minimal-diff refactors", "script interfaces stay stable"config.ymlis gone from the tree and the last two are subsumed by the keep test.Merged rather than dropped: the keep test appeared twice; the several "Astra caught X" gotchas collapse into one cross-family-review convention plus the two-parsers-drift rule; the spec-fallback boundary (two lines → one), the optional
objectives:/component:rules (two → one), and the measurement-hygiene lessons (one stated glob,path.join, no quoted line counts) are one line each.Kept
Every behaviour-changing rule survives: the one
scopesOverlappredicate; commit the sprint file when opening it; JSON surfaces as the machine path (extend, don't add parsers); no unconditional cross-repo../spec-charter/read and the consumption-side-onlyreferences/spec-fallback.md; optionalobjectives:/component:; SKILL.md goal/rail/Done-when discipline and "re-add prose only after a conformance run shows a repeated mistake"; evals intests/evals/; the keep test's three criteria (delete, don't rewrite); the four surfaces scripts own; the fail-closed Work rail (gh issue view N --json body,comments, Agent Brief,spec_ref:); session-written GitHub-onlybacklog-triageand its protection rule; thegh issue createno---jsontrap; the fully offline smoke test; v1.0.0 is not a cleanup cut; capture$?beforegh pr merge; the in-flight pointer grammar; reject deleted flags explicitly; amend acceptance on the issue rather than trim to a number;path.joinin Windows-facing tests; one stated test glob; two parsers of one file drift → route through node; no line budgets for subagents; and every change landing via a PR with independent cross-family review until LGTM.Verification
main)main)node tests/tools/doc-drift-check.js→OK: no dangling script mentions(7 docs against 14 scripts)CHANGELOG gains one line at the top of
## [Unreleased]→### Changed.🤖 Generated with Claude Code
https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
Independent review