finding — raised by the at-tier contract review of PR #19640 (record 5770982139, flags D and E) and re-stated by the domain:spec seat, session session_01UDXER3sdqfeVYpEWZs5mZx. ⛔ Ungraded and unrouted: domain:*, type and priority are triage's. ⛔ Not claimed.
⚠️ Both items are pre-existing and were ⛔ NOT introduced by PR #19640. They are carded rather than folded into it because ① is a maintainer-floor item (adding a required gate) and ② lands on a governed Tier S surface — neither is a dev's to take inside that PR's fence.
① scripts/ablation-dist-preflight.mjs has NO CI wiring at all, and its self-test just grew
The script's --self-test is not run anywhere. Measured on origin/main: zero hits for the script name in package.json, .github/** and turbo.json. Positive control on the same command and scope fired — check:pm-expected-skips resolves at package.json:99 — so the instrument discriminates and the zero is a reading.
Why it matters now rather than in general. PR #19640 adds 28 self-test cases (to 64, over 5 batteries) and raises SELF_TEST_BATTERY_FLOOR from 3 to 5. ⇒ the amount of behaviour resting on an unrun self-test just grew substantially. At the reviewed head the only evidence those 64 cases pass is a reviewer's hand run in a throwaway worktree. And PR #19640 carries skip-changeset, which is the second half of the shape below.
The repo has a named precedent for exactly this inversion. .github/workflows/lint.yml documents PR #6876 (#5620) adding five assertions to a checker that "never executed once on its own CI" because it carried skip-changeset. The prescribed remedy there was a deliberately unconditional self-test step in lint.yml.
⚠️ The split matters and the card does not blur it: the script's run half legitimately cannot be a gate — it judges a deliberately mutated tree, which CI never has. The --self-test half has no such obstacle and is what every sibling check:X entry in this repo wires.
⛔ This is a maintainer-floor item by the standing rule (「新增必需门禁/hook/棘轮」), so it is filed rather than fixed. ⛔ No remedy is prescribed here beyond naming the precedent; whether to wire it, and how unconditionally, is the maintainer's call.
Dedupe words: ablation-dist-preflight · self-test not in CI · #6876 · #5620 · SELF_TEST_BATTERY_FLOOR
② The script's header names a document that does not mention it
scripts/ablation-dist-preflight.mjs's header names .claude/skills/dogfood-verification/SKILL.md as one of "three documents that state this script's invocation". That file mentions the script 0 times — measured, 148 lines.
Identical at base, so ⛔ not a regression from PR #19640. It is worth a row anyway because that PR rewrote the surrounding header specifically to make the instrument's claims exact, and this one is checkable and false.
⚠️ The fix lands in .claude/**, a governed Tier S surface (GOVERNED_SURFACES, id claude-tree, "the agent instruction tree") — or in the script's header, depending which side a taker judges wrong. ⛔ Either way it cannot ride a code PR's fence without the governed-surface path.
⚠️ The same round noted a sibling item and deliberately did not file it: the two documents that do state the invocation (.claude/agents/os-dev.md:255, packages/qa/dogfood/README.md:54) show only the default present-mode form, while PR #19640 makes the pristine-build present-mode reading the presence evidence a DELETE ablation owes. The round recorded the successor as NONE — both files are outside that PR's fence and no queued PR touches them. Named here so it is not lost, ⛔ not asserted as a defect.
Dedupe words: ablation-dist-preflight header · dogfood-verification SKILL.md · three documents · stale invocation claim
Refs: PR #19640 / card #19348 (the round that surfaced both) · #19644 (two sibling defects in scripts/ablation-replace.mjs from the same round)
Generated by Claude Code
finding— raised by the at-tier contract review of PR #19640 (record5770982139, flags D and E) and re-stated by thedomain:specseat, sessionsession_01UDXER3sdqfeVYpEWZs5mZx. ⛔ Ungraded and unrouted:domain:*,typeandpriorityare triage's. ⛔ Not claimed.①
scripts/ablation-dist-preflight.mjshas NO CI wiring at all, and its self-test just grewThe script's
--self-testis not run anywhere. Measured onorigin/main: zero hits for the script name inpackage.json,.github/**andturbo.json. Positive control on the same command and scope fired —check:pm-expected-skipsresolves atpackage.json:99— so the instrument discriminates and the zero is a reading.Why it matters now rather than in general. PR #19640 adds 28 self-test cases (to 64, over 5 batteries) and raises
SELF_TEST_BATTERY_FLOORfrom 3 to 5. ⇒ the amount of behaviour resting on an unrun self-test just grew substantially. At the reviewed head the only evidence those 64 cases pass is a reviewer's hand run in a throwaway worktree. And PR #19640 carriesskip-changeset, which is the second half of the shape below.The repo has a named precedent for exactly this inversion.
.github/workflows/lint.ymldocuments PR #6876 (#5620) adding five assertions to a checker that "never executed once on its own CI" because it carriedskip-changeset. The prescribed remedy there was a deliberately unconditional self-test step inlint.yml.--self-testhalf has no such obstacle and is what every siblingcheck:Xentry in this repo wires.⛔ This is a maintainer-floor item by the standing rule (「新增必需门禁/hook/棘轮」), so it is filed rather than fixed. ⛔ No remedy is prescribed here beyond naming the precedent; whether to wire it, and how unconditionally, is the maintainer's call.
Dedupe words:
ablation-dist-preflight·self-test not in CI·#6876·#5620·SELF_TEST_BATTERY_FLOOR② The script's header names a document that does not mention it
scripts/ablation-dist-preflight.mjs's header names.claude/skills/dogfood-verification/SKILL.mdas one of "three documents that state this script's invocation". That file mentions the script 0 times — measured, 148 lines.Identical at base, so ⛔ not a regression from PR #19640. It is worth a row anyway because that PR rewrote the surrounding header specifically to make the instrument's claims exact, and this one is checkable and false.
.claude/**, a governed Tier S surface (GOVERNED_SURFACES, idclaude-tree, "the agent instruction tree") — or in the script's header, depending which side a taker judges wrong. ⛔ Either way it cannot ride a code PR's fence without the governed-surface path..claude/agents/os-dev.md:255,packages/qa/dogfood/README.md:54) show only the default present-mode form, while PR #19640 makes the pristine-build present-mode reading the presence evidence a DELETE ablation owes. The round recorded the successor as NONE — both files are outside that PR's fence and no queued PR touches them. Named here so it is not lost, ⛔ not asserted as a defect.Dedupe words:
ablation-dist-preflight header·dogfood-verification SKILL.md·three documents·stale invocation claimRefs: PR #19640 / card #19348 (the round that surfaced both) · #19644 (two sibling defects in
scripts/ablation-replace.mjsfrom the same round)Generated by Claude Code