trunk-merge/pr-1055/00a96fc0-bcff-48d5-b185-e92ef56a63d4 - #1058
Closed
trunk-io[bot] wants to merge 5 commits into
Closed
trunk-merge/pr-1055/00a96fc0-bcff-48d5-b185-e92ef56a63d4#1058trunk-io[bot] wants to merge 5 commits into
trunk-io[bot] wants to merge 5 commits into
Conversation
…G-3548) compass-stack up records a start-time identity token for every child it spawns, to close the pid-recycling window. The only reader was /proc/<pid>/stat, so up refused on macOS: pgidfile.go is //go:build unix, which darwin satisfies, meaning darwin compiled the Linux reader and failed at runtime rather than at build time. Add a darwin reader at BOTH identity sites, split behind the existing seams into _linux.go/_darwin.go files. The token is read at spawn by the core and independently at teardown by the group-signal adapter, and GroupSignaller.Alive compares the two for uint64 equality — so both darwin readers share one packing rule (sec*1e6 + usec over the KinfoProc start timeval, via sysctl kern.proc.pid), pinned by mirrored tests in both packages. A drift between them would report every live child as not-alive and silently skip it at teardown, which is why the duplication is pinned rather than trusted. Both readers fail closed on a dead pid, so a failed read can never yield a 0 token that would spuriously match a record carrying 0. The darwin CI lane gains a step running the stack suite natively, because cross-compiling type-checks these readers but never executes them, and the sysctl has no Linux stand-in. The readers have NOT run on a real macOS host yet; that step is what will prove them. Promotes golang.org/x/sys to a direct dependency (already in the module graph); go.sum unchanged. Refs RIG-3548, RIG-1662. Co-authored-by: Matt Wilkinson <matt@rigel.build>
…-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>
|
Compass engineering docs preview: https://trunk-merge-pr-1055-00a96fc0.compass-eng-docs.pages.dev Deployed from |
trunk-io
Bot
deleted the
trunk-merge/pr-1055/00a96fc0-bcff-48d5-b185-e92ef56a63d4
branch
September 10, 2026 02:20
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 pull request was created and is being managed by Trunk Merge.
This pull request is based on the main branch at SHA 2db7e4e69fed26c3e0fad033d0c3942fd755da37.
See more details here.
When CI completes, this pull request will be closed automatically.
Pull Requests Being Tested
This pull request is testing the changes from pull request 1055.
Dependencies
This pull request depends on the changes from pull request 1034.