役割: 各 Phase の実装内容・完了日・PR 番号を記録する。現在の運用状態(エンドポイント・フィーチャーフラグ等)は 起案者向け運用ガイド

1. フェーズ計画

Phase 1: プロンプト単体検証(完了 2026-05-07)

  • Dify Cloud 単体(GitHub 連携なし)でトリアージ・スコアリングを検証
  • TC-01〜08 で判定 / 採点機能を確認(判定 5/5、採点 1/50 → 45/50 → 14/50 の線形性確認)
  • プロンプト確定: Triage v0.2 / Scoring v0.1(以降のフェーズで使い回すバージョン)

Phase 2a': LangGraph TS GitHub 連携最小動作版(完了 2026-05-11)

  • ADR-0019 で Dify → LangGraph TS に基盤変更。Phase 2a の Dify 連携設計は不採用。
  • Gate 0 (Triage) + Gate 4 (Scoring) + 本文生成 + Slug + GitHub PR 自動作成までを E2E で構築
  • LiteLLM Gateway (Cloud Run) で 3 プロバイダ統合 + 機密マスキング callback を実装
  • TC-01〜07 を drp/test-tc.mjs で全自動実行可能に
  • 本番稼働開始 (PR #555〜#585、Cloud Run メモリ 512Mi → 1Gi に引き上げ済)

Phase 2c: Gate 2(過去 ADR 整合性)追加(完了 2026-05-12)

  • 既存 ADR との Conflict / Supersede 判定を src/nodes/consistency.ts で実装。GitHub API で docs/adr/*.md を取得し、起案ドラフトとの矛盾・上書き関係を判定(当時 claude-sonnet → 現行 claude-opus、ADR-0033。ADR 取得も現行は GraphQL 一括 + KV キャッシュ。詳細は prompts/04_consistency.md)。
  • グラフは triage → body_generation → scoring → consistency → slug → numbering → webhook に再ワイヤリング (PR #589)。CONFLICT 検出 + 起案ドラフトに supersede 宣言なしの場合は END で差戻し。
  • PR 本文 (src/nodes/webhook.ts) に Gate 2 整合性セクションを追加 — レビュアーが過去 ADR との関係を即座に確認可能に。
  • テスト: TC-C01〜C05 全合格 (drp/test-tc-consistency.mjs)。プロンプト + テストケース原本は prompts/04_consistency.md
  • adr-kit (/adr-kit:lint Consistency ゲート / file:line citations) との棲み分け: LangGraph 側 = 起案時の門番 (PR 化前にブロック)、adr-kit = 代表取締役レビュー時の補強 (Accepted 直前の最終チェック)。

Phase 2b: Gate 1(Socratic 問診)追加(完了 2026-05-12)→ ADR-0071 で盲点検出エンジンに再定義(2026-05-27)

  • 起案者ドラフトの情報充足チェックsrc/nodes/socratic.ts で実装。不足項目があれば最大 3 問を返して END で差戻し、起案者がフォームに追記して再送するフロー (PR #591)。
  • 方式A (ステートレス) を採用: Durable Objects / セッション保持を使わず、/draft への単発再送で対話を成立させる最小設計。方式B (Workers + Durable Objects によるチャット型) は /chat エンドポイント追加で将来移行可能。
  • グラフは triage → socratic → body_generation → scoring → consistency → slug → numbering → webhook に再ワイヤリング (src/graph.ts)。
  • State に socraticPass / socraticQuestions を追加 (src/state.ts)、LLM Gateway に MODELS.socratic を追加 (src/llm/gateway.ts)(当時 gemini-flash、→ ADR-0033 で現行 claude-sonnet に upgrade)。
  • public/index.htmlSocratic 差戻し時の質問リスト表示 + STEP_MSGS 更新を反映 — 起案者は具体的に何を補完すべきか即座に把握可能。
  • テスト: TC-S01〜S03 全合格 (drp/test-tc-socratic.mjs)。プロンプト + テストケース原本は prompts/03_socratic.md

ADR-0071 (2026-05-27, PR #1042): RQ Synthesis 導入により追加質問が毎回 0 件で素通り (dead node 化) したため、Gate 1 を 盲点検出エンジン に再定義。Devil's Advocate (DA, T=0.95) + Pre-mortem (PM, T=0.8) 並列 → Judge/Aggregator (T=0.2) の non-interactive DAG に置換。差戻し型 → 情報提供型に変更 (findings は PR body に表示、pass/fail 判定には不使用)。同時に buildPreGraph()triage のみに縮小 (盲点検出 DAG が 30s wall time を超えるため)。

Phase 3: Gate 3(並列レビュー / 3 モデル)追加(完了 2026-05-12)

  • Scoring (Gate 4) + Consistency (Gate 2) を通過した高品質 ADR ドラフトに対する付加価値レビューsrc/nodes/parallel_review.ts で実装 (PR #596)。差戻しはせず、レビュー結果を PR 本文に追記する情報提供型ゲートとして位置付け。
  • 3 モデル並列実行: Promise.allSettled で同時呼出 (LangGraph グラフ分岐ではなくノード内で並列) — レイテンシ削減 + Cloudflare Workers の CPU 制約に適合。
    • Gemini Flash(当時。現行 gemini-pro)— ビジネスインパクト / アーキテクチャ整合性 / 長期負債リスク
    • Claude Sonnet(当時。現行 claude-opus)— 論理的一貫性 / 問題定義と決定のつながり / 撤退条件の現実性
    • GPT-4o(当時。現行 gpt-o3、reasoning_effort=high)— 技術的実現可能性 / コスト試算の妥当性 / 完了条件の検証可能性
  • エラー耐性: 各モデルのエラーは個別 catch で吸収 → 残り 2 モデルの結果で PR を生成してパイプラインは継続。LLM プロバイダの単独障害でも ADR 起案が止まらない。
  • グラフ最終形: triage → socratic → body_generation → scoring → consistency → parallel_review → slug → numbering → webhook (src/graph.ts)。Webhook node は 3 モデルのレビュー結果を指定セクションとして PR 本文に転記。
    • ※ 訂正 (2026-06-01): 上記は Phase 3 (PR #596) 時点の記録。(a) その後 cross_validation (ADR-0076、scoring と consistency の間) と policy_alignment (parallel_review と slug の間) が追加され、現行構成は 10 ノード (webhook 含め 11)。(b) モデルは ADR-0033 で gemini-pro / claude-opus / gpt-o3 に刷新。(c) 出力は strengths/concerns/suggestions 配列 → アノテーション (annotations[]、本文引用紐付き) に変更。最新の正は アーキテクチャ図 / 内部実装マップ を参照。
  • 意義: Phase 1〜2c で「ADR 化前のゲート (差戻し型)」を 3 層構築済 (Triage / Socratic / Scoring + Consistency)。Phase 3 はこれら全てを通過した起案に対し、レビュアー (代表取締役) が単一視点でレビューする手間を先回りで複眼化する補助層。差戻し権限を持たないことでパイプラインのレイテンシ・コストを最小化。

2. 全フェーズ完了表

PhaseGate内容ステータスPR
1Gate 0Triage (ADR 対象判定 / Light / Standard / Critical)完了 (2026-05-07)Dify Cloud 単体検証
2a'LangGraph + Hono + LiteLLM Gateway + GitHub Actions E2E完了 (2026-05-11)#555〜#585
2bGate 1Socratic 問診盲点検出エンジン (DA+PM+Judge / ADR-0071)完了 (2026-05-12) → 再定義 (2026-05-27)#591 → #1042
2cGate 2過去 ADR 整合性 (Conflict / Supersede)完了 (2026-05-12)#589
2Gate 4Scoring (50 点 / 40 点未満差戻し)完了 (2026-05-11)#555〜#585
3Gate 3並列レビュー (当時 Gemini Flash / Claude Sonnet / GPT-4o → 現行 gemini-pro / claude-opus / gpt-o3、ADR-0033)完了 (2026-05-12)#596

設計時に想定した全ゲートが本番稼働。

ADR-0066: 非同期 Queues + DO(完了 2026-05-26)

  • Cloudflare 524 timeout (100s) を回避するための非同期実行基盤を 4 Phase で実装
  • Phase A0: Workers Paid plan ($5/月) + Queues namespace 作成
  • Phase A1 (PR #980): PipelineSessionDO + wrangler.toml Queues/DO binding
  • Phase A2 (PR #988): Producer (?async=true) + Consumer Worker + GET /chat/status/:sessionId
  • Phase A3 (PR #989): Web UI Async mode checkbox + exponential backoff polling (1s→10s、10 分 timeout)
  • Phase A4 (PR #990): CI workflow (drp-trigger.yml) + Implementation Status → Done
Phase内容ステータスPR
A0Workers Paid + Queues namespace完了 (2026-05-26)(ops)
A1PipelineSessionDO + wrangler binding完了 (2026-05-26)#980
A2Producer + Consumer + status endpoint完了 (2026-05-26)#988
A3Web UI async mode + polling完了 (2026-05-26)#989
A4CI workflow + status update完了 (2026-05-26)#990

ADR-0071: Gate 1 盲点検出エンジン(完了 2026-05-27)

  • Gate 1 Socratic (インタラクティブ追加質問) を 盲点検出エンジン (DA+PM+Judge 並列 DAG) に再定義
  • Phase 1 (PR #1042): DA (T=0.95) + PM (T=0.8) → Judge (T=0.2) の non-interactive DAG 実装
  • buildPreGraph() を triage のみに縮小 (盲点検出 DAG が 30s wall time を超えるため)
  • 情報提供型: findings は PR body の Blind-spot Report に severity 付きで表示、Pipeline pass/fail 判定には不使用
  • エラー耐性: DA/PM 片方失敗時は成功側で継続、全失敗時は skip-through、Judge 失敗時は rawFindings fallback
Phase内容ステータスPR
1DA + PM + Judge DAG 実装 + preGraph 縮小完了 (2026-05-27)#1042
2Adjacent Domain (AD) + web search 連携未着手

次の投資領域は ADR-0020 §決定 #4 で予告した ADR 事後評価ループ (DORA 指標 / インシデント相関) や、Phase 3 運用後の レビュー品質モニタリング (どのモデルの指摘が PR 本文で実際にレビュアーの判断を変えたか) へと移る。

ADR-0103: 入口統一(案 C′ / shared triage module)+ MVP 卒業(2026-06-03)

  • 入口は 2 つのまま (/chat/start = Web UI / /runs = CI)。当初の採択案 (chat も即 enqueue 化) は Phase A-4 で案 C′ に方針転換 — chat UI は同期 triage を維持し即時応答性を保持 (ADR-0066 / ADR-0094 Phase B を supersede せず維持)。
  • drift の構造解消: triage 派生フィールドの整形 (chat 応答 / session cache / consumer DO result / telemetry) を src/triage/shared_triage.ts の共通関数に集約し、handler / consumer が同一定義を呼ぶ (PR #1353)。PR #1200/#1204/#1214/#1217 系の同期漏れを根本解消。
  • EC-3 (Queue silent failure) は入口統一と独立した既存ギャップとして分離し、per-session DO alarm watchdog で別途解消 (PR #1354/#1355、運用は operator_guide §7.10)。
  • MVP 卒業: EC-1〜6 全充足を 2026-06-03 に達成 (PR #1357)。詳しくは mvp_exit_criteria.md にある。
項目内容ステータスPR
EC-2入口統一 = shared triage module (案 C′)完了 (2026-06-03)#1352 / #1353
EC-3Queue silent failure = DO alarm watchdog完了 (2026-06-03)#1354 / #1355 / #1356
MVPEC-1〜6 全充足・卒業記録卒業 (2026-06-03)#1357

変更履歴

日時変更
2026-06-07初版 — README §10・§11 から移植(経緯: ADR-0117)