实施 #3717 (把 ledger 的 restatement 从记账升级成断言)时全量普查 packages/NAME/README.md 的 Peer Dependencies 区块得到的越界发现,据实另立。#3717 的文件面只有 scripts/__tests__/doc-version-claims.test.ts + 只读清单/README,下面这些既要改文档/清单、又要加宽门禁,两头都在界外。
事实(普查于 origin/main = 8ad6070 )
28 行「backtick 包名 + 版本区间」的 peer 陈述,只有 12 行 是 ledger 登记的 react 行(#3717 的断言正好覆盖这 12 行)。剩下 16 行无人比对,其中 9 行与本包清单不符 :
README
行
声明
清单 peerDependencies
形状
packages/components/README.md
41
tailwindcss ^3.0.0
^4.2.1
版本失真
packages/auth/README.md
24
react-dom ^18.0.0 || ^19.0.0
未声明
多报 peer
packages/collaboration/README.md
23
同上
未声明
多报 peer
packages/i18n/README.md
24
同上
未声明
多报 peer
packages/mobile/README.md
24
同上
未声明
多报 peer
packages/permissions/README.md
23
同上
未声明
多报 peer
packages/plugin-ai/README.md
22
@object-ui/core(无版本)
未声明
多报 peer
packages/plugin-designer/README.md
28
同上
未声明
多报 peer
packages/plugin-report/README.md
26
同上
未声明
多报 peer
第一行是用户今天就会踩 的:照 README 装 tailwindcss 3 的人,拿到的包要求 ^4.2.1。这正是 #3690 的形状(清单动了、README 没跟),而且这次门禁两道都看不见。
那 5 个 react-dom 多报也不是笔误级:auth / collaboration / i18n / mobile / permissions 的 src 里没有任何 react-dom 引用 ,清单也没声明——README 让读者去装一个这些包不需要的 peer。
为什么两道门禁都漏
棘轮(doc-version-claims.test.ts 的 KNOWN_CLAIMS)漏 tailwindcss :TOOLCHAIN 里是 Tailwind CSS|Tailwind,而 \bTailwind\b 在 tailwindcss 上没有词边界(后面接着 css),所以 - \tailwindcss` ^3.0.0 这行从来没被匹配、也就从来没进 ledger。react-dom 行同理不匹配(\bReact\b命中后 SEP 消化不掉-dom`,VERSION 落空)。
restatement 类只是记账、没有断言:12 条 README 版本重述与自家 package.json 的逐字一致靠人复核(#3710 分诊裁的 B 只落地了一半) #3717 的断言是 ledger 驱动的 :它遍历 restatement 条目,条目没有的行自然不判。分诊已预裁「一条规则只判一种事实」,加宽区块超范围,故按「越界即停」记于此。
修法方向(不预判,留给分诊)
两半可以独立推进:
Blocked-by: #3717 (仅门禁加宽那半;文档/清单侧不依赖它)
已搜重
tailwindcss README peer、peerDependencies README 清单、tailwind version drift docs、react-dom Peer Dependencies README 四组关键字搜过本仓开放 issue,除 #3717 与 #3741 (react-runtime 清单侧 >=18 无上界,同族但另一条)外无命中。
实施 #3717(把 ledger 的
restatement从记账升级成断言)时全量普查packages/NAME/README.md的 Peer Dependencies 区块得到的越界发现,据实另立。#3717 的文件面只有scripts/__tests__/doc-version-claims.test.ts+ 只读清单/README,下面这些既要改文档/清单、又要加宽门禁,两头都在界外。事实(普查于
origin/main= 8ad6070)28 行「backtick 包名 + 版本区间」的 peer 陈述,只有 12 行是 ledger 登记的
react行(#3717 的断言正好覆盖这 12 行)。剩下 16 行无人比对,其中 9 行与本包清单不符:peerDependenciespackages/components/README.mdtailwindcss^3.0.0^4.2.1packages/auth/README.mdreact-dom^18.0.0 || ^19.0.0packages/collaboration/README.mdpackages/i18n/README.mdpackages/mobile/README.mdpackages/permissions/README.mdpackages/plugin-ai/README.md@object-ui/core(无版本)packages/plugin-designer/README.mdpackages/plugin-report/README.md第一行是用户今天就会踩的:照 README 装 tailwindcss 3 的人,拿到的包要求
^4.2.1。这正是 #3690 的形状(清单动了、README 没跟),而且这次门禁两道都看不见。那 5 个
react-dom多报也不是笔误级:auth/collaboration/i18n/mobile/permissions的src里没有任何 react-dom 引用,清单也没声明——README 让读者去装一个这些包不需要的 peer。为什么两道门禁都漏
doc-version-claims.test.ts的 KNOWN_CLAIMS)漏tailwindcss:TOOLCHAIN里是Tailwind CSS|Tailwind,而\bTailwind\b在tailwindcss上没有词边界(后面接着css),所以- \tailwindcss` ^3.0.0这行从来没被匹配、也就从来没进 ledger。react-dom行同理不匹配(\bReact\b命中后 SEP 消化不掉-dom`,VERSION 落空)。restatement类只是记账、没有断言:12 条 README 版本重述与自家 package.json 的逐字一致靠人复核(#3710 分诊裁的 B 只落地了一半) #3717 的断言是 ledger 驱动的:它遍历restatement条目,条目没有的行自然不判。分诊已预裁「一条规则只判一种事实」,加宽区块超范围,故按「越界即停」记于此。修法方向(不预判,留给分诊)
两半可以独立推进:
components的 tailwindcss 行按清单收窄到^4.2.1(或反向——若 4.x 只是当前实测值而 3.x 仍受支持,那修的是清单);5 处react-dom与 3 处@object-ui/core要么从 README 的 peer 区块删掉,要么补进清单的peerDependencies——需要先定「这些包到底要不要 react-dom peer」。注意@object-ui/core那三处没有版本字面量,删/补是结构问题不是版本问题。restatement类只是记账、没有断言:12 条 README 版本重述与自家 package.json 的逐字一致靠人复核(#3710 分诊裁的 B 只落地了一半) #3717 落地的机器上):把断言从「ledger 有条目的行」加宽到「Peer Dependencies 区块的每一行」,并且双向——区块里的每一行必须在peerDependencies里逐字对得上;可选反向:清单声明的每个 peer 都得在区块里出现。restatement类只是记账、没有断言:12 条 README 版本重述与自家 package.json 的逐字一致靠人复核(#3710 分诊裁的 B 只落地了一半) #3717 已经落了parsePeerStatement/sameRange/ 清单读取三件套,加宽是复用而不是重写。Blocked-by: #3717(仅门禁加宽那半;文档/清单侧不依赖它)
已搜重
tailwindcss README peer、peerDependencies README 清单、tailwind version drift docs、react-dom Peer Dependencies README四组关键字搜过本仓开放 issue,除 #3717 与 #3741(react-runtime 清单侧>=18无上界,同族但另一条)外无命中。