# IR-95 poll-budget census — releases#294, doyle, 2026-09-10

Discharges the census IR-95 declared OWED. Run while golden diagnostic 34458491560 was
mid-flight; read-only, no builds, nothing dispatched to either runner.

## Corpus
212 git-tracked `*.rs` files under `**/tests/**` plus `xtask/`.

## v2 — loop-anchored (the census that stands)
`loop-anchored-sites.tsv`, produced by `census.py`. Anchors on loop SHAPE, never on message
wording: `for _ in 0..N`, `while Instant::now() < deadline`, `while <x>.elapsed() < budget`,
bare `loop {`. Keeps a site only if it SLEEPS (a poll, not a spin) within 40 lines AND can FAIL
(`panic!`/`assert!`/`expect(`/`bail!`) within 60. Classifies CLOCK vs BLIND by whether a MEASURED
VALUE is emitted on the failure path — `.elapsed()`, `.as_millis()`, `.as_secs_f`, an iteration
counter — with **string literals stripped first**, so the word "budget" inside a panic message
cannot credit itself.

RESULT: 323 sites. 19 apparently CLOCK, 304 BLIND.

**The blind figure is a CLASSIFIER COUNT, not a proven floor** (corrected by hertz and todlando
after a stronger form was circulated). Spot-checks covered only the CLOCK bucket, and both errors
found there ran the same direction, undercounting blindness:
- `brain_read_deadline.rs:87` — credited from elsewhere in the window; its real failure path is
  `panic!("whole-carrier brain never connected to {name}")`, no clock.
- `er_briefing_presented_e2e.rs:310` — `Some(started.elapsed())` on SUCCESS, bare `None` on expiry.
No error found so far runs the other way. That does NOT establish a bound: false-BLIND
classifications were never checked, and POPULATION COVERAGE is unvalidated — whether these four loop
shapes catch every poll in the corpus is unknown, so polls expressed as helpers, retry combinators or
iterator chains are uncounted. Report as "304 classified BLIND among 323 detected candidates", never
as a repository-wide >= 94%.

## POSITIVE CONTROL — passes
Both sites IR-95 was filed from appear, both BLIND: `sync.rs:102` (`0..400`) and
`contract_e2e.rs:395` (`loop {`, under the 30s wall declared at :393).
Also surfaced two sibling budgets nobody had noticed: `sync.rs:89` (`0..300`) and
`contract_e2e.rs:51` (`0..400`).

## v1 — vocabulary-keyed, DISCARDED (kept as evidence)
`v1-vocabulary-keyed-sites.tsv` / `v1-vocabulary-keyed-DISCARDED.py`. Keyed on expiry vocabulary
("never", "timed out", "did not appear"). Found 53 sites and **MISSED `contract_e2e.rs:393`
entirely** — the site the entry was filed from — because its panic message is a CONTENT sentence.
Its CLOCK bucket was also self-crediting: `"no Subscribed outcome within the budget"` matched the
clock regex on its own literal text.
Kept so nobody re-runs the cheap version and reports 53.

## Also measured, the hard way
`rg` is NOT on PATH in this Git Bash shell. A first census run with `2>/dev/null` returned zero for
every class INCLUDING the file count — a false zero from a missing binary, read as an empty
population. Use `git grep`, and never suppress stderr on a census.
