Reconciliation
Reconcile and apply are chant’s two reconciliation directions — cloud→code and code→cloud — each exposed as an Op composite. Both sit on the same dial as observe, chosen per environment. This page covers the dial as configuration and when to reach for each position. For the ReconcileOp / ApplyOp commands and flags, see Reconciling Lifecycle.
The dial as configuration
Section titled “The dial as configuration”The same project can sit at different positions per environment:
| Environment | Position | What runs |
|---|---|---|
dev | observe | chant lifecycle diff --live in CI; no reconciliation |
staging | reconcile | ReconcileOp opens PRs when staging drifts |
prod | authoritative | ApplyOp with delete: "gated" behind approval |
Nothing forces an environment past the position you chose for it. Turn the dial up as trust and tooling allow.
The position is not a config field. environments in chant.config.ts is just a list of names — there is no model or dial setting on an environment. You choose the position by which verb you run against it: chant lifecycle diff --live for observe, a ReconcileOp for reconcile, an ApplyOp for apply. An environment sits at observe until a reconcile or apply Op is wired to it and run. To pin a position, control what exists and what runs — put lifecycle diff --live in dev’s CI and commit no apply Op for dev, and dev stays observe-only by construction. There is no global switch to flip, which is why nothing can force an environment past where you left it.
When to pick each
Section titled “When to pick each”- Observe when the cloud is changed by other tools you don’t want to fight, and you just need visibility.
- Reconcile when source should track reality and humans should review each adoption — the default for shared or partially-managed environments.
- Apply when source is authoritative and you want the cloud reconciled to it, with deletes limited to what chant owns. Gate it in production.
See also
Section titled “See also”- Reconciling Lifecycle — the
ReconcileOp/ApplyOpcommands and flags - Lifecycle Models — the three axes and the dial
- Live Import — the cloud→code regeneration the reconcile workflow uses
- Durable Workflows — why gated apply wants Temporal
lifecycle-reconcile-awsexample — the whole loop on a real stack: deploy → drift → diff → reconcile / apply