ADR-001: Three-layer architecture: definition, template, value
| Field | Value |
|---|---|
| Status | accepted |
| Date | 2025-01-01 |
Context
Infrastructure modeling requires separating universal concepts from platform-specific implementations from concrete instances.
Decision
Use a 3-layer architecture: vocab/ + patterns/ (definition), template/*/ (template), examples/ (value). Each layer constrains the next via CUE unification.
Rationale
CUE's unification model naturally supports layered constraints. Definitions are provider-agnostic, templates add platform specifics, values bind concrete data. Violations are compile-time errors.
Consequences
- Every provider must implement interfaces from patterns/
- Generic field names map to platform-specific commands
- New providers add template/*/ modules without touching definition or value layers