型付き辺: 出 9 / 入 1
ADR-0143: Cross-Validation の critical×Must 判定を 2 段化し第 1 段を socratic 直後に前倒しする
- Status: Accepted (PR #1842 merge = 受理の規約により 2026-06-12 受理・代表取締役判断)
- Mode: Standard
- Kruchten Type: Executive/Property
- Scope: platform
- Implementation Status: Reverted (ADR-0154 で第 1 段早期差し戻しゲートを撤回・実装中止 = PR #2046。実装着手前パイロットで K.O.〔3KPI 同時達成閾値が存在せず・cv_reject と FP の確信度分布が完全重複〕。K.O. で着手前のため物理コードは未実装。再導入は ADR-0154 §撤退条件 3 要件を別 ADR で証明した場合に限る)
- 起案者: [email protected]
- 起案日時 (JST): 2026-06-12 11:20
- 承認日時 (JST): 2026-06-12 11:41
- Deciders: [email protected] (単独)
撤回注記 (Corrigendum・2026-06-16): 本 ADR の第 1 段早期差し戻しゲートは、実装着手前パイロットで K.O.(撤退条件 FPR ≤ 5% に対し実測 40〜100%)となり、ADR-0154 で撤回・実装中止が受理された(PR #2046)。根本原因は構造的で、本番 CV 通過判定の約半分が body の緩和策で成立しており、body を見ない第 1 段では再現不能(正しい差し戻しと誤差し戻しの確信度分布が完全重複・中央値とも 0.82)。Accepted 後本文は Immutable のため決定本文は変更せず、撤回理由・確信度分布重複の根拠・再導入禁止 3 要件は ADR-0154 を正典とする(ADR-0154 Confirmation #5 が求める「本文への分布図・3 要件の埋め込み」は、Immutable 制約により本注記からの ADR-0154 参照で代替する)。
コンテキスト
§1.1 背景
Cross-Validation (critical 盲点 × Must 軸 × undermines) は scoring の後ろでしか走らない。判定が「Gate1 盲点 × Gate4 の Must 軸スコア」の JOIN で、スコア依存だからである。だが critical 盲点は socratic 直後に確定し、Must 軸の宣言 (identity) は起案の判断基準に最初から存在する。判定材料の大半が揃っているのに、最もコストの高い Opus 2 ノード (body_generation・scoring) を回し終えるまで検査されない。本 ADR は ADR-0142 受理時の前提 (行き先 = 残論点台帳 Q3・起票義務) の履行である。
§1.2 現状 (As-Is)
CV は scoring 後の単一段で実行され、critical×Must 矛盾の判定は body_generation と scoring を経た後にしか走らない。
§1.3 課題
実害は 3 つ。
- 高コストノード消費後の差し戻し: 却下の 72% が scoring 通過済み、CV 差し戻しは 35/72 run (約 49%・2026-06-05 ベースライン)。差し戻し 1 件ごとに Opus 2 ノード分の費用と 1 往復の待ち時間が発生する。
- goalpost ループの温床: body 再生成ごとに盲点が動く (同一原稿で盲点の一致は 6% の実測・非決定)。さらに「fix した箇所が次ラウンドの新 critical になる」連鎖が 3 件連続で実証されている (ADR-0100/0101/0102・いずれも Standard 45〜47 合格なのに #reliable × critical で 2〜3 連続差し戻し)。bounded rounds (ADR-0109) で停止はするが、escalate 終端と人手対応が増える。
- 構造的バイアスの放置: #reliable を Must に置く設計 ADR は、「実装時にしか実証できない前提」型の critical 盲点 (socratic が必ず 1 件は出す) でほぼ必ず引っかかる。この型は起案の文面修正では解消できず、差し戻しても goalpost が動くだけである。
§1.4 制約・要件
- ADR-0076 の CV 判定権威・観点所有 1 つ・FN=0 の安全性は不変
- ADR-0109 の bounded rounds 枠内で動く (段間で別カウントにしない)
- ADR-0142 の層目的分離 (② 分析成立 / ③ 頑健性) を侵さない
- 生テキスト基準で run 間の判定安定 (RQ-098 準拠)
- prompts/production の SSoT + golden eval に乗る形
§1.5 目標 (To-Be)
明確な critical×Must 矛盾を Opus 2 ノード前で fail-fast し、文面で解消できない型はループに乗せず実装時ゲートへ capture する。Non-Goals: CV 全体の前倒し / body_generation への自己検査埋め込み / 本番 CV のスコープ判定改修 (RQ-098 の re-home 機構本格実装)。
決定
CV の critical×Must 判定を 2 段化し、第 1 段 (軽量・高 precision 設定) を socratic 直後・body_generation 前に配置する。判定カテゴリを「(a) 文面解消型 = 早期差し戻し」「(b) 実装実証型 = 差し戻さず実装時ゲート・撤退条件への capture 指示」に分け、確信度が閾値未満なら素通しして本番 CV に委ねる。第 1 段 pass は判定を主張しない (本番 CV が唯一の確定判定)。
設計の中身は次の 7 点。
- 位置 = ③ 審査・socratic 直後 (body_generation 前)。入力 = 起案生テキスト (判断基準の Must 軸宣言) + socratic の critical 盲点。② 受付には置けない (socratic 出力が必要。ADR-0142 受理時に分離確定済み)。
- 検査の所有は CV 系のまま 1 つ (§G の規律と整合): 第 1 段は同一検査の前倒し実行であり、新しい観点ではない。fail のみ早期化し、pass は判定を主張しない。二重審査にならない理由 = 同一基準・同一の bounded rounds 枠・所有 1 つで実行段だけが 2 つ。
- 判定カテゴリ 2 分 (goalpost の根を断つ中核設計):
- (a) 文面解消型 = 起案の修正で解消できる明確な前提矛盾 → 判定理由+本文からの逐語引用つきで早期差し戻し。
- (b) 実装実証型 = 実装時にしか実証できない前提への疑義 (0100/0101/0102 型。決定論性・実コスト・性能など) → 差し戻さず、「実装時ゲート・撤退条件への capture」推奨を D-1 記録に残して通過。
- 確信度が閾値未満 → 素通し (本番 CV に委ねる。第 1 段は高 precision・低 recall でよい)。
- 2 層フィルタ前処理: LLM 判定の前に、Must 軸宣言との逐語矛盾が本文中で形式的に照合できるか否かを決定論的ルールで絞り込む。
- Must 軸宣言が逐語照合可能な形式で存在しない起案は、素通しと区別して「宣言不明確のため第 1 段スキップ」を D-1 に記録し本番 CV に委ねる (スキップ多発は入力品質の問題として月次集計で可視化)。
- 安定化設計 (RQ-098 準拠): Must 軸ごとの二値判定+逐語引用必須 (実在を機械照合) +最終判定は決定論的 post-processor。temperature 0・厳格 JSON schema・プロンプトハッシュキャッシュ。生テキスト基準のため body 再生成の非決定性 (盲点 6% 一致) の影響を受けない。
- 判定権威と通知: 第 1 段と本番 CV の判定が矛盾した場合、本番 CV の判定を唯一の確定判定とする。bounded rounds のカウントは第 1 段差し戻しと本番 CV 差し戻しを通算する (ADR-0109 の枠内・段間で別カウントにしない)。第 1 段 pass は起案者に通知せず D-1 ログのみに記録 (「予備通過後の本番差し戻し」への期待値ギャップを設計段階で回避)。
- 運用: 差し戻しは ADR-0109 の bounded rounds 枠内・D-1 記録。graph 分岐で OFF 可能。確信度閾値は設定ファイルに外出しし、変更は PR レビュー必須。プロンプトは prompts/production の SSoT+golden eval に乗せる。golden は過去 CV 差し戻し 35 件+本番 CV 通過 20 件を起案ドメイン別に層別化して 2 型分類し、第 1 段判定と本番 CV 判定が不一致だった件を自動追加して四半期ごとに再評価 (閉じたテストセット化の防止。ケース数と最終更新日を telemetry に表示し長期間未更新なら警告)。
判断基準 (Decision Drivers)
3.1 評価軸
| # | 軸 | 重要度 (係数) | 案件特有の解釈 |
|---|---|---|---|
| 1 | #efficient | [Must] (×2.0) | Opus 2 ノード前の fail-fast で run コストと差し戻し往復を削減。K.O. = パイロットで第 1 段が先取りできる件数が 30% 未満なら不採用 |
| 2 | #reliable | [High] (×1.0) | 早期差し戻しの precision (本番 CV 判定・人手確認との一致) 80% 以上と、生テキスト基準による run 間判定安定 |
| 3 | #usable | [Medium] (×0.5) | 差し戻し理由が逐語引用つき・実装実証型には capture 先 (実装時ゲート・撤退条件) の指示が付き、起案者が次の一手に迷わない |
| 4 | #maintainable | [Medium] (×0.5) | プロンプト 1 本の追加を prompt-cicd (SSoT+golden eval) に乗せる |
K.O. criterion: Must 軸 (#efficient) の score < 3 は不採用。
3.2 評価軸 × 案スコア表
| 軸 | 係数 | 採択案 (2段化) | 案1 (現状維持) | 案2 (②統合) | 案3 (body自己検査) | 案4 (CV全体前倒し) |
|---|---|---|---|---|---|---|
#efficient | ×2.0 | 4 | 1 | - | 1 | 2 |
#reliable | ×1.0 | 4 | 3 | - | 1 | 2 |
#usable | ×0.5 | 4 | 2 | - | 2 | 3 |
#maintainable | ×0.5 | 3 | 5 | - | 2 | 2 |
| 加重和 (正規化) | 0.775 | 0.450 | - | 0.250 | 0.425 | |
| K.O. 通過 (Must ≥3) | ✓ | ❌ | ❌ (前提崩壊) | ❌ | ❌ |
案 2 は socratic 出力が ② 時点で存在せず構造的に成立しないため Must 評価不能。
検討した代替案 (Alternatives Considered)
- 案 1: 現状維持 (CV 1 段のみ) — 却下の 72% が scoring 通過後・goalpost 3 件連続の構造的バイアスが放置される。
#efficientで K.O.。不採用。 - 案 2: ② 受付プリゲート (ADR-0142) への統合 — critical 盲点は socratic の出力であり ② の時点では存在しない。② = 分析成立 / ③ = 頑健性という層の目的分離 (§G-3) にも反する。ADR-0142 受理時に分離を確定済み。不採用。
- 案 3: body_generation プロンプトへ Must 整合の自己検査を埋め込み — fail しても Opus コストは発生済みで、生成と検査の同居は自己採点バイアスを生む (CV の自己スコア前提ループで実証済み)。不採用。
- 案 4: CV 全体を socratic 直後へ移動 (1 段のまま前倒し) — CV は生成された body と盲点の突合 (スコア根拠の検証) も担うため移動できない。前倒せるのは body 非依存の critical×Must 宣言部分のみ — それが本決定の 2 段化である。不採用。
影響 (Consequences)
§5.1 正の影響 (Good)
- 差し戻しの約半数を占める CV 差し戻しの一部が Opus 2 ノード前に先取りされる
- goalpost ループの 2 大要因 (body 再生成の盲点非決定・実装実証型の文面差し戻し) を構造的に外す
- escalate 終端と人手対応の減少が期待できる
- 生テキスト基準のため body 再生成の非決定性 (盲点 6% 一致) の影響を受けない
§5.2 負の影響 (Bad)
- socratic 直後に LLM 1 call 追加 (run レイテンシ微増)
- プロンプト保守対象が 1 本増える
- 人手確認キュー (担当者・SLA 24 時間以内) の運用負荷が初期 20 run で発生
§5.3 中立・トレードオフ (Neutral / Trade-offs)
- カテゴリ誤分類リスク: 実装実証型を文面解消型と誤判定すると goalpost を第 1 段に持ち込む → 確信度閾値未満は素通しの設計と golden eval の分類ケースで抑える
- 第 1 段の誤差し戻し: 高 precision 設定+撤退条件で監視
- Must 軸宣言の表記揺れ (Gate1 #1): 「§3.2 の判断基準に従う」等の同義自由記述は決定論的逐語照合では名寄せできず、スキップ多発でコスト削減効果がゼロになるリスク。パイロット 55 件で「宣言不明確スキップ」件数と割合を必ず計測し、スキップ率 40% 超なら受付段階での構造化入力強制を対策として確定する手順をパイロット設計に組み込む。
- safety circuit 自動 OFF 後の再 ON 手順 (Gate1 #2): 再 ON の条件・承認者・承認フロー (precision 集計完了の確認方法・承認権限者・再 ON までの最大猶予期間) を operator_guide に明記することを完了条件とし、再 ON フローが存在しない状態でのリリースを禁止する条件を撤退条件に加える。
- 本番 CV による capture 済み盲点の再差し戻し (Gate1 #3): 「本番 CV が capture 指示済み盲点を再度差し戻す条件」を明示的に定義し、除外しない場合の rounds 消費シナリオと escalate 増加率の試算をパイロットで実測する。
- 第 1 段 pass の誤認 (Gate1 #4): D-1 ログ参照可能なレビュアーが「予備審査合格」と誤認するバイアス。operator_guide と起案者向けドキュメントに「第 1 段 pass は本番 CV の免除でも予備承認でもなく、判定を本番 CV に委譲したことを意味する」を必須記載とし、初回リリース時の全起案者への周知完了を撤退条件に並記する。
- パイロットコーパスの代表性 (Gate1 #5): ADR-0142 導入前の起案に偏る。パイロットコーパスに「ADR-0142 稼働後に流入した起案」を最低 5 件以上含めることを実施条件として明記し、コーパス選定基準と分布代表性の確認手順をパイロット設計に追記する。
- 3KPI 同時達成の可能性 (Gate1 #6): 単一閾値で precision 80%・FPR 5%・先取り率 30% を同時達成できる確率分布が事前未検証。パイロット設計に「確信度スコアの分布と precision-recall 曲線の実測」を含め、3KPI を同時に満たす閾値が存在するか否かをパイロット合否判定の前提条件とする。
- 損益分岐シートの感度分析 (Gate1 #7): ドメイン別先取り率感度分析 (先取り率が 30%→15% に半減した場合の月次損益) を追加し、ドメイン分布変化を月次集計の必須 KPI として telemetry に含める。
撤退条件 (Rollback Plan)
- パイロットで第 1 段の先取り可能件数が過去 CV 差し戻しの 30% 未満なら実装に入らず不採用 (K.O. と同値)
- パイロットで false positive rate (本番 CV 通過 20 件を誤って fail にする率) が 5% 超、またはカテゴリ誤分類率 (実装実証型→文面解消型の取り違え) が 10% 超なら実装に入らず不採用
- パイロットで「宣言不明確スキップ」率が 40% 超なら受付段階での構造化入力強制を対策として確定するまで実装に入らない (Gate1 #1)
- 再 ON フロー (precision 集計完了の確認方法・承認権限者・最大猶予期間) が operator_guide に未記載の状態でのリリース禁止 (Gate1 #2)
- 第 1 段 pass の意味に関する起案者周知が完了していない状態でのリリース禁止 (Gate1 #4)
- Must 軸の追加・変更時は golden eval を自動再実行し、precision が 80% 未満に劣化して閾値再チューニング (設定ファイル PR) で復旧しなければ OFF
- 導入後 20 run 到達時に precision が未集計 (人手確認キューの滞留) なら safety circuit で自動 OFF
- 導入後 20 run で早期差し戻しの precision (人手確認で「正当」と判定される割合) が 80% 未満なら graph 分岐で OFF
- 導入後 30 run で第 1 段の発火 (差し戻し+capture 指示) が 0 件なら導入益なしとして OFF を評価
- ロールバック手順: graph 分岐でノードを OFF にする (本番 CV・他ノード・KV draft・D-1 記録への影響なし)
コスト試算
- 実装 (main): socratic 直後ノード追加+プロンプト 1 本+output_schema+決定論的 post-processor+2 層フィルタ (形式ルール) +golden eval (35 件+通過 20 件のドメイン別層別化・2 型分類) +Must 軸変更検知での自動再実行+safety circuit+telemetry 記録で 2〜3.5 人日 (prompt + output_schema + golden eval を同一 PR・ADR-0138 確立パターン)
- 実装 (sub): operator_guide 追補+構造正典 §G-1 ③ 行の 2 段実行注記+残論点台帳 Q3 行の削除で 0.25 人日
- パイロット: 過去 CV 差し戻し 35 件+本番 CV 通過 20 件をドメイン別に層別化して再判定 (先取り率・precision・false positive rate・カテゴリ誤分類率 〔実装実証型→文面解消型の取り違え〕を実測・実装前に実施) で 0.5 人日。判定結果から「先取り率 × precision × run 頻度」で期待月次節約額を試算し、運用追加コスト (軽量モデル料+人手確認の工数換算) と比較する損益分岐シートを実装判断前に作成する
- 運用: 軽量モデル 1 call/run (1〜2 円/run・キャッシュで同一再投入 0 円)。先取り 1 件ごとに Opus 2 ノード分 $0.2〜0.3 と差し戻し 1 往復の待ち時間を節約
Confirmation
- 検証手段: run telemetry に第 1 段判定 (pass / fail / capture 指示 / スキップ・カテゴリ・確信度・逐語引用・照合結果・本番 CV 判定との一致/不一致) を記録し、月次で先取り率・precision・false positive rate・ドメイン別先取り率・宣言不明確スキップ率を集計する。導入直後 20 run までは run ごとに人手確認 (ADR-0142 で整備する operator_guide ルーブリックを共用。担当者・SLA 24 時間以内・エスカレーション先を operator_guide に明記)。不一致件は golden eval に自動追加し四半期ごとに再評価する。
- 実行頻度: 判定記録 = run ごと / 集計 = 月次 / パイロット = 実装前に 1 回 / golden eval 再評価 = 四半期
- 違反時対応: 撤退条件の閾値評価を行い、該当すれば graph 分岐で OFF (20 run 時 precision 未集計は safety circuit で自動 OFF)。KPI = CV 差し戻し総数に占める第 1 段先取り率 30% 以上・早期差し戻し precision 80% 以上・false positive rate 5% 以下・カテゴリ誤分類率 10% 以下
- 長期評価: 導入 3 ヶ月後に、本番 CV 側のスコープ判定改修 (RQ-098 の re-home 機構の本格実装・本 ADR のスコープ外) の要否を再評価する
Review After
- 次回レビュー: 2026-12-01(導入 3 ヶ月後評価〔RQ-098 re-home 機構の要否〕と KPI 確定が揃う時期。0141/0142 のレビューと同時実施)
- レビュー主体: ③ 審査検査の所有者(DRP 運用者。現任 = 代表取締役)
- 前倒しトリガ: ① safety circuit 自動 OFF が発動した時 ② パイロットが K.O.(先取り率 30% 未満・FPR 5% 超・誤分類率 10% 超・スキップ率 40% 超)のいずれかに該当した時 ③ 本番 CV のスコープ判定改修(RQ-098 本格実装)が起案された時(2 段化の役割再配置を統合評価)
参照 (References)
- 関連 ADR:
- ADR-0076 (Cross-Validation ゲート新設) — 改修 (検査の実行を 2 段化する。判定基準・観点の所有・FN=0 の安全性は不変で、第 1 段 pass は何も確定しない)
- ADR-0109 (過剰審査ループの bounded rounds) — 補完 (下流の停止性対策に対し、ループの発生源〔実装実証型の文面差し戻し〕を上流で外す。第 1 段の差し戻しも同枠内)
- ADR-0142 (問題空間切り分けプリゲート) — 並立 (② = 分析成立の検査 / 本決定 = ③ 頑健性検査の前倒し。0142 の前提〔socratic 依存のため ② に置けない〕の行き先が本 ADR であり、起票義務の履行)
- ADR-0135 (mode 別レビュー深度) — 並立 (mode 階層と直交。第 1 段は全 mode 共通)
- ADR-0119 (コード実査グラウンディング) — 参照 (過去 35 件の CV 却下を使うパイロット手法と precision 閾値方式の先例)
- ADR-0100 / 0101 / 0102 — 参照 (Standard 45〜47 合格後の #reliable × critical で 2〜3 連続差し戻しの実証ケース。実装実証型 capture の設計根拠)
- ADR-0138 — 参照 (prompt + output_schema + golden eval を同一 PR で出す確立パターン)
- 関連 PR/Issue: 残論点台帳 Q3 (本 ADR で起票義務履行・台帳行削除)
- 外部資料: RQ-098 (生テキスト基準・再現性設計)