Table of Contents

Architecture Decision Records

Architecture Decision Records (ADRs) document long-term architectural decisions made for the .NET Core Application Template.

ADRs are intended to explain why a decision was made, what alternatives were considered, and what consequences the decision introduces. They are not meant to replace code comments, API documentation, or implementation guides.

When to Add an ADR

Add an ADR when a decision affects the long-term shape of the template, such as:

  • Application startup and middleware organization.
  • Logging, telemetry, or observability strategy.
  • Security defaults and production guardrails.
  • Authentication or authorization architecture.
  • Data access provider strategy.
  • Template packaging conventions.
  • Testing strategy or repository workflow.
  • Any decision that future maintainers may reasonably question.

Small implementation details, routine refactors, and temporary fixes usually do not need ADRs.

Numbering Convention

ADR files use a four-digit, zero-padded sequence number followed by a short kebab-case title:

0001-use-structured-serilog-logging.md
0002-use-centralized-application-middleware-pipeline.md
0003-example-future-decision.md

Rules:

  • Assign the next available number when creating a new ADR.
  • Do not renumber existing ADRs after they are merged.
  • Keep filenames lowercase and use hyphens between words.
  • Keep titles short but specific.
  • Use the ADR template in template.md.

ADR Status Values

Use one of these status values:

Status Meaning
Proposed Under consideration but not yet accepted.
Accepted Current architectural decision.
Deprecated No longer recommended, but not directly replaced.
Superseded Replaced by a newer ADR.

When an ADR is superseded, keep the original file and add a link to the replacing ADR. Do not delete historical ADRs unless they were created by mistake and have not been relied on.

Current ADRs

ADR Title Status
0001 Use structured Serilog logging Accepted
0002 Use centralized application middleware pipeline Accepted
0003 Record Release Surface and Distribution Strategy Accepted