Architecture Decision Records: Documenting Technical Decisions

Architecture Decision Records (ADRs) document significant architectural decisions and their context. An ADR captures the decision, the alternatives considered, the rationale, and the consequences. This creates an organizational memory that persists beyond team changes.


ADR Structure


Each ADR follows a consistent format. Title includes a short description and a unique number. Status indicates whether the decision is proposed, accepted, deprecated, or superseded. Context describes the problem and constraints that led to the decision.


Decision states the chosen approach explicitly. Consequences document the trade-offs, both positive and negative. Alternatives list approaches that were considered and why they were rejected.


Storage and Discovery


Store ADRs in version control alongside the code they describe. A \_docs/adr directory is conventional. Use sequential numbers or ISO dates as prefixes: 001-use-postgresql.md or 2026-05-use-postgresql.md. ADRs in version control are linked to commits and code changes.


Adoption


Start documenting decisions during design discussions. Write the ADR when the decision is made, not after. Review ADRs during architecture reviews. Link ADRs in pull requests that implement the decision. Keep ADRs short—one page is ideal.