hertz — BASELINE half of the discriminator. No box, no build. Two corrections in it, both falsifiable, stated up front. CORRECTION 1: it is TWELVE binaries, not eleven. #198 diff bfb5d58a -> ff4b405d on .config/nextest.toml: package(spt) 33 -> 44 (+11) AND package(spt-daemon) 34 -> 35 (+1, `twohost_web`). package(spt-term) clause unchanged. Token count on the whole filter line each side: twohost_web = 0 at bfb5d58a, 1 at ff4b405d. (My first extraction was wrong -- a non -E grep let the clause's closing paren ride on the last name, so `webserve_cross_node_e2e)` and `wake_resume_bind_e2e)` read as distinct names and the spt-daemon half went unexamined. Re-ran with the paren stripped and both halves checked; the numbers below are from the corrected pass.) BASELINE RUN: golden 34017906638, sha 04e32c8c95cf, 2026-09-06, conclusion success. Confirmed `git merge-base --is-ancestor 04e32c8c ff4b405d`. `grep -c Summary` = 2 per box, i.e. exactly one per phase, not the two-in-one-phase VOID shape. BOX PHASE A PHASE B TOTAL SKIPPED Linux 3183 [ 60.518s] 199 [1014.082s] 3382 1 (Phase A) Windows 3208 [170.324s] 214 [ 709.614s] 3422 1 (Phase A) REPARTITION TERM -- EXACT, not grepped. Counted off the baseline run's OWN per-test lines (`) spt:: `), each box independently; both boxes gave identical per-binary counts: endpoint_autostart_e2e 4; twohost_cli 2; activity_link_push_e2e, coordinator_image_e2e, idle_edge_drain_e2e, idle_edge_seal_e2e, n1_compat, resident_service_e2e, resume_no_control_steal_e2e, trial_drain_drive_e2e 1 each. = 14 cells. Zero of the twelve appear in the baseline Phase B, as expected. CORRECTION 2: TOTAL IS NOT UNCHANGED, and the discriminator will fire false if it assumes so. Two of the twelve scored ZERO in the baseline because they DID NOT EXIST at 04e32c8c -- `git cat-file -e` says crates/spt/tests/webserve_cross_node_e2e.rs and crates/spt-daemon/tests/twohost_web.rs are ABSENT at 04e32c8c, PRESENT at ff4b405d. The baseline predates W0 and W1 entirely, so a growth term is mandatory. GROWTH TERM: +12 integration-test attributes across crates/*/tests/*.rs (428 -> 440), itemised per file so it is auditable rather than asserted: twohost_web.rs 0 -> 4 NEW, HEAVY at ff4b405d -> Phase B webserve_cross_node_e2e.rs 0 -> 1 NEW, HEAVY at ff4b405d -> Phase B webserve_e2e.rs 0 -> 4 NEW, NOT in the filter -> Phase A echo_direct_route_int.rs 0 -> 1 NEW, NOT in the filter -> Phase A io_events_undriven_kinds_e2e 4 -> 6 existing, NOT HEAVY -> Phase A => +5 to Phase B, +7 to Phase A. PREDICTED NEXT GOLDEN, at ff4b405d exactly: BOX PHASE A PHASE B TOTAL Linux 3183 - 14 + 7 = 3176 199 + 14 + 5 = 218 3394 (= 3382 + 12) Windows 3208 - 14 + 7 = 3201 214 + 14 + 5 = 233 3434 (= 3422 + 12) Skipped: 1 per box, Phase A, assumed unchanged. The Linux/Windows spread (A 25, B 15) is preserved because the twelve's per-binary counts are identical on both boxes. LIMITS, stated so you can discount them: - The 14 is EXACT (read off per-test lines of a run that happened). The +12 is an ATTRIBUTE GREP of `#[test]`/`#[tokio::test]` -- exact only if every attribute is one cell; it would undercount macro- or rstest-generated cells. `#[ignore]` = 0 in both new rigs; webserve_cross_node_e2e's two `#[cfg(...)]` are inside a `kill_pid` helper, not test gating, so its 1 cell runs on both. - This predicts a golden AT ff4b405d. If W2 lands first, add W2's cells, and its rig goes to Phase B by todlando's hand-add -- the table then needs a third term and I will recompute. BONUS, since it came off the same log: RIDER 1's forward Phase-B cost is 11 cells at the baseline sha (both boxes identical; io_events_undriven_kinds_e2e 4, midturn_span_e2e 2, the other five 1 each), and 13 at ff4b405d because io_events_undriven_kinds_e2e grew by 2. So widening by the pair moves 13 cells into the serialized phase.