A repository can hold every infrastructure resource while production changes still happen through personal credentials and emergency console edits. Terraform is useful when it becomes the trusted change path, not when it only produces another copy of the desired state.

Define ownership before module structure

State which team changes networks, identity, shared platforms and application resources. Repository permissions, approvals and state boundaries should follow those responsibilities.

Treat state as an operational system

Protect locking, encryption, access, backup and recovery. Separate blast radius by lifecycle and ownership rather than placing an entire organization in one state file.

Make plans readable and applies controlled

Surface destructive and security-sensitive changes clearly. Apply only an approved plan from an automation identity, and preserve who approved which commit.

Bring exceptions back into code

Import existing resources in stages and document emergency console changes immediately. A declared reconciliation deadline prevents a temporary exception from becoming the permanent path.