Commit gate redesign

安心して始める。
きちんと終える。

安全装置が、ほかの作業まで「片づけて」と言い続けていました。直すのは、あなたの使い方ではなく仕組みです。誰が何を担当しているかを先に記録し、会話の区切りと作業の完了を分けます。

NOW

本体は反映済み。
いまは最終確認中。

2026年9月17日 更新。導入と、使い続けても邪魔をしないことの確認は別です。

反映・確認できたこと

  • mainに他作業が残っていても、別の作業場所を作れる
  • Stopは中断。全体の未コミットを理由に返答を繰り返さない
  • 担当範囲・開始時点・成果物の内容を記録する
  • 実Claude Codeで、書込み→中断→受領・保存まで検証
  • 他作業の26ファイルは統合前後で内容一致

まだ「完了」にしない理由

  • 本番の両AIで、開始から終了までの観測を続ける
  • 24時間以上と必要な実行ケースの両方を満たす
  • 誤った停止・誤った完了がないか確認する
  • 現在は観測モード。書込みの強制ガードは最終確認後
あなたが覚えることは、3つだけ

始めるときは「何を直すか」。
休むときは「続きはあとで」。
終えるときは「保存と確認は済んだ?」。

01

何が、邪魔をしていたのか

以下は2026年9月17日・修正前の調査時点の記録です。件数は常に変わります。

28mainの未コミット件数自分の作業ではない差分を含む。この状態だけでCodexの正規開始手順が拒否されました。
44登録worktree数今回の調査用を含む実測値。うち29 worktreeがdirtyでした。
0Claude active lockClaudeプロセスは複数動いている一方、共通判断に使えるactive session JSONは0件でした。
実際の自己閉塞: `--check` は「worktreeへ移れ」と拒否。その直後の `--prepare` は「mainがdirtyだからworktreeを作れない」と拒否。安全な場所へ移るための入口を、安全装置自身が塞いでいました。
02

間違っていたのは、守る範囲

旧方式は「部屋に物が残っていたら、誰も帰れない」。新方式は「自分の仕事は保存し、ほかの人の仕事には触れない」。持ち主不明の変更を見つけたら、勝手に片づけず確認します。

以前:部屋全体の片づけを要求

  1. mainに誰かの差分がある
  2. 新しいworktreeを作れない
  3. 終了時も全dirtyを自分の責任にされる
  4. 救出worktreeへ退避し、未回収が増える

新方式:担当する仕事を確認

  1. 開始時の状態をbaselineとして記録
  2. 担当pathを宣言して隔離開始
  3. 競合は同じpathが重なった時だけ止める
  4. 自分が増やした差分だけ閉じる
03

開始・実行中・終了を、3つに分ける

作業札・開始写真・担当範囲。この3点はAIが記録します。あなたが毎回、専門用語やコマンドを覚える必要はありません。

START / 作業札

誰が、何を触るか

どのAIの、どの作業が、何を触るかを記録します。ほかの人の作業がmainに残っていても、新しい作業場所は作れます。最初から変更済みのファイルを、勝手に自分の担当にはしません。

あなたは「何をしたいか」を伝える
WORK / 見張り

越境だけを止める

CodexとClaude Codeが同じ作業札を見ます。範囲を増やすときは先に登録。会話が途切れても、担当と開始時点は消しません。コマンド経由の変更も、終了前に差分を確認します。

「続きはあとで」で中断できる
FINISH / 受け渡し

自分の差分だけ閉じる

「保存済み」「別のAIへ受け渡し」「変更なし」を区別します。受け渡した内容は、受領から保存まで照合。保存済みでもmainへの統合待ちなら、そのように報告します。

「保存・検証・統合の状態」を受け取る
04

残す安全策、変える安全策

commit gateを撤去する話ではありません。事故を防ぐ部分は残し、責任範囲が曖昧な部分だけを置き換えます。

そのまま残す

  • primaryをfeatureブランチへ切り替えない
  • commitは明示pathspecで範囲を限定
  • 他セッションの変更を戻さない
  • 同じpathを同時に触る時はhard block

所有差分方式へ変える

  • main dirtyをworktree作成拒否に使わない
  • Stopは中断。完了判定は明示的な終了時だけ
  • finish directの「tree全体clean」を外す
  • Claudeだけのsession registryを共通leaseへ統合
05

「入れた」で終わらず、使って確かめる

専用の常駐サーバーや毎回のAI判定は増やしません。小さな共通台帳と既存の仕組みを使い、必要な場面だけ検査します。

実装・隔離テスト:確認済み

作業の衝突、受領内容の改変、担当外が混じるcommit、保存せず完了するケースを検査しました。

本番への反映:実施済み

旧Stopの全体片づけ要求を外しました。作業場所の隔離と、対象ファイルを指定するcommit保護は残しています。

24時間以上の観測:進行中

時間だけで合格にはしません。両AIの実イベントと必要ケースを確認し、問題があれば直して再確認します。

強制ガードへ移行:受入後

誤停止・誤完了がないことを確認して導入担当が切り替えます。問題が出たら観測へ戻し、旧Stopループは復活させません。

古い作業場所:保全して別管理

45 worktreesを棚卸し。持ち主や回収状態が分からないものは、そのまま残します。今回、まとめて削除・退避・統合はしません。

THE BOTTOM LINE

「全部きれいだから安全」ではなく、
「誰の差分か分かるから安全」へ。