Files
template/docs/DECISIONS.md
T
2026-06-28 09:40:40 +02:00

6.0 KiB

Decisions

This document contains Architecture Decision Records (ADRs).

Use ADRs for decisions that materially affect architecture, operations, security, team workflow, data ownership, public contracts, or long-term maintainability.

For architecture context, see ARCHITECTURE.md. For project constraints, see PROJECT.md.

Status Values

  • Proposed: under discussion.
  • Accepted: current decision.
  • Superseded: replaced by a newer decision.
  • Deprecated: no longer recommended, but still present.
  • Rejected: considered and intentionally not chosen.

ADR Index

ID Title Status Date
ADR-000 ADR template Accepted {{DATE}}
ADR-001 Example: Start with a modular monolith Example 2026-06-28
ADR-002 Example: Keep project documentation in the repository Example 2026-06-28
ADR-003 Example: Require explicit validation evidence before merge Example 2026-06-28

ADR-000: ADR Template

Title

{{DECISION_TITLE}}

Status

{{STATUS}}

Date

{{DATE}}

Context

{{CONTEXT}}

Describe the environment, constraints, project stage, team needs, and forces that make the decision necessary.

Problem

{{PROBLEM}}

State the specific problem being solved. Avoid combining unrelated decisions.

Alternatives

Alternative Summary
{{ALTERNATIVE_1}} {{ALTERNATIVE_1_SUMMARY}}
{{ALTERNATIVE_2}} {{ALTERNATIVE_2_SUMMARY}}
{{ALTERNATIVE_3}} {{ALTERNATIVE_3_SUMMARY}}

Pros

  • {{PRO}}

Cons

  • {{CON}}

Decision

{{DECISION}}

Write the chosen option and why it best fits the current constraints.

Consequences

  • {{CONSEQUENCE}}

Document expected benefits, costs, operational impacts, migration needs, and future review triggers.

ADR-001: Example: Start With A Modular Monolith

Title

Start with a modular monolith before introducing microservices.

Status

Example

Date

2026-06-28

Context

The fictional project Atlas Desk is a new workflow application with one small team, one primary database, and requirements that are still evolving.

Problem

The team needs clear module boundaries without accepting the operational cost of distributed services too early.

Alternatives

Alternative Summary
Layered monolith Simple to build, but feature boundaries may become unclear.
Modular monolith Strong internal boundaries with one deployable unit.
Microservices Independent deployments, but higher operational and data consistency cost.

Pros

  • Preserves deployment simplicity.
  • Supports clear module ownership.
  • Avoids premature distributed transactions and network failure modes.
  • Allows extraction of services later when boundaries are proven.

Cons

  • Requires discipline to maintain module boundaries.
  • Independent scaling by module is limited.
  • Poor internal boundaries can still create a tightly coupled system.

Decision

Use a modular monolith as the initial architecture.

Consequences

  • Module boundaries must be documented in ARCHITECTURE.md.
  • Cross-module access must go through public interfaces.
  • Service extraction can be reconsidered when team scale, traffic, or ownership pressure justifies it.

ADR-002: Example: Keep Project Documentation In The Repository

Title

Keep durable engineering documentation in the source repository.

Status

Example

Date

2026-06-28

Context

The project will use issue trackers and chat for coordination, but architecture, setup, and operating knowledge must remain discoverable by humans and AI agents.

Problem

External documentation often drifts from code and is harder for development tools to discover during implementation.

Alternatives

Alternative Summary
Repository documentation Versioned with code and easy for agents to read.
Wiki Easier non-developer editing, but often drifts from code changes.
Chat-only knowledge Fast, but not durable or discoverable.

Pros

  • Documentation changes can be reviewed with code.
  • Agents and developers can discover project context locally.
  • Historical context remains connected to commits.

Cons

  • Non-developers may find editing less convenient.
  • Documentation quality still requires review discipline.
  • Large diagrams or rich media may need external tooling.

Decision

Keep durable engineering documentation in the repository under docs/.

Consequences

  • Pull requests that change architecture or operations should update docs.
  • Temporary planning can live elsewhere, but accepted decisions belong here.
  • Links must be reviewed as part of documentation changes.

ADR-003: Example: Require Explicit Validation Evidence Before Merge

Title

Require explicit validation evidence before merging changes.

Status

Example

Date

2026-06-28

Context

The project may use AI-assisted development and multiple contributors. Reviewers need a reliable way to understand how changes were checked.

Problem

Pull requests without validation evidence increase review time and regression risk.

Alternatives

Alternative Summary
No required evidence Fastest locally, but makes review less reliable.
Validation summary in PR Lightweight and visible to reviewers.
Full test report artifact only Detailed, but harder to scan for small changes.

Pros

  • Reviewers can evaluate risk quickly.
  • Missing tests or blocked checks are visible.
  • AI-generated changes become easier to trust or challenge.

Cons

  • Contributors must spend time recording checks.
  • Some exploratory changes may need a lighter process before formal review.

Decision

Every pull request must include a short validation section listing commands, manual checks, or reasons validation could not be run.

Consequences

  • PR templates should include validation.
  • Reviewers can block merges when risk is high and evidence is missing.
  • Failed or skipped validation must be explained.