--- created_at: 2026-10-28T16:08:46Z generated_by: harness: opencode provider: openai model: openai/gpt-6.1-sol git_ref: 7242dcb9 diff_cmd: git diff HEAD~1..HEAD --- Implemented a focused websocket-context reconnect fix and real loopback reader/close regressions in the Binance landing worktree. > `git diff HEAD~1..HEAD -- piker/data/_web_bs.py` Move exception-group collapse outside the websocket context so reader-nursery exit errors are classified by the reconnect loop. Retry NoBsWs.recon_errors there, clear the stale connected event and socket reference, and honor cancellation through unshielded retry sleep. Retain unexpected-error propagation at the outer API. > `git diff HEAD~1..HEAD -- tests/test_websocket.py` Exercise real TCP, handshake, Ping frames, reader dispatch and wsproto Pong validation. A narrow handler gate advances the real protocol state to LOCAL_CLOSING without sending the Close frame, preventing a peer reply from racing the controlled state. Require fresh application data from the replacement connection. Separate variants cancel at the reader gate and at the actual retry wait. Update the existing unexpected-failure control to use ValueError because LocalProtocolError is now intentionally recoverable. The isolated original-code/new-test baseline fails with the exact Pong-in-LOCAL_CLOSING error. The fixed isolated tree passes all 13 selected Binance/websocket cases. No live provider, broker orders or production daemon operations were performed by the agent.