Skip to content

ADR-NNNN — {{Decision title in imperative form}}

ProposedYYYY-MM-DD

Lifecycle: ProposedAccepted → (Deprecated | Superseded by ADR-NNNN). When superseded, update both this ADR’s superseded_by and the new ADR’s supersedes.


What forces are at play? What pre-existing constraints, requirements, or facts make this decision necessary now? Two short paragraphs at most.

State the problem in solution-neutral language. Don’t telegraph the answer.

Useful prompts:

  • What changed that triggered this decision?
  • What are we currently doing (or not doing) that hurts?
  • What can’t we postpone, and why?
OptionSummaryProsConsOutcome
Arejected — one-sentence reason
Brejected — one-sentence reason
C (chosen)selected

One paragraph, in active voice. “We will , not “It is suggested that…”.

We will use {{chosen option}} for {{specific scope}}, because {{the single most decisive reason}}.

Concretely:

  • (implementation-shaping detail #1)
  • (implementation-shaping detail #2)
  • (scope boundary — what this decision does NOT cover)

  • (if any of these are severe enough to deserve a follow-up ADR, link it here)
  • Spike: …
  • Update onboarding doc to mention …
  • Add metric / alert for …

  • Link to RFC, blog post, library docs, prior incident, related ADR, etc.
  • (External references that informed the decision — keep authoritative ones, prune the rest.)