Commit 0664488
feat(scripts): check-override-consistency 增加 override 消费者体检与自失效上界报告 (#6093)
按 #5835 裁 A 的配套正交项(#6046):override 只在「可发布包 declared range 里
出现过」时才被校验,没有消费者的 override 会被直接跳过 —— 于是一条不可见的安全
声明两头都危险,既可能被误信为在生效,也可能被下一个 agent 顺手删掉。
新增两份体检,都是 report,⛔ 一律不改退出码:
1. 消费者普查:从本地 pnpm-lock.yaml 的 importers + snapshots 统计每条 override
的消费者数,零消费者点名报告,并写明「#5835 裁 A 决定保留」的姿态指引。
普查刻意做在包名一级:pnpm-lock.yaml 记的是 override 生效之后的解析结果,
一条正在干活的 override 早已把命中项抬到 target 之上、抬出了 selector,
实测「落在 selector 内的解析数」对 28 条 override 全为 0(包括在干活的),
根本分不出「空转」和「正在生效」。包名的有无是 lockfile 唯一能诚实给出的信号。
2. 自失效上界:selector 的排他上界 `<V` 落在 target 下限之上或与之相等时点名 ——
target 所在版本线整条不在 scope 内,target 自身出公告要挪时 pin 会当场失配,
即 #4961 / #5032 里 `undici@>=7.23.0 <7.28.0` 的形状。
`--self-test` 17 条断言双向立住(有消费者不报 / 零消费者报出 / 自失效形状报出 /
上界高于 target 版本线不报 / lockfile 不可解析时降级不崩),并把既有的 declared
range 主规则一并补上双向覆盖。self-test 接进新增的 `check:override-consistency`
命令链,validate-deps 工作流改调该命令链而非裸脚本 —— 不接线即 phantom check。
Claude-Session: https://claude.ai/code/session_01BDmDsu2575gDxeMCxXhDE3
Co-authored-by: Claude <noreply@anthropic.com>1 parent f7f54a9 commit 0664488
3 files changed
Lines changed: 421 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
75 | 83 | | |
76 | | - | |
77 | | - | |
| 84 | + | |
| 85 | + | |
78 | 86 | | |
79 | 87 | | |
80 | 88 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
58 | 59 | | |
59 | 60 | | |
60 | 61 | | |
| |||
0 commit comments