Most engineers still think Terraform executes in file order.
It does not.
Terraform builds a dependency graph.
References create edges.
Edges determine order.
If you remove a reference, you remove the edge.
When the edge disappears, Terraform can run operations in parallel.
Parallelism is safe only when the relationship is real and expressed in data.
Hardcoded strings do not create dependencies.
They look correct in code review.
They fail under concurrency.
Data sources introduce another layer of risk.
Reads happen during plan and refresh.
If the dependency is behavioral instead of data-driven, Terraform can read too early and fail.
depends_on exists for that gap.
It injects a manual edge.
It forces sequencing when no reference carries identity.
Used carefully, it prevents race conditions.
Used excessively, it serializes the graph and slows execution.
The real question is simple:
Can you point to the reference that forms the edge?
If you cannot, Terraform cannot infer the dependency.
Because infrastructure failures are rarely caused by syntax.
They are caused by missing edges.

