Skip to content

docs(releases): record the 17.0.0 GA cut on the v17 release page - #8888

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-8882-v17-ga-release-page
Aug 15, 2026
Merged

docs(releases): record the 17.0.0 GA cut on the v17 release page#8888
os-zhuang merged 1 commit into
mainfrom
claude/issue-8882-v17-ga-release-page

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Fixes#8882

content/docs/releases/v17.mdx was compiled for the 17.0.0 cut (#8642) and never updated after it, so the published page told a third-party developer that v17 had not shipped. GA published to latest on 2026-08-14T08:00-08:02Z with prerelease: false, and .changeset/pre.json is gone from main — both re-verified here, not assumed.

Docs-only, skip-changeset. Scope held to the two sanctioned files.

Five stale surfaces, not three

The issue listed three. A sweep for tense the GA cut falsified ("will", "is preparing to", "still open", "pending", "until the cut", "rolls into", plus a second pass over every rc. / pre-mode / dist-tag mention) found two more.

#SurfaceWasNow
1v17.mdx release-status blockquote"development is complete and the train is preparing to ship"reads as released
2v17.mdxLanded since 17.0.0-rc.6 opener"This window is open" / "374 pending"closed against what GA released
3index.mdx v17 entry(current series: 17.0.0-rc.N, pre-release)(current series: 17.0.0, released 2026-08-14)
4v17.mdx rc.6 window, New in Console"Three pin moves in this window, not yet released""released as @objectstack/console 17.0.0"
5v17.mdx rc.0 window, Console pin chain"0cf8f0f70d10 under rc.5, which is still open""under rc.5 (rc.6)"

Surface 5 is inside a section the dispatch froze (Landed since rc.0rc.5 stay as-is). Flagging it rather than burying it: the clause is not a record of what a cut released — it is a forward-looking pointer at a different window, and this same page (rewritten by #8642) now records that window as released by rc.6 cut 2026-08-10, so the page contradicted itself. The repair is the one-token parenthetical every other item in that same sentence already uses — (released as rc.1), (rc.2), (rc.4), (rc.5) — so it adds no new tense and no new narration. I deliberately did not extend the chain forward to the GA pin moves, which would have been rewriting the section. Drop this hunk if you read the freeze more strictly; nothing else depends on it.

The window count is measured, not inherited

The drafted 374 pending — 11 major-class, 99 minor, 264 patch was a pre-cut estimate. What GA actually released:

375 changesets — 11 major-class, 99 minor, 265 patch, and none that release nothing.

The delta is pinned to a specific commit, not hand-waved:

commitwindow size
98eec7e24 (chore: bump objectui to 665661ab0932)374 ⟵ where the draft was counted
01a7337fc (#8620, fix(objectql): a tenant's rename beats a package extension's scalar)375
259f211f0 (#8642, the docs compile)375
24c1b91e4 (the GA version commit)consumed all 2079

2079 is the train's total, not the window's: pre-mode accumulates changesets across every rc and consumes them all at pre exit. 1704 changesets stood at the rc.6 cut, 1704 + 375 = 2079.

Counting method, and how it was validated. The window is the changesets added between two version commits, classified by highest bump. Run against windows the page has already published, that method reproduces them exactly:

windowpage publishesmethod returns
rc.5 ⇒ rc.6425 — 36 / 123 / 266425 — 36 / 123 / 266
rc.4 ⇒ rc.510 — 2 / 4 / 410 — 2 / 4 / 4
rc.6 ⇒ GA(drafted 374)375 — 11 / 99 / 265

The issue suggested counting "across the ## 17.0.0 sections of the package changelogs". I implemented that too and it does not reproduce the page: for the rc.6 window it returns 164 where the page publishes 425, because the changelog bullet prefix is the sha of the commit that added the changeset and many changesets share one. So the file-based count is what the page's own numbers are made of, and the GA opener follows #8642's phrasing rather than claiming the changelog method.

#8620 gains a bullet

The one landing between the draft and the cut was documented nowhere on the page — grep for 8620 and 8460 both came back empty. #8642 handled the identical situation for rc.5 by adding bullets covering what landed after its draft, so this follows that precedent: one bullet under Metadata, packages & authoring gates, next to the existing overlay-layering entry it is a sibling of, and the opener now points at it.

Where I diverged from the suggested route

The dispatch suggested index.mdx match the shipped siblings' (final release: 15.1.1) / (final release: 14.8.0). The tree disagrees and I followed the tree. Those two forms are not "the house style for a shipped major" — they mark a series that has ended, and both match their series' last tag. v17 shipped its first release nine days ago; (final release: 17.0.0) would tell a developer the v17 line is closed and would be falsified by 17.0.1. That swaps one false claim for another, which is the failure this card exists to fix. (current series: 17.0.0, released 2026-08-14) keeps the accurate form and drops the pre-release tail.

One consequence worth naming: v16's entry still reads (current series: 16.0.0-rc.0), so the list now shows two "current series" rows. That contradiction is pre-existing — both rows already said "current series" before this PR — and v16 is stale independently of the GA cut (16.0.0 and 16.1.0 both shipped, 16.1.0 on 2026-07-22, prerelease: false). It needs v16.mdx too, which is outside this card's scope ceiling, so it is filed as #8886 rather than half-fixed here.

Also dropped

The blockquote's "Section headings say 17.0.0 for brevity" sentence. It existed because headings said 17.0.0 while the published artifacts were rc.N; with GA out, the headings are simply correct and the sentence explains a convention that no longer exists.

Not touched

The ~400 lines of substance under Landed since rc.6 (verified, correct — only the framing was stale), the historical rc.0rc.5 window sections apart from surface 5 above, and every package CHANGELOG.md (changesets-generated).

Gates

Run from the tree after the final commit, at HEAD 447c6d917:

pnpm check:docs-audit-scope OK (self-tests 56 + 22 cases; 179 hand-written docs in sync;
9 release-owned pages review-only)
pnpm check:release-notes OK (every released major has a curated, navigable page)
pnpm check:role-word OK (44 baselined files, no new occurrences)
pnpm check:nul-bytes OK (5892 text files, no raw control bytes)

Gate set re-derived against the actual diff with node scripts/pm/dispatch-gates.mjs content/docs/releases/v17.mdx content/docs/releases/index.mdx — it names exactly the three from the dispatch; check:nul-bytes is the any-edit family added on top.

check:role-word has a shrink-only baseline that bit this page during #8642, and it ratchets in both directions. v17.mdx is baselined at 2 and index.mdx at 1; both occurrences in v17.mdx are the field name sys_member.role, which this diff neither adds to nor removes, so the count stays flat and the baseline is untouched.


Generated by Claude Code

The page was compiled FOR the 17.0.0 cut (#8642) and never updated after it,
so a third-party developer was told the train had not shipped. GA published to
`latest` on 2026-08-14T08:00-08:02Z, `prerelease: false`, and `.changeset/
pre.json` is gone from `main`.
Five stale surfaces, not the three the report listed:
1. The release-status blockquote — rewritten as shipped. The `^16.x` caret
paragraph is kept verbatim; the "section headings say 17.0.0 for brevity"
sentence is dropped, since it explained a pre-mode convention that no
longer exists.
2. The `Landed since 17.0.0-rc.6` opener — closed against what GA actually
released, in the shape #8642 used to close the rc.5 window.
3. `index.mdx`'s v17 entry — no longer a pre-release.
4. The `New in Console` subsection of the rc.6 window still said the three pin
moves were "not yet released".
5. The Console pin chain in the rc.0 window ended "under *rc.5*, which is still
open" — a window this same page now records as released by rc.6.
The window count is measured, not inherited. The drafted "374 pending — 11
major-class, 99 minor, 264 patch" was counted at 98eec7e; one more changeset
(#8620) landed at 01a7337 before the cut, so GA released 375 — 11 major-class,
99 minor, 265 patch, none that release nothing. 2079 is the whole train's total,
not this window's: pre-mode accumulates changesets and consumes them all at
`pre exit`. The counting method reproduces the rc.6 window's published numbers
exactly (425 / 36 / 123 / 266) and rc.5's (10 / 2 / 4 / 4). #8620 was documented
nowhere on the page, so it gains a bullet, as #8642 did for its own post-draft
landings.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gLCsJ1sDoJZZruDKMsHH3
@vercel

vercelBot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredAug 15, 2026 2:22pm

Request Review

@github-actionsgithub-actionsBot added size/s documentation Improvements or additions to documentation labels Aug 15, 2026
@os-zhuangos-zhuang added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed documentation Improvements or additions to documentation labels Aug 15, 2026 — with Claude
@os-zhuang
os-zhuang marked this pull request as ready for review August 15, 2026 14:31
@os-zhuang
os-zhuang added this pull request to the merge queueAug 15, 2026
Merged via the queue into main with commit 15283cfAug 15, 2026
29 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-8882-v17-ga-release-page branch August 15, 2026 14:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/sskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs(releases): v17.0.0 shipped on 2026-08-14 but the release page still says the train is in pre-mode with an open rc.6 window

2 participants

@os-zhuang@claude