Skip to content

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