Two numbers, both read from the same artifact the test suite writes. An estate is a real OpenTofu or Terraform configuration, pinned by commit, run through every active stage below side by side with stock OpenTofu against the pinned emulator. It is clear when every active stage passes.

Core estates
2 of 25 estates behave like OpenTofu
  • Cold deploy: 25 pass, 0 fail, 0 not run
  • Migrate: 25 pass, 0 fail, 0 not run
  • Replan from nothing: 25 pass, 0 fail, 0 not run
  • No-op apply: 25 pass, 0 fail, 0 not run
  • Drift and reconverge: 25 pass, 0 fail, 0 not run
  • Rename: 24 pass, 1 fail, 0 not run
  • Remove a block: 24 pass, 1 fail, 0 not run
  • Replace with create_before_destroy: 2 pass, 0 fail, 23 not run
  • Greenfield apply: 23 pass, 2 fail, 0 not run
All estates
2 of 26 estates behave like OpenTofu
  • Cold deploy: 26 pass, 0 fail, 0 not run
  • Migrate: 26 pass, 0 fail, 0 not run
  • Replan from nothing: 26 pass, 0 fail, 0 not run
  • No-op apply: 26 pass, 0 fail, 0 not run
  • Drift and reconverge: 26 pass, 0 fail, 0 not run
  • Rename: 25 pass, 1 fail, 0 not run
  • Remove a block: 25 pass, 1 fail, 0 not run
  • Replace with create_before_destroy: 2 pass, 0 fail, 24 not run
  • Greenfield apply: 24 pass, 2 fail, 0 not run

As of commit 6157e0b4fee76a8d98494a0d9b7eab8fd4bfeaa8, generated 2026-08-25T18:25:38Z.

Measured at commit 6157e0b4fe against ghcr.io/lex00/floci@sha256:de720c8eb557bfc87e1c2448220f4f0d880df59e170fd390bfe28c35265ee629, 2026-08-25T18:25:38Z.

The stages#

StageStatusWhat a pass proves
1Cold deployactiveThe estate is real and buildable: the stock binary applies the unmodified configuration against the emulator, with no live block and no choudoufu involved.
2Migrateactivechoudoufu live-import -approve against the stock state file binds every instance: each state entry becomes a marker on the resource, a record, or an identity derived from the declaration, and the summary line reports zero skipped.
3Replan from nothingactiveWith the state file deleted, choudoufu live-plan is empty, and a representative set of rendered identities equals what the AWS CLI reports for the same objects.
4No-op applyactiveApplying the empty plan changes nothing: the estate’s tagged-object count before and after is identical.
5Drift and reconvergeactiveOne live object is mutated out of band through the AWS CLI; the next plan proposes fixing exactly that object and nothing else, and apply reconverges it.
6RenameactiveRenaming a resource through a moved block and through choudoufu live-mv both produce zero churn: no destroy, no create, the marker rewritten in place.
7Remove a blockactiveDeleting a resource block destroys the object under the default policy, in an order the cloud accepts, including blocks for untaggable children whose parents stay.
8Change countplannedScaling a count block down and back up destroys and creates only the instances stock would, and every surviving instance keeps its identity.
9Replace with create_before_destroyactiveA forced replacement under create_before_destroy creates the new object, destroys the old one, and the next plan is empty with no marker collision.
10Crash between create and destroyplannedA replace interrupted after the create and before the destroy is recovered by the next plan without a human: the old object is destroyed, the new one is bound.
11Teardownplannedchoudoufu apply -destroy removes every object the estate owns in one apply, in an order the cloud accepts, and leaves nothing marked.
12Plan, review, applyplannedplan -out followed by apply <planfile> applies when the world has not moved and refuses, naming the mismatch, when it has.
13Greenfield applyactiveApplying the same configuration from an empty account with choudoufu directly, no migration, produces the same objects stock’s cold deploy produced, plus markers.
14Strict profileplannedWith every strict toggle on, the estate is refused for exactly the things the toggles name (secrets stored, markers unrepaired, and so on) with the documented message, and for nothing else.

Planned stages are listed so the target is visible. They do not count toward clear until they are activated, and activating one lowers the bars until the estates catch up. The full definition of every stage, including what stock’s answer is and how each check is proven non-vacuous, is live/GAUNTLET.md.

The estates#

EstateSetLaneClearStages
corpus-alb-completecoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-autoscaling-completecoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-dynamodb-table-basiccoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-ec2-instance-completecoreterraform-popularyespass pass pass pass pass pass pass pass pass
corpus-ecs-fargatecoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-eks-basiccoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-evoteum-modulescoreopentofu-nativenopass pass pass pass pass pass pass not run pass
corpus-giantswarm-crossplanecoreopentofu-nativenopass pass pass pass pass pass pass not run pass
corpus-hongbomiao-harborcoreopentofu-nativenopass pass pass pass pass pass pass not run pass
corpus-hongbomiao-labelboxcoreopentofu-nativenopass pass pass pass pass pass pass not run FAIL
corpus-hongbomiao-storagecoreopentofu-nativenopass pass pass pass pass pass pass not run pass
corpus-iam-policycoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-iam-read-only-policycoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-lambda-simplecoreterraform-popularnopass pass pass pass pass pass FAIL not run pass
corpus-leynos-monitoringcoreopentofu-nativenopass pass pass pass pass pass pass not run pass
corpus-overture-tilescoreopentofu-nativenopass pass pass pass pass pass pass not run pass
corpus-rds-complete-postgrescoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-s3-bucket-completecoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-security-group-completecoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-simpleinfra-dnscoreterraform-popularnopass pass pass pass pass FAIL pass not run pass
corpus-sqs-basiccoreterraform-popularyespass pass pass pass pass pass pass pass pass
corpus-sumaform-awscoreopentofu-nativenopass pass pass pass pass pass pass not run FAIL
corpus-vpc-completecoreterraform-popularnopass pass pass pass pass pass pass not run pass
corpus-xancloud-iaccoreopentofu-nativenopass pass pass pass pass pass pass not run pass
reference-ec2-vpccorereferencenopass pass pass pass pass pass pass not run pass
corpus-mastino-dnsgrowingpublished-deploymentnopass pass pass pass pass pass pass not run pass

To add an estate, see Add an estate.