Skip to content

The published image predates -enable-injection, so the levers #56 added cannot be reached from any release #74

Description

@lex00

-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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions