• Status: Proposed
  • Mode: Standard
  • Kruchten Type: Existence/Property
  • Scope: platform
  • Implementation Status: Not Started
  • 起案者: [email protected]
  • 起案日時 (JST): 2026-05-26 21:32
  • 承認日時 (JST): -
  • Deciders: [email protected] (単独)

コンテキスト

1.1 背景 (Background)

ADR-0056 は Gate 0 Triage に seed: 42 / temperature: 0.2 を設定し、ADR worthy 判定の再現性を確保した (Phase 3, PR #1009)。§6.5 検証手段 2 で「golden.jsonl で T=0 工程の再現性を回帰テスト」を計画していたが、未実装のまま残置されている。

1.2 現状 (Current State / As-Is)

  • Anthropic は 2025-06〜2026-05 の期間に Claude Sonnet を 3 回メジャー更新 (3.5 v2 → 4.5 → 4.6)。各更新で seed 固定出力が変化する可能性がある
  • 現在の Gate 0 は月 5 件の ADR を処理
  • 過去に明確な drift 発生は未計測 (本 ADR が計測の出発点)

1.3 課題 (Problem)

  • ADR-0056 §6.5 で計画された回帰テストが未実装で、モデル更新時の Gate 0 判定 drift を検出できない
  • 1 件でも mode 誤判定 (Light→Standard 等) があると Pipeline 全体のコスト・処理時間に影響
  • drift が蓄積するまで気づけない

1.4 制約・要件 (Constraints & Requirements)

  • ADR-0056 の seed: 42 / temperature: 0.2 設定を前提とする
  • CI 実行時間を過度に増やさない (golden.jsonl 10 件上限推奨)
  • モデル更新は不可避であり、判定変化が必ずしもバグではないため CI は WARN とし FAIL にしない
  • golden 維持コストは年 1 人日未満に抑える

1.5 目標 (Goals / To-Be)

Gate 0 Triage 専用の回帰テストを整備し、モデル更新時の判定 drift を CI 上で早期に WARN として可視化する。Non-Goals: Gate 1 以降の再現性テスト、自動 golden 更新。

決定

prompts-eval/datasets/gate0-triage/golden.jsonl に 5-10 件の入力→期待出力ペアを定義し、seed=42 で Gate 0 を実行 → mode 完全一致 + reason 類似度 (cosine ≥ 0.8) で判定する回帰テストスクリプトを実装する。CI には WARN レベルで組込み、WARN 発生時は人間が golden 更新 or mode 変化妥当性をレビューする運用とする。

判断基準 (Decision Drivers)

3.1 評価軸 (Q42 9 タグから 3-5 個選定)

#重要度 (係数)案件特有の解釈
1#reliable[Must] (×2.0)Gate 0 判定 drift を検出できる信頼性
2#operable[High] (×1.0)CI 運用負荷 (WARN 対応・golden 更新頻度)
3#maintainable[High] (×1.0)golden.jsonl のメンテナンス容易性
4#efficient[Medium] (×0.5)CI 実行時間・初期実装工数

K.O. criterion: Must 軸 (#reliable) の score < 3 は不採用。

3.2 評価軸 × 案スコア表

係数採択案 (WARN 方式)案 A (テストなし)案 B (厳密 FAIL)
#reliable2.0415
#operable1.0451
#maintainable1.0432
#efficient0.5452
加重和 (正規化)0.8000.5220.633
K.O. 通過 (Must ≥3)

検討した代替案 (Alternatives Considered)

  • 案 A: テストなし (現状維持) — 不採用理由: ADR-0056 §6.5 の計画未達。モデル更新時の判定変化が検出されず drift が蓄積するまで気づけない。#reliable で K.O.。
  • 案 B: 厳密 FAIL (完全一致必須) — 不採用理由: モデル更新のたびに CI が壊れ、golden.jsonl の更新が頻発。年 3 回のモデル更新 × 毎回 golden 全件再評価で運用負荷過大。

影響 (Consequences)

5.1 正の影響 (Good)

  • モデル更新時の Gate 0 判定 drift を早期検出できる
  • golden.jsonl がドキュメントとしても機能 (「この入力にはこの判定が正解」の定義)
  • ADR-0056 §6.5 の計画達成

5.2 負の影響 (Bad)

  • golden.jsonl のメンテナンスコスト (モデル更新時に review + 必要なら update、年 0.9 人日想定)
  • 初期実装で 1.5 人日が必要

5.3 中立・トレードオフ (Neutral / Trade-offs)

  • provider が seed パラメータの挙動を変更した場合、WARN が常態化する可能性 → §撤退条件で対応
  • golden.jsonl の件数が多すぎると CI 実行時間増加 → 10 件上限推奨
  • モデル固有の mode 境界値 (Light/Standard 判定の閾値) 変化は mode 不一致として検出される

人的ステークホルダー:

  • 代表取締役 (Pipeline オーナー): WARN 発生時の golden 更新判断
  • Jr 開発者 (2026-10): モデル更新 PR 作成時の回帰テスト確認

コスト試算

項目工数
golden.jsonl 5-10 件作成 (既存 ADR draft から選定・期待出力記録)0.5 人日
回帰テストスクリプト実装 (seed=42 実行 + golden 比較)0.5 人日
CI 組込み (GitHub Actions workflow)0.2 人日
初回 WARN チューニング (閾値調整)0.3 人日
初期実装合計1.5 人日
モデル更新時の golden レビュー + 更新0.3 人日/回 (年 3 回想定 = 0.9 人日/年)

完了条件 (Definition of Done)

  1. prompts-eval/datasets/gate0-triage/golden.jsonl に Light/Standard/Critical 各 2 件以上、計 6-10 件が定義済
  2. 回帰テストスクリプトが seed=42 で Gate 0 を実行し、golden との mode 一致率を出力
  3. GitHub Actions CI に組込み完了 (PR トリガで自動実行)
  4. 初回実行で全件 mode 一致 (WARN ゼロ) を確認
  5. 意図的に golden を 1 件変更して WARN が発生することを確認 (偽陰性テスト)

Confirmation (準拠確認 / Fitness Function)

  • 検証手段: GitHub Actions workflow が PR トリガで prompts-eval/datasets/gate0-triage/golden.jsonl に対し seed=42 で Gate 0 Triage を実行し、mode 完全一致 + reason cosine similarity ≥ 0.8 を評価。不一致時は WARN ラベルを PR にコメント。
  • 実行頻度: PR 作成・更新時 (自動)、およびモデル更新 PR 時に手動再実行。
  • 違反時の対応: WARN 発生時は起案者 (代表取締役) が golden を更新するか、mode 変化が妥当か人間レビューを行う。WARN 率が 3 ヶ月連続 50% 超の場合は撤退条件発動。

撤退条件 (Rollback Plan)

  • WARN 率が 3 ヶ月連続 50% 超なら seed 固定の前提自体を ADR-0056 改訂で見直し
  • golden.jsonl が 6 ヶ月更新されていなければ obsolete 判定 → テスト無効化 (CI から除外)
  • スクリプト廃止手順: 1) CI workflow から job 削除、2) golden.jsonl アーカイブ、3) ADR-0056 §6.5 に廃止追記
  • Review After: 2026-11-26 (6 ヶ月後)

参照 (References)

  • 関連 ADR: ADR-0056 (Gate 0 Triage seed 固定, Phase 3, PR #1009)
  • 関連 PR/Issue: PR #1009 (要追記: 本 ADR 実装 PR)
  • 外部資料: -