Plan tells you what changes. Not what it costs.
`terraform plan` is precise about infrastructure state — what gets created, changed, or destroyed. It says nothing about cost. A plan that adds a database with a larger instance class than intended, or a machine type in a pricier region, looks identical in the plan output to one that is exactly what you meant. The distinction only shows up once, weeks later, on a bill someone in finance is trying to reconcile against a budget that was set before anyone knew this resource would exist.
That gap — between what applies cleanly and what was actually intended to cost — is where most infrastructure cost surprises come from. Not from anyone trying to overspend. From cost being a later fact instead of a decision made at request time.
What moving cost earlier actually requires
Catching a cost problem before apply, rather than after the bill, needs three things a `terraform plan` on its own does not provide: a budget to compare against, a way to flag deviation from a normal spending pattern rather than just an absolute number, and someone outside engineering able to see the same picture without asking for a screen-share.
NebulaStack's FinOps module is built around those three specifically, not around a generic cost estimate. Per-environment budgets carry predictive alerts, so a budget is not just a static ceiling — it is a check against where spend is trending relative to where it is expected to land. Week-over-week cost anomaly detection catches the resource that got bigger than intended without anyone deciding it should. And multi-tenant showback — exportable as PDF for finance — means the person reconciling the bill does not need Terraform state access to understand what changed and why.
What this doesn't replace
Budgets and anomaly detection catch drift from an expected pattern. They do not replace a genuine cost review of the architecture itself. A database that is the wrong instance class from the start, chosen on purpose, will stay inside budget and never trigger an anomaly; it was simply never right to begin with. Cost visibility tells you when something changed unexpectedly. It does not tell you whether the original design decision was the right one. That is still a human call, made with better information than a monthly bill provides after the fact.