疑いは当たっていた
2026年9月17日のローカル実測。これは推測ではなく、現在のVaultで起きている状態です。
間違っているのは、守る範囲
現行方式は「この部屋に物が一つでも残っていたら、誰も帰れない」。新方式は「自分が持ち込んだ物の行き先を説明できたら帰れる」です。
いま:全体clean方式
- mainに誰かの差分がある
- 新しいworktreeを作れない
- 終了時も全dirtyを自分の責任にされる
- 救出worktreeへ退避し、未回収が増える
これから:所有差分方式
- 開始時の状態をbaselineとして記録
- 担当pathを宣言して隔離開始
- 競合は同じpathが重なった時だけ止める
- 自分が増やした差分だけ閉じる
開始・実行中・終了を、3つに分ける
Fableとの設計レビューで合意した新モデルは「Task Lease + Baseline + Owned Paths」。言い換えると、作業札・開始写真・担当範囲です。
誰が、何を触るか
agent・session・目的・HEAD・開始時status・担当pathを共通台帳へ登録。mainがdirtyでも、その状態を背景として記録して開始できます。
止める:担当pathが他のactive作業と重なる時越境だけを止める
実際に書いたpathとheartbeatを記録。CodexとClaude Codeが同じ台帳を見て、相手の担当範囲への書込みだけを止めます。
止める:所有path外への書込み・同一path競合自分の差分だけ閉じる
開始baselineから増えた所有差分を確認。終了は committed / handed_off / no_change の3種類。worktree全体のcleanは要求しません。
止める:自分の差分が未説明の時だけ残す安全策、変える安全策
commit gateを撤去する話ではありません。事故を防ぐ部分は残し、責任範囲が曖昧な部分だけを置き換えます。
そのまま残す
- primaryをfeatureブランチへ切り替えない
- commitは明示pathspecで範囲を限定
- 他セッションの変更を戻さない
- 同じpathを同時に触る時はhard block
所有差分方式へ変える
- main dirtyをworktree作成拒否に使わない
- Stop hookは全dirtyでなく自分の増分を見る
- finish directの「tree全体clean」を外す
- Claudeだけのsession registryを共通leaseへ統合
一気に替えず、観測から始める
作業を止めないための仕組みが、移行作業で作業を止めては本末転倒。まず新旧判定を並べて差を見るのが最も安い進め方です。
まだblockしない。Codex / Claude Codeの判定差だけをログに残す。
main dirtyでもHEAD基点のlinked worktreeを作れるようにする。
baseline以降、自分の担当pathに生じた差分だけを検査する。
既存のpathspec guardは当面維持し、古いack方式を段階的に外す。
作業完了と掃除を別責務にする。1週間観測後に旧dirty blockを停止。
「全部きれいだから安全」ではなく、
「誰の差分か分かるから安全」へ。