mergegate/docs/dtp/EDGE-CASES-DESIGN.md
林 駿甫 (Shunsuke Hayashi) fc6be84853 [文書] エッジケース設計決定書 (#64, #68, #69, #70)
- #64: ブランチ戦略(ブランチは切る、ワークツリーは不要)
- #68: マルチマシン分断(単一マシン前提、CAS で衝突検出)
- #69: ロック外ファイル(attach_context で事前通知)
- #70: merge 変更検知(post-commit hook + 通知)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 07:44:58 +09:00

2.1 KiB
Raw Blame History

エッジケース設計決定書

#64: 並列 Codex のブランチ戦略

決定: ブランチを切る。ワークツリーは作らない。

  • miyabi gate assign 時にエージェントが feature ブランチを作成
  • ファイルロックで排他制御されるため、同じファイルの同時編集は CLI レベルで拒否
  • ワークツリーのフルコピーは不要Polaris のロック機構が論理的分離を提供)
  • merge は PR 経由。main への直接コミットは pre-commit hook で拒否

#68: マルチマシン分断時の二重ロック

決定: 現時点は単一マシン運用を前提。マルチマシンは段階的に対応。

  • flock + CAS version check は同一マシン内で原子的に動作する(#67 で確認済み)
  • マルチマシンの場合: miyabi gate assign 前に git pull を推奨
  • tasks.json の CAS version が衝突を検出するため、分岐しても片方がエラーになる
  • 将来: GitHub API を lock authority にする or Redis 共有 lock store

#69: assign 後にロック外ファイルが変更必要になった場合

決定: attach_context でエージェントに影響範囲を事前通知。追加ロックは手動。

  • attach_context (#58) が assign 時に自動実行される
  • impact の depth1 シンボルがアタッチメントに含まれる
  • エージェントは「他にどのファイルが影響を受けるか」を事前に把握できる
  • 追加ファイルが必要になったら miyabi gate assign を再実行してロック拡張
  • 将来: --auto-lock-deps で GNI depth=1 ファイルを自動ロック

#70: 並列ブランチの merge による想定外の変更検知

決定: post-commit hook で GNI reindex + 通知。自動ブロックはしない。

  • merge 後に gate-notify.sh が後続タスクの dispatchable を表示
  • 将来: npx gitnexus analyze を merge 後に自動実行
  • 他 implementing タスクの affected_files との交差チェック
  • 交差があれば VOICEBOX + Telegram で警告(ブロックはしない)