See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
Cloud drift: code against reality
Cloud drift is real infrastructure no longer matching the configuration that created it. Somebody resized an instance during an incident, an autoscaler changed a setting, a second automation touched the same resource, or a resource was created by hand and nothing manages it at all.
Detecting it requires comparing against the cloud, which means state and provider calls. The cheapest detector is terraform plan with -detailed-exitcode on a schedule: it returns 0 for an empty diff, 1 for an error, and 2 when the plan contains changes, so a scheduled job that alerts on 2 costs nothing to build. HCP Terraform packages the same idea as health assessments on its Standard and Premium editions, which compare real infrastructure against the configuration on a schedule. Scanners in the driftctl family go further and look for resources in the account that no configuration manages, which plan by design cannot see, though driftctl itself now describes its project as being in maintenance mode.
No parser can do any of this. Reading .tf files tells you what apply would make true, not what is currently true, and any tool claiming to detect infrastructure drift from source alone is describing something else.
Documentation drift: docs against code
The second drift is the one that quietly costs more, because it degrades every decision made from the diagram. The architecture changed in March, the picture in the wiki did not, and nobody can tell by looking. Unlike cloud drift, this one is fully detectable from source, because both sides of the comparison are files.
Datadef makes the comparison structural rather than textual. Each sync hashes the parsed draw plan, meaning the curated set of nodes, zones, counts, and edges that actually feed the diagram, into a short structure fingerprint. There are two skip points: a head commit that has not moved is never fetched at all, and a commit that moved without changing the fingerprint is fetched and parsed but stops before generation. A commit that adds a module, rewires two of them, or introduces a database changes the fingerprint and redraws.
The useful side effect is a clean signal. The regeneration history of a synced project is a log of when the architecture actually changed, filtered free of the formatting commits and dependency bumps that make git history useless for that question.
commit sha fingerprint sync fix typo in variable docs moved unchanged skipped bump provider patch version moved unchanged skipped add module "redis" moved changed regenerated move subnet to another VNet moved changed regenerated
FAQ
Does Datadef detect infrastructure drift?
What is the difference between infrastructure drift and documentation drift?
How does a synced diagram know the architecture changed?
Can a diagram show resources that exist in the cloud but not in the code?
What is the cheapest way to detect cloud drift?