15facf48eb
Live-Diagnose nach dem Timeout-Bump: Bridge-Brain-Call rennt jetzt zwar 20 Min — aber nach ~4 Min droppt der RVS-Server die WebSocket-Verbindung. Symptom in App+Diagnostic: "denkt einfach abgebrochen". Ursache: `async for raw_message in ws: await _handle_rvs_message(...)` — das await blockt den recv-Loop solange send_to_core laeuft (bis zu 20 Min). Der mobil.hacker-net.de:444 RVS-Server droppt Verbindungen ohne echte App-Frames nach ~4 Min als idle-Timeout. Die websockets-Lib beantwortet Pings im Hintergrund, aber das reicht offenbar nicht — der Server zaehlt nur Application-Frames. Fix: chat-Handler ruft send_to_core als asyncio.create_task statt await. Brain laeuft im Hintergrund-Task, RVS-recv-Loop bleibt frei, neue Messages werden weiter verarbeitet, Verbindung bleibt lebendig. Gleicher Fix in _flush_pending_files_with_text und file-empty-Edge-Case. Tradeoff: parallele Brain-Calls wenn der User waehrend einer laufenden Antwort schnell mehrere Nachrichten schickt. Brain (FastAPI) verarbeitet beide, conversation.jsonl koennte racen. App macht aber bereits Barge-In via cancel_request bei Folge-Nachrichten — in der Praxis treffen sich parallele Calls selten. Wenn doch Probleme: Bridge-Side asyncio.Lock um send_to_core in einer Folge-Etappe. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>