mergegate/docs/dtp/GIT-RULES.md
林 駿甫 (Shunsuke Hayashi) 146fcafc5e [追加] DTP (Deterministic Task Protocol) 設計文書・指示書を移植
deterministic-task-protocol リポから miyabi-cli-standalone に統合:
- docs/dtp/: PLAYBOOK, PLAN, UML, GIT-RULES, Codex レビュー 3件
- autorun/: Phase 0-8 の TASKS/ASSIGNMENT/GATE + INDEX/HANDOFF/ROLLBACK
- project_memory/tasks.json: 全9 Phase の DAG SSOT
- skills/: polaris-ops, rust-llm-pitfalls
- .codex/instructions.md: Codex 設定

実装は miyabi-core に gate.rs, lock.rs, protocol.rs, store.rs を追加する方針。
既存の dag.rs, github.rs, approval.rs 等は変更不要。

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

170 lines
5.4 KiB
Markdown
Raw Permalink 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.

# 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 完了時に PRmain → 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コミットにまとめる | 分割すること |