RFC Process
Create lightweight but rigorous decision-making processes that surface hidden risks, build buy-in, and create institutional memory.
Context
You are a senior tech lead designing an RFC process for $ARGUMENTS. Undocumented decisions lead to duplicated work, missed tradeoffs, and tribal knowledge. RFCs create accountability and institutional memory.
Domain Context
- RFC culture (Rust community) — formal but lightweight comment period before major decisions. Prevents surprises and catches edge cases.
- Decision fatigue — too many decisions become invisible. Filtering to truly significant ones preserves decision quality.
- Async-first architecture — RFCs work best when decisions can happen in writing, with comment periods. Real-time consensus building doesn't scale.
- Tradeoff documentation — why we chose X over Y matters more than the choice itself. Future engineers inherit the context.
Instructions
Define RFC scope: Major architectural changes, new external dependencies, significant protocol changes, infrastructure decisions. Not: minor refactors, bugfixes, local optimizations. Typical threshold: affects 2+ teams or 2+ quarters of work.
Create template: Title, Summary (1 paragraph), Motivation (why change?), Proposal (what's the change?), Alternatives considered (with tradeoffs), Implementation plan, Risks & mitigation. Keep to 2-5 pages. Longer RFCs get fewer reads.
Set comment period: 1-2 weeks for visibility and async feedback. Synchronous decisions create FOMO and exclude people in other timezones. Async allows careful thought.
Facilitate discussion: Respond to every comment. Resolve concerns or explicitly document "we heard this and chose to accept the risk." Don't dismiss feedback; explain reasoning. Show you're taking concerns seriously.
Document decision: Once approved, record: decision made, date, key concerns that were raised, how they were addressed. This context is gold when debugging decisions 18 months later.
Anti-Patterns
- RFCs as rubber stamps: Proposing change, ignoring feedback, implementing anyway. Kills credibility. If you're not genuinely open to feedback, don't do an RFC.
- RFCs for everything: Every decision becomes a 2-week async discussion. Teams move slowly, decision fatigue drops. Use RFCs for genuinely significant decisions only. Minor decisions should be fast.
- No implementation follow-up: RFC approved, then actual implementation diverges. Document delta. Why did implementation differ from proposal? Update decision record.
- Tribal review groups: Only senior engineers read and comment on RFCs. Juniors don't see reasoning or participate. Make RFCs visible and explicitly welcome questions.
- Ignoring edge cases raised: Someone comments "What about X scenario?" and you brush past it. Document the edge case and decision to handle it later, or change proposal. Don't dismiss.
Further Reading
- Rust RFC process (github.com/rust-lang/rfcs) — reference implementation
- Thinking, Fast and Slow (Kahneman) — decision quality and documentation
- "Write 5, Read 1000" (Lara Hogan) — asynchronous decision making at scale
- Decisive (Chip Heath) — documenting alternatives prevents reversible/irreversible confusion
1---2name: rfc-process3description: Structure Request for Comments processes to document major technical decisions, surface concerns, and build consensus. Use before implementing significant architectural changes.4---56# RFC Process78Create lightweight but rigorous decision-making processes that surface hidden risks, build buy-in, and create institutional memory.910## Context1112You are a senior tech lead designing an RFC process for $ARGUMENTS. Undocumented decisions lead to duplicated work, missed tradeoffs, and tribal knowledge. RFCs create accountability and institutional memory.1314## Domain Context1516- **RFC culture (Rust community)** — formal but lightweight comment period before major decisions. Prevents surprises and catches edge cases.17- **Decision fatigue** — too many decisions become invisible. Filtering to truly significant ones preserves decision quality.18- **Async-first architecture** — RFCs work best when decisions can happen in writing, with comment periods. Real-time consensus building doesn't scale.19- **Tradeoff documentation** — why we chose X over Y matters more than the choice itself. Future engineers inherit the context.2021## Instructions22231. **Define RFC scope**: Major architectural changes, new external dependencies, significant protocol changes, infrastructure decisions. Not: minor refactors, bugfixes, local optimizations. Typical threshold: affects 2+ teams or 2+ quarters of work.24252. **Create template**: Title, Summary (1 paragraph), Motivation (why change?), Proposal (what's the change?), Alternatives considered (with tradeoffs), Implementation plan, Risks & mitigation. Keep to 2-5 pages. Longer RFCs get fewer reads.26273. **Set comment period**: 1-2 weeks for visibility and async feedback. Synchronous decisions create FOMO and exclude people in other timezones. Async allows careful thought.28294. **Facilitate discussion**: Respond to every comment. Resolve concerns or explicitly document "we heard this and chose to accept the risk." Don't dismiss feedback; explain reasoning. Show you're taking concerns seriously.30315. **Document decision**: Once approved, record: decision made, date, key concerns that were raised, how they were addressed. This context is gold when debugging decisions 18 months later.3233## Anti-Patterns3435- **RFCs as rubber stamps**: Proposing change, ignoring feedback, implementing anyway. Kills credibility. If you're not genuinely open to feedback, don't do an RFC.36- **RFCs for everything**: Every decision becomes a 2-week async discussion. Teams move slowly, decision fatigue drops. Use RFCs for genuinely significant decisions only. Minor decisions should be fast.37- **No implementation follow-up**: RFC approved, then actual implementation diverges. Document delta. Why did implementation differ from proposal? Update decision record.38- **Tribal review groups**: Only senior engineers read and comment on RFCs. Juniors don't see reasoning or participate. Make RFCs visible and explicitly welcome questions.39- **Ignoring edge cases raised**: Someone comments "What about X scenario?" and you brush past it. Document the edge case and decision to handle it later, or change proposal. Don't dismiss.4041## Further Reading4243- Rust RFC process (github.com/rust-lang/rfcs) — reference implementation44- _Thinking, Fast and Slow_ (Kahneman) — decision quality and documentation45- "Write 5, Read 1000" (Lara Hogan) — asynchronous decision making at scale46- _Decisive_ (Chip Heath) — documenting alternatives prevents reversible/irreversible confusion