Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ADR Format Validation Workflow

ADR-26017: ADR Format Validation Workflow

Title

ADR Format Validation Workflow

Date

2026-02-01

Status

proposed

Context

Architecture Decision Records (ADRs) are critical governance artifacts that document significant technical decisions. Without consistent format enforcement, ADRs can drift in structure, making them harder to maintain and parse programmatically.

Previous validation (check_adr.py) only covered:

Missing validations led to inconsistent ADRs:

The ADR template (adr_template.md) defined expected structure, but there was no automated enforcement.

Decision

We will implement comprehensive ADR format validation in check_adr.py with config-driven rules stored in adr_config.yaml.

Validation rules added:

  1. Required frontmatter fields: id, title, date, status, tags

  2. Date format: Must match YYYY-MM-DD (ISO 8601)

  3. Tag validation: Only tags from predefined list in config

  4. Required sections: Context, Decision, Consequences, Alternatives, References, Participants

Migration support:

Single Source of Truth: All validation rules defined in adr_config.yaml to avoid drift between template and validator.

Consequences

Positive

Negative / Risks

Alternatives

  1. Manual review only: Rejected - doesn’t scale, inconsistent enforcement.

  2. Separate linter tool: Rejected - adds dependency, duplicates ADR parsing logic.

  3. JSON Schema validation: Rejected - YAML frontmatter validation needs custom logic for section detection.

  4. IDE-based validation: Rejected - not portable across editors, no CI integration.

References

Participants

  1. Claude Code (implementation)

  2. Repository maintainers (review)