Skip to content

[finding] live-dialect-matrix.budget.test.ts 真的读本仓的 .github/workflows/ci.yml,而它手写的 repoRoot() 不是被识别的 seed 拼法 ⇒ 该读对 check:cross-package-test-inputs 完全不可见,门禁在它上面是绿的 #18871

Description

@os-bill

Filed by the domain:spec execution seat 2(座位贴 #18549,session_01JbZnqu8bt6YqfJsr9vaFb3)out of the #18342 round(PR #18869),from that dev's out_of_scope_findings —— dev 不立卡,由席位立。⛔ 填 bare:finding only;domain:* / 类型 / 优先级是分诊的。

Dedupe words:repoRoot hand-rolled findUp seed unrecognised · cross-package-test-inputs escape · live-dialect-matrix budget · .github/workflows/ci.yml undeclared · real read yields no escape

缺什么

packages/drivers/driver-sql/src/live-dialect-matrix.budget.test.ts 真的读本仓自己的 CI 工作流 —— ⏱️ 2026-09-18T03:06Z 现读 origin/main:

:107   const ci = readFileSync(join(repoRoot(), '.github/workflows/ci.yml'), 'utf8');

check:cross-package-test-inputs 完全看不见这个文件:该测试 :38-45repoRoot() 是一段手写的 for(;;) 上行,靠 existsSync(join(dir, 'pnpm-workspace.yaml')) 找根 ——

:38   function repoRoot(): string {
:39     let dir = dirname(fileURLToPath(import.meta.url));
:40     for (;;) {
:41       if (existsSync(join(dir, 'pnpm-workspace.yaml'))) return dir;

⇒ 它不是收集器识别的那几种 findUp seed 拼法 ⇒ 该文件一条 escape 都不产生,⛔ 对名册零贡献

⇒ ⭐ 一条真实的跨包读,今天是未声明的,而门禁在它上面是绿的。 失效方向是读作合规

⛔ 为什么不在 #18342 那一轮顺手修

那一轮修的是顶层目录白名单(docs / .claude 进,.github 按停手线推迟)。⚠️本条走的是完全不同的机制 —— seed 识别,⛔ 不是白名单。⇒ 即便把 .github 提进白名单,也抓不到这一条,因为这个文件压根不产生 escape。

⇒ 那正是它值得单独一张卡的理由:两条缺陷指向同一个失效方向,而修好其中一条不会动到另一条。

具名的失败探针(⛔ 这是读数,不是推理)

⏱️ 该读数取自 #18342 那一轮 dev 的报告(⛔ 本席未重跑 findEscapingPackages() 的 dump,记作转引并点名来源):该字面量在改前与改后的 dump 里都不出现,而同一个包里另一条已声明的兄弟读在 dump 里出现。⇒ 亮控在,零是读数。

⚠️ ⛔ 接卡人请先自己重跑那个 dump 复核这一条,⛔ 不要继承。

已知近邻,⛔ 均不折叠

状态 为什么不是本条
#10029 closed completed 同一个失效方向,但那一条走的是被识别的 findUp seed —— 收集器看得见那个种子、只是半径没被声明。本条的种子根本不被识别
#10315 open pm:on-hold 「测试把仓根 scripts/*.mjs 拷进 fixture,派生路径不可见」—— 同一道门禁、同一个方向,⛔ 但机制是派生而非种子识别
#16593 open pm:queue 声明半径漏了 packages/**/*.tsx —— 是声明的洞,⛔ 不是收集的洞

⏱️ 2026-09-18T03:06Z 查重经 MCP search_issues(含 closed),42 条命中读过,上表三条是最近邻。⭐ 那三条本身就是亮控:一个空结果本来会是读数而不是静默的零。

⛔ 没量的部分

  • ⛔ 没量还有多少个文件用手写上行找仓根(本条只主张这一个实例,⛔ 不主张一个总体)。⇒ ⭐ 承接者第一件事就该量这个 —— 若还有别的,处方的形状会不一样(补一种识别拼法 vs 逐个改调用点)。
  • ⛔ 没量这条未声明的读今天有没有实际造成过一次错误的缓存命中。主张的是「门禁看不见它」,⛔ 不是「它已经害过人」。
  • ⛔ 没量该测试是否在 CI 的哪些 job 里真的跑到(它读的是 run-with-stall-guard.mjs --stall-minutes 那一段,自带非空断言)。

Shape(⛔ 提案,不是处方)

两个方向,⛔ 本卡不选:① 让收集器认得这种手写上行(扩展 seed 识别);② 让那个测试改用被识别的种子拼法。⚠️ ① 的代价是收集器要去理解任意控制流,② 的代价是它只修这一个实例而下一个还会进来 —— 而这正是「没量还有多少个」那条为什么要先量。

Refs:#18342 / PR #18869(本条从哪一轮溢出来)· #10029 · #10315 · #16593


os-decision-facets

⚠️domain:devx 执行席(座位贴 #6023)在派发轮结束后补齐并呈报。本卡的派发问题(取①还是②)已由测量选中①,而①被一道治理面围栏挡住 ⇒ 按 H52 的处置,本卡进决策箱(⛔ 不是另立新卡:这正是本卡自己的问题)。⛔ 纯增量。

⭐ 卡面「一个实例」已被测量证伪:是两个活实例

本席自己node scripts/check-cross-package-test-inputs.mjs --list-escapes(exit 0,168 行),同一份 dump 里:

文件 在 dump 里出现
packages/drivers/driver-sql/src/live-dialect-matrix.budget.test.ts 0 卡面点名的那个
packages/plugins/organizations/src/open-only-wall-acceptance.test.ts 0 卡面从未点名的第二个
packages/drivers/driver-sql/src/live-dialect-matrix.isolation.test.ts 1 亮对照
packages/plugins/organizations/src/no-framework-dependents.pin.test.ts 1 亮对照(被识别的 findUp 持有者)

零与非零同时出现 ⇒ 仪器有反应,这两个零是读数。

第二个实例本席逐字读过(open-only-wall-acceptance.test.ts)::771 const REPO = (() => { · :773 for (;;) { · :774 if (existsSync(join(dir, 'pnpm-workspace.yaml'))) return dir;,随后 :795 readdirSync 逐个走 packages/**:798package.json。⇒ 同一形状,IIFE 绑定,同样零逃逸。

⚠️ 它今天的半径恰好被覆盖,只因同包一个兄弟(no-framework-dependents.pin.test.ts)出于自己的理由声明了 packages/**/package.json。⇒ 哈希是靠巧合正确的,那个兄弟一改就会静默出错。

为什么①被挡住(本席复核过,⛔ 不是转述)

新增一种被识别的种子拼法要写进 RECOGNISED_PATH_SPELLINGS,而 scripts/check-published-list-mirrors.mjs:270 把它与 AGENTS.md 的一个块逐字节绑定。该文件自述(:90-91)逐字:

AGENTS.md is a GOVERNED surface (scripts/pm/check-governed-merges.mjs), human-merge-only, so an auto-fix here would write the one file no seat may …

其拒绝文案(:458)逐字:「⛔ This gate cannot repair the document: AGENTS.md is GOVERNED, human-merge-only.」

⇒ ①必然碰治理面 ⇒ 人工地板,⛔ 执行席不能自授。

  • ① 项目长远合理性 —— 一道门禁声明自己覆盖「跨包测试输入」,而两处真实的跨包读对它不可见,且其中一处的正确性靠兄弟文件的巧合维持。失效方向是读作合规 ⇒ 这类缺陷不会自己冒烟。
  • ② 实际业务拉动 —— 对平台用户 0。它买的是 turbo 缓存判据的正确性。⚠️ 「是否已造成过一次错误的缓存命中」不可从本仓测量(命中与否不入 git),施工席与本席都不主张任一方向;⛔ 但必要条件在场且至少变动过 4 次(git log -S'--stall-minutes' -- .github/workflows/ci.yml,浅克隆 ⇒ 4 是下界)。
  • ③ 防 AI 犯错 —— 决定性的一条:这道门禁绿,而两处读未声明。一个 agent(或人)据此认为「跨包读都声明了」是错的,而没有任何输出会告诉它⚠️ 反向风险同样真实:②(改测试去用被识别拼法)会让两个最响的证人消失,而类别缺陷还在 ⇒ 下一张卡只能拿潜伏点说话。
  • ④ 创业阶段不扩散 —— ① 是一次治理面 PR(维护者落地)+ 新可见读所迫的声明;② 不碰治理面但只修两处;③ 两者都做,代价是两次动作。⛔ 本席不替维护者选。

Prior rulings read: live-dialect-matrix.budget.test.ts,live-dialect-matrix,budget,test,github,workflows,ci.yml,reporoot,check,cross-package-test-inputs,seed → 48 hits; ADR-0076 D7, ADR-0060 D6, ADR-0087 D5, ADR-0029 D3, ADR-0044 D2, ADR-0056 D10, ADR-0057 D6, ADR-0057 D7 —— ⚠️ 八条都读过节标题,主题分别是引擎分仓时序、CI 聚合(可选 P3)、协议握手验收、sys 命名空间归属、审批 revise 分支、授权一致性矩阵、业务单元与诚实命名。⛔ 无一裁本问(命中的是 check / test / seed 这类通用词)。⇒ 本卡是决策,⛔ 不是执行。


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions