• Status: Accepted
  • Mode: Standard
  • Kruchten Type: Executive
  • Scope: platform
  • Implementation Status: Done (LangGraph Pipeline デプロイ済、本日も使用中)
  • 起案者: [email protected]
  • 起案日: 2026-05-08
  • 承認日: 2026-05-08

Kruchten Type は ADR-0031 (2026-05-13) で遡及追加。分類根拠は ADR-0031 §決定セクションおよび docs/adr/README.md の Kruchten 3 分類ガイドを参照。 Status / Mode / Scope は 2026-06-11 に遡及追加 (ADR-0031 corrigendum パターン)。出典: Status = 旧形式「## ステータス」節の機械転記 / Mode = 旧 README §既存 ADR 一覧の推定値 (git 履歴) / Scope = ADR-0049 4 層分類の遡及付与 (PR レビューで確定)。

Status は Proposed → Accepted (マージ時) / Rejected (Close 時) / Superseded by ADR-XXX (後続 ADR で更新) に遷移する。

決定の早わかり(Y-statement)

本節は ADR-0140 の方針で遡及追加された本文の要約で、新しい意味は加えていない (意思決定内容は不変)。「文脈で問題に直面し、対抗案でなくこの案を選び、目的のため代償を受け入れる」と読む。詳細はコンテキスト以降の本文に展開する。

  • 文脈: ADR 起案を半自動化する Decision Pipeline は、Phase 1 で Dify Cloud Workflow 上に Triage v0.2 / Scoring v0.1 を実装し、Phase 2a (GitHub PR 自動生成連携) 着手直前だった。
  • 問題: Dify は DSL import API が非公式のままで完全 CI/CD 化が事実上不可能。Workflow の手動 import / export 運用が Phase 2a 以降も恒久的に残り、「手動操作をできるだけなくしたい」という代表取締役の強い要件と矛盾する。
  • 問題点と課題(直せる原因 → 発生を止めるためにやること):
    • Dify では Workflow の versioned deploy ができず手動運用が恒久残存する → CI/CD 親和の実行基盤へ移行する。
    • lint・遺産 ADR 発掘・コード ↔ ADR 双方向リンクは Dify Cloud では実装困難 → adr-kit を補完ツールとして導入し棲み分ける。
  • 決定(対応策): Dify 維持・n8n・Windmill 等でなく、Decision Pipeline を LangGraph TS + Hono on Cloudflare Workers + LiteLLM Gateway へ移行し (Dify 退役)、adr-kit (MIT) を補完導入する。既存 _template.md / ADR-0001〜0018 は不変更。
  • 目的: Git push → Cloudflare Workers 自動デプロイの完全 CI/CD と、ノード単位のマルチプロバイダ切替を実現し、手動 import / export を消滅させる。
  • 代償: Phase 1 プロンプトの手作業移植 (半日〜1 日)・LangGraph 学習コスト 1〜2 日・Web UI 入口の最小自作・Cloudflare Workers Paid plan ($5/月)。
  • 詳細は本文の影響・撤退条件セクションを参照のこと

コンテキスト

ADR 起案を半自動化する Decision Pipeline は、Phase 1 (2026-05-07 完了) で Dify Cloud Workflow 上に Triage v0.2 / Scoring v0.1 を実装し、ゲート単位の動作検証まで完了していた。Phase 2a (GitHub PR 自動生成連携) 着手直前で、以下 3 つの事実が同時に判明した:

  1. Dify は完全 CI/CD 化が事実上不可能: DSL import API は 2026-05 現在も非公式 (Issue #24087 / #27795 open)。非公式 dify-cli は plugin 専用で Workflow 全体の versioned deploy 不可。
  2. Phase 2a 未着手のため並行稼働の必然性がない: Phase 1 は単独動作の Triage / Scoring プロンプトを Dify Cloud で検証しただけで、GitHub Actions 連携・本文生成 LLM・Slug 生成 LLM などの Phase 2a 工作物はまだ作っていない。
  3. 「手動操作をできるだけなくしたい」という代表取締役の強い要件: Dify Cloud 上で Workflow を編集 → エクスポート → 手動 import という運用は、上記 1 によって Phase 2a 以降も恒久的に残存する。

並行して RQ-038 (Gemini Deep Research, 2026-05-07) で OSS ハイブリッド型 (rvdbreemen/adr-kit) を Phase 0 ベースに据えるよう推奨 された。lint (4 ゲート / file:line citations)・遺産 ADR 発掘 (/adr-kit:migrate)・コード ↔ ADR 双方向リンクが Claude Code Skills 上で対話型に動く点が、Dify Cloud では実装困難な機能と判明。

代替候補 10 種 (n8n / LangGraph / Inngest / Trigger.dev / Activepieces / Windmill / Flowise / Make.com / Pipedream / Temporal) を CI/CD 親和性で精査した結果、LangGraph (TypeScript) + Hono on Cloudflare Workers + LiteLLM Gateway が 6 絶対条件 (CI/CD・Multi-LLM・Web UI・商用 OSS・引継ぎ・既存整合) をすべて満たす唯一解。

決定

以下 3 点を同時に決定する:

  1. Decision Pipeline を LangGraph TS + Hono on Cloudflare Workers + LiteLLM Gateway に移行 (Dify 退役)。Phase 1 投資 (Triage v0.2 / Scoring v0.1 プロンプト) は LangGraph node に手作業移植 (半日〜1 日)。Phase 2a 未着手のため並行稼働期間なし。
  2. adr-kit (rvdbreemen/adr-kit, MIT, v0.11.0) を補完ツールとして導入。lint / /adr-kit:migrate 遺産発掘 / コード ↔ ADR 双方向リンクチェックを担当。LangGraph と棲み分け、/adr-kit:setup は実行しない (LangGraph 採番ルールと衝突するため)。
  3. 既存 _template.md / ADR-0001〜0018 は不変更。adr-kit の canonical-seven-section テンプレへの canonical 移行は採用しない。LangGraph N7 相当 node も _template.md を参照させる。

新棲み分け設計:

機能担当備考
起案入口 (Web UI / API)LangGraph + Hono on Cloudflare WorkersWeb UI 自作 (HTML form, 半日)
Triage / Scoring / 本文生成 / SlugLangGraph node + LiteLLM Gatewayノード単位でモデル切替 + 機密マスキング
採番 + PR 作成GitHub Actions (LangGraph webhook 経由)排他制御を確実に
lint (4 ゲート / file:line citations)adr-kitClaude Code 内対話型で深い推論
遺産 ADR 発掘adr-kit/adr-kit:migrate の read-then-confirm
コード ↔ ADR 双方向リンクadr-kitsubagent でリポジトリ全体スキャン

検討した代替案 (Alternatives Considered)

  • 案 A: Dify 維持 + adr-kit 棲み分け — 不採用: CI/CD 完全化が DSL import API 非公式で阻まれ、代表取締役の「手動操作をできるだけなくしたい」要件と恒久的に矛盾する。Phase 2a 以降も Workflow 編集が手作業になる。
  • 案 B: n8n + adr-kit — 不採用: Git Sync が Enterprise 限定。Sustainable Use License で再販制限あり、ADR-0009 段階的分離戦略との整合性が将来のリスク。
  • 案 C: Windmill + adr-kit — 不採用: AGPLv3 ライセンスのため、将来 SaaS 化を検討する場合のソース公開義務リスクが残る。
  • 案 D: GAS / GCP / 自前 WebApp — 不採用: 個人開発規模を超過。CLAUDE.md L106-107 「自分しか開発できない仕組みを避ける」原則に逆行する。
  • 案 E: LangGraph TS + adr-kit ハイブリッド採用

影響 (Consequences)

正の影響

  • 完全 CI/CD: Git push → Cloudflare Workers 自動デプロイ。Dify Workflow の手動 import / export が消滅。
  • マルチプロバイダ ノード単位切替: GPT / Gemini / Claude を 3 プロバイダ並行運用 (Triage = Gemini Flash / 本文 = Claude Sonnet / Scoring = GPT-4 等)。LiteLLM Gateway で 1 箇所集約。
  • MIT 完全 OSS / Vertex AI 公式 Provider (ChatVertexAI 経由)。
  • 既存 Cloudflare Pages (docs サイト) と同居可能: 同 Cloudflare アカウントで Workers / Pages を統合管理。
  • 業務委託オンボード: TypeScript + Git clone + npm install のみ。RQ-038 の調査で示された通り、(c) OSS ハイブリッド型は引き継ぎコスト最小 (30–45 分)。
  • adr-kit による品質ゲート: 4 ゲート (Completeness, Evidence, Clarity, Consistency) を file:line citations 付きで lint 可能。LangGraph 側の Scoring と二重チェックで監査リスク低減。

負の影響

  • Dify Phase 1 投資 (Triage v0.2 / Scoring v0.1 プロンプト) を手作業移植 (半日〜1 日)。プロンプトは plain text なので LangGraph node のヒアドキュメントに貼るだけ。TC-01〜TC-07 で再検証必須。
  • 代表取締役 LangGraph 学習コスト 1–2 日: TypeScript / Hono は既知だが LangGraph TS の StateGraph / channels モデルは新規。
  • Web UI 入口を最小自作 (Hono + HTML form, 半日): Dify Cloud Console を使えなくなるため、起案者用のフォームを自前で持つ必要がある。
  • Cloudflare Workers Paid plan ($5/月) 必須: Gateway 往復 + LLM 推論で CPU 30s 必要。Free tier 50ms では不足。Hosting 先と独立した制約。

LLM 運用の補足 (機密情報マスキング MUST 制約 + 3 プロバイダ並行運用)

  • LangGraph node の LLM 呼び出しは 必ず LiteLLM Gateway 経由とする (GPT / Gemini / Claude の 3 プロバイダ並行運用要件)。
  • 取引先名・金額・scriptId・OAuth は LiteLLM マスキング callback で 1 箇所処理。マスキング失敗時は呼び出しを fail-fast。
  • LiteLLM Gateway ホスティング: GCP Cloud Run (Vertex AI と同 Project / 認証簡素化 / API キーを SaaS に預けず GCP Secret Manager に保持 = 監査要件適合 / 自前ログで障害解析可)。
  • Cloudflare Workers Secrets には Gateway 呼出用 Virtual Key 1 本のみ保持。3 社 LLM API キーは Cloud Run 側 GCP Secret Manager で集中管理。
  • LangGraph 側は OpenAI 互換 SDK 1 本 (@langchain/openai) に統一。LangChain provider package (@langchain/google-vertexai, @langchain/anthropic) は使わず、pre-1.0 breaking changes リスクから隔離。
  • Gateway 障害時の運用: SPOF 許容、復旧まで起案を一時停止 (個人開発前提)。Cloud Run managed のため第三者 SaaS 依存なく自前ログで解析可。

リスク

  • LangGraph TS pre-1.0 breaking changes: package.json で version pin し、撤退条件で監視。
  • Cloudflare Workers cold start: LangGraph 単発呼び出しなら問題なし。重複起案でボトルネック出たら Workers Durable Objects 検討。
  • adr-kit pre-1.0 / メンテナ 1 人 / stargazers 0 (RQ-038 Caveats): リスク顕在化したら .claude/skills/adr-kit/ をリポジトリにコピーして固定 (MIT のため自由)。
  • /plugin marketplace update の silent failure (Anthropic Issue #46594): /reload-plugins 後にスキルが見えなければ /plugin install を再実行する運用ルールで対処。

撤退条件 (Rollback Plan)

  • LangGraph TS 開発 6 ヶ月停滞 → ライブラリ pin して継続使用 (撤退不要)。
  • Cloudflare Workers コストが想定 ($5/月) の 3 倍超 → Self-hosted Node.js + Docker に移行。
  • adr-kit lint pass 率 50% 未満 (Phase 0 で ADR-0001〜0018 を /adr-kit:lint した結果) → adr-kit 撤去、LangGraph に lint node 追加。
  • LangGraph 実装で 1 週間以上 ADR 起案できない事態 → Dify Cloud Workflow を YAML から Restore (archives/dify-phase1-2026-05-07.yaml)。ADR-0019 を Rejected に更新、撤退理由を changelog に記録。
  • LiteLLM Gateway 障害が月 1 回以上発生 / Cloud Run 運用負担が想定超 → LiteLLM Cloud SaaS への移行検討 (API キー外部預けの代わりに運用負担を外部化、監査要件の再評価必要)。

Confirmation (準拠確認 / Fitness Function)

本セクションは ADR-0036 (Accepted 2026-05-14) で遡及追加された。ADR-0031 パターン (業界標準準拠メタデータ後付け = 誤字修正範疇) に準拠する遡及で本文の意思決定内容は不変。

  • 検証手段: Pipeline Gate 2 (consistency) + LiteLLM ログ集計
  • 実行頻度: PR ごと
  • 違反時の対応: 自動 fail

参照 (References)

  • RQ-038: ADR 作成スキル 3 構成パターンのトレードオフ調査レポート (Gemini Deep Research, 2026-05-07)
  • ADR-0007: Gemini API による領収書解析
  • ADR-0008: 本番 AI API を Vertex AI に集約
  • ADR-0009: 活動領域の段階的分離戦略
  • ADR-0010: モジュラーモノリストと 3 桁番号体系
  • 既存 Decision Pipeline 設計書 (退役対象だが履歴として残す):
    • docs/_internal/decision_pipeline/README.md
    • docs/_internal/decision_pipeline/phase2a_design.md
    • docs/_internal/decision_pipeline/dify_workflow_spec.md
    • docs/_internal/decision_pipeline/dify_setup_instructions.md
    • docs/_internal/05_how-to/operator_guide.md
    • docs/_internal/decision_pipeline/test_cases.md
  • 移行設計指針: docs/_internal/decision_pipeline/langgraph_migration/migration_overview.md
  • main session 用実装手順書: docs/_internal/decision_pipeline/langgraph_migration/main_workspace_checklist.md
  • adr-kit セットアップ素材: docs/_internal/adr_skill_setup/
  • 外部資料:
    • rvdbreemen/adr-kit (GitHub, MIT, v0.11.0, 2026-04-25)
    • Anthropic Issues #24087 / #27795 / #46594 / #47237