Skip to main content

Architecture Decision Records (ADRs)

Purpose

This section contains Architecture Decision Records (ADRs) for the portfolio program and its constituent projects.

ADRs provide durable decision traceability by documenting:

  • Context: the problem, constraints, and assumptions
  • Decision: what was chosen
  • Alternatives: what else was considered and why it was not chosen
  • Consequences: operational, security, and delivery impacts
  • Validation: how the decision is proven successful and how regressions are detected

ADRs make the portfolio read like a real engineering organization: decisions are explicit, reviewable, and linked to evidence.

Scope

In scope

  • technology and platform choices with lasting impact (frameworks, hosting, auth, CI gates)
  • changes to trust boundaries, data flows, and integration patterns
  • major documentation governance changes (IA, navigation, quality gates)
  • security controls with architectural implications

Out of scope

  • minor refactors or changes with no long-term impact
  • “how-to” procedures (these belong in runbooks and reference docs)
  • security analysis without a concrete system boundary (belongs in threat models)

Prereqs / Inputs

  • ADR author understands:
    • the affected system boundary
    • what alternatives are realistically viable
    • operational and security implications of the decision
  • Supporting artifacts may include:
    • architecture overviews (docs/10-architecture/)
    • threat models (docs/40-security/threat-models/)
    • runbooks (docs/50-operations/runbooks/)
    • CI/CD documentation (docs/30-devops-platform/ci-cd/)

Procedure / Content

How to add a new ADR (standard workflow)

  1. Create a branch

    • Use a docs branch prefix:
      • docs/adr-<short-title>
  2. Pick the next ADR number

    • Format: adr-000X-short-title.md
    • Keep numbers sequential.
    • Do not reuse numbers.
  3. Author using the ADR template

    • Template location (internal-only):
      • docs/_meta/templates/template-adr.md
    • Mandatory expectations:
      • at least 2 alternatives considered (or explicitly justify why not applicable)
      • explicit operational impact and security impact (or "not applicable")
  4. Link to follow-on work

    • If implementation work is required, document:
      • what must change
      • what must be validated
      • what runbooks/threat models must be created or updated
  5. Validate

    • pnpm build must pass before PR.
    • No links to non-existent pages (use path references until created).
  6. Open a PR

    • Include:
      • what/why
      • evidence: pnpm build passed
      • security note: "No secrets added"

ADR lifecycle and statuses

Use one of:

  • Proposed
  • Accepted
  • Superseded
  • Deprecated

When superseding:

  • create a new ADR that references the old one by file name
  • update the old ADR status and add a pointer to the new ADR

ADR quality bar (enterprise expectation)

A high-quality ADR is:

  • specific and bounded (one decision per ADR)
  • explicit about constraints and assumptions
  • honest about tradeoffs
  • tied to validation and operational reality
  • safe for public consumption (no sensitive config, internal endpoints, or secrets)

Validation / Expected outcomes

This ADR system is successful when:

  • significant decisions are consistently captured as ADRs
  • reviewers can trace "why we built it this way" without guesswork
  • operational and security consequences are systematically addressed
  • ADRs influence actual implementation and governance practices

Failure modes / Troubleshooting

  • ADR sprawl: too many trivial ADRs → raise the threshold; keep ADRs for durable decisions.
  • No validation: decisions become opinion essays → require explicit validation steps and evidence artifacts.
  • Broken references: ADR links cause build failures → avoid linking to non-existent pages.

References

  • ADR template (internal-only): docs/_meta/templates/template-adr.md
  • Documentation App ADR examples: docs/10-architecture/adr/adr-0001-adopt-docusaurus-for-portfolio-docs.md
  • Threat models: docs/40-security/threat-models/
  • Runbooks: docs/50-operations/runbooks/

Recent ADRs