最終更新: 2026/06/22 18:56
implementation-status-vocab — Implementation Status の値域 enum 検証
上位 doc: §8 in adr-lint_rules.md — Summary Table 集約参照
id: implementation-status-vocab
severity: error
category: metadata
since: 2026-06-15
status: active
fixable: false
description: Implementation Status は正典 ADR-0032 の 6 値 (Not Started / In Progress / Done / Partial / Reverted / N/A) で始まる。フェーズ別・複数決定の併記は Phase / 決定 前置きで許容。正典外の英語トークン (Implemented / Superseded / Deprecated 等) はドリフトとして弾く
related_adrs: [ADR-0032]
Rationale
ADR-0032 は実装ライフサイクルを 6 値で定義したが、語彙を強制する検査が無かったため、同義語 (Implemented = Done) や軸違いの値 (Superseded は意思決定軸 = Status の値) が混入し、INDEX 一覧でドリフトが生じていた (実例: 2026-06 に Implemented 3 本・Superseded 1 本)。状態語が増えると「探す・読む」認知負荷が上がり、Done と Implemented のように「似て非なる」ように見える区別の有無を読者が判断できなくなる。本ルールは正典 6 値を機械強制し、adr-index.mjs の Impl 列トークン定義との二重管理ドリフトも防ぐ。
判定ロジック: 値が正典 6 値で始まれば pass。Phase / 決定 前置き、または非 ASCII (日本語) 始まりの記述 (= 状態語で始まらない併記・凡例どおり Impl 列は「—」へ落とす) も pass。先頭が正典外の ASCII 英語トークンのときだけ fail。
❌ FAIL Example
- **Implementation Status**: Implemented (PR #1303) ← Done の同義語ドリフト
- **Implementation Status**: Superseded (...) ← Status 軸の値の誤用
- **Implementation Status**: Completed ← 正典外トークン
✅ PASS Example
- **Implementation Status**: Done (PR #1303)
- **Implementation Status**: N/A (実装不要・理由併記)
- **Implementation Status**: Reverted
- **Implementation Status**: Phase 1-2 Done (PR #957) ← フェーズ別併記
- **Implementation Status**: 決定① Done / 決定② Not Started ← 複数決定併記
References
- ADR-0032: Implementation Status 6 値の正典 (§表)
- 関連ルール: implementation-status-meta (フィールド存在検査) / status-impl-no-stale-proposed (Done × Proposed の昇格漏れ)