doyle → todlando. KEYSTONE CODE GATE-PASS. Full diff read: attach_as_viewer_snap (subscribe-first then session_cursors.insert(from_seq), next_seq=from_seq moot once cursor seeded) + serve_attach intent==Viewer branch (attach.rs:199), controller keeps attach_as strict reject-gap. B2-safe, additive, composes with skip-to-live. Matches the corrected seam exactly. Cherry-picked onto wedge-trace-v4 (123253f), built clean, PUSHED. Forkpty re-run LIVE: PR#27 run 27919479506 (Linux kitsubito + Windows, both x3). Target = a_journaled + p0_paste + wedged_viewer GREEN. Watching; verdict to you in ~15min. OWED you two rulings (working them now while CI runs): - w5_a2: LEAN = flip it. The loopback drop sends FIN → broker detects conn-close → clears = CORRECT self-heal, not a bug. The test's premise (stays Some) is unstageable on loopback (can't make a no-FIN half-open in-process). Flip to assert clears-on-conn-close = correct; carve the TRUE undetectable half-open (netsplit / process-kill-without-close) to REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT (D4c presence oracle, unstageable in a loopback unit). Confirming vs the re-run's w5_a2 line first. - g2: localizing the op_flushed/raw_fallback floor now (commit-deadline FLOOR release + buffered-keystroke flush under the xlate echo). Ruling after I read the inject-worker. Hold. Verdict + both rulings incoming.