Architecture Decision Records
Architecture Decision Records document important architectural decisions made in the project.
They capture:
- The context that led to the decision
- The decision itself
- The consequences (positive, negative, and neutral)
- Alternatives that were considered
Records
- ADR-0001 — Create A Logical Model for GRC Engineering Activities
- ADR-0002 — Create Schemas for Each Layer in the Logical Model
- ADR-0003 — Create Go SDK to Support “Layer 2” Authors and Consumers
- ADR-0004 — Extend Go SDK for “Layer 4” Based on the Privateer Project
- ADR-0005 — Enforce Automated Alignment from Schemas to SDK
- ADR-0006 — Unified Go SDK Package Structure
- ADR-0007 — Isolate Concepts from Code
- ADR-0008 — Finish Development on the Model and Common Terms
- ADR-0009 — Formalize Sensitive Activities as a Layer
- ADR-0010 — Dual-ladders Within Each Layer
- ADR-0011 — Adjust “Upper” and “Lower” Layer Descriptors into “Definition” and “Measurement”
- ADR-0012 — Refine Terms for Top-level Schema Types
- ADR-0013 — Enum Casing Conventions
- ADR-0014 — Mapping Boundaries
- ADR-0015 — Nest Imported Fields Under imports Struct
- ADR-0016 — Base Log Type
- ADR-0017 — Base Catalog Type
- ADR-0018 — Promote Nested Concepts to First-class Catalogs
- ADR-0019 — Promote Capabilities to a First-class Catalog
- ADR-0020 — Merge Family and Category into Group
- ADR-0021 — New schema for Lexicon artifacts
Format
ADRs follow the format described at adr.github.io, with the following structure:
- Status - Proposed, Accepted, Deprecated, or Superseded
- Context - The situation and problem that led to this decision
- Decision - The architectural decision and its rationale
- Consequences - Positive, negative, and neutral outcomes
- Alternatives Considered - Other options that were evaluated
When to Create an ADR
Create an ADR when:
- Making a significant architectural decision that affects the public API
- Choosing between multiple viable approaches
- The decision will impact future development or maintenance
- The decision needs to be communicated to stakeholders
Don’t create an ADR for:
- Routine implementation details
- Temporary workarounds
- Decisions that are clearly the only viable option