Skip to main content
A change made in the cloud console, by another tool, or through a formae patch can differ from a stack’s recorded desired state. Synchronization updates the inventory when it observes that change. A reconcile lets you decide what to keep. The decision is recorded in formae. You do not need a local IaC codebase to absorb out-of-band changes, and another teammate does not need to absorb the same change again in their own files.

Review the affected stack

With an assistant, ask:
What changed in production since its last reconcile?
The assistant retrieves the stack’s out-of-band changes and presents the changes that need a decision. For example, an incident patch may have increased a service’s replica count while a separate console edit changed a bucket setting. With the CLI, apply your complete stack declaration as usual:
If there are out-of-band changes that need a decision, the interactive flow stops before changing the cloud and lets you choose what to absorb or revert. Resolve every actionable item in each affected stack. You can cancel the operation instead of deciding.

Choose absorb or revert

For the incident example, tell your assistant:
Keep the increased replica count and revert the bucket change.
The assistant presents the combined simulation before submitting it. The same reconcile can include other requested work, such as adding a resource. Review the whole plan, including dependent changes and deletions. If a requested edit conflicts with an absorption choice, resolve that conflict before applying. If relevant state changes after the review, formae requires a fresh review; it does not silently apply the old choices to the new observation.
Simulation alone does not record absorption. The final reconcile must be submitted for the decision to become shared desired intent.

Confirm and inspect the outcome

You can provide a command message, accept the suggested message, or leave it empty. For example: Keep incident scaling and restore bucket configuration. Confirm the final plan, then inspect the command outcome. A command containing only absorption can finish without cloud operations. A mixed command waits for its cloud work and reports failures where they occur. Recorded intent and actual state can differ after a failed command. A later session retrieves the accepted desired state from formae. It does not need the temporary Pkl files used by the session that resolved the out-of-band changes.

Keep an optional codebase current

If the assistant is working in a maintained project, it updates that selected project after shared resolution, preserving the project’s structure and abstractions. A file conflict or missing project directory is reported separately; it does not make the centrally recorded acceptance disappear. The CLI prints extraction queries and deletion guidance for you to update the source yourself. Incorporate the relevant changes into your complete project. A resource-only extraction is not a complete stack declaration to reconcile. You can begin without a codebase and opt in later:
I want to manage my infrastructure in an IaC codebase.
See Ways to work with formae.

Choose whether to ask about future changes

After you choose to keep a change, the assistant can offer to keep future nonconflicting changes automatically. This includes changes made outside formae, intentional formae patches, and deletions. Conflicts still need your decision. The assistant shows accepted changes in the combined plan and asks before applying it. The preference is stored locally for your installation and applies across sessions and codebases on that machine. You can ask the assistant to change it at any time. Previously saved external-only preferences retain their narrower scope until you explicitly choose to include patches. Choosing to revert a change does not trigger the preference offer.

Keep emergency patches separate

A patch can address an incident without first deciding what to do about other out-of-band changes in the stack. It remains an intervention until a later reconcile accepts or reverts it. Routine changes without a maintained codebase still use full-stack reconcile through the assistant.

Revert all out-of-band changes deliberately

The existing force option is available when you intend to overwrite out-of-band changes with your declaration:
Review the simulation before applying without --simulate. This is a whole-stack reconcile, so it can affect more than the resource that first prompted you to act. Restoring configuration cannot restore destroyed cloud data. Recreating a deleted bucket, for example, does not recover its objects.

See also