最終更新: 2026/06/22 18:56
residual-risks-status-tag — escalate 採択 ADR の Status タグ双方向整合
上位 doc: §6.9 in adr-lint_rules.md — Summary Table 集約参照
id: residual-risks-status-tag
severity: error
category: metadata
since: 2026-06-04
status: active
fixable: true
description: HITL-RATIFIED-RESIDUAL marker を持つ ADR が Accepted へ遷移したら Status 行に accepted-with-residual-risks タグを必須化。逆方向 (marker なしでタグのみ) も不整合として fail
related_adrs: [ADR-0109]
Rationale
escalate 採択 (残余リスク付き Accept・ADR-0109 Part4) の ADR が通常採択と区別されないと、downstream の LLM ノードが「通過済み = 問題なし」と解釈し、既知の未解決リスクが無症状で伝播する (ADR-0109 §5.2 #5)。Gate 2 consistency の corpus は各 ADR の先頭 40 行抜粋のみを参照するため、ファイル末尾の residual 節は構造上 downstream に渡らない — Status 行 (先頭 3 行目) のタグが downstream から見える唯一のシグナルであり、marker ⇔ タグの双方向整合を機械強制する。
❌ FAIL Example
- **Status**: Accepted
...
<!-- HITL-RATIFIED-RESIDUAL -->
## Known Limitations / Escalated Residual Risks
<!-- /HITL-RATIFIED-RESIDUAL -->
(marker あり + Accepted なのにタグなし → FAIL。逆に marker なしで accepted-with-residual-risks タグだけ付くのも FAIL = residual 節の誤削除等の不整合)
✅ PASS Example
- **Status**: Accepted (accepted-with-residual-risks — merge = 受理の規約により受理)
...
<!-- HITL-RATIFIED-RESIDUAL -->
または HITL 判断待ち:
- **Status**: Proposed
...
<!-- HITL-RATIFIED-RESIDUAL -->
(Proposed / Rejected / Superseded はタグ不要 — Accepted 遷移時のみ要求)
Migration / Corrigendum
- 既存 ADR は全 pass を確認済み (導入時 117/117)。escalate 受理で Status を Accepted に更新する際にタグを併記すれば良い (fixable)
- 適用第 1 号: ADR-0109 自身 (PR #1439 で
Accepted (accepted-with-residual-risks ...)へ更新)
References
- ADR-0109: §5.2 #5「escalate 採択 ADR の品質保証穴」の緩和 (a)
- 関連:
crossval_loopbreaker.tsのRESIDUAL_MARKER_START/END(marker の生成元)、Gate 2 consistency の corpus 抜粋仕様 (consistency.ts先頭 40 行)