pipeline-adr-autofix runbook — Anthropic API 障害 / レート制限時のオンコール手順 (ADR-0232 §11.3)
対象:
scripts/pipeline-adr-autofix.mjsの Phase 4 (§10.1 日本語ラベル bullet の Haiku 分類 post-process) が Anthropic API 障害・レート制限で失敗した際の対処手順。 前提: ADR-0232 shipping 後 (2026-07-11) の Pipeline 生成 ADR PR (head =adr/*) が対象。手動起票 ADR PR (drp / main clone 起票) は対象外 (§10.1 を英語 prefix で書けば Phase 4 起動しない)。
1. 症状と exit code
.github/workflows/pipeline-pr-autofix.yml の autofix step が非ゼロ exit で fail する。log と PR コメントの内容で症状を切り分ける:
| exit code | 症状 | log 特徴 | 対処 |
|---|---|---|---|
| 6 | ANTHROPIC_API_KEY secret 未設定 (日本語ラベル bullet 検出時のみ発火) | ❌ ADR-NNNN: §10.1 に日本語ラベル bullet N 件検出 … ANTHROPIC_API_KEY が未設定 | §2 secret 復元 |
| 7 | Haiku 呼び出しが fail (API 障害 / レート制限 / タイムアウト / domain 外分類) | ❌ ADR-NNNN: ... の Haiku 分類 fail: <詳細> | §3 分類 fail |
| 8 | LLM 分類反映後の --check-edges --enforce が fail (LLM 誤分類の疑い) | ❌ Phase 4 (LLM 分類反映) 後の --check-edges --enforce が fail | §4 誤分類 detect |
2. exit code 6 (ANTHROPIC_API_KEY 未設定)
Secret が repo settings から欠落した / 権限が変わったケース。
gh secret list --repo BizLinkPartners/bizlp-gas-accounting | grep ANTHROPIC_API_KEYで存在確認- なければ代表取締役 ([email protected]) から key を取得し
gh secret set ANTHROPIC_API_KEY --repo BizLinkPartners/bizlp-gas-accounting --body '<key>'で復元 - PR で workflow を再走 (Actions タブから re-run · 空 push は不要 · autofix step のみ再実行される)
回避策: 期限が迫っていれば - **<English Prefix>: ADR-NNNN** (Amends / Refines / Depends On / Relates To / Supersedes / Conflicts With / Follows Up On の 7 種) 形式で §10.1 を手動 backfill してから push。Phase 4 は日本語ラベル未検出で skip する。
3. exit code 7 (Haiku 呼び出し fail)
log の ❌ ADR-NNNN: ... 行を確認して原因を分岐:
Anthropic API 429 rate limit: 15-30 分待って再走 (Actions タブから re-run)Anthropic API 500/503: Anthropic status を確認 · 復旧待ち後に再走AbortError(タイムアウト 15 秒超過): 単発なら再走 · 継続的なら network 経路 / rate limit を疑うdomain 外分類: <invalid_type>: Haiku 出力揺らぎ · 再走で解消しない場合は §5 手動 backfill
回避策: §2 と同様。急ぎなら手動 backfill で PR merge を優先し、次 PR で secret / API 状態を復旧。
4. exit code 8 (LLM 分類反映後の enforce fail)
Haiku 分類が反映されたが typed-edges-consistency 側で不整合が残っている。実際に起きる pattern:
- 相手側 ADR が実在しない (
edge-dangling): LLM が誤って ADR-NNNN の桁を間違えた・存在しない未来 ADR を分類対象と誤認 - 逆辺追記漏れ (
edge-inverse-missing): 相手側 ADR file の書き換えが git conflict / permission で失敗 - status mismatch (
edge-status-mismatch): supersedes 分類が SKIP される §3.2 経路にも関わらず status 側が既に superseded に書き換わっていた
対処:
- PR の diff を確認 (
gh pr diff <PR#>or GitHub UI) して LLM 分類結果 (log の🤖 <file>: <keyword>:<target> → <edge_type>行) を検証 - 誤分類なら PR branch に手動で英語 prefix bullet + frontmatter + 相手側逆辺を修正 push
node scripts/adr-lint.mjs --check-edges --enforceを local で pass することを確認して push
5. 手動 backfill 手順 (§2/§3/§4 の共通回避策)
Phase 4 を skip する形で PR を merge するには、§10.1 の日本語ラベル bullet を手動で英語 prefix 化する:
- §10.1 の bullet を
- **<English Prefix>: ADR-NNNN** (説明)形式へ書き換え (7 種の英語 prefix は adr-draft.template.md §10.1 参照) frontmatter typed_edges(amends / refines / depends_on / relates_to / supersedes / conflicts_with / follows_up_on) に対応 ADR-NNNN を追記- 相手側 ADR の逆辺 (superseded_by / amended_by / refined_by / relates_to / conflicts_with / followed_up_by · relates_to と conflicts_with は symmetric) を同 PR で追記
node scripts/adr-lint.mjs --check-edges --enforceを local で pass 確認- push → Phase 4 は日本語ラベル未検出で自動 skip → autofix step は成功
6. Confirmation KPI との関係 (ADR-0232 §9)
本 runbook で対処した事象は KPI 実測へ反映される:
- KPI-1 (人手 backfill 発生数 = 0 件): §5 手動 backfill を実施した PR は
gh pr list --search "typed edges backfill"で count される想定 - KPI-2 (LLM 誤分類率 < 5%): exit 8 の発生件数は typed-edges-consistency CI FAILURE として集計される
- KPI-3 (月次 LLM コスト < $1): exit 7 の 429 頻発は quota 超過を示す · LiteLLM ダッシュボードで実測
KPI 違反時の対応は ADR-0232 §8 撤退条件と §11.2 KPI 計測 scheduled workflow (Phase B PR で新設予定) を参照。
7. 関連 SSoT
- ADR-0232 (
docs/adr/0232-auto-translate-japanese-labels-in-pipeline-adr-autofix-llm.md): 決定本体 scripts/pipeline-adr-autofix.mjs: Phase 4 実装scripts/lib/adr_ja_label_autofix.mjs: 語彙 SSoT + 分類 prompt + rewrite ロジック.github/workflows/pipeline-pr-autofix.yml: workflow 定義 (ANTHROPIC_API_KEYenv 参照).claude/rules/adr-draft.md§10.1 表記規則: 英語 prefix 推奨と日本語ラベル自動英語化の宣言- memory
[[pipeline-generated-adr-pr-postprocess-checklist]]: 受理前後の checklist (本 amend shipping で「日本語ラベル手動 backfill 不要」に更新済)