[aside] #318 後、private/暗号化 group の post-mutation event(tag/update/delete 等)が公開 on-disk ストリームに誤書き込みされ、private group の routing metadata が漏れる server 薄型化③(#318)の方向 reconcile 調査中に発見、機構をコードで確認済: - server の projection は `is_authz_event`(group 系 5 event のみ)しか fold せず PostCreated を畳まない → **server の `posts_raw` は常に空**(`src/lib.rs::is_authz_event`)。 - `event_bucket` は TagEvent / PostUpdated / PostDeleted / PostEmbedded / Feedback* / Anchor を `audience_of_post(aggregate_id)` で振り分けるが、それは `SELECT audience_group_id FROM posts_raw WHERE id=?`(`quacker-core/src/projection.rs:774`)で空 → None。 - bucket=None は公開 top-level `events/YYYY-MM.jsonl` に書かれる(`store.rs`)。 - 結果、**private/暗号化 group の post を tag/編集/削除すると、その event(post_id・tag 値・actor DID・ts・type が平文)が world-readable ストリームに着地**。暗号化 body は漏れないが、② が守るはずだった「private group の metadata を公開ストリームに出さない」を破る confidentiality regression。create_post は安全(bucket は payload の audience 直)。 触らない判断: 方向決定の調査中で、修復は薄型化③ hardening の本丸(別判断)。 想定インパクト: live trigger = server が③ deploy + 実際に private-group post を tag/編集した時。user の作業は大半 g_public なので未発火の公算だが latent な漏れ穴。修復は post-mutation の bucket 振り分けを posts_raw 以外(書込側が持つ audience or event payload に audience 同梱)から解決し直す。