RFC / ADR — Making Technical Decisions at Scale
RFC = async alignment on proposals before deciding. ADR = permanent record of the decision and its context after it's made.
When to use RFC
- Cross-team changes, new patterns, infrastructure shifts — anything that will surprise people later
When to use ADR
- Every significant technical decision, regardless of who decided or how
Tradeoffs
- RFC without a decision deadline becomes a discussion forum, not a decision process
- ADRs are useless if not kept up to date or never linked to from code/docs
RFC Template
# RFC-NNN: [Title]
**Author:** | **Status:** Draft / In Review / Accepted / Rejected | **Deadline:**
## Problem
## Proposed Solution
## Alternatives Considered
## Tradeoffs
## Open Questions
ADR Template
# ADR-NNN: [Title]
**Date:** | **Status:** Accepted / Superseded by ADR-NNN
## Context
## Decision
## Consequences (positive and negative)
Gotcha: An RFC without a deadline is a proposal that will never be decided. Set a decision date when you open it. "We'll decide by Friday" is more powerful than any amount of async discussion.