feat(app): make the darwin podman-machine check real and provisioning-aware (RIG-3202) - #1034
Open
rigel-mintaka wants to merge 1 commit into
Conversation
|
Compass engineering docs preview: https://compass-native-rig-3202-darw.compass-eng-docs.pages.dev Deployed from |
rigel-mintaka
force-pushed
the
compass-native/rig-3202-darwin-machine-ready
branch
from
September 8, 2026 21:56
ec385c0 to
d4202d5
Compare
…-aware (RIG-3202) Embedded preflight guarded the podman-machine check with `GOOS == "darwin" && MachineReady != nil`, and realPreflight never assigned MachineReady. So on a Mac the check did not fail — it VANISHED from the results, and a caller classifying by result read that as a pass. A user got an all-green preflight followed by an undiagnosed failure further down. Wire a real darwin adapter and close the hole that let it be skipped: - The darwin branch keys on GOOS alone. A nil adapter is now reported as a failed check naming itself a wiring defect, so a wiring regression can no longer turn a broken host into a green preflight. Linux behaviour is unchanged (no machine there, check correctly absent). - The adapter probes `machine ls` then `machine inspect`, and CONNECTS to the forwarded API socket rather than stat-ing it, since a stale forward from a half-stopped machine satisfies a stat. Three failing states are distinguished in the copy — no machine, stopped, running with an unreachable socket — each naming the command to run. - Provisioning is an ensure step (init/start, then RE-PROBE), mirroring how up ensures the image and database rather than gating on them. Readiness comes from the re-probe, never from init's exit status. An unclassifiable CLI answer provisions nothing and is reported from the first probe: init over a machine whose state cannot be read is destructive, and re-probing would report the second answer over the first. - Unparseable output classifies as unknown, which is never ready. machineStatus's zero value is unknown so a failed classification cannot read as ready. - The bring-up window now budgets for a cold provision on darwin. A cold machine init downloads a VM image before any container image is pulled, so the previous 180s ceiling would have deadlined every first launch on a fresh Mac and blamed the timeout rather than the download. The darwin CI lane now runs these tests. They sit behind `(linux && gtk4) || darwin`, so the untagged moon lane excluded them and the gtk4 lane's `-run E2E` filter never matched them — the wiring assertion that catches this exact silent-skip regression ran nowhere. Each required test is asserted by its own PASS line, since `-run` exits 0 when it matches nothing. The OS is a parameter rather than a build tag, so the regression this closes is testable from a linux host. The macOS spike has NOT run. Every podman-CLI output shape here is designed-against-assumption per the record's own convention: the parse accepts both the Running bool and the State string, and degrades rather than trusting either. macOS provisioning is not claimed to work. Refs RIG-3202, RIG-1662. Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
force-pushed
the
compass-native/rig-3202-darwin-machine-ready
branch
from
September 8, 2026 22:04
d4202d5 to
d924557
Compare
rigel-mintaka
marked this pull request as ready for review
September 8, 2026 22:04
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.
This PR is part of a stack containing 2 PRs:
mainEmbedded preflight guarded the podman-machine check with
GOOS == "darwin" && MachineReady != nil, and realPreflight neverassigned MachineReady. So on a Mac the check did not fail — it VANISHED
from the results, and a caller classifying by result read that as a pass.
A user got an all-green preflight followed by an undiagnosed failure
further down.
Wire a real darwin adapter and close the hole that let it be skipped:
failed check naming itself a wiring defect, so a wiring regression can
no longer turn a broken host into a green preflight. Linux behaviour is
unchanged (no machine there, check correctly absent).
machine lsthenmachine inspect, and CONNECTS tothe forwarded API socket rather than stat-ing it, since a stale forward
from a half-stopped machine satisfies a stat. Three failing states are
distinguished in the copy — no machine, stopped, running with an
unreachable socket — each naming the command to run.
up ensures the image and database rather than gating on them. Readiness
comes from the re-probe, never from init's exit status. An unclassifiable
CLI answer provisions nothing: init over a machine whose state cannot be
read is destructive.
machineStatus's zero value is unknown so a failed classification cannot
read as ready.
machine init downloads a VM image before any container image is pulled,
so the previous 180s ceiling would have deadlined every first launch on
a fresh Mac and blamed the timeout rather than the download.
The OS is a parameter rather than a build tag, so the exact regression this
closes is testable from a linux host.
The macOS spike has NOT run. Every podman-CLI output shape here is
designed-against-assumption per the record's own convention: the parse
accepts both the Running bool and the State string, and degrades rather
than trusting either. macOS provisioning is not claimed to work.
Refs RIG-3202, RIG-1662.
Co-authored-by: Matt Wilkinson matt@rigel.build