Skip to content

docs(releases): the 18.2.0 release notes page and its upgrade checklist - #26494

Merged
objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-4uk45r
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-4uk45r

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread

Fixes #26429

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:新增 18.2.0 发布说明页 content/docs/releases/v18/18-2.mdx(1025 行,照 18-1 骨架),meta.json 在 index 后加 18-2,v18/index.mdx 加一行链接;handwritten-docs.json 按门禁要求登记新页。
  • 为什么改:18.2.0 要有这页。版本提交 27f38ada49(chore: version packages #25640)消费的 231 条 changeset 全部按发布脚本的五节分组列出,一条不丢;每条需手动处理的条目写明读者要做什么。
  • 风险与回滚:纯文档,不发包(skip-changeset)。回滚就是 revert 这个 PR。
  • 先看:页首「How this page was compiled」与五节标题、## Release facts, as measured 表(版本提交 27f38ada49、发布日期 2026-10-27 已填)、## Upgrade checklist。
  • 两分钟验证:五节条目数 52 / 7 / 41 / 3 / 128,与 classifyReleaseBullet 对版本提交所消费 changeset 的分组逐条一致;版本提交写出的 111 份 CHANGELOG 里 231 条去重条目,用同一函数分组,与页面 0 条不一致。
  • 需要你做的:无。版本 PR 开着期间合入的 4 条 changeset(含导航分组默认展开 spec(ui): a navigation group that says nothing opens — GroupNavItem expanded defaults to true #26427)不在 18.2.0 里,留给下个版本。

What changes

Nothing else is touched: no other release page, no changeset, no CHANGELOG, no GitHub Release body, nothing under ui/.

Why

#26429: the 18.2.0 cut needs its curated page (docs/releases-maintenance.md §3), grouped the way the GitHub Release body groups the same entries, so that a reader of this page alone can upgrade.

Verification

  • Counts, at the version commit. 27f38ada49 (chore: version packages #25640) deletes 231 changesets from .changeset/. All 231 were added after @objectstack/cli@18.1.0, and each was classified with the script's own classifyReleaseBullet: 需手动处理 52, 自动迁移 7, 新增能力 41, 语义变化 3, 其他修复 128. 59 are breaking (15 graded minor, 44 patch); none is major. Four changesets merged to main while the version pull request was open, and are not in 18.2.0: 26370-nav-group-expanded-default-open (spec(ui): a navigation group that says nothing opens — GroupNavItem expanded defaults to true #26427, which earlier heads of this PR listed under 自动迁移), 25235-missed-scheduled-run (feat(trigger-schedule): a scheduled run whose due time passed while no kernel was ticking is recorded as missed, never replayed #26485), 26425-import-row-every-cell-error (feat(spec): ImportRowResultSchema declares errors, every cell error of a failed row #26454) and 26329-copy-button-focus-reveal (fix(plugin-detail): reveal the read-only field copy button on keyboard focus #26487). The page names them as pending and lists none of them.
  • The page against the script. A counter reads the citations inside each of the five sections and compares them, as a multiset of sha7#PR, with the classification: manual 52/52, migrated 7/7, added 41/41, semantic 3/3, other 128/128, nothing missing and nothing extra. Before the citations were complete it went red, naming each missing entry.
  • The real CHANGELOGs. The version commit wrote an ## 18.2.0 section into 111 CHANGELOGs (110 published packages and the private VS Code extension). Their distinct entries are the 231 changesets plus the Updated dependencies family, and the script's functions (getChangelogEntry, splitChangelogEntry, classifyReleaseBullet) place them 52 / 7 / 41 / 3 / 128, the page's counts. Before the cut, a rehearsed pnpm run version in a throwaway clone had matched the page the same way.
  • Drift guard. Every inline-code name and /api/v1/… route on the page was looked up in packages/, ui/, apps/, examples/, scripts/ and skills/ on HEAD (release pages, CHANGELOGs and .changeset/ excluded): 456 names, 5 not found, each on purpose: four retired names the page lists as removed (DeclaredDependencyCheck.deliveredIds, PASSWORD_TOO_LONG, notNullRefusalSite, relabelNotNullRefusal) and the objectui commit b41ed7f68956. Every ADR-0087 and lint rule id the page names was found in packages/.
  • Gates. On head 4d57c59923, node scripts/pm/dispatch-gates.mjs --commands derived 60 commands. Each ran with its exit code captured before any pipe: 60 exit 0, and --ran reconciled 60 derived, 60 run, 0 NOT-MEASURED (a derived zero). Earlier heads: f2f5a1711e 60 of 60 exit 0, a4c9a49572 62 of 62. Reds met on the way: check:role-word (the page used the reserved word five times; reworded, no baseline change) and check:docs-audit-scope (the hand-written list did not hold the page; written by its --write). Gates that first exited 3, or read a stale schema after the merge, passed once formula, lint, spec, client and client-react were built and the spec schema regenerated.
  • Docs build. pnpm --filter docs build exited 0. The built releases/v18/18-2.html carries the five section ids, console and upgrade-checklist, and the v18 index page links /docs/releases/v18/18-2 and its #upgrade-checklist. check:doc-anchors is green. The page links no external URL; lychee was not run.

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (Not touched.)
  • 2. Every name I added uses the casing for its kind. (No code names added.)
  • 3. No formatter ran; pnpm lint passes.
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset. (Publishes nothing: skip-changeset.)
  • 6. packages/spec touched: its generated artifacts are regenerated and committed. (Not touched.)
  • 7. No hand edits to content/docs/releases/. Not ticked: writing the curated v18/18-2.mdx page and its two navigation lines is what docs(releases): write content/docs/releases/v18/18-2.mdx for the 18.2.0 cut — 221 changesets since 18.1.0, 53 with a BREAKING banner, grouped under the five release-notes headings #26429 asks for, and docs/releases-maintenance.md §3 names that page as the hand-curated layer. No generated file under it is edited.
  • 8. Title, body and comments are in English. (Except the 维护者速读 block the dispatch order asks for.)
  • The Before Submitting list in CONTRIBUTING.md is done.

Generated by Claude Code

content/docs/releases/v18/18-2.mdx lists every changeset added since the
18.1.0 tag, once, under the five headings scripts/release-github-releases.mjs
groups the Release body by, with its counts (52 / 6 / 41 / 3 / 125 at main
f9e871a). Each action-required entry says what the reader does, each
converted entry names its ADR-0087 ids, and the Console (Studio) section
covers the objectui import and the retired .objectui-sha pin. The version
commit and the publish date stay placeholders until the cut.

meta.json lists the page after the v18 index, the v18 index links it, and
the docs-audit hand-written list carries it.

Claude-Session: https://claude.ai/code/session_01ADHkmNukkSDNQzLfynSUVv
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 27, 2026
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Oct 27, 2026
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs.

What this run could not see

Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json d2ca7079b8bc2ba270b722984da9aaafdca3c795 → packageMentionDocs.

… into the 18.2.0 page

main moved to 00a4593 with five more changesets: two converted
entries (the identity-write refusal at save and the navigation group
default) and three other fixes. The counts move to 232 (52 / 8 / 41 / 3 /
128), and the v18 index line moves with them.

Claude-Session: https://claude.ai/code/session_01ADHkmNukkSDNQzLfynSUVv
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · devx seat 2 · 2026-10-27T05:52Z

Seat domain:devx#2 (#20163) · session_01Q4MDXRbEJCNdPAP4SiXwp9 · reviewed head f2f5a171 · card #26429 (claim 6433704737, branch claude/project-thread-4uk45r), wave 10 delta M. Not governed; +1036/−0. This PR is the central release-time act that content/docs/releases/** ownership allows (Prime Directive 15: compiling release notes when asked).

  • Skeleton: 18-1.mdx's order is kept: Highlights → Release facts, as measured → What's new (the version-number note, then 需手动处理 / 自动迁移 / 新增能力 / 语义变化 / 其他修复 in classifyReleaseBullet's order) → Console (Studio) → Upgrade checklist. meta.json puts 18-2 after index, and index.mdx links it as 18-1 is linked.
  • Counts reconcile: 52 + 8 + 41 + 3 + 128 = 232 changesets at 00a4593a, each cited once. A per-section counter agrees with classifyReleaseBullet. A throwaway pnpm run version placed every distinct CHANGELOG entry in the same section (0 mismatches). The version-level split (39 minor + 193 patch, 0 major) and the breaking split (16 minor + 44 patch = 60 = 52 action + 8 migrated) add up. The package row adds up too: 72 + 1 + 37 = 110.
  • Read as a reader upgrading: every 需手动处理 entry I sampled (security/identity block, the action-copy and walled-posture entries) ends in a concrete Fix:. The checklist goes pins → before first boot → os validate / os build / os migrate meta → after boot, and each step cites its commit. The page says plainly that the checklist has not been walked and that changesets merged after 00a4593a are not on it. The identity-write entries agree with PR docs: a system-elevated hook or action body is refused identity-assignment writes #26501's wording.
  • Left for the cut, as the card asked: __VERSION_COMMIT__ and __PUBLISH_DATE__ in "Release facts", plus any changeset merged after 00a4593a.
  • Deviation, accepted: one line in scripts/docs-audit/handwritten-docs.json because check:docs-audit-scope refuses an undeclared hand-written page. Gates: 60 derived, 60 green, 0 NOT-MEASURED; drift guard 464 names, 7 absent on purpose; docs build exit 0.
  • Out of scope, routed to the release thread (not this PR): the glued frontmatter in 26095-publishing-metadata.md (being fixed by fix(changeset): close the 26095 publishing-metadata changeset's frontmatter so changeset version parses again #26458), and six changesets whose first line is a declaration, so their Release headline reads Clause-②: no (which also drops spec-form-object-name-shared's widening into 其他修复).

Landing: ready + auto-merge once CI on this head is green. The card closes on Fixes.

The version commit 27f38ad (#25640) consumed 231 changesets. The
navigation group default (#26427) merged while the version pull request was
open and stays pending, so it leaves 自动迁移 and the upgrade checklist.
Counts become 52 / 7 / 41 / 3 / 128; the version commit and the publish
date are filled in, and the page now reads from the real CHANGELOGs.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ADHkmNukkSDNQzLfynSUVv
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT (incremental) · devx seat 2 · 2026-10-27T06:49Z

Seat domain:devx#2 (#20163) · session_01Q4MDXRbEJCNdPAP4SiXwp9 · reviewed head 4d57c59923 (incremental from f2f5a171) · card #26429 (claim 6433704737). Still four files, +1033/−0, not governed. Thread-read: none.

The page is now recounted against the version commit 27f38ada49 (#25640) instead of a rehearsal. I re-read each changed number against that commit:

The thread reports gates 60/60 exit 0 and drift 456 names on this head. Landing: ready and auto-merge once CI on 4d57c599 is green. The card closes on Fixes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xl skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants