<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>choudoufu</title><link>https://intentius.io/choudoufu/</link><description>Recent content on choudoufu</description><generator>Hugo</generator><language>en</language><atom:link href="https://intentius.io/choudoufu/index.xml" rel="self" type="application/rss+xml"/><item><title>Compatibility reference</title><link>https://intentius.io/choudoufu/docs/use/compatibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/compatibility/</guid><description>&lt;h1 id="compatibility-reference"&gt;Compatibility reference&lt;a class="anchor" href="#compatibility-reference"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;What choudoufu admits and refuses: the provider and resource types, how a&#10;configuration must be written, and how it may be run.&lt;/p&gt;&#10;&lt;p&gt;This is the enumerated list. For why static evaluability is the rule behind&#10;most of it, see &lt;a href="https://intentius.io/choudoufu/docs/model/identity/"&gt;Identity&lt;/a&gt;. To check&#10;your own configuration against this list, see &lt;a href="https://intentius.io/choudoufu/docs/use/check-a-config/"&gt;How to check a configuration&#10;before migrating&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="your-provider"&gt;Your provider&lt;a class="anchor" href="#your-provider"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;AWS only. Every &lt;code&gt;google_*&lt;/code&gt;, &lt;code&gt;azurerm_*&lt;/code&gt;, &lt;code&gt;kubernetes_*&lt;/code&gt; and &lt;code&gt;helm_*&lt;/code&gt; resource&#10;is refused. There is no second cloud on the roadmap&#10;(&lt;a href="https://github.com/INTENTIUS/choudoufu/issues/5"&gt;#5&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>How to check a configuration before migrating</title><link>https://intentius.io/choudoufu/docs/use/check-a-config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/check-a-config/</guid><description>&lt;h1 id="how-to-check-a-configuration-before-migrating"&gt;How to check a configuration before migrating&lt;a class="anchor" href="#how-to-check-a-configuration-before-migrating"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Run &lt;code&gt;choudoufu live-check&lt;/code&gt; against any OpenTofu configuration:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;choudoufu live-check ./&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Point it at any OpenTofu configuration. No &lt;code&gt;live&lt;/code&gt; block, no cloud calls, no&#10;requirement that the directory has heard of this fork. It prints a verdict,&#10;then every refusal that fired with its site count, the types responsible, and&#10;what to do about each.&lt;/p&gt;&#10;&lt;p&gt;Run &lt;code&gt;choudoufu init&lt;/code&gt; first if you can. With provider schemas available it&#10;judges types from the provider&amp;rsquo;s own identity schema as well as the built-in&#10;table, and admits more. Without them it says the answer is pessimistic.&lt;/p&gt;</description></item><item><title>How to scope a role to an estate</title><link>https://intentius.io/choudoufu/docs/governance/scope-a-role/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/governance/scope-a-role/</guid><description>&lt;h1 id="how-to-scope-a-role-to-an-estate"&gt;How to scope a role to an estate&lt;a class="anchor" href="#how-to-scope-a-role-to-an-estate"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="the-whole-estate"&gt;The whole estate&lt;a class="anchor" href="#the-whole-estate"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Two statements, because creating and mutating are conditioned by different&#10;keys.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Version&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2012-10-17&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Statement&amp;#34;&lt;/span&gt;: [&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Sid&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;MutateOnlyThisEstate&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Effect&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Allow&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Action&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;ec2:CreateTags&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;ec2:DeleteTags&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;ec2:TerminateInstances&amp;#34;&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Resource&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Condition&amp;#34;&lt;/span&gt;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;StringEquals&amp;#34;&lt;/span&gt;: {&lt;span style="color:#f92672"&gt;&amp;#34;aws:ResourceTag/tofu-estate&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;prod-networking&amp;#34;&lt;/span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Sid&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;CreateOnlyIntoThisEstate&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Effect&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Allow&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Action&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;ec2:RunInstances&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;ec2:CreateTags&amp;#34;&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Resource&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Condition&amp;#34;&lt;/span&gt;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;StringEquals&amp;#34;&lt;/span&gt;: {&lt;span style="color:#f92672"&gt;&amp;#34;aws:RequestTag/tofu-estate&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;prod-networking&amp;#34;&lt;/span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;aws:ResourceTag&lt;/code&gt; reads a tag off a resource that already exists,&#10;so it governs everything the estate acts on. It cannot govern a create, because&#10;no resource exists yet to carry the tag. What the creating principal supplies is&#10;&lt;code&gt;aws:RequestTag&lt;/code&gt;, and conditioning on that is what makes the second&#10;statement a grant to create into this estate rather than a grant to create&#10;anything.&lt;/p&gt;</description></item><item><title>Identity</title><link>https://intentius.io/choudoufu/docs/model/identity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/model/identity/</guid><description>&lt;h1 id="identity"&gt;Identity&lt;a class="anchor" href="#identity"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Which real resource a configuration address refers to. AWS already knows this,&#10;once you tell it.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://intentius.io/choudoufu/diagram-identity.svg" alt="How a plan binds a configuration address to a live resource" loading="lazy"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Two tags, written as the resource is created.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;tofu-estate = prod-networking&#10;tofu-address = aws_vpc.main&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That pair is the entire ownership contract. Any tool that can write two tags&#10;can adopt a resource. Any tool that can read them can tell you what an estate&#10;contains.&lt;/p&gt;</description></item><item><title>Tutorial: see markers work</title><link>https://intentius.io/choudoufu/docs/tutorial/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/tutorial/</guid><description>&lt;h1 id="tutorial-see-markers-work"&gt;Tutorial: see markers work&lt;a class="anchor" href="#tutorial-see-markers-work"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;In about two minutes, a real VPC, subnet, security group, S3 bucket and log&#10;group will exist inside a local AWS emulator. choudoufu will build them,&#10;delete its own state file, and rebuild its bookkeeping from nothing but two&#10;tags read straight off those live resources. Then it will drift three of them&#10;behind its own back, out of band, and correct exactly what drifted and&#10;nothing else. Every claim in this walkthrough is checked by the same run, not&#10;described after the fact.&lt;/p&gt;</description></item><item><title>How to stop a staging role reaching production</title><link>https://intentius.io/choudoufu/docs/governance/blast-radius/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/governance/blast-radius/</guid><description>&lt;h1 id="how-to-stop-a-staging-role-reaching-production"&gt;How to stop a staging role reaching production&lt;a class="anchor" href="#how-to-stop-a-staging-role-reaching-production"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Pointing a staging configuration at a production account is a familiar outage.&#10;Nothing structurally prevents it today, because it is the same principal making&#10;the same API calls either way. IAM has nothing to tell the two runs apart.&lt;/p&gt;&#10;&lt;p&gt;Markers give it something to tell them apart by.&lt;/p&gt;&#10;&lt;h2 id="the-policy"&gt;The policy&lt;a class="anchor" href="#the-policy"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Attach this to the role your staging runs use.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Sid&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;NeverMutateAnotherEstate&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Effect&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Deny&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Action&amp;#34;&lt;/span&gt;: [&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;ec2:TerminateInstances&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;ec2:DeleteSubnet&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;ec2:DeleteVpc&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;rds:DeleteDBInstance&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Resource&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;Condition&amp;#34;&lt;/span&gt;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;StringNotEquals&amp;#34;&lt;/span&gt;: {&lt;span style="color:#f92672"&gt;&amp;#34;aws:ResourceTag/tofu-estate&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;staging&amp;#34;&lt;/span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A mistake now fails at the cloud rather than at review. The guardrail sits&#10;below the tool, so it holds whatever the tool was pointed at, whatever&#10;directory someone was standing in, and whatever the plan said.&lt;/p&gt;</description></item><item><title>Migrate an existing estate</title><link>https://intentius.io/choudoufu/docs/use/migrate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/migrate/</guid><description>&lt;h1 id="migrate-an-existing-estate"&gt;Migrate an existing estate&lt;a class="anchor" href="#migrate-an-existing-estate"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Most people arrive here, with an OpenTofu configuration already managing live&#10;AWS resources.&lt;/p&gt;&#10;&lt;p&gt;Migrating means binding those resources to your configuration, one marker at a&#10;time, until each carries its own ownership record. It does not happen&#10;automatically and the failure mode is quiet.&lt;/p&gt;&#10;&lt;blockquote class="book-hint warning" &gt;&#10;&lt;p&gt;Turning on live markers does not bind resources you already manage. A resource&#10;with no marker is not yours yet, so the first plan reads it as absent and&#10;proposes a second one beside it. Applying that plan does not fail. It creates&#10;the duplicate.&lt;/p&gt;</description></item><item><title>Values</title><link>https://intentius.io/choudoufu/docs/model/values/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/model/values/</guid><description>&lt;h1 id="values"&gt;Values&lt;a class="anchor" href="#values"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Most resources need nothing here. A resource with a cloud twin recovers its&#10;values by reading the live object, the same way it recovers its identity.&lt;/p&gt;&#10;&lt;p&gt;The exceptions are resources with no twin at all. Nothing in AWS knows a&#10;&lt;code&gt;null_resource&lt;/code&gt; ran a script, a &lt;code&gt;time_static&lt;/code&gt; captured a timestamp, or a&#10;&lt;code&gt;random_pet&lt;/code&gt; generated a name.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://intentius.io/choudoufu/diagram-values.svg" alt="Which resources need a record store, and which do not" loading="lazy"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Those persist as one small record each. Declare a store and they are admitted.&#10;Without one they are refused.&lt;/p&gt;</description></item><item><title>Day-2 operations</title><link>https://intentius.io/choudoufu/docs/use/day2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/day2/</guid><description>&lt;h1 id="day-2-operations"&gt;Day-2 operations&lt;a class="anchor" href="#day-2-operations"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Running an estate after the first apply. Renaming, removing, recording effects&#10;the cloud cannot report, and working with other people.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Task&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Page&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename a resource&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://intentius.io/choudoufu/docs/use/rename-a-resource/"&gt;How to rename a resource&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stop managing or destroy a resource&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://intentius.io/choudoufu/docs/use/remove-a-resource/"&gt;How to stop managing or destroy a resource&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Record an effect the cloud cannot report&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://intentius.io/choudoufu/docs/use/record-an-effect/"&gt;How to record an effect the cloud cannot report&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Look up what a &lt;code&gt;policy&lt;/code&gt; setting does&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://intentius.io/choudoufu/docs/use/ownership-policy/"&gt;The ownership policy matrix&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Understand what happens when two runs overlap&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://intentius.io/choudoufu/docs/model/concurrency/"&gt;Two runs at once&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="sharing-values-between-estates"&gt;Sharing values between estates&lt;a class="anchor" href="#sharing-values-between-estates"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;There is no remote state to read. &lt;code&gt;live/OUTPUTS.md&lt;/code&gt; covers the cross-estate&#10;pattern, and &lt;code&gt;data &amp;quot;terraform_remote_state&amp;quot;&lt;/code&gt; is refused.&lt;/p&gt;</description></item><item><title>Effects</title><link>https://intentius.io/choudoufu/docs/model/effects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/model/effects/</guid><description>&lt;h1 id="effects"&gt;Effects&lt;a class="anchor" href="#effects"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;A migration that ran. A cache that was invalidated. A notification that was&#10;sent. None of them leaves anything in the cloud to read back, so no plan can&#10;tell you whether it already happened.&lt;/p&gt;&#10;&lt;p&gt;A receipt is how you make it visible.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://intentius.io/choudoufu/diagram-effects.svg" alt="A receipt makes an invisible effect visible in the plan" loading="lazy"&gt;&#10;&lt;/p&gt;&#10;&lt;h2 id="what-a-receipt-is"&gt;What a receipt is&lt;a class="anchor" href="#what-a-receipt-is"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;An ordinary resource you declare, by convention an SSM parameter at&#10;&lt;code&gt;/tofu-receipts/&amp;lt;estate&amp;gt;/&amp;lt;effect&amp;gt;&lt;/code&gt; holding a hash of the effect&amp;rsquo;s input.&lt;/p&gt;</description></item><item><title>How to cover every team with one policy</title><link>https://intentius.io/choudoufu/docs/governance/abac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/governance/abac/</guid><description>&lt;h1 id="how-to-cover-every-team-with-one-policy"&gt;How to cover every team with one policy&lt;a class="anchor" href="#how-to-cover-every-team-with-one-policy"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;This is attribute-based access control, ABAC, applied to the resources your&#10;configuration manages.&lt;/p&gt;&#10;&lt;p&gt;A policy per team is a policy set that grows with the org chart and drifts&#10;between its members. ABAC exists to avoid that, and it needs an attribute on&#10;the resource to match against. Markers are one, written on every resource the&#10;estate manages rather than applied by a convention someone has to remember.&lt;/p&gt;</description></item><item><title>How to deny creating anything unowned</title><link>https://intentius.io/choudoufu/docs/governance/unowned/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/governance/unowned/</guid><description>&lt;h1 id="how-to-deny-creating-anything-unowned"&gt;How to deny creating anything unowned&lt;a class="anchor" href="#how-to-deny-creating-anything-unowned"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Tag compliance is normally retroactive. A scanner finds untagged resources, a&#10;ticket asks someone to explain them, and the backlog never empties because new&#10;ones arrive faster than old ones are resolved.&lt;/p&gt;&#10;&lt;p&gt;Conditioning creation inverts it. Ownership stops being something a resource&#10;acquires later and becomes a precondition of existing.&lt;/p&gt;&#10;&lt;h2 id="the-policy"&gt;The policy&lt;a class="anchor" href="#the-policy"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;As a service control policy, applied to the accounts that hold estates.&lt;/p&gt;</description></item><item><title>How to rename a resource</title><link>https://intentius.io/choudoufu/docs/use/rename-a-resource/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/rename-a-resource/</guid><description>&lt;h1 id="how-to-rename-a-resource"&gt;How to rename a resource&lt;a class="anchor" href="#how-to-rename-a-resource"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Rename the resource block, then rewrite the marker.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;choudoufu live-mv aws_vpc.old aws_vpc.new&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That rewrites the &lt;code&gt;tofu-address&lt;/code&gt; tag on the live resource carrying the old&#10;address. The tag write is the move, so &lt;code&gt;moved&lt;/code&gt; blocks are refused. Resources&#10;never adopted are left alone.&lt;/p&gt;&#10;&lt;p&gt;A destination address absent from your configuration is refused unless you pass&#10;&lt;code&gt;-allow-missing-config&lt;/code&gt;. &lt;code&gt;-dry-run&lt;/code&gt; shows what it would write. Full options in&#10;&lt;code&gt;choudoufu live-mv -help&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Start a new estate</title><link>https://intentius.io/choudoufu/docs/use/start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/start/</guid><description>&lt;h1 id="start-a-new-estate"&gt;Start a new estate&lt;a class="anchor" href="#start-a-new-estate"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;For an estate with nothing in it yet, where choudoufu creates every resource.&lt;/p&gt;&#10;&lt;p&gt;If AWS already holds resources this configuration should manage, read&#10;&lt;a href="https://intentius.io/choudoufu/docs/use/migrate/"&gt;Migrate an existing estate&lt;/a&gt; first. Nothing binds a live resource&#10;to your configuration until its markers are on it, so applying against unmarked&#10;resources creates a second copy beside them.&lt;/p&gt;&#10;&lt;h2 id="install"&gt;Install&lt;a class="anchor" href="#install"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Every &lt;a href="https://github.com/INTENTIUS/choudoufu/releases"&gt;tagged release&lt;/a&gt; carries&#10;prebuilt binaries for macOS, Linux and Windows on amd64 and arm64, plus a&#10;&lt;code&gt;SHA256SUMS&lt;/code&gt; file.&lt;/p&gt;</description></item><item><title>Two runs at once</title><link>https://intentius.io/choudoufu/docs/model/concurrency/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/model/concurrency/</guid><description>&lt;h1 id="two-runs-at-once"&gt;Two runs at once&lt;a class="anchor" href="#two-runs-at-once"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Ownership lives on the resources themselves, and records settle concurrent&#10;writes by conditional write. Two simultaneous applies against one estate&#10;resolve one of four ways.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Race&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Outcome&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Two creates of the same client-named resource&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The cloud&amp;rsquo;s uniqueness constraint rejects the second. The loser re-plans, binds to the winner&amp;rsquo;s resource, and comes back clean.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Two creates of the same server-assigned resource&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Both are created. The next plan reports a marker collision naming both live IDs and refuses rather than guessing. A human deletes one.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Divergent in-place updates&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Last writer wins at the API. The next plan reads the live system and converges.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;An update racing a destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The loser gets not-found, re-plans, and converges.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;No race orphans a resource silently. Each case is a clean re-plan or a named&#10;collision.&lt;/p&gt;</description></item><item><title>Questions</title><link>https://intentius.io/choudoufu/docs/use/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/faq/</guid><description>&lt;h1 id="questions"&gt;Questions&lt;a class="anchor" href="#questions"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Two questions with no other home. Everything else that used to live on this&#10;page has a real page now: what changes for you is in &lt;a href="https://intentius.io/choudoufu/docs/model/"&gt;The three&#10;pieces&lt;/a&gt;, self-service tagging and IAM in&#10;&lt;a href="https://intentius.io/choudoufu/docs/governance/"&gt;Scoping a role&lt;/a&gt;, storage in &lt;a href="https://intentius.io/choudoufu/docs/use/storage/"&gt;Where things&#10;are stored&lt;/a&gt;, migration in &lt;a href="https://intentius.io/choudoufu/docs/use/migrate/"&gt;Migrate an&#10;existing estate&lt;/a&gt;, marker stripping in&#10;&lt;a href="https://intentius.io/choudoufu/docs/model/identity/"&gt;Identity&lt;/a&gt;, and concurrent applies in&#10;&lt;a href="https://intentius.io/choudoufu/docs/model/concurrency/"&gt;Two runs at once&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="why-is-it-called-choudoufu"&gt;Why is it called choudoufu?&lt;a class="anchor" href="#why-is-it-called-choudoufu"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Stinky tofu. Off-putting at first, and people who like it like it a lot.&lt;/p&gt;</description></item><item><title>Where AWS honours the condition</title><link>https://intentius.io/choudoufu/docs/governance/reach/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/governance/reach/</guid><description>&lt;h1 id="where-aws-honours-the-condition"&gt;Where AWS honours the condition&lt;a class="anchor" href="#where-aws-honours-the-condition"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="where-the-key-is-confirmed"&gt;Where the key is confirmed&lt;a class="anchor" href="#where-the-key-is-confirmed"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;17 of 180 services in AWS&amp;rsquo;s Service&#10;Authorization Reference name &lt;code&gt;aws:ResourceTag&lt;/code&gt; on their tagging&#10;action. That is a lower bound. The reference is authoritative about what it&#10;names and silent about what it omits, and AWS documents tag-based&#10;authorization for services it says nothing about, Lambda among them.&lt;/p&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Service&lt;/th&gt;&lt;th&gt;IAM prefix&lt;/th&gt;&lt;th&gt;Actions naming it&lt;/th&gt;&lt;th&gt;Of total&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;EC2&lt;/td&gt;&lt;td&gt;&lt;code&gt;ec2&lt;/code&gt;&lt;/td&gt;&lt;td&gt;495&lt;/td&gt;&lt;td&gt;793&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;ResilienceHub&lt;/td&gt;&lt;td&gt;&lt;code&gt;resiliencehub&lt;/code&gt;&lt;/td&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;128&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;SES&lt;/td&gt;&lt;td&gt;&lt;code&gt;ses&lt;/code&gt;&lt;/td&gt;&lt;td&gt;48&lt;/td&gt;&lt;td&gt;228&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;AutoScaling&lt;/td&gt;&lt;td&gt;&lt;code&gt;autoscaling&lt;/code&gt;&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;td&gt;68&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;ECS&lt;/td&gt;&lt;td&gt;&lt;code&gt;ecs&lt;/code&gt;&lt;/td&gt;&lt;td&gt;37&lt;/td&gt;&lt;td&gt;81&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Kinesis&lt;/td&gt;&lt;td&gt;&lt;code&gt;kinesis&lt;/code&gt;&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;40&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;CertificateManager&lt;/td&gt;&lt;td&gt;&lt;code&gt;acm&lt;/code&gt;&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;CleanRooms&lt;/td&gt;&lt;td&gt;&lt;code&gt;cleanrooms&lt;/code&gt;&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;107&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;ElastiCache&lt;/td&gt;&lt;td&gt;&lt;code&gt;elasticache&lt;/code&gt;&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;77&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;CloudWatch&lt;/td&gt;&lt;td&gt;&lt;code&gt;cloudwatch&lt;/code&gt;&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;67&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;SageMaker&lt;/td&gt;&lt;td&gt;&lt;code&gt;sagemaker&lt;/code&gt;&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;444&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;WorkSpaces&lt;/td&gt;&lt;td&gt;&lt;code&gt;workspaces&lt;/code&gt;&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;101&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;KafkaConnect&lt;/td&gt;&lt;td&gt;&lt;code&gt;kafkaconnect&lt;/code&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;AuditManager&lt;/td&gt;&lt;td&gt;&lt;code&gt;auditmanager&lt;/code&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;62&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Batch&lt;/td&gt;&lt;td&gt;&lt;code&gt;batch&lt;/code&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;CUR&lt;/td&gt;&lt;td&gt;&lt;code&gt;cur&lt;/code&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;SSMQuickSetup&lt;/td&gt;&lt;td&gt;&lt;code&gt;ssm-quicksetup&lt;/code&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="services-with-no-verdict"&gt;Services with no verdict&lt;a class="anchor" href="#services-with-no-verdict"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The reference states nothing either way for these. Check them against AWS&amp;rsquo;s&#10;own IAM documentation and test the policy. This is not a list of services where&#10;scoping fails.&lt;/p&gt;</description></item><item><title>How to stop managing or destroy a resource</title><link>https://intentius.io/choudoufu/docs/use/remove-a-resource/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/remove-a-resource/</guid><description>&lt;h1 id="how-to-stop-managing-or-destroy-a-resource"&gt;How to stop managing or destroy a resource&lt;a class="anchor" href="#how-to-stop-managing-or-destroy-a-resource"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Deleting a resource block leaves its marker on the live object, and the sweep&#10;destroys a marked, undeclared, taggable resource on the next plan. That matches&#10;upstream without a &lt;code&gt;removed&lt;/code&gt; block.&lt;/p&gt;&#10;&lt;p&gt;To stop managing something without destroying it, change what happens to a&#10;resource you no longer declare.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-hcl" data-lang="hcl"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# estate.chdf.hcl&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;estate &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;my-estate&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;policy&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; undeclared_tagged &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;untag&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;untag&lt;/code&gt; removes this estate&amp;rsquo;s marker and leaves the resource running. &lt;code&gt;keep&lt;/code&gt;&#10;leaves both alone. &lt;a href="https://intentius.io/choudoufu/docs/use/ownership-policy/"&gt;The ownership policy matrix&lt;/a&gt;&#10;has the rest of the verbs.&lt;/p&gt;</description></item><item><title>How to write markers inside a for_each'd module</title><link>https://intentius.io/choudoufu/docs/use/keyed-modules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/keyed-modules/</guid><description>&lt;h1 id="how-to-write-markers-inside-a-for_eachd-module"&gt;How to write markers inside a for_each&amp;rsquo;d module&lt;a class="anchor" href="#how-to-write-markers-inside-a-for_eachd-module"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Instances of a &lt;code&gt;for_each&lt;/code&gt;&amp;rsquo;d module share one HCL body for &lt;code&gt;tags&lt;/code&gt;, so no single&#10;literal address is correct for all of them and auto-stamping cannot reach&#10;inside. choudoufu leaves such a resource alone when it already declares&#10;&lt;code&gt;tags&lt;/code&gt;, and raises a must-stamp error when it declares none and its type needs&#10;discovery.&lt;/p&gt;&#10;&lt;p&gt;Thread the module&amp;rsquo;s own &lt;code&gt;each.key&lt;/code&gt; through and build the address from it.&lt;/p&gt;</description></item><item><title>How to record an effect the cloud cannot report</title><link>https://intentius.io/choudoufu/docs/use/record-an-effect/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/record-an-effect/</guid><description>&lt;h1 id="how-to-record-an-effect-the-cloud-cannot-report"&gt;How to record an effect the cloud cannot report&lt;a class="anchor" href="#how-to-record-an-effect-the-cloud-cannot-report"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Nothing in the live system records that a database migration, a script, or a&#10;one-shot API call happened, so no marker reads back.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;null_resource&lt;/code&gt;, &lt;code&gt;terraform_data&lt;/code&gt;, &lt;code&gt;time_*&lt;/code&gt; and non-secret &lt;code&gt;random_*&lt;/code&gt; work once&#10;the live configuration declares a &lt;code&gt;record_store&lt;/code&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-hcl" data-lang="hcl"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# estate.chdf.hcl&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;estate &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;my-estate&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;record_store&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;ssm&amp;#34;&lt;/span&gt; {}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The label picks the backend, one of &lt;code&gt;local&lt;/code&gt;, &lt;code&gt;ssm&lt;/code&gt; or &lt;code&gt;s3&lt;/code&gt;.&#10;&lt;a href="https://intentius.io/choudoufu/docs/use/storage/"&gt;Where things are stored&lt;/a&gt; has &amp;ldquo;Choosing a&#10;record store backend&amp;rdquo; for which one to pick, what each holds, and why a&#10;receipt must not go in there. Those resources then run the stock provider&#10;lifecycle exactly as upstream.&lt;/p&gt;</description></item><item><title>Where things are stored</title><link>https://intentius.io/choudoufu/docs/use/storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/storage/</guid><description>&lt;h1 id="where-things-are-stored"&gt;Where things are stored&lt;a class="anchor" href="#where-things-are-stored"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;choudoufu writes in three places. Two can both end up as SSM parameters, which&#10;is why they get confused. They do different jobs and have different owners.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;What&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Where it lives&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Who reads it&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Losing it costs&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ownership markers&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Two tags on the resource itself&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu, and you, with any cloud tool&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The resource goes invisible and the next plan proposes a duplicate&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Micro-state records&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;A local directory beside the module unless you declare a &lt;code&gt;record_store&lt;/code&gt; on SSM or S3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu only&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Churn, since the effect re-runs or its value regenerates&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Receipts&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ordinary resources &lt;em&gt;you&lt;/em&gt; declare, by convention SSM parameters&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;You, your reviewers, your incident responder&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Nothing structural. It is your data, in your configuration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;The first is the product. The second is plumbing that is there by default and&#10;that you point somewhere else when a team needs to share it. The third you&#10;write yourself, and choudoufu only lints it.&lt;/p&gt;</description></item><item><title>How the compatibility numbers are measured</title><link>https://intentius.io/choudoufu/docs/use/measurement/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/measurement/</guid><description>&lt;h1 id="how-the-compatibility-numbers-are-measured"&gt;How the compatibility numbers are measured&lt;a class="anchor" href="#how-the-compatibility-numbers-are-measured"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/INTENTIUS/choudoufu/blob/main/live/corpus-refusals.json"&gt;&lt;code&gt;live/corpus-refusals.json&lt;/code&gt;&lt;/a&gt;&#10;measures which refusals fire and how often across the corpus.&#10;&lt;a href="https://intentius.io/choudoufu/docs/use/compatibility/"&gt;Compatibility reference&lt;/a&gt; copies no&#10;count from it, because a copied count goes stale the moment the corpus&#10;re-runs.&lt;/p&gt;&#10;&lt;p&gt;That measured ranking is why the static-evaluability rule (see&#10;&lt;a href="https://intentius.io/choudoufu/docs/model/identity/"&gt;Identity&lt;/a&gt;) leads the reference page.&#10;Several of the most frequent refusals are that one rule under different&#10;diagnostics.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Do not read the fixture or module-example populations as a compatibility&#10;rate.&lt;/strong&gt; Module &lt;code&gt;examples/&lt;/code&gt; directories demonstrate a module&amp;rsquo;s full surface, so&#10;they lean far harder on variables, conditionals and &lt;code&gt;dynamic&lt;/code&gt; blocks than a&#10;configuration describing one deployment, and refuse almost across the board.&#10;Those populations are marked as a ranking, settled by&#10;&lt;a href="https://github.com/INTENTIUS/choudoufu/issues/118"&gt;#118&lt;/a&gt;. One population can&#10;honestly carry a rate since&#10;&lt;a href="https://github.com/INTENTIUS/choudoufu/issues/147"&gt;#147&lt;/a&gt;, whole deployment&#10;root modules published by their operators, pinned by commit, marked&#10;&lt;code&gt;reads_as: rate&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>The ownership policy matrix</title><link>https://intentius.io/choudoufu/docs/use/ownership-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/ownership-policy/</guid><description>&lt;h1 id="the-ownership-policy-matrix"&gt;The ownership policy matrix&lt;a class="anchor" href="#the-ownership-policy-matrix"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Every resource choudoufu sees falls into one of four situations, decided by&#10;whether your configuration declares it and whether it carries this estate&amp;rsquo;s&#10;marker. The &lt;code&gt;policy&lt;/code&gt; block sets what happens in each.&lt;/p&gt;&#10;&lt;p&gt;With no &lt;code&gt;policy&lt;/code&gt; block you get the defaults below, which are today&amp;rsquo;s behaviour.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;The situation you are in&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Setting&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;What the default does&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;You declare it, and it carries your marker. The ordinary case.&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;declared_tagged&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;converge&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plans and applies it against your configuration, like any resource.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;You declare it, but no live resource carries your marker for it.&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;declared_untagged&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;refuse&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Declines to touch it until you adopt it.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;You removed it from your configuration, and it still carries your marker.&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;undeclared_tagged&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;&lt;code&gt;delete&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Destroys it on the next plan.&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;It carries no marker, and you never declared it. Somebody else&amp;rsquo;s.&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;undeclared_untagged&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;keep&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Leaves it alone.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;blockquote class="book-hint warning" &gt;&#10;&lt;p&gt;The third row is the one to know before deleting a resource block. Removing the&#10;block does not mean &amp;ldquo;stop managing this&amp;rdquo;, it means &amp;ldquo;destroy this&amp;rdquo;, which is&#10;also what upstream does without a &lt;code&gt;removed&lt;/code&gt; block. Set &lt;code&gt;undeclared_tagged&lt;/code&gt; to&#10;&lt;code&gt;untag&lt;/code&gt; or &lt;code&gt;keep&lt;/code&gt; first if the resource should survive. &lt;a href="https://intentius.io/choudoufu/docs/use/remove-a-resource/"&gt;How to stop managing&#10;or destroy a resource&lt;/a&gt; walks&#10;through it.&lt;/p&gt;</description></item><item><title>Reference</title><link>https://intentius.io/choudoufu/docs/use/reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/use/reference/</guid><description>&lt;h1 id="reference"&gt;Reference&lt;a class="anchor" href="#reference"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;The normative specifications live in the repository beside the code and the&#10;tests holding them to it. This page indexes them.&lt;/p&gt;&#10;&lt;p&gt;They are for people integrating with choudoufu or working on it. To get an&#10;estate running, use the path pages.&lt;/p&gt;&#10;&lt;h2 id="specifications"&gt;Specifications&lt;a class="anchor" href="#specifications"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Document&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;What it settles&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/INTENTIUS/choudoufu/blob/main/live/MARKERS.md"&gt;&lt;code&gt;live/MARKERS.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The marker tag spec. Key names, the escaping rule, continuation tags, ownership semantics, the rename rule, and what protects the tags. The one surface external tooling can rely on.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/INTENTIUS/choudoufu/blob/main/live/LIMITATIONS.md"&gt;&lt;code&gt;live/LIMITATIONS.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Every construct the mode bounds or rejects, per rule, each with its lint rule and fixture.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/INTENTIUS/choudoufu/blob/main/live/RECEIPTS.md"&gt;&lt;code&gt;live/RECEIPTS.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Recording an effect that leaves nothing in the live system to read back, and the guards on the pattern.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/INTENTIUS/choudoufu/blob/main/live/OUTPUTS.md"&gt;&lt;code&gt;live/OUTPUTS.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Sharing values between estates with no remote state.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="coverage-and-evidence"&gt;Coverage and evidence&lt;a class="anchor" href="#coverage-and-evidence"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Document&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;What it settles&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/INTENTIUS/choudoufu/blob/main/live/COVERAGE.md"&gt;&lt;code&gt;live/COVERAGE.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Which AWS resource types are covered, in layers, and what each layer means.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/INTENTIUS/choudoufu/blob/main/live/SURVEY.md"&gt;&lt;code&gt;live/SURVEY.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;How admission is decided per type, the method, and the raw signals behind it.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="the-demo-which-is-also-the-test-suite"&gt;The demo, which is also the test suite&lt;a class="anchor" href="#the-demo-which-is-also-the-test-suite"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/INTENTIUS/choudoufu/blob/main/live/e2e/README.md"&gt;&lt;code&gt;live/e2e/README.md&lt;/code&gt;&lt;/a&gt;&#10;documents the harness, what each step proves, the environment knobs, and each&#10;exit code.&lt;/p&gt;</description></item><item><title>Add an estate</title><link>https://intentius.io/choudoufu/docs/progress/add-an-estate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/add-an-estate/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;An estate is any real OpenTofu or Terraform configuration, pinned by tag or&#10;commit. Adding one is a manifest entry and a script, and the site picks it up&#10;on the next run.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;go run ./tools/gauntlet add &amp;lt;name&amp;gt; &amp;lt;repo-url&amp;gt; &amp;lt;tag-or-commit&amp;gt; -lane &amp;lt;lane&amp;gt; [-core -reason &amp;#34;...&amp;#34;] -source &amp;#34;&amp;lt;one line&amp;gt;&amp;#34;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That writes the entry and a script stub at &lt;code&gt;live/e2e/&amp;lt;name&amp;gt;/run.sh&lt;/code&gt; with every&#10;stage wired to the protocol and marked &lt;code&gt;not_run&lt;/code&gt;. Fill the stub in, using the&#10;script of a similar estate as the template&#10;(&lt;code&gt;live/e2e/corpus-vpc-complete/run.sh&lt;/code&gt; is the fullest), then:&lt;/p&gt;</description></item><item><title>Contribute compute</title><link>https://intentius.io/choudoufu/docs/progress/contribute/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/contribute/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;Anyone can move the bars by spending tokens rather than time. The loop is&#10;deterministic, so it needs no coordinator:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;go run ./tools/gauntlet next # the next unit: an estate and the first active stage it does not pass&#10;just contribute [max-usd] # one worker run on that unit, in a fresh worktree, with your own key&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;just contribute&lt;/code&gt; runs Claude Code headless under the brief in&#10;&lt;code&gt;.claude/agents/gauntlet-worker.md&lt;/code&gt;, which does exactly one unit: run the estate, classify every&#10;difference from stock with the five-row table in HANDOFF.md, fix it generically,&#10;re-run, render, and open a pull request whose title carries the unit ID. It&#10;never merges. The same thing runs on GitHub Actions from your fork:&#10;&lt;code&gt;.github/workflows/contribute.yml&lt;/code&gt; is &lt;code&gt;workflow_dispatch&lt;/code&gt;, reads your fork&amp;rsquo;s&#10;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; secret, and opens the pull request against this repository when&#10;a &lt;code&gt;CONTRIBUTE_TOKEN&lt;/code&gt; with pull-request scope is present, or prints the compare URL&#10;when it is not. There is no hosted path; every worker runs under the key of&#10;whoever started it.&lt;/p&gt;</description></item><item><title>corpus-alb-complete</title><link>https://intentius.io/choudoufu/docs/progress/corpus-alb-complete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-alb-complete/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-alb examples/complete-alb (tag v9.9.0), its flagship application-load-balancer example&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-alb.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-alb.git&lt;/a&gt; at &lt;code&gt;v9.9.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;80 resources, once for real (floci fixes #58, #61, #62)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;51 of 80 stamped, 1 recorded, 0 failed, 28 skipped&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;empty live-plan with no state file; 0 Error diagnostics; the two record-rung aws_route53_record.validation identities verified by value against route53 list-resource-record-sets&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op (0 added, 0 changed, 0 destroyed); 50 tofu-estate-tagged objects before, 50 after&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (the ALB&amp;rsquo;s Example tag), plan proposed fixing exactly module.alb.aws_lb.this[0], apply changed 1 and the Example tag reconverged&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: aws_instance.this renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: aws_instance.other renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state (positioned right after stage 1, before migrate ever touches these shared objects) also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting aws_instance.other_renamed&amp;rsquo;s block (and its one target-group-attachment reference) proposed exactly 2 destroys (0 add, 0 change, 2 destroy), matching the stock oracle and applied cleanly; the instance is confirmed terminated via the AWS CLI, not through choudoufu&amp;rsquo;s own report; the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (D-REMOVE-ORACLE) also proposes exactly 2 destroys for the same two objects&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;80 resources from nothing, matching stock&amp;rsquo;s own cold-deploy count; the ALB&amp;rsquo;s markers verified via the AWS CLI; 80 records in the local record store including untaggable types; replan empty; a representative EC2 instance&amp;rsquo;s own shape (type/ami) matches stock&amp;rsquo;s cold deploy, via the AWS CLI on both endpoints, marker tags never compared; 50 objects carry the estate tag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;df0cc6a075&lt;/code&gt; on 2026-08-25T17:32:35Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-autoscaling-complete</title><link>https://intentius.io/choudoufu/docs/progress/corpus-autoscaling-complete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-autoscaling-complete/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-autoscaling examples/complete (tag v9.3.0), its only/flagship example&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-autoscaling.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-autoscaling.git&lt;/a&gt; at &lt;code&gt;v9.3.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apply complete! Resources: 68 added, 0 changed, 0 destroyed.; 0 objects carry tofu-estate=autoscaling-complete-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;41 resource(s) newly stamped, 0 already stamped, 0 newly recorded, 0 re-recorded for sensitivity only, 0 already recorded, 0 failed, 27 skipped; 41 objects carry tofu-estate=autoscaling-complete-crossing&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;empty plan; identity re-check unchanged: module.complete.aws_launch_template.this:0, aws_iam_role.ssm&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 41 objects before, 41 after, no state file either time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (SQS queue &amp;lsquo;complete&amp;rsquo;s Example tag), plan proposed fixing exactly one object, apply changed 1 and reconverged the tag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.asg_sg renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place on its security group; live-mv: aws_sqs_queue.this renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.default&amp;rsquo;s block proposed exactly 2 destroys (0 add, 0 change, 2 destroy), matching the stock oracle&amp;rsquo;s own count and applied cleanly; the live ASG count dropped by exactly one and the tagged object count dropped too, both confirmed via the AWS CLI, not through choudoufu&amp;rsquo;s own report; the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (D-REMOVE-ORACLE) also proposes exactly 2 destroys for the same module&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;68 resources from nothing, matching stock&amp;rsquo;s own cold-deploy count (68); the sqs queue&amp;rsquo;s markers verified via the AWS CLI; 68 records in the local record store including the untaggable ASGs (#364 A2); replan empty; the asg_sg security group&amp;rsquo;s rule counts match stock&amp;rsquo;s cold deploy structurally, via the AWS CLI on both endpoints, marker tags never compared; 41 objects carry the estate tag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;df0cc6a075&lt;/code&gt; on 2026-08-25T17:28:03Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-dynamodb-table-basic</title><link>https://intentius.io/choudoufu/docs/progress/corpus-dynamodb-table-basic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-dynamodb-table-basic/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-dynamodb-table, examples/basic (tag v5.5.1, commit 02b2d66ad2396389381c8dbe3423682114ed5350)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-dynamodb-table.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-dynamodb-table.git&lt;/a&gt; at &lt;code&gt;v5.5.1&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apply complete! Resources: 3 added, 0 changed, 0 destroyed.; 0 objects carry tofu-estate=dynamodb-table-basic-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1 resource(s) newly stamped, 0 already stamped, 1 newly recorded, 0 re-recorded for sensitivity only, 0 already recorded, 0 failed, 1 skipped.; Apply complete! Resources: 0 added, 0 changed, 1 destroyed. (tofu-slot convergence)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no resource change proposed, nothing foreign; identity re-check (via the AWS CLI) unchanged&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 1 objects before, 1 after, no state file either time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (arn:aws:dynamodb:eu-west-1:000000000000:table/my-table-delicate-mantis&amp;rsquo;s Terraform tag), plan proposed fixing exactly one object, apply changed 1 and reconverged the tag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.dynamodb_table renamed to module.dynamodb_table_moved with zero churn (0 add, 1 change, 0 destroy) - the table&amp;rsquo;s own marker rewritten in place, the untaggable resource policy unaffected; live-mv: module.dynamodb_table_moved renamed to module.dynamodb_table_final with zero churn, marker rewritten in place; stock oracle over the same net module rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); the table&amp;rsquo;s ARN unchanged throughout, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.dynamodb_table_final&amp;rsquo;s block proposed exactly two destroys (0 add, 0 change, 2 destroy: the table and its untaggable resource policy), applied cleanly (0 added, 0 changed, 2 destroyed), the table is genuinely gone from the live account (dynamodb describe-table on the old name now returns ResourceNotFoundException, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (D-REMOVE-ORACLE) also proposes exactly two destroys for the same two objects; classifyOrphans did not withhold either destroy because module.disabled_dynamodb_table declares zero instances of the same block key (create_table=false), so nothing is ever pending against it&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 resources from nothing (random_pet + table + resource policy), the table&amp;rsquo;s markers verified via the AWS CLI, 3 records in the local record store (#364 A2), replan empty, stock oracle in its own namespace matches structurally on key schema/attributes/table class/deletion protection/on-demand billing/GSI/resource policy&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;df0cc6a075&lt;/code&gt; on 2026-08-25T17:22:59Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-ec2-instance-complete</title><link>https://intentius.io/choudoufu/docs/progress/corpus-ec2-instance-complete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-ec2-instance-complete/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-ec2-instance examples/complete (tag v6.4.0), the most-downloaded module on the registry; absent from the measurement set until 2026-08-23&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-ec2-instance.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-ec2-instance.git&lt;/a&gt; at &lt;code&gt;v6.4.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Clear.&lt;/strong&gt; Every active stage passes.&lt;/p&gt;</description></item><item><title>corpus-ecs-fargate</title><link>https://intentius.io/choudoufu/docs/progress/corpus-ecs-fargate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-ecs-fargate/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-ecs examples/fargate (tag v7.6.0), its Fargate flagship example&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-ecs.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-ecs.git&lt;/a&gt; at &lt;code&gt;v7.6.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;62 resources, once for real&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;46 of 62 stamped&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuinely empty replan (&amp;ldquo;No changes. Your infrastructure matches the configuration.&amp;rdquo;) - #371, #378, #372, #110, #395 and #376 all fixed and stay fixed; the standalone task definition&amp;rsquo;s essential/mountPoints[].readOnly wall is gone (lex00/floci#131, published and repinned this unit) and essential defaulting to true was never an independent wall on its own (this unit&amp;rsquo;s own re-measurement). #395/#376: choudoufu keeps no persisted state, so every plan re-derives PriorState through ImportResourceState&amp;rsquo;s bare stub; internal/live/projection/build.go&amp;rsquo;s configuredAttrsSeed generalizes the tags-only import-stub seed (issue #287 item 8) to every Required-or-Optional-non-Computed attribute (fixing #376&amp;rsquo;s track_latest/skip_destroy directly), and internal/live/projection/residue.go&amp;rsquo;s residueConfigSourced widening of classifyResidue plus the new builder.residueSeedFor pre-read seed close #395&amp;rsquo;s managed-reference case (task_definition = aws_ecs_task_definition.this[0].arn) that configuredAttrsSeed&amp;rsquo;s static evaluator alone could not reach. Identities confirmed by value against the AWS CLI: $CLUSTER_ARN, $TD_SVC_ARN, $TD_STANDALONE_ARN, and #368&amp;rsquo;s scalable target $GOT_TARGET_RID.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op (0 added, 0 changed, 0 destroyed); 46 tofu-estate-tagged objects before, 46 after, no state file either time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (VPC&amp;rsquo;s Name tag), plan proposed fixing exactly module.vpc.aws_vpc.this[0], apply changed 1 and the Name tag reconverged&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.alb renamed with zero churn (0 add, 9 change, 0 destroy), marker rewritten in place; live-mv: aws_service_discovery_http_namespace.this renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.ecs_task_definition&amp;rsquo;s block proposed exactly 8 destroys (0 add, 0 change, 8 destroy), address-for-address identical to stock&amp;rsquo;s oracle on cold_deploy&amp;rsquo;s own state; applied cleanly (0 added, 0 changed, 8 destroyed); the standalone task definition family (ex-fargate-standalone) genuinely has 0 active revisions afterward, read via the AWS CLI, not choudoufu&amp;rsquo;s own report; classifyOrphans did not withhold any destroy because no other module.ecs_task_definition block is declared anywhere in this config; the next plan is empty&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;62 resources from nothing, cluster marker verified via the AWS CLI, 60 of 62 records in the local record store (#364 A2; the 2 aws_ecs_task_definition instances are excluded by a numeric-wire-identity-component gap in internal/live/identity/located.go&amp;rsquo;s LocatedIdentityPlanFor, documented in this script and not fixed here - their markers and plans are unaffected), replan empty, stock oracle in its own namespace matches structurally on cluster/service/standalone-task-definition/CloudMap-namespace/ALB/VPC&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;4ba0356d2c&lt;/code&gt; on 2026-08-25T17:44:48Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-eks-basic</title><link>https://intentius.io/choudoufu/docs/progress/corpus-eks-basic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-eks-basic/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-eks examples/basic (tag v9.0.0)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-eks.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-eks.git&lt;/a&gt; at &lt;code&gt;v9.0.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;54 resources, genuinely cold, genuinely unmarked&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;25 of 54 resource instances stamped, 25 of 25 confirmed via the AWS CLI; 5 record-backed instances seeded into the implied local record store (#364)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;live-plan runs to completion with ZERO Error diagnostics and reports &amp;ldquo;No changes. Your infrastructure matches the configuration.&amp;rdquo; - the record-backed worker launch configuration&amp;rsquo;s enable_monitoring/root_block_device/user_data all now agree with the config&amp;rsquo;s own desired value (lex00/floci#132 for the first two, configuredAttrsSeed&amp;rsquo;s residue-record pre-read seed in internal/live/projection/build.go for the third)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op (0 added, 0 changed, 0 destroyed); 25 tofu-estate-tagged objects before, 25 after&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (VPC&amp;rsquo;s Name tag), plan proposed fixing exactly module.vpc.aws_vpc.this[0], apply changed 1 and the Name tag reconverged&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: aws_security_group.worker_group_mgmt_two renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: aws_security_group.all_worker_mgmt renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting aws_security_group.worker_group_mgmt_one&amp;rsquo;s block (plus emptying the one argument that referenced it) proposed 2 resource action(s), address-for-address and action-for-action identical to stock&amp;rsquo;s oracle on cold_deploy&amp;rsquo;s own state; applied cleanly; the security group is genuinely gone from the live account, read via the AWS CLI, not choudoufu&amp;rsquo;s own report; classifyOrphans did not withhold any destroy because no other aws_security_group.worker_group_mgmt_one block is declared anywhere in this config; the next plan is empty&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;54 resources from nothing, cluster marker verified via the AWS CLI, 54 records under the implied local record store (#364 A2), replan empty, stock oracle in its own namespace matches structurally on cluster status/version, ASG count/desired-capacities, and cluster-owned security-group count&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;ab52115aec&lt;/code&gt; on 2026-08-25T17:36:35Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-evoteum-modules</title><link>https://intentius.io/choudoufu/docs/progress/corpus-evoteum-modules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-evoteum-modules/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;evoteum/tofu-modules, the aws/networking and aws/dynamodb modules (pinned by commit 7e8764035c50d1cb2a6ac04636a9f85ba6708d39; no tags published)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/evoteum/tofu-modules.git"&gt;https://github.com/evoteum/tofu-modules.git&lt;/a&gt; at &lt;code&gt;7e8764035c50d1cb2a6ac04636a9f85ba6708d39&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10 resources added (1 vpc, 3 subnets, 1 igw, 1 route table, 3 associations, 1 dynamodb table); confirmed unmarked&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7 of 10 verified and stamped, 0 failed, 3 correctly UNTAGGABLE; markers read back via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no changes; VPC and table markers unchanged, all three untaggable associations resolved by their composite identity&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); object count unchanged at 7, no state file&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;VPC Name tag tampered out of band, exactly 1 object proposed and reconverged, marker survived the incremental tag update&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.networking renamed with zero churn (0 add, 6 change, 0 destroy), marker rewritten in place across its taggable objects including the untaggable route-table-association children resolving structurally; live-mv: module.sessions_table renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.sessions_table_renamed&amp;rsquo;s block proposed exactly one destroy (0 add, 0 change, 1 destroy), address-for-address identical to stock&amp;rsquo;s oracle on cold_deploy&amp;rsquo;s own state (module.sessions_table); applied cleanly (0 added, 0 changed, 1 destroyed); the table is genuinely gone from the live account (describe-table now returns ResourceNotFoundException, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan is empty; classifyOrphans did not withhold the destroy because no other module.sessions_table* block is declared anywhere in this config&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10 resources from nothing (1 vpc, 3 subnets, 1 igw, 1 route table, 3 untaggable associations, 1 dynamodb table), VPC marker verified via the AWS CLI, 10 records in the local record store (#364 A2, one per managed instance), replan empty, stock oracle in its own namespace matches structurally on vpc/subnets/igw/route-table/dynamodb-table&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;24c75b68f9&lt;/code&gt; on 2026-08-25T17:25:09Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-giantswarm-crossplane</title><link>https://intentius.io/choudoufu/docs/progress/corpus-giantswarm-crossplane/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-giantswarm-crossplane/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;giantswarm/giantswarm-aws-account-prerequisites, the crossplane/ module (pinned tag v8.2.2, commit f1a7d8d51086824a97749b1a8a13327c6f081f72)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/giantswarm/giantswarm-aws-account-prerequisites.git"&gt;https://github.com/giantswarm/giantswarm-aws-account-prerequisites.git&lt;/a&gt; at &lt;code&gt;v8.2.2&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6 resource instances added, 0 already tofu-estate-marked before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2 of 6 stamped (role, managed policy), 4 untaggable skipped, module&amp;rsquo;s own tags survived the stamp&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;live-plan empty, role/policy tofu-address unchanged, both *_exclusive resources re-derived by value&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); object count unchanged at 2, both exclusive sets unchanged&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;role&amp;rsquo;s installation tag tampered, exactly the IAM role proposed and reconciled, apply changed 1, tag reads back as configured&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.crossplane renamed to .crossplane_renamed with zero churn (0 add, 2 change, 0 destroy - role and policy), markers rewritten in place; live-mv: .crossplane_renamed renamed to .crossplane_final with zero churn, both markers rewritten in place (one live-mv call per taggable object); stock oracle over the same chained module rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.crossplane_final&amp;rsquo;s block proposed 6 resource action(s), address-for-address and action-for-action identical to stock&amp;rsquo;s oracle on cold_deploy&amp;rsquo;s own state; applied cleanly; the role is genuinely gone from the live account (get-role now returns NoSuchEntity, read via the AWS CLI, not choudoufu&amp;rsquo;s own report); classifyOrphans did not withhold any destroy because no other module.crossplane* block is declared anywhere in this config; the next plan is empty&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6 resources from nothing (role, managed policy, 4 untaggable), role marker verified via the AWS CLI, 6 records in the local record store (#364 A2, one per managed instance), replan empty, stock oracle in its own namespace matches structurally on the role and the managed policy&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;7ff51b84d3&lt;/code&gt; on 2026-08-25T17:26:53Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-hongbomiao-harbor</title><link>https://intentius.io/choudoufu/docs/progress/corpus-hongbomiao-harbor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-hongbomiao-harbor/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;hongbo-miao/hongbomiao.com, a third disjoint slice: environments/production/aws/kubernetes/main.tofu&amp;rsquo;s self-contained Harbor section (commit 3f69ab9c37211e163bbd4434bad39780b6d4b92b, same pin as corpus-hongbomiao-labelbox and corpus-hongbomiao-storage)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/hongbo-miao/hongbomiao.com.git"&gt;https://github.com/hongbo-miao/hongbomiao.com.git&lt;/a&gt; at &lt;code&gt;3f69ab9c37211e163bbd4434bad39780b6d4b92b&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apply complete! Resources: 3 added, 0 changed, 0 destroyed.; 0 objects carry tofu-estate=hongbomiao-harbor-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2 of 3 stamped (bucket, user), 1 UNTAGGABLE (inline policy); bucket hongbomiao-harbor-crossing-hm-harbor -&amp;gt; tofu-address=module.s3_bucket_hm_harbor.aws_s3_bucket.main, user hongbomiao-harbor-crossing-hm-harbor-user -&amp;gt; tofu-address=module.harbor_iam_user.aws_iam_user.hm_harbor_iam_user&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;empty plan; identity re-check: bucket and user tofu-address unchanged, inline policy&amp;rsquo;s resource ARN still matches the configuration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 2 objects before, 2 after, no state file either time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the plan proposed fixing 1 object(s) after the out-of-band tag mutation: module.s3_bucket_hm_harbor.aws_s3_bucket.main&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.s3_bucket_hm_harbor renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: module.harbor_iam_user renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.harbor_iam_user_renamed&amp;rsquo;s block proposed exactly two destroys (0 add, 0 change, 2 destroy - the untaggable inline policy and its taggable parent user), applied cleanly (0 added, 0 changed, 2 destroyed) in an order IAM accepted, the user is genuinely gone from the live account (iam get-user on the old name now returns NoSuchEntity, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (E-ORACLE) also proposes exactly two destroys for the same objects&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 resources from nothing (bucket, user, untaggable inline policy), markers verified via the AWS CLI, 3 records in the local record store (#364 A2), replan empty both with and without the local record store, all objects match stock&amp;rsquo;s cold-deploy container (STAGE 1, untouched) object by object, marker tags never compared&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;ed39ad1948&lt;/code&gt; on 2026-08-25T17:46:42Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-hongbomiao-labelbox</title><link>https://intentius.io/choudoufu/docs/progress/corpus-hongbomiao-labelbox/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-hongbomiao-labelbox/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;hongbo-miao/hongbomiao.com, the &amp;ldquo;Labelbox&amp;rdquo; section of infrastructure/opentofu/aws/general/main.tofu (commit 3f69ab9c37211e163bbd4434bad39780b6d4b92b, no tag)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/hongbo-miao/hongbomiao.com.git"&gt;https://github.com/hongbo-miao/hongbomiao.com.git&lt;/a&gt; at &lt;code&gt;3f69ab9c37211e163bbd4434bad39780b6d4b92b&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4 resources added, 0 objects carry tofu-estate=hongbomiao-labelbox-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2 of 4 stamped (2 skipped, untaggable), 0 failed; markers read back via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no resource change proposed; bucket and role tofu-address unchanged, CORS origins and inline policy resource match config&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); object count unchanged at 2, no state file&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;bucket tag drifted; exactly module.amazon_s3_bucket_hm_labelbox.aws_s3_bucket.main proposed, applied (1 changed), reconverged to hongbomiao&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.amazon_s3_bucket_hm_labelbox renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: module.labelbox_iam_role renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.labelbox_iam_role_renamed&amp;rsquo;s block proposed exactly two destroys (0 add, 0 change, 2 destroy - the untaggable inline policy and its taggable parent role), applied cleanly (0 added, 0 changed, 2 destroyed) in an order IAM accepted, the role is genuinely gone from the live account (iam get-role on the old name now returns NoSuchEntity, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (E-ORACLE) also proposes exactly two destroys for the same objects&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;FAIL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the greenfield apply failed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;81634a7f65&lt;/code&gt; on 2026-08-25T17:39:06Z, exit code 1.&lt;/p&gt;</description></item><item><title>corpus-hongbomiao-storage</title><link>https://intentius.io/choudoufu/docs/progress/corpus-hongbomiao-storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-hongbomiao-storage/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;hongbo-miao/hongbomiao.com, a second disjoint slice: environments/production/aws/storage/main.tofu&amp;rsquo;s remote-state-free bootstrap section (commit 3f69ab9c37211e163bbd4434bad39780b6d4b92b, same pin as corpus-hongbomiao-labelbox)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/hongbo-miao/hongbomiao.com.git"&gt;https://github.com/hongbo-miao/hongbomiao.com.git&lt;/a&gt; at &lt;code&gt;3f69ab9c37211e163bbd4434bad39780b6d4b92b&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apply complete! Resources: 4 added, 0 changed, 0 destroyed.; 0 objects carry tofu-estate=hongbomiao-storage-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 of 4 stamped (2 buckets, KMS key), 1 UNTAGGABLE (KMS alias); bucket hongbomiao-storage-crossing-hm-production -&amp;gt; tofu-address=module.hm_production_bucket.aws_s3_bucket.main, bucket hongbomiao-storage-crossing-hm-iot-data -&amp;gt; tofu-address=module.s3_bucket_iot_data.aws_s3_bucket.main, key a99ac700-93aa-4714-9b11-0e0e1e8a7f5e -&amp;gt; tofu-address=module.kafka_kms_key.aws_kms_key.main&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;empty plan; identity re-check: both buckets&amp;rsquo; and the key&amp;rsquo;s tofu-address unchanged, KMS alias still points at the same key&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 3 objects before, 3 after, no state file either time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the plan proposed fixing 1 object(s) after the out-of-band tag mutation: module.s3_bucket_iot_data.aws_s3_bucket.main&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.hm_production_bucket renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: module.kafka_kms_key renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.kafka_kms_key_renamed&amp;rsquo;s block proposed exactly two destroys (0 add, 0 change, 2 destroy - the untaggable alias and its taggable parent key), applied cleanly (0 added, 0 changed, 2 destroyed) in an order the cloud accepted, the key is genuinely PendingDeletion and the alias is gone (read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (E-ORACLE) also proposes exactly two destroys for the same objects&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4 resources from nothing (2 buckets under aws.production, KMS key and untaggable alias under the default aws provider), markers verified via the AWS CLI, 4 records in the local record store (#364 A2), replan empty both with and without the local record store, all objects match stock&amp;rsquo;s cold-deploy container (STAGE 1, untouched) object by object per provider namespace, marker tags never compared&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;24b7a008e9&lt;/code&gt; on 2026-08-25T17:27:21Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-iam-policy</title><link>https://intentius.io/choudoufu/docs/progress/corpus-iam-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-iam-policy/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-iam examples/iam-policy&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-iam.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-iam.git&lt;/a&gt; at &lt;code&gt;v6.8.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apply complete! Resources: 2 added, 0 changed, 0 destroyed.; 0 objects carry tofu-estate=iam-policy-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2 of 2 stamped, both carrying tofu-slot=0/0 read back through IAM (choudoufu #372); Apply complete! Resources: 0 added, 0 changed, 0 destroyed. - nothing left to converge&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no resource change proposed, nothing foreign; identity re-check (via the AWS CLI) both unchanged&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 2 objects before, 2 after, no state file either time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (arn:aws:iam::000000000000:policy/example_from_data_source&amp;rsquo;s Example tag), plan proposed fixing exactly one object, apply changed 1 and reconverged the tag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.iam_policy_from_data_source renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: module.iam_policy renamed with zero churn, marker rewritten in place (found and fixed live-mv&amp;rsquo;s own missing issue #266 tag-index fallback and the arnJoinTable&amp;rsquo;s missing iam:policy entry to get here); stock oracle over the same two-module rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both ARNs unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.iam_policy_renamed&amp;rsquo;s block proposed exactly one destroy (0 add, 0 change, 1 destroy), applied cleanly (0 added, 0 changed, 1 destroyed), the object is genuinely gone from the live account (iam get-policy on the old ARN now returns NoSuchEntity, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (STAGE 1.5.5) also proposes exactly one destroy for the same object; classifyOrphans did not withhold the destroy even though module.iam_policy_renamed2&amp;rsquo;s policy shares the same block key, because that surviving instance is bound, not unclaimed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2 resources from nothing (both aws_iam_policy), markers verified via the AWS CLI, 2 records in the local record store (#364 A2), replan empty both with and without the local record store, both policies&amp;rsquo; documents and paths match stock&amp;rsquo;s cold-deploy container (STAGE 1, untouched) object by object, marker tags never compared&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;a2b7eb7f4c&lt;/code&gt; on 2026-08-25T17:28:43Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-iam-read-only-policy</title><link>https://intentius.io/choudoufu/docs/progress/corpus-iam-read-only-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-iam-read-only-policy/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-iam examples/iam-read-only-policy&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-iam.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-iam.git&lt;/a&gt; at &lt;code&gt;v6.8.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apply complete! Resources: 1 added, 0 changed, 0 destroyed.; 0 objects carry tofu-estate=iam-read-only-policy-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1 of 1 stamped, carrying tofu-slot=0 read back through IAM (choudoufu #372); Apply complete! Resources: 0 added, 0 changed, 0 destroyed. - nothing left to converge&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no resource change proposed, nothing foreign; identity re-check (via the AWS CLI) unchanged&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 1 objects before, 1 after, no state file either time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (arn:aws:iam::000000000000:policy/example/ex-iam-read-only-policy-82e4bb26d77dc89263bfa1c0be&amp;rsquo;s Example tag), plan proposed fixing exactly module.read_only_iam_policy.aws_iam_policy.policy[0], apply changed 1 and reconverged the tag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.read_only_iam_policy renamed to module.read_only_iam_policy_moved with zero churn (0 add, 1 change, 0 destroy), tofu-address marker rewritten in place; live-mv: module.read_only_iam_policy_moved renamed to module.read_only_iam_policy_final with zero churn, marker rewritten in place; stock oracle over the identical net rename on cold_deploy&amp;rsquo;s own state also shows a true no-op (0 add, 0 change, 0 destroy, outputs unchanged in value); the live policy ARN unchanged throughout, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.read_only_iam_policy_final&amp;rsquo;s block proposed exactly one destroy (0 add, 0 change, 1 destroy), applied cleanly (0 added, 0 changed, 1 destroyed), the object is genuinely gone from the live account (iam get-policy on the old ARN now returns NoSuchEntity, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; classifyOrphans did not withhold the destroy because no other aws_iam_policy.policy block anywhere in this config ever declares a real instance (count=0 on both remaining module calls)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1 resource from nothing, marker verified via the AWS CLI, 1 record in the local record store (#364 A2), replan empty, stock oracle in its own namespace matches structurally (path, description, policy document)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;2d8978675e&lt;/code&gt; on 2026-08-25T17:48:36Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-lambda-simple</title><link>https://intentius.io/choudoufu/docs/progress/corpus-lambda-simple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-lambda-simple/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-lambda examples/simple (tag v8.8.1)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-lambda.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-lambda.git&lt;/a&gt; at &lt;code&gt;v8.8.1&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8 resources, genuinely cold, genuinely unmarked&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 stamped, 4 recorded, 0 failed, 1 skipped&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no resource change proposed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); tofu-estate-tagged object count unchanged at 3; markers and record store intact&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (memory_size 128-&amp;gt;256), exactly module.lambda_function.aws_lambda_function.this[0] proposed by both choudoufu and stock with the identical change, apply changed 1 and memory_size reads back as 128&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.lambda_function renamed to module.lambda_function_moved with zero churn (0 add, 3 change, 0 destroy) across all seven of its stateful children, three taggable markers rewritten in place, three record-located children moved via their own per-resource moved blocks with zero diff, one config-derived child (aws_iam_role_policy.logs) needing none; stock oracle over the identical seven-resource move on cold_deploy&amp;rsquo;s own state also shows zero churn beyond the module&amp;rsquo;s own pre-existing null_resource.archive[0] package-timestamp noise (confirmed present on an unrelated baseline replan too); live-mv: module.lambda_function_moved renamed to module.lambda_function_final across all three taggable children (the function, the role, the log group), one call each, zero churn, markers rewritten in place - the internal/live/mv/mv.go materialize() RecordStore wiring gap (build.go:1676&amp;rsquo;s &amp;ldquo;Record-backed instance with no record store&amp;rdquo;) is fixed; all three live objects unchanged throughout, read via the AWS CLI; final replan is empty&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;FAIL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu&amp;rsquo;s remove plan proposes 7 destroys, expected exactly 6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8 resources from nothing (3 taggable + 5 record-backed/config-derived), all three module-nested markers verified via the AWS CLI, 8 records in the local record store (#364 A2), replan empty, stock oracle in its own namespace matches structurally (runtime, handler, memory, timeout, log-group retention)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;db15df773b&lt;/code&gt; on 2026-08-25T17:47:34Z, exit code 1.&lt;/p&gt;</description></item><item><title>corpus-leynos-monitoring</title><link>https://intentius.io/choudoufu/docs/progress/corpus-leynos-monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-leynos-monitoring/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;leynos/df12-www, the modules/monitoring module (pinned by commit alone - no tags published - e59eabba112b2a4c731123f26845a20f0ae0d938)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/leynos/df12-www.git"&gt;https://github.com/leynos/df12-www.git&lt;/a&gt; at &lt;code&gt;e59eabba112b2a4c731123f26845a20f0ae0d938&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 resources added (2 alarms + dashboard), 0 objects carry tofu-estate=leynos-monitoring-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2 of 3 stamped (1 skipped, untaggable dashboard), 0 failed; both alarm markers read back via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no resource change proposed; both alarms&amp;rsquo; tofu-address unchanged, dashboard body re-derived and matches distribution_id&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); object count unchanged at 2, no state file&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;S3 alarm&amp;rsquo;s alarm_description tampered, exactly 1 object proposed and applied, reconverged to its configured description&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: aws_cloudwatch_metric_alarm.s3_requests_spike renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: aws_cloudwatch_metric_alarm.cf_requests_spike renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting the CloudFront alarm&amp;rsquo;s block proposed exactly one destroy (0 add, 0 change, 1 destroy), applied cleanly (0 added, 0 changed, 1 destroyed), the object is genuinely gone from the live account (describe-alarms on its name no longer returns it, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan is empty; classifyOrphans did not withhold the destroy because the S3-requests alarm, the surviving aws_cloudwatch_metric_alarm instance, is bound, not unclaimed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 resources from nothing (2 tagged alarms + the untaggable dashboard), both alarm markers verified via the AWS CLI, 3 records in the local record store (#364 A2), replan empty, stock oracle in its own namespace matches structurally on both alarms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;20afe6d42d&lt;/code&gt; on 2026-08-25T17:28:16Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-mastino-dns</title><link>https://intentius.io/choudoufu/docs/progress/corpus-mastino-dns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-mastino-dns/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;datacite/mastino, global/dns - DataCite&amp;rsquo;s own global DNS root module (.corpus/mastino/global/dns)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/datacite/mastino.git"&gt;https://github.com/datacite/mastino.git&lt;/a&gt; at &lt;code&gt;4d8c1f1bebd91e73195017ce44a243002e9e36e5&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: growing. Lane: published-deployment.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;63 resources from stock terraform; 4 live zones confirmed unmarked&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4 of 63 stamped, 59 skipped as untaggable, 0 failed; 59 identity records written (#364), 14 of them also carrying residue (#341), DataCite&amp;rsquo;s own tags survived&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;plan empty across 63 instances, no state file; 14 record sets and 4 zones filled residue from the store&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 4 zones / 63 record sets unchanged, all 4 markers unmoved, all 59 identity records intact (14 residue-bearing)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one untaggable record drifted, exactly aws_route53_record.wp-prod-staging[0]/ttl proposed and applied, reconverged to 300, marker intact&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: aws_route53_zone.production renamed with zero churn (0 add, 1 change, 0 destroy) - only the zone&amp;rsquo;s own marker rewritten, none of its 45 record children moved; live-mv: aws_route53_zone.internal renamed with zero churn, marker rewritten in place; stock oracle over the same two-zone rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live zone ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting aws_route53_zone.eu and aws_route53_record.eu-ns&amp;rsquo;s blocks - both destroys proposed (matching stock&amp;rsquo;s own oracle exactly) and applied cleanly (Apply complete! Resources: 0 added, 0 changed, 2 destroyed.), the zone genuinely gone from the live account (read via the AWS CLI, not choudoufu&amp;rsquo;s own report); the next plan is empty. The parent-scoped removal sweep gap this estate named (gauntlet:parent-scoped-sweep) is closed: recordOrphanReadSweep composes aws_route53_record&amp;rsquo;s identity from its migrate-seeded record correctly (composeImportIDFromComponents&amp;rsquo;s OmitIfAbsent fix) and carries a destroy-before-parent ordering hint (identity.Resolution.DestroyDependsOn) so the record&amp;rsquo;s own destroy is never raced against its zone&amp;rsquo;s force_destroy cascade.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;63 resources from nothing (4 tagged zones + 59 untaggable records), the production zone&amp;rsquo;s marker verified via the AWS CLI, 63 records in the local record store (#364 A2), replan empty, stock oracle in its own namespace matches on zone count (4) and total record-set count (63)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;2b52ff8eb7&lt;/code&gt; on 2026-08-25T17:36:46Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-overture-tiles</title><link>https://intentius.io/choudoufu/docs/progress/corpus-overture-tiles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-overture-tiles/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;OvertureMaps/terraform-aws-overture-tiles (Overture Maps Foundation), pinned by tag AND commit (v1.2.0, 3f44cebc297db8626705e99784f412b4a2c4eda1) - the first OpenTofu-native lane entry with a real tagged release to pin against&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/OvertureMaps/terraform-aws-overture-tiles.git"&gt;https://github.com/OvertureMaps/terraform-aws-overture-tiles.git&lt;/a&gt; at &lt;code&gt;v1.2.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;</description></item><item><title>corpus-rds-complete-postgres</title><link>https://intentius.io/choudoufu/docs/progress/corpus-rds-complete-postgres/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-rds-complete-postgres/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-rds examples/complete-postgres (tag v7.2.1)&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-rds.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-rds.git&lt;/a&gt; at &lt;code&gt;v7.2.1&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;39 resources, once for real&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;26 of 39 stamped&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuinely empty replan (No changes. Your infrastructure matches the configuration.) with no local state file. lex00/floci#120&amp;rsquo;s round-trip gap, this estate&amp;rsquo;s last recorded wall, is CONFIRMED FIXED: round 8 (PR #128/ff815779, ghcr.io/lex00/floci:main-20260824d sha256:25fc9687, #124&amp;rsquo;s RDS colliding-port isolation) closed the last of its eight fields for this estate - module.db_default&amp;rsquo;s own port (module.db and module.db_default both declare port=5432, a genuine collision; module.db_default is the second-created instance and gets its own distinct loopback bind address with the declared port honored). The other seven fields (backup_window, monitoring_interval, monitoring_role_arn, performance_insights_retention_period, engine_lifecycle_support, enabled_cloudwatch_logs_exports, max_allocated_storage) and the parameter block&amp;rsquo;s apply_method were already fixed by earlier rounds (round 5 and round 6&amp;rsquo;s own #120 passes) that this estate had not been re-crossed since - the artifact&amp;rsquo;s recorded &amp;lsquo;3 in-place updates&amp;rsquo; detail was stale before this round&amp;rsquo;s own fix even landed. Confirmed three independent ways, not merely inferred from the empty plan: a direct describe-db-parameters &amp;ndash;source user probe of the live parameter group (autovacuum=1, client_encoding=utf8, matching config exactly, no tofu in the loop), a direct describe-db-instances probe of the second instance&amp;rsquo;s own Endpoint.Port (5432, the declared port), and all eight attribute names individually confirmed absent from choudoufu&amp;rsquo;s plan. INTENTIUS/choudoufu#393 (skip_final_snapshot&amp;rsquo;s phantom true-&amp;gt;false update) remains fixed, confirmed absent. Stock&amp;rsquo;s own replan against its own never-deleted state file still shows tag noise plus the two parameter blocks; ruled out as a live discrepancy by the same direct API probe (informational only, not this stage&amp;rsquo;s oracle - HANDOFF row 3, a property of that one state file&amp;rsquo;s own apply-time fidelity).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 26 objects before, 26 after, no state file, primary DB instance marker unmoved&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (primary DB instance&amp;rsquo;s Example tag), plan proposed fixing exactly one object, apply changed 1 and reconverged the tag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.security_group renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: module.db_default&amp;rsquo;s db instance renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.db_default_renamed&amp;rsquo;s block proposed exactly two destroys (the db instance and its own local random_id.snapshot_identifier, no cloud representation - issue #340), applied cleanly, the db instance is genuinely gone from the live account (read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on the same renamed oracle tree also proposes exactly the same two destroys; the target was chosen (see header) because its own nested module.db_instance call has no untaggable AWS-side sibling under this estate&amp;rsquo;s create_db_option_group=false/create_db_parameter_group=false, unlike the shapes that surfaced issue #410 for corpus-s3-bucket-complete and corpus-overture-tiles&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;39 resources from nothing (same DELTA reduction cold_deploy itself needs - two emulator gaps, floci-io/floci#51 and lex00/floci#52), primary DB instance and security group markers verified via the AWS CLI, 39 records in the local record store (#364 A2), replan empty, stock oracle in its own namespace matches structurally (DB engine/version/class/storage/port, security-group rule count)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;e99a19e074&lt;/code&gt; on 2026-08-25T17:57:14Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-s3-bucket-complete</title><link>https://intentius.io/choudoufu/docs/progress/corpus-s3-bucket-complete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-s3-bucket-complete/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-s3-bucket examples/complete (tag v5.9.1), its flagship example&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-s3-bucket.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-s3-bucket.git&lt;/a&gt; at &lt;code&gt;v5.9.1&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;30 resources added by plain terraform, 4 buckets confirmed live, no tofu-address tag&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6 of 30 stamped, 1 recorded (random_pet, issue #340), 23 skipped (untaggable), 0 failed, 26 identities recorded (#364 unit A2); markers survived the residue-classification apply&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no resource action proposed; 29 rendered identity occurrences (11 distinct), all naming known roots&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); bucket count unchanged at 4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;accelerate config drifted to Enabled, exactly 1 change proposed and applied, reconverged to Suspended, final plan empty&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.cloudfront_log_bucket renamed to module.cloudfront_log_bucket_renamed with zero churn (0 add, 1 change, 0 destroy), the bucket&amp;rsquo;s tofu-address marker rewritten in place; live-mv: module.simple_bucket renamed to module.simple_bucket_renamed with zero churn, marker rewritten in place; both live bucket names unchanged, read via the AWS CLI; the post-rename plan proposes no resource action&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.simple_bucket_renamed&amp;rsquo;s block proposed exactly two destroys (0 add, 0 change, 2 destroy: the bucket and its untaggable public_access_block child), applied cleanly (0 added, 0 changed, 2 destroyed), the bucket is genuinely gone from the live account (head-bucket on simple-welcomed-gnu now fails, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state also proposes exactly the same two destroys for the same two objects; the target was chosen to avoid issue #404&amp;rsquo;s shape (a sibling policy re-reading the removed bucket&amp;rsquo;s own ARN) - module.log_bucket and module.s3_bucket are both left untouched&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;29 resources from nothing (SCOPE REDUCTION&amp;rsquo;s own reduced count, random_pet pinned to a literal on both sides), 3 of 4 bucket markers verified via the AWS CLI, 26 records in the local record store (#364 A2), replan empty, stock oracle in its own namespace matches structurally on all 4 buckets (versioning, default encryption, policy presence)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;fa5a6bd3bd&lt;/code&gt; on 2026-08-25T17:34:52Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-security-group-complete</title><link>https://intentius.io/choudoufu/docs/progress/corpus-security-group-complete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-security-group-complete/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-security-group examples/complete (tag v6.0.0), its flagship example&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-security-group.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-security-group.git&lt;/a&gt; at &lt;code&gt;v6.0.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;67 resources (DELTA 2, lex00/floci#57)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;58 of 67 stamped, 67 identities recorded (#364 unit A2)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the plan is genuinely empty: every choudoufu wall (#305, #307, #313 A and B, #321, #332) and both confirmed floci gaps (#102, #104) are fixed or absent this run; default route table identities asserted by value against the AWS CLI in step 3a&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); tofu-estate-tagged object count unchanged at 58 objects, read through resourcegroupstaggingapi&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered (DriftProbe tag on the main security group), exactly module.security_group.aws_security_group.this[0] proposed, apply changed 1 and the tag is gone, confirmed via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.postgresql renamed to module.postgresql_renamed with zero churn (0 add, 4 change, 0 destroy) - the rule-children case, its own SG plus ingress/egress rules and rules_exclusive all moving under one moved block; live-mv: aws_security_group.app renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.postgresql_renamed&amp;rsquo;s block proposed exactly 5 destroys (0 add, 0 change, 5 destroy: SG + 2 ingress + 1 egress + 1 untaggable rules_exclusive), applied cleanly (0 added, 0 changed, 5 destroyed), the security group is genuinely gone from the live account (0 matches on describe-security-groups for the old id, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes nothing; stock oracle on cold_deploy&amp;rsquo;s own state (D-ORACLE remove) also proposes exactly 5 destroys for the same 5 objects; classifyOrphans did not withhold the untaggable rules_exclusive destroy even though module.security_group&amp;rsquo;s and module.consul&amp;rsquo;s own rules_exclusive instances share its block key, because both surviving instances are bound, not unclaimed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;67 resources from nothing, all markers verified via the AWS CLI, 67 records in the local record store (#364 A2), replan empty, 6 tagged security groups (4 named + 2 default adopters) and every named one&amp;rsquo;s rule shape matches $PLAIN_EST&amp;rsquo;s own stage-1 apply object by object, tags stripped&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;8f904b06dc&lt;/code&gt; on 2026-08-25T17:39:23Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-simpleinfra-dns</title><link>https://intentius.io/choudoufu/docs/progress/corpus-simpleinfra-dns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-simpleinfra-dns/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;rust-lang/simpleinfra, terraform/dns (live/corpus-manifest.json) - the Rust project&amp;rsquo;s production DNS for seven domains it owns, crates.io included&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/rust-lang/simpleinfra.git"&gt;https://github.com/rust-lang/simpleinfra.git&lt;/a&gt; at &lt;code&gt;1f7f2e775a5bb567bc96b0f246f2e4656302b70c&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;35 instances (7 zones, 28 records) from plain terraform, 0 of 7 zones carry tofu-estate&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7 stamped, 7 distinct hosted zones, one per module call&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no resource change proposed, nothing foreign; all 35 rendered identities name a live hosted zone or record set&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); 7 zones / 28 records unchanged, all 7 markers unmoved&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one untaggable record drifted, exactly module.rustconf_com.aws_route53_record.cname[&amp;ldquo;2016&amp;rdquo;] proposed and applied, TTL reconverged to 300, 28 records and the parent marker intact&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;FAIL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the post-rename plan proposes a resource change&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.cratesio_com_final&amp;rsquo;s block proposed exactly one destroy (0 add, 0 change, 1 destroy), applied cleanly (0 added, 0 changed, 1 destroyed), the hosted zone is genuinely gone from the live account (route53 get-hosted-zone on the old id now errors, read via the AWS CLI, not choudoufu&amp;rsquo;s own report; 7 zones down to 6), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (E-ORACLE) also proposes exactly one destroy for the same zone (before any rename ever touched it)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;35 instances from nothing (7 zones, 28 records), all 7 markers verified via the AWS CLI, replan empty, stock oracle in its own namespace matches structurally on all 7 zones (28 records)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;57013bfa28&lt;/code&gt; on 2026-08-25T18:05:03Z, exit code 1.&lt;/p&gt;</description></item><item><title>corpus-sqs-basic</title><link>https://intentius.io/choudoufu/docs/progress/corpus-sqs-basic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-sqs-basic/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-sqs examples/complete (tag v5.2.2, commit dd73a96c0155bc324dda5256f3e7a9ea2c710195), reduced to four self-contained module calls per the script&amp;rsquo;s header&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-sqs.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-sqs.git&lt;/a&gt; at &lt;code&gt;v5.2.2&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Clear.&lt;/strong&gt; Every active stage passes.&lt;/p&gt;</description></item><item><title>corpus-sumaform-aws</title><link>https://intentius.io/choudoufu/docs/progress/corpus-sumaform-aws/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-sumaform-aws/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;uyuni-project/sumaform (github.com/uyuni-project/sumaform, 79 stars, pinned by commit not tag), module.server slice of its AWS backend&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/uyuni-project/sumaform.git"&gt;https://github.com/uyuni-project/sumaform.git&lt;/a&gt; at &lt;code&gt;c8a590801d0c7f60d9667f03391455a897900078&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;11 managed resource instances, genuinely cold, genuinely unmarked&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7 stamped, 2 recorded (markers = record honoured at migrate time, GitHub issue #365 slice 2), 0 failed, 2 skipped&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Items 4, 5 and 6 (this script&amp;rsquo;s header) are all FIXED and the plan is genuinely empty (&amp;ldquo;No changes. Your infrastructure matches the configuration.&amp;rdquo;): live-import honours markers = record (located records for aws_instance.instance[0] and aws_ebs_volume.data_disk[0], confirmed at the store and by value against the AWS CLI both right after migrate and again after this empty replan), residue now covers NestingList/NestingSet/NestingMap blocks (internal/live/projection&amp;rsquo;s residueEligibleBlock, widened from the block&amp;rsquo;s SHAPE - whether carriesNoInformation can tell its absence from a real empty answer - never from a type name), and lex00/floci#103 (published in ghcr.io/lex00/floci@sha256:e16d9007a03093b6a6edd22273dee9d8253131f18581b0fa20ae6d34178a3079) now honours RunInstances&amp;rsquo; BlockDeviceMapping.Ebs.VolumeSize for the root device, closing the one line (root_block_device.volume_size = 8 -&amp;gt; 200) that was this crossing&amp;rsquo;s own last wall. Plan moved 3 to add/0/0 (the original ABSENT gap) -&amp;gt; 2 to add/0/2 to destroy (item 4 fixed, item 5&amp;rsquo;s replacement exposed) -&amp;gt; 0 to add/1 to change/0 to destroy (item 5 fixed) -&amp;gt; empty (item 6 fixed by the emulator).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 7 tagged objects before, 7 after, no state file either time; module.server&amp;rsquo;s record-based instance and volume identities unchanged&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the crossing VPC&amp;rsquo;s Name tag tampered out of band, plan proposed fixing exactly aws_vpc.crossing, apply changed 1 and reconverged the tag to sumaform-crossing-vpc; module.server&amp;rsquo;s record-based identities unaffected&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: aws_eip.crossing_nat renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: aws_route_table.crossing_public renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting module.server&amp;rsquo;s block proposed exactly three destroys (0 add, 0 change, 3 destroy: the record-based instance and EBS volume, plus the untaggable/derived volume attachment), applied cleanly (0 added, 0 changed, 3 destroyed), the instance and volume are genuinely gone from the live account (instance State=terminated, volume absent, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (E-ORACLE) also proposes the same three destroys&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;FAIL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the crossing VPC&amp;rsquo;s cidr differs: greenfield=172.31.0.0/16 oracle=172.16.0.0/16&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;28035177a6&lt;/code&gt; on 2026-08-25T17:47:54Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-vpc-complete</title><link>https://intentius.io/choudoufu/docs/progress/corpus-vpc-complete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-vpc-complete/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;terraform-aws-modules/terraform-aws-vpc examples/complete (tag v6.6.1), its flagship example&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/terraform-aws-modules/terraform-aws-vpc.git"&gt;https://github.com/terraform-aws-modules/terraform-aws-vpc.git&lt;/a&gt; at &lt;code&gt;v6.6.1&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: terraform-popular.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a most-downloaded terraform-aws-modules example, pinned by tag; the shape most people deploy&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apply complete! Resources: 62 added, 0 changed, 0 destroyed.; 0 objects carry tofu-estate=vpc-complete-crossing before migration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;40 stamped, 22 skipped, 0 recorded, 0 failed; 39 objects carry tofu-estate=vpc-complete-crossing; the VPC&amp;rsquo;s tofu-slot reads 0 off EC2, written by the migration itself (choudoufu #372)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;empty plan; identity re-check unchanged: module.vpc.aws_vpc.this:0, aws_security_group.rds, module.vpc_endpoints.aws_vpc_endpoint.this:s3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;genuine no-op: 39 objects before, 39 after, no state file either time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one subnet tampered (Example tag), plan proposed fixing exactly one object, apply changed 1 and reconverged the tag to ex-complete&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: module.vpc_endpoints renamed with zero churn (0 add, 7 change, 0 destroy), marker rewritten in place across its taggable objects; live-mv: aws_security_group.rds renamed with zero churn, marker rewritten in place; stock oracle over the same two-object rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting the dynamodb endpoint&amp;rsquo;s map entry (module.vpc_endpoints_renamed.aws_vpc_endpoint.this[&amp;ldquo;dynamodb&amp;rdquo;]) proposed exactly one destroy (0 add, 0 change, 1 destroy), applied cleanly (0 added, 0 changed, 1 destroyed), the endpoint is genuinely gone from the live account (State=absent, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan proposes no resource action; stock oracle on cold_deploy&amp;rsquo;s own state (E-ORACLE) also proposes exactly one destroy for the same object&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;62 resources from nothing (40 tag-stamped, 22 untaggable/derived), replan empty, stock oracle in its own namespace matches on vpc cidr, subnet count (18) and the s3 endpoint&amp;rsquo;s presence&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;8195358eaf&lt;/code&gt; on 2026-08-25T17:42:40Z, exit code 0.&lt;/p&gt;</description></item><item><title>corpus-xancloud-iac</title><link>https://intentius.io/choudoufu/docs/progress/corpus-xancloud-iac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/corpus-xancloud-iac/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;XanCloud/xancloud-iac, blueprints/landing-zone-basic (an AWS landing-zone accelerator: VPC + CloudTrail + account-level IAM baseline), pinned by tag v0.2.0 and commit 7bc78ff79df4f914921cf04fd9728d09526c93bd&lt;/p&gt;&#10;&lt;p&gt;Source: &lt;a href="https://github.com/XanCloud/xancloud-iac.git"&gt;https://github.com/XanCloud/xancloud-iac.git&lt;/a&gt; at &lt;code&gt;v0.2.0&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: opentofu-native.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: a real project built for OpenTofu specifically, so OpenTofu-only surface is exercised&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>reference-ec2-vpc</title><link>https://intentius.io/choudoufu/docs/progress/reference-ec2-vpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intentius.io/choudoufu/docs/progress/reference-ec2-vpc/</guid><description>&lt;!-- Generated by `go run ./tools/gauntlet render` from tools/gauntlet/stages.go, live/gauntlet/estates.json and live/gauntlet.json. Do not edit; TestRenderedDocsAreCurrent holds this file to the tree. --&gt;&#10;&lt;p&gt;hand-written reference project: the plainest getting-started shape (VPC/subnet/SG/IGW/EC2)&lt;/p&gt;&#10;&lt;p&gt;Set: core. Lane: reference.&lt;/p&gt;&#10;&lt;p&gt;Why it is in the core set: the plainest hand-written reference shape, kept in this repository&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Not clear yet.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Stage&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verdict&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Detail&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold deploy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5 resources from plain terraform, a real terraform.tfstate, zero markers&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Migrate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5 of 5 verified, 5 stamped, 0 skipped&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replan from nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;post-adoption plan is empty; markers read back through the AWS CLI in part A&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No-op apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no-op apply (0 added, 0 changed, 0 destroyed); tofu-estate-tagged object count unchanged at 5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drift and reconverge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;one object tampered, exactly aws_instance.main proposed, apply changed 1 and the tag reads back as configured&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;moved block: aws_security_group renamed with zero churn (0 add, 1 change, 0 destroy), marker rewritten in place; live-mv: aws_internet_gateway renamed with zero churn, marker rewritten in place; stock oracle over the same two-resource rename on cold_deploy&amp;rsquo;s own state also shows zero churn (0 add, 0 change, 0 destroy); both live ids unchanged, read via the AWS CLI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Remove a block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu: deleting aws_internet_gateway.renamed&amp;rsquo;s block proposed exactly one destroy (0 add, 0 change, 1 destroy), applied cleanly (0 added, 0 changed, 1 destroyed), the object is genuinely gone from the live account (describe-internet-gateways on the old id no longer returns it, read via the AWS CLI, not choudoufu&amp;rsquo;s own report), and the next plan is empty; stock oracle on cold_deploy&amp;rsquo;s own state (B1.6) also proposes exactly one destroy for the same object; classifyOrphans did not withhold the destroy because no other aws_internet_gateway block is declared anywhere in this config&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Change count (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;FAIL&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;choudoufu&amp;rsquo;s scale-down plan does not destroy count_test[1]&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replace with create_before_destroy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Crash between create and destroy (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Teardown (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan, review, apply (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Greenfield apply&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pass&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5-object structural comparison (vpc/subnet/igw/sg/instance) between the greenfield estate and stock&amp;rsquo;s cold deploy matches, via the AWS CLI on both endpoints, marker tags never compared; local record store held 5 records, one per instance (#364 A2); replanned empty both with and without the local record store&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strict profile (planned)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;not run&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Last run at commit &lt;code&gt;10e3f76bcd&lt;/code&gt; on 2026-08-25T18:04:37Z, exit code 1.&lt;/p&gt;</description></item></channel></rss>