Files
LUNA-Charts/docs/adr

Architecture Decision Records (ADRs)

Architecture Wiki: [https://wiki.byting-pandas.ninja/en/Projects/LUNA-Charts/Introduction]

Purpose

This directory contains the Architecture Decision Records (ADRs) for the LUNA Charts project.

An Architecture Decision Record documents a significant architectural decision, the context in which it was made, the chosen solution, and its consequences.

The goal is to preserve the reasoning behind architectural decisions so that future contributors and maintainers understand why a decision was made—not only what was implemented.

ADRs complement the Architecture Development Method (ADM) documentation and serve as the primary record of architectural decisions throughout the project's lifecycle.


Architecture Documentation

The complete software architecture of LUNA Charts is documented in the official Architecture Wiki.

The wiki follows the TOGAF Architecture Development Method (ADM) and describes the project from the initial vision through implementation governance and long-term architecture evolution.

Architecture Wiki

  • Architecture Vision (Phase A)
  • Business Architecture (Phase B)
  • Information Systems Architecture (Phase C)
  • Technology Architecture (Phase D)
  • Opportunities & Solutions (Phase E)
  • Migration Planning (Phase F)
  • Implementation Governance (Phase G)
  • Architecture Change Management (Phase H)

The ADRs contained in this directory should always be read together with the Architecture Wiki.

The wiki describes the architecture as a whole, whereas ADRs explain the reasoning behind individual architectural decisions.


Relationship to the Architecture Documentation

Architecture Wiki Architecture Decision Records
Describes the complete software architecture Documents individual architectural decisions
Defines the overall system structure Explains why a specific solution was selected
Organized according to TOGAF ADM phases Organized chronologically by architectural decision
Updated when the architecture evolves Added whenever a significant decision is made

ADRs do not replace the Architecture Wiki.

Likewise, the Architecture Wiki should not duplicate ADRs.

Instead, both artifacts complement each other.


When to Create an ADR

An ADR should be created whenever a decision has a significant impact on the architecture of the project.

Typical examples include:

  • Selecting a new technology
  • Introducing or replacing an architectural pattern
  • Changing the public API
  • Introducing a new rendering strategy
  • Changing accessibility principles
  • Modifying the repository structure
  • Changing release or governance processes

Small implementation details, bug fixes, refactorings, or coding style decisions do not require an ADR.


ADR Lifecycle

Every ADR has one of the following statuses:

Status Description
Proposed The decision is under discussion.
Accepted The decision has been approved and adopted.
Deprecated The decision is no longer recommended but still exists.
Superseded The decision has been replaced by another ADR.
Discarded The proposal was rejected.

Only Accepted ADRs represent the current architecture.


ADR Structure

Each ADR follows the same structure.

Title

Status

Context

Decision Drivers

Considered Alternatives

Decision

Rationale

Consequences
    Positive
    Negative

Related TOGAF Phases

References

This structure ensures that every ADR answers the following questions:

  • What decision was made?
  • Why was the decision necessary?
  • When was it made?
  • Who approved the decision?
  • What are the expected consequences?

Naming Convention

ADRs use sequential numbering.

Examples:

0001-repository-structure.md
0002-technology-stack.md
0003-svg-rendering.md

The number is never reused.

If an ADR becomes obsolete, its status changes instead of deleting the document.


Decision Process

Architectural decisions follow the governance model defined in Implementation Governance (Phase G).

Proposal
        ↓
Architecture Discussion
        ↓
Architecture Review
        ↓
Maintainer Decision
        ↓
ADR Update
        ↓
Implementation

Community members are encouraged to participate in discussions.

Final architectural decisions are made by the project maintainers.


Relationship to Source Code

Source code is expected to reflect accepted ADRs.

If an implementation no longer follows an accepted ADR, one of the following actions should occur:

  • Update the implementation to match the ADR.
  • Replace the ADR with a new architectural decision.
  • Deprecate or supersede the ADR.

Architectural changes should always be documented before or together with the implementation.


References

  • TOGAF Architecture Development Method (ADM)
  • LUNA Charts Architecture Wiki
  • LUNA Charts Implementation Governance (Phase G)
  • LUNA Charts Architecture Change Management (Phase H)