You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 9d47323
Browse filesBrowse the repository at this point in the historyBrowse files
fix(metadata): five retirements named a release that was never cut
The `@emit*` family retired in 0.25.0, but every entry — and the migration
guide's own header — said `0.24.6`. That version does not exist: the line went
0.24.5 → 0.25.0 when the breaking batch made it a MINOR, and the `since`
strings were authored while 0.24.6 was still the expected next number.
It is user-facing. `formatRetirementNote` renders "retired in 0.24.6 — …" into
the load error an adopter gets for `@emitRoutes`, and sends them to a CHANGELOG
entry that isn't there — the exact failure #337 built this map to prevent, since
an adopter who cannot find the decision reads the error as a registration bug.
Nothing caught it because the gate that exists checks the version's SHAPE:
expect(e.since).toMatch(/^\d+\.\d+\.\d+$/)
and `0.24.6` matches that perfectly. So the new check asks whether the release
happened, against the CHANGELOG headings — the same way the adjacent test
already resolves each `migration` path against the file that must exist.
It deliberately does NOT require every `since` to be a shipped release. A
retirement is authored before the release carrying it, under `[Unreleased]`,
where the number is a forecast; failing that would make the gate red for the
whole development window. The rule is narrower: a `since` BELOW the version we
currently ship must have shipped. That is false exactly when a forecast is
superseded, and it fires at the release bump — the moment the guess becomes
wrong. Verified green → red → green by restamping one entry 0.24.6.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3v6M6uqECZ2Sb5eUv6YY
0 commit comments