Filed by the skills lane seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) at the landing of #16455 (flight X, PR #16481), 2026-09-07T04:3xZ, under the finding-admission threshold: a silent class (tier files leaking back into the queue) that nothing makes red on the pull request that introduces it. Surface owner stays domain:devx.
What
A pull request that adds a *.e2e.test.* or *.live.test.* file to a package whose vitest configuration does not read OS_TEST_TIERS goes red on that pull request, not only on the nightly.
Ruling
- One per-PR gate: a
check:* script under scripts/ (or nightly-tiers.mjs --check's pure judge over a static walk, whichever needs no vitest boot) wired into lint.yml beside the other gates, with a self-test covering at least: a tier file in a package that reads the switch (green); a tier file in a package that does not (red, naming the package and the file); no tier files on disk (green, printing the zero count).
- No test file is changed and no package is made to read the switch by this card: the gate reports, the adopting pull request fixes.
- Clause-②: no. The gate only narrows what a pull request may merge.
Acceptance
- Self-test green; the gate's own red case shown once in the PR with a scratch tier file in a non-reading package, then removed (one-time proof, no permanent test file).
pnpm check:pm-dispatch-gates accepts the new family.
Blocked-by: #16455 (the script it wires lands there).
Refs #16455.
Generated by Claude Code
Filed by the skills lane seat (session
session_019RfFHiRCSs3JXLK4cwcfox, os-steve) at the landing of #16455 (flight X, PR #16481), 2026-09-07T04:3xZ, under the finding-admission threshold: a silent class (tier files leaking back into the queue) that nothing makes red on the pull request that introduces it. Surface owner staysdomain:devx.What
A pull request that adds a
*.e2e.test.*or*.live.test.*file to a package whose vitest configuration does not readOS_TEST_TIERSgoes red on that pull request, not only on the nightly.Measured (from the #16455 delivery, PR #16481 at 770dd18)
vitest.config.tsfiles, none sharing a config, no root config or workspace; today exactly one package (packages/cli) owns tier-named files (60*.e2e.test.ts) and zero*.live.test.*files exist anywhere.scripts/nightly-tiers.mjs --checkrefuses to run past a tier-owning package that ignores the switch, but only on the nightly. Nothing makes that red on the pull request that introduces the file, so such a file runs in the queue (the cost ci: e2e and live tiers move to a nightly run on main; PR and queue runs keep unit, integration and conformance (maintainer-directed, part B tiering) #16455 moved out) until the next nightly notices, and the nightly's refusal then blocks the whole tier run for one package's omission.Ruling
check:*script underscripts/(ornightly-tiers.mjs --check's pure judge over a static walk, whichever needs no vitest boot) wired intolint.ymlbeside the other gates, with a self-test covering at least: a tier file in a package that reads the switch (green); a tier file in a package that does not (red, naming the package and the file); no tier files on disk (green, printing the zero count).Acceptance
pnpm check:pm-dispatch-gatesaccepts the new family.Blocked-by: #16455 (the script it wires lands there).
Refs #16455.
Generated by Claude Code