Repository navigation
Commit ed0ab75
docs(releases): 18.3.0 release notes and its upgrading row (#29938)
<!-- claude-projects-attribution: {"github_login":"marchtian"} -->
_Requested by **田騏** · [project
thread](https://claude.ai/code/project/chan_01VmuUhXU9SSUzqJYyXSmYSi?thread=cmsg_01VmuUhXU9SSUzqJYyXSmYSi9paTx1Lu8ENYwwssthfK3h)_
Fixes #29933
Clause-②: no
Metadata-protocol: none
## 维护者速读
- **改了什么**:新增 18.3.0 发布说明页 `content/docs/releases/v18/18-3.mdx`,在
`meta.json` 里排在 `18-2` 之前;升级指南 `upgrading.mdx` 的 per-release 表加 v18.3.0
一行;`scripts/docs-audit/handwritten-docs.json`
登记新页(`check:docs-audit-scope` 要求)。纯文档,不发布任何包。
- **为什么改**:Version Packages #26517 已在 14:44Z 合并,npm 正在发布
18.3.0(`@objectstack/spec` 的 `latest` 在 15:15Z 变为
18.3.0),但发布页还不存在;维护者问「18.3 的版本发布文档开始写了吗」。
- **风险与回滚**:只动文档,回滚即 revert 本 PR。1,379 条条目用 GitHub Release
正文的同一个分组函数归类;需手动处理 / 自动迁移 / 新增能力 / 语义变化四段逐条列出,其他修复 760 条只按领域计数;升级清单是从
changeset 汇编的,没有实走。
- **先看**:① 页面的 Release facts,尤其「四个修复的代码已在 18.3.0 里、条目要等下个版本的
CHANGELOG」一条,其中 #29904 的修复是破坏性收紧(发布门拒收文本与数字比较的校验规则);② Upgrade checklist
第 2 与第 4 步;③ `upgrading.mdx` 新增的那一行。
- **两分钟验证**:在本分支跑 `pnpm check:release-notes && pnpm
check:doc-anchors`,预期两者都退出 0;或打开预览站
`/docs/releases/v18/18-3`,能看到五段和升级清单。
- **需要你做的**:无,席位落地。
## What changes
- **`content/docs/releases/v18/18-3.mdx`** (new, 1,115 lines), in
`18-2.mdx`'s skeleton: Highlights; Release facts, as measured (with the
18.3.0 sweep); What's new under the five release-note headings; Console
(Studio); Upgrade checklist.
- Source: every `## 18.3.0` section the version commit `83d7e4ae33`
(#26517) wrote, 110 CHANGELOGs, backend and `ui/`. Bullets deduplicated
on their **full text**: 40,278 bullets, 37,836 of them `Updated
dependencies`, leave 1,379 entries and one stray dependency line. First
lines alone would collide: four entries open with the same `Shipped in
18.2.0` sentence and differ only by commit.
- Placement: each entry through `classifyReleaseBullet`
(`scripts/release-github-releases.mjs`), the function the GitHub Release
body uses. Counts 264 / 41 / 307 / 7 / 760.
- 需手动处理, 自动迁移 (with each ADR-0087 id), 新增能力 and 语义变化 are listed in full,
each line the changeset's summary plus its commit and pull request. 其他修复
is counted by area. The area headings are a keyword reading of each
summary, for navigation.
- The upgrade checklist is marked **not walked**.
- **`content/docs/releases/v18/meta.json`**: `18-3` ahead of `18-2`.
- **`content/docs/upgrading.mdx`**: the `v18.3.0` row of Per-release
specifics, in the form #26631 gave `v18.2.0`.
- **`scripts/docs-audit/handwritten-docs.json`**: one line, written by
`node scripts/docs-audit/check-audit-scope.mjs --write`.
## Tests
Docs only: no package test applies. The page compiles as MDX
(`@mdx-js/mdx` with `remark-gfm`, from the docs app's own dependencies),
and so does `upgrading.mdx`. Every gate `dispatch-gates.mjs --commands`
derives for the final diff was run locally on the final head; the
readings are below and in the report comment on #29933.
## Acceptance notes
- **The four fixes with no 18.3.0 entry.** #29921, #29923 (BREAKING, for
#29904), #29930 (for #29903) and #29932 merged after the version pull
request was last refreshed. Their code is in `83d7e4ae33`'s tree
(measured: `faultOutcome` in `packages/formula/src/validate.ts`,
`withoutExtensionsOf` in `packages/objectql/src/registry.ts`), and their
changesets are still in `.changeset/`. The page says so and puts the
#29923 refusal in the checklist.
- **The sweep.** The four run records (#29870, #29877, #29890, #29893)
are all wave 5, at `589049b0`; three compare each item with its wave-4
record, and the export check has no wave-4 record. Of the eight p1s,
four fixes ship with their entries, two ship as code only (above), and
two ship nothing (a checklist edit, a test fix).
- **npm, read twice.** `@objectstack/spec` `latest` read `18.2.0` at
15:12Z and `18.3.0` at 15:21Z (`time["18.3.0"]` 15:15:07Z); `next` reads
`18.2.0`. The page states both readings.
- **Wording.** Four summaries say "membership tier" for better-auth's
word, so the page passes `check:role-word` (ADR-0090 D3).
- **Not run locally.** The docs site build (`Build Docs` in `ci.yml`) is
CI's. The MDX compile above is the local stand-in.
## Verification
<details>
<summary>Measured counts and the commands that produced them</summary>
- CHANGELOG sections and entries: a scratch script over `git ls-files
'*CHANGELOG.md'` at `83d7e4ae33`, using `getChangelogEntry`,
`splitChangelogEntry`'s fence rule and `classifyReleaseBullet` from
`scripts/release-github-releases.mjs`, deduplicating on full bullet
text. 110 sections; 1,379 entries; 264 manual, 41 migrated, 307 added, 7
semantic, 760 other; 305 breaking (117 `minor`, 188 `patch`); 238
`minor`, 1,141 `patch`, 0 `major`; 544 touch an `@object-ui/*` package.
- Changesets: `git show --name-status 83d7e4a` lists 1,381 deleted
`.changeset/*.md`; each mapped to its add commit with `git log
--diff-filter=A`. 1,379 match an entry by commit; the other two
(`ce9bc10`, `d3d70d3`) name only `@objectstack/example-showcase`.
- Packages: the workspace enumerator, version `18.3.0`: 109 public (73
`@objectstack/*`, `create-objectstack`, 35 `@object-ui/*`), 1 private
(`@object-ui/app-shell`).
- p1 fixes: each closing pull request's merge commit, `git merge-base
--is-ancestor SHA 83d7e4a` exit 0 for all eight.
- npm: `npm view @objectstack/spec dist-tags --json` at 15:12:31Z and
15:21:33Z.
</details>
<details>
<summary>Gates on the final head</summary>
Head `dce6df8264`, after one merge of `origin/main` (`21510bba61`).
`node scripts/pm/dispatch-gates.mjs --ran ran.list`: **61 derived, 61
run, 0 NOT-MEASURED, 0 UNRUN** (exit 0).
Two gates read built output and first refused on the build the merge
left stale: `pnpm --filter @objectstack/spec run check:docs` (exit 1,
`json-schema` older than `src`) and `pnpm --filter @objectstack/spec run
check:skill-examples` (exit 3, PREREQUISITE NOT MET). After `pnpm
--filter '@objectstack/client-react...' --filter '@objectstack/lint...'
build` under `os-verify-lock.sh` (VERDICT command-exit 0), both exit 0,
as do `check:docs-transcript-drift` and the two `@objectstack/lint` doc
gates, re-run on the same build.
```text
node scripts/check-adr-links.mjs :: exit 0
node scripts/check-adr-links.mjs --self-test :: exit 0
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
node scripts/check-doc-route-spelling.mjs --advisory :: exit 0
node scripts/check-doc-route-spelling.mjs --self-test :: exit 0
node scripts/check-docs-section-name.mjs :: exit 0
node scripts/check-docs-section-name.mjs --self-test :: exit 0
node scripts/check-issue-citations.mjs :: exit 0
node scripts/check-release-section-coverage.mjs :: exit 0
node scripts/check-release-section-coverage.mjs --self-test :: exit 0
node scripts/check-release-section-coverage.mjs --strict :: exit 0
node scripts/check-section-landing-index.mjs :: exit 0
node scripts/check-section-landing-index.mjs --self-test :: exit 0
node scripts/ci/plan-test-core-shards.mjs --self-test :: exit 0
node scripts/docs-audit/check-affected-docs.mjs :: exit 0
node scripts/docs-audit/check-drift-comment.mjs :: exit 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0
pnpm --filter @objectstack/lint run check:doc-security-posture :: exit 0
pnpm --filter @objectstack/spec run check:docs :: exit 0
pnpm --filter @objectstack/spec run check:empty-state :: exit 0
pnpm --filter @objectstack/spec run check:liveness :: exit 0
pnpm --filter @objectstack/spec run check:skill-examples :: exit 0
pnpm --filter @objectstack/spec run check:strictness-ledger :: exit 0
pnpm --filter @objectstack/spec run check:variant-docs :: exit 0
pnpm --filter @objectstack/spec run check:yaml-examples :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:bash32-floor :: exit 0
pnpm check:ci-filter-parity :: exit 0
pnpm check:cli-command-ids :: exit 0
pnpm check:closed-ceremony-text :: exit 0
pnpm check:corpus-claim-drift :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:doc-anchors :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:doc-frontmatter :: exit 0
pnpm check:docs-audit-scope :: exit 0
pnpm check:docs-image-tag :: exit 0
pnpm check:docs-redirects :: exit 0
pnpm check:docs-single-h1 :: exit 0
pnpm check:docs-spec-enumerations :: exit 0
pnpm check:docs-transcript-drift :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:entry-guard :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:issue-citations :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:parse-guard :: exit 0
pnpm check:pnpm-filter-targets :: exit 0
pnpm check:pnpm-flag-spellings :: exit 0
pnpm check:published-readme-links :: exit 0
pnpm check:react-page-adapter-contract :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:release-notes :: exit 0
pnpm check:release-page-status :: exit 0
pnpm check:role-word :: exit 0
pnpm check:scripts-symbol-anchors :: exit 0
pnpm check:skill-identifier-liveness :: exit 0
pnpm check:vendor-version-stamps :: exit 0
pnpm check:watch-hint-literal :: exit 0
```
</details>
Session: https://claude.ai/code/session_017ihL2gLghEqeDKTbDTC7Zd
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 6a4737a commit ed0ab75
5 files changed
Lines changed: 1124 additions & 0 deletions
File tree
- content/docs
- releases/v18
- scripts/docs-audit
0 commit comments