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

38 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# エッジケース設計決定書
## #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 で警告(ブロックはしない)