11 个包 README 的 Peer Dependencies 区块共 28 条 backtick 陈述,#3717 的断言只
覆盖 ledger 登记的 12 条 `react` 行;无人比对的另外 16 条里有 9 条与本包清单不符。
## 文档侧(9 行)
`packages/components/README.md` 的 `tailwindcss` 按 #3690 的方法先测真相侧,再
决定改哪一边 —— 实测结论是清单对、README 错,故收窄 README:
- `postcss.config.js` 加载 `@tailwindcss/postcss`,该插件没有 v3 对应物;
- `src/index.css` 首行 `@import 'tailwindcss'`,并使用 `@theme` / `@custom-variant`
两个 v4 专属 at-rule;整个包没有任何 `tailwind.config.js`;
- devDependencies 钉 `tailwindcss ^4.3.3`,store 里唯一安装版本是 4.3.3;
- 用装好的 tailwind 4.3.3 实跑 postcss 管线:编译通过,产出 165326 字节、utilities
正常生成。
即 3.x 不是"未测",而是结构上跑不起来,`^3.0.0` 会让照 README 装 tailwind 3 的
读者拿到一个装不上的 peer。README 改为 `^4.2.1`(清单原文)。
auth / collaboration / i18n / mobile / permissions 五处声明的 `react-dom` peer:
逐包复核确认 `src` 零 react-dom 引用、dependencies 与 devDependencies 均无
react-dom、清单 peerDependencies 只有 `react` —— README 在让读者去装一个这些包
不需要的东西,删除。
plugin-ai / plugin-designer / plugin-report 三处的 `@object-ui/core`:这三个包
确实用 core,但它是普通 `dependencies`(`workspace:*`)而非 peer,随包解析,读者
不必自己安装;卡片记的"src 零引用"对这三行并不成立,成立的是"清单未声明为 peer"。
按后者删除。
## 门禁侧
断言的输入集从「ledger 有条目的行」加宽为「ledger 解析出的陈述 ∪ 每个
Peer Dependencies 区块的每一条 bullet」,按行去重,一处失真只有一个报告者。
区块读取刻意不复用 `parsePeerStatement`:后者对 `- \`@object-ui/core\`` 这种无
版本区间的行返回 null,而区块内「有包名无区间」本身就是要报的结构缺陷 —— 上面
三行正是这么藏住的。
反向(清单声明的 peer 必须出现在区块里)也加了,但**限定在已经写了区块的包**。
实测:39 个包里 11 个有区块,没有区块的 28 个里 20 个声明了 peer;全仓版本会为了
让测试变绿而逼出 20 个新区块,那是给测试而不是给读者的开销。限定版找到一处真缺口:
plugin-designer 清单声明 `react-router-dom` peer,区块从未提及,读者照 README 装完
仍会拿到 unmet-peer 警告 —— 一并补上该行。
`TOOLCHAIN` 词表补上小写包名拼写 `tailwindcss`:`\bTailwind\b` 在 `tailwindcss`
上没有词边界(后面接着 `css`),该行自写下之日起就没被扫到过。实测在 221 文件语料
上只新增匹配这一行,已随之登记为 `restatement`。注意这半是给**区块之外**的
tailwindcss 版本字面量兜底 —— 区块之内的那一行,加宽后的断言已经覆盖。
Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Co-authored-by: Claude <noreply@anthropic.com>
Fixes #3750
11 个包 README 的 Peer Dependencies 区块共 28 条 backtick 陈述,#3717 的断言只覆盖 ledger 登记的 12 条
react行;无人比对的另外 16 条里 9 条与本包清单不符。本 PR 两半一起落:修 9 行,并把断言从 ledger 驱动加宽到区块每一行。逐行处置(全部在
origin/main=d229dfa7b复核过,非沿用卡片的 8ad6070)packages/componentstailwindcss^3.0.0^4.2.1^4.2.1packages/authreact-dom^18.0.0 || ^19.0.0packages/collaborationpackages/i18npackages/mobilepackages/permissionspackages/plugin-ai@object-ui/core(无区间)packages/plugin-designerpackages/plugin-reportpackages/plugin-designerreact-router-dom^6.0.0 || ^7.0.0tailwindcss:先测真相侧,结论是清单对
按 #3690 的方法,不预判哪边错。实测
@object-ui/components是 Tailwind 4 专属:postcss.config.js加载@tailwindcss/postcss—— 该插件没有 v3 对应物(v3 的 postcss 插件就是tailwindcss本身);src/index.css首行@import 'tailwindcss',并使用@theme、@custom-variant两个 v4 专属 at-rule;tailwind.config.js(v4 的 CSS-first 配置);tailwindcss ^4.3.3,store 里唯一安装版本是4.3.3;TAILWIND 4 COMPILE OK — bytes: 165326,utilities 正常生成。即 3.x 不是「未测」而是结构上跑不起来。照 README 装 tailwind 3 的读者会拿到一个装不上的 peer —— 这是本卡里用户今天就会踩的那一行。故收窄 README,不动清单。
依据修正:
@object-ui/core三行不是「src 零引用」卡片与派发都把这三行归到「src 零引用 + 清单未声明」。前半对不上:三个包都确实 import
@object-ui/core(plugin-ai 1 处、plugin-designer 3 处、plugin-report 8 处)。成立的是后半 —— 它是普通dependencies(workspace:*),随包解析,读者不必自己安装;把它列进 Peer Dependencies 是在让读者去装一个已经随包来的东西。按「清单未声明为 peer」删除,结论不变但依据据实更正。5 处
react-dom的零引用主张则逐包复核成立:src零 react-dom 引用,dependencies/devDependencies也都没有,清单peerDependencies只有react。门禁侧
正向加宽:断言输入集从「ledger 有条目的行」改为「ledger 解析出的陈述 ∪ 每个 Peer Dependencies 区块的每一条 bullet」,按行去重(12 条
react行两条路都能到,去重保证一处失真只有一个报告者)。比对数从 12 升到 21,vacuity floor 相应从 10 提到 18,并新增一条「必须真的找到区块」的下限,防止 union 靠 ledger 条目独自撑过 floor。区块读取刻意不复用
parsePeerStatement:后者对- @object-ui/core这种无版本区间的行返回 null(这是它的正确行为),而区块内「有包名、无区间」本身就是要报的结构缺陷 —— 上面三行正是这么藏住的。区块 walker 因此把区间当作可选,缺区间交给断言判。反向(清单声明的 peer 必须出现在区块里)也加了,但限定在已经写了区块的包,并把取舍写进注释:实测 39 个包里 11 个有区块,没有区块的 28 个里 20 个声明了 peer;全仓版本会为了让测试变绿而逼出 20 个新区块,那是给测试而不是给读者的开销。限定版本的正当性是 README 自己许下的承诺 —— 写了区块就是宣称「这就是全部 peer」。它在正向已经干净的树上找到一处真缺口:
plugin-designer清单声明react-router-dompeer 而区块从未提及,读者照 README 装完仍会拿到 unmet-peer 警告,故补上该行。TOOLCHAIN 词界:补上小写包名拼写
tailwindcss。\bTailwind\b在tailwindcss上没有词边界(后面紧接css),该行自写下之日起从未被扫到,也就从未进 ledger。实测在 221 文件语料上只新增匹配这一行,已随之登记为restatement。反向验证(先预判方向,再跑)
六个扰动,方向全部与预判一致;每次跑完 revert,末次全绿:
tailwindcss ^3.0.0react改^19.0.0(#3690 形状)react-dom行@object-ui/core行react-router-dom行C/D 是加宽本身的证明:这两类在棘轮里恒绿(
react-dom不匹配扫描正则,@object-ui/core根本没有版本字面量),只有区块路径能看见。实测报文:F 是派发问题 4 的诚实答案:加宽之后,
tailwindcss那一行已由区块断言覆盖,与词表无关 —— 回退词表它照样绿。词表修复剩下的价值是区块之外的 tailwindcss 版本字面量(语料里今天没有,但正是这种休眠死角会回来);它现在由棘轮下行钉住,即 KNOWN_CLAIMS 里那条^4.2.1条目不是摆设。验证
Changeset:presence 门禁明确判定不欠(它按
src/取面,README 与清单都不在其中,本 PR 也没动任何package.json)。仓库先例一致:近 60 次涉及packages/*/README.md的提交里,6 次是纯 README 提交,全部 0 changeset,含本门禁自己注释引用的 PR #3688(36 个 README 的清理)。越界发现(已另立,未在本 PR 修)
见下方评论。
Generated by Claude Code