Skip to main content
Each record states one decision: the context that forced it, what was decided, and what follows from it (Michael Nygard’s format). They explain why the code is the way it is; ARCHITECTURE.md explains where it is.

Writing a new record

Write one when a change alters something a record describes, or makes a choice a future contributor would otherwise have to rediscover: a new command, a change to the plan format or the receipt shape, a new invariant, a new dependency between packages.
  1. Copy the structure of an existing record: a numbered title, Date, Status, Context, Decision, Consequences.
  2. Use the next free number: NNNN-short-title.md.
  3. Status is Proposed in the pull request and Accepted when it merges. Records are not rewritten later; a decision that changes gets a new record, and the old one’s status becomes Superseded by NNNN (or Amended by NNNN when the new record changes only part of it).
  4. Add it to the table above.