Skip to content

ci: build Apple Silicon releases on macos-15 - #381

Merged
laulpogan merged 3 commits into
mainfrom
cursor/sla-50-macos-15-arm64-runner-29ea
Oct 14, 2026
Merged

laulpogan merged 3 commits into
mainfrom
cursor/sla-50-macos-15-arm64-runner-29ea

Conversation

@laulpogan

@laulpogan laulpogan commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Why

GitHub retires the macos-14 runner image on 2 November 2026, including the standard arm64 label this workflow uses for aarch64-apple-darwin. Jobs on that label already fail during scheduled brownouts. GitHub changelog, 1 October 2026.

Linear: SLA-50.

Image choice

aarch64-apple-darwin now runs on macos-15.

GitHub's hosted-runner table lists the standard arm64 macOS SKU as a 3-core M1, 7 GB RAM, 14 GB SSD machine. The labels on that SKU are macos-14, macos-15, macos-26, and macos-latest (which currently points at the macOS 26 image). Intel Macs are a different SKU (macos-15-intel, macos-26-intel). GitHub-hosted runners.

macos-15 is the replacement that stays on that same standard arm64 machine and is a pinned label:

  • macos-latest now aliases macos-26 and will move again without a workflow edit. A release build should not pick up a new OS image that way.
  • macos-26 is supported and is the longer-lived image, but it is a larger toolchain jump (default Xcode 26). This job is a host cargo build of a Rust CLI, not an Xcode app, so the next supported image in the same runner class is enough to clear the 2 November retirement.
  • macos-15-xlarge and macos-26-xlarge are larger, billed runners. The current job does not need them.

The retirement notice lists macos-15 among the arm64 labels to move to. actions/runner-images#13518.

What stayed the same

  • Triggers: tag push v*.*.* only. No workflow_dispatch, no branch builds.
  • The release job still waits on the full build matrix and still publishes the GitHub Release.
  • publish-crates-io still runs only for stable tags, after build, with the same token skip and already-published warning.
  • Artifact names stay wire-<target> / wire-<target>.exe, checksum files stay shasum -a 256 (or the Windows Get-FileHash line), and the upload name stays wire-${{ matrix.target }}.
  • Linux and Windows matrix rows are unchanged. Intel x86_64-apple-darwin stays dropped.

No tag, GitHub Release, or crates.io publish is part of this change.

Validation

A temporary workflow (added, run, then removed; it is not in the diff) ran the release build steps for this target on macos-15: checkout, stable Rust with aarch64-apple-darwin, cargo build --release --bin wire, the same shasum -a 256 staging, and actions/upload-artifact named wire-aarch64-apple-darwin. It did not create a tag or a release.

Run 38583201430 succeeded on macOS 15.7.9 (arm64):

  • Compiled ring, secp256k1-sys, secp256k1, and slancha-wire v0.17.0. Finished release profile in 2m 51s.
  • Staged wire-aarch64-apple-darwin (Mach-O 64-bit executable arm64) and wire-aarch64-apple-darwin.sha256. shasum -a 256 -c reported OK.
  • LC_BUILD_VERSION minos is still 11.0 (sdk 15.5), so the Apple Silicon floor in the existing comment is unchanged.
  • The uploaded artifact contains those two files under the name wire-aarch64-apple-darwin.
Open in Web Open in Cursor 

GitHub retires the macos-14 runner on 2026-11-02. Pin the
aarch64-apple-darwin job to macos-15, the supported standard arm64
image in the same 3-core M1 runner class.

Co-authored-by: Paul Logan <laulpogan@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Oct 14, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Deploying wireup-landing with  Cloudflare Pages  Cloudflare Pages

Latest commit: 3336c68
Status: ✅  Deploy successful!
Preview URL: https://656fa748.wireup-landing.pages.dev
Branch Preview URL: https://cursor-sla-50-macos-15-arm64.wireup-landing.pages.dev

View logs

cursoragent and others added 2 commits October 14, 2026 14:44
Temporary workflow. Builds aarch64-apple-darwin on macos-15 and stages
the same artifact name and sha256 as release.yml. No tag or publish.

Co-authored-by: Paul Logan <laulpogan@users.noreply.github.com>
The check compiled slancha-wire on macos-15 and uploaded
wire-aarch64-apple-darwin plus its sha256. It is not part of release.

Co-authored-by: Paul Logan <laulpogan@users.noreply.github.com>
@cursor

cursor Bot commented Oct 14, 2026

Copy link
Copy Markdown

Review

Verdict: ready. No change requested. This stays a draft; nothing here merges, marks ready, tags, or publishes.

The diff is only .github/workflows/release.yml: the aarch64-apple-darwin matrix row moves from macos-14 to macos-15, plus a comment. Triggers stay tag-push v*.*.*. The release and publish-crates-io jobs, artifact names, shasum -a 256 staging, and the Linux/Windows rows are untouched. release.yml is identical between 5bb61b73 and 3336c68; the temporary path-check workflow is gone.

Other workflows

macos-14 is not a runs-on value anywhere else under .github. The only remaining macos-14 text is the new comment. The macos-13 note above it is history for the dropped Intel target, not a live label.

Workflow Runners
ci.yml ubuntu-latest, windows-latest
fly-deploy.yml ubuntu-latest
backup-relay-state.yml ubuntu-latest
release.yml ubuntu-latest, windows-latest, and this one macos-15 row

There are no composite actions or reusable workflows.

Runner label

macos-14 retires on 2 November 2026, and the retirement notice lists macos-15 as a replacement arm64 label (changelog, runner-images#13518). GitHub's hosted-runner table puts macos-15 on the same standard arm64 SKU as macos-14: 3-core M1, 7 GB RAM, 14 GB SSD. macos-latest currently points at the macOS 26 image (hosted runners, May 2026 migration note). Pinning macos-15 avoids that alias and avoids the Xcode 26 default on macos-26. macos-15-intel is a different SKU; this row does not use it, so the host cargo build --target aarch64-apple-darwin stays native.

Toolchain and minimum OS

Run 38583201430 on image macos-15-arm64 / macOS 15.7.9 (arm64) matches the release steps: dtolnay/rust-toolchain@stable with target aarch64-apple-darwin, cargo build --release --target aarch64-apple-darwin --bin wire, shasum -a 256, and actions/upload-artifact@v7 named wire-aarch64-apple-darwin. Cache restore was a miss, so this was a clean compile. ring 0.17.14, secp256k1-sys 0.11.0, and slancha-wire v0.17.0 finished in 2m 51s. shasum -a 256 -c reported OK. The artifact is a Mach-O 64-bit arm64 executable.

LC_BUILD_VERSION on that binary is platform macOS, minos 11.0, sdk 15.5. The floor in the existing “Mac users post-2020” comment is unchanged. rustc 1.99.0 came from rustup (stable), not the image’s preinstalled 1.98.1, which is above the crate MSRV of 1.88. The image that ran this job defaults to Xcode 16.4 (macOS 15.5 SDK). Xcode 26 is installed on that image and was not selected; sdk 15.5 shows the link used the 16.4 default (image readme 20260907.0337). No MACOSX_DEPLOYMENT_TARGET or DEVELOPER_DIR override is required for this move.

PR CI does not run release.yml (tag push only). The removed path-check is the right evidence for this job.

Sources:

@laulpogan
laulpogan marked this pull request as ready for review October 14, 2026 15:13
@laulpogan
laulpogan merged commit 42d4346 into main Oct 14, 2026
9 checks passed
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