Skip to content

fix(preflight): provision the darwin machine before probing podman (RIG-3563) - #1057

Open
rigel-mintaka wants to merge 1 commit into
mainfrom
compass-native/rig-3563-preflight-order
Open

fix(preflight): provision the darwin machine before probing podman (RIG-3563)#1057
rigel-mintaka wants to merge 1 commit into
mainfrom
compass-native/rig-3563-preflight-order

Conversation

@rigel-mintaka

@rigel-mintaka rigel-mintaka commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

On macOS every podman command talks to the Linux VM, so with no machine
provisioned they do not merely report a missing feature, they fail to
connect at all. Measured on macOS 26.5.1 with podman 5.8.6 and no
machine:

$ podman info    -> exit 125, "Cannot connect to Podman ..."
$ podman version -> exit 125, same

Those two commands back preflight checks (2) and (3), and both are
FATAL. They ran BEFORE the darwin machine check, whose adapter is the
thing that provisions the VM. So on a fresh Mac — the exact host the
machine check exists to serve — provisioning succeeded and the launch
failed anyway, reporting "rootless podman is required". Run
deliberately does not short-circuit, so the two failures were already
recorded by the time the machine came up.

Move the darwin machine check ahead of the podman probes. The ensure
step provisions the VM first, which turns both probes from guaranteed
failures into real checks. §A3 fixes each check's SEVERITY but says
nothing about ORDER, so this is within the frozen record.

The regression test fails on the old order with the same copy the real
host produced. Verified on the Mac, not only cross-compiled.

Refs RIG-3563, RIG-3202, RIG-1662.

Co-authored-by: Matt Wilkinson matt@rigel.build

@linear-code

linear-code Bot commented Sep 10, 2026

Copy link
Copy Markdown

RIG-3563

RIG-3202

RIG-1662

@rigel-mintaka
rigel-mintaka added this pull request to stack #1035 September 10, 2026 01:54
@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-native-rig-3563-pref.compass-eng-docs.pages.dev

Deployed from compass-native/rig-3563-preflight-order at cb1dbb9.

Base automatically changed from compass-native/rig-3202-darwin-machine-ready to main September 10, 2026 02:07
@trunk-io

trunk-io Bot commented Sep 10, 2026

Copy link
Copy Markdown

Merging to main in this repository is managed by Trunk.

  • To merge this pull request, check the box to the left or comment /trunk merge below.

After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here

@rigel-mintaka
rigel-mintaka force-pushed the compass-native/rig-3563-preflight-order branch from 116fee5 to 64837b6 Compare September 10, 2026 02:28
…IG-3563)

On macOS every podman command that reaches the container ENGINE talks to
the Linux VM, so with no machine provisioned they do not report a missing
feature, they fail to connect at all. Measured on macOS 26.5.1 with
podman 5.8.6 and no machine, on the exact argv each check runs:

    podman info                                 -> 125
    podman version --format {{.Client.Version}} -> 125

Both back FATAL preflight checks, and both ran BEFORE the darwin machine
check, whose adapter is the thing that provisions the VM. So on a fresh
Mac — the exact host the machine check exists to serve — provisioning
succeeded and the launch failed anyway, reporting "rootless podman is
required". Run deliberately does not short-circuit, so both failures were
already recorded by the time the machine came up.

Run the machine check first. That turns both probes from guaranteed
failures into real checks. Ordering the cheap version floor first instead
would refuse every fresh Mac rather than only below-floor ones, since it
cannot run without a machine either.

Execution order and REPORTING order are separate. The machine result is
appended after the two podman results, because Err formats in slice
order: on a Mac with no podman installed at all, the operator should read
the root cause first, not the symptom it causes.

The image check shells `podman image exists`, which also reaches the
engine, so it shares the precondition and joins the test's latch. Both
properties are pinned by assertions proven red against a deliberately
broken order.

§A3 fixes each check's SEVERITY but states no ordering constraint, so
this stays inside the frozen record. Verified on the Mac, not only
cross-compiled.

Refs RIG-3563, RIG-3202, RIG-1662.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@rigel-mintaka
rigel-mintaka force-pushed the compass-native/rig-3563-preflight-order branch from 64837b6 to cb1dbb9 Compare September 10, 2026 02:39
@rigel-mintaka
rigel-mintaka marked this pull request as ready for review September 10, 2026 02:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant