7 Architecture Decision Management
7.1 ADR as an engineering object
In Quarto-Needs, an ADR is not a loose file maintained beside requirements. The canonical object is architecture-decision, with lifecycle, attributes, relations, and validation in the same graph used by the rest of engineering.
This preserves an important distinction:
- a requirement expresses a need or obligation on the system;
- an architecture decision records a choice made in response to drivers;
- a component/interface materializes the architecture;
- a test/evidence confirms behavior or conformance.
Therefore, a decision does not directly satisfy or implement a requirement. It addresses it.
7.2 Decision relations
| Relation | Recommended direction | Meaning |
|---|---|---|
addresses |
ADR → driver | requirement, need, or risk that motivated the decision |
applies-to |
ADR → architecture element | components/interfaces affected by the decision |
confirmed-by |
ADR → confirmation | test or evidence that confirms the decision |
supersedes |
new ADR → previous ADR | replacement lineage |
The inverse forms addressed-by, confirms, and superseded-by belong to the same semantic families.
7.3 Complete example
::: {.need #ADR-007 type="architecture-decision" status="accepted"}
date: 2026-08-28
revisit-after: 2027-08-28
decision-makers: Architecture Team
addresses: NFR-003;RISK-002
applies-to: COMP-004;IF-003
confirmed-by: TC-010;TC-015
tags: audit;privacy
## Separate the audit trail from transactional processing
### Context and Problem Statement
...
### Decision Drivers
...
### Considered Options
...
### Decision Outcome
...
### Consequences
...
### Confirmation
...
:::Fields used by queries and rules stay structured. Context, alternatives, outcome, and consequences remain in Markdown. The narrative structure is compatible with ADR practices such as MADR without coupling the core to a single textual presentation.
revisit-after is optional. Use it for decisions whose validity should be reconsidered after a known date — for example, temporary technology constraints, transitional architectures, or decisions tied to an external standard. It is not a replacement for superseded: a review may conclude that the existing decision remains valid.
7.4 Selecting and filtering ADRs
Architecture decisions can be rendered as a focused catalog with adr-table, or counted with adr-count. Filters can be combined by lifecycle status, tags, decision makers, and ISO date ranges; date-sort controls chronological ordering.
{{< adr-table status="accepted" tags="security;audit" date-from="2026-01-01" date-sort="desc" >}}
Accepted decisions: {{< adr-count status="accepted" >}}Supported selectors are status, tags, decision-makers, date-from, date-to, and query. The default columns are id, title, status, date, decision-makers, and tags.
Named queries are also materialized as reusable graph projections. If the project declares a query called accepted-decisions, the same Python-evaluated selection can be explored without restating the filter in Lua:
{{< need-graph query="accepted-decisions" >}}view="accepted-decisions" is an equivalent, presentation-oriented spelling. Query evaluation still belongs exclusively to the Python core.
7.5 Lifecycle
The recommended lifecycle is:
proposed ──► accepted ──► deprecated
│ │
└──► rejected└──► superseded
A superseded decision must retain explicit lineage. The replacement points to the previous decision with supersedes, allowing history to be reconstructed without retroactively editing old decisions.
7.6 DEC rules
The implementation includes:
| Code | Check |
|---|---|
DEC001 |
an accepted decision must have at least one driver (addresses) |
DEC002 |
an accepted decision must declare architectural scope (applies-to) |
DEC003 |
an accepted decision must declare confirmation (confirmed-by) |
DEC004 |
a decision marked superseded needs consistent lineage |
DEC005 |
the decision-supersession graph must be acyclic |
DEC006 |
an accepted decision with revisit-after is reported when its review date is overdue or invalid |
Required metadata such as date and decision makers remains covered by required-attributes policy. The rules are configurable through the same mechanism used by REQxxx rules. Date-sensitive findings use the same reproducible reference-date mechanism as evidence expiry (SOURCE_DATE_EPOCH when provided).
7.7 Impact
Impact direction is declared in the relation catalog. A change to a requirement can therefore propagate to the decision that addresses it; the decision can propagate to architecture elements and confirmations.
NFR-014 changed
↓
ADR-007
├──► COMP-004
└──► TC-010 ──► EVD-010
This chain is the main benefit of integrating Requirements Engineering and Architecture Decision Management: rationale stops being isolated prose and becomes part of change analysis.