ADR — record an architecture decision (MADR)
An ADR is a durable decision record. bureau treats it as an ordinary cabinet page carrying
kind: adr, so it flows through the same trust gate as every other claim — capture → review.
This skill authors the page; a human ratifies it.
The write-gate (non-negotiable)
bureau:adr authors a proposed page only. It MUST NOT:
- run
gazette approve / confirm / resolve (nor bureau:review's promote/confirm/resolve steps),
- pass
--by human, a person's name, or omit --by so an event records as human,
- author
status: canonical / trust: canonical / any approval marker into the page.
An ADR becomes fact only when a human approves it through bureau:review. A supersedes edge takes
effect only once the superseding ADR is itself approved and content-current (ADR-0006) — so a freshly
scaffolded ADR supersedes nothing until a human approves it. Do not imply otherwise to the user.
Steps
Locate the workspace — a single */bureau.json child of the cwd, else canon. If none, tell
the user to run bureau:init and stop.
Scaffold via the press — never hand-template the page or hand-compute the number. Run
gazette adr new, passing each argument as its own token (no shell interpolation of the title):
node "${CLAUDE_PLUGIN_ROOT}/press/bin/gazette.mjs" adr new --title "<title>" [--supersedes <ADR-N>] --dir <workspace>
--supersedes takes an ADR-N token or the exact title of an existing ADR; the verb resolves it to
that page's title. An unresolved target fails loudly and writes nothing — surface the error, never
retry with a fabricated title.
Fill the MADR body from the session — replace the section placeholders with the real Context and
Problem Statement, Decision Drivers, Considered Options, the chosen Decision Outcome (with its
justification), Consequences (good / bad / neutral), and the Confirmation (how the decision is
verified — name the artifact and the gazette ledger verify command that fingerprints it, so a later
drift re-flags this ADR for review). Edit the body prose only.
Report the path and assigned number, and state it is proposed and awaits bureau:review.
If it supersedes another ADR, add that the supersession activates only when a human approves this ADR.
Why route through the gate
A superseding ADR that took effect the moment an AI wrote it could silently retire a canonical decision
no human re-read. bureau forbids that: the supersession stays inert until the superseding ADR is
approved AND its reviewed bytes still match (content-binding). This skill's job ends at a well-formed
proposed page; the human's approval is what makes it — and any supersession — real.
Examples
Scope note
This skill covers ONLY scaffolding a proposed MADR ADR page (and filling its body from the session).
It does not approve, confirm, or resolve — that is the human gate (bureau:review) — not distil
minutes into cabinets (bureau:compile), and not read the canon to answer questions
(bureau:query / recall). It authors one page; the human's approval is what makes it, and any
supersession, real.
Known limitation
gazette ledger verify keys the Confirmation artifact by the ADR's title. Renaming the ADR after
recording a Confirmation loses the link (the ledger is not migrated on rename). The ADR-NNNN prefix
rarely changes, which keeps this stable in practice; if you must rename, re-run ledger verify.
1---2name: adr3description: Record an architecture decision as a MADR ADR page in the canon. Use when running bureau:adr, or when the user asks to write/record an ADR or an architecture decision, or to supersede a prior decision. Authors a proposed page only — never approves.4---56# ADR — record an architecture decision (MADR)78An ADR is a durable decision record. bureau treats it as an ordinary cabinet page carrying9`kind: adr`, so it flows through the same trust gate as every other claim — **capture → review**.10This skill authors the page; a human ratifies it.1112## The write-gate (non-negotiable)1314`bureau:adr` **authors a `proposed` page only.** It MUST NOT:1516- run `gazette approve` / `confirm` / `resolve` (nor `bureau:review`'s promote/confirm/resolve steps),17- pass `--by human`, a person's name, or omit `--by` so an event records as human,18- author `status: canonical` / `trust: canonical` / any approval marker into the page.1920An ADR becomes fact only when a **human** approves it through `bureau:review`. A `supersedes` edge takes21effect only once the superseding ADR is itself approved and content-current (ADR-0006) — so a freshly22scaffolded ADR supersedes nothing until a human approves it. Do not imply otherwise to the user.2324## Steps25261. **Locate the workspace** — a single `*/bureau.json` child of the cwd, else `canon`. If none, tell27 the user to run `bureau:init` and stop.282. **Scaffold via the press** — never hand-template the page or hand-compute the number. Run29 `gazette adr new`, passing each argument as its own token (no shell interpolation of the title):3031 ```32 node "${CLAUDE_PLUGIN_ROOT}/press/bin/gazette.mjs" adr new --title "<title>" [--supersedes <ADR-N>] --dir <workspace>33 ```3435 `--supersedes` takes an `ADR-N` token or the exact title of an existing ADR; the verb resolves it to36 that page's title. An unresolved target fails loudly and writes nothing — surface the error, never37 retry with a fabricated title.383. **Fill the MADR body from the session** — replace the section placeholders with the real Context and39 Problem Statement, Decision Drivers, Considered Options, the chosen Decision Outcome (with its40 justification), Consequences (good / bad / neutral), and the **Confirmation** (how the decision is41 verified — name the artifact and the `gazette ledger verify` command that fingerprints it, so a later42 drift re-flags this ADR for review). Edit the body prose only.434. **Report** the path and assigned number, and state it is **`proposed` and awaits `bureau:review`**.44 If it supersedes another ADR, add that the supersession activates only when a human approves this ADR.4546## Why route through the gate4748A superseding ADR that took effect the moment an AI wrote it could silently retire a canonical decision49no human re-read. bureau forbids that: the supersession stays inert until the superseding ADR is50approved AND its reviewed bytes still match (content-binding). This skill's job ends at a well-formed51`proposed` page; the human's approval is what makes it — and any supersession — real.5253## Examples5455<example>56Context: In a bureau repo, the team just chose an approach after weighing options.57user: "bureau:adr record that we're going with content-bound supersession over mere-approval"58assistant: "Scaffolded decisions/ADR-0007-content-bound-supersession.md (ADR-0007, proposed). I filled the Context, the two considered options (mere-approval vs fresh-approval) and the chosen Decision Outcome with its justification, the Consequences, and a Confirmation naming the fsck test that fingerprints it. It's `proposed` and awaits `bureau:review` — I did not approve it."59<commentary>The skill authors a proposed page and fills the MADR body from the session; a human promotes it via bureau:review. It never approves.</commentary>60</example>6162<example>63Context: A new decision replaces an accepted one.64user: "write an ADR that supersedes ADR-0003"65assistant: "Created decisions/ADR-0008-… (proposed) with a `supersedes` edge to ADR-0003's title. The supersession takes effect only once a human approves ADR-0008 and its bytes still match — until then ADR-0003 stays current fact."66<commentary>--supersedes resolves the ADR token to the target's title; the supersession is inert until the superseding ADR is approved (ADR-0006).</commentary>67</example>6869## Scope note7071This skill covers ONLY scaffolding a `proposed` MADR ADR page (and filling its body from the session).72It does **not** approve, confirm, or resolve — that is the human gate (`bureau:review`) — **not** distil73minutes into cabinets (`bureau:compile`), and **not** read the canon to answer questions74(`bureau:query` / `recall`). It authors one page; the human's approval is what makes it, and any75supersession, real.7677## Known limitation7879`gazette ledger verify` keys the Confirmation artifact by the ADR's **title**. Renaming the ADR after80recording a Confirmation loses the link (the ledger is not migrated on rename). The `ADR-NNNN` prefix81rarely changes, which keeps this stable in practice; if you must rename, re-run `ledger verify`.