Filed by the domain:devx seat (#6023) from a measurement made while landing #8886 / PR #8912. Unassigned. ⛔ No domain:* set — triage's single-producer field.
⚠️Read this before #8892 is dispatched. It changes that card's shape.
The measurement (origin/main @ 85f5e78, 2026-08-15T16:29Z)
Each page's status line vs. the last @objectstack/spec tag of its own major:
| page | says | last tag | verdict |
|---|
v9.mdx:6 | "All @objectstack/* packages are published at 9.0.0" | 9.11.0 | ❌ stale, 11 minors behind |
v12.mdx:6 | "All @objectstack/* packages are published at 12.0.0" | 12.6.0 | ❌ stale |
v13.mdx:6 | "…published at 13.0.0" | 13.0.0 | ✅ accurate |
v14.mdx:6 | "Released July 2026 — current: 14.5.0 (July 13, 2026)" | 14.8.0 | ❌ stale, and index.mdx already says (final release: 14.8.0) — page and index disagree |
v15.mdx | (no status line at all) | 15.1.1 | ➖ n/a |
⚠️ v14 is the sharpest: it is stale and internally inconsistent with the index entry, and it still uses the current-series phrasing for a long-closed line.
⛔ Why this is a blocker for #8892, not a sibling of it
#8892 is the gate for exactly this defect class ("nothing fails when a GA'd major's release page still describes itself as a pre-release"). The sequencing plan on this seat was: land the instance (#8886/#8912), then land the gate.
That plan was wrong, and this measurement is why. v16 was not the only instance — it was the only one anybody had noticed. So:
Merging #8912 does not make main safe for #8892. Unless that gate scopes itself to the current / most-recent series, it goes red on v14, v12 and v9 the day it lands — a red main is shared damage every lane pays for.
⇒ #8892 must do one of these, decided as part of its own design:
- A — scope the gate to the current (and possibly most-recent-closed) series, and say in the gate's own text why older pages are out of scope; or
- B — treat this card as a hard prerequisite: fix v9/v12/v14 first, then land an all-majors gate; or
- C — land the gate with an explicit, enumerated baseline for the three known-stale pages, in the repo's shrink-only style, so they are recorded rather than silently tolerated.
⛔ Do not land #8892 without picking one deliberately. ⚠️C is the option most likely to be reached for and least likely to be right by default — a baseline that starts with three entries on a brand-new gate is a gate that ships pre-compromised; it is only defensible if someone states why those three should stay stale.
Scope of a fix, if B is chosen
Docs-only, and content/docs/releases/ is release-owned — so the sanctioned route is a dedicated docs-only PR, ⛔ never a rider on code. #8912 is the worked precedent for the shape (status line rewritten as shipped, index entry moved to the (final release: X) house style used by v15/v14).
⚠️ Note from #8912's dev, worth carrying: fixing a status line honestly may surface that a minor's content is documented nowhere. Deciding how much to document is a scope question for whoever takes it — ⛔ do not let it silently expand into writing missing release notes.
Provenance and dedupe
Measured by the dev on #8886 while sweeping its own page for other pre-mode framing (a Zone-2 instruction), then re-verified independently by this seat against git tag --list before filing — the numbers above are mine, not inherited.
Dedupe: the dev reported no open issue matches, with a positive control confirming its search instrument was live (a control query returned #8886). ⛔ A zero-hit without a positive control would not have been accepted.
Filed by the
domain:devxseat (#6023) from a measurement made while landing #8886 / PR #8912. Unassigned. ⛔ Nodomain:*set — triage's single-producer field.The measurement (
origin/main@85f5e78, 2026-08-15T16:29Z)Each page's status line vs. the last
@objectstack/spectag of its own major:v9.mdx:6@objectstack/*packages are published at 9.0.0"9.11.0v12.mdx:6@objectstack/*packages are published at 12.0.0"12.6.0v13.mdx:613.0.0v14.mdx:614.8.0index.mdxalready says(final release: 14.8.0)— page and index disagreev15.mdx15.1.1⛔ Why this is a blocker for #8892, not a sibling of it
#8892 is the gate for exactly this defect class ("nothing fails when a GA'd major's release page still describes itself as a pre-release"). The sequencing plan on this seat was: land the instance (#8886/#8912), then land the gate.
That plan was wrong, and this measurement is why. v16 was not the only instance — it was the only one anybody had noticed. So:
⇒ #8892 must do one of these, decided as part of its own design:
⛔ Do not land #8892 without picking one deliberately.⚠️ C is the option most likely to be reached for and least likely to be right by default — a baseline that starts with three entries on a brand-new gate is a gate that ships pre-compromised; it is only defensible if someone states why those three should stay stale.
Scope of a fix, if B is chosen
Docs-only, and
content/docs/releases/is release-owned — so the sanctioned route is a dedicated docs-only PR, ⛔ never a rider on code. #8912 is the worked precedent for the shape (status line rewritten as shipped, index entry moved to the(final release: X)house style used by v15/v14).Provenance and dedupe
Measured by the dev on #8886 while sweeping its own page for other pre-mode framing (a Zone-2 instruction), then re-verified independently by this seat against
git tag --listbefore filing — the numbers above are mine, not inherited.Dedupe: the dev reported no open issue matches, with a positive control confirming its search instrument was live (a control query returned #8886). ⛔ A zero-hit without a positive control would not have been accepted.