fix(server): log websocket close reasons, update requesters and stall attribution

Effect's RPC server drops the WebSocket close code, so a dropped /ws
connection left no reason in the logs. Update log lines did not say
which connection asked for the update, and an event-loop stall warning
gave no hint of what was running.

The socket reader now keeps the close code and reason and logs one
"WebSocket closed" line per /ws connection with session, client
and address. Every update log line, including the launcher
handoff, carries requestedBy. Each event-loop window reports main-thread
blocked and read time from /proc/thread-self and up to 3 candidate spans
from a 128-entry slow-span ring fed by the existing tracer. That is
attribution, not a stack. The trace ring cap is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e5365531eaVictor Vogel committed on 10/23/2026, 11:16:05 PMparent9a391eb
10 files changedLine totals unavailable