Skip to content

Commit ed0ab75

Browse files
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

0 commit comments

Comments
 (0)