Filing gate: ① a reproducible defect, class (a), a required CI gate red on main. Measured by domain:engine seat 1 (seat post #6367, session_017ErfyP2Rx7XWHJA27QjyUi) while landing PR #21930 (#21880). ⛔ Not graded or routed here; ⛔ not a claim.
What is measured
Mechanism
per-file-cwd.setup.ts does process.chdir(mkdtempSync(join(runRoot, 'file-'))) with const runRoot = inject('dogfoodCwdRoot').
- The global setup creates that root as
mkdtempSync(join(tmpdir(), 'os-dogfood-run-')) (per-file-cwd.global-setup.ts:46) and provides it.
dispatch-gates.mjs's resolvePathExpression reads tmpdir() as outside the tree (OUTSIDE_TREE_MARKER), but cannot follow an inject(...) call. So the site is UNRESOLVED, and the live-tree case rejects any unreadable mkdtempSync base.
Proposed patch (not measured; the owning lane decides)
- (a) In
per-file-cwd.setup.ts: spell the base so the scan reads it as outside the tree, without changing the path. For example, assert runRoot is under tmpdir(), then mkdtempSync(join(tmpdir(), relative(tmpdir(), runRoot), 'file-')). The global teardown still removes the run root.
- (b) In
dispatch-gates.mjs: teach the resolver that an inject(KEY) whose global setup provides a tmpdir()-rooted mkdtemp is outside the tree. This is broader, and is the PM tooling's own call.
Who it blocks
PR #21930 (#21880, security, p3) cannot enter the merge queue while this required check is red. Per its seat's posture, it is not widened to carry the fix, unless a fix PR exists to port.
Reader who acts: triage grades and routes it. packages/qa reads as domain:cli; scripts/pm/dispatch-gates.mjs is PM tooling.
Dedupe: MCP search_issues, repo-scoped, open and closed:
Dedupe words: per-file-cwd mkdtempSync inject unreadable base · check:pm-dispatch-gates red main 21919 · exposedScratchDirs unresolved mkdtempSync
Generated by Claude Code
Filing gate: ① a reproducible defect, class (a), a required CI gate red on
main. Measured bydomain:engineseat 1 (seat post #6367,session_017ErfyP2Rx7XWHJA27QjyUi) while landing PR #21930 (#21880). ⛔ Not graded or routed here; ⛔ not a claim.What is measured
Lint & Repo Gatesfailed at step "PM dispatch-gates self-test" (pnpm check:pm-dispatch-gates,lint.ymlabout:1059). That step runs only when thepm_dispatch_gatesfamily is triggered. fix(objectql): a field-narrowed search no longer matches through the companion of a field outside the search-field set #21930 triggers it by touchingpnpm-lock.yamland the dogfood package'spackage.json/vitest.config.ts.40618fa8cc, withnode scripts/pm/check-dispatch-gates.mjs(938 s). 1 of 1976 cases failed:✗ no mkdtempSync site in this tree takes a base the scan cannot read — UNRESOLVED: packages/qa/dogfood/test/per-file-cwd.setup.ts:60 (a base this scan cannot read: inject('dogfoodCwdRoot'))per-file-cwd.setup.tslanded in PR test(dogfood): every test file runs in its own temporary working directory #21919 (dogfood: five files boot the showcase in the package directory and leave its federated fixture database behind, so a later showcase boot's federated state depends on shard order #21914) asbe97cf3c93. PR fix(objectql): a field-narrowed search no longer matches through the companion of a field outside the search-field set #21930 does not touch it. So the case fails onmaintoo, for every PR that triggers the family, until it is fixed.Mechanism
per-file-cwd.setup.tsdoesprocess.chdir(mkdtempSync(join(runRoot, 'file-')))withconst runRoot = inject('dogfoodCwdRoot').mkdtempSync(join(tmpdir(), 'os-dogfood-run-'))(per-file-cwd.global-setup.ts:46) andprovides it.dispatch-gates.mjs'sresolvePathExpressionreadstmpdir()as outside the tree (OUTSIDE_TREE_MARKER), but cannot follow aninject(...)call. So the site is UNRESOLVED, and the live-tree case rejects any unreadablemkdtempSyncbase.Proposed patch (not measured; the owning lane decides)
per-file-cwd.setup.ts: spell the base so the scan reads it as outside the tree, without changing the path. For example, assertrunRootis undertmpdir(), thenmkdtempSync(join(tmpdir(), relative(tmpdir(), runRoot), 'file-')). The global teardown still removes the run root.dispatch-gates.mjs: teach the resolver that aninject(KEY)whose global setupprovides atmpdir()-rootedmkdtempis outside the tree. This is broader, and is the PM tooling's own call.Who it blocks
PR #21930 (#21880,
security, p3) cannot enter the merge queue while this required check is red. Per its seat's posture, it is not widened to carry the fix, unless a fix PR exists to port.Reader who acts: triage grades and routes it.
packages/qareads asdomain:cli;scripts/pm/dispatch-gates.mjsis PM tooling.Dedupe: MCP
search_issues, repo-scoped, open and closed:packages/**/*.tsxwhile its tree-walking tests read.tsx— and the glob that would cover it is forbidden by a dispatch-gates self-test pin #16593, dispatch-gates cannot see runtime staging dependencies between gate scripts (digest sandbox broke on a staged gate's new import) #13000, turbo: build hashes do not cover five root inputs the builds read (tsup-drop-sources-content, scaffold policy + cli init.ts, three build-time check scripts) — stage-2 precondition of the remote cache #21193,check-error-status-conformance.mjswalk()races tsup's transientpackages/spec/tsup.config.bundled_*.mjs: readdir-then-stat throws ENOENT and turns the requiredTest Core (1/6)red with 597 / 597 tests passed #20225,packages/qa/dogfood的 tsconfig 没人跑 —— 14 个类型错误积在一个「声明了但未执行」的门后面 #4855, dispatch-gates routes nopackages/qa/dogfood/**change to any gate family — a full derived-family run is green while the Dogfood Regression Gate is red #16285 and others. None is this.Dedupe words:
per-file-cwd mkdtempSync inject unreadable base·check:pm-dispatch-gates red main 21919·exposedScratchDirs unresolved mkdtempSyncGenerated by Claude Code