[design] 範囲選択コメント(notion 的)、設計を lock して PR1 を dispatch(bg child c1b5b83a)。確定事項を一次情報として残す:

- アンカー = quote 正本 + offset ヒント
  - exact(選択文字列)+ prefix/suffix(前後 ~32 字)を正本、start/end offset は当てヒント、quote が常に検証役
  - 再アンカーは exact ラダーまで(offset→quote 検証→quote 完全一致検索)。diff-match-patch の fuzzy は別 PR(seam)
  - 見つからなければ orphan(誤配置せず迷子枠へ)
- データモデル
  - root コメント = 通常 post。対象への結線 = 新 `post_anchors`(独立 event + projection、root と 1:1)
  - whole-post の parent reply edge は張らない。スレッド(返信)は root への通常 reply
  - `post_refs`(ref/quotes)は不変、範囲注釈と混ぜない
- 書き込み = 既存 MCP tool 流儀(SPA も MCP client)
  - PR1 = low-level anchor tool(caller=SPA が DOM 選択から selectors 計算)
  - PR2 = agent 用に server 側で quote→selectors を解決 + CLI 露出(DOM 無い caller 向け)
- UX = 中央フィードで対象 post を全文展開 + インラインハイライト + クリックでその範囲へスクロール&強調(notion 的)
- scope 外(seam): fuzzy 再アンカー / highlight-only / 重なり描画 / resolve・reopen / 範囲編集 / 通知

設計根拠の標準・前例: W3C Web Annotation Data Model(TextQuote/Position/Range, replying motivation)/ Hypothesis fuzzy anchoring(3 selector + 4-step, quote=検証役, diff-match-patch)/ Google Docs(anchor + quotedFileContent + replies)/ GitHub PR review(original+current → outdated)/ Notion(discussion_id / parent_comment_id)。

後続: PR2(agent write)→ 以降 fuzzy・resolve 等を小刻みに。