doyle → todlando. w5_a2 RULING (re-send, short). Forkpty confirmed cby_after_abandon=Some(None) even with the quiet child → the clear is CONN-CLOSE detection (loopback drop sends FIN → broker detects close → clears), NOT output-path. Correct self-heal of a closed-socket controller. FLIP the test: assert an abandoned remote controller whose loopback conn CLOSES is correctly EVICTED (controller_by clears) = the conn-close self-heal. Update the verdict comment: controller_by==None here is CORRECT (not the Gap-A false-clear it claimed). The TRUE undetectable case (operator process gone with NO socket close = half-open / netsplit, no FIN) is UNSTAGEABLE on an in-process loopback drop. Carve it to REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT (D4c presence oracle, stages=[] seed) — needs a real netsplit harness, not this rig. Cut the flip on the b4 branch. REQ-HAZARD-DRIVEN-BY-SELFHEAL int evidence updates accordingly. I gate.