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.
Measured at commit 6157e0b4fe against ghcr.io/lex00/floci@sha256:de720c8eb557bfc87e1c2448220f4f0d880df59e170fd390bfe28c35265ee629, 2026-08-25T18:25:38Z.
The stages#
| Stage | Status | What a pass proves | |
|---|---|---|---|
| 1 | Cold deploy | active | The estate is real and buildable: the stock binary applies the unmodified configuration against the emulator, with no live block and no choudoufu involved. |
| 2 | Migrate | active | choudoufu 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. |
| 3 | Replan from nothing | active | With 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. |
| 4 | No-op apply | active | Applying the empty plan changes nothing: the estate’s tagged-object count before and after is identical. |
| 5 | Drift and reconverge | active | One 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. |
| 6 | Rename | active | Renaming a resource through a moved block and through choudoufu live-mv both produce zero churn: no destroy, no create, the marker rewritten in place. |
| 7 | Remove a block | active | Deleting a resource block destroys the object under the default policy, in an order the cloud accepts, including blocks for untaggable children whose parents stay. |
| 8 | Change count | planned | Scaling a count block down and back up destroys and creates only the instances stock would, and every surviving instance keeps its identity. |
| 9 | Replace with create_before_destroy | active | A forced replacement under create_before_destroy creates the new object, destroys the old one, and the next plan is empty with no marker collision. |
| 10 | Crash between create and destroy | planned | A 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. |
| 11 | Teardown | planned | choudoufu apply -destroy removes every object the estate owns in one apply, in an order the cloud accepts, and leaves nothing marked. |
| 12 | Plan, review, apply | planned | plan -out followed by apply <planfile> applies when the world has not moved and refuses, naming the mismatch, when it has. |
| 13 | Greenfield apply | active | Applying the same configuration from an empty account with choudoufu directly, no migration, produces the same objects stock’s cold deploy produced, plus markers. |
| 14 | Strict profile | planned | With 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#
| Estate | Set | Lane | Clear | Stages |
|---|---|---|---|---|
| corpus-alb-complete | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-autoscaling-complete | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-dynamodb-table-basic | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-ec2-instance-complete | core | terraform-popular | yes | pass pass pass pass pass pass pass pass pass |
| corpus-ecs-fargate | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-eks-basic | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-evoteum-modules | core | opentofu-native | no | pass pass pass pass pass pass pass not run pass |
| corpus-giantswarm-crossplane | core | opentofu-native | no | pass pass pass pass pass pass pass not run pass |
| corpus-hongbomiao-harbor | core | opentofu-native | no | pass pass pass pass pass pass pass not run pass |
| corpus-hongbomiao-labelbox | core | opentofu-native | no | pass pass pass pass pass pass pass not run FAIL |
| corpus-hongbomiao-storage | core | opentofu-native | no | pass pass pass pass pass pass pass not run pass |
| corpus-iam-policy | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-iam-read-only-policy | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-lambda-simple | core | terraform-popular | no | pass pass pass pass pass pass FAIL not run pass |
| corpus-leynos-monitoring | core | opentofu-native | no | pass pass pass pass pass pass pass not run pass |
| corpus-overture-tiles | core | opentofu-native | no | pass pass pass pass pass pass pass not run pass |
| corpus-rds-complete-postgres | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-s3-bucket-complete | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-security-group-complete | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-simpleinfra-dns | core | terraform-popular | no | pass pass pass pass pass FAIL pass not run pass |
| corpus-sqs-basic | core | terraform-popular | yes | pass pass pass pass pass pass pass pass pass |
| corpus-sumaform-aws | core | opentofu-native | no | pass pass pass pass pass pass pass not run FAIL |
| corpus-vpc-complete | core | terraform-popular | no | pass pass pass pass pass pass pass not run pass |
| corpus-xancloud-iac | core | opentofu-native | no | pass pass pass pass pass pass pass not run pass |
| reference-ec2-vpc | core | reference | no | pass pass pass pass pass pass pass not run pass |
| corpus-mastino-dns | growing | published-deployment | no | pass pass pass pass pass pass pass not run pass |
To add an estate, see Add an estate.