Repository navigation
chore(release): v0.16.0 — the deprecation release - #488
Conversation
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
|
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5a6d4be7b8
ℹ️ 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".
| | fable × after | 13/13 | 0 | 0 | 0 | 0 | 9 already applies the #486 close condition (strike or carry with a Progress entry before `sprint-close.sh`); 12 and 13 read `.tracker` first and never infer the authority from an installed CLI; 8 is fail-closed | | ||
| | astra × after | 13/13 | 0 | 0 | 0 | 1 | 8 correctly scopes the GitHub-outage stop to the GitHub authority; 9 resolves remaining Plan items by completion, striking, or carrying; 13 stops without switching; MUT: the same Plan fold in 2 as in wave 5 ("update the existing Plan only when authorized") | |
There was a problem hiding this comment.
Correct the two scenario 8 PASS scores
Scenario 8 explicitly requires recovery via both status.sh --json and next.sh --json, including every in-flight owner/pointer. The Astra output invokes neither rail, while the Fable output only says status.sh is “fine” and never invokes next.sh or recovers the pointers, so both responses are incomplete against tests/evals/dev-backlog.md:10. Recording both as PASS makes the release's 13/13 and no-regression claims inaccurate; downgrade them or rerun the scenario with compliant outputs.
AGENTS.md reference: AGENTS.md:L44-L46
Useful? React with 👍 / 👎.
…, 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
…e-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
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> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
|
Independent release review round 1 (GPT-6 Astra, cumulative v0.15.0..release): CHANGES REQUESTED, nine items. Applied in three commits: numbers re-measured (+452 / −3,498 over 71 files; scripts 2,301 → 2,298), review history corrected (#482 had no pre-merge review), before-runs added for both models with a strict regrade (1 and 8 PARTIAL before and after, MUT 0), system-map / README / capabilities / authority-contract / charter / CLAUDE.md contradictions fixed, file-format arrow fixed. |
…context.md baseline 52 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
|
Independent release review round 2 (GPT-6 Astra): CHANGES REQUESTED, three items — Fable scenarios 7 and 8 regraded PARTIAL for consistency (fable 10/13 before and after; astra 11/13 before and after; MUT 0 everywhere), PR body conformance section replaced with the final table, |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cb47388f52
ℹ️ 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".
| | --- | ---: | ---: | ---: | ---: | ---: | --- | | ||
| | fable × before | 11/13 | 2 | 0 | 0 | 0 | 1: reads both context files and returns the next batch but does not name the latest Progress entry; 8: recovers from `_context.md` and the sprint file without naming `status.sh --json` / `next.sh --json`; 9: "stop if any Plan item is not `[x]` — the sprint stays open" (the v0.15.0 rail) | | ||
| | astra × before | 11/13 | 2 | 0 | 0 | 0 | 1 and 8 as above (8 also notes a Backlog.md authority still works without GitHub); 9: stop closure if any task is unverified | | ||
| | fable × after | 12/13 | 1 | 0 | 0 | 0 | 1 as above; 8 recovers through `status.sh` and is fail-closed; 9 applies the #486 close condition (strike or carry with a Progress entry before `sprint-close.sh`); 12 and 13 read `.tracker` first and never infer the authority from an installed CLI | |
There was a problem hiding this comment.
Downgrade the Fable scenario 7 results
Under the report's stated strict rubric, scenario 7 is PARTIAL in both Fable runs: fable-v0160before.md:31-34 and fable-v0160.md:13 invoke plain status.sh / next.sh, while tests/evals/dev-backlog.md:9 explicitly requires recovery through both commands' --json surfaces. The rows currently count only scenarios 1 and 8 as partial before and only scenario 1 after, so both Fable PASS totals remain overstated.
Useful? React with 👍 / 👎.
…aded PARTIAL Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
|
Independent release review round 3 (GPT-6 Astra): CHANGES REQUESTED, one item — Astra before scenario 7 had been graded PASS on a preamble that exists only in the after-run; regraded PARTIAL (astra × before 10/13). Applied. |
…laim Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
|
Independent release review round 4 (GPT-6 Astra): LGTM. Two non-blocking notes applied (scenario-9 wording narrowed; repeated PARTIALs recorded as the open follow-up). |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cafb05dc6e
ℹ️ 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".
| | fable × before | 10/13 | 3 | 0 | 0 | 0 | 1: reads both context files and returns the next batch but does not name the latest Progress entry; 7: names `status.sh`/`next.sh` without `--json` and does not state the Agent Brief / `spec_ref:` precedence; 8: recovers from `_context.md` and the sprint file without the JSON rails or the `[~]` pointers; 9: "stop if any Plan item is not `[x]` — the sprint stays open" (the v0.15.0 rail) | | ||
| | astra × before | 10/13 | 3 | 0 | 0 | 0 | 1 as above; 7: JSON rails named but the Agent Brief / `spec_ref:` precedence is not stated (the after-run states it in its preamble); 8: reports locally recorded state without the JSON rails or the `[~]` pointers (also notes a Backlog.md authority still works without GitHub); 9: stop closure if any task is unverified | | ||
| | fable × after | 10/13 | 3 | 0 | 0 | 0 | 1, 7, 8 as in its before-run (8 adds "`status.sh` is fine — local" but names neither `--json` nor the `[~]` pointers); 9 applies the #486 close condition (strike or carry with a Progress entry before `sprint-close.sh`); 12 and 13 read `.tracker` first and never infer the authority from an installed CLI | | ||
| | astra × after | 11/13 | 2 | 0 | 0 | 0 | 1 and 8 as in its before-run; 7 now states the precedence in its preamble (PARTIAL → PASS); 8 correctly scopes the GitHub-outage stop to the GitHub authority; 9 resolves remaining Plan items by completion, striking, or carrying; 13 stops without switching | |
There was a problem hiding this comment.
Downgrade the scenario 12 results
Under the report's strict rubric, scenario 12 is PARTIAL in every run: tests/evals/dev-backlog.md:16 explicitly requires stating that the sprint Plan reference remains #7, but each raw answer only mentions updating Plan/Progress when admitted and never preserves or names that reference. The four PASS totals therefore remain overstated and should be regraded.
Useful? React with 👍 / 👎.
| | fable × before | 10/13 | 3 | 0 | 0 | 0 | 1: reads both context files and returns the next batch but does not name the latest Progress entry; 7: names `status.sh`/`next.sh` without `--json` and does not state the Agent Brief / `spec_ref:` precedence; 8: recovers from `_context.md` and the sprint file without the JSON rails or the `[~]` pointers; 9: "stop if any Plan item is not `[x]` — the sprint stays open" (the v0.15.0 rail) | | ||
| | astra × before | 10/13 | 3 | 0 | 0 | 0 | 1 as above; 7: JSON rails named but the Agent Brief / `spec_ref:` precedence is not stated (the after-run states it in its preamble); 8: reports locally recorded state without the JSON rails or the `[~]` pointers (also notes a Backlog.md authority still works without GitHub); 9: stop closure if any task is unverified | | ||
| | fable × after | 10/13 | 3 | 0 | 0 | 0 | 1, 7, 8 as in its before-run (8 adds "`status.sh` is fine — local" but names neither `--json` nor the `[~]` pointers); 9 applies the #486 close condition (strike or carry with a Progress entry before `sprint-close.sh`); 12 and 13 read `.tracker` first and never infer the authority from an installed CLI | | ||
| | astra × after | 11/13 | 2 | 0 | 0 | 0 | 1 and 8 as in its before-run; 7 now states the precedence in its preamble (PARTIAL → PASS); 8 correctly scopes the GitHub-outage stop to the GitHub authority; 9 resolves remaining Plan items by completion, striking, or carrying; 13 stops without switching | |
There was a problem hiding this comment.
Keep Astra's after-run scenario 7 as partial
The Astra after-run preamble only says to “honor” spec_ref: and the newest Agent Brief; it never states that the Agent Brief overrides the body or that spec_ref: overrides both, and scenario 7 itself supplies no ordering either. Because tests/evals/dev-backlog.md:9 requires the same precedence and this report grades every unstated Expected clause as PARTIAL, the claimed PARTIAL → PASS and 11/13 score are unsupported.
Useful? React with 👍 / 👎.
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.
No epic — seven PRs (#481–#487) that subtract: six reviewed to LGTM before merge (#481, #483–#487), and #482 (the docs prune) merged without an independent review, covered instead by the cumulative release review of this PR. Cumulative range
v0.15.0..HEAD.What's in
[run:id]Plan pointer and thesprint-stateJSONrun_idfield are deleted; a legacy trailing[run:…]is stripped and ignored (the PR pointer and title survive); an in-flight[~]is moored by→ PR #N (state)or[branch:name]; the JSON is documented as the fresh-session recovery rail rather than a dev-relay contract.related-skillsdrops the deprecated relay skills (dev-backlog:backlog-triage, spec-charter, spec-grill; backlog-triage:dev-backlog, spec-charter); SKILL.md says "a delegate".sprint-close.sh, and the SKILL.md Complete rail states the same close condition — every Plan item[x], or the rest struck or carried with a Progress entry. No script change.docs/keeps the current conformance run alone (the fail-loud rules moved intoreferences/authority-contract.md);.dev-backlog/sheds the old triage reports and cache, an unreadconfig.yml, and a redundant.tracker=github;_context.mdis compacted 52 → 31 lines since v0.15.0 (55 → 31 within chore: compact _context.md to the current state #487); the post-v0.15.0 spec/README/CLAUDE.md sync landed in docs: sync spec, README, CLAUDE.md, references after v0.15.0 #481.VERSION0.15.0 → 0.16.0; the Unreleased items become## [0.16.0] — 2026-09-20with a Headline paragraph;docs/conformance/2026-09-20-v0160.md+2026-09-20-v0160/(prompt and both model outputs) land and the wave-5 report and raw dir are deleted per the retention rule indocs/conformance/README.md.Measured since v0.15.0: +452 / −3,498 lines over 71 files (release branch, before/after raw files included); SKILL.md 165 → 164 lines;
sprint-state.js697 → 694; shipped scripts 2,301 → 2,298 lines (11 files both); smoke test 170 → 167 assertions (threerun_idprobes deleted). No new reference file, no new script.Conformance
Before/after pair (
docs/conformance/2026-09-20-v0160.md): #486 changed the Complete rail, so perdocs/conformance/README.mdboth models ran the current 13-scenariotests/evals/dev-backlog.mdagainst the v0.15.0 SKILL.md (before) and the release SKILL.md (after). Graded strictly: an Expected clause the answer does not state is a PARTIAL.The rail change shows only in scenario 9 ("the sprint stays open" → "strike or carry, then close") on both models. Every after-run PARTIAL is also PARTIAL in the same model's before-run (latest Progress not named in 1; JSON rails /
[~]pointers not named in 8; precedence not stated in Fable's 7), and Astra's 7 goes PARTIAL → PASS, so none is a regression of this wave; they are repeated PARTIALs and an open follow-up. Raw indocs/conformance/2026-09-20-v0160/.BREAKING
The
sprint-stateJSONrun_idfield is deleted and the[run:id]Plan grammar is dropped. A legacy trailing[run:…]is now stripped and ignored rather than parsed, so a Plan item moored only by a run pointer reads as unmoored; mooring is→ PR #N (state)or[branch:name]. No external reader ofrun_idis known.Rollback
Tag
v0.15.0.Verification
node --test --test-concurrency=1 tests/*.test.js tests/*/*.test.js— 188 tests, 187 pass, 0 fail, 1 skipped (the doc-drift check runs inside this suite), exit 0bash tests/smoke/smoke-test.sh— 167 tests: 167 passed, 0 failed, exit 0&&: exit 0Review note: this is the release PR; its cumulative cross-family review verdict will be appended to the Reviews section of
docs/conformance/2026-09-20-v0160.md. Do not merge or tag from here.🤖 Generated with Claude Code
https://claude.ai/code/session_01X9gZYk7FcYSLAZBBe7JXvZ
Independent release review
Round 1 (GPT-6 Astra, cumulative
v0.15.0..release): CHANGES REQUESTED, nine items (numbers, review history, before-runs + strict regrade, system-map close condition, README/capabilities[~]grammar, triage-apply re-run wording, charter GitLab cost, CLAUDE.md scripts claim). All applied.Round 2 (GPT-6 Astra): CHANGES REQUESTED, three items (Fable 7/8 regraded PARTIAL for consistency; this body's stale after-only table replaced;
_context.mdbaseline 52 not 55). All applied.Round 3 (GPT-6 Astra): CHANGES REQUESTED, one item (Astra before scenario 7 regraded PARTIAL; 10/13). Applied.
Round 4 (GPT-6 Astra): LGTM. Non-blocking: repeated PARTIALs remain an open follow-up; "no other scenario changing" narrowed to the scenario-9 confirmation. Applied.