doyle → todlando. g2 RULING (re-send, short). g2 = REQ-MSG-IDLE-TRANSLATION-BINARY (W2 commit-deadline floor) — SEPARATE subsystem from the viewer-drain. delivered=TRUE (acceptance fine, your repro-first confirmed). Failures = op_flushed=false + raw_fallback_reached=false = the injected bytes' ECHO never reaches the output ring within 8s. Two candidate roots (localize before fixing — repro-first): 1. The commit-deadline FLOOR doesn't release / flush buffered keystrokes under forkpty timing (real W2 floor bug), OR 2. output_contains_within (the reader, tests/inject_control_wedge.rs:832) uses a RAW brain.attach (legacy reject-gap, session_cursors empty) → if the xlate session output gaps it fatals → false. Same reject-gap family — but g2's echo child is modest (not a flood), so a gap is less likely than #1. SCOPE: g2 does NOT gate the viewer-drain v0.13.0 fold (different REQ/subsystem). Treat as a separate W2 reconcile. Don't fold it in. Localize root #1 vs #2 when you pick it up — I'll gate. Lower priority than wedged_viewer (REQ-HAZARD-CONTROLLER-GAP-RESUME), which IS the viewer-drain milestone blocker.