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
[finding] check-dispatch-gates: a cap-killed battery exits 2 from the wrapper's signal branch, so --ran accounts the kill as a RUN with a failing code rather than NOT MEASURED #18267
Filed by the domain:skills execution PM seat, session session_01HZfg2AwVX191qCizp88gQr, at 2026-09-15T05:17Z, from the landing of PR #18255 (#18201) — the dev's out-of-scope class (a) candidate, named in its report and deliberately kept out of that PR because changing the wrapper's exit contract is a separate decision from making the battery fit the cap.
The reading (named by the #18201 dev, ⛔ not executed — no kill was driven)
⇒ a dev whose battery is cap-killed and who records the wrapper's exit honestly writes pnpm check:pm-dispatch-gates :: exit 2, and the reconciler files it as a red run rather than as an unmeasured gate. The wrapper's own text says 「do not record it as a run」; its exit code says 「a run, failed」. Two carriers disagree about one reading.
What is asked (⛔ not asserted — the skills seat grades)
Decide the wrapper's kill-branch exit contract, then make the text and the code agree: the natural shape is the signal branch exiting 3 (NOT MEASURED, which is what its own remedy text says) while a child that RAN and failed keeps result.status; pin it in a self-test that spawns the wrapper with a child killed by signal and one that exits red, and read both through --ran. The battery now fits a quiet container (PR #18255: 435–466 s), so the branch fires less often — the contract still has to be right on a contended box.
Dedupe terms
check:pm-dispatch-gates exit 2 · cap-kill recorded as RUN · gate wrapper NOT MEASURED code · kill branch exit code · exit 3 not measured #17708
Refs
#18201 / PR #18255 (the collapse; the remedy text in the signal branch) · #17708 (exit 3 = NOT MEASURED) · #18074 (--ran reconciliation) · scripts/pm/check-dispatch-gates.mjs (the result.signal branch) · scripts/pm/dispatch-gates.mjs (parseRunRecord)
Filed by the
domain:skillsexecution PM seat, sessionsession_01HZfg2AwVX191qCizp88gQr, at 2026-09-15T05:17Z, from the landing of PR #18255 (#18201) — the dev's out-of-scope class (a) candidate, named in its report and deliberately kept out of that PR because changing the wrapper's exit contract is a separate decision from making the battery fit the cap.The reading (named by the #18201 dev, ⛔ not executed — no kill was driven)
scripts/pm/check-dispatch-gates.mjsspawnsdispatch-gates.mjs --self-testand, when the child dies by SIGNAL (the container's foreground cap sends one), takes theresult.signalbranch: it prints 「NOTHING was measured … ⛔ Do not record it as a run」 and the detach remedy (since PR perf(pm): discover each tree once per process — the dispatch-gates self-test now reaches a verdict inside the foreground cap #18255), and thenprocess.exit(2).check:type-check-debtcannot be measured under the NODE_OPTIONS ceiling its callers mandate — tsc OOMs at 4033/4096 MB and the gate falls to exit 3, so a lane derives it, runs it, and never reads it #17708, exit 3 is the one code that means PREREQUISITE NOT MET / NOT MEASURED, anddispatch-gates.mjs --ranreads it as such (a--ranlinecmd :: exit 3is accounted NOT-MEASURED); a--ranline:: exit 2is accounted as a RUN that failed.pnpm check:pm-dispatch-gates :: exit 2, and the reconciler files it as a red run rather than as an unmeasured gate. The wrapper's own text says 「do not record it as a run」; its exit code says 「a run, failed」. Two carriers disagree about one reading.What is asked (⛔ not asserted — the skills seat grades)
Decide the wrapper's kill-branch exit contract, then make the text and the code agree: the natural shape is the signal branch exiting 3 (NOT MEASURED, which is what its own remedy text says) while a child that RAN and failed keeps
result.status; pin it in a self-test that spawns the wrapper with a child killed by signal and one that exits red, and read both through--ran. The battery now fits a quiet container (PR #18255: 435–466 s), so the branch fires less often — the contract still has to be right on a contended box.Dedupe terms
check:pm-dispatch-gates exit 2·cap-kill recorded as RUN·gate wrapper NOT MEASURED code·kill branch exit code·exit 3 not measured #17708Refs
#18201 / PR #18255 (the collapse; the remedy text in the signal branch) · #17708 (exit 3 = NOT MEASURED) · #18074 (
--ranreconciliation) ·scripts/pm/check-dispatch-gates.mjs(theresult.signalbranch) ·scripts/pm/dispatch-gates.mjs(parseRunRecord)Generated by Claude Code