Docs/RFC Process/RFC Index & Process

RFC Index & Process

Proposed process, not yet adopted
The repository contains no RFC process document, and no RFCs exist yet. This page defines a lightweight process for review. Until the team adopts it (for example by referencing it from CONTRIBUTING.md), treat it as a proposal, and treat the index below as empty.

An RFC (request for comments) is a written proposal opened before a consequential change is built, so that affected owners can object cheaply. Once a proposal is decided, its outcome is recorded as an ADR; the RFC stays as the discussion record.

RFC index

RFCTitleStatusAuthorOutcome
RFC-0000Template (not a proposal)templaten/aCopy this to start a new RFC
No RFCs have been filed.

RFC or ADR?

RFCADR
PurposeAsk for review of a proposal that is not yet decidedRecord a decision that has been made
WrittenBefore implementationAt decision time, or afterwards to capture what already exists
MutabilityEdited freely while open; frozen when closedAppend-only after acceptance (dated clarifications and supersession links)
Skip it whenThe change is reversible, local to one module, and touches no other owner's filesThe choice is reversible implementation detail

When to write an RFC

Lifecycle

StateMeaning
draftThe author is still writing; not ready for comments.
openAnnounced for review. Set a review deadline in the header.
acceptedApproved to build. Link the implementing work and, where the decision is architectural, the new ADR.
rejected / withdrawnClosed without implementation. Keep the page and record why.
implementedShipped. Verification state must be stated exactly: compiled, tested, deployed to staging, or deployed to production are different claims.

Process

  1. Number it. Take the next free number; numbers are never reused. Copy RFC-0000 Template to rfc-NNNN-short-slug.html.
  2. Fill the header and sections: Summary, Motivation, Detailed design, Alternatives, Risks, Rollout, Open questions. Cite repo paths for every claim about existing behaviour.
  3. Announce it. Add the row to the index above and a nav entry in assets/js/site.js under the rfc section; open a GitHub issue or discussion linking to it.
  4. Review. Owners of affected scopes comment until the deadline. Record objections and how they were resolved in the page, not only in chat.
  5. Decide. The owner of the affected area (per CODEOWNERS), or the maintainers where ownership is unclear, accept or reject. Set the status and date.
  6. Close the loop. On acceptance, write or update the ADR; on implementation, update the RFC with what actually shipped.
Constraints that apply to every RFC
A proposal must respect the standing deployment rules (see Conventions): production and staging stay distinct; no browser-facing URL points at localhost; and no rollout step may stop, delete or power-cycle production. An RFC that needs such an action must say so and leave the decision to a human.