Requests for comments¶
An RFC proposes a substantial change before it is built, so the design can be discussed while it is still cheap to change. ADRs then record the decisions an RFC leads to, and the architecture docs describe what exists.
When to write one¶
Write an RFC for:
- new or changed public API
- changes to the stream protocol
- a new package or extra
- cross-cutting behaviour (delivery, concurrency, tenancy, persistence, rule evaluation)
- a multi-PR plan that others need to follow
Bug fixes, refactors that keep behaviour, and documentation don't need one.
Lifecycle¶
stateDiagram-v2
[*] --> Draft
Draft --> Discussion: pull request opened
Discussion --> Accepted
Discussion --> Rejected
Discussion --> Withdrawn
Accepted --> Implemented: tracking checklist complete
Accepted --> Superseded - Copy
template.mdto the next number, for example0002-short-title.md, with status Draft. - Open a pull request titled
docs(rfc): RFC-0002 short title. Discussion happens on the PR. - When consensus is reached, set the status to Accepted (or Rejected or Withdrawn, keeping the reasoning) and merge.
- Implementation PRs reference the RFC and tick its tracking checklist. Decisions made along the way get ADRs.
- When the checklist is complete, set the status to Implemented.
RFCs are living documents while Accepted: the tracking checklist and "unresolved questions" are updated as work lands. The design sections change only through a new RFC that supersedes it.
Index¶
| RFC | Title | Status |
|---|---|---|
| 0001 | v0.1 implementation plan | Accepted |