madr/status-enum
ADR の status フィールドが許可された値のいずれかであることを検証します。
このルールは context.metadata.status を読み取ります。これは YAML frontmatter に v2 の本文リストメタデータをマージしたものです。これにより MADR v2(太字の - **Status**: 形式と、素の * Status: リスト形式の両方)、v3、v4 をサポートします。競合した場合は frontmatter が優先されます。明示的な null/undefined の frontmatter 値はスキップされるため、v2 の本文リストの値が保持されます。
チェック内容
Section titled “チェック内容”missingStatus— マージ後のメタデータにstatusフィールドが見つからない(frontmatter と v2 太字リストの両方を確認)か、値が文字列ではありません。メッセージ:Metadata does not contain a "status" field (checked frontmatter and v2 bold-list)。invalidStatus—statusは存在するものの、valuesとの完全一致でもprefixValuesとの前方一致でもありません。メッセージ:Status "<status>" is not one of: <allowed>。data.statusとdata.allowed(許可された値に加え、各プレフィックスを"<prefix> ..."として表現したもの)を含みます。
比較はデフォルトで大文字小文字を区別しません(caseSensitive: false)。前方一致は superseded by ADR-0042 が superseded by プレフィックスにマッチするような、遷移中の状態を扱います。
---status: accepteddate: 2026-05-01---
# ADR-0001: ...デフォルトで大文字小文字を区別しないため、status: ACCEPTED も有効です。前方一致:
---status: superseded by ADR-0042---MADR v2 の本文リスト形式も読み取られます:
# ADR-0001: ...
- **Status**: accepted- **Date**: 2026-05-01# ADR-0001: ...missingStatus を発行します(メタデータが一切ありません)。
---status: pending---invalidStatus を発行します(pending は許可された列挙値に含まれません)。
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
values | string[] | ['proposed', 'rejected', 'accepted', 'deprecated'] | 完全一致で許可する status 値。 |
prefixValues | string[] | ['superseded by'] | startsWith で一致を許可するプレフィックス(例: superseded by ADR-0042)。 |
caseSensitive | boolean | false | false の場合、比較は大文字小文字を区別しません。 |
import { defineConfig } from 'madr-lint';
export default defineConfig({ rules: { 'madr/status-enum': ['error', { values: ['draft', 'review', 'final', 'archived'], prefixValues: [], caseSensitive: true, }], },});MADR バージョン互換性
Section titled “MADR バージョン互換性”| バージョン | 適用 | 備考 |
|---|---|---|
| v2 | はい | メタデータブリッジ経由で、本文リストの - **Status**: proposed(太字)または * Status: proposed(素) |
| v3 | はい | frontmatter の status: ... |
| v4 | はい | frontmatter の status: ... |
無効化する場合
Section titled “無効化する場合”異なる status 語彙を持つシステムから移行する場合は、madr/status-enum を off にしてください。ある程度の検証を維持するために、values / prefixValues を上書きすることを優先してください。
他のルールと同様、インラインコメントで抑制できます — ルールの抑制を参照してください。