-enable-injection exists on main and in no published image.
$ git log -1 --format='%h %ci' v0.3.0
87f35cb 2026-08-02 11:47:31 -0600
$ git log -1 --format='%h %ci %s' --grep=injection main
67151c5 2026-08-02 19:37:01 -0600 feat: the failure-injection levers get an HTTP surface (#66)
#66 landed seven hours after v0.3.0 was tagged, so :v0.3.0 and :latest both predate it.
What it costs
kubemicrovm-ops just tried to use the levers and could not. Its harness runs m80 inside k3d, so the flag goes in the deployment args — and an unknown flag is not ignored, it exits. The whole stand-up crashloops on the emulator:
m80 did not become ready. Its last output:
-max-account-memory-mib int
...
-serve-sts
...
That is the failure mode of #65 exactly, one release later and one flag along. It was diagnosed in seconds this time only because #65's fix made the rollout print m80's own flag list — which is worth something, but the second occurrence of a pattern is the one that says the pattern is the problem.
The consumer has shipped with injection off by default and a comment explaining why, so nothing is broken there. But just break-it — the check that a failed build and a failed connector are reported rather than hung on — cannot run in CI against a published image, which means the failure paths stay untested by the one consumer that wanted them.
Ask
A release from main carrying #66. Minor, since -enable-injection is a new flag.
The pattern, which is the more useful part
Both #55 and #65 were the published image lagging main on something a consumer needed, and #54 has carried "the published image matches main" as an unchecked box throughout. Each has been closed by cutting a release, which fixes the instance and not the shape.
Two candidates:
Release on merge to main, so the tag is never the question. The conformance suite and scripts/smoke.sh already gate the image, so the machinery for deciding whether main is releasable is there.
Or fail loudly when it drifts — a check that a flag on main is absent from :latest, run on a schedule, since that is the exact form all three instances took.
The first is a real change in release posture and worth deciding deliberately. The second is a day's work and would have caught all three.
-enable-injectionexists on main and in no published image.#66 landed seven hours after v0.3.0 was tagged, so
:v0.3.0and:latestboth predate it.What it costs
kubemicrovm-ops just tried to use the levers and could not. Its harness runs m80 inside k3d, so the flag goes in the deployment args — and an unknown flag is not ignored, it exits. The whole stand-up crashloops on the emulator:
That is the failure mode of #65 exactly, one release later and one flag along. It was diagnosed in seconds this time only because #65's fix made the rollout print m80's own flag list — which is worth something, but the second occurrence of a pattern is the one that says the pattern is the problem.
The consumer has shipped with injection off by default and a comment explaining why, so nothing is broken there. But
just break-it— the check that a failed build and a failed connector are reported rather than hung on — cannot run in CI against a published image, which means the failure paths stay untested by the one consumer that wanted them.Ask
A release from main carrying #66. Minor, since
-enable-injectionis a new flag.The pattern, which is the more useful part
Both #55 and #65 were the published image lagging main on something a consumer needed, and #54 has carried "the published image matches main" as an unchecked box throughout. Each has been closed by cutting a release, which fixes the instance and not the shape.
Two candidates:
Release on merge to main, so the tag is never the question. The conformance suite and
scripts/smoke.shalready gate the image, so the machinery for deciding whether main is releasable is there.Or fail loudly when it drifts — a check that a flag on main is absent from
:latest, run on a schedule, since that is the exact form all three instances took.The first is a real change in release posture and worth deciding deliberately. The second is a day's work and would have caught all three.