Skip to content

docs: 6.0.0's section carries its migration, not commit subjects - #268

Merged
sebyx07 merged 1 commit into
mainfrom
fix/changelog-6.0.0
Aug 20, 2026
Merged

docs: 6.0.0's section carries its migration, not commit subjects#268
sebyx07 merged 1 commit into
mainfrom
fix/changelog-6.0.0

Conversation

@sebyx07

@sebyx07 sebyx07 commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Caught after v6.0.0 was tagged and before the publish was approved. The release run is cancelled; npm view @ultimat3/core version still reads 5.0.1, so nothing shipped.

What was wrong

scripts/release.ts generates a ## <version> section from commit subjects and appends it, leaving the hand-written ## [Unreleased] untouched above it:

## [Unreleased]     <- the 7 BREAKING entries and every migration
## 6.0.0            <- commit subjects, including #238/#237/#234 from 5.0.1

wiki/Upgrading.md says "read the 6.0.0 section, in order". That section did not contain the migration.

It had happened twice already

CHANGELOG.md carried two ## 5.0.1 headings and two ## 5.0.0 headings — 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.md is derived from CHANGELOG.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 says unreleased". It flagged one stale word; pulling on it exposed all three problems.

After this

## [Unreleased]        (empty)
## 6.0.0               7 BREAKING entries + migrations
## 5.0.1 - 2026-08-20
## 5.0.0 - 2026-08-20

v6.0.0 will 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; no BREAKING — under [Unreleased] at a tagged commit; per-major counts derived per section rather than per file).

Gate: bun run verify14 of 19 passed, 5 skipped, 0 failed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KgsU1WBJMAjnLaazvfuJmD


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

…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
@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your current included review allowance is based on your included PR review attempts over the past 7 days.

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:

  • Run 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 @coderabbitai review --use-credits.

You can also wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

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 configuration

Configuration used: Path: .coderabbit.yml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2fdea3cf-5efa-447d-9541-a85f6c5dc333

📥 Commits

Reviewing files that changed from the base of the PR and between 8fe7c56 and e29f3ea.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • wiki/Upgrading.md

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

@sebyx07
sebyx07 merged commit 93443ae into main Aug 20, 2026
37 checks passed
@sebyx07
sebyx07 deleted the fix/changelog-6.0.0 branch August 20, 2026 23:16
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