Skip to content

Architecture Decision Records

Architecture Decision Records (ADRs) capture architectural decisions along with their context and consequences. They provide a historical record of why decisions were made, not just what was decided.

Why ADRs?

ADRs help us:

  • Remember context - Why did we choose this approach 6 months ago?
  • Onboard new team members - Understand the reasoning behind the decisions
  • Avoid repeated discussions - Reference past decisions
  • Track evolution - See how architecture changes over time

ADR Format (MADR)

We use the following format:

markdown
# ADR-NNN: [Title]

## Status

`Proposed` | `Accepted` | `Deprecated` | `Superseded` by [ADR-XXX](./xxx-title.md)

## Context

[Describe the context and problem statement]

## Decision

[Describe the decision and rationale]

## Consequences

### Positive

- [Consequence 1]
- [Consequence 2]

### Negative

- [Consequence 1]
- [Consequence 2]

### Risks

- [Risk 1]: [Mitigation]

## Related

- [Link to related ADR or documentation]

Keep ADRs focused on one decision

Each ADR should address one decision. If you find yourself making multiple decisions, split them into separate ADRs.

Don't modify accepted ADRs

Once accepted, ADRs are immutable. If a decision changes, create a new ADR that supersedes the old one. This preserves the historical record.

Creating New ADRs

  1. Copy the template above
  2. Create file: NNN-kebab-case-title.md
  3. Fill in all sections
  4. Submit PR for review
  5. Update the decision log below

Decision Log

ADRTitleStatusDate
001Microservices ArchitectureAccepted2026-02
002Mutation NamingAccepted2026-02
003Mailing Address SchemaAccepted2026-03
004GraphQL Mutation Error HandlingAccepted2026-03
005Message QueueAccepted2026-04
006Document Pathname FieldAccepted2026-06
007Hybrid Sanity Match CatalogAccepted2026-07