Context
In our migrations, we move resources between modules while legitimately changing module outputs (e.g., renaming/reformatting). No real resources change.
From what we can see, tfmigrate relies on terraform plan -detailed-exitcode to decide whether a migration is “clean.”
Because exit code 2 is returned for any diff (including output-only), tfmigrate treats these as failures.
Using force to proceed despite diffs is too coarse/risky—we want to fail on real resource changes but allow outputs to vary.
Questions
Was relying on the exit code an intentional “any diff = fail” safety choice, or mainly for simplicity?
Would you have any concerns if we validated no-op by parsing terraform show -json or terraform plan -output json and confirming there are no resource actions (create/delete/replace), while ignoring .output_changes?
Thanks!