ADR Workflow
This document defines the lightweight Architecture Decision Record (ADR) process used for architecture-impacting changes.
Purpose
Use ADRs to make major decisions explicit, reviewable, and historically traceable.
An ADR is required when a change alters one or more core seams:
- Parser detection/selection behavior
- Pass pipeline contracts or pass ordering/dependencies
- Enrichment orchestration and source contract behavior
- Output schema compatibility or long-term artifact semantics
- Runtime policy or security default behavior
ADR Lifecycle
- Draft: create a new ADR from template before implementation starts.
- Review: link ADR in PR and request maintainer review.
- Accept or reject: maintainers set final status.
- Implement: code and tests must align with accepted ADR.
- Supersede (if needed): create a new ADR and mark older one superseded.
File Location and Naming
Store ADRs in documentation/docs/adr/ using zero-padded numbering:
ADR-0001-title.mdADR-0002-title.md
Do not renumber existing ADRs.
Required ADR Sections
- Status (
Proposed,Accepted,Rejected,Superseded) - Date
- Context and problem statement
- Decision
- Consequences (positive and negative)
- Compatibility impact
- Test and rollout plan
- Rollback strategy
Use the template at ADR Template.
PR Requirements for ADR-Scoped Changes
For architecture-impacting PRs:
- ADR link is present in PR description.
- ADR status is
Acceptedbefore merge. - Contract tests and docs updates are included.
- Changelog notes reference the ADR when user-visible behavior changes.
When ADR Is Not Required
ADR is generally not required for:
- Pure bug fixes that do not alter architecture or contracts.
- Internal refactors preserving behavior and contract semantics.
- Documentation-only updates without behavior changes.
When uncertain, default to opening a brief ADR.