役割: DRP の検証層(第 7 層)のテストケース台帳。既存テスト資産を TC- 体系に写像し、新規系列(TC-U / TC-G / TC-E / TC-MK)を採番する。戦略・実行タイミングは テスト計画書。
採番: 既存系列(TC-01〜07 / TC-S01〜03 / TC-C01〜05)の定義場所は従来どおり test_cases.md(変更しない)。本書は新規系列の定義場所。SR / EDD / NFR への割当は各文書 frontmatter の verified-by が SSoT(マトリクスの手書きはしない)。
1. 系列の全体像
| 系列 | 定義場所 | 実体 | 自動化 |
|---|
| TC-01〜07 | test_cases.md | Triage 判定 5 + Scoring 採点 2 | 半自動(test-tc.mjs。ただし転写プロンプト陳腐化 → 分類検証の正は TC-G01) |
| TC-S01〜03 | prompts/03_socratic.md 末尾 | 旧問診時代の Socratic ケース | 半自動(test-tc-socratic.mjs)。盲点検出(ADR-0071)対応の改訂は backlog(§4) |
| TC-C01〜05 | prompts/04_consistency.md 末尾 | Gate 2 Conflict / Supersede 判定 | 半自動(test-tc-consistency.mjs) |
| TC-U01〜07 | 本書 §2.1 | vitest 単体(workerd プール) | ✅ 毎 PR |
| TC-G01〜04 | 本書 §2.2 | golden eval(SSoT プロンプト直接ロード) | ✅ prompts 変更時 + 定期(TC-G04 のみ手動・§2.2 注記) |
| TC-E01〜03 | 本書 §2.3 | e2e(mocked / contract / 実 LLM) | ✅ 毎 PR / 隔週 |
| TC-MK01 | 本書 §2.4 | マスキング検証 | ❌ 未実装(planned) |
2. 新規系列の定義
2.1 TC-U: vitest 単体(drp/test/)
| TC | ファイル | 検証内容 |
|---|
| TC-U01 | smoke.test.ts | workerd vitest プールで TS module import / JSON パーサが動く(harness smoke) |
| TC-U02 | numbering_pure.test.ts | ADR 採番の純粋関数(4 桁 / 3 桁混在・次番号決定) |
| TC-U03 | perspective_selector.test.ts | 原稿シード決定的 PRNG による 3 観点選択の再現性 |
| TC-U04 | crossval_loopbreaker.test.ts | goalpost→escalate / 持続却下→reject 温存 / round-cap / trailing-contiguous(非隣接却下除外)の境界 |
| TC-U05 | shared_triage.test.ts | triage 派生フィールド整形が handler / consumer で一致(drift 構造解消の回帰) |
| TC-U06 | session_watchdog.test.ts | queued 30 分 / running idle 20 分の stuck 判定純ロジック |
| TC-U07 | problem_space_decide.test.ts | 受付プリゲート二次判定の決定論(root 2 つ → root_multiple / 従属 issue は数えない / 行き先のない前提 → dangling_premise〔none・reference 空・new_ticket の ADR-0130 3 点欠落〕/ 逐語引用が本文に無い → INVALID / 改行跨ぎ引用の正規化一致 / 複合 reason)。判定は LLM でなくコード(ADR-0142) |
| TC | データセット | ツール | ゲート性 |
|---|
| TC-G01 | gate0-triage/golden.jsonl(26 ケース) | tools/triage-eval/eval.ts(SSoT プロンプト直接ロード) | FN=0 ブロッキング(ADR-0102) |
| TC-G02 | cross-validation/golden.jsonl(26 ケース) | tools/crossval-eval/eval.ts(--verify で多モデル多数決診断) | FN=0(escalate / reject 境界) |
| TC-G03 | body-generation/golden.jsonl(現状 1 ケース) | promptfoo(prompts/production/body-generation/promptfoo.yaml) | 構造検証(ケース拡充は backlog) |
| TC-G04 | problem-space-pregate/golden.jsonl(36 ケース) | tools/pregate-eval/eval-prod.ts(本番 prompt + decide を評価) | FP 率 ≤ 30%(事前 K.O.)/ recall FN=0 / INVALID < 3(ADR-0142)。並列節境界 11 件の false positive を含む |
TC-G04 の自動化(注記): 受付プリゲートの 2 プロンプトは promptfoo.yaml を持たないため、CI(prompt_eval.yml)の LLM 評価は skip される。golden eval は人間が Cloud Run gateway + Keychain MASTER key で手動実行する(eval-prod.ts・drp-ops Skill「golden eval」と同手順・エージェント環境からは gateway 不達)。CI で走るのは meta-lint / PII scan / threshold check のみ。決定論部分(root 数 / 行き先 / 逐語照合)は TC-U07 が毎 PR で自動カバーする。Phase A 実測 = FP 率 3.2% / recall 100% / precision 83.3%(tools/pregate-eval/RESULTS.md)。
2.3 TC-E: e2e(test/e2e/ + workflows)
| TC | 実体 | 実行タイミング |
|---|
| TC-E01 | mocked-route Playwright(toggle_test.mjs / reserve_test.mjs 等。全 API を page.route() でモック) | 毎 PR(ui-e2e job) |
| TC-E02 | mock drift gate(モック応答 ↔ src/contracts/chat_api_contract.ts の型突合) | 毎 PR(contract-check) |
| TC-E03 | 実 LLM full-run(起案 → 全ゲート → 終端まで通し) | 契約/ハンドラ変更 PR 自動 + 隔週月曜 06:00 JST + workflow_dispatch |
2.4 TC-MK: マスキング(未実装)
| TC | 想定内容 | 状態 |
|---|
| TC-MK01 | litellm/masking.py の fail-fast 検証 — 機密パターン(取引先名・金額・scriptId・OAuth)の除去と、マスキング不能時に送信せず失敗すること | 未実装。機密マスキング要件の verified-by を充足するための planned ケース。実装は main 分担(LiteLLM 側のため sub では実装不可) |
3. 割当の考え方(記録)
- 本文生成・情報提供型ゲート(並列レビュー / Policy Alignment)は差戻し判定を持たないため、実 LLM full-run(TC-E03)での出力存在 + スキーマ検証を最低保証とし、品質は実起案モニタリングで補う。
- 採番・PR 作成は純ロジック(TC-U02)+ full-run(TC-E03)の組合せ。
- 非同期実行・進捗可観測性は watchdog 純ロジック(TC-U06)+ UI e2e(TC-E01 / TC-E02)+ full-run(TC-E03)。
4. 既知ギャップ(backlog)
- TC-S 系の陳腐化: 旧問診(差戻し型)時代のケースのまま。盲点検出エンジン(情報提供型)の期待値(findings スキーマ・決定性)への改訂が必要。
- TC-01〜07 の実行器:
test-tc.mjs の転写プロンプトが 2026-05-12 のまま陳腐化(SSoT 読込化 or triage 部分退役は main 申し送り済・README §本番運用情報)。
- 情報提供型ゲートの品質 assertion: 並列レビュー / Policy Alignment の出力品質を機械検証する手段が未整備(実起案モニタリングのみ)。
- TC-G03 の単一ケース: 本文生成 golden が 1 ケースのみ。mode 別構造(Light / Standard / Critical)のカバレッジ拡充が必要。
- TC-MK01 未実装: §2.4。
- 受付プリゲートのノード統合テスト未整備: TC-U07 は決定論ロジック(
problem_space_decide)を、TC-G04 は判定精度を検証するが、受付ノード(problem_space_pregate.ts)の統合挙動 — INVALID(逐語照合失敗)を差戻さず socratic へ通すこと・graph 分岐 OFF・差戻し回数の bounded rounds 通算 — の自動テストは無い。full-run e2e(TC-E03)と本番 20 run の人手確認で代替している。
変更履歴
| 日時 | 変更 |
|---|
| 2026-06-05 | 初版 — 既存テスト資産(vitest 6 / golden 3 datasets / e2e 2 層)を TC-U / TC-G / TC-E 系列に写像し、TC-MK01 を planned 採番。verified-by 未割当 SR の解消に使用(ADR-0117 Phase 2) |
| 2026-06-18 | TC-U07(受付プリゲート二次判定の決定論)+ TC-G04(受付プリゲート golden eval・36 ケース)を採番。SR-012 の暫定割当(TC-E03 流用)を解消(ADR-0142)。TC-G04 は CI 自動評価対象外(手動)の旨を §2.2 に明記。§4 にノード統合テスト未整備(既知ギャップ 6)を追加 |