docs(cli): 兼容表两行失真 —— Node 行改指根 engines,删掉 CLI 并不依赖的 spec 兼容行 - #3698
Merged
Conversation
…mpatibility row The "Package information" table on the CLI docs page carried two claims that no longer match the tree: - `Node | >= 18` contradicted the only Node floor the repo states (root package.json `engines.node`); no package under packages/* declares `engines.node` at all. - `Compatibility | @objectstack/spec ^3.3.0` was doubly wrong: no package in the repo pins ^3.3.0 (all 29 declarations resolve to one current range in the lockfile), and packages/cli declares no @objectstack/spec dependency in dependencies/devDependencies/peerDependencies, with zero @objectstack/* imports in its source. Per the same repo rule applied in #3645 / PR #3688, version numbers are not rewritten into prose -- that re-arms the same drift machine for the next major. The Node row now points at the file that states the requirement; the spec row is removed as a ghost row, matching how PR #3688 handled the @objectstack/client rows on packages that did not depend on it. The Name / Bin / License rows were re-verified against packages/cli/package.json and are correct, so the table stays. Fixes #3689 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
yinlianghui
marked this pull request as ready for review
August 7, 2026 21:58
This was referenced Aug 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #3689
单文件、净 -1 行:
content/docs/utilities/cli.mdx的 "Package information" 表。前提复核:成立,且 Compatibility 行比 issue 正文重一档
issue 指的两行今天仍在
origin/main(切点be9cd38ac),行号也没漂 —— 表正好是 277–283 行。全表五行逐行核实(不止 issue 点名的两行):@object-ui/clipackages/cli/package.json→"name": "@object-ui/cli"objectui"bin": { "objectui": "./dist/cli.js" }"license": "MIT"package.json→{"node":">=22","pnpm":">=9"}@objectstack/spec^3.3.0^17.0.0-rc.5;packages/*/package.json里^3.3.0命中 0Node 行的补充测量:39 个
packages/*/package.json中带engines的只有 1 个(vscode-extension的{"vscode":"^1.85.0"},与 Node 无关),engines.node为 0 个。即根engines是全仓唯一的 Node 下限声明。Compatibility 行的补充测量,是本单相对 issue 正文的新事实:
lockfile 侧交叉验证:
pnpm-lock.yaml里 30 个 importer 的specifier: ^17.0.0-rc.5/version: 17.0.0-rc.5(...)完全一致,零个^3.3.0。所以 283 行不只是版本陈旧,它在这一页上是幽灵行:
@object-ui/cli与@objectstack/spec没有直接依赖关系(只经由@object-ui/{components,react,types}三个 workspace 依赖间接触及)。这正是 PR #3688 里@objectstack/client那一类 —— 36 个 README 印了它,只有 1 个包真的依赖它。处置:两行不同处置,依据实测而非统一口径
按 #3645 / PR #3688 的仓规「版本号入散文即漂移保证」,一律不改写成
^17.0.0-rc.5/>=22—— 重写等于把同一台漂移机器重新上膛,下个 major 再错一遍。但两行的真相状况不同,处置因此不同:engines)。表还剩三行真行,结构在,挂得住一个指针;删掉反而让读者失去一个我们确实知道答案的问题。packages/cli/package.json里没有这个依赖字段,指过去是指向空处。照 PR docs(packages): 退役 36 个包 README 里已死的 release-metadata §Compatibility 生成块 #3688 处理幽灵行的口径:删,不改写、不改指成「经由@object-ui/*间接依赖」(那会新增一条结构性声明,又是一个要维护的漂移面)。表因此从 5 行变 4 行,每一行都是
packages/cli/package.json里可逐字核对的事实。前后对照
改前:
改后:
措辞遵 #3656 规矩(不复植失真特征词),先量后改:
grep -c '\^3\.3\.0' content/docs/utilities/cli.mdxgrep -c '≥ 18' content/docs/utilities/cli.mdxgrep -c 'rc\.5|>=22|>= 22|17\.0\.0' content/docs/utilities/cli.mdx(重新上膛检查)反向验证:先定方向,再跑
新加的那条链接是
blob/main/自仓 URL,正好落在check-doc-links.mjs§2 的可判定形状里(URL 里的那段路径必须存在于工作树)。预测:把路径改成不存在的,门禁必须变红并点名这一行 —— 只有红了,才证明修后的绿是真覆盖,而不是加了一条门禁根本不看的链接。还原后复跑
Links are valid across 7 scan roots.exit=0。链接形状本身在仓内已有先例(content/docs/utilities/runner.mdx:164同款)。门禁
node scripts/check-doc-links.mjsLinks are valid across 7 scan roots.exit=0node scripts/check-control-bytes.mjsOK (scanned 3682 tracked text file(s); skipped 85 binary)exit=0[\x00-\x08\x0b\x0c\x0e-\x1f]本 PR 在 CI 上的预期:
ci.yml与lint.yml的paths-ignore都含content/**,预期显示 skipping(按 AGENTS.md 那是跳过、不是失败);docs-links.yml与control-bytes.yml无路径过滤,会真的跑 —— 这两条就是上表本地跑过的那两条。无单测可加:仓内没有任何测试断言
content/docs的正文内容(packages/cli/src/__tests__/cli-bin.test.ts:6只在注释里提了本文件路径,不读它)。该面的强制力就是check-doc-links,所以我用反向验证代替「新增测试」这一栏,据实记录,不编造。changeset:不加(写明判断)
content/docs/**只被apps/site/source.config.ts:6消费,不在任何包的files里(grep -rln '"content' packages/*/package.json零命中)—— 它不是发布物,改它不产生任何用户可见的包变更。与 #3633 / #3646 / #3651 的站点文档先例一致。围栏
content/docs/guide/release-notes.md一行未动。除 issue 已点名的 :41(Bump every ... to ^3.3.0,历史升级动作叙述)外,我另量到 :58 的| Node.js | ≥ 18 |—— 它在## v3.3.0 — 2026-04-17这个版本标题下的### Compatibility Matrix里,是那一次发布当时的兼容矩阵,与 :41 同性质,同样不改。一并记下,免得后来者误伤。content/docs里再无同款失真。ci-cd-pipeline.md:82的 "Node 22.x" 我核过,与 14 处 workflownode-version: '22.x'一致,是真的。content/docs/utilities/下另外 4 个 utilities 页面均无 "Package information" 表,无需同步。packages/**、任何package.json均未触碰。暂存区文件数 1。越界发现
finding,不入pm:queue,未指派):文档散文里的版本宣称无门禁可守 —— 本 PR 与 PR docs(packages): 退役 36 个包 README 里已死的 release-metadata §Compatibility 生成块 #3688 把这一族清到零,但没有任何门禁守得住这个零。与 观察记录:release-metadata 发布期生成器已死(两仓零引用),PR #3688 删掉最后痕迹后该机制在全仓归零 —— 若重建须取真值而非入散文 #3692 相邻但不同:观察记录:release-metadata 发布期生成器已死(两仓零引用),PR #3688 删掉最后痕迹后该机制在全仓归零 —— 若重建须取真值而非入散文 #3692 记的是「生成器已死、若重建须取真值」(约束一个不存在的生成器),观察记录:文档散文里的版本宣称无门禁可守 —— #3688 + #3689 把它清到零之后,没有任何东西阻止下一个作者写回去 #3697 记的是「今天没有任何东西阻止下一次手写把版本号重新写进文档散文」(约束日常编辑)。观察记录:文档散文里的版本宣称无门禁可守 —— #3688 + #3689 把它清到零之后,没有任何东西阻止下一个作者写回去 #3697 里也写明了它不是一行 grep 就能做的原因:门禁必须放过release-notes.md那种版本标题下的历史叙述。🤖 Generated with Claude Code
https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Generated by Claude Code