Found on the real service 2026-08-06, during the kubemicrovm-ops real-AWS validation.
Real CreateMicroVm (us-east-1, API 2025-09-09) refuses null idle-policy durations:
ValidationException: 2 validation errors detected:
Value null at 'idlePolicy.maxIdleDurationSeconds' failed to satisfy constraint: Member must not be null;
Value null at 'idlePolicy.suspendedDurationSeconds' failed to satisfy constraint: Member must not be null
m80 accepts the same request and runs the VM. That gap let kubemicrovm-ops's minimal tier — which declared no idle policy on the assumption of service defaults — pass a month of local e2e and fail on first contact with the real API (fixed kit-side in kubemicrovm-ops#68 by declaring the fields).
This is exactly the class of divergence the fixture-recording approach exists to catch: the conformance suite presumably never recorded a null-idlePolicy create because every recorded client sent one. Suggest m80 validate idlePolicy.maxIdleDurationSeconds and idlePolicy.suspendedDurationSeconds as required on create, mirroring the real error string and status 400, plus a fixture for the refusal so the suite pins it against real AWS too.
Related: upstream KubeMicroVM#59 asks their webhook to reject the shape at admission; until it does, emulator-side fidelity here is the only thing standing between a laptop-green estate and a runtime refusal loop (KubeMicroVM#58).
Found on the real service 2026-08-06, during the kubemicrovm-ops real-AWS validation.
Real
CreateMicroVm(us-east-1, API2025-09-09) refuses null idle-policy durations:m80 accepts the same request and runs the VM. That gap let kubemicrovm-ops's
minimaltier — which declared no idle policy on the assumption of service defaults — pass a month of local e2e and fail on first contact with the real API (fixed kit-side in kubemicrovm-ops#68 by declaring the fields).This is exactly the class of divergence the fixture-recording approach exists to catch: the conformance suite presumably never recorded a null-idlePolicy create because every recorded client sent one. Suggest m80 validate
idlePolicy.maxIdleDurationSecondsandidlePolicy.suspendedDurationSecondsas required on create, mirroring the real error string and status 400, plus a fixture for the refusal so the suite pins it against real AWS too.Related: upstream KubeMicroVM#59 asks their webhook to reject the shape at admission; until it does, emulator-side fidelity here is the only thing standing between a laptop-green estate and a runtime refusal loop (KubeMicroVM#58).