Decisions
Decision records are the context layer’s dated account of why: architecture decisions, vendor selections, scope boundaries, intentional non-decisions. They stop re-litigation, and they give agents the reasoning rather than just the rule.
Requirements#
- Decision records MUST live under the path(s) the manifest maps to
decisions(default<root>/decisions/), one record per file, markdown with YAML frontmatter valid againstdecision-record.schema.json. - Frontmatter MUST carry:
id(stable),title,status, anddate.statusis one ofproposed,accepted,superseded,deprecated,rejected. - The body MUST state, in prose: the context (what situation forced a decision), the decision itself, and its consequences. The RECOMMENDED section headings are
## Context,## Decision,## Consequences; a record MAY add## Alternatives. - Records are append-only history: a record MUST NOT be edited into a different decision. A reversal or change is a new record whose frontmatter sets
supersedes, and the old record’sstatusbecomessupersededwithsupersededByset. Both records remain. - A record MAY declare
affectedPathsandaffectedCategories, so tooling can route from a file to the decisions that govern it. - Rejected proposals are records too (
status: rejected). A decision not taken, written down, is the cheapest re-litigation insurance there is.
ADR compatibility (non-normative)#
Leji decision records are deliberately compatible with Architecture Decision Records: an existing ADR directory satisfies decisions by adding the frontmatter fields to each record (or to new records going forward) and mapping the directory in the manifest. No ADR tooling is required, and none is excluded.