Repository navigation
~70 wall-clock assertions live in crates/*/src/ — inside the required check, and check_no_timing_in_required.sh cannot see them #3254
Description
~70 wall-clock assertions live in crates/*/src/ — i.e. inside the required check
scripts/check_no_timing_in_required.sh exists to stop a duration assertion reaching a required
status check. Its own header says why:
scripts/unwired_guards_baseline.txtsayscheck_multiplatform_dogfood.shis "a RELEASE gate,
not a PR gate. Deliberately unwired from CI" — and nothing mechanical stopped the next
well-meaning PR from wiring it. Policy is what failed the other eleven times. This is the
poka-yoke.
Its registry has three entries, and all three are check_*.sh. It cannot see a Rust target.
The count
crates/*/src/ ~70 duration assertions ← run in --workspace --lib = the REQUIRED workspace-test
crates/*/tests/ 36 ← dark today; #3249's nightly would arm them
By crate, in src/:
aprender-serve 9 · aprender-core 5 · aprender-test-lib 3 · aprender-cgp 3 · aprender-train 2
aprender-profile 2 · aprender-orchestrate 2 · aprender-zram-core 1 · aprender-present-terminal 1
aprender-present-core 1 · aprender-gpu 1 · aprender-cbtop 1
Sampled, and they are real start.elapsed() assertions in #[cfg(test)] units, not config
comparisons:
aprender-serve/src/qa_phase.rs:163 elapsed.as_millis() < 1000
aprender-serve/src/chat_template_special_tokens.rs:163 elapsed.as_millis() < 1000
aprender-serve/src/layers/tests/imp_001.rs:316 elapsed.as_millis() < 2000
aprender-core/src/qa/robustness_tests.rs:123 start.elapsed().as_millis() < 1000
aprender-core/src/text/chat_template/tests.rs:434 elapsed.as_millis() < 1000
A few hits are not elapsed-time (delay.as_secs() <= 2, wait.as_millis() < 100,
age.as_secs() < 1 compare computed or configured durations and are fine). So ~70 is an upper
bound on the regex, not a verified defect count — classify before fixing.
Why it matters now
One of them just fired. FALSIFY-CGP-061 FAILED: doctor took 2665ms against a 2500 ms limit,
during a sweep running 98,621 tests in parallel — a 6.6% miss measuring the load. #3253 gates the
six in aprender-cgp behind a timing-gate feature and proves by mutation that the feature arms
them rather than deleting them.
Two of those six were < 100 ms in a required check. On a shared runner that is a coin flip,
and the only reason it has not blocked the queue is luck.
This also lands on #3249: its nightly full surface would arm the 36 in tests/ as well, which is
another reason its predecessor draft's ratchet was the wrong instrument — you would be ratcheting
flakes.
What is owed
- Classify the ~70 — elapsed-time assertion vs duration comparison. Only the first class is a
defect. - Gate the real ones behind
timing-gate(the pattern is in fix(cgp): six wall-clock assertions, three of them in the REQUIRED check #3253, one feature per crate or
one workspace feature — decide once). - Extend the guard.
check_no_timing_in_required.shshould scan Rust targets too, or a
sibling should. Today the rule is enforced for shell and unenforced for the language the tests
are written in.
Activity
noahgift commentedon Sep 23, 2026
triage 2026-09-23 (aprender-dd, standing triage owner): milestoned to 0.70.0, theme Fast Train (CI, gates, pv, release tooling, hygiene); it moved out of
backlog(the 2026-09-17 overflow bucket, not a release).noahgift commentedon Sep 25, 2026
Parked by APR-EPIC-001: over E4 budget (rank 11/11). Reopen = pull. Applied by aprender-d1: claude+agy both said close, apr shadow row recorded (handoff/close-quorum-2026-09-25.json).