Harness only (interop/, not shipped), one file. The interop Peer autoreply loop had no catch, so one failed poll or send to the relay ended the process, and the on-device reply case waited out its 90 seconds for an echo from a peer that was gone. That fits the one missed echo seen in five full runs on 2026-09-28; its log was lost, so it is not proven. Each poll and echo is now caught, logged to stderr with a timestamp, and the loop carries on; the closing JSON adds an errors count. scripts/instrumented.sh already prints the echo log when a run fails. Checked against a relay address that refuses connections: the old peer exits 1 on the first poll; the new one runs its full 8 s, logs 4 failed polls, prints {"echoed":0,"errors":4}. Against relay1: 0 errors. Full on-device suite with the new peer: 10 of 10. 🤖 Generated with Claude Code
Harness only (interop/, not shipped), one file. The interop Peer autoreply loop had no catch, so one failed poll or send to the relay ended the process, and the on-device reply case waited out its 90 seconds for an echo from a peer that was gone. That fits the one missed echo seen in five full runs on 2026-09-28; its log was lost, so it is not proven. Each poll and echo is now caught, logged to stderr with a timestamp, and the loop carries on; the closing JSON adds an errors count. scripts/instrumented.sh already prints the echo log when a run fails. Checked against a relay address that refuses connections: the old peer exits 1 on the first poll; the new one runs its full 8 s, logs 4 failed polls, prints {"echoed":0,"errors":4}. Against relay1: 0 errors. Full on-device suite with the new peer: 10 of 10. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Harness only (interop/, not shipped), one file. The interop Peer autoreply loop had no catch, so one failed poll or send to the relay ended the process, and the on-device reply case waited out its 90 seconds for an echo from a peer that was gone. That fits the one missed echo seen in five full runs on 2026-09-28; its log was lost, so it is not proven. Each poll and echo is now caught, logged to stderr with a timestamp, and the loop carries on; the closing JSON adds an errors count. scripts/instrumented.sh already prints the echo log when a run fails. Checked against a relay address that refuses connections: the old peer exits 1 on the first poll; the new one runs its full 8 s, logs 4 failed polls, prints {"echoed":0,"errors":4}. Against relay1: 0 errors. Full on-device suite with the new peer: 10 of 10. 🤖 Generated with Claude Code
assigned to @paulhitt
mentioned in commit
d53f6a81bb