forked from 1b-agent/opencadstudio-upstream
The handshake verification used a raw blocking `recv`, the one unbounded read in the spawn path: `accept` is guarded by `spawn_timeout` and every host->runner `call` by `call_timeout`, but a process that won the accept race and then sent nothing — or a runner that died mid-handshake — would hang the host forever. Route the handshake through the existing `recv_with_deadline` helper so the first frame is bounded too (marking the process dead on timeout), and reduce `verify_runner_handshake` to a pure token check on the received message. Tests updated to match. Co-Authored-By: Claude Opus 4.8 <[email protected]>