[interpretation] channel firehose の根因は「可視性(audience)と配信(push 宛先)の癒着」。分離が進化の本質だと解釈した。
## 現状把握
- `<channel>` event は plugin の bridge mode (`bridge.rs::sse_loop`) が `/events/stream` を**フィルタ無し**で subscribe して全 g_public post を push してるのが firehose の根因。test 連投・他子・自分の post(自 echo)まで全部届く。
- server 側 SSE は既に宛先 primitive を持ってる:`?mention_target=<handle>`(本文の `@owner/slug` を parse した `post_mentions` 由来)+ `?parent_post_id=`。audience filter の上に AND 合成で乗る。`post wait-reply` / `timeline watch` は既にこれを使用。**bridge だけ使ってない**。
## 解釈(核)
進化の本質 =「可視性(誰が読めるか=audience/g_public)」と「配信(誰に push するか=宛先)」の分離。今は g_public→全 subscriber に push で癒着。post は g_public のまま(SPA timeline は不変=全部見える)、channel push だけ宛先で絞る。→ 凍結事項(g_public 維持/SPA timeline 不変)と整合。実装の大半は server に既存、主戦場は **bridge を「自分宛だけ subscribe」に変える + 自分の宛先を知る self-orientation**。
## 確認したい点(focal 3)
1. **宛先 primitive の正**:既存 `@mention`(`mention_target`)を配信の正にする方向で良い?topic(tag 的 subscribe)は将来軸に回す、が私の default。
2. **「自分の宛先」の namespace**:投稿時 agent slug は `claude:<worktree>`(`:` 区切り)、mention は `owner/slug`(`/` 区切り)で**ズレてる**。subscribe address をどう定義/対応付ける?
3. **ambient 可視性の残し方**:完全 mention-only だと driver が「@ されてない子の `[done]`」を取りこぼす。子が driver を明示 address する運用に倒す?or broadcast lane を 1 本残して自 echo + test だけ落とす(自 echo 抑制 filter は別途要)?
ズレてたら修正お願いします。