# Git 運用ルール > このリポジトリにおけるコミットとプルリクエストの出し方の定義。 > 全エージェント・全人間がこのルールに従う。 --- ## ローカルコミットのルール ### いつコミットするか | 状況 | コミットする? | |------|-------------| | ファイルを1つ以上変更した | はい、すぐコミット | | テストを追加した | はい、すぐコミット | | ドキュメントを更新した | はい、すぐコミット | | 設定ファイルを変更した | はい、すぐコミット | | 作業途中だが一区切りついた | はい、途中でもコミット | | 1時間以上コミットしていない | 危険。今すぐコミット | **原則: 小刻みにコミット。大きな変更を1コミットにまとめない。** ### コミットメッセージの形式 日本語タグ形式を使用する。 ``` [タグ] 何をしたかの要約(1行、日本語) (必要なら)詳細・理由・影響範囲 ``` ### タグ一覧 | タグ | いつ使う | 例 | |------|---------|-----| | `[追加]` | 新しい機能・ファイルを加えた | `[追加] DAGエンジンのトポロジカルソート実装` | | `[修正]` | バグ・不具合を直した | `[修正] ロック競合チェックの off-by-one エラー` | | `[改善]` | 既存コードの品質・性能を上げた | `[改善] Clippy警告を解消` | | `[整備]` | 設定・CI・依存など開発環境の手入れ | `[整備] clap 依存を Cargo.toml に追加` | | `[文書]` | ドキュメント・READMEの更新 | `[文書] HANDOFF プロトコルを追加` | | `[削除]` | 不要なコード・ファイルを取り除いた | `[削除] 未使用の TaskState::Deploying を削除` | | `[検証]` | テストの追加・修正 | `[検証] GATE拒否テスト5件追加` | | `[完了]` | Phase が完了した(GATE GREEN) | `[完了] Phase 2: ステートマシンGATE統合` | ### コミットの粒度 ``` 良い例: [追加] TaskLock に last_heartbeat フィールド追加 [検証] lease 期限切れテスト追加 [修正] is_expired() の閾値計算を修正 悪い例: [追加] Phase 4 全部実装 ← 大きすぎ。分割すること ``` --- ## リモート push のルール ### いつ push するか | 状況 | push する? | |------|-----------| | Phase の GATE が GREEN になった | はい、必ず push | | HANDOFF_NOTE.md を書いた | はい、必ず push(次のエージェントが pull する) | | 作業の区切りがついた(3コミット以上溜まった) | はい、push | | 1日の作業終了時 | はい、必ず push | | テストが RED のまま | push してよい(ただしコミットメッセージに明記) | **原則: push は頻繁に。ローカルに溜め込まない。** --- ## プルリクエストのルール ### いつ PR を出すか このリポジトリでは **Phase 単位で PR を出す**。 | 状況 | PR を出す? | |------|-----------| | Phase の GATE.md が全て GREEN | はい、PR を出す | | Phase の作業が途中 | 出さない(main に直接 push でよい) | | 複数 Phase をまとめて | 出さない(1 PR = 1 Phase) | ### PR のタイトル形式 ``` [完了] Phase {N}: {Phase の要約} ``` 例: ``` [完了] Phase 1: 型定義のハードニング [完了] Phase 2: ステートマシンにGATE predicate統合 [完了] Phase 6: Protocol統合(全GATEを1クラスに結合) ``` ### PR の本文テンプレート ```markdown ## 概要 Phase {N} の全タスクを完了。 ## 完了したタスク - [x] タスク1 - [x] タスク2 - [x] タスク3 ## テスト結果 - cargo test: {N}/{M} GREEN - cargo clippy: 警告ゼロ ## GATE 状態 autorun/phase-{N}-*/GATE.md の全条件 GREEN ## 次の Phase Phase {N+1} に引き継ぎ可能。 HANDOFF_NOTE.md を autorun/phase-{N}-*/ に配置済み。 ``` ### PR のマージ条件 | 条件 | 必須? | |------|--------| | cargo test GREEN | 必須 | | cargo clippy 警告ゼロ | 必須 | | GATE.md 全条件 GREEN | 必須 | | HANDOFF_NOTE.md 作成済み | 必須 | | 人間のレビュー承認 | Phase 6, 8 のみ必須。他は自動マージ可 | | Codex レビュー | 推奨(必須ではない) | ### ブランチ戦略 ``` main ← 全ての作業はここに直接 push ← Phase 完了時に PR(main → main ではなく、記録用) feature/phase-{N}-{slug} ← Phase の作業ブランチ(任意) 例: feature/phase-2-state-machine-gates worktree ← Codex が並列実行時に使用 ``` **原則: main に直接 push してよい。ブランチは並列作業時のみ使用。** --- ## 現在のコミット履歴 ``` b3dcbfa [整備] autorun/ をトップレベルに移動 5f8b4e2 [文書] Auto Run Playbook 階層化 + Handoff Protocol 完成 c88f218 [追加] Rust 基盤: types + state machine with GATE predicates c030294 [追加] 初期条件: SSOT ドキュメント + ワークスペース構造 ``` --- ## 禁止事項 | 禁止 | 理由 | |------|------| | `git push --force` | 他エージェントの作業を消す | | `git reset --hard` | ローカルの未コミット変更を消す | | 1日以上 push しない | 他エージェントとの同期が切れる | | コミットメッセージを英語で書く | このリポは日本語タグ形式 | | 10ファイル以上を1コミットにまとめる | 分割すること |