Skip to content

ADR-0014 — Deploy Gas City strictly as configuration (zero-slop IaC)

Context

Gas City hardcodes zero roles: every behavior is expressed through packs, formulas, orders, and TOML configuration. Bluefly needs its deployments to be reproducible from source with no locally invented framework logic.

Decision

Bluefly deploys Gas City exclusively through declarative configuration ("zero-slop"):

  1. All reusable behavior lives in packs (Bluefly packs authored in blucity-packs), imported with pinned version = "sha:…" sources and a committed packs.lock. No registry handles in committed TOML.
  2. Provider catalogs are explicit ([providers.<name>] with base = "builtin:<name>"); no implicit provider defaults.
  3. Formulas target the v2 compiler contract; roles are prompts + config, never platform code or bespoke shell frameworks.
  4. Deployment splits along the upstream boundary: pack.toml (portable), city.toml (deployment), .gc/ (machine-local, never committed).
  5. Environment provisioning is owned by the IaC repositories (see deployment-wiring execution-authority table), not by hand-run setup.

Consequences

  • Upgrades are upstream releases plus re-pinned imports; no fork to maintain.
  • Any capability expressible as a pack/order/formula must not be implemented in the blu CLI or ad-hoc scripts (policy violation).
  • Behavior questions are answered by the official docs, never local prose: https://docs.gascity.com/ · https://github.com/gascityhall/gascity.

Authority

The Bluefly adoption contract, invariants, and verified configuration live in Engineering-Standard/integration/gas-city-adoption.md.