adr check: accept any letter case and the linked supersede form #509

Open
opened 2026-09-15 22:23:38 +00:00 by hexajon · 1 comment
Owner

What happens

adr check accepts only proposed, accepted, rejected, deprecated, and superseded by ADR-NNNN, written exactly that way (internal/service/adr/adr.go:94, :1059-1071). Accepted fails. superseded by [ADR-0012](0012-x.md) fails. A team that marks work in progress or a dropped proposal has no status for it.

MADR 4.0.0 lists proposed | rejected | accepted | deprecated | … | superseded by ADR-0123, and the "…" allows more. madtea keeps a fixed set on purpose, because each status must count as decided or not decided for the linked-issue check and for the decide and supersede actions (#495). This widens the set without dropping that rule.

Ask

Accepted statuses after this change:

Status Counts as Linked issue must be
draft (new): still being written, not ready for review not decided open
proposed not decided open
accepted, rejected, deprecated decided closed
withdrawn (new): the author dropped it before a decision decided closed
superseded by ADR-NNNN decided closed
  • Match the letter case loosely: Accepted is accepted.
  • Accept the supersede link form: superseded by [ADR-0012](0012-x.md) is superseded by ADR-0012. The link-back check reads the number from either form.
  • Every other value still fails, and the message lists the accepted values (see #492).
  • Update madt_help topic="adr" and the adr check help.

Not added, on purpose: amended (a changed decision gets a new record), on hold / postponed (proposed covers it), and free-form or per-repo status lists.

Acceptance

  • draft, withdrawn, Accepted, and superseded by [ADR-0012](0012-x.md) pass adr check.
  • draft is not decided and withdrawn is decided in the linked-issue check.
  • on hold fails, with the list of accepted values in the message.
  • Tests cover each new form.
## What happens `adr check` accepts only `proposed`, `accepted`, `rejected`, `deprecated`, and `superseded by ADR-NNNN`, written exactly that way (`internal/service/adr/adr.go:94`, `:1059-1071`). `Accepted` fails. `superseded by [ADR-0012](0012-x.md)` fails. A team that marks work in progress or a dropped proposal has no status for it. MADR 4.0.0 lists `proposed | rejected | accepted | deprecated | … | superseded by ADR-0123`, and the "…" allows more. madtea keeps a fixed set on purpose, because each status must count as decided or not decided for the linked-issue check and for the decide and supersede actions (#495). This widens the set without dropping that rule. ## Ask Accepted statuses after this change: | Status | Counts as | Linked issue must be | |---|---|---| | `draft` (new): still being written, not ready for review | not decided | open | | `proposed` | not decided | open | | `accepted`, `rejected`, `deprecated` | decided | closed | | `withdrawn` (new): the author dropped it before a decision | decided | closed | | `superseded by ADR-NNNN` | decided | closed | - Match the letter case loosely: `Accepted` is `accepted`. - Accept the supersede link form: `superseded by [ADR-0012](0012-x.md)` is `superseded by ADR-0012`. The link-back check reads the number from either form. - Every other value still fails, and the message lists the accepted values (see #492). - Update `madt_help topic="adr"` and the `adr check` help. Not added, on purpose: `amended` (a changed decision gets a new record), `on hold` / `postponed` (`proposed` covers it), and free-form or per-repo status lists. ## Acceptance - `draft`, `withdrawn`, `Accepted`, and `superseded by [ADR-0012](0012-x.md)` pass `adr check`. - `draft` is not decided and `withdrawn` is decided in the linked-issue check. - `on hold` fails, with the list of accepted values in the message. - Tests cover each new form.
hexajon changed title from adr check: accept draft and withdrawn, any letter case, and the linked supersede form to adr check: accept any letter case and the linked supersede form 2026-09-29 15:57:27 +00:00
Author
Owner

Decided in ADR 0037 (0037-adr-check-enforces-a-stricter-madr): adr check accepts only MADR's five statuses, in any letter case, and a supersede status may write ADR-NNNN plain or as a Markdown link. Every other value fails, and the message lists the accepted values.

Decided in ADR 0037 (`0037-adr-check-enforces-a-stricter-madr`): `adr check` accepts only MADR's five statuses, in any letter case, and a supersede status may write `ADR-NNNN` plain or as a Markdown link. Every other value fails, and the message lists the accepted values.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
sixfold-space/madtea#509
No description provided.