Skip to content

chore(release): v0.16.0 — the deprecation release - #488

Merged
sungjunlee merged 8 commits into
mainfrom
release/v0.16.0
Sep 20, 2026
Merged

sungjunlee merged 8 commits into
mainfrom
release/v0.16.0

Conversation

@sungjunlee

@sungjunlee sungjunlee commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

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

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.js 697 → 694; shipped scripts 2,301 → 2,298 lines (11 files both); smoke test 170 → 167 assertions (three run_id probes 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 per docs/conformance/README.md both models ran the current 13-scenario tests/evals/dev-backlog.md against 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.

Channel × variant PASS PARTIAL FAIL ASK MUT
fable × before 10/13 3 (1, 7, 8) 0 0 0
astra × before 10/13 3 (1, 7, 8) 0 0 0
fable × after 10/13 3 (1, 7, 8) 0 0 0
astra × after 11/13 2 (1, 8) 0 0 0

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 in docs/conformance/2026-09-20-v0160/.

BREAKING

The sprint-state JSON run_id field 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 of run_id is 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 0
  • bash tests/smoke/smoke-test.sh — 167 tests: 167 passed, 0 failed, exit 0
  • Chained with &&: exit 0

Review 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.md baseline 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.

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
@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: 212083ae-7e0a-4b3b-be57-15b8f29dc4e4


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-20T05:05:33.162149Z cafb05d New commits
ℹ️ 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.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread docs/conformance/2026-09-20-v0160.md Outdated
Comment on lines +22 to +23
| 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") |

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 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 👍 / 👎.

sungjunlee and others added 4 commits September 20, 2026 13:48
…, 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
@sungjunlee

Copy link
Copy Markdown
Owner Author

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
@sungjunlee

Copy link
Copy Markdown
Owner Author

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, _context.md baseline corrected to 52 → 31 since v0.15.0 (55 → 31 within #487). Applied.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread docs/conformance/2026-09-20-v0160.md Outdated
| --- | ---: | ---: | ---: | ---: | ---: | --- |
| 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 |

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 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
@sungjunlee

Copy link
Copy Markdown
Owner Author

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.

@sungjunlee

Copy link
Copy Markdown
Owner Author

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).

@sungjunlee
sungjunlee merged commit c2c9a6b into main Sep 20, 2026
3 checks passed
@sungjunlee
sungjunlee deleted the release/v0.16.0 branch September 20, 2026 05:03

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment on lines +22 to +25
| 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 |

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 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 |

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 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 👍 / 👎.

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