37 lines
1.5 KiB
Markdown
37 lines
1.5 KiB
Markdown
---
|
|
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.
|