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

Architecture Decision Records (ADRs)

General Beginner
debt(d8/e5/b5/t3)
d8 Detectability Operational debt — how invisible misuse is to your safety net

Closest to 'silent in production until users hit it' (d9), -1. The absence of ADRs is not caught by any compiler, linter, or SAST tool. The listed tools (adr-tools, mkdocs, docusaurus) are documentation generators, not automated detectors of missing decisions. The absence is only noticed during onboarding or refactoring discussions when context is lost — essentially a social/process gap. Scored d8 rather than d9 because a deliberate team process check (e.g., PR template asking 'does this need an ADR?') can surface it, though this is manual.

e5 Effort Remediation debt — work required to fix once spotted

Closest to 'touches multiple files / significant refactor in one component' (e5). The quick_fix suggests creating a markdown file per decision, which sounds like e1 for a single ADR. However, the real remediation cost is retroactively documenting existing undocumented decisions across the system — reconstructing context that may be partially lost (as noted in common_mistakes about writing ADRs after the fact). This requires interviewing team members, reviewing git history, and producing multiple documents. This is a significant effort across the project's documentation, fitting e5.

b5 Burden Structural debt — long-term weight of choosing wrong

Closest to 'persistent productivity tax' (b5). ADRs apply across web and CLI contexts and affect every architectural discussion going forward. Once adopted, maintaining the discipline of writing ADRs for every significant decision is a persistent process tax on the team. Not doing them creates ongoing burden via re-litigation of past decisions. The practice doesn't define the system's shape (not b7+), but it does create a persistent workflow obligation that affects many work streams.

t3 Trap Cognitive debt — how counter-intuitive correct behaviour is

Closest to 'minor surprise' (t3). The misconception field states that developers believe ADRs are only for large organisations, when they're valuable for teams of 2+ or even solo developers. This is a modest misconception — a competent developer hearing 'Architecture Decision Records' would generally understand the concept correctly (document why you made a choice), but might wrongly dismiss it as enterprise overhead. The common mistakes (editing instead of superseding, not recording rejected alternatives) are minor surprises rather than serious traps.

About DEBT scoring →

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 61
Rate this term
No ratings yet
🤖 AI Guestbook educational data only
| |
Last 30 days
0 pings T 0 pings W 1 ping T 0 pings F 0 pings S 1 ping S 0 pings M 0 pings T 0 pings W 2 pings T 1 ping F 1 ping S 2 pings S 1 ping M 2 pings T 0 pings W 2 pings T 0 pings F 0 pings S 0 pings S 0 pings M 1 ping T 0 pings W 0 pings T 0 pings F 1 ping S 1 ping S 1 ping M 0 pings T 1 ping W
Google 1
No pings yesterday
Scrapy 9 Amazonbot 8 Perplexity 7 SEMrush 5 Google 4 Ahrefs 4 Unknown AI 3 ChatGPT 3 Bing 2 Claude 1 Meta AI 1 PetalBot 1
crawler 44 crawler_json 3 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