最終更新: 2026/07/03 20:44
adr_triage_eval mini app の運用手順 (ADR-0102 / ADR-0135 refined_by)
LLM triage 精度 (Light / Standard / Critical の 3 mode 分類) を GT (人手 verdict) と突き合わせて評価する mini app。ADR-0102 (Tier pipeline review depth) と ADR-0135 (layer review depth by mode) の accepted rate と label 精度を継続観測する手段。
決定根拠: ADR-0102 (docs/adr/0102-tier-pipeline-review-depth.md) と ADR-0135 (docs/adr/0135-layer-review-depth-by-mode-in-decision-pipeline.md)。実装 SSoT: drp/src/adr_triage_eval/ (drp session 54-55 shipping · PR #4221 skeleton · PR #4229 Phase 2 本実装)。
目的
- LLM triage の 3 mode 分類が代表取締役の判断 (= GT) と一致しているか、confusion matrix + overall accuracy で可視化する
- ADR-0180 の起案漏れ検知 mini app (
adr_omission_report/) と同型の pattern で、月次 export を PR 起票して SSoT 化する
前提
| 項目 | 値 |
|---|---|
| 本番 URL | https://drp.bizlp.dev/adr-triage-eval/ |
| feature flag | ADR_TRIAGE_EVAL_ENABLED=true (drp secret) |
| GitHub PAT | GITHUB_PAT_ADR_EVAL (= adr-eval と共用 · repo scope) |
| 認証 | Cloudflare Access (代表取締役 email 経由) |
| KV | KV_ADR_TRIAGE_EVAL (key format: adr-triage-eval:{ADR-NNNN}) |
| 実装 shipping | PR #4229 (5022fff2 · deploy success 2026-07-03T06:13:14Z) |
GT 記入手順
https://drp.bizlp.dev/adr-triage-eval/に browser access (代表取締役 email · Cloudflare Access 経由)- UI 上部の filter checkbox で「保存済み ADR を非表示」を on → 未記入 ADR に集中
- accepted ADR 一覧 (adr-index.json から自動取得) の各行で 正解 mode dropdown (
Light/Standard/Critical) を選択 POST /saveが KV に自動保存 (行単位 progressive save · KV loss しても adr-index SSoT は無傷)- 全件記入後、下部の「export → PR 起票」button で月次 export PR を起票
confusion matrix 解釈
3×3 の confusion matrix を UI 上部の metrics card に表示する。
| 軸 | 意味 |
|---|---|
| 行 (LLM) | 実際に LLM が下した mode 判定 |
| 列 (GT) | 代表取締役が下した正解 mode |
| 対角要素 | 一致 (TP) |
| 非対角 | 不一致 (FP = LLM 過剰 / FN = LLM 過少) |
派生指標:
- precision by mode = 対角要素 / row 合計 (例: LLM が
Lightと判定した中で GT=Lightの率) - recall by mode = 対角要素 / col 合計 (例: GT=
Lightの中で LLM がLightと当てた率) - overall accuracy = 対角合計 / 全 sample
閾値と目標は本 mini app 稼働 3 ヶ月分のデータが揃った後に別 ADR で決める (現状 draft 未起票のため明示不要)。
export 手順
- UI 下部の「export → PR 起票」button を押す
POST /exportが 4 step で実行される (drp/src/adr_triage_eval/github_api.ts createTriageExportPr)- contents GET (
docs/_internal/06_ops/adr_triage_eval_report/YYYY-MM.mdの現状取得 · 無ければ空扱い) - 内容更新 (KV から全 GT を読み出して markdown table に反映)
- branch 作成 (
docs/adr-triage-eval-export-YYYY-MM) - PR 起票 (
gh api経由)
- contents GET (
- 起票された PR は doc 側で review + merge
障害時 fallback
| 症状 | 原因 | 対応 |
|---|---|---|
410 Gone | feature flag off | wrangler secret put ADR_TRIAGE_EVAL_ENABLED true (drp/ で実行) |
500 Internal Server Error | PAT missing または adr-index.json 取得失敗 | GITHUB_PAT_ADR_EVAL 再登録 · adr-index.json 存在確認 |
401 / 403 | CF Access token 期限切れ or CF-Access header 未付与 | CF Access で再認証 |
POST /save で KV write 失敗 | KV namespace 未 binding | drp/wrangler.toml の [[kv_namespaces]] binding = "KV_ADR_TRIAGE_EVAL" を確認 |
撤退条件 (draft 起票時に §8 として本 doc から引用予定)
- 記入時間 > 25 分 (50 件基準) が 2 ヶ月連続
- KV loss が 3 ヶ月に 1 回以上
- GitHub API rate limit (5000/h) 超過
- drp workers CPU time 10ms 平均を 2 週間連続で超過
- 撤退時:
/adr-triage-evalendpoint 削除 · KV namespace purge · markdown 版 (adr_triage_eval_report/YYYY-MM.mdの手編集) に戻す
関連
- ADR-0102 (
docs/adr/0102-tier-pipeline-review-depth.md) — LLM triage の 3 mode 分類根拠 - ADR-0135 (
docs/adr/0135-layer-review-depth-by-mode-in-decision-pipeline.md) — layer review depth の mode 別配分 drp/src/adr_triage_eval/(6 file · router / ui / fetch_adrs / compute_metrics / kv_store / github_api)- 先行類似 mini app (
docs/_internal/06_ops/adr_omission_report/README.md) — adr-eval (ADR-0180 refined_by) mini app の月次 GT 記入 手順 docs/_internal/05_how-to/observability.md§4 GT 評価画面 — 兄弟 mini app の観測性 SSoT