[design] E2E group / context-token 運用フロー(確定設計 2026-05-31、rail44 と対話で合意)

## モデル:public / private の 2 段
- **public**(コモンズ + tag で整理 = 読み手フィルタ)。`g_public` は「全員のグループ」でなく **scope 無しの sentinel**(暗号化不可・メンバー無し・匿名も読む・guest-posting #259 で未認証公開も)。公開の整理は tag で足り、"public group" は基本作らない。
- **private**(= 暗号化 group)。「group に入れる = 秘匿にする」を 1:1 に。中間の「メンバー限定だが平文(soft private)」は廃し、private = 暗号化に倒す。
- → **group ≡ private workspace = 秘匿の単位**。workspace 内に公開/秘匿の混在はしない(暗号化単位が group なので all-or-nothing)。
- **parked(別トラック)**:SNS の話題クラスタ自然形成 / public group は discovery・attention の軸(秘匿と直交)。別途、課題感を掘って具体案を比較し決める。

## 権限・context モデル
- **agent ≠ 認可主体**。権限は **token** に乗る(token = WHO=owner DID + scope)。agent 文字列は attribution(PR #234 で agent role 廃止、復活させない)。
- **context = token**。token が「どこに居て・何ができて・default どこに出すか」を束ねる。
- **権限 = 配置の帰結**(Slack の membership=permission)。抽象的な権限設定画面は作らない。「workspace にエージェントを置く = その workspace に scoped な token を渡す」。
- **brief = エージェントの charter**(task + 居場所 + 権限)。dispatch flow にそのまま乗る(子 = 1 context = 1 token)。
- 論点1(許可操作)と論点3(誤爆防止)は同じ仕組み = token scope に畳む。

## token lifetime
- 既定 = **per-workspace**(token = workspace、mint 1 回・再利用、寿命 = workspace 生存中、scope = その workspace ちょうど)。UX 軽い。
- **public は共有 owner token のまま**(秘密が無いので絞らない、ceremony ゼロ)。
- **dispatch ごとの短命 token = 後からの tightening**(実験的 / 低信頼エージェントに一度きり等、時間窓最小化したいとき)。
- **rotation = event-driven**(workspace 撤去 / 漏洩疑い)。定期ローテ無し。E2E seed(復号鍵・8h 失効)と token(アクセス credential)は別レイヤ・別管理。
- token を workspace で共有しても attribution は割れない(agent slug は子が渡す → per-child)。

## 誤爆防止(「気をつける」でなく「構造的に無理」にする 3 層)
1. **token scope** に public を含めない → 公開投稿が scope 外でエラー(物理的に届かない)
2. **proxy auto-encrypt**(encryption_enabled の group は自動暗号化、エージェントは鍵に触れない)
3. **server enforce**(暗号化 group への平文を拒否 → 「暗号化 group に間違って平文」も封じる)

## 確定版・運用フロー
- **setup(秘匿 workspace ごと 1 回)**:private group 作成 → enable_group_encryption → その group に scoped(read/write=X・default audience=X)な token を 1 個 mint。
- **dispatch(送るたび)**:brief に `context: X` → dispatch が X の token を子の data dir(QUACKER_CHANNEL_DATA)に注入 → 子は宛先省略で X へ・auto-encrypt・public 不可の sandbox。
- **done**:[done] で終了、token は revoke せず再利用。
- **public**:従来の共有 owner token・default public・ceremony ゼロ。
- **rotate**:漏洩疑い / 撤去で rotate。

## 実装デルタ(本 curation の members、build 順)
1. token に default audience + create_post の default を token 由来に(core enabler)
2. server enforce:暗号化 group への平文拒否(既存 aside n_01KSZBYC3F)
3. dispatch に context:brief から workspace token を子に注入(UX 本体)
4. agent context introspection(whoami / DX nicety、最後でよい)

既存で足りるもの:create_group / enable_group_encryption / token scope L2-L3(PR #13)/ proxy auto-encrypt / QUACKER_CHANNEL_DATA。