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

12 KiB

Auto Run Playbook Review Round 2

対象レビューの前提:

  • 指定された docs/autorun/0008, 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 の FileLockManagerEventStoreSnapshotStore に依存し (:473-478)、さらに Phase 1 で追加した TaskLock 型にも依存します (:177-184)。
  • これは表で 4 | 3 と書かれているのが不完全で、実質は 4 | 1,3 です。
  • 同様に Phase 5 も表では 3 のみ依存ですが (:866)、GitHubEvidenceCompletionMode は 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 用ではありません。つまり registerTaskassignAndLock の 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-bustask-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 境界が曖昧

人間の伴走ありなら実行可能ですが、完全自律化には次が必要です。

  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 用ハーネスとしては未完成」です。