Repository navigation
Class: a gate that answers empty or degenerate input with PASS (or a traceback) instead of a named refusal #2876
Description
Mechanism. An arm, validator or gate is handed an input that carries nothing to judge — an empty band set, a zero comparator median, a profiler with zero bricks, a method string with no vocabulary, a workload label bound to nothing, a proof count with a 12× margin — and answers PASS (or a Python traceback) because the loop body never runs, the predicate is vacuously true, or the check tests presence rather than value. The opposite polarity is often armed (a missing denominator FAILS loudly), which is what makes each instance a gap rather than a design.
The one structural fix. Every gate declares, per arm, the input shape it needs and REFUSES by name when the shape is absent — SKIP (precondition: …) or FAIL, never a silent pass; a validator refuses a non-positive or empty statistic on either side with the same sentence; self-tests carry an empty-input row for every arm (PP-066 §9: 'poka-yoke — refusal table derived, never authored'). PP-066 C0 names the first instance (#2830) as a release criterion; the class is what C0's polarity rule generalises.
Instances (one line each):
- arm_a_scaling emits nothing on a c=1-only receipt and the gate still returns VERDICT PASS #2830
arm_a_scalingemits nothing on a c=1-only receipt and the gate returns VERDICT PASS (blocks C0). - parity_block.py: a zero COMPARATOR band median is an unhandled traceback, not a verdict #2735
parity_block.pydivides by a zero COMPARATOR median → traceback, not a verdict (the subject side refuses by name). - §4.4.6's FATAL tokenization rule has no implementation: perf_gate.sh:79 checks only that method is a non-empty string, and the gate's own OK fixture uses an illegal value #2816 §4.4.6 FATAL tokenization rule: any non-empty
methodpasses;counts_*read by nothing; no comparator-vs-measured comparison (blocks master row 7 / C1). - --workload is a free-text label decoupled from the prompts sent: a 1-prompt run is recorded as W1 #2756
--workloadis a free-text label; a 1-prompt run is recorded as W1 and nothing can falsify it. - cbtop reports status PASS and ci_result green over its own grade F when the profiler returns zero bricks #2730
apr cbtop --ciexits 0 on a report withbrick_scores: []and grade F (all_passvacuous on an empty vector). - F-PROVE-007 asserts 297 compile-time proofs against a tree that generates 578, and never executes #2732 the proof-count gate asserts
count >= families*3(578 ≥ 48): deleting eight of nine unconditional proofs stays GREEN.
Rows. C0 (required check readable/strict; #2830's polarity), C4 (post-publish parity block on four hosts), master row 7 (JOIN), master row 15 (gx10 shakedown).
Members (parented here): #2730, #2732, #2735, #2756, #2816, #2830
PP-066 triage 2026-09-05 (issue #2873); ledger docs/audits/pp-066-triage-2026-09-05.md.
Folded sub-tickets (TRIAGE-100, 2026-10-14)
These open sub-tickets were folded here as checklist rows and closed as not planned so the open count stays at or under 100. Reopen one when its work resumes; an open PR for it reopens it.
- cbtop reports status PASS and ci_result green over its own grade F when the profiler returns zero bricks #2730 — cbtop reports status PASS and ci_result green over its own grade F when the profiler returns zero bricks (branch:
1c/2730-cbtop-vacuous-pass) - Make the host-receipt DEFER fail closed — 0.68.2 discharged it by hand, and the gate's first run fabricated 4 host failures from a missing directory #3544 — Make the host-receipt DEFER fail closed — 0.68.2 discharged it by hand, and the gate's first run fabricated 4 host failures from a missing directory (branch:
d1/3544-verify) - autopilot's INHERITED dogfood GO writes no receipt that check_publish_preflight.sh R5 accepts — v0.69.0 stopped at the publish preflight 43 min after tagging #3708 — autopilot's INHERITED dogfood GO writes no receipt that check_publish_preflight.sh R5 accepts — v0.69.0 stopped at the publish preflight 43 min after tagging
- guard_tree_job_test row 5: the x86-main-dropped mutant no longer applies (sed expects determinism last) #4940 — guard_tree_job_test row 5: the x86-main-dropped mutant no longer applies (sed expects determinism last)
- binary-release: an objdump failure reads as 0 NEEDED / no glibc floor (L25) #4975 — binary-release: an objdump failure reads as 0 NEEDED / no glibc floor (L25)
- andon: 'red>12h SPLIT' read a cancelled non-required job (#4966, run 38009100596); judge required checks only #5016 — andon: 'red>12h SPLIT' read a cancelled non-required job (fix(gpu): cuBLAS tests synchronized the context inside another test's capture (#4956) #4966, run 38009100596); judge required checks only
- qa_verify: its gates run cargo against the root facade (0 tests); every section exits 1 #5026 — qa_verify: its gates run cargo against the root facade (0 tests); every section exits 1 — done when: on a main whose CI is green, cargo run --example qa_verify -p aprender-core -- --section 1 and -- --section 2 exit 0, each gate measures the package it names (n
- aprender-gpu device tests skip-and-pass without a GPU; must fail when CI declares a GPU present (L25) #5040 — aprender-gpu device tests skip-and-pass without a GPU; must fail when CI declares a GPU present (L25)
- aprender-update: a 404 on a private repo's release listing reads as "up to date", and fetch::Http cannot authenticate #5055 — aprender-update: a 404 on a private repo's release listing reads as "up to date", and fetch::Http cannot authenticate
- nightly_train: a lane reads green while its run concluded failure (run conclusion ignored) #5118 — nightly_train: a lane reads green while its run concluded failure (run conclusion ignored)
- check_silicon_coverage [run] goes red on one GitHub 5xx: 75 live calls per x86-main #5212 — check_silicon_coverage [run] goes red on one GitHub 5xx: 75 live calls per x86-main (branch:
fix/5212-silicon-5xx-retry) - check_silicon_coverage: a failed runner listing (403 body on stdout) counts as 1 online runner, so probe 2a never fires on the PR path #5213 — check_silicon_coverage: a failed runner listing (403 body on stdout) counts as 1 online runner, so probe 2a never fires on the PR path
- apr qa: every gate skipped reports "All QA gates passed" and exits 0 #5226 — apr qa: every gate skipped reports "All QA gates passed" and exits 0 (branch:
fix/5226-qa-all-skipped) - book: create-missing = true makes the 'SUMMARY.md references nonexistent file' condition unfalsifiable #5300 — book: create-missing = true makes the 'SUMMARY.md references nonexistent file' condition unfalsifiable
Merged in (TRIAGE-100, 2026-10-14)
From #5307 — Gate honesty: checks that pass with nothing measured or judge the wrong commit
- Gate honesty: checks that pass with nothing measured or judge the wrong commit #5307 — Gate honesty: checks that pass with nothing measured or judge the wrong commit
- The release protocol's own reporting lied three ways: a fabricated 95% coverage note, a note-picker hijacked by crate names, and gate() keeping no log #3844 — The release protocol's own reporting lied three ways: a fabricated 95% coverage note, a note-picker hijacked by crate names, and gate() keeping no log
- THE UNIVERSE IS A GLOB: 10 of 28 held models are never measured, because inventory.patterns only matches q4_k/q4k — incl. a Q4_0 MoE and an unmeasured 35B Qwen3.5 #3846 — THE UNIVERSE IS A GLOB: 10 of 28 held models are never measured, because inventory.patterns only matches q4_k/q4k — incl. a Q4_0 MoE and an unmeasured 35B Qwen3.5 (branch:
c1/3846-into-b2) - fleet_cells_gate: a wildcard waiver waives any RED cell, and a non-date until never expires #5034 — fleet_cells_gate: a wildcard waiver waives any RED cell, and a non-date until never expires
- CI compute row passes a run of 0 tests (ci/sections.yml workspace-test-shard) #5048 — CI compute row passes a run of 0 tests (ci/sections.yml workspace-test-shard) (branch:
fix/5048-compute-zero-tests) - fleet_cells_gate: self-test rows for DEL(127), locale, day guards; run --self-test nightly #5064 — fleet_cells_gate: self-test rows for DEL(127), locale, day guards; run --self-test nightly — done when: each of the four has a self-test row that goes RED by its own rule on a planted input, and the real tree stays GREEN. (branch:
PMAT-5064-cells-selftest-rows) - yokoten: every gate that judges main's head at read time #5082 — yokoten: every gate that judges main's head at read time
- Scripts kill by name pattern; kill only the pid recorded at spawn #5108 — Scripts kill by name pattern; kill only the pid recorded at spawn
- models: full ladder sits on the scheduled night verdict; the release ships on crux smoke — move the ladder to a nightly ticket-only job, measure each stage, andon at 2x #5147 — models: full ladder sits on the scheduled night verdict; the release ships on crux smoke — move the ladder to a nightly ticket-only job, measure each stage, andon at 2x
- Push-path private-text scan let #5159 through with internal names in added lines, filenames and a commit trailer #5265 — Push-path private-text scan let feat(rex): land the review-experiment epic work on main (PMAT-4524) #5159 through with internal names in added lines, filenames and a commit trailer
Folded P0 and operator-worded rows (TRIAGE-100, 2026-10-14)
These tickets were folded here by the cop ruling of 2026-10-14 (sub-rows of this master). Each keeps its priority and its owner. The operator text each carried is quoted below exactly as written; if an owner objects, the ticket is reopened.
- The autonomous-merge arming gate has six assertions that are inert on jq 1.6 (the majority of the pool) — a zero-byte receipt is stopped by one unrelated line #3594 — The autonomous-merge arming gate has six assertions that are inert on jq 1.6 (the majority of the pool) — a zero-byte receipt is stopped by one unrelated line (P1 owner:aprender-a7)
- rc 127 is
Unknown{ToolAbsent}, never clean — its own row in the guard's must-match table beside rc 0 and rc 4, per the operator's ruling of 2026-09-20.
- rc 127 is
Activity
37 remaining items
noahgift commentedon Oct 14, 2026
Folded into the checklist of its epic #3863 (full original text kept there, verbatim). Owner owner:aprender-a7: the work is unchanged and continues from the epic checklist; reopen if you want it tracked separately. Refs #3863.