RFC Process for MCP-AQL Specification
This document describes the formal process for proposing, reviewing, and accepting changes to the MCP-AQL specification through Requests for Comments (RFCs).
Source: spec/docs/process/rfc-process.md
On this page
Jump to a section
Use the outline to move through longer pages without losing your place.
This document describes the formal process for proposing, reviewing, and accepting changes to the MCP-AQL specification through Requests for Comments (RFCs).
Introduction
What is an RFC?
An RFC (Request for Comments) is a formal proposal for a significant change to the MCP-AQL specification. RFCs provide a consistent and controlled process for introducing new features, modifying existing behaviors, or making other substantive changes to the protocol.
The RFC process ensures that:
- Changes are thoroughly documented before implementation
- The community has opportunity to provide feedback
- Design decisions are recorded for future reference
- Breaking changes are carefully considered
- Implementations can prepare for upcoming changes
Formal proposals are stored in the proposals/ directory using the standard template.
When to Use an RFC
You SHOULD submit an RFC for:
- New operations or endpoints: Adding new functionality to the CRUDE pattern
- Behavioral changes: Modifying how existing operations work
- New parameters or fields: Extending request/response schemas
- Security-related changes: Modifications to authentication, authorization, or access control
- Breaking changes: Any change that affects backward compatibility
- Architectural changes: Modifications to core patterns or design principles
You MAY skip the RFC process for:
- Editorial corrections (typos, grammar, clarifications)
- Documentation improvements that do not change the specification
- Adding conformance tests for existing features
- Bug fixes to specification text that correct obvious errors
When in doubt, start with a GitHub Issue to discuss whether an RFC is appropriate.
RFC Lifecycle
RFCs progress through five stages from initial concept to integration into the specification.
Stage 0: Pre-RFC (Discussion)
Purpose: Gather initial feedback before investing effort in a formal proposal.
Process:
- Open a GitHub Issue describing the problem or enhancement
- Use the
discussionlabel to indicate this is exploratory - Engage with community feedback
- Refine the idea based on input
Exit Criteria:
- General agreement that the change is worth pursuing
- Clear understanding of the problem being solved
- Initial design direction identified
Duration: No minimum; proceed when ready
Stage 1: Draft (Formal Proposal)
Purpose: Submit a complete, formal proposal for review.
Process:
- Create a new Issue using the RFC issue template
- Complete all required sections (see Submitting an RFC)
- Apply the
rfcandproposallabels - Link to any related Pre-RFC discussions
Exit Criteria:
- RFC is complete and well-formed
- All required sections are filled out
- Examples and use cases are provided
Duration: Immediate upon submission
Stage 2: Review (Community and Maintainer Review)
Purpose: Gather comprehensive feedback and iterate on the design.
Process:
- The RFC enters the minimum 14-day discussion period
- Community members provide feedback via Issue comments
- Maintainers review for technical accuracy and consistency
- The RFC author addresses feedback and updates the proposal
- Spec editors may request changes or clarifications
Exit Criteria:
- Minimum discussion period has elapsed
- All blocking concerns have been addressed
- Maintainer consensus is reached
Duration: Minimum 14 days; may extend based on complexity or ongoing discussion
Stage 3: Accepted (Approved for Implementation)
Purpose: Signal that the RFC is approved and ready for implementation.
Process:
- A maintainer applies the
acceptedlabel - The RFC Issue is updated to reflect acceptance
- An RFC number is assigned (see RFC Numbering)
- The RFC is added to the accepted RFC tracking list
Exit Criteria:
- RFC has been formally accepted by maintainers
- RFC number has been assigned
- Implementation can begin
Duration: Immediate upon acceptance decision
Stage 4: Integrated (Merged into Spec)
Purpose: The RFC changes have been merged into the specification.
Process:
- Specification changes are implemented in a PR
- The PR undergoes review and is merged
- The RFC Issue is closed with the
integratedlabel - The changelog is updated to reference the RFC
Exit Criteria:
- All specification changes from the RFC are merged
- Changelog updated
- RFC Issue closed
Duration: Varies based on implementation complexity
Submitting an RFC
Using the RFC Issue Template
All RFCs MUST be submitted using the RFC issue template located at .github/ISSUE_TEMPLATE/rfc.md. This ensures consistency and completeness across proposals.
To create an RFC:
- Navigate to the repository's Issues tab
- Click "New Issue"
- Select the "RFC Proposal" template
- Fill out all sections completely
Required Sections
Every RFC MUST include the following sections:
Summary
A concise, one-paragraph description of the proposed change. This should be understandable without reading the full RFC.
Example:
This RFC proposes adding a
batchoperation to the CRUDE pattern, allowing multiple operations to be submitted and executed in a single request, with support for transactional semantics.
Motivation
Explain why this change is needed:
- What problem does it solve?
- What use cases does it enable?
- Why is the current approach insufficient?
- Who benefits from this change?
Detailed Design
Provide a comprehensive description of the proposal:
- Specific changes to the specification text
- New operations, parameters, or behaviors introduced
- Request and response examples (in JSON format)
- How the change interacts with existing features
- Edge cases and their handling
Drawbacks
Honestly assess the potential downsides:
- Complexity added to the specification
- Implementation burden for adapters
- Breaking changes or migration requirements
- Performance implications
- Security considerations
Alternatives
Document other approaches that were considered:
- Alternative designs and why they were rejected
- Status quo (doing nothing) and its implications
- Partial solutions and their trade-offs
Optional Sections
The following sections are encouraged but not required:
Prior Art
References to similar features in other specifications, protocols, or systems.
Unresolved Questions
Open design decisions that need further discussion or will be resolved during implementation.
Discussion Period
All RFCs are subject to a minimum 14-day discussion period from the date of submission. This period:
- Allows sufficient time for community review
- Enables asynchronous participation across time zones
- Provides opportunity for implementation feedback
The discussion period MAY be extended for:
- Complex or controversial proposals
- Significant ongoing discussion
- Requests from maintainers or active participants
Review Process
Who Reviews RFCs
RFCs are reviewed by two groups:
Maintainers
Project maintainers have final authority on RFC acceptance. They evaluate:
- Alignment with specification goals and philosophy
- Technical soundness and feasibility
- Impact on existing implementations
- Long-term maintenance implications
Spec Editors
Spec editors focus on:
- Consistency with existing specification language
- Completeness of the proposal
- Clarity and precision of the design
- Integration with other specification sections
Criteria for Acceptance
An RFC is accepted when it meets the following criteria:
- Completeness: All required sections are filled out thoroughly
- Technical Soundness: The design is technically feasible and well-reasoned
- Consistency: The proposal aligns with existing specification patterns
- Addressed Feedback: All substantive concerns have been resolved
- Consensus: Maintainers agree the change should proceed
- Clear Benefit: The proposal provides meaningful value to the specification
Determining Consensus
Consensus is determined through the following process:
- Discussion: All feedback is considered and addressed
- Maintainer Review: At least two maintainers must review the RFC
- Approval: A maintainer signals readiness to accept
- Objection Period: 48 hours for final objections
- Decision: If no blocking objections, the RFC is accepted
Blocking objections MUST include:
- A clear statement of the concern
- Specific changes that would resolve the objection
- Willingness to engage in discussion
If consensus cannot be reached, maintainers may:
- Request additional changes to address concerns
- Defer the RFC for future consideration
- Close the RFC as not accepted (with explanation)
After Acceptance
Create rfc/* Branch
Once an RFC is accepted:
- Create a branch named
rfc/RFC-NNNN-short-description- Example:
rfc/RFC-0001-batch-operations
- Example:
- Branch from
develop(notmain) - Reference the RFC number in the branch name
Implement Spec Changes
Implement the accepted RFC in the branch:
- Update relevant specification documents
- Add or modify examples as needed
- Update schema files if applicable
- Add conformance tests for new features
- Ensure all existing tests pass
PR Review Process
Submit a Pull Request for the implementation:
- Title format:
[RFC-NNNN] Brief description - Reference the RFC Issue in the PR description
- Provide a checklist of all specification changes made
- Request review from maintainers
The PR review focuses on:
- Accurate implementation of the accepted RFC
- Quality of specification language
- Completeness of examples
- Test coverage
Changelog Updates
All RFC implementations MUST update the changelog:
- Add an entry under "Unreleased" or the appropriate version
- Reference the RFC number:
[RFC-NNNN] - Provide a brief description of the change
- Link to the RFC Issue and PR
Example changelog entry:
### Added
- Batch operations support ([RFC-0001](link-to-issue)) - Enables multiple operations in a single request with transactional semanticsRFC Numbering
Assignment
RFC numbers are assigned sequentially, starting from RFC-0001. Numbers are assigned:
- When an RFC is accepted (Stage 3)
- By a maintainer updating the RFC Issue
- In chronological order of acceptance
Format
RFC numbers use a four-digit format with leading zeros:
RFC-0001RFC-0042RFC-0123
Tracking
Accepted and integrated RFCs are tracked in the repository:
- A comment on the RFC Issue includes the assigned number
- The RFC is listed in project documentation
- Branch names and PR titles reference the RFC number
Numbers Are Permanent
Once assigned, RFC numbers are never reused, even if:
- The RFC is later withdrawn
- The implementation is reverted
- The feature is deprecated
This ensures stable references in documentation, changelogs, and external resources.
Quick Reference
| Stage | Name | Duration | Exit Criteria |
|---|---|---|---|
| 0 | Pre-RFC | No minimum | Ready to formalize |
| 1 | Draft | Immediate | Complete submission |
| 2 | Review | 14+ days | Consensus reached |
| 3 | Accepted | Immediate | Number assigned |
| 4 | Integrated | Varies | PR merged |
Related Documents
- CONTRIBUTING.md - General contribution guidelines
- RFC Issue Template - Template for RFC submissions
- Branching Strategy - Branch naming conventions
This document is part of the MCP-AQL specification. See LICENSING.md for license information.