Architecture (arc42)

This is denver’s architecture documentation, structured after arc42. The rest of doc/ answers how do I configure this; these twelve chapters answer why is denver built this way — what problem it solves, what constrained the design, which decisions were taken deliberately, and what is known to be weak about the result.

#

Chapter

Answers

1

Introduction and Goals

What denver is for, who uses it, which qualities it optimizes

2

Architecture Constraints

What was fixed before any design choice was made

3

Context and Scope

Where denver stops and the tools it drives begin

4

Solution Strategy

The handful of ideas the whole design follows from

5

Building Block View

The static structure: modules, providers, config resolution

6

Runtime View

What actually happens during a run

7

Deployment View

How denver ships and where its state lives

8

Cross-cutting Concepts

Mechanisms no single building block owns

9

Architecture Decisions

The decision records, with their context and consequences

10

Quality Scenarios

The quality goals, made concrete and checkable

11

Technical Risks

Known risks and technical debt

12

Glossary

The terms these chapters use precisely

Note

Reading order, if you are new: chapter 1 for the problem, chapter 4 for the five ideas that answer it, then chapter 5 for the code that implements them. Chapters 2, 3, 7, 10, 11 are reference material; read them when a specific question sends you there.

These chapters describe the design; they do not restate the schema or the CLI. Where a chapter names a key or a flag, it links to the page that owns its full reference:

  • Configuration — every denver.yml key, the complete merge and resolution rules.

  • Arguments — every CLI flag.

  • Providers — one page per provider, its keys, and what --fast/--force mean for it.

  • Philosophy — the same principles as chapter 4, stated as principles rather than as architecture.

  • Glossary — the user-facing vocabulary; chapter 12 is the architecture-facing subset of it.