← CodeClarityLab Home
Browse by Category
+ added · updated 7d
← Back to glossary

Architecture Decision Records (ADRs)

general Beginner

Also Known As

ADR decision log architectural decision

TL;DR

Short documents capturing the context, decision, and rationale for significant architectural choices — creating an institutional memory of why the system is built the way it is.

Explanation

An ADR records: the architectural decision made, the context that made it necessary, the options considered, the rationale for the choice, and the consequences. Stored as version-controlled Markdown files alongside code (docs/adr/), they are accessible, searchable, and historically accurate. ADRs prevent the constant re-arguing of settled decisions and help onboard new developers who wonder 'why did they do it this way?'.

Diagram

flowchart TD
    PROBLEM[Architectural decision needed] --> ADR[Create ADR document]
    ADR --> SECTIONS[Sections:<br/>Title + date + status<br/>Context - why decide now<br/>Decision - what we chose<br/>Consequences - trade-offs]
    SECTIONS --> STATUS{Status}
    STATUS -->|Proposed| REVIEW[Team reviews]
    REVIEW -->|Accepted| ACCEPTED[ADR accepted<br/>committed to repo]
    REVIEW -->|Rejected| REJECT[ADR rejected<br/>record why]
    ACCEPTED -->|Better info| SUPERSEDED[Superseded by ADR-N+1]
    subgraph Benefits
        HIST2[Why decisions were made<br/>visible to future devs]
        ONBOARD[Onboarding reference<br/>no tribal knowledge]
    end
style ACCEPTED fill:#238636,color:#fff
style REJECT fill:#f85149,color:#fff
style SUPERSEDED fill:#d29922,color:#fff

Common Misconception

ADRs are only for large organisations — they are valuable for any team of 2+ developers; even solo developers benefit from the future-self context they provide.

Why It Matters

Without ADRs, architectural decisions are re-litigated at every new hire and refactoring discussion — the context that justified the original choice is lost within months.

Common Mistakes

  • Writing ADRs after the fact without the original context — the rationale is reconstructed and loses authenticity.
  • Not recording rejected alternatives — often the most valuable part is understanding what was considered and why it was rejected.
  • ADRs that are too long — keep them to one page maximum; detail belongs in linked documentation.
  • Not treating ADRs as immutable — an ADR records a decision at a point in time; supersede it with a new ADR rather than editing.

Code Examples

✗ Vulnerable
# No ADR — new developer asks why the system uses Redis for sessions:
# 'I don't know, it was here when I joined'
# 'Let's switch to database sessions, it's simpler'
# Team spends 2 hours re-arguing a decision made 3 years ago
# No one remembers the PHP-FPM sticky session issue that drove the original choice
✓ Fixed
# docs/adr/0003-redis-for-session-storage.md
# Status: Accepted | Date: 2023-01-15
# Context: PHP-FPM pool has 20 workers across 3 servers; sticky sessions cause uneven load.
# Decision: Use Redis for centralized session storage.
# Alternatives considered: DB sessions (slower), filesystem (not multi-server).
# Consequences: Adds Redis dependency; sessions survive server restarts.

Added 15 Mar 2026
Edited 22 Mar 2026
Views 27
Rate this term
No ratings yet
🤖 AI Guestbook educational data only
| |
Last 30 days
0 pings W 0 pings T 1 ping F 0 pings S 0 pings S 0 pings M 0 pings T 0 pings W 0 pings T 2 pings F 0 pings S 1 ping S 1 ping M 0 pings T 0 pings W 0 pings T 1 ping F 1 ping S 0 pings S 0 pings M 0 pings T 0 pings W 0 pings T 1 ping F 0 pings S 0 pings S 1 ping M 0 pings T 0 pings W 0 pings T
No pings yet today
No pings yesterday
Perplexity 7 Amazonbot 7 Unknown AI 3 Google 2 SEMrush 2 Ahrefs 1
crawler 20 crawler_json 1 pre-tracking 1
DEV INTEL Tools & Severity
🟡 Medium ⚙ Fix effort: Low
⚡ Quick Fix
Create docs/adr/0001-use-postgresql.md for every significant architectural decision — include context, options considered, decision made, and consequences
📦 Applies To
any web cli
🔗 Prerequisites
🔍 Detection Hints
No ADR directory; architectural decisions made verbally with no record; new team members asking why certain choices were made
Auto-detectable: ✗ No adr-tools mkdocs docusaurus
⚠ Related Problems
🤖 AI Agent
Confidence: Low False Positives: High ✗ Manual fix Fix: Low Context: File

✓ schema.org compliant