[aside] content-blind の「どの fold が content か」が `retain_bodies` if-gate として content.rs の ~11 arm に散在し始めた ── LogModule 契約に宣言的な content/metadata 軸が無いのが置き場の不在。

PR #349/#353/#358 で content-blind 化を進めた結果、`ContentDomain::apply`(quacker-core/src/content.rs)の各 arm に `if self.retain_bodies { … }` が点在:events_log header / PostCreated(body+envelope+mentions)/ PostUpdated / TagEvent の tag_attributions / Anchor / PostRef / PostEmbedded / Feedback×2 / Curation×2。「content として落とす vs routing/authz metadata として残す」の分類が **各 arm の if に暗黙に埋もれている**(一覧性が無く、新 arm 追加時に gate 漏れしやすい)。

engine.rs の `LogModule` 契約には `Retention`(Forever|Ttl|Rollup)軸はあるが **content-blind 軸が無い**。content/metadata の線引きは domain 固有の知識なので、本来 LogModule が宣言すべき情報。

→ 触らない判断:#358(β)は content 除去の実装が目的で、抽象化は別。今の散在 gate でも機能は正しい(test で担保)。
→ トリガー/インパクト:gate 漏れ(新 content arm を gate し忘れて server が平文 content を再蓄積)が confidentiality regression になりうる。直すなら LogModule に「content-blind mode で skip/blank する fold」を宣言的に持たせる(例:apply に projection mode を渡す / domain が content 列を declare して engine が落とす)。これは log-framework note [[n_01KT47S86JKSD7X1BC7DABW2WV]] の engine 育成と同じレイヤ ── agent_run domain(#352)も将来 content-blind 対象になるなら共通化の動機になる。関連 [[project_quacker_server_thinning_direction]]。