观察类 finding,#5825 退役 `packages/vscode-objectstack` 时发现(PR #5834)。**今天没有任何用户/CI 面受影响**,门禁全绿,故不带 `pm:queue`,交 PM triage 定级。 ## 事实 `pnpm-workspace.yaml` 的 `overrides` 里这两条: ```yaml 'form-data@<4.0.6': '>=4.0.6' 'undici@>=7.23.0 <7.29.0': '^7.29.0' ``` 按各自注释,唯一传递来源都是 `@vscode/vsce`(form-data 直接经它;undici 经 `@vscode/vsce` → `cheerio`)。`@vscode/vsce` 是 `packages/vscode-objectstack` 的 devDependency,随 #5825 退役一并离开依赖树(`pnpm install` 后 -125 个包)。删除后实测: - **`form-data`** —— 从依赖树**彻底消失**,lockfile 零解析条目。选择器匹配不到任何东西。 - **`undici`** —— 仅剩两个副本,`@ai-sdk/provider-utils` 的 **7.29.0** 与 jsdom 的 **8.9.0**,两者都在 `>=7.23.0 <7.29.0` 这个左闭右开区间**之外**。选择器同样匹配不到任何东西。 即两条 pin 现在都是空转声明。`check-override-consistency.mjs` 对它们保持绿 —— 该门禁只校验「override 命名的包若出现在可发布包的 declared range 里,range 必须能解析到 override target」,一条没有消费者的 override 会被直接跳过,所以**没有任何门禁会告诉你它空了**。 ## PR #5834 的处置(以及为什么没顺手删) 保留选择器不动,只在注释里就地记录 `CONSUMER GONE (#5825)` 与保留理由。理由:在一个包退役 PR 里顺手摘掉安全 pin 是**降低安全姿态**,应当是独立决定;而留着的成本是零 —— 若未来某个传递依赖重新引入 form-data 或 7.2x 的 undici,pin 仍会把它按到已修补版本上。同时把 `brace-expansion` 注释里 minimatch 消费者清单中的 `@vscode/vsce` 去掉(`ts-morph`/eslint/`@typescript-eslint`/glob/archiver 仍在,那条 pin 依旧生效)。 ## 待裁决 **这两条空转 pin 保留还是退役?** - **A. 保留(现状)** —— 零成本的纵深防御,未来传递依赖重新引入时自动生效。代价:`overrides` 块里长期躺着两条无消费者的声明,读者需靠注释才知道它们空转。 - **B. 退役** —— `overrides` 只保留真正在生效的条目,块更短更可信。代价:未来重新引入时不再有网,且需要有人盯着 OSV 重新加回。 **倾向 A**,但这是安全姿态问题,值得维护者明确一次而不是靠某个 PR 的顺手判断。若选 A,可考虑另加一个「override 有无消费者」的体检(**报告而非 red**)—— 目前空转是完全不可见的,而不可见的安全声明既可能被误信为在生效,也可能被下一个 agent 顺手删掉。 ## 顺带记录:`undici` 这条仍是 `<FIXED` 形状 `'undici@>=7.23.0 <7.29.0': '^7.29.0'` 的上界正好等于其 target,即 #4961 警告、#5032 亲历过的自失效形状 —— 7.29.0 自己哪天中招,选择器就不再覆盖它。文件里已有 #5032 的完整教训记录,此处仅并列备忘,不属本 finding 的诉求。
Activity
os-zhuang commentedon Aug 6, 2026
发现分诊:
finding→needs-user-decision(域标签domain:devx沿用立单者所打,复核无误:落点pnpm-workspace.yaml+scripts/check-override-consistency.mjs,属域表 devx 行的scripts/(门禁类))。为什么不是三选一里的「持有」或「晋级」,而是转决策箱:发现分诊轮的三选一(晋级 / 关闭 not planned / 持有)适用于判级;本单的阻塞点不是级别不明,而是安全姿态需要维护者明确表态一次——正文自己写着「这是安全姿态问题,值得维护者明确一次而不是靠某个 PR 的顺手判断」。持有会让它在下一轮再被判一次(纯重复);晋级则等于替维护者选了 A 或 B。⇒ 转决策箱是唯一不越权又不空转的去向。
决策卡的最小提问:两条已确认空转的 OSV override(
form-data@<4.0.6、undici@>=7.23.0 <7.29.0)保留还是退役?overrides块里长期躺着两条无消费者的声明。check-override-consistency.mjs只校验「override 命名的包若出现在可发布包的 declared range 里,range 必须能解析到 override target」,没有消费者的 override 会被直接跳过,所以没有任何门禁会告诉你它空了。而一条不可见的安全声明两头都危险:既可能被误信为在生效,也可能被下一个 agent 顺手删掉。⇒ 建议一并批准加一个「override 有无消费者」的体检,报告而非 red(立单者原话)。这一条若获批可拆成独立pm:queue单先落地,与 A/B 的选择正交。判「不打
pm:queue」的理由(与上条一致):今天零用户面、零 CI 面影响,门禁全绿;不是缺陷,不占派发队列。过时前提核验:本单立于 07:30Z(约半小时前),证据取自 PR #5834 的实测(⚠️ 但有一条时序耦合需承接时确认:两条 override 的空转以 #5825(
pnpm install后依赖树 -125 包、lockfile 逐条解析结果),复现路径明确;前提无过时风险。packages/vscode-objectstack退役)确已合入为前件——拍板前请核实 PR #5834 的落地状态,若该退役被回退,本单前提即刻失效。查重(三仓 open issue + PR 各一遍):无重复单。关联而非重复:#5825 / PR #5834(发现路径)、#4961(自失效选择器形状的原始警告)、#5032(亲历该形状的教训记录)。ℹ️ 正文末段「
undici这条上界正好等于 target(<7.29.0→^7.29.0),仍是 #4961 / #5032 的自失效形状」是并列备忘,不属本单诉求——⛔ 承接时不要把它当作本单范围顺手改,若要处理请独立立单。本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
【裁决落地】维护者 2026-08-06 批复全舰队决策箱评估报告(批复「同意」),本单裁定:
裁 A——form-data / undici 两条 OSV override 保留(零成本纵深防御,退役失网无回报);配套批准正交体检立项:「override 有无消费者」体检(报告而非 red),由 devx 座位拆单先行,消除门禁对空转 override 的不可见。undici 上界自失效形状按正文备忘归入体检范围。
本单裁决即闭环:体检拆单后本单可关(completed)。
流转:摘
needs-user-decision→pm:queue,归 devx 车道(拆体检单 + 关本单)。评估与落地会话:
session_01N3uGFF8teXbpgtbEJ1aYXuGenerated by Claude Code
hotlong commentedon Aug 6, 2026
按 10:44Z 裁决闭环(devx 车道,会话
session_01BDmDsu2575gDxeMCxXhDE3):裁 A 保留两条 override(本单裁决即闭环);配套体检已拆单 #6046(「override 有无消费者」报告式体检 + undici 自失效形状纳入范围,已入 devx 队列)。本单关闭(completed)。Generated by Claude Code