Skip to content

CI: build the madspace macOS wheels on macos-15 (macos-14 retires 2 Nov) - #358

Merged
oliviermattelaer merged 1 commit into
mainfrom
claude/ci-macos15-wheels
Oct 28, 2026
Merged

oliviermattelaer merged 1 commit into
mainfrom
claude/ci-macos15-wheels

Conversation

@oliviermattelaer

@oliviermattelaer oliviermattelaer commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

The madspace macOS wheel job (.github/workflows/madspace.yml) runs on macos-14. GitHub retires that image on 2 November 2026 (changelog):

  • jobs fail on purpose during the remaining brownouts, 29 and 30 October, 14:00–24:00 UTC;
  • capacity is already reduced. On 28 October the macOS wheel job of MLM merging #72 was never given a runner ("The job was not acquired by Runner of type hosted even after multiple attempts") and was cancelled after two hours.

It is the only macOS job in our CI. release.yml calls the same workflow, so after 2 November the releases would have no macOS wheel either.

Change

os: macos-14 → os: macos-15, the arm64 replacement GitHub recommends.

  • Not macos-latest: it now means macOS 26 and keeps moving, Xcode included.
  • Same minimum macOS: MACOSX_DEPLOYMENT_TARGET stays 14.5, so the wheels still install on macOS 14.5 and later. Homebrew only provides doxygen (a build tool) and OpenBLAS is off on macOS, so delocate should not bundle any library that needs macOS 15. The wheel tag from this branch's run is checked below.

Check

The push run of this branch (run 40736092772) shows:

  • Image: macos-15-arm64. It got a runner within 6 minutes.
  • Repaired wheel: madspace-0.2.1-cp312-cp312-macosx_14_0_arm64.whl, the same tag as main's macos-14 job. cibuildwheel built macosx_11_0_arm64, and delocate set it to 14.0, exactly as on macos-14, so nothing now requires macOS 15.
  • Wheel tests: 1819 passed, 12 skipped, the same as on main.

🤖 Generated with Claude Code

GitHub retires the macos-14 hosted image on 2026-11-02, with brownouts
(jobs fail) on 2026-10-29 and 2026-10-30, 14:00-24:00 UTC, and reduced
capacity before that: on 2026-10-28 the macOS wheel job of #72 was never
given a runner. macos-15 is the arm64 replacement GitHub recommends;
macos-latest is avoided because it now means macOS 26 and keeps moving.
MACOSX_DEPLOYMENT_TARGET stays 14.5, so the wheels still install on
macOS 14.5 and later.

Co-Authored-By: Claude <noreply@anthropic.com>
@theoheimel
theoheimel self-requested a review October 28, 2026 18:47

@theoheimel theoheimel left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me

@oliviermattelaer
oliviermattelaer merged commit bbfbf27 into main Oct 28, 2026
187 checks passed
@oliviermattelaer
oliviermattelaer deleted the claude/ci-macos15-wheels branch October 28, 2026 19:57
oliviermattelaer added a commit that referenced this pull request Oct 28, 2026
Brings in #348 (vector iflav per warp), #341 (LO vector flavour grouping),
#340 (mg5 3.8.2), #222, #356, #336, #343, #345, #338, #339, #342, #290,
#331, #325, #337, #358.

Conflicts:
- matrix_madevent_group_v4.inc: main's per-beam-orientation NTRY(IM,...)
  kept with the crossing holes: IM is set before the crossing decode, NTRY is
  keyed by the base flavor FLAV_USE (me_flav_key), and the crossed indices'
  own try counter NTRYX gets the orientation too (NTRYX(2,NXFLAV), in
  me_goodhel_ntry and smatrix_me_cross_decode). GOODHEL stays the one filter
  of the base and every crossing.
- auto_dsig_v4.inc: main's per-warp GET_FLAVOR(IFLAV) goes through the
  dsig_getflavor_vec hole (a cross-group dependent reads DSIG_XGFLAV(:,IFLAV));
  SMATRIX_MULTI sets main's per-event IPSEL/IMIRROR and then calls the routed
  base with DSIG_XGROUTE(IFLAV_VEC(IVEC)), IFLAV_VEC being per event there,
  so every lane still selects its own crossing.
- export_v4.py: zero_tchannel_width/custom_helas_call (main) next to the
  crossing template helpers; the t-channel width stays dropped at runtime in
  ALOHA (crossing-safe, a t-channel of the base can be an s-channel of a
  crossing): the fk_ tag only flags it, and _export now sets
  aloha.t_channel_width from the standalone exporter's zero_tchannel_width
  (rw/msP/msF drop it by default, standalone keeps it, --zerowidth_tchannel
  overrides; loop exporters unchanged).
- MadSpin/decay.py: without_crossing() and main's zero_width argument.
- SigmaKin.cc (cpu/simd): crossing-aware select_helicity_signed with main's
  [[maybe_unused]].
- reweight_interface, hel_recycle, export_mg7, banner: crossing side with
  main's spelling fixes; madgraph_interface help: both options.
- test_cmd.py density references: crossing side (already zero t-channel
  width + exact C-parity); test_reweight_density.py: both test classes;
  unittest.yml: both steps and the new real-channels job.
- MatchBox f2py_matrix_wrapper golden: stays deleted.

Tests: test_UFO_fortran_tchannel_width_standalone_rw adapted to the runtime
ALOHA drop; new TestMadeventVectorCrossingXsec (vector_size 16, no helicity
recycling, crossing-routed u b1 > c1 d1 vs --use_crossing=False).
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.

2 participants