ADR-0014 — Deploy Gas City strictly as configuration (zero-slop IaC)¶
- Status: Proposed
- Date: 2026-07-12 (reduced from an AI-generated research report; upstream paraphrase removed per upstream-lawbooks rule)
- Related: gas-city-adoption.md, gas-city-deployment-wiring.md, ADR-0002-runtime-capability-baseline.md
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"):
- All reusable behavior lives in packs (Bluefly packs authored in
blucity-packs), imported with pinnedversion = "sha:…"sources and a committedpacks.lock. No registry handles in committed TOML. - Provider catalogs are explicit (
[providers.<name>]withbase = "builtin:<name>"); no implicit provider defaults. - Formulas target the v2 compiler contract; roles are prompts + config, never platform code or bespoke shell frameworks.
- Deployment splits along the upstream boundary:
pack.toml(portable),city.toml(deployment),.gc/(machine-local, never committed). - 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
bluCLI 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.