位置付け: Claude / Gemini Deep Research / GPT-4o の RQ-044 3 回答を論点ごとに突き合わせ、bizlp 文脈での ADR 起草方針を整理する。

本ファイルは「ADR 起案準備資料」。正式採択判断は Decision Pipeline 経由で新規 ADR として行う。


0. TL;DR

  • 3 モデル完全一致の核心: プロンプトは SE artifact / 6 段階状態遷移 / SemVer の MAJOR-MINOR-PATCH 定義 / Type 1(本番)のみ SemVer 適用 / Git + Promptfoo + GHA が最小ツール構成 / eval gate を PR 必須化 / LLM-as-Judge はマルチサンプル + 位置スワップ + ルーブリック
  • 最大の対立点(bizlp ADR の主論点):
    • Claude: 同一リポ(monorepo)推奨 — atomic 変更・コード同期が最優先
    • Gemini: Polyrepo 必須 — 業務委託アクセス制御 + Cloudflare KV 動的ロードが不可欠
    • GPT: モノレポ先行 → 要件に応じて Polyrepo 移行(段階的アプローチ)
  • bizlp 採択方針(要約):
    1. リポジトリ: Monorepo 内 prompts/ — 現状 1 人法人でアクセス制御不要。Jr. 参加・業務委託発生時に Polyrepo 移行を評価
    2. ランタイム: Cloudflare KV でプロンプト文字列を管理 — アプリ再デプロイ不要のロールバックを実現(Gemini の核心提案を取り込み)
    3. Observability: Langfuse Hobby(無料)→ 2 名体制で Core $29/月(GPT 推奨・$50 制約内)
    4. meta.yaml: GPT の prompt.meta.yaml スキーマ(最も詳細)を採用
  • 次工程: 本 synthesis を Decision Pipeline に投入 → プロンプトライフサイクル管理 ADR として正式起案

1. 完全一致部分(採用根拠)

3 モデルが独立に到達した一致点は、bizlp 採択根拠の中で最も強い。

1.1 「プロンプト = SE artifact」という前提(3 者一致)

観点3 者共通の見解
学術的位置づけPromptware Engineering (arXiv:2503.02400) / Prompts Are Programs Too (arXiv:2409.12447) に代表される「プロンプトはソフトウェア工学の対象」という方向に収斂
実証的根拠243 リポジトリ・1,262 変更の分析 (arXiv:2412.17298) で「コードと同じ進化パターンを示すが文書化率 21.9%」と貧弱さが指摘されている
実務的位置づけLangSmith / Braintrust / Langfuse はいずれもコミット / タグ / 環境 / ロールバックを前提に設計済み

→ bizlp ADR 採択: プロンプトはコードと同様に git 管理・レビュー・バージョニング・eval を義務化する。

1.2 状態遷移モデル(3 者実質一致)

モデル提案した状態遷移
ClaudeDraft → Experimental → Review (eval gate) → Staging → Production → Deprecated → Archived
GeminiDraft → Review/Evaluation → Staging → Production → Deprecated → Archived
GPTDraft → Experimental → Review Candidate → Stable → Deprecated → Archived

3 者の差は「Staging を明示するか」「Experimental と Review を分けるか」程度で、本質的に eval gate を通過した後に Production に遷移する 6 段階モデルでは一致。

→ bizlp ADR 採択(統合案):

draft → experiment → candidate → production → deprecated → archived
状態説明遷移条件
draftローカル / プレイグラウンドで試行中
experimentCI 環境で eval 実行可能な状態golden.jsonl 初期構築完了
candidateeval gate 通過・PR レビュー中unit eval 合格率 ≥ 静的閾値(プロンプトごとに meta.yaml に定義)
production本番稼働 / ImmutablePR マージ + KV デプロイ完了
deprecated後継バージョンあり / 段階廃止予告MAJOR バンプ後の旧バージョン
archived本番除去 / 監査証跡として保持deprecated から 90 日経過

1.3 Semantic Versioning の定義(3 者一致)

バージョン3 者共通の定義
MAJOR出力スキーマ破壊・必須入力変数追加・呼び出し側契約変更JSON → プレーンテキスト変換、基盤モデル変更
MINOR後方互換の機能追加・Few-shot 追加・評価観点拡張新しい審査観点追加、Few-shot 3 件→5 件
PATCH表現修正・誤字・XML タグ整理・同世代モデル差し替え文言整理、句読点修正

Claude 独自追加:「eval で合格率が静的閾値を下回ったら PATCH でも MAJOR 扱いを強制」→ bizlp ADR に採用(プロンプトの非決定性を考慮した安全弁)。閾値はベースライン比の相対判定ではなく、プロンプトごとに meta.yamleval_pass_threshold フィールドに固定値(例: 0.85)を定義する static 方式を採用。

→ bizlp ADR 採択: Type 1(本番)のみ SemVer 適用。Type 3(調査用)は YYYYMMDD-topic 命名で十分。

1.4 ツールコア構成(3 者一致)

ツール3 者共通の評価
GitSource of truth(異論なし)
Promptfoo(OSS)3 者全員が「CI eval の中核」として推奨
GitHub ActionsPR eval 自動化に最適(異論なし)
LangSmithLangChain 強結合・$39/seat — 1 人法人には過剰
Braintrust$249 フラット — 月 $50 制約に不適合(ただし Starter 無料枠は Gemini が評価)

→ bizlp ADR 採択: Git + Promptfoo + GHA を必須コアとし、SaaS は無料枠のみ許容。

1.5 LLM-as-Judge 設計(3 者一致)

バイアス3 者共通の対策
位置バイアスA/B と B/A の両方を評価して平均化(位置スワップ)
冗長性バイアス詳細な rubric で「文量でなく事実精度を見よ」と明示
スタイルバイアススタイル無視を rubric に明記(Claude 報告: 支配的 0.76-0.92)
自己類似バイアス判定モデルと被判定モデルを別系列に
単発評価の信頼性複数 trial の平均を使用(単発禁止)

GPT 独自追加:「pairwise judge の非推移性(A>B・B>C だが A>C とは限らない)」(arXiv:2502.14074) → bizlp ADR に採用(judge 評価を絶対順位として扱わない注記)


2. 対立・差異点と bizlp 向け採択方針

2.1 【最重要対立】Monorepo vs Polyrepo

これが本 ADR の核心的な判断事項。

各モデルの主張

観点Claude(同一リポ推奨)Gemini(Polyrepo 必須)GPT(段階的移行)
推奨構成bizlp/prompts/ ディレクトリbizlp-app + bizlp-prompts 別リポMonorepo → 要件次第で移行
主な根拠Atomic 変更・コード同期崩れ防止・1 人法人は PdM 分離不要業務委託アクセス制御・Cloudflare KV 動的ロードの必要性変更コスト最小・将来の柔軟性確保
アクセス制御CODEOWNERS で近似(不完全)リポジトリ単位で完全分離現状不要、必要時に分離
CI/CD 複雑度単一パイプライン2 リポジトリ間同期が必要当初単純・後に複雑化
ロールバック同一 PR で atomic revertKV ポインタ書き換えで瞬時両方の要素を段階的に実装

bizlp 固有コンテキスト評価

現状(2026-05 時点):
  - 実働: 代表取締役 1 名(PdM = 開発者 = 意思決定者)
  - Jr. 参加: D-180 以降(2026-11 目安)
  - 業務委託アクセス制御要件: 現状なし(将来発生可能性あり)
  - スタック: Cloudflare Workers + GAS + LangGraph TS
  - 既存: PropertiesService Feature Flag 機構あり

採択方針: GPT の段階的アプローチ + Gemini の Cloudflare KV 動的ロードを組み合わせる

  1. Phase 1(現在〜Jr. 参加前): Monorepo 内 prompts/ ディレクトリ

    • アクセス制御不要のため Monorepo の「Atomic 変更」「同期崩れゼロ」のメリットを享受
    • ただし Gemini 提案の Cloudflare KV 動的ロードは Phase 1 から実装(再デプロイ不要ロールバックは現時点でも価値大)
  2. Phase 2(Jr. 参加後 / 業務委託要件発生時): Polyrepo 移行を評価

    • bizlp-prompts リポジトリに分離 + KV デプロイパイプライン継続
    • 移行トリガー: 「外部業務委託者に prompt のみ編集させる要件が発生した時点」

KV と Monorepo は並立する(Gemini 提案の本質):

Monorepo(git source of truth)
  └── prompts/production/gate0/v1.1.0.md
          ↓ CI/CD(GHA)でマージ後自動プッシュ
Cloudflare KV(ランタイムキャッシュ)
  └── bizlp:prompts:gate0:active → "v1.1.0"
  └── bizlp:prompts:gate0:v1.0.0 → "<prompt text>"
  └── bizlp:prompts:gate0:v1.1.0 → "<prompt text>"
          ↓ Workers が KV から動的ロード
Cloudflare Workers(アプリ再デプロイ不要)

2.2 Observability / 第 2 ツール層

モデル推奨ツール理由
ClaudeAgenta OSS 自己ホスト(Jr. 参加後)完全無料・自前管理
GeminiBraintrust Starter(月 10,000 スコアまで無料)eval UI が使いやすい
GPTLangfuse Hobby → Core $29/月prompt 管理 + observability 統合・$50 制約内

採択方針: Langfuse(GPT 推奨)を採用

  • Langfuse は prompt 管理・observability・A/B testing が統合(Braintrust は eval 特化で prompt 管理が薄い)
  • Hobby 無料枠で開始 → 2 名体制で Core $29/月(月 $50 制約内)
  • GitHub Integration で git に push すると Langfuse に自動同期できる(公式対応
  • Agenta OSS は自前ホスト運用コストが発生するため 1 人法人には不向き

2.3 prompt.meta.yaml スキーマ

GPT が最も詳細なスキーマを提示。Claude は meta.yaml に言及あるが項目定義が緩め。Gemini はスキーマ未定義。

採択方針: GPT の prompt.meta.yaml スキーマをベースに bizlp 向けに調整

# prompt.meta.yaml(Type 1 必須、Type 2 推奨)
id: gate0-policy-screen          # 一意識別子(kebab-case)
owner: [email protected]
status: production               # draft | experiment | candidate | production | deprecated | archived
semver: 1.1.0
model_family: claude-sonnet      # major family 固定(マイナーバージョンは prompt 本文に記載)
model_pin: claude-sonnet-4-6     # 具体的 pin(Prompt Drift 対策)
inputs:
  - name: application_json
    type: string
    description: ADR 申請 JSON
output_schema: ../schemas/gate0_output.json
eval_suite: ../../prompts-eval/datasets/gate0-policy-screen/golden.jsonl
eval_pass_threshold: 0.85          # static 方式(個別設定): この合格率を下回ったら merge block / MAJOR 強制
kv_key: bizlp:prompts:gate0-policy-screen  # Cloudflare KV キー名
deprecation_at: null             # deprecated 状態に入った日付(ISO 8601)

全体床値は .promptpolicy.yaml(リポジトリルート)で定義:

# .promptpolicy.yaml
global_min_threshold: 0.70  # 全 Type 1 プロンプトに適用される絶対下限
                             # 個別 eval_pass_threshold はこの値以上でなければならない

2.4 Bradley-Terry モデルと A/B 統計

Gemini のみが明示的に推奨(Elo レーティング相当の統計的強度評価)。Claude と GPT は power analysis・paired bootstrap を推奨。

採択方針: bizlp のトラフィック規模では offline eval 優先、Bradley-Terry は将来検討

  • bizlp の本番トラフィック(ADR 審査: 推測 1 日数件〜数十件)では統計的有意差を出すのに数ヶ月かかる
  • Offline eval(golden set 50-200 件)が主、本番 A/B は補助(3 者共通の現実認識)
  • Bradley-Terry の計算実装コストに対してメリットが現時点では薄い → プロンプト数 20 本超・本番 A/B トラフィックが 1 日 100 件超の段階で再評価

3. 論文・知見のユニーク貢献

各モデルが独自に提示した重要知見をまとめる。

3.1 Claude 独自の知見

知見内容ADR への影響
Prompt Drift vs Regression の区別Drift = モデル側の暗黙更新による無編集での挙動変化 / Regression = 意図的編集による性能低下。対策が異なるWeekly regression cron(Drift 監視)と PR eval gate(Regression 監視)を分離実装
SPEAR 論文(CIDR 2026)arXiv:2508.05012「prompts as first-class citizens」「versioned views」「adaptive refinement」の 3 層モデルbizlp Gate 0-4 設計との親和性が高い
SemVer + eval 合格率を両方リリース条件にPATCH でも静的閾値(eval_pass_threshold)を下回ったら MAJOR 強制ADR のリリースルールとして採用(static 方式:ベースライン比ではなく固定閾値で判定)
スタイルバイアスが支配的(0.76-0.92)Soumik ら (arXiv:2604.23178) — 位置バイアスより重大Judge LLM への rubric で「フォーマット・文体を無視せよ」を必須記載
プロンプト × モデルペアで逆転Ma ら (arXiv:2311.11123)「異なるプロンプト設計がモデル更新で optimal が逆転する」モデル更新時には全 Type 1 プロンプトの再回帰テストを必須化

3.2 Gemini 独自の知見

知見内容ADR への影響
Cloudflare KV 動的ロードアプリ再デプロイ不要でプロンプト更新・ロールバックが可能Phase 1 から実装(bizlp Workers スタックと親和性大)
Active Pointer パターンKV に v1.2.0v1.2.1 両方保持し、「現在有効ポインタ」を別 KV キーで管理ロールバックを「ポインタ書き換えのみ」で完結する設計に採用
LLM as Microservice パターンプロンプト管理・モデル呼び出し・リトライ・出力パースを単一 Cloudflare Workers 関数にカプセル化GAS と Workers の呼び出し境界設計に活用
Bradley-Terry モデルプロンプト A/B の Elo 相当強度評価将来(A/B トラフィック十分時)に採用検討
微細摂動で 30% 変動文末空白・区切り文字・Few-shot 順序だけで最大 30% 性能差(arXiv:2406.06608)PATCH バンプでも eval 実施を義務化する根拠として採用
HAPO特定エラー修正が他タスク性能を下げる「最適化のジレンマ」に対するアプローチスライス単位の eval(全体平均ではなくカテゴリ別)を義務化する根拠

3.3 GPT 独自の知見

知見内容ADR への影響
Promptware Engineering(arXiv:2503.02400)SE ライフサイクル(要件定義〜監視)の完全適用を体系化した最新 ACM 論文ADR の conceptual foundation として明示引用
Prompts Are Programs Too(arXiv:2409.12447)「開発者がプロンプトを実際にどう扱っているか」の実態調査現状の業界ギャップを ADR の動機として記述
prompt.meta.yaml の詳細スキーマid / owner / status / semver / model_family / inputs / output_schema / eval_suite / deprecation_atADR の必須メタデータフォーマットとして採用
pairwise judge の非推移性A>B・B>C だが A>C とは限らない (arXiv:2502.14074)eval ランキングを絶対順位として扱わない注記を ADR に追加
Langfuse GitHub Integrationgit push で Langfuse に自動同期Monorepo + KV 構成での observability 追加コスト最小化
shared/ ディレクトリ複数システム再利用プロンプトを集約(コピペ禁止)GAS と Workers 両方で使う共通 prompt の管理方針

4. bizlp ADR 起草のための決定事項整理

ADR として確定すべき判断を以下に整理する(Decision Pipeline 投入前の自己整理)。

4.1 確定できる事項(3 者合意 + bizlp 文脈で迷いなし)

#決定事項採択内容
D1プロンプトの分類(Tier)Type 1: 本番 LLM / Type 2: Agent templates / Type 3: 調査 / Type 4: 生成中間物(gitignore)
D2SemVer 適用範囲Type 1 のみ厳格 SemVer。Type 2 は v1.14 流。Type 3 は YYYYMMDD-topic
D3状態遷移draft → experiment → candidate → production → deprecated → archived
D4Eval CIPromptfoo + GHA。prompts/production/** への PR 時に必須実行。合格率が meta.yamleval_pass_threshold(固定値)を下回ったら merge block(static 方式)。全体床値 global_min_threshold: 0.70.promptpolicy.yaml で定義
D5LLM-as-Judge 設計位置スワップ + マルチサンプル + rubric(スタイルバイアス無視明示) + 別系列モデル。pairwise 結果を絶対順位として扱わない
D6meta.yaml スキーマGPT 案ベース(id / owner / status / semver / model_pin / inputs / output_schema / eval_suite / eval_pass_threshold / kv_key / deprecation_at)
D7モデル Pinmodel_pin を meta.yaml に必須化。Prompt Drift 防止の基本手段
D8Immutabilityproduction に入ったバージョンは直接変更禁止。変更は新バージョンの PR 経由のみ
D9golden.jsonlType 1 各プロンプトに prompts-eval/datasets/<name>/golden.jsonl を必須配置。最低 20 件
D10ロールバックCloudflare KV の Active Pointer パターン。ポインタ書き換えのみで 5 分以内復旧
D15eval 境界(LangGraphPR 時:ノード単体 eval(高速・merge block 判定用)。週次 cron:パイプライン end-to-end eval(品質俯瞰)の 2 層構成
D16GAS / KV 役割分担Workers 用プロンプト → Cloudflare KV(CI が自動プッシュ)。GAS 側 LLM 呼び出しが発生した場合は Workers KV を UrlFetchApp 経由で参照。git が唯一の source of truth、KV は ランタイムキャッシュ
D17週次 regression cronGHA cron(毎週月曜 0:00 JST)で全 Type 1 を golden.jsonl に対して実行。閾値割れで GitHub Issue 自動起票。golden.jsonl が各プロンプト 20 件以上そろった段階で有効化(段階的導入)

4.2 Phase 1 で決定・Phase 2 で再評価する事項

#決定事項Phase 1 採択Phase 2 再評価トリガー
D11リポジトリ構成Monorepo 内 prompts/外部業務委託者に prompt 編集権限を付与する要件発生時
D12Observability ツールLangfuse Hobby(無料)2 名体制以降 → Core $29/月
D13A/B 統計手法offline eval(golden set 主体)+ 手動比較本番トラフィック 1 日 100 件超 → Bradley-Terry 導入
D14Type 2 の SemVer不要(Claude Code テンプレは git コミット追跡のみ)Jr. 参加後・Type 2 が 20 本超えたら再評価

4.3 ADR 本体で定義すべき bizlp 固有の項目

  • Gate 0-4 それぞれのプロンプト名・KV キー名の命名規約(例: bizlp:prompts:gate{N}:{name}:active
  • GAS 側と Cloudflare KV の役割分担(D16 採択: git = source of truth、KV = ランタイムキャッシュ。GAS 側 LLM 呼び出し発生時は UrlFetchApp 経由で KV 参照)✅ 方針確定
  • モデル更新通知時のアクション(Anthropic release note 購読 → workflow_dispatch で全 Type 1 regression を即時実行)
  • 週次 regression cron のスケジュール(D17 採択: 毎週月曜 0:00 JST、golden.jsonl 20 件以上充実後に有効化)✅ 方針確定
  • golden.jsonl の構造仕様(input / expected / metadata / slice_tags フィールド定義)
  • LangGraph ノードの eval 境界(D15 採択: PR 時 = ノード単体 eval、週次 cron = E2E eval の 2 層構成)✅ 方針確定
  • eval_pass_threshold の個別値設定ガイド(Gate 重要度別の推奨閾値レンジ。例: Gate 0 ≥ 0.90 / Gate 3 ≥ 0.75)
  • .promptpolicy.yaml のスキーマ定義(D4 採択: global_min_threshold = 0.70)✅ 方針確定

5. 推奨ディレクトリ構成(統合案)

bizlp/                                  # 既存モノリポ内
├── prompts/
│   ├── production/                     # Type 1: 本番 LLM パイプライン
│   │   ├── gate0-policy-screen/
│   │   │   ├── v1.0.0.md              # Immutable(内容変更禁止)
│   │   │   ├── v1.1.0.md
│   │   │   └── prompt.meta.yaml       # id / owner / status / semver / model_pin 等
│   │   └── gate1-xxx/
│   ├── agents/                         # Type 2: Claude Code 向けテンプレート
│   │   ├── spec_creator_v1.14.md
│   │   └── ...
│   ├── research/                       # Type 3: 使い捨て調査(日付+タイトル命名)
│   │   ├── 2026-04-12_deep_research_xxx.md
│   │   └── ...
│   └── shared/                         # 複数システム再利用(コピペ禁止)
│       └── account_classification_prefix.md
├── prompts-eval/                        # Eval datasets & evaluators
│   ├── datasets/
│   │   └── gate0-policy-screen/
│   │       └── golden.jsonl            # 最低 20 件
│   ├── schemas/
│   │   └── gate0_output.json           # JSON Schema
│   └── evaluators/
│       └── gate0-policy-screen.ts      # Promptfoo config or custom TS eval
├── .github/workflows/
│   ├── prompt_eval.yml                 # PR 時: lint → unit eval(static 閾値 block)→ cost check
│   └── prompt_regression_cron.yml     # 週次(月曜 0:00 JST): 全 Type 1 E2E eval → 閾値割れで Issue 起票
├── .promptpolicy.yaml                  # global_min_threshold: 0.70
└── .gitignore
    └── prompts/generated/              # Type 4: 生成中間物(バージョニング不要)

6. 参考文献(3 モデル横断で重要度が高いもの)

3 モデル共通引用(最高信頼度)

  • Gu et al. (2024). "A Survey on LLM-as-a-Judge." arXiv:2411.15594
  • Schroeder & Wood-Doughty (2024). "Can You Trust LLM Judgments?" arXiv:2412.12509
  • Semantic Versioning 2.0.0. https://semver.org/

2 モデル以上が引用

各モデルの独自重要文献

Claude 独自:

  • Ma et al. (2023). arXiv:2311.11123 — プロンプト × モデルバージョン回帰テスト
  • SPEAR (2025). arXiv:2508.05012 — prompts as first-class citizens(CIDR 2026)
  • Soumik (2026). arXiv:2604.23178 — スタイルバイアス 0.76-0.92

Gemini 独自:

  • arXiv:2406.06608 — 微細摂動で 30% 変動
  • arXiv:2506.10095 — SBERT による prompt drift 検知
  • HAPO (arXiv:2601.02683) — 最適化のジレンマへの対処

GPT 独自:

  • Chen et al. (2026). arXiv:2503.02400 — Promptware Engineering(最重要新論文)
  • Liang et al. (2025). arXiv:2409.12447 — Prompts Are Programs Too
  • Xu et al. (2025). arXiv:2502.14074 — LLM-as-Judge の非推移性

7. 次工程

  1. 本 synthesis を Decision Pipeline(ADR Quality Review Gate 0-4)に投入

    • Gate 0: Policy Alignment(既存 ADR との整合)
    • Gate 1: Context Quality(RQ-044 根拠の充足性確認)
    • Gate 2: Option Analysis(Monorepo vs Polyrepo の費用対効果算定)
    • Gate 3: Consequence Analysis(KV 動的ロード実装の工数見積もり)
    • Gate 4: Human Review(代表取締役による Phase 1/2 トリガー条件の最終確認)
  2. ADR 仮題(案): 「LLM プロンプトのライフサイクル管理ポリシー — Tier 別 SemVer + Cloudflare KV 動的ロード + Promptfoo eval CI の採択」

  3. ADR 番号: 起草前に docs/adr/ の連番を確認して採番(grep "^# ADR-" docs/adr/*.md | tail -5 で確認)