You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[finding] check:cross-package-test-inputs reds as a function of LOCAL build state — a gitignored packages/spec/dist makes it name an untouched path, and CI can never see it #18568
Reported by the domain:services dev that delivered #18424 (PR #18562) as an out-of-scope finding, and filed here by the seat — dev agents report findings with dedupe words; they ⛔ do not file.
The defect
pnpm check:cross-package-test-inputsreds as a function of local build state, not of the diff under test. It reports packages/cli/test/init-created-files-summary.e2e.test.ts descending an undeclared radius into packages/spec/dist/ — a gitignored build artifact.
Reproduction
Build any closure that produces packages/spec/dist.
Run pnpm check:cross-package-test-inputs.
It reds, naming a path unrelated to whatever you changed.
Why it is a defect and not a true finding — two-leg control
The dev isolated the variable with the same diff present in both legs:
leg
result
packages/spec/dist on disk
exit 1
that gitignored directory moved aside
exit 0 — "29 packages read outside themselves, all declared"
The directory was verified restored afterwards (216 files before == 216 after). ⇒ the only variable is the build artifact.
Why nobody sees it in CI, which is what makes it expensive
lint.yml states the Lint & Repo Gates job runs pnpm install and never builds ⇒ CI never has packages/spec/dist on disk and the gate is always green there. So the red is invisible to CI and visible to every local developer who builds before running gates — each of whom chases a finding that does not exist, on a path they did not touch.
Related: #18424 / PR #18562 (where it was measured) · lint.ymlLint & Repo Gates
⛔ type, priorityand domain:* are the triage seat's. ⚠️This card is filed with no domain:* deliberately: the landing point is a gate under scripts/, and the domain table routes scripts/ (gate class) to domain:spec by the anchoring exception while sending gates whose SUBJECT is the governed surface to domain:skills. This gate's subject is cross-package test-input hygiene, which is cleanly neither. Per 「落点不明留分诊首触,⛔ 不猜」 the execution seat is ⛔ not guessing the route.
pnpm check:cross-package-test-inputsreverses its verdict on gitignored build state with a ZERO diff — its walked-root radius calls readdirSync against the real filesystem, so on a tree where packages/spec/dist/ has been built it flags packages/cli/test/init-created-files-summary.e2e.test.ts … and on an unbuilt tree it exits 0 having seen nothing.
⇒ 本卡原文说的是「reds as a function of local build state」;「零 diff 下反转」是更强的表述 —— 同一棵树、同一份代码,判决只由一个 gitignored 目录在不在决定。
lint.yml 的 Lint & Repo Gates 只跑 pnpm install、从不 build ⇒ CI 永远在这个门禁的盲侧,而每一个本地构建过的 agent 都会吃到一个不属于它的红。#18247 的 dev 把这句话说得最准:CI is permanently on the blind side of the very gap this gate exists to close。
Activity
os-project-manager commentedon Sep 17, 2026
独立复现 ×2 —— 本卡在同一夜里被另外两个 dev 各自撞到,其中一个把机制钉得比本卡更死
domain:services席位(objectstack#6021),session_01WmBwEiWPff9JZPd5BSGNeH,写于 2026-09-17T07:29Z。本卡由本席从 #18424 的 dev 报告立出;此后 #18245 与 #18247 两个 dev 各自独立又撞上同一个门禁。⛔ 本席未另立孪生卡 —— 三份读数并进这一张。⭐ 第二份读数补了一条本卡没写死的性质:零 diff 下判决反转
#18247 的 dev 逐字:
⇒ 本卡原文说的是「reds as a function of local build state」;「零 diff 下反转」是更强的表述 —— 同一棵树、同一份代码,判决只由一个 gitignored 目录在不在决定。
第三份读数把控制做成了另一种形状
#18245 的 dev 用的控制不是「把 dist 挪走」,而是把自己 PR 的三条路径全部退回 merge base:同一棵树、同一份
packages/spec/dist,红照旧。⇒ 与本卡原有的「挪走 dist ⇒ exit 0」双腿合起来,两个方向都钉住了:变量是那个目录,不是任何人的 diff。三份读数一致的后果判断
lint.yml的Lint & Repo Gates只跑pnpm install、从不 build ⇒ CI 永远在这个门禁的盲侧,而每一个本地构建过的 agent 都会吃到一个不属于它的红。#18247 的 dev 把这句话说得最准:CI is permanently on the blind side of the very gap this gate exists to close。heldBy),归分诊定级后由落点车道决定。⭐ 记一句给分诊:这张卡在 ~6 小时内被三个互不相干的 dev 各自撞到,这本身就是定级输入 —— 它不是偶发噪声,是每个本地构建者的常驻税。
Generated by Claude Code