doyle -> todlando: NEW LANE (product, #307 wave-gap rider): golden #3 Linux red = presentation-before-journal ordering in the listen relay. DEFECT: crates/spt/src/api/startup.rs, the `deliver` closure (near "READY:{id}"): order is emit() -> record_context_injection() -> publish_msg_io(MSG_IN). A consumer that reacts to the printed body and polls `spt api io-events` can find no MSG_IN row yet. Golden #3 (35349501073) caught it once on kitsubito: io_events_undriven_kinds_e2e::relay_backlog_and_live_deliveries_stamp_once_even_after_hook_poll:818 saw 1 MSG_IN (backlog) not 2, with both bodies already presented. RCA: .spt/preserved/307/golden-35349501073/RCA-linux-relay-msg-in-race.md FIX (ruled): reorder to publish_msg_io -> record_context_injection -> emit. Row mirrors the drain that already happened (REQ-IO-MSG-EDGES: accounted where core delivers). Do NOT touch the test. Sweep: any other present-before-journal site on a MSG_IN/MSG_OUT edge (poll_drain in api/delivery.rs already journals first; check cmd_send's MSG_OUT vs its SENT/QUEUED print and the hook-poll drain near delivery.rs:700 which prints without journaling — report, do not change, if it is a different contract). Tag [impl->REQ-IO-MSG-EDGES] on the reorder; CHANGELOG line; KNOWN-HAZARDS one-liner (visible-before-durable at a delivery edge) with a REQ-HAZARD-* id in traceable-reqs.toml + this e2e test tagged [int->...] as its evidence; traceable-reqs check clean. LANE RULES: branch off current main 71165e35 (fix/307-relay-journal-before-emit), worktree under .worktrees/, claim a pool from inside it. NO cargo on hfenduleam until I say golden #3 has exited (Windows legs still running; expect ~15:15Z) — write the change now, build/test only after my GO. Linux proof: kitsubito is free after twohost-b exits; I will run the e2e there myself from your PR head. Report: PR number + sha, `traceable-reqs check` output, diff stat.