You run terraform plan.
Nothing is created.
No API calls are made.
But Terraform still fails.
This is where most engineers misunderstand modules.
Module inputs are not optional runtime values. Terraform treats them as part of the configuration itself. If an input is missing, Terraform cannot even build the dependency graph. No graph means no execution.
This is why failures happen early.
Worse, if inputs are malformed but not validated, the failure shifts later to the cloud provider. Now the error happens during apply, increasing risk and slowing debugging.
Module inputs define the boundary between configurations. They control what enters the module and prevent unintended coupling.
If you understand this boundary, your Terraform stops behaving unpredictably.
It becomes deterministic.

