Found while writing the 17.2.0 / 17.3.0 release-note sections for #15322. Left out of that PR because its dispatch scopes the diff to two files; filed here rather than fixed as a rider.
The finding
content/docs/releases/index.mdx:21 ends its v17 entry with:
... (current series: 17.2.0, released 2026-08-23).
17.3.0 was published to latest on 2026-09-04 (version commit 8a1bad8b8, 69 packages). A reader arriving at the release index is told the current series is one release behind.
It is already gated, and the gate is already red
node scripts/check-release-section-coverage.mjs --strict names it:
- content/docs/releases/index.mdx: the v17 entry's status reads "current series: 17.2.0,
released 2026-08-23", but the newest released 17.x version is 17.3.0. The sibling gate
only rejects a PRE-RELEASE here, so a superseded STABLE version passes it ...
Name the newest release.
Measured on objectstack-ai/objectstack at eb40a7210: the strict sweep reports 2 findings there — this one and the missing v17.3 section on v17.mdx. On the #15322 branch (c13400b5f) it reports 1: the v17.mdx half is closed, this half is not.
⚠️ The PR-blocking form does not see it. lint.yml runs the gate WITHOUT --strict (.github/workflows/lint.yml:2728-2729) and it exits 0; only release-coverage-patrol.yml:203 runs --strict. So this reaches main green on every PR and is caught only by the standing patrol.
Why this is worth a card rather than a one-line fix
This is the third instance of one defect class, and the previous two were also caught after the fact rather than at release time:
Three occurrences on three consecutive minors is a producer problem, not three authoring slips. The sentence is derived data — the newest released 17.x is already readable from packages/*/CHANGELOG.md, which is exactly where the gate reads it from to produce the finding. Two directions worth weighing when this is triaged:
- Stamp it at version time, the way
check:docs-image-tag is already kept true by scripts/ at version time (e569cac32 did this for the docs image tag), so the sentence cannot go stale.
- Promote the
--strict arm into lint.yml, so a superseded stable version blocks a PR rather than waiting for the patrol. Note this direction has a cost the ruling should see: --strict also fails on a release page that has no section for a just-published train, which would red every PR in the window between a version commit and its release-notes PR.
⛔ Not proposing either here — this card records the recurrence and the measurement; the choice is a maintainer call.
Repro
node scripts/check-release-section-coverage.mjs --strict; echo "EXIT=$?"
Generated by Claude Code
Found while writing the 17.2.0 / 17.3.0 release-note sections for #15322. Left out of that PR because its dispatch scopes the diff to two files; filed here rather than fixed as a rider.
The finding
content/docs/releases/index.mdx:21ends its v17 entry with:17.3.0 was published to
lateston 2026-09-04 (version commit8a1bad8b8, 69 packages). A reader arriving at the release index is told the current series is one release behind.It is already gated, and the gate is already red
node scripts/check-release-section-coverage.mjs --strictnames it:Measured on
objectstack-ai/objectstackateb40a7210: the strict sweep reports 2 findings there — this one and the missing v17.3 section onv17.mdx. On the #15322 branch (c13400b5f) it reports 1: thev17.mdxhalf is closed, this half is not.lint.ymlruns the gate WITHOUT--strict(.github/workflows/lint.yml:2728-2729) and it exits 0; onlyrelease-coverage-patrol.yml:203runs--strict. So this reachesmaingreen on every PR and is caught only by the standing patrol.Why this is worth a card rather than a one-line fix
This is the third instance of one defect class, and the previous two were also caught after the fact rather than at release time:
Three occurrences on three consecutive minors is a producer problem, not three authoring slips. The sentence is derived data — the newest released
17.xis already readable frompackages/*/CHANGELOG.md, which is exactly where the gate reads it from to produce the finding. Two directions worth weighing when this is triaged:check:docs-image-tagis already kept true byscripts/at version time (e569cac32did this for the docs image tag), so the sentence cannot go stale.--strictarm intolint.yml, so a superseded stable version blocks a PR rather than waiting for the patrol. Note this direction has a cost the ruling should see:--strictalso fails on a release page that has no section for a just-published train, which would red every PR in the window between a version commit and its release-notes PR.⛔ Not proposing either here — this card records the recurrence and the measurement; the choice is a maintainer call.
Repro
Generated by Claude Code