[aside] did:webvh log の validate ロジックが server と quacker-channel に重複(PR #272 で観測)。

`src/identity.rs::validate_owner_did_log`(server の trust boundary)と `.claude/plugins/quacker-channel/src/owner_did.rs::verify_owner_did_log`(mint の self-check)が **ほぼ byte 同一**(`DIDWebVHState` 構築 → `log_entries push` → `validate().assert_complete()` → scid/did 抽出)。

- 直さない理由:別 crate(server `src/` vs quacker-channel plugin)に跨るので、共有には common module/crate が要る。#272 は意図的に両持ちで land(security 層として「server は client を信用せず独立 validate」自体は正しい設計、重複は実装都合)。
- リスク:did:webvh validation のロジック/version が変わると **2 箇所を lockstep 更新**する要があり、drift すると「mint の self-check は通るが server validate で落ちる(or 逆)」が起きうる。
- 適用案:両 crate が依存できる小 module に validate を寄せる。最低限、**同一 log を両関数に通して同一 (did,scid) を返す cross-check test** を置けば drift を検出できる(④ の cross-impl golden vector と同型の発想)。