上位 doc: §4 Summary Table in adr-lint_rules.md — Summary Table 集約参照

id: status-impl-no-stale-proposed
severity: warn
category: metadata
since: 2026-06-11
status: active
fixable: true
description: 本文太字メタ欄の Implementation Status が Done/Implemented で始まるのに Status が Proposed のままの ADR を warn 表示する
related_adrs: [ADR-0032]

Rationale

この体系では起票 PR の人間 merge = 受理であり、受理後に Status を Accepted へ昇格して承認日時を記入する更新は手動運用になっている。実装が先に完了すると昇格だけが取り残され、「実装済みなのに Proposed」という不整合が ADR 一覧 (INDEX) に表示され続ける。2026-06-11 の整合調査で該当 6 本 (ADR-0027 / 0080 / 0105 / 0106 / 0111 / 0136) を検出・解消した。本ルールはその再発を lint 出力で可視化する。

warn 止まりの理由: 実装済みの内容を後追いで文書化する起案 PR (例: ADR-0106) は、merge = 受理の前に必然的に Proposed × Done の状態で CI を通過する。error にするとこの正当な経路を塞ぐため、表示のみとする。warn を見つけたら昇格漏れか後追い文書化中かをレビューで判断する。

❌ FAIL Example

# ADR-0136: ...

- **Status**: Proposed
- **Implementation Status**: Done (2026-06-11 実装: ...)

(実装完了済みなのに Status が Proposed のまま = 昇格漏れの疑い → warn)

✅ PASS Example

# ADR-0136: ...

- **Status**: Accepted (PR #1758 merge = 受理の規約により 2026-06-11 受理)
- **Implementation Status**: Done (2026-06-11 実装: ...)

判定対象: Implementation Status が Done / Implemented で始まる行のみ。Partial / In Progress / Phase 1-2 Done のようなフェーズ別併記・進行中表記は対象外 (受理前に段階実装が走る経路を許容)。

Migration / Corrigendum

  • 導入時 (2026-06-11) に該当 6 本を Accepted へ昇格済みで 138/138 pass・warn 0 件
  • Status 昇格の際は本文太字メタ欄と frontmatter の両方を更新する (frontmatter-status-sync が片側更新を error で検出する)

References

  • ADR-0032: Implementation Status フィールドの定義
  • frontmatter-status-sync: 昇格時の二重保持 drift を error で検出する補完ルール