| 1 |
The ID (ADR-NNNN, 4-digit) matches the filename number and is unique and sequential |
Pass |
ADR-0005 in adr-0005-quality-check-contract.md. |
| 2 |
Context states the problem, the forces (cost, risk, constraints) and the options evaluated |
Pass |
Facts measured on the runner on 2026-10-10 and four options. |
| 3 |
At least two options were considered, or the absence of alternatives is justified |
Pass |
Four options. |
| 4 |
Decision is stated in one or two unhedged sentences and matches one of the evaluated options |
Pass |
Two sentences; option 1. |
| 5 |
Consequences list both Positive and Negative outcomes |
Pass |
Three positive and five negative after the fix. |
| 6 |
Quality-attribute impacts (performance, security, portability, etc.) are named where the decision affects them |
Pass |
Finding fixed during this review: the security impact (tools downloaded from PyPI on every run, versions pinned but not hash-pinned, runner runs as root) was not named. It is now a negative consequence; performance and reliability were already named. |
| 7 |
Affected Artifacts are listed as links, and each is also in CrossReference |
Pass |
MIL-003, UC-005, US-001 and ADR-0004 are linked and cited. |
| 8 |
Status changes are recorded as new Version History rows with a Change summary and Commit link; retained rows are never rewritten |
Pass |
The earlier row is kept and only its status changed. |
| 9 |
A superseded or deprecated ADR names its successor, and the successor links back |
N-A |
Nothing is superseded. |
| 10 |
Written in business or technical language of the domain, with no unexplained abbreviations |
Pass |
PyPI, venv and the tools are named where used. |
| 11 |
Status is one of Proposed, Accepted, Rejected, Deprecated or Superseded by ADR-NNNN, and every Version History row uses only these |
Pass |
Deprecated and Accepted only. |