Architecture Decision Records

Each ADR captures a single architectural decision: the context that prompted it, the decision made, and the consequences — both positive and negative.

Tooling:

npm run adr:new "Title"      # Scaffold new ADR (Proposed status)
npm run adr:validate         # Validate format (runs in build)
npm run adr:toc              # Regenerate this index

Decision Log

# Decision Status
0001 Use ADRs for Architecture Decisions Accepted
0002 Static Prerendering with Hydration, Not Runtime SSR Accepted
0003 Cloud Functions as the Canonical Write Path; Firestore Rules Deny-by-Default Accepted
0004 Build-Time Markdown Pipeline with Dual-Theme Shiki and Mermaid Amended
0005 Firebase as Sole Infrastructure Vendor Superseded
0006 Shared Code Lives in shared/ Folders with Path Aliases, Not Nx or Publishable Packages Accepted
0007 PrimeNG Lazy-Loaded and Bundle-Isolated from the Blog Accepted
0008 Ernest Sludge Persona as an Architectural Governance Constraint Accepted
0009 Multi-Agent Claude Code Architecture with Role-Specialized Agents Accepted
0010 Centralized copy.json for All User-Facing Strings Accepted
0011 Service Worker with Freshness-First Navigation Strategy Superseded
0012 Terraform for GCP Resource Management Accepted
0013 COEP credentialless over require-corp Accepted
0014 Lightweight ADR Tooling Accepted
0015 Ernest AI — RAG Chatbot and Voice Tools Accepted
0016 Remove Service Worker and PWA Accepted
0017 Angular CDK for Headless Admin Primitives Accepted
0018 GCP as the Platform Vendor; Firebase as the Application Layer Accepted
0019 Error Visibility Policy Accepted