ci: faithful macOS runtime coverage (NFS, Seatbelt, remote suites) - #15
Merged
Conversation
…test The macos-latest job proved compilation, not behavior: gate-shell shards are ubuntu-only, so vfs run's mount_nfs + sandbox-exec path never executed on a Mac in CI and the whole runtime tier hid behind a manual hardware gate. The remote suites' non-Linux skip claimed "requires Linux namespaces and FUSE", which is false for every leg that drives vfs run — the platform- abstracted surface. Both suites now gate per-platform (Darwin requires /sbin/mount_nfs and sandbox-exec; the /dev/fuse and userns checks move under Linux), unmount_path speaks Darwin umount, and the one genuinely Linux-only region — the live-checkpoint and streamer legs, whose control socket and streamer the mount owner serves only on Linux — is guarded explicitly. The adopt suite's hollow-streamer leg stays unconditional: its assertion holds on macOS precisely because no streamer exists there. The new macos-runtime job builds the release binary, puts coreutils' gnubin on PATH for sha256sum/truncate, runs the previously manual macos-nfs-git-validation.sh, then both remote suites. A suite SKIP fails the step: a runner that cannot run these legs must go red, not green. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
…S.md README and both contract docs described macOS as validated only by a manual hardware gate. The macos-runtime job changed that: the NFS validation script and both remote suites now run on macos-latest, and launching git and /bin/bash under the sandbox there covers the dyld-cryptex spot-check that used to be manual. The manual list narrows to the rest of the shell suite, the spaces-and-quotes profile-path check, and run's 127/126 exit-status parity. Trims: the io_uring CI paragraph in TESTING.md and the harness-helper and absolute-medians gotchas in AGENTS.md said the same things in fewer words after the cut; no claim was dropped. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
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.
macOS CI currently proves the workspace compiles and unit tests pass; nothing on a Mac runner ever mounts NFS, applies a Seatbelt profile, or runs a shell e2e suite. This PR closes that gap where the runners honestly can.
What changes
macos-runtimejob on macos-latest: builds the release binary, then runsscripts/validation/macos-nfs-git-validation.sh(until now a manual hardware gate) plustest-remote-checkpoint-e2e.shandtest-remote-adopt-e2e.sh./sbin/mount_nfsmounts the session's loopback NFS server unprivileged, so no sudo is involved. Each suite step fails on aSKIP:line — a runner missing prerequisites goes red instead of passing vacuously.vfs run. Darwin now requiresmount_nfs+sandbox-exec; the/dev/fuseand userns checks apply only on Linux;unmount_pathuses Darwinumount/umount -f(no-lthere).Validation
bash -non both suites.Docs (
docs/TESTING.md,AGENTS.md's "macOS runtime validation is a manual release gate" note) follow in this PR once the job proves out, so the prose describes reality rather than intent.