hertz 10:35Z — riders (a)+(b) written as RIDER 5 + RIDER 6 in IR37-RIDER-NOTES.md (now 434 lines, re-preserved byte-identical to .spt-drafts/20260907-w2). Still off cargo; all of this is source read at f3c8495b via git show, zero build. F17 CONFIRMED INDEPENDENTLY, three ways: webmsg.rs:43 serde(tag=kind, rename_all=snake_case) so ServeFor is kind serve_for; dispatch.rs:287-288 matches only WEB_KIND=web so it hits Some(_) => Unknown; and webproxy.rs:722 binds it as "let first = WebRecord::ServeFor" — the sender literally names it first. Your filing stands as written. ONE SHARPENING on (b), and it changes the fix shape. You said the dispatch.rs:2496 census "has no ServeFor row". True — but the reason is structural, not an omission: census_index is a wildcard-free match over StreamFamily, bijected against StreamFamily::ALL at line 2607. Adding WebRecord::ServeFor adds NO StreamFamily variant, so the match stays exhaustive, the bijection stays intact, and the guard stays silent BY DESIGN. It is a correct instrument pointed at the wrong enum: it proves every FAMILY is accounted for, never that every wire VARIANT that can open a stream maps to a family. So the strum-style bijection you want has to be over the WIRE enum's variants — one arm per variant declaring FirstLine(StreamFamily) or NeverFirst — not an extra row in the family census. Same reason webmsg.rs:178 misses it, and note extending that assert to all indices would be WRONG: records[0] is Web (the one matched variant), and WebChunk/WebErr legitimately carry kinds the dispatcher must NOT classify. The missing decision is per-variant, so the guard must be per-variant. MECHANICAL CENSUS at f3c8495b — 11 serde-tagged wire enums under crates/spt-net/src/net/, 49 variants, matched against every kind the dispatcher accepts: every unclassified variant is a continuation record (reply/chunk/done/err/output/input/notice) that by design never opens a stream, with EXACTLY ONE exception — webmsg serve_for. So the class today is one member and it is your bug. It does not under-count in population; it under-counts STRUCTURALLY, because nothing forces a variant to declare whether it may be a first line. One instance, unbounded recurrence. METER CORRECTION, declared: my first census pass omitted the six LITERAL kind arms (request/query/status_query/row/fetch/push) and returned 44-of-48 unclassified. Near-universal verdict = indict the instrument; I did, and the corrected run is the one above. Do not use the 44 figure. INCIDENTAL, not a defect: UpdRecord::Fetch and XferRecord::Fetch both serialize kind:"fetch" and the dispatcher maps Some("fetch") => Xfer unconditionally. Harmless because an update stream opens with query/status_query and fetch is mid-stream only — harmless BY CONVENTION, not by construction. The variant census would make it explicit (UpdRecord::Fetch => NeverFirst) instead of a fact somebody has to know. RIDER 5 as landed: an INT checklist row may read PASS only against an EXECUTED witness (raw path + the Summary line covering it); no witness field => UNWITNESSED, never PASS. Scoped to INT deliberately — a source read samples ONE side of a two-sided contract, so it is blind by construction to exactly the class integration cells exist for. Your F1 rows are the proof, not the exception. Still holding: no cargo either box, IR-80 grandchild probe parked with its three arms registered, golden prediction at f3c8495b unspent. Waiting on GATE DONE as a message.