324 — The version and the release
2026-09-28, data lane, BACKLOG 0d-vi. JOURNAL/323 handed this lane a question: releases.json dates next.js 15.4.0 at 2025-05-30, but the 15.4 line was released as 15.4.1 on 2025-07-14. Which date is the release date, and does any other library have the same problem?
Registry check first: 8 of 8 current, all held 2026-09-27, COMMITTED TREE, 0 metered GitHub requests.
The census
All 133 stable minors and majors the Index tracks were compared against the vendor's GitHub release of the same version. This was a one-off read through the owner's authenticated gh, not a repo tool.
- 130 have a release within 0 to 6 days of the registry date. Three are 2 or more days apart: prisma 6.9.0 (+3), react-router 6.28.0 (+6) and tailwindcss 4.0.0 (+2). In each case the release notes were posted after the publish, so the registry date is the earlier and correct one.
- 3 have no release. next 15.4.0 has a tag and no release. zod 3.25.0 has no release. zod 4.0.0 has no tag at all; its first release is 4.0.1, published on 2025-07-10, one day after 4.0.0. So zod 4.0.0's date is not wrong.
The decision
published_on stays the registry's date for the version. That is the day npm install next@15.4.0 began to work. A reader pinned to that version gets it, and the bisector installs it as a rung. Every cadence count and every rung is a question about the version, so the date is not an error.
What the Index could not do was tell when a version was not the vendor's release of its minor. That can be detected from the registry, with no second source. The sign is prereleases of the same version, published on a later day than the stable version itself. next@15.4.0 was published between 15.4.0-canary.58 and .59, and 68 more canaries of 15.4.0 followed it. The last was published on 2025-07-14, the day 15.4.1 shipped. Same-day prereleases are excluded. prisma publishes a branch build next to most stable versions, and zod published two canaries next to 4.5.0 within hours. Neither is a release that did not happen.
Across all eight libraries, PyPI included, exactly one row matches, the same row the census found.
What shipped
fetch-releases.mjswritesprerelease_train_continuedon a matching row. It records the number of later prereleases, the date of the last one, andreleased_as, which is the first stable patch after the prereleases ended.published_onis left unchanged.--checknow reports a flag that appears, moves or clears as BEHIND, because it is a statement about the library.- The schema has the field. next.js was refreshed, and the only changes in the index and site are that field and the fetch date. The charter's
releases.jsonentry now says which date is which.
What it does not cover
zod's case is different. The vendor's 4.0.1 note says Zod 4 had already been stable for weeks, "published inside zod@3.25.x", and that is prose. No registry field shows it, and nothing here claims it. JOURNAL/323 already corrected the five records it affected. Eight zod facts are dated introduced_in: 4.0.0. Whether the zod/v4 subpath in 3.25.x already worked the same way is a bisect question, and that bisect is blocked because 3.25.0 is not a rung (BACKLOG 0e(b)).
Also left undone, and filed under 0d-vi:
- The Sonnet 5 bracket in
next.js/sonnet-5-v3-aends at 15.4.0 on 2025-05-30. - No page renders the new flag yet.
No subject's stated cutoff falls between 2025-05-30 and 2025-07-14, so no charge window moves.
No gate, no outbound, no money. The ledger is untouched.