Skip to content

ci: drop the macOS test legs and release slice; add Linux arm64 test legs - #532

Merged
luisleo526 merged 2 commits into
mainfrom
fu/no-macos-linux-arm64-v2
Oct 26, 2026
Merged

luisleo526 merged 2 commits into
mainfrom
fu/no-macos-linux-arm64-v2

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

Summary

Tests no longer run on macOS, and the release stops building and publishing a macOS archive. Linux x86_64 and arm64 are the supported platforms. The post-merge workflow gains hosted Linux arm64 test legs that run the same verification as the x86_64 legs.

What changes

  • .github/workflows/ci-post.yml: remove job build-macos. Add job build-arm (hosted ubuntu-24.04-arm, Release and Debug) with the same steps and ci_verify profiles as job build. The aggregate build job now needs and requires both. scripts/ci_preflight.py pins that the two jobs keep identical steps (the platform step and the diagnostics artifact name are the only allowed differences).
  • .github/workflows/release.yml: remove the macos-universal prebuilt slice, its Eigen step, the extra CMake flags it used and the shasum fallback. The release notes name the Linux archives. prebuilt is pinned to the two Linux triples, and preflight refuses any macOS step in that job.
  • scripts/ci_release_gate.py: the required post-merge legs are build (ubuntu-24.04, Release|Debug) and build (ubuntu-24.04-arm, Release|Debug), derived from one constant. A run missing any of the four is refused with the leg named. A run with no macOS leg is accepted.
  • scripts/ci_preflight.py, scripts/test_ci_preflight.py, scripts/test_ci_release_gate.py: pins and tests for the above, with rows for a leftover macOS job, a gate that does not need build-arm, an arm job on a non-arm runner, a missing build_type cell, a missing Linux leg, and a run without macOS legs.
  • .github/workflows/ci.yml, docs/ci.md: comments and sentences that named macOS legs. The sentences that leave docs/ci.md are named in the commit message (b0f4341, 4923abf, 7b37d91, eed6598, 3a0d150) for the doc-reverts check; a squash message must keep those names.

Not in this change: README and install pages that still mention macOS (a separate documentation change) and the hub's release-asset expectation.

Evidence

  • Lab preflight on this exact tree (2cf84eb14b04, job rj-20261026t140203-ee5171): passed, all 59 stages, including doc-anchors, doc-lint and doc-reverts.
  • First run of the new arm job, on the same tree (ci-post run 40333359801 dispatched on the branch): build (ubuntu-24.04-arm, Debug) passed in 20 minutes, 1179 of 1179 tests; the Release leg was still running when this was written. The x86_64 legs cannot run on a branch dispatch (the post fleet serves main and dev only), so the four-leg proof is the ci-post run on main after the merge.

Risk and rollback

The arm Release leg's wall time and its CPU runtime-ratio margin are not yet measured. If the ratio is above the ceiling, set the documented candidate-only escape for that leg rather than loosening the ceiling. Revert this commit to restore the macOS legs and the macOS archive.

🤖 Generated with Claude Code

luisleo526 and others added 2 commits October 26, 2026 22:01
…rm64 test legs

Tests no longer run on macOS, and the release stops building and publishing
a macOS archive. Linux x86_64 and arm64 are the supported platforms.

- ci-post.yml: remove job build-macos. Add job build-arm (hosted
  ubuntu-24.04-arm, Release and Debug) that runs the same verification steps
  as job build; the aggregate build job now requires both. A preflight check
  keeps the two jobs' steps identical.
- release.yml: remove the macos-universal matrix slice, its Eigen step, the
  extra CMake flags it used and the shasum fallback; the release notes name the
  Linux archives.
- ci_release_gate.py: the required post-merge legs are build (ubuntu-24.04,
  Release|Debug) and build (ubuntu-24.04-arm, Release|Debug), derived from one
  constant. A run missing any of the four is refused; a run with no macOS leg is
  accepted.
- ci_preflight.py and its tests: pin the new job and matrix, drop every macOS
  pin, and refuse a macOS step in the release prebuilt job. New rows cover a
  leftover macOS job, a gate that does not need build-arm, an arm job on a
  non-arm runner, a missing build_type cell, and the gate's missing-leg and
  macOS-absent cases.
- ci.yml and docs/ci.md: comments and sentences that named macOS legs.

Sentences of docs/ci.md that leave with the macOS legs, named by the commits
that introduced them so the doc-reverts check can match them: the two sentences
about the post cells and the hosted macOS image (b0f4341), the sentence about
the hosted macOS runner's CPU ratio (4923abf, 7b37d91), the sentence about
macOS Debug and pull requests (eed6598) and the sentence that all four full
build cells keep their check names (3a0d150).

Not run on the author's machine.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@luisleo526
luisleo526 merged commit 6c95d82 into main Oct 26, 2026
13 checks passed
@luisleo526

Copy link
Copy Markdown
Collaborator Author

Evidence for this change, gathered before the merge (the x86_64 post-merge legs cannot run from a branch, so they run on main after the merge):

  • arm64 Release leg (ci-post run 40333359801, job 121608494531, head 1c150a3 which has the same tree as this PR's head before the main merge): passed in 70.9 minutes on the 4-core hosted arm runner. Build 17.8 minutes (--parallel 4), tests 52.1 minutes: "100% tests passed, 0 tests failed out of 1239", Total Test time 3128 s. test_ci_verify alone took 2959 s.
  • arm64 Debug leg (job 121608494671): passed in 20.3 minutes, 1179 of 1179 tests.
  • Same test set on both architectures: the sorted names of the 1239 tests executed by the arm64 Release leg are identical to the 1239 executed by an x86_64 Release run of the same tree (lab run, ctest --parallel 64: 100% passed, Total Test time 2579 s). The two sorted lists have the same sha256 (3ff10c56831634a6…) and their diff is empty.
  • Runtime-budget test: test_l4g_runtime_budget is skipped on both architectures in these runs because it needs private fixtures that public CI does not have, so no arm64 CPU ratio was measured; the CPU-time ceiling is therefore unchanged and unexercised on arm64.
  • Pre-merge checks on this PR: preflight (59 stages, including doc-anchors, doc-lint and doc-reverts), corpus parity subset and the ci-only merge route passed.

The follow-up that moves the arm64 legs to the larger hosted arm runner (16 cores) is a separate change.

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