Design Principles

Design Principles #

Adage is built on the idea of infrastructure as consequence — where infrastructure is shaped by declarative config, and each deployment traces its origin and dependencies.

Core principles:

  • Config-first: Infra is defined outside of the codebase.

  • Modular: Components are reusable, composable, and independently testable.

  • Traceable: Git-controlled intent and runtime metadata support tracing a deployment back to its configuration. Live inventory verifies actual state.

  • Environment-aware: Deployment logic adapts to the AWS account and context.

  • Separated intent and implementation: aws-config defines desired instances; aws-iac supplies reusable Terraform/Terragrunt components.

  • Dynamic dependency resolution: SSM carries configuration and runtime metadata through predictable paths.

  • Explicit boundaries: Accounts, environments, and component nicknames make targets reviewable.

  • Controlled execution: Git review records intent; IAM and deployment controls enforce authority.

  • Minimal hidden coupling: Components expose their inputs, dependencies, and runtime outputs.

These principles predate the current agent use case. Their fit with agents emerged because explicit state and predictable interfaces make infrastructure easier to reason about. See the original design principles and agent-first evolution.