diff --git a/.adr-kit.yaml b/.adr-kit.yaml new file mode 100644 index 00000000..de0b2e62 --- /dev/null +++ b/.adr-kit.yaml @@ -0,0 +1,18 @@ +# ADR kit configuration for repository-level decision governance. +adr_directory: docs/adr +filename_pattern: "ADR-[0-9]{4}-[a-z0-9-]+\.md" +statuses: + - Proposed + - Accepted + - Superseded + - Deprecated + - Rejected +immutable_statuses: + - Accepted +required_sections: + - Context + - Decision + - Consequences + - Validation +human_acceptance_required: true +ai_may_accept: false diff --git a/.github/workflows/adr-governance.yml b/.github/workflows/adr-governance.yml new file mode 100644 index 00000000..e7911b4f --- /dev/null +++ b/.github/workflows/adr-governance.yml @@ -0,0 +1,29 @@ +name: ADR Governance + +on: + pull_request: + paths: + - 'docs/adr/**' + - '.adr-kit.yaml' + - 'scripts/adr-governance.py' + - '.github/workflows/adr-governance.yml' + push: + branches: + - main + - master + paths: + - 'docs/adr/**' + - '.adr-kit.yaml' + - 'scripts/adr-governance.py' + - '.github/workflows/adr-governance.yml' + +jobs: + adr-governance: + name: Validate ADRs and immutable Accepted status + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Run ADR governance checks + run: python3 scripts/adr-governance.py diff --git a/docs/adr/TEMPLATE.md b/docs/adr/TEMPLATE.md new file mode 100644 index 00000000..968549a8 --- /dev/null +++ b/docs/adr/TEMPLATE.md @@ -0,0 +1,51 @@ +# ADR-NNNN: + +- **Status:** Proposed +- **Date:** YYYY-MM-DD +- **Decision owners:** +- **Reviewers:** +- **Supersedes:** +- **Superseded by:** +- **Related:** + +## Context + +What problem, constraint, or architectural tension forced this decision? + +## Decision Drivers + +- +- +- + +## Considered Options + +1.