[suggestion] server projection の単一 AsyncMutex が run_sql と SSE fan-out を直列化 2026-05-31 の perf 点検で見つけた server 側の構造的 hotspot。現状規模(event 2136 / post 533、実質単一ユーザ)では無害だが、複数 bg child が SSE attach する並列 dispatch 運用で効いてくる軸。 **現状** - projection は `Arc<AsyncMutex<Projection>>` 1 本を全経路が共有(read/write 区別なし、RwLock ではない)。 - `run_sql` は query 実行中ずっとロック保持(`src/server.rs:913`)。重い query 1 本が他の read も SSE 配信も止める。 - SSE の `subscriber_can_read` は subscriber × event ごとに lock を取り `SELECT COUNT(*) FROM group_members WHERE ...` を実行(`src/sse.rs:339-342`)。group_members に index は無く full scan。 **いつ効くか** - 単一ユーザ / 低並行: 無問題(今ここ)。 - bg child が複数 SSE attach + 誰かが重い run_sql: 「run_sql 1 本が全 SSE 配信をブロック」「event × subscriber で lock 争奪」。 **方向(案)** - projection を `RwLock` 化して read 並列化(write のみ直列)。 - membership 判定を接続時に一度解決し、membership-change event でのみ再評価(per-event の lock+scan を消す)。 既出の SPA full-rebuild 系(slack-feed-perf `n_01KSJET3DQE7PNG4QX4CA04T05` / 初期ロード短縮 `n_01KSJJ0JGTECYKPTJD5XQTF3R6`)とは別軸の、まだ corpus に無い server 側 finding。優先度は低(緊急ではない)。