ADR-0008: Add refs field to RfcSpec for artifact cross-referencing
Status: accepted | Date: 2026-01-17
References: RFC-0000
Context
RFCs are the supreme governance documents in govctl, yet they cannot formally reference other artifacts (ADRs, other RFCs, work items). Meanwhile, ADRs and Work Items both have a refs field for cross-referencing.
This asymmetry creates problems:
- RFCs cannot declare dependencies on ADRs that informed their design
- No way to trace which ADRs led to an RFC’s creation
- Validation cannot check RFC references for consistency
- Impact analysis for deprecation is incomplete
The existing pattern in AdrMeta and WorkItemMeta is: refs: Vec<String> with validation against known artifact IDs.
Decision
Add refs field to RfcSpec following the same pattern as AdrMeta and WorkItemMeta:
- Add
refs: Vec<String>to RfcSpec model (serde skip_serializing_if empty) - Add diagnostic code E0105RfcRefNotFound for validation errors
- Extend validate_artifact_refs() to include RFC refs validation
- Support add/remove/get refs operations in edit commands for RFCs
- Validate RFC supersedes field against known RFCs (currently unvalidated)
This creates consistency across all artifact types and enables complete cross-reference tracking.
Consequences
Positive:
- RFCs can now reference ADRs, other RFCs, and work items
- Complete artifact graph for impact analysis
- Consistent API across all artifact types
- Existing RFCs remain valid (refs is optional, defaults to empty)
Negative:
- Minor schema change to RfcSpec
- Slightly more validation overhead on check
Neutral:
- Existing RFCs do not need migration (empty default)