Move the ADR folder under docs/ alongside the rest of the project
documentation. Convention (flat folder, globally-sequential 4-digit
numbering, tags-based categorization, MADR 4.0.0 format) is unchanged
- only the path moved.
- git mv decisions docs/decisions preserves history for all 18 ADRs +
README + template (19 files renamed in this commit).
- ADR-0001 amended in-place with a dated note documenting the
relocation. Status remains 'accepted' - the location detail
changed, the decision did not.
- All cross-references updated:
- CLAUDE.md (~17 ADR links + 3 mentions of decisions/ in the Project
rules section)
- docs/README.md (now references decisions/ as a sibling under docs/)
- docs/setup/03-angular-nx-monorepo.md (paths shortened from
../../decisions/ to ../decisions/, since setup/ and decisions/ are
now both inside docs/)
- docs/decisions/0003 ../CLAUDE.md adjusted to ../../CLAUDE.md
(one extra level of nesting)
- docs/decisions/template.md mention of the README path
- notes/asvs-level-decision-briefing-rssi.md mention of the index
Sanity verified: every ADR link in CLAUDE.md, docs/setup/03, and
docs/decisions/0001 resolves to an existing file. pnpm nx run-many
-t lint passes on 8 projects.
3.8 KiB
status, date, decision-makers, tags
| status | date | decision-makers | tags | |
|---|---|---|---|---|
| accepted | 2026-04-29 | R&D Lead |
|
Use ADRs to record architectural decisions
Context and Problem Statement
Architecturally-significant decisions will be taken throughout the lifecycle of apf-portal. Without a written, durable trace of why a decision was made — context, drivers, alternatives, trade-offs — that knowledge fades within months. New contributors re-litigate settled debates, the rationale of constraints (security, performance, accessibility) gets lost, and reversing a choice later becomes risky because nobody remembers what it was protecting against.
How do we record decisions in a way that is light enough to be sustained, durable enough to outlive contributor turnover, and integrated into the development workflow?
Decision Drivers
- Preserve the why of each decision so future contributors can understand or revisit it without re-deriving it.
- Make architecture reviewable — both at the time of a decision and during retrospective audits.
- Keep the format light enough that writing an ADR isn't a bureaucratic deterrent.
- Live alongside the code in version control, so decisions evolve with what they govern.
- Match the project's stated values: high technical bar, no bricolage, security/performance/accessibility as first-class concerns whose rationale must be traceable.
Considered Options
- No formal records — rely on commit messages and tribal knowledge.
- External wiki / Confluence — decisions live outside the codebase.
- ADRs in markdown using the MADR 4.0.0 format, in-repo.
- ADRs in another format (Nygard, Y-Statement, Cockburn).
Decision Outcome
Chosen option: ADRs in markdown using MADR 4.0.0, stored under docs/decisions/ so they sit with the rest of the project documentation.
Amended on 2026-04-30 — ADRs were originally located at
decisions/at the repository root (this ADR was written that way). On 2026-04-30 the folder was relocated todocs/decisions/to consolidate documentation underdocs/. The relocation preserves git history (git mv) and the flat-folder + globally-sequential-numbering + tags conventions are unchanged; only the path moved.
Conventions are defined in README.md:
- flat folder layout (no nested category folders);
- globally sequential 4-digit numeric prefix (
NNNN-kebab-title.md); - categorization via the
tags:field in the MADR frontmatter, drawn from a canonical vocabulary; - status lifecycle:
proposed→accepted→ optionallydeprecated/superseded by ADR-NNNN; - index maintained in README.md alongside any ADR change.
Consequences
- Good, because the why of every architecturally-significant decision is captured at the moment it is made and travels with the code.
- Good, because ADRs are reviewed via the normal pull-request flow — architecture becomes an explicit team conversation.
- Good, because MADR provides enough structure (drivers, options, trade-offs) without being heavy.
- Good, because flat-folder + tags scales better than nested category folders as the count grows.
- Bad, because writing an ADR adds friction; this must be balanced against the cost of not writing one.
- Bad, because the index is maintained manually until tooling or a CI check is added.
Confirmation
- Every change introducing or transitioning the status of an ADR updates the index table in README.md in the same commit.
- PR review explicitly checks for ADR proposal whenever a non-trivial decision is being introduced.
- (Future) A CI lint job validates filename pattern, frontmatter shape, and tag vocabulary.
More Information
- MADR 4.0.0 specification: https://github.com/adr/madr
- General ADR resources: https://adr.github.io/
- Template: template.md
- Tag vocabulary: see "Tag vocabulary" in README.md.