mergegate/docs/dtp/reviews/round2-playbook.md
林 駿甫 (Shunsuke Hayashi) 39a5180b8e [文書] DTP Playbook v2: 8 Phase → 3 Phase に圧縮
miyabi-core 既存資産(7,654行)を最大活用する方針に転換。
v1 の 1,780行新規 → v2 の 1,000行新規(既存 DAG/GitHub/承認/並列を流用)。
推定時間: 1〜1.5時間 → 25〜35分。

Phase A: gate.rs + lock.rs + store.rs + protocol.rs(4ファイル新規)
Phase B: CLI サブコマンド追加(既存 main.rs に追加)
Phase C: GitHub Evidence + E2E テスト

Codex Round 2 レビュー 3件も保存。

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

196 lines
12 KiB
Markdown

# Auto Run Playbook Review Round 2
対象レビューの前提:
- 指定された `docs/autorun/00``08`, `docs/PLAYBOOK.md`, `docs/PLAN-v1.md` はこのワークスペースでは見つかりませんでした。
- そのため、Phase 0〜8 と Codex 3-body 反映がまとまっている実質的な対象として `[deterministic-protocol-playbook.md](/Users/shunsukehayashi/dev/ops/openclaw-workspace/docs/design/deterministic-protocol-playbook.md)` を主レビュー対象にし、元草案として `/Users/shunsukehayashi/.claude/plans/snuggly-bouncing-turtle.md`、既存レビューとして `KOTOWARI/reviews/102-104` を補助参照しました。
- 以下はその前提での detailed review です。
## Findings
### 1. Critical: Phase dependency DAG が本文と矛盾しており、Phase 4 の依存が不足しています
- 依存関係表では Phase 4 は Phase 3 のみ依存です (`deterministic-protocol-playbook.md:864-867`)。
- しかし本文では Phase 4 の `FileLockManager``EventStore``SnapshotStore` に依存し (`:473-478`)、さらに Phase 1 で追加した `TaskLock` 型にも依存します (`:177-184`)。
- これは表で `4 | 3` と書かれているのが不完全で、実質は `4 | 1,3` です。
- 同様に Phase 5 も表では `3` のみ依存ですが (`:866`)、`GitHubEvidence``CompletionMode` は Phase 1 で入る型に依存しています (`:196-209`, `:223-249`)。
影響:
- 自動オーケストレータが依存表だけを見て実行すると、未定義型のまま Phase 4/5 を先行開始し得ます。
- 並列実行時の「着手可能判定」が誤るため、Playbook の DAG Integrity を損ねます。
推奨:
- 依存表を以下に修正してください。
- Phase 4 → `1,3`
- Phase 5 → `1,3`
- Phase 6 → `1,2,3,4,5`
- 依存 DAG は prose ではなく machine-readable にも持つべきです。少なくとも `phase_id`, `depends_on`, `artifacts_produced`, `artifacts_required` を JSON/YAML で定義した方がよいです。
### 2. Critical: approval gate が「Phase 遷移」を止める設計になっておらず、個別 API gate と Playbook gate が分離しています
- 文書全体では「Do not start coding until Phase 0 is GREEN」とありますが (`deterministic-protocol-playbook.md:921`)、Phase 1 以降を止める機械的 gate は Phase 完了条件の文章だけです (`:163`, `:259`, `:364`, `:452`, `:522`, `:605`, `:777`, `:806`, `:844`)。
- Phase 6 の GATE 群は task lifecycle 用であり (`:627-762`)、Playbook lifecycle 用ではありません。つまり `registerTask``assignAndLock` の gate はある一方、「Phase 3 が未完了なら Phase 4 の実装を開始できない」を enforce する仕組みが書かれていません。
影響:
- 自律エージェントが「コードを書き始める/次 Phase へ進む」判定を自然言語で行ってしまう
- Playbook の自律実行で premature transition が起きる
推奨:
- Phase ごとに明示的な `approvalGate` を追加してください。
- 最低限必要な gate:
- `phase0_gate`: 全テスト GREEN と index fresh の実コマンド結果を保存済み
- `phaseN_exit_gate`: 生成ファイル、テスト、レビュー項目、ログ記録が揃っている
- `phaseN_to_phaseN+1_gate`: 前 Phase の exit gate artifact を検証済み
- これを CLI でも `miyabi playbook phase-approve <phase>` のように機械可読化するのが安全です。
### 3. High: retry 条件が failure mode 網羅になっていません
- 文書に retry が明示されるのは主に GitHub API degraded mode だけです (`deterministic-protocol-playbook.md:580-590`, `:602-603`, `:775`)。
- しかし failure mode はもっと多いです。
未定義または不十分な failure mode:
- CAS conflict 発生時の retry/backoff 方針がない (`:433-437`)
- `flock` 取得失敗・lock file 破損時の retry がない (`:428-445`, `:480-488`)
- event append 失敗時の retry / fail-fast 条件がない (`:393-399`)
- snapshot rebuild が壊れたときの fallback がない (`:418-420`, `:844`)
- stale lease 解放後に元エージェントが遅延 heartbeat を送った場合の fence token がない (`:503-505`, `:692-695`)
- GitHub evidence fetch は retry があるが、GraphQL の closingIssuesReferences 部分の partial failure 方針がない (`:557-560`)
- `recordBranch`, `recordPR`, `verifyMerge`, `confirmDone` で idempotency が定義されていない (`:698-744`)
推奨:
- 各 Phase に「retry matrix」を追加してください。
- 各 API で少なくとも次を定義:
- retryable / non-retryable
- max attempts
- backoff
- idempotency key
- terminal state
- lock 系は heartbeat だけでなく fencing token を入れるべきです。lease を再取得した新オーナーより古い heartbeat は無効化できないと race が残ります。
### 4. High: Codex 3-body review 反映は前進しているが、未反映の運用タスクがまだあります
反映済み:
- soft deps を level から外す (`deterministic-protocol-playbook.md:43-45`, `:357-360`)
- event log + snapshot (`:45`, `:368-452`)
- GitHub evidence (`:46-50`, `:536-560`)
- completionMode (`:50`, `:208-209`, `:738-740`, `:759-761`)
未反映または不足:
- review source の traceability がない
- R1/R2/R3 のどのレビュー文書・誰の判断に基づくかを artifact として残していない。表 (`:34-50`) だけでは実装後の監査に弱いです。
- single-writer fallback の実運用手順がない
- Windows/SMB で advisory lock 非保証と書いているだけで (`:899`)、誰が writer になるか、フェイルオーバー手順、二重 writer 検出がありません。
- queue/lock 連携の migration task がない
- 既存 `agent-skill-bus``task-manager` のどちらが lock authority になるか、切替手順がないです。これは earlier review の coordination 論点に対して未着手です。
- approval/audit hook の統合タスクがない
- Phase 8 で `record-run` はありますが (`:833`)、Phase 単位のレビュー承認記録、human approval の永続化フロー、announce/notification は Playbook に未定義です。
- protocol bypass hardening task がない
- 検証項目には「Protocol 以外の経路で applyTransition を呼ぶテスト」がありますが (`:911`)、実際に `applyTransition` を private 化・export しない・store 直書き禁止 lint を入れる等の implementation task が相当 Phase にありません。
### 5. High: autonomous execution にはまだ曖昧さが残っています
曖昧な点:
- 成果物の exact artifact が Phase ごとに固定されていない
- 例えば Phase 2 は何ファイルが追加されれば done か曖昧です (`:270-364`)。
- 誰が human approval を出せるか不明
- `approvedBy` はあるが authority が未定義です (`:243-249`, `:671-675`)。
- branch existence check の実行コンテキストが不明
- `git branch --list` はどの repo/worktree で走るか未指定です (`:700-703`)。
- `current HEAD` / `current file set` の基準が曖昧
- `recordImpact()` の gate が repo root / branch / worktree のどれを指すか不明です (`:661-665`)。
- GitHub linked issue 判定の repo 境界が不明
- mono-repo / cross-repo PR の扱いが未定義です (`:557-560`, `:736-740`)。
結論:
- 現状のままでは「理解している人間」なら進められますが、「Playbook だけ読んだ agent が曖昧さなく自律実行」はまだ厳しいです。
## Direct Answers
### 1. Are the Phase dependencies correct?
部分的には正しいですが、不完全です。
正しい点:
- Phase 6 が 2/3/4/5 の統合に依存するのは妥当です (`deterministic-protocol-playbook.md:867`)。
- Phase 7 → Phase 8 の流れも妥当です (`:868-869`)。
誤りまたは不足:
- Phase 4 は実質 `1,3` 依存です。
- Phase 5 は実質 `1,3` 依存です。
- 並列可能の記述「Phase 2 は Phase 3/4 と並行可能」は、Phase 6 で統合する前提では正しいものの、型変更が Phase 2/3/4 に跨るので merge coordination task が必要です (`:888-890`)。
### 2. Are the approval gates sufficient to prevent premature Phase transitions?
いいえ。task gate はあるが phase gate は足りません。
不足している gate:
- Phase start gate
- Phase exit artifact verification
- reviewer/human approval authority
- protocol bypass prevention before later phases start
- migration completion gate before switching authority from old queue/lock to new protocol
### 3. Are the retry conditions complete for each failure mode?
いいえ。不完全です。
特に不足:
- CAS conflict retry
- lock acquisition retry and fencing
- late heartbeat handling
- event append failure
- snapshot corruption/rebuild fallback
- GitHub partial evidence failure
- idempotent re-run of `recordPR`, `verifyMerge`, `confirmDone`
### 4. Is any Phase missing tasks that should be there based on the Codex 3-body reviews in docs/reviews/?
はい。少なくとも次が抜けています。
- Phase 2 or 3:
- protocol bypass hardening task
- transition API visibility restriction
- Phase 3 or 4:
- single-writer / fallback writer election task
- fence token implementation
- Phase 5:
- legacy authority migration plan from existing queue/lock
- GitHub evidence partial-failure handling
- Phase 8:
- phase-level approval/audit recording
- crash recovery / replay test
- idempotent rerun test
補足:
- `KOTOWARI/reviews/102-104` は直接この Playbook のレビューではありませんが、そこに共通している教訓は「SSOT 不明」「計画を止める gate が弱い」「CI/計測がないまま完了条件だけ測定可能として書かれている」です (`KOTOWARI/reviews/102-storage-layer-review.md`, `KOTOWARI/reviews/103-testing-strategy-review.md`, `KOTOWARI/reviews/104-implementation-timeline-review.md`)。この弱点は現 Playbook にも残っています。
### 5. Can an agent execute these Playbooks autonomously without ambiguity?
まだ完全には無理です。
理由:
- 依存が表と実装本文でずれる
- Phase gate が機械可読でない
- retry matrix が不足
- authority/operator の定義が不足
- repo/worktree/repo-owner 境界が曖昧
人間の伴走ありなら実行可能ですが、完全自律化には次が必要です。
## Recommended Changes Before Auto Run
1. `playbook.yaml` を追加し、各 Phase に `depends_on`, `inputs`, `outputs`, `approval_gate`, `retry_policy`, `owner`, `commands` を持たせる。
2. 依存表を修正する。
- Phase 4 → `1,3`
- Phase 5 → `1,3`
- Phase 6 → `1,2,3,4,5`
3. Phase gate を CLI 化する。
- 例: `miyabi playbook check-phase 3`, `miyabi playbook approve-phase 3`
4. retry matrix を各 API/Phase に追加する。
5. fence token と single-writer fallback を明文化する。
6. legacy queue/lock から新 protocol への authority cutover task を追加する。
7. crash recovery / replay / idempotent rerun を Phase 8 の必須テストにする。
## Bottom Line
この Playbook は初回草案よりかなり改善されており、Codex 3-body review の主要論点は多く反映されています。
ただし「自律実行できる Auto Run Playbook」として見ると、まだ task gate の設計が中心で、phase orchestration gate・retry completeness・authority migration が不足しています。現状評価は「設計としては strong、Auto Run 用ハーネスとしては未完成」です。