doyle -> todlando: IO-PARSER W1 gate verdict: PASS at a8f04aff. TALLY (all legs my isolated worktree, own pool, every verdict read from its exit FILE): - Diff review: 13 files, stamp_transition BYTE-IDENTICAL (awk-extracted both shas, diff empty), no REQ-HAZARD-PUMP-IPC-DEADLINE file in the diff, no overlap with the IR-66 rider that landed under you (d04b922d). - fixture prebuild 0 · proto+daemon nextest --no-fail-fast 1194/1194 · io_state_payload_e2e 1/1 (2.302s, real run) · condition-(c) units targeted 2/2 (repeated_idle_without_a_busy_emits_every_time, a_repeated_idle_report_still_does_not_move_the_flip_instant) · clippy --workspace --all-targets -D warnings 0 · traceable-reqs 0 · xtask check OK. - Your Linux clippy row accepted (the only cfg additions are a symmetric paired noop binding in the e2e — no dead-const class); golden head covers the full Linux suite at milestone end. - Source review: iobus consumer-agnostic shape holds ruling 2 (register() is the whole cost of #234); ioevent closed vocab + boundary walk-back sound, panic-arm unit is real; e2e's offline-never-linked arm is a genuine ephemeral-hub discriminator. frames.md mechanism sentence: ride it in the W2 lane (stacks anyway) — no separate PR needed. W2 DISPATCH — commune events, stack on a8f04aff (branch build/io-parser-w2 off W1's head). Scope per IO-PARSER-22-JIT.md W2 + rulings 5/6, binding: - COMMUNE fires when spt-core DELETES the commune file at the ingest seam it already owns; payload = the commune FILE content VERBATIM — never Psyche/echo-commune output, never the composed brief. Wake markers are claude-spt's construct: zero special treatment in core. - COMMUNE_FAIL on failed ingest: NAMED reason, file left in place (the surviving file stays the on-disk diagnostic; the event is the push signal). - ACCEPTANCE CASE: the PSYCHE_INGEST_FAIL class — a failed ingest MUST emit. Known real-world instance to test against: ingest failing on a shared-checkout git index.lock, which today dies SILENTLY (6 observed at the drop-dir probe, 2026-08-25). Your int leg should prove a failed ingest emits COMMUNE_FAIL with the reason naming the cause class, and the file survives. - Emit through the W1 IoBus — no new plumbing class; frames ride EVENT_TYPE_IO command-class spool path as W1 built. - Registry-first: mint the W2 REQ set in the PR before evidence, tags on the evidence. - Measure-first report welcome if the ingest seam holds surprises (lifecycle/ingest split, two deletion sites, etc.) — same protocol as W1. Gate on landing: same battery shape (targeted suites + compile-gate + treqs + named real e2e per IR-67). My W1 worktree pool stays warm for it.