src/postgres/third-party-extensions/documentdb/rfcs/0003-rfc-process.md
DocumentDB lacks a formal process for architectural proposals. This absence creates friction for contributors, manual overhead for maintainers, and opacity for the community.
Contributors face four barriers:
Maintainers experience three challenges:
The community lacks:
Architectural proposals currently flow through three channels:
These channels do not scale as the community grows.
This Request for Comments (RFC) process MUST achieve:
This RFC process explicitly does NOT:
Implement a GitHub-native RFC process using Discussions, Issues, PRs, Projects v2, and GitHub Actions. This provides low-friction, automated workflow for architectural proposals.
1. RFC Template (/rfcs/0000-template.md)
2. GitHub Workflow
3. Automation (GitHub Actions)
/rfcs/ directory4. Projects Board ("RFC Pipeline")
5. Routing Guidance
This approach delivers four advantages:
GitHub-Native: Uses built-in features contributors already know. No external tools required.
Progressive Complexity: RFCs start with Problem statement only. Contributors add detail based on feedback. Ideas fail fast without heavy investment.
Battle-Tested: Based on Rust RFCs, React RFCs, and Kubernetes Enhancement Proposals (KEPs).
Maintainable: One part-time maintainer can operate the system.
Process Overhead
Platform Dependency
Initial Manual Setup of Project Board
DocumentDB architecture spans:
This RFC process enables:
State Machine:
[Draft] → [Proposed] → [Accepted/Rejected] → [Implementing] → [Complete]
↘ [Archived]
State Definitions:
| State | Requirements | Entry Trigger |
|---|---|---|
| Draft | Problem section MUST be complete | Contributor creates file |
| Proposed | Problem and Approach sections MUST be completed | PR opened touching /rfcs/ |
| Accepted | Problem and Approach sections MUST be completed; Detailed Design section MAY BE REQUIRED per judgment of reviewers | RFC PR merged |
| Rejected | N/A | Maintainer closes PR |
| Implementing | Implementation PRs MUST be linked to RFC | Implementation PR references RFC |
| Complete | All implementation PRs are merged | Maintainer updates status |
| Archived | N/A | Superseded or abandoned |
Automatic Transitions:
Manual Transitions:
Format: NNNN-descriptive-name.md (4-digit zero-padded). The file name SHOULD BE title of the RFC in kebab-case (lowercase characters separated by dashes (-)).
Assignment: Maintainers assign numbers during review. Contributors submit as XXXX-feature-name.md. Maintainer renames during merge to prevent collisions.
Template: File 0000-template.md is never assigned to actual RFCs.
Directory Structure:
/rfcs/
├── 0000-template.md # Template only
├── 0001-feature-one.md # Assigned RFCs
├── 0002-feature-two.md
└── 0003-rfc-process.md # This RFC
RFC documents MUST include YAML frontmatter with these fields:
---
rfc: NNNN # 4-digit number (required)
title: "RFC Title" # Quoted string (required)
status: Draft # State name, one of Draft|Proposed|Accepted|Rejected|Implementing|Complete|Archived, case-sensitive (required)
owner: "@username" # GitHub handle with @ (required)
issue: "URL" # GitHub Issue URL (required)
discussion: "URL" # GitHub Discussions URL (optional)
version-target: X.Y # Target release version (required)
implementations: # Array of PR URLs (optional, populated during implementation)
- "URL1"
- "URL2"
---
Status values MUST exactly match state names. YAML MUST parse without errors.
GitHub Actions:
File .github/workflows/rfc-automation.yml MUST trigger on:
on:
pull_request:
types: [opened, synchronize, reopened]
paths: ['rfcs/**']
pull_request_target:
types: [closed]
paths: ['rfcs/**']
File .github/workflows/issue-automation.yml MUST trigger on:
on:
issues:
types: [opened]
GitHub Projects:
GitHub Discussions:
Categories MUST include:
Template Tests:
Automation Tests:
/rfcs/ changesIntegration Tests:
Steps:
/rfcs/ directory and templateBackwards Compatibility:
This RFC introduces no breaking changes:
Rollback:
To rollback:
/rfcs/ directoryREADME.md Updates:
CONTRIBUTING.md Updates:
No Changes:
New Files:
/rfcs/0000-template.md: RFC template/rfcs/0003-rfc-process.md: This RFCImplementation spans seven user stories:
Story 1.1: Foundation RFC Template - IMPLEMENTING
/rfcs/0000-template.mdStory 1.2: Issue Templates - PENDING
.github/ISSUE_TEMPLATE/rfc.ymlStory 1.3: Documentation Updates - PENDING
Story 1.4: Projects Board - PENDING
Story 1.5: RFC Automation - PENDING
.github/workflows/rfc-automation.ymlStory 1.6: Issue Automation - PENDING
.github/workflows/issue-automation.ymlStory 1.7: Testing and Launch - PENDING
2025-10-15: RFC 0003 created. Story 1.1 completed.
Next Actions:
Issue 1: Issue Creation Method
Issue 2: RFC Threshold Definition
Decision 1 [2025-10-15]: Meta-RFC Approach
Decision 2 [2025-10-15]: Four Progressive Sections
Decision 3 [2025-10-15]: GitHub-Native Implementation