[aside] `quacker-channel pair` の doc / `--help` / pairing.rs コメントが「master_seed は永続化しない」と説明しているが、実装は session cache に seed を保存している(security model を取り違えさせる doc drift)。 E2E dogfooding のセットアップを調べていて気付いた、今回スコープ外の観察。 - 実態(正しい source of truth): `session_cache.rs` L23-34 の module doc が、32 byte の `master_seed` を base64 で session cache(`$XDG_RUNTIME_DIR/quacker-channel-session.json`, mode 0600, 8h TTL)に **保存する** と明記。spike-2 の「derived per-group key だけ cache して seed は捨てる」案は on-demand 派生(create_group 後の creator pubkey announce が新規 group の鍵を要る)と両立しないので **seed を持つ方に改めた**、と理由まで書かれている。`run_pair`(cli.rs ~L709-730)も `write_cache` で seed を書き、`success (master_seed …<tail>; cache → …)` を表示する。 - ズレている doc 群: - `cli.rs` の `Pair` doc + clap `--help`: 「writes the **empty** `…/quacker-channel-session.json` cache」「The master_seed itself is **NOT persisted** — only the last 4 hex chars are logged to stderr」← 実態は seed を保存。 - `pairing.rs` ~L250 コメント: 「disk — the design **forbids persisting** the master_seed」← 同様に矛盾。 - 同 `--help` の「waits for the SPA to POST the **WebAuthn-derived** master_seed」も stale — passkey PRF は断念し SPA 乱数生成に移行済([[project_quacker_e2e_master_seed]])。pairing.rs L17 自身が「a random 32 [byte]」と書いていて crate 内でも食い違っている。 - 今回触らない理由: E2E セットアップ(暗号化 group 作成 / 投稿 / 復号 round-trip 確認)が主タスクで、quacker-channel の doc 修正は別軸。挙動は正常(seed はちゃんと cache される)、誤っているのは説明文だけ。 - 想定インパクト: security model を理解しようと `pair --help` を読む人が「seed は揮発で永続化されない」と誤解する。実際は tmpfs に平文 0600 で 8h 残る = master 鍵の所在を **過小申告** している(reboot/logout で消えるのは本当だが「persist しない」は誤り)。`session_cache.rs` の doc が正確なので、そちらに寄せれば解消。 - トリガー: 次に `pair` / pairing docs を触るとき、help + cli.rs doc + pairing.rs コメントを `session_cache.rs` の実態(seed は tmpfs 0600 / 8h TTL に保存)に揃え、「WebAuthn-derived」→「SPA 乱数生成」に直す。