Repository navigation
Run the full macOS suite on main and nightly, with a one-job macOS gate on PRs into main - #925
Merged
Merged
Conversation
…PRs into main A macos-plan job picks the macOS work per event: the four shards on pushes to main, nightly, by hand or for a PR into main labelled test:macos; one gate job (clippy plus the macos-gate nextest profile) for other PRs into main; and none for PRs into other bases, such as Spec branches. The test-macos check passes only on the work its plan required. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… gate's cache read-only The nextest profile's comment now defers to docs/ci-performance.md for which runs get the full suite, and names the console installer's Linux-only refusal as uncovered. The gate no longer saves the shared macOS cache, so a labelled PR's shards restore main's full build. The docs now state that a label added mid-run leaves the cancelled run's checks on the same head (#927). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 21, 2026
Merged
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.
Summary
CI's new
macos-planjob decides which macOS work each event gets. Thetest-macoscheck stays on every run and requires that work to pass..config/nextest.tomlas themacos-gateprofile'sdefault-filter. A comment there says what the filter must cover: the#[cfg(target_os = "macos")]process identity, the non-Linux skills directory handle, and the platform branches in child Run handling.test:macoslabel now exists, with a description of what it does.docs/ci-performance.mdrecords the table, the reasons, the trade-offs and what to do when the nightly run is red.python3 scripts/generate-release.py --checkpasses).Tests the gate selects
cargo nextest list --profile macos-gategives 79 tests, the same 79 on Linux and in the macOS job ("Starting 79 tests across 3 binaries"):bin/thirdshiftlogs::recording::testsprocess_identity::start)bin/thirdshiftlogs::reading::testsbin/thirdshiftlogs::owner::testsbin/thirdshiftlogs::stop::testsbin/thirdshiftskills::testsO_SEARCHskills directory handlebin/thirdshiftchild_run::execution_tests/tests/asks::testsstop(all)terminatethroughthirdshift stopspec_runa_linear_spec_lands_each_ticket_in_order_then_opens_a_ready_spec_pr,a_signal_to_the_spec_run_alone_fails_the_ticket_run_then_ends_the_spec_run_as_interruptedcurrent_exeon macOSEvidence
Before: every
pull_request, whatever its base, ran fourmacos-26shards (#870's Ticket PR waited over an hour on them).After: real runs:
test-macosmainsuccess, shards skippedsuccesslabeledtest:macoson the same headsuccess(10-17 min, each queued ~3 s), gate skippedsuccessissue-893-probe-basesuccesssuccess, shards skippedsuccessSummary [74.006s] 79 tests run: 79 passed (2 slow), 1175 skipped. In 39541320165 it took 2 min 40 s.test,site-testandconsole-testran and passed in every run above.cargo nextest rungaveSummary [1448.331s] 2168 tests run: 2168 passed.cargo clippy --all-targets -- -D warnings,python3 -m unittest discover -s scripts -p 'test_*.py'andpython3 scripts/generate-release.py --checkall pass.actionlintreports only that it doesn't know the existingmacos-26label.main, nightlyscheduleandworkflow_dispatchpaths only run once this is onmain. All three take thefullbranch of the samemacos-planstep that 39539107043 exercised.Merge Danger
Door: two-way
Reverting
ci.ymlrestores the four shards on every PR.Blast Radius: CI
mainor overnight, not on its PR. One from a Spec's Ticket shows up at the Spec PR.schedulecron.Unaddressed findings
Review reports: Standards and Spec, against
main. Every changed file was read by both axes; no file was left unread, and there were no generated-output exclusions.Standards
test-macos-gateandtest-macos-shard, with drifted step names. Declined. The gate's step installs and uses theclippycomponent and is named like the Linuxtestjob's step, which does the same (.github/workflows/ci.yml, thetestjob's "Install the Rust version and components rust-toolchain.toml names"). The shards run no clippy. Sharing four steps would need a composite action file.full | gate | nonestring switched on in several places. Declined.macos-planis the one place the rule is decided. The jobif:s and the aggregate'scase(with*) exit 1) only compare its output, and Actions job outputs are strings.macos-26job…"), anddocs/research/macos-ci-speed.mduses the same word.Spec
test-macosonly assuccess, buttestascancelled(39537982242) beside the new run'sin_progresson the same head.src/ci.rs:464-471readsCancelledas Failed.Security
pull_requesttrigger (nopull_request_target), adds no secrets or permissions, passesgithub.base_refand the label check to the plan step throughenv:rather than inline expressions, and the gate restores the macOS cache read-only (save-if: false). The newscheduleandworkflow_dispatchtriggers run code already on the chosen ref, andworkflow_dispatchneeds write access.test-macosfails closed when the plan produced no output.Closes #893
🤖 Generated with Claude Code
Built with claude · claude-opus-5-5 · medium
Security review outcome
No unaddressed introduced findings.