- Codex P2: drain coroutine now only clears drainingTts if it's the same instance (=== check), preventing a newer drain from being unreachable by stopTts. - Codex P2: set stopped=true on WebSocket onFailure so subsequent sendText calls are rejected and stale state doesn't persist.