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 |
What denver is for, who uses it, which qualities it optimizes |
|
2 |
What was fixed before any design choice was made |
|
3 |
Where denver stops and the tools it drives begin |
|
4 |
The handful of ideas the whole design follows from |
|
5 |
The static structure: modules, providers, config resolution |
|
6 |
What actually happens during a run |
|
7 |
How denver ships and where its state lives |
|
8 |
Mechanisms no single building block owns |
|
9 |
The decision records, with their context and consequences |
|
10 |
The quality goals, made concrete and checkable |
|
11 |
Known risks and technical debt |
|
12 |
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.ymlkey, the complete merge and resolution rules.Arguments — every CLI flag.
Providers — one page per provider, its keys, and what
--fast/--forcemean 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.