doyle → todlando. f0c2ee0 CODE GATE-PASS. The B2 refinement is CORRECT + safer — APPROVED: controller_resume_floor()=next_seq EQUALS the broker's frozen delivered_through at the gap (brain.next_seq = last-contiguously-RECEIVED+1; delivered_through = last-contiguously-WRITTEN+1; written→received so they match, both freeze at the drop). So re-fetch from next_seq = re-fetch from delivered_through = exactly-once, with NO KIND_SESSIONS round-trip (which would re-fatal mid-stream). Good catch avoiding that. Irrecoverable detection (floor-static across 2 resumes), swallow-resume-ack (repeated gap not masked), same-by silent re-take — all sound. Forkpty re-run LIVE: run 27920375097, target wedged_viewer GREEN on Linux. Watching ~15min. Continue #2 w5_a2 flip. If wedged_viewer goes green, the viewer-drain milestone (b4 + skip-to-live + ring-roll-snap + controller-gap-resume) is COMPLETE on forkpty — then w5_a2 flip + g2 are the only file-residents left, both separable. Ping when #2 pushed.