Blog · 2026-06-05 · ~7 min read

The MADR 4.0 spec in 15 minutes

MADR stands for "Markdown Any Decision Record." The "Any" is the design choice worth knowing: Michael Nygard's original ADR format was written for architectural decisions. MADR dropped the "Architectural" constraint to cover product calls, vendor selections, hiring decisions, and policy changes in the same format — anything where you want an immutable record with an alternatives section. Version 4.0 is the current spec, the one all major ADR tooling now targets, and the one worth learning if you're starting or migrating an ADR practice today.

TL;DR

MADR is a structured ADR format with YAML frontmatter and Markdown sections. It's the right choice when you want machine-parseable ADRs, CI lint validation, or a publication layer like Log4Brains. Nygard's plain-text format wins for simplicity and zero-tooling setups. MADR 4.0 changed the frontmatter schema (removed tags, renamed to informedEntities, formalized deciders as a list), clarified the date field semantics, and added the consulted field as a first-class frontmatter key. If you're starting in 2025 or later, start with MADR 4.0 — the ecosystem has converged on it.

What MADR adds over Nygard

Nygard's format gives you five sections in a plain Markdown file: Title, Status, Context, Decision, Consequences. No frontmatter, no machine-parseable header, no formal alternatives section. Fast to fill, near-zero adoption friction. You write a Markdown file and you're done.

MADR 4.0 adds structure that pays off as the corpus grows:

The MADR 4.0 template

Here is the minimal MADR 4.0 template. The sections in brackets are prompts, not headings — replace them with actual content. The consulted, informed, Decision Drivers, Pros and Cons, and More Information sections are optional and can be omitted for lightweight decisions.

---
status: accepted
date: 2026-06-05
deciders: [alice, bob]
consulted: [carol]
informed: [team-channel]
---

# [short title of the decision — name the choice, not the problem]

## Context and Problem Statement

[The situation and why it requires a decision. What constraint or goal is
driving the need to choose?]

## Decision Drivers

* [driver 1 — a force, a constraint, a requirement]
* [driver 2]

## Considered Options

* [option 1]
* [option 2]
* [option 3]

## Decision Outcome

Chosen option: "[option 1]", because [justification and its tradeoffs].

### Consequences

* Good, because [positive consequence]
* Bad, because [negative consequence or risk]
* Neutral, because [neither good nor bad]

## Pros and Cons of the Options

### [option 1]

* Good, because [argument a]
* Good, because [argument b]
* Bad, because [argument c]

### [option 2]

* Good, because [argument d]
* Bad, because [argument e]

## More Information

[Link to RFC, spike, or PR. Omit if not applicable.]

The frontmatter block is the new part compared to Nygard. status can be proposed, accepted, deprecated, or superseded by [ADR-XXXX]. date is the accepted-or-last-modified date (not the creation date — the commit history has creation date; the frontmatter date tracks the last substantive change). deciders is the list of people who made the call; consulted is people whose input was sought before the decision; informed is downstream notification targets such as a Slack channel or mailing list.

See the MADR template reference page for a worked example with a real decision filled in.

MADR 4.0 vs earlier MADR versions

MADR 3.x used a looser frontmatter schema. The key differences in 4.0:

Most teams with fewer than 30 existing 3.x ADRs migrate in a single PR. The migration is mechanical: drop tags, convert string deciders to list form, check for any date values that look like creation dates and update them to acceptance dates. No section content needs to change.

MADR vs Nygard: which to choose

Choose MADR if:

Choose Nygard if:

The practical tradeoff: MADR ADRs take slightly longer to fill correctly because the structure is more explicit. Nygard ADRs are faster but require more discipline to include alternatives — nothing in the template requires them, so under-pressure engineers skip them. Over time, a Nygard corpus tends to accumulate records where the Decision section says "we chose X" with no mention of what was considered and rejected. That's the failure mode MADR's Considered Options section prevents.

For a team of three to five engineers who are already ADR-comfortable, MADR is strictly better. For a team where ADR adoption is uncertain, Nygard's lower friction may be the difference between the practice starting and dying on the first PR review comment about frontmatter YAML syntax. See the ADR tooling comparison for the full breakdown across tools.

Tooling that targets MADR 4.0

Three tools form the current MADR ecosystem:

The standard MADR setup at scale is: adr-tools for scaffolding new files, GitHub Action for CI validation on every PR, Log4Brains for the publication layer if a web UI is needed. Each tool is independent — you can adopt any one without the others.

How AI chat output maps onto MADR structure

One more angle worth naming explicitly: MADR 4.0's structure makes it the natural output target for automatic decision extraction from AI chat history.

A typical engineer session in ChatGPT or Claude naturally produces most of the MADR sections. The engineer sets up the problem ("we need to choose a job queue library") — that's Context and Problem Statement. They name constraints ("must support Redis, must have retry semantics, must be open source") — those are Decision Drivers. They ask the model to compare options ("compare BullMQ, Bee-Queue, and Kue") — that's Considered Options with a Pros and Cons breakdown. They make a call ("okay, going with BullMQ") — that's Decision Outcome. The rejected options and the reasons they were rejected are explicit in the thread.

The informal reasoning in chat sessions is often richer than hand-written ADRs. There's less incentive to abbreviate when you're thinking out loud to a language model that's asking follow-up questions, compared to when you're writing for a PR review with a mental timer running. The gap is structure: the information is there but not in MADR shape.

The open-source extractor maps chat content onto MADR sections: the setup maps to Context, named constraints to Decision Drivers, compared options to Considered Options, the final call to Decision Outcome, rejected options and reasons to Pros and Cons. The resulting records aren't as polished as hand-written ADRs — some Considered Options descriptions will be brief, some Decision Outcome "because" clauses will be compressed — but they're in MADR format, they're in the corpus, and they're a starting point for promotion to a formal record if the decision turns out to be load-bearing.

This is why MADR 4.0 is the default output format for extraction: its structured sections map more cleanly onto the natural shape of a reasoning session than Nygard's freeform prose sections do. The dogfooding walkthrough shows the full extraction pipeline — 1,200 chats to 38 structured records — and what the MADR output looks like before and after the triage pass. The ChatGPT export guide and Claude export guide have the mechanics of getting the source files.

Per the ADR staleness data, the ceremony cost is the primary reason ADR practices die. Auto-generated MADR records from chat extraction address that directly: they're the 80% of decisions that aren't worth full ADR ceremony, captured anyway, in a format the 20% of decisions that do warrant ceremony already use. The two tiers are compatible because they're the same format at different completeness levels.

To run the extractor against your ChatGPT export or Claude export and get MADR 4.0 output, the quickest path is the open-source extractor — three commands, runs locally, no data uploaded anywhere. If you want the extraction plus triage interface and team sharing, the waitlist is open.

Further reading

FAQ

Is MADR 4.0 backward-compatible with MADR 3.x?

Not in the schema validation sense. MADR 4.0 removed the tags frontmatter field and formalized deciders as a YAML list rather than a free-form string. If you run CI validation against the 4.0 schema, existing 3.x files with tags will fail the lint step. Content-wise they're identical: the body sections haven't changed. Migration is mechanical — a one-pass script to remove tags and convert any deciders: Alice, Bob strings to deciders: [alice, bob] list form. Most teams with 10–30 existing 3.x ADRs run the migration in a single PR.

Do I need Log4Brains to use MADR?

No. MADR is a Markdown file format; Log4Brains is one optional publication layer. You can use MADR with just a git repo and a README that lists the files — that's the zero-tooling path and it works fine. Log4Brains adds a browsable web UI if non-engineer stakeholders need to read ADRs without navigating a git repo. The question is whether the web UI justifies the Node runtime dependency. For most teams under 20 engineers with a single ADR directory, it doesn't. For a platform org running a public decision corpus, it does.

Can MADR be used for non-architecture decisions?

That's the explicit design intent — the "Any" in the acronym replaced "Architectural" to make the format fit for product calls, hiring decisions, vendor selections, and policy changes alongside architectural ones. The template doesn't assume software; the Context, Considered Options, and Decision Outcome sections work equally well for "Should we switch from Stripe to Braintree?" or "Should we hire a generalist or a specialist?" The only adjustment needed is the deciders list.

How do I handle MADR ADRs from AI chat extractions that need polish before merging?

Put them in a proposed/ subdirectory and treat the triage pass as a promotion decision. If the extracted ADR describes a real durable decision, move it to decisions/ and polish the Considered Options prose; if it's too local or already covered by an existing ADR, close the file. The extraction pass is discovery, not final copy. Most extracted records need 5–10 minutes of editing to reach merge quality — tightening the Decision Outcome sentence, condensing multi-paragraph Considered Options into bullet form, adding the More Information link back to the original chat. That's substantially faster than writing the ADR from scratch, which is the point.