docs: 6.0.0's section carries its migration, not commit subjects - #268
Conversation
…ings are gone
`scripts/release.ts` generates a `## <version>` section from commit subjects and
APPENDS it, leaving the hand-written `## [Unreleased]` untouched above. So the
tagged tree read:
## [Unreleased] the 7 BREAKING entries and every migration
## 6.0.0 commit subjects, including #238/#237/#234 from 5.0.1
while `wiki/Upgrading.md` told the reader to read the `6.0.0` section. For a major
whose whole value is its upgrade guide, that is the failure the guide exists to
prevent.
It had happened twice before and nobody noticed: `CHANGELOG.md` carried two
`## 5.0.1` headings and two `## 5.0.0` headings, an auto-generated commit dump
above each hand-written section. Both removed.
The generated section also reached past the previous tag, which is why three
commits that shipped in 5.0.1 appeared under 6.0.0.
Why it stayed invisible is the part worth keeping: the count in
`wiki/Upgrading.md` IS derived from `CHANGELOG.md`, and a migration filed under
the wrong heading is invisible to a derived count — it only makes the number
smaller. A derived number protects against a stale claim, never a misplaced one.
Corrected by hand; #267 tracks promoting instead of appending, and the gate rules
that would have caught all three.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KgsU1WBJMAjnLaazvfuJmD
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 24 minutes Limit details: You’ve used the included review currently available. Your 77 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. You’re in a promotional period — use the checkbox below to run this review for free:
On-demand reviews are free for the next 31 days. After that, they cost $0.25 per reviewed file. How can I continue?Run this review now using the option above, or comment You can also wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
Comment |
Caught after
v6.0.0was tagged and before the publish was approved. The release run is cancelled;npm view @ultimat3/core versionstill reads5.0.1, so nothing shipped.What was wrong
scripts/release.tsgenerates a## <version>section from commit subjects and appends it, leaving the hand-written## [Unreleased]untouched above it:wiki/Upgrading.mdsays "read the6.0.0section, in order". That section did not contain the migration.It had happened twice already
CHANGELOG.mdcarried two## 5.0.1headings and two## 5.0.0headings — an auto-generated commit dump above each hand-written section, from the previous two release runs. Nobody noticed. Both removed.The generated section also reads past the previous tag, which is how three commits that shipped in 5.0.1 ended up under 6.0.0.
Why nothing caught it
This is the part worth keeping. The breaking-entry count in
wiki/Upgrading.mdis derived fromCHANGELOG.md— exactly the anti-rot rule this repo applies everywhere. But a migration filed under the wrong heading is invisible to a derived count: it just makes the number smaller.A derived number protects against a stale claim. It does not protect against a misplaced one.
What actually caught it was the pre-approval checklist in
PUBLISHING.md— item 5, "a major carries its upgrade section, and it no longer saysunreleased". It flagged one stale word; pulling on it exposed all three problems.After this
v6.0.0will be deleted and re-cut on the merge commit — safe precisely because the publish never happened. Had it, the tag would be immutable and this would ship as 6.0.1 with a wrong 6.0.0 permanently on npm.#267 tracks the fix: promote
[Unreleased]instead of appending, and add the gate rules that would have caught all three (no duplicate headings; no empty release section; noBREAKING —under[Unreleased]at a tagged commit; per-major counts derived per section rather than per file).Gate:
bun run verify— 14 of 19 passed, 5 skipped, 0 failed.🤖 Generated with Claude Code
https://claude.ai/code/session_01KgsU1WBJMAjnLaazvfuJmD
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.