Blocked-by: #3711
在 #3697 的门禁落地过程中,对 38 个 packages/*/README.md 做「README 版本宣称 vs 本包 package.json」逐条核对时量到的。
这一类的特点是有可核实的锚(同包的 package.json),因此和 #3708(散文里没有锚的陈旧宣称)不同:它们可以被机械钉住。全 11 处 peer 重述里 9 处与清单逐字一致,下面这 2 处不一致。
事实
1. packages/plugin-chatbot/README.md:58 — 差一个大版本
using `@ai-sdk/react` v3 (Vercel UI Message Stream protocol) for streaming,
packages/plugin-chatbot/package.json → "@ai-sdk/react": "^4.0.47"。
全语料里唯一一处第三方包的版本宣称,也是唯一一处指名协议来源的宣称 —— 读者会据此去查 v3 的文档。
2. packages/layout/README.md:20 — 宣称比清单更宽
**Peer Dependencies:**
- `react` >= 18.0.0
- `react-dom` >= 18.0.0
packages/layout/package.json → "react": "^18.0.0 || ^19.0.0"。
>= 18.0.0 承诺 React 20 也行,清单的 ^18 || ^19 会拒绝。方向是过度承诺:读者按 README 装 React 20 会拿到 peer 冲突。其余 9 个包的 README 都写 ^18.0.0 || ^19.0.0,与各自清单逐字一致;react-runtime 写 react >= 18 而它的清单恰好就是 ">=18",是对的。
复核:
$ node -e "for (const p of ['layout','react-runtime','plugin-report','auth','components'])
console.log(p, require('./packages/'+p+'/package.json').peerDependencies.react)"
layout ^18.0.0 || ^19.0.0
react-runtime >=18
plugin-report ^18.0.0
auth ^18.0.0 || ^19.0.0
components ^18.0.0 || ^19.0.0
packages/plugin-report/README.md:24 也与清单不符(README 写 ^18.0.0 || ^19.0.0,清单只有 ^18.0.0),但那处的正确修法是改清单,已由 #3690 覆盖 —— 修好 #3690,README 自动变正确。故不在本单重复,已在 #3690 下追评说明。本单的两处反过来:清单是对的,README 是错的。
处置倾向(不替分诊拍板)
两条路,取舍留给分诊:
倾向 B:这 11 行是读者真正会用的信息,且 9/11 今天就是对的,钉住的成本低于删掉的信息损失;#3697 的门禁已经把这 11 处枚举好了,B 只是把「记录」升级成「断言」。但这属于契约取舍,不自行拍板。
门禁现状
#3697 的 PR 已把这 2 处以 kind: 'stale'、其余 9 处以 kind: 'restatement' 记进 scripts/__tests__/doc-version-claims.test.ts。本单修好后须同步更新对应条目,否则 ratchet 测试变红。
已搜重
peerDependencies README react plugin-report(命中 #3690,边界已在上面写明)、版本 文档 失真 drift docs version(仅命中 #3697)两组关键字搜过开放 issue。
Generated by Claude Code
Generated by Claude Code
Blocked-by: #3711
在 #3697 的门禁落地过程中,对 38 个
packages/*/README.md做「README 版本宣称 vs 本包 package.json」逐条核对时量到的。这一类的特点是有可核实的锚(同包的
package.json),因此和 #3708(散文里没有锚的陈旧宣称)不同:它们可以被机械钉住。全 11 处 peer 重述里 9 处与清单逐字一致,下面这 2 处不一致。事实
1.
packages/plugin-chatbot/README.md:58— 差一个大版本packages/plugin-chatbot/package.json→"@ai-sdk/react": "^4.0.47"。全语料里唯一一处第三方包的版本宣称,也是唯一一处指名协议来源的宣称 —— 读者会据此去查 v3 的文档。
2.
packages/layout/README.md:20— 宣称比清单更宽packages/layout/package.json→"react": "^18.0.0 || ^19.0.0"。>= 18.0.0承诺 React 20 也行,清单的^18 || ^19会拒绝。方向是过度承诺:读者按 README 装 React 20 会拿到 peer 冲突。其余 9 个包的 README 都写^18.0.0 || ^19.0.0,与各自清单逐字一致;react-runtime写react >= 18而它的清单恰好就是">=18",是对的。复核:
与 #3690 的边界
packages/plugin-report/README.md:24也与清单不符(README 写^18.0.0 || ^19.0.0,清单只有^18.0.0),但那处的正确修法是改清单,已由 #3690 覆盖 —— 修好 #3690,README 自动变正确。故不在本单重复,已在 #3690 下追评说明。本单的两处反过来:清单是对的,README 是错的。处置倾向(不替分诊拍板)
两条路,取舍留给分诊:
@objectstack/spec^3.3.0,实际全仓锁 ^17.0.0-rc.5;部分包还列了自己并不依赖的@objectstack/client#3645 / PR docs(packages): 退役 36 个包 README 里已死的 release-metadata §Compatibility 生成块 #3688 仓规改指package.json(「真相已在清单里,由包管理器安装期强制」)。长期最稳,但 README 的 Installation 段落失去「装什么版本」的即答。peerDependencies逐字一致。这一类有锚,所以 B 在这里是可行的(content/docs 三处版本宣称失真:architecture-overview 的@objectstack/spec ^4.0.x(差 13 个大版本)与 architecture.md 的 TypeScript 5.0+ #3708 那一族没有锚,只有 A 可选)。代价是新增一个要维护的对照面。倾向 B:这 11 行是读者真正会用的信息,且 9/11 今天就是对的,钉住的成本低于删掉的信息损失;#3697 的门禁已经把这 11 处枚举好了,B 只是把「记录」升级成「断言」。但这属于契约取舍,不自行拍板。
门禁现状
#3697 的 PR 已把这 2 处以
kind: 'stale'、其余 9 处以kind: 'restatement'记进scripts/__tests__/doc-version-claims.test.ts。本单修好后须同步更新对应条目,否则 ratchet 测试变红。已搜重
peerDependencies README react plugin-report(命中 #3690,边界已在上面写明)、版本 文档 失真 drift docs version(仅命中 #3697)两组关键字搜过开放 issue。Generated by Claude Code
Generated by Claude Code