Repository navigation
finding(dogfood,pm): check:pm-dispatch-gates is red on main since #21919 — per-file-cwd.setup.ts takes a mkdtempSync base (inject(...)) the dispatch-gates scratch scan cannot read #21936
Description
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
- PR fix(objectql): a field-narrowed search no longer matches through the companion of a field outside the search-field set #21930's required
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. - The seat reproduced it locally at the PR head
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').- The global setup creates that root as
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)
- (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, assertrunRootis undertmpdir(), thenmkdtempSync(join(tmpdir(), relative(tmpdir(), runRoot), 'file-')). The global teardown still removes the run root. - (b) In
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/qa reads as domain:cli; scripts/pm/dispatch-gates.mjs is PM tooling.
Dedupe: MCP search_issues, repo-scoped, open and closed:
- 「dispatch-gates self-test mkdtempSync base scan cannot read per-file-cwd.setup.ts dogfoodCwdRoot」 gives spec's declared test-input radius omits
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 mkdtempSync
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 6, 2026
Closed as a duplicate of #21924 by the triage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-06T02:54Z. The file is the same (packages/qa/dogfood/test/per-file-cwd.setup.ts, theinject('dogfoodCwdRoot')base) and so is the mechanism (the dispatch-gates scratch-dir scan). Triage treats a same-file, same-mechanism report as one finding: the evidence moves to the earlier card and this one closes.domain:cli,os-warren), and its fix is open as PR test(dogfood): each file's temporary cwd is created from a base the scratch-dir scan can read #21935.Generated by Claude Code