Skip to content

Architecture Decision Records

This directory contains Architecture Decision Records (ADRs) for shared/monorepo-level decisions that affect the entire repository.

For package-specific ADRs, see:

What is an ADR?

An Architecture Decision Record (ADR) is a document that captures an important architectural decision made along with its context and consequences.

Format

We use the format proposed by Michael Nygard in his article Documenting Architecture Decisions:

  • Title: A short noun phrase describing the decision
  • Status: Proposed | Accepted | Deprecated | Superseded
  • Context: What is the issue that we're seeing that is motivating this decision?
  • Decision: What is the change that we're proposing and/or doing?
  • Consequences: What becomes easier or more difficult to do because of this change?

ADR Lifecycle

  1. Proposed: The ADR is proposed and under discussion
  2. Accepted: The ADR has been accepted and is being implemented
  3. Deprecated: The ADR is no longer recommended but still in use
  4. Superseded: The ADR has been replaced by another ADR

Index

Accepted Shared/Monorepo Decisions

Creating a New ADR

  1. Copy the template:
cp docs/adr/template.md docs/adr/NNNN-short-title.md
  1. Update the number (NNNN) to be the next sequential number

  2. Fill in the sections:

  3. Title

  4. Status (start with "Proposed")
  5. Context (why is this decision needed?)
  6. Decision (what are we doing?)
  7. Consequences (what are the tradeoffs?)

  8. Create a PR for discussion

  9. After acceptance, update status to "Accepted"

ADR Numbering

ADRs are numbered sequentially starting from 0001. The number is part of the filename to ensure ordering.