PlanGate × Workflow/Skill/Agent ハイブリッドアーキテクチャ 実行層 / 探索フェーズ(opt-in) 起源: issue #493(Expo SDK 移行での 4 層入れ子障害を PlanGate で扱えなかった経験)
「やってみて初めて問題が露呈する」探索的タスクに対し、仮説→検証→学習→AC 更新 のループを PlanGate の構造として扱えるようにする。
標準フロー(WF-01〜06)は「要件が固まってから計画・実装」を前提とするため、 探索的タスク・長時間外部検証を含むタスク・インシデント駆動の計画修正には本フェーズを opt-in する。
本フェーズは 既定で発火しない。
起動条件(いずれか):
exploratory: true を明示exploratory と判定される/ai-dev-workflow TASK-XXXX explore、将来 CLI)未指定 run は WF-01〜06 の標準フローで処理される。
探索的タスクでは AC(受入基準)が固定されず、検証ごとに更新される。
ループ構造:
仮説定義(Hypothesis)
↓
検証実行(Verify)
↓
学習(Learn)
↓
AC 更新(Update AC)← 前の仮説が解消されると次の層が露呈することがある
↓
次の仮説 or 完了
運用ルール:
Hypothesis は status.md の残タスクとして 仮説-N: プレフィックスで記録するevidence/exploratory/hypothesis-N-result.md に記録するpbi-input.md と test-cases.md に差分追記する(削除しない、append-only)CI / EAS ビルド / デプロイ等、20分以上かかる外部検証を含む場合のサブ状態。
BLOCKED 状態との連携 (working-context.md §BLOCKED 状態 / #498 Deferred ゲート):
status.md 残タスクの記録形式:
- [ ] BLOCKED: 検証タスク名
blocker: <外部サービス名(例: EAS production build #5)>
owner: 外部サービス / 時間経過
unblock_condition: <完了条件(例: EAS ビルド成功 → 次仮説へ進む)>
waiting_external_verification: true
再開プロトコル:
evidence/exploratory/hypothesis-N-result.md に記録status.md の BLOCKED タスクを [x] に更新し、学習内容を記載上限:
検証失敗時に spec/design を見直すフィードバックループ。
発動条件:
AC 改訂フロー:
検証 FAIL
↓
根本原因の分類:
(a) 実装ミス → Phase E-1 に戻って修正
(b) 前提の誤り(設計 / 環境 / 依存関係)→ 以下の AC 改訂
(c) 外部サービスの問題 → Phase E-2(待機)
↓
(b) の場合:
1. decision-log.jsonl に前提誤りと根本原因を記録(append-only)
2. pbi-input.md の Notes に「前提変更」として追記
3. 影響 AC を特定して test-cases.md を更新
4. 人間に変更範囲を確認(影響が Out of scope を超える場合は C-3 再承認)
↓
次の仮説へ
evidence/exploratory/ に各仮説の結果が記録されているhypothesis-logger(仮説記録 / 将来実装)acceptance-review(WF-05 に委譲)orchestrator(フェーズ遷移管理)qa-reviewer(AC 整合確認・WF-05 移行判断)| 既存 WF | 接続点 |
|---|---|
| WF-00 Intent Intake | Mode: exploratory を出力すると本フェーズを推奨 |
| WF-01 Context Bootstrap | 前提制約を読み込む(変更なし) |
| WF-05 Verify & Handoff | 全仮説解消後に標準移行(変更なし) |
| working-context.md §BLOCKED | waiting_external_verification: true を BLOCKED の拡張フィールドとして使用 |
本フェーズ定義は順序と完了条件のみ。探索ループの具体的な観点・記録フォーマットは Skill / Agent に委譲。全 run への強制適用は禁止(opt-in 原則)。