content/docs/releases/v17.mdx was compiled for the GA cut (#8642, 259f211f0) and then never updated after it. The cut landed the same day, so the published page tells a third-party developer that 17.0.0 has not shipped yet.
What actually happened, in order
| commit |
subject |
259f211f0 |
docs(releases): compile the v17 release page for the 17.0.0 cut (#8642) — wrote the page as preparing to ship |
2c2afa544 |
chore(release): exit changesets rc pre mode for the 17.0.0 GA cut (#8643) |
24c1b91e4 |
chore: version packages (#6208) — the GA version commit, consumed 2079 changeset files |
| tags |
@objectstack/spec@17.0.0, create-objectstack@17.0.0, … published 2026-08-14T08:00–08:02Z, prerelease: false, draft: false |
Nothing came back to the page afterwards, so all three "not yet shipped" claims below are now false.
The stale surfaces
1. content/docs/releases/v17.mdx — the release-status blockquote (currently lines 15–21). Four false claims in one paragraph:
- "development is complete and the train is preparing to ship"
- "The latest published pre-release is 17.0.0-rc.6" — the latest published version is 17.0.0
- "one window of 374 changesets is still open on
main" — that window was consumed by the GA cut
- "Until
changeset pre exit, the 17.0.0 train ships through Changesets pre-mode … nothing reaches the latest tag" — pre exit ran in 2c2afa544; .changeset/pre.json no longer exists on main
The rest of that blockquote (the ^16.x caret-range paragraph explaining why the train is a major) is still accurate and should survive.
2. content/docs/releases/v17.mdx — the ## Landed since 17.0.0-rc.6 opener (currently lines 2850–2857). Says "This window is open … these changes roll into the cut that exits Changesets pre-mode … 374 pending — 11 major-class, 99 minor, 264 patch … These numbers move until the cut; once it lands the package changelogs are authoritative." The cut has landed. Close this window against what GA actually released, the same way #8642 closed the rc.5 window against the rc.6 cut.
The ~400 lines of substance in that section (the credential story, driver-text disclosure, per-organization uniqueness, $field, …) are fine — it is the framing that is stale, not the content.
3. content/docs/releases/index.mdx line 21 ends (current series: 17.0.0-rc.N, pre-release). Every shipped sibling on that list reads (final release: 15.1.1) / (final release: 14.8.0). v17 should join them.
Counting the GA window — one trap
Do not report 2079 as the window's size. In Changesets pre-mode, changesets are not consumed at each rc — they accumulate and the whole train's set is consumed at pre exit, so the version commit deletes every changeset back to rc.0. The window number this section wants is the delta since the rc.6 cut, counted the way the page counts every other window: across the ## 17.0.0 sections of the package changelogs at 24c1b91e4. Verify the number you print rather than inheriting the drafted 374.
Scope
Docs-only, skip-changeset. Three files at most (v17.mdx, index.mdx). Sweep the rest of v17.mdx for any other forward-looking tense that the cut falsified — the two spots above are the ones found, not a guarantee there is no third. Do not rewrite the historical per-window sections (Landed since rc.0 … rc.5): those are correct records of what each cut released and are frozen by design. Package CHANGELOG.md files are generated — leave them alone.
Re-check commands
git fetch origin main
git show origin/main:.changeset/pre.json # expect: does not exist (pre-mode over)
git show origin/main:content/docs/releases/v17.mdx | sed -n '15,21p'
git show origin/main:content/docs/releases/v17.mdx | sed -n '2850,2857p'
git show origin/main:content/docs/releases/index.mdx | sed -n '21p'
gh release list --repo objectstack-ai/objectstack --limit 5 # 17.0.0 tags, prerelease=false
Notes
Per CLAUDE.md, content/docs/releases/ is never touched by a code PR — this is the sanctioned dedicated docs-only route, and it is the release-time compile step the GA cut was owed.
Reported by the maintainer, 2026-08-15: 「v17 已经正式发布了,但是文档是不是没有更新对。 docs/releases/v17」
content/docs/releases/v17.mdxwas compiled for the GA cut (#8642,259f211f0) and then never updated after it. The cut landed the same day, so the published page tells a third-party developer that 17.0.0 has not shipped yet.What actually happened, in order
259f211f0docs(releases): compile the v17 release page for the 17.0.0 cut (#8642)— wrote the page as preparing to ship2c2afa544chore(release): exit changesets rc pre mode for the 17.0.0 GA cut (#8643)24c1b91e4chore: version packages (#6208)— the GA version commit, consumed 2079 changeset files@objectstack/spec@17.0.0,create-objectstack@17.0.0, … published 2026-08-14T08:00–08:02Z,prerelease: false,draft: falseNothing came back to the page afterwards, so all three "not yet shipped" claims below are now false.
The stale surfaces
1.
content/docs/releases/v17.mdx— the release-status blockquote (currently lines 15–21). Four false claims in one paragraph:main" — that window was consumed by the GA cutchangeset pre exit, the 17.0.0 train ships through Changesets pre-mode … nothing reaches thelatesttag" —pre exitran in2c2afa544;.changeset/pre.jsonno longer exists onmainThe rest of that blockquote (the
^16.xcaret-range paragraph explaining why the train is a major) is still accurate and should survive.2.
content/docs/releases/v17.mdx— the## Landed since 17.0.0-rc.6opener (currently lines 2850–2857). Says "This window is open … these changes roll into the cut that exits Changesets pre-mode … 374 pending — 11major-class, 99minor, 264patch… These numbers move until the cut; once it lands the package changelogs are authoritative." The cut has landed. Close this window against what GA actually released, the same way #8642 closed therc.5window against therc.6cut.The ~400 lines of substance in that section (the credential story, driver-text disclosure, per-organization uniqueness,
$field, …) are fine — it is the framing that is stale, not the content.3.
content/docs/releases/index.mdxline 21 ends(current series: 17.0.0-rc.N, pre-release). Every shipped sibling on that list reads(final release: 15.1.1)/(final release: 14.8.0). v17 should join them.Counting the GA window — one trap
Do not report 2079 as the window's size. In Changesets pre-mode, changesets are not consumed at each rc — they accumulate and the whole train's set is consumed at
pre exit, so the version commit deletes every changeset back torc.0. The window number this section wants is the delta since therc.6cut, counted the way the page counts every other window: across the## 17.0.0sections of the package changelogs at24c1b91e4. Verify the number you print rather than inheriting the drafted 374.Scope
Docs-only,
skip-changeset. Three files at most (v17.mdx,index.mdx). Sweep the rest ofv17.mdxfor any other forward-looking tense that the cut falsified — the two spots above are the ones found, not a guarantee there is no third. Do not rewrite the historical per-window sections (Landed since rc.0…rc.5): those are correct records of what each cut released and are frozen by design. PackageCHANGELOG.mdfiles are generated — leave them alone.Re-check commands
Notes
Per
CLAUDE.md,content/docs/releases/is never touched by a code PR — this is the sanctioned dedicated docs-only route, and it is the release-time compile step the GA cut was owed.Reported by the maintainer, 2026-08-15: 「v17 已经正式发布了,但是文档是不是没有更新对。 docs/releases/v17」