diff --git a/docs/decisions/adr-template.md b/docs/decisions/adr-template.md new file mode 100644 index 0000000..c3814a9 --- /dev/null +++ b/docs/decisions/adr-template.md @@ -0,0 +1,38 @@ +# ADR-NNN — : <optional clarifying subtitle> + +<!-- Filename: NNN-kebab-title.md (zero-padded, monotonic, never reused). + Register a row in CLAUDE.md "Further reading" when this ADR is created. + Sections below in order. Mandatory: Status, Context, Decision, Consequences. + Delete this comment and any optional section you don't use. --> + +## Status + +Accepted (YYYY-MM-DD) +<!-- Lifecycle: "Accepted (YYYY-MM-DD)" → later "Superseded by ADR-NNN (YYYY-MM-DD)" + or "Deprecated (YYYY-MM-DD)" + one-line why. Optional trailing note OK, e.g. + "Accepted (2026-06-10). Doctrine ADR — pins policy, builds nothing yet." --> + +## Context + +<!-- The forces, the problem, what exists today, why now. --> + +## Decision + +<!-- What we are doing. Use numbered sub-decisions (### 1. ...) for multi-part ADRs. --> + +## Consequences + +<!-- Results, trade-offs explicitly accepted, follow-on work. --> + +<!-- Optional sections — uncomment any that genuinely apply; never pad: + +## Scope — explicit in / out-of-scope boundaries. + +## Guardrails — how the decision is mechanically enforced (lint, CI, hooks). + +## What was ruled out — rejected alternatives, each with its reason. + +## Verified facts (ADR-014) — verified: <subject> · <tool> <version> · <source> · <YYYY-MM-DD> + +## Related — links to other ADRs by number; bidirectional for Supersedes/Superseded-by. +-->