# v2-p2-async-bridge ## Goal Bridge synchronous EventEmitter to asyncio so DiscussionEngine can run in a thread while WebSocket/SSE consumers receive events asynchronously. ## Key files - `meeting_room/events.py` — add AsyncEventBridge class - `meeting_room/engine.py` — no changes (runs in thread as-is) ## Decisions log - 2026-05-04: AsyncEventBridge + asyncio.to_thread() chosen over async engine rewrite. Minimizes changes, engine stays sync. ## Open questions - [ ] None ## Completed steps - [x] AsyncEventBridge class in events.py - [x] Thread-safe bridge with call_soon_threadsafe - [x] subscribe/unsubscribe consumer queues - [x] Drop policy on full queues - [x] Tests (10/10 passing) ## Notes - events.py already has comment: "In Phase 2, an AsyncEventBridge will forward events to WebSocket clients" - Bridge subscribes to sync EventEmitter, puts events into asyncio.Queue - Consumers (WebSocket handlers, SSE handlers) read from the queue