SOFTWARE ENGINEERING TEMPLATE
Architecture Decision Record (ADR) Template
Structured record of an architecture decision: context, options evaluated, decision rationale, and consequences.
Use this templateWhat's inside
Field | Details |
|---|---|
ADR Number | ADR-XXXX |
Title | Short, descriptive title of the decision |
Status | Proposed |
Date Proposed | |
Date Decided | |
Deciders | Names of people who made or will make this decision |
Consulted | People whose input was sought (RACI: Consulted) |
Informed | People who need to know the outcome (RACI: Informed) |
Context
Describe the situation that requires a decision. What is happening in the system, the team, or the business that forces us to choose? Include enough background that someone reading this ADR in two years — who was not in the room — can understand why this decision was needed.
Address:
What problem are we facing? What is broken, missing, or about to break?
What technical, organizational, or business constraints are in play?
What has changed since the last time we addressed this area (if applicable)?
What is the cost of not deciding? What happens if we do nothing?
Decision Drivers
List the criteria that matter most for this decision, in priority order. These are the factors the team will weigh when evaluating options. Being explicit about drivers prevents the discussion from going in circles.
Priority | Driver | Why It Matters |
|---|---|---|
1 | Most important criterion (e.g., operational complexity, latency, team expertise) | Explain why this driver outranks the others in this context |
2 | Second most important criterion | |
3 | Third criterion | |
4 | Fourth criterion (nice-to-have) |
Options Considered
Describe each option honestly. A good ADR explores at least two real alternatives — if there is only one option, you are documenting an implementation, not a decision.
Option 1: [Name] (Chosen)
Describe what this option is and how it works at a high level.
Pros | Cons |
|---|---|
Advantage of this approach | Disadvantage or risk of this approach |
Another advantage | Another disadvantage |
Effort estimate: Approximate implementation cost (t-shirt size, person-weeks, or sprint count).
Option 2: [Name]
Describe what this option is and how it works at a high level.
Pros | Cons |
|---|---|
Advantage of this approach | Disadvantage or risk of this approach |
Another advantage | Another disadvantage |
Effort estimate:
Option 3: [Name] (Optional)
Include a third option if it was seriously considered. Delete this subsection if only two options were evaluated.
Pros | Cons |
|---|---|
Comparison
Score each option against the decision drivers. This makes the trade-offs visible and the reasoning auditable.
Driver | Option 1 | Option 2 | Option 3 |
|---|---|---|---|
Driver 1 (highest priority) | Good | Poor | |
Driver 2 | Good | Good | |
Driver 3 | Acceptable | Good | |
Driver 4 | Poor | Good | |
Effort | Medium | High |
Decision
State the decision clearly, starting with "We will..." Be precise enough that someone can implement it without ambiguity.
We will [chosen option] because [primary justification]. This was chosen over [rejected option] because [key differentiator], despite [acknowledged trade-off].
Consequences
Be honest about what this decision means — the good, the bad, and the obligations it creates.
What becomes easier or better
Positive consequence of this decision
Another positive consequence
What becomes harder or worse
Negative consequence or new constraint this decision introduces
Technical debt or operational burden this creates
What we must now do
Decisions create obligations. List the follow-up work this decision requires:
Migration or implementation work that must happen
Documentation, runbooks, or monitoring that must be updated
Teams or systems that must be notified
Risks & Mitigation
What could go wrong with this decision, even if the implementation is flawless?
Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
Describe a risk specific to the chosen option | Medium | High | How we will detect and respond to this risk |
Low | Medium |
Validation
How will we know this decision was the right one? Define the signals you will look for and when you will evaluate.
Signal | Expected Outcome | Evaluate By | What If Wrong |
|---|---|---|---|
Metric, behavior, or milestone that confirms the decision is working | What you expect to see | What you will do if this signal is negative (revisit, pivot, new ADR) | |
Related Decisions
Link to ADRs that this decision depends on, supersedes, or is related to. This builds a navigable decision history.
ADR | Relationship | Notes |
|---|---|---|
ADR-XXXX: Title | Supersedes / Depends on / Related to | Brief context on the relationship |
Other Engineering templates
-
Project READMEDocument a project's purpose, setup instructions, architecture, and contribution guidelines. -
API DocumentationProtocol-agnostic API documentation covering contract, authentication, errors, reliability, versioning, and operations. -
Bug ReportReport a bug with reproduction steps, expected vs. actual behavior, and environment details.