Limits

SchematIaC is honest about its edges. When something cannot be known or is not modelled, it says so on the canvas rather than guessing. The current list:

  • Terraform registry and git modules load once terraform init has vendored them under .terraform/modules. An unvendored registry module is a warning on its box, not an error that blocks the canvas. A Bicep registry (br:) module shows as a box with a note rather than real ports — there is no vendoring step to resolve it against.
  • A module is a box with ports — you cannot drill into one to see its internal resources yet.
  • count and for_each are not expanded: a resource with three instances is one node. A Bicep [for ...] loop resource renders as one node the same way.
  • Some functions are not evaluated — Terraform’s templatefile and cidrsubnet, and user-defined Bicep func. Rows using them read unresolved, with the reason, rather than a guess. try() and can() do evaluate.
  • Bicep canvases have no simulated workspaces — add more than one .bicepparam file, one per environment, instead.
  • Variable precedence is what is on the canvas. The last tfvars file listed wins — matching -var-file ordering — but -var, TF_VAR_* environment variables and *.auto.tfvars ordering are not modelled.
  • Editing changes existing expressions. Re-pointing references, editing values, Analyze, and copying a resource to another canvas (Terraform) is what ships; adding and deleting whole resources from scratch, and moved-block refactoring, are planned.
  • Upgrade Preview compares your used arguments to published docs. Exact terraform providers schema -json diffs, a palette of attributes you have not written yet, and Bicep API-version upgrades are planned.
  • .tf.json and .tfvars.json are not parsed.

It is not a replacement for terraform plan or an ARM what-if. Those still own the remote world. SchematIaC answers a smaller, sharper question: what on this canvas would move.

It is not an AI agent. Your agent writes and applies. SchematIaC is the ground truth that agent can ask — see MCP server.

The changelog keeps shipped and planned strictly apart. If something here is wrong, or a limit is in the way, file it at github.com/schematiac/issues.