Most developers think a breaking change in a Terraform module is just a code change.
It is not.
Terraform does not evaluate modules based on file structure.
It evaluates contracts, inputs, outputs, and state identity.
Remove an input, and Terraform fails before planning.
Change a type, and existing callers no longer validate.
Move a resource, and Terraform sees a different object unless you map it.
The most dangerous change is not syntax.
It is identity.
When Terraform loses the connection between configuration and state, it plans destruction.
Breaking changes are not about refactoring.
They are about how Terraform interprets reality.

