pattern

Reconciliation Loop

A controller that continuously compares declared state with actual state and acts to close the gap, replacing deployment as an event with convergence as a property.

In a push model, deployment is a thing that happens: a pipeline connects to a cluster and applies a change. Anything that happens afterwards — a manual edit, a failed node, a partially applied change — is invisible until someone looks.

A reconciliation loop inverts this. A controller inside the target continuously reads the declared state from version control, observes the actual state, and acts on the difference. Deployment becomes a commit; convergence is the controller's job, and drift is corrected rather than merely detected.

Two consequences are worth stating. The pipeline no longer needs credentials into production, because nothing pushes inwards, which removes one of the most valuable targets in the estate. And manual changes are reverted rather than persisted, which is the intended behaviour and is nonetheless surprising the first time an engineer's emergency edit disappears sixty seconds later. That scenario needs a designed answer — usually a documented pause mechanism — rather than the discovery of one during an incident.