Skip to content

docs(releases): curate the v17 platform release page and wire it into the nav - #3906

Merged
os-zhuang merged 1 commit into
mainfrom
claude/v17-docs-update-nxjj6d
Jul 29, 2026
Merged

docs(releases): curate the v17 platform release page and wire it into the nav#3906
os-zhuang merged 1 commit into
mainfrom
claude/v17-docs-update-nxjj6d

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

为什么

docs/releases-maintenance.md 把发布历史分成三层,第三层(content/docs/releases/vN.mdx)是每个 major 必须手写的那一层 —— 迁移指引没法生成。v17 还没有这一页。

这趟车目前累积了 302 个 pending changeset,其中 45 个带 ! 破坏性标记、18 个声明 major bump。v17-rc-anchor 已经把它锚定为 17.0.0(RC 周期,pre-mode 下发 17.0.0-rc.N)。也就是说:第三方开发者规划升级时唯一会去读的那份文档,恰恰是发布流水线唯一生成不出来的产物。

改了什么

新增 content/docs/releases/v17.mdx —— 后端内容取自 pending changesets,前端内容取自本次打包的四条 @objectstack/console refresh 记录(终点 pin 4a4829d0ef39)。结构沿用 v16 页:

  • 破坏性变更 + 迁移(带 FROM → TO 表):Node 22 底线、allowExport 改为 opt-in、ApiMethod 收缩到六个原语(附 reporter codemod 与 legacy-only 白名单会 strip 成 deny-all 的坑)、无触发用户的流程运行拒绝碰数据、最后三个 authorable 别名退役、agent.tools[] 移除、审批请求改为参与者可见、sharing full/group、membership grade 不再是能力通道、better-auth 1.7 账号身份重构与 issuer 回填、SDK 死表面删除、GraphQL 移除、ObjectStackProtocol 别名解散、datasource 连不上即 fail boot、unique 按租户物化、i18n 契约修复,以及一批 dead spec cluster 的清理表
  • 新能力:ADR-0104 文件即记录(os migrate files-to-references + OS_DATA_VALUE_SHAPE_STRICT_ENABLED 的 warn-first 顺序)、审批动态路由(expression approver / onEmptyApprovers / decision outputs)、SDK 与真实路由对齐(route ledger 双向守卫)、写入可观测性(droppedFields)、analytics 正确性、lint 与 CLI
  • Console (Studio) 章节升级 checklistReferences

meta.json + index.mdx:把 v17 接进导航和版本列表 —— 这正是 check-release-notes 在 17.0.0 进入 spec CHANGELOG 那一刻会要求的两件事。

顺手修 content/docs/protocol/kernel/plugin-spec.mdx:protocol 文档里唯一可复制的 plugin manifest 例子写的是 compatibility: { objectstack: '>=2.0.0 <3.0.0', node: '>=18.0.0' },而 PluginManifestSchema 声明的是 minObjectStackVersion / maxObjectStackVersion / nodeVersion —— 键名对不上会被 parse 静默 strip(PD #12 的典型形状),版本号也是两处过期。#3825 把 "Node 18+" 在十处用户可见位置改成了 22,漏了这一处。

验证

  • pnpm docs:build 通过(411 条 doc route,/en/docs/releases/v17 已生成 .html/.rsc)
  • check:release-notes / check:doc-authoring / check:org-identifier / check:nul-bytes / check:node-version 全绿
  • check:role-word:页面里只剩 2 处 role,都是 ADR-0108 那节在讲的字面列名 sys_member.role;其余表述已改写。按 guard 说明 ratchet 进 scripts/role-word-baseline.json(与 v13/v14/v16 页同样处理)
  • MDX 安全性:脚本扫过全文,code span 之外无裸 {}<tag>

说明

  • 纯文档,附空 changeset(.changeset/v17-release-page.md),不发任何包
  • docs/protocol-upgrade-guide.mdpackages/spec/spec-changes.json 是 ADR-0087 D4 生成物,PROTOCOL_VERSIONscripts/sync-protocol-version.mjspnpm version 时同步 —— 本 PR 刻意不碰,它们会在发布流水线里随 major bump 一起重新生成。protocol-17 的 conversion 步骤已在 conversions/registry.ts 里注册好
  • 根目录 CHANGELOG.md / RELEASE_NOTES.md 按 maintenance 文档已被三层结构取代,未改动
  • 页面按 RC 状态措辞;changeset pre exit 之后若最终版本号或内容有出入,这页需要跟一次

🤖 Generated with Claude Code

https://claude.ai/code/session_01LXvaYR7TiJBCxYwjn51owH


Generated by Claude Code

… the nav

Layer 3 of the release history (docs/releases-maintenance.md) is a hand-curated
page per major, and v17 had none. The train carries 302 pending changesets — 45
of them marked breaking — so the page that third parties actually read to plan an
upgrade was the one artifact the release could not generate.

Adds content/docs/releases/v17.mdx, sourced from the pending changesets for the
backend and from the four bundled @objectstack/console refresh entries for the
frontend. It leads with breaking changes + migration (Node 22 floor, the opt-in
export axis, the ApiMethod shrink and its reporter codemod, user-less flow runs
refused, the three retired authorable aliases, agent.tools[], approval-request
participant visibility, sharing full/group, membership grade, better-auth 1.7
account identity, the deleted SDK surface, the GraphQL removal, the
ObjectStackProtocol alias, datasource fail-fast, per-tenant unique, the i18n
contract fixes and the dead-spec-cluster prune), then new capabilities (ADR-0104
files-as-records, dynamic approver routing, the reconciled SDK surface, write
observability, analytics correctness), a Console (Studio) section, an upgrade
checklist and a reference index.

Wires "v17" into content/docs/releases/meta.json so the page is navigable, and
adds its entry to the releases index — the two things check-release-notes will
demand the moment 17.0.0 lands in the spec CHANGELOG.

Also corrects the plugin manifest compatibility example in
content/docs/protocol/kernel/plugin-spec.mdx: it showed keys PluginManifest does
not declare (objectstack / node rather than minObjectStackVersion /
maxObjectStackVersion / nodeVersion) alongside a >=18.0.0 Node floor and a
>=2.0.0 <3.0.0 platform range, so the one copy-pasteable manifest example in the
protocol docs taught a shape the parser strips. #3825 restated the Node
prerequisite in ten user-facing places and missed this one.

The release page's two remaining uses of the reserved word "role" are the literal
sys_member.role column the ADR-0108 section is about; ratcheted into
scripts/role-word-baseline.json accordingly.

Verified: pnpm docs:build passes (411 doc routes, /en/docs/releases/v17 among
them), and check:release-notes, check:doc-authoring, check:role-word,
check:org-identifier, check:nul-bytes, check:node-version are green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LXvaYR7TiJBCxYwjn51owH
@vercel

vercel Bot commented Jul 28, 2026

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Jul 28, 2026 6:09pm

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation tooling size/l and removed documentation Improvements or additions to documentation tooling labels Jul 28, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review July 29, 2026 00:43
@os-zhuang
os-zhuang merged commit a641d10 into main Jul 29, 2026
14 checks passed
@os-zhuang
os-zhuang deleted the claude/v17-docs-update-nxjj6d branch July 29, 2026 00:43
os-zhuang pushed a commit that referenced this pull request Jul 29, 2026
…tore, first docs sweep

Three related closures on the just-merged v17 release page (#3906):

1. The Console section was missing 25 objectui commits. The v17 frontend window
is cf2d56e32a11 → 4a4829d0ef39 = 128 commits, but the pending console-*.md
changesets covered only 103: the range 2cb8d78e24ad...c6cfdf1288b6 landed with
no changeset — exactly the "SHA bump leaves no trace" failure
scripts/bump-objectui.sh exists to prevent. Two of the missing commits are
breaking and each is the frontend half of a backend change the page already
documented (useClientNotifications delegates ↔ #3612 SDK removal;
@object-ui/types Capabilities re-exports ↔ the retired capabilities cluster).
Both now sit beside their backend halves and in the upgrade checklist, with the
other eight substantive commits folded into the Console section and
.changeset/console-c6cfdf1288b6-backfill.md recording the range itself.

2. "releases" returns to the root sidebar. #3423 unlisted References and
Releases together ("lookup content ... the docs home page links both"); that
trade holds for References (22 generated pages) but not for Releases in a
release window, when the upgrade notes are what people open the docs for.
References stays out. check-release-notes now enforces what its success line
already claimed: the section must be reachable via the root nav OR a
/docs/releases link on the docs home — either satisfies it (preserving #3423's
option), losing both fails the build. Negative-tested both directions.

3. First v17 docs sweep (docs/v17-docs-sweep.md — playbook + append-only run
log with a watermark, built to re-run while the RC train iterates). Run 1
fixed the drift v17 left in hand-written prose: services-checklist (17→16
services, graphql rows, the dissolved ObjectStackProtocol), the anonymous-deny
matrix still listing /graphql + handleGraphQL, sharing docs describing
owner/group shapes as "declared but not enforced" (they no longer parse),
http-protocol claiming enable.trash exists, REST/GraphQL in objectql
diagrams/prose, and the objectstack-api skill description (mirrors regenerated
via gen:skill-docs). False positives and out-of-scope findings (spec comment
drift, implementation-status.mdx staleness) are logged for the next run.

Verified: pnpm docs:build passes; check:release-notes / doc-authoring /
role-word / org-identifier / nul-bytes / skill-docs-sync all green; the new
guard branch fails when both entry points are removed and passes with either.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LXvaYR7TiJBCxYwjn51owH
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants