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

id: approver-meta
severity: error
category: metadata
since: 2026-06-12
status: active
fixable: true
description: ADR-0145+ は承認者欄 (Approver Role / Approver Who) を持ち、role はちょうど 1 つ (カンマ / スラッシュ / 空白区切りの複数指定を禁止)
related_adrs: [ADR-0141]

Rationale

ADR-0141 (承認者体系) は決定の最終責任者を 1 人 (単一 Accountable) に固定し、役割 (role) と人 (who) を分離して frontmatter / 本文メタ欄に構造化する。本ルールはその存在と単一性を ④ 受理 PR 層で機械検査する。役割が複数併記されると「誰がこの決定の最終責任者か」が再び曖昧になり、旧 Deciders 自由記述の問題が再発するため、ちょうど 1 つを強制する。

しきい値 = ADR-0145 以降 (生成プロンプト v2.0.0 の本番反映後に生成される番号から適用)。既存 144 本と審査中在庫には遡及しない。読み出しは scripts/lib/adr_meta.mjs (frontmatter 優先・本文太字メタ欄フォールバック) を経由する。

❌ FAIL Example

# ADR-0145: ...

- **Scope**: platform
- **Approver Role**: platform, product   ← 複数指定

(Approver Who 欠落・Approver Role の複数指定 → FAIL)

✅ PASS Example

# ADR-0145: ...

- **Scope**: platform
- **Approver Role**: platform
- **Approver Who**: [email protected]
- **Driver**: [email protected]
- **Consulted**: Decision Pipeline AI 審査 (Gate 0-4)

Migration / Corrigendum

  • 既存 ADR (≤ 0144) は対象外。deciders → 4 欄の変換は ADR-0137 Phase 2 + 改訂時 touch-time で行う (frontmatter-meta-sync の Migration 参照)
  • 値の意味のうち role の値域は approver-role-enum、Scope との整合は approver-role-scope-match が所有 (本ルールは存在+単一性のみ)

References

  • ADR-0141: 承認者体系 — 単一 Approver の frontmatter 構造化と受理 PR 層の機械検査
  • 役割割当レジストリ: role → who の対応と有効期間の正本
  • CI 側の対: .github/workflows/adr-approver-merge-check.yml (merge 実行者と Approver Who の一致検査)