Skip to content

ci: faithful macOS runtime coverage (NFS, Seatbelt, remote suites) - #15

Merged
factory-ain3sh merged 2 commits into
mainfrom
ci/macos-runtime
Aug 10, 2026
Merged

ci: faithful macOS runtime coverage (NFS, Seatbelt, remote suites)#15
factory-ain3sh merged 2 commits into
mainfrom
ci/macos-runtime

Conversation

@factory-ain3sh

Copy link
Copy Markdown
Collaborator

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

  • New macos-runtime job on macos-latest: builds the release binary, then runs scripts/validation/macos-nfs-git-validation.sh (until now a manual hardware gate) plus test-remote-checkpoint-e2e.sh and test-remote-adopt-e2e.sh. /sbin/mount_nfs mounts the session's loopback NFS server unprivileged, so no sudo is involved. Each suite step fails on a SKIP: line — a runner missing prerequisites goes red instead of passing vacuously.
  • Suite platform gates rewritten. The old non-Linux skip ("requires Linux namespaces and FUSE") was false for every leg driving vfs run. Darwin now requires mount_nfs + sandbox-exec; the /dev/fuse and userns checks apply only on Linux; unmount_path uses Darwin umount/umount -f (no -l there).
  • One Linux-only region, guarded, not skipped wholesale: the checkpoint suite's live-checkpoint and streamer legs need the session control socket and background streamer, which the mount owner serves only on Linux. The adopt suite's hollow-streamer leg runs everywhere — its no-empty-chunks assertion holds on macOS precisely because no streamer exists there.

Validation

  • Both suites pass unchanged on Linux against the release binary (ran locally).
  • bash -n on both suites.
  • The macOS legs are the point of this PR's CI run; iterating here until the new job is green before merge.

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.

factory-ain3sh and others added 2 commits August 9, 2026 22:37
…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>
@factory-ain3sh
factory-ain3sh merged commit 5058265 into main Aug 10, 2026
15 checks passed
@factory-ain3sh
factory-ain3sh deleted the ci/macos-runtime branch August 10, 2026 06:02
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