Architecture Decision Records
Proposed
ADR 0024
Render localized content on the server, behind locale-prefixed routes
Proposed
ADR 0020
Config-driven state backend adapter
Proposed
ADR 0018
DB Credential Rotation Strategy
Proposed
ADR 0022
Multi-state Plugin Approach
Proposed
Accepted
ADR 0031
A published engineering documentation site, built with docfx
Accepted
ADR 0033
De-duplicate build-and-test across states in state-ci.yaml
Accepted
ADR 0035
Adopt Aspire as the orchestrator for local development, with conditions
Accepted
ADR 0023
Serve browser-facing config at request time instead of inlining it
Accepted
ADR 0021
Lock the ECR API image restore by building the contract from source
Accepted
ADR 0020
Core Ports for State Connector Access
Accepted
ADR 0019
Use Keycloak as the local OIDC stand-in for local/demo development
Accepted
ADR 0030
OpenTelemetry for the Web Tier
Accepted
ADR 0017
Consolidate portal and state connectors into an
/apps monorepo
Accepted
ADR 0016
Per-request Cache-Busting on Client API GET Requests
Accepted
ADR 0029
Co-Loaded Error-Code Taxonomy
Accepted
ADR 0015
PII encryption at rest (AES-256-GCM + key rotation)
Accepted
ADR 0014
Session Idle and Absolute Timeout
Accepted
ADR 0028
OIDC RP-Initiated Logout
Accepted
ADR 0013
Co-loaded cohort classification and exclusion rule
Accepted
ADR 0027
Unified IdProofingRequirements — Replace Dual IAL Config with Resource+Action Model
Accepted
ADR 0012
Configurable Self-Service Rules — Config-Driven Action Gating
Accepted
ADR 0011
Plugin DI Bridge — Replace MEF Composition with DI-Based Instantiation
Accepted
ADR 0026
State Backend Health Checks Report Degraded, Not Unhealthy
Accepted
ADR 0025
Vendor-Agnostic Privacy-Aware Data Layer
Accepted
ADR 0010
Rich text rendering with markdown-to-jsx
Accepted
ADR 0009
Section-level filtering for locale generation
Accepted
ADR 0008
OIDC State IdP Authentication and IdP Claims in Portal JWT
Accepted
ADR 0034
Feature Flag System with Priority Tiers and State-Specific Configuration
Accepted
ADR 0006
Internationalization (i18n) Implementation
Accepted
ADR 0005
Next.js web application with production-grade tooling and quality gates
Accepted
ADR 0032
State-based CI architecture with branch-driven builds
Accepted
ADR 0003
Design token management with Figma Tokens Studio and Vite
Accepted
ADR 0002
Adopt clean architecture
Accepted
ADR 0001
Record architecture decisions
Accepted
ADR 0004
Adopt Serilog for structured logging
Accepted
ADR 0007
Adopt Bogus and factory pattern for test data generation
Accepted
Adding a decision record
New ADR markdown files should be added to /docs/adr/, in the format
described by Michael Nygard:
# N. Title in sentence case
Date: 2026-09-14
## Status
Accepted
## Context
## Decision
## Consequences
When ADRs are added to /docs/adr/ they will appear on this page:
- The H1 provides each card's number and title, and the site's navigation label
- The
Date:line is the decision date - The
## Statusprovides the label:Proposed,Accepted,Superseded,Deprecated, orRejected. An unrecognized value fails the build. - The author on each card comes from git