terminate is idempotent on a terminated VM — recorded, and the guess it replaces wedged a real consumer - #85
Merged
Merged
Conversation
…it replaces wedged a real consumer Recorded 2026-08-06 against live AWS: a second TerminateMicrovm on a TERMINATED VM answers 200 with an empty object, exactly like the first. m80 extrapolated the suspend-on-terminated 400 onto it, and the guess was load-bearing in the worst way — KubeMicroVM v1.0.12's finalizer fix (upstream #51, which this harness found) re-issues the terminate on cleanup, and m80's 400 wedged the loop against behaviour the real service never exhibits. The same probe re-verified suspend-on- terminated as the recorded 400: the terminated state refuses changes while accepting the one request that asks for what is already true. The terminate handler goes idempotent; the extrapolating test moves to suspend where the recording actually lives; a new test pins the exception; the conformance case grows a terminate-terminated step with its fixture (101 checks now). Chart defaults move to 1.0.12 and the matrix moves with reality per the gate's own rule: 52 of 63, QS-08 and RS-06 into the passing column, 99 Final Cleanup reclassified as debris inherited from the endpoint-race group. And up.sh states the kubeconfig flags explicitly on create — k3d 5.8.3 was observed twice ignoring options.kubeconfig delivered via --config. Closes #83. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WVmBmk6XERjKxHa4HyezvT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #83, and settles today's #51 investigation with a recording instead of an argument.
The recording (live AWS, 2026-08-06): run → terminate → TERMINATED → terminate again → 200
{}, identical to the first. Suspend-on-terminated re-verified in the same probe as the recorded 400. So the terminated state refuses changes while accepting the request that asks for what is already true — and m80's extrapolated 400 on the double-terminate was wrong in the one place it could hurt: KubeMicroVM v1.0.12's cleanup re-issues the terminate, and the emulator's guess wedged the very fix this harness's bug report produced.errors-conflictgrows aterminate-terminatedstep + fixture — 101/101 locally against the candidate image.QS-08andRS-06into the passing column,99 Final Cleanupreclassified as debris inherited from the endpoint-race group (its account explains why it flips only when that group does). README, landing and the failure account tell the finished story: found by this harness, fixed upstream in v1.0.12, verified here the day after — with the emulator itself the last thing standing between the fix and the passing column, wrong in the correct way: visibly, and once.up.shstates--kubeconfig-update-default --kubeconfig-switch-contextexplicitly: k3d 5.8.3 observed (twice, two repos) ignoringoptions.kubeconfigdelivered via--config.The PR's own uat job is the proof-of-record: candidate image, chart 1.0.12, held to the new expectations.
🤖 Generated with Claude Code
https://claude.ai/code/session_01WVmBmk6XERjKxHa4HyezvT