Skip to content

ci: move the macOS legs off the retired macos-14 runner image - #733

Merged
biafra23 merged 2 commits into
mainfrom
ccr-c8cd472c-4w4pmo
Nov 6, 2026
Merged

biafra23 merged 2 commits into
mainfrom
ccr-c8cd472c-4w4pmo

Conversation

@biafra23

@biafra23 biafra23 commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Why

GitHub retired the macos-14 runner image; the changelog gives the retirement date as 2026-11-02 (changelog, actions/runner-images#13518).

Since 2026-11-06 01:27 UTC, every Desktop DMG run (#1680–#1691) has been cancelled. In each one the Build macOS .dmg job is cancelled about a second after it is queued: no runner, no steps, no log. This covers PRs into main (it is the cancelled check on #731) and every merge to main: #723, #725, #728, #729, #730 and #732. The last green run was #1679 on 2026-11-05.

It is not the workflow's cancel-in-progress concurrency group. The 01:38 run on main was cancelled with no newer run behind it for five hours. No workflow file changed in that window either. Jobs on macos-15 (the iOS framework) run normally.

What changes

Workflow Job Runs on Effect of macos-14
desktop-dmg.yml build PRs into main, main pushes, v* tags dmg check cancelled everywhere
railgun-dmg.yml build main pushes, v* tags, dispatch RAILGUN PoC dmg no longer built
engine-library.yml host-natives darwin-aarch64 / darwin-x86-64 v* tags, publication-path pushes to main, dispatch the next release would ship no macOS engine natives

All three move to macos-15. It is the same architecture (arm64), so nothing else in the jobs changes. The x64 legs still cross-compile with an explicit x86_64-apple-darwin target, and the x64 dmg still uses an x86_64 JDK under Rosetta.

The comments naming macos-14 in desktop-dmg.yml and ios-framework.yml are updated, as is the runner note in docs/android-library.md.

Review

The internal /code-review at low effort found nothing. The automated review found no defects. Its one inline point, the date in the desktop-dmg.yml comment, is fixed in aaaad86.

Test plan

  • All four edited workflow files parse as YAML.
  • Desktop DMG (arm64) runs on this PR: that is the direct check.
  • engine-library.yml and railgun-dmg.yml have no pull_request trigger. Both run on the merge to main: engine-library.yml because this PR edits it, which is one of its paths, and railgun-dmg.yml on every main push. Both can also be dispatched on this branch beforehand from the Actions tab. A non-tag dispatch publishes nothing, since every publish step is gated on refs/tags/v.
  • Not verified in CI: that the dmg still launches on the oldest macOS the workflow comments name, Big Sur for x64. That floor comes from the JDK and rustc's deployment targets rather than the runner's OS, but no CI leg launches the app on an old macOS.

https://claude.ai/code/session_013jBQesEP3XMcXjRSnwz3ku

GitHub retired the macos-14 image on 2026-11-02 (changelog 2026-10-01).
Since 2026-11-06 01:27 UTC every Desktop DMG build job is cancelled about
a second after it is queued, with no runner, no steps and no log; the
last green run was #1679 on 2026-11-05. Jobs on macos-15 (the iOS
framework) run normally.

- desktop-dmg.yml: the build job (every PR into main, every main push,
  v* tags) runs on macos-15.
- railgun-dmg.yml: the RAILGUN PoC dmg (main pushes, tags, dispatch).
- engine-library.yml: the darwin-aarch64 and darwin-x86-64 host-natives
  legs, which run on v* tags; left alone, the next release would have
  shipped no macOS engine natives.
- Comments naming macos-14 in desktop-dmg.yml and ios-framework.yml and
  the runner note in docs/android-library.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013jBQesEP3XMcXjRSnwz3ku
Comment thread .github/workflows/desktop-dmg.yml Outdated
Comment on lines +59 to +60
# under Rosetta 2. BOTH jobs therefore run on macos-15 (Apple Silicon; macos-14 was
# retired on 2026-11-02 and its jobs are cancelled unstarted since):

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Minor (comment accuracy, non-blocking): this wording dates the unstarted-cancellations from 2026-11-02, but by the PR description's own timeline runs stayed green through #1679 on 2026-11-05 and the cancellations began 2026-11-06 01:27 UTC — 2026-11-02 is the changelog's announced retirement date, not the day jobs stopped starting. A future reader tracing a similar runner retirement would otherwise be thrown by green macos-14 runs dated after "retired on 2026-11-02 … cancelled unstarted since". Consider something like: macos-14 was retired (changelog date 2026-11-02); its jobs are cancelled unstarted since 2026-11-06.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Accepted (aaaad86). The comment was wrong in a line I wrote, so I fixed it now rather than leaving it for a later push. The Desktop DMG runs bear this out: #1679 passed on 2026-11-05 11:44 UTC, and #1680 on 2026-11-06 01:27 UTC was the first cancelled unstarted. The comment now reads "macos-14 was retired, changelog date 2026-11-02, and its jobs are cancelled unstarted since 2026-11-06".


Generated by Claude Code

Review on #733: 2026-11-02 is the changelog's retirement date; runs on
macos-14 stayed green through 2026-11-05 and were first cancelled
unstarted on 2026-11-06.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013jBQesEP3XMcXjRSnwz3ku
@claude

claude Bot commented Nov 6, 2026

Copy link
Copy Markdown

Review

Verdict: correct and complete — no defects found. This is a CI-only change (three runs-on bumps, two comment updates, one doc line). None of the standing-rule surfaces (trust model, data sources, :myotis-api boundary, Android API budget, FFI panic discipline) are touched.

What I verified:

  • The sweep is complete. No runs-on: macos-14 remains anywhere in the tree; the only surviving macos-14 strings are the two explanatory comments this PR itself writes (desktop-dmg.yml, ios-framework.yml). node-binding.yml and ios-xcframework.yml use macos-latest (already macOS 15) and are correctly left alone.
  • The architecture assumptions hold. macos-15 is Apple Silicon like macos-14, so everything built around that stays valid: the x64 leg's Rosetta install + x86_64 Temurin JDK, the explicit x86_64-apple-darwin / aarch64-apple-darwin cargo targets on every leg, and the darwin-x86-64 cross-compile in engine-library.yml. The dmg jobs' "Verify .dmg architecture" step explicitly names "runner-image change" among the regressions it guards, so a wrong-arch artifact from this bump would fail loudly rather than ship.
  • Nothing in the touched jobs is image-sensitive. No brew installs, no xcode-select/DEVELOPER_DIR pins, no sw_vers checks; JDKs come from actions/setup-java with an explicit architecture, Rust from dtolnay/rust-toolchain with explicit targets. ios-framework.yml already ran on macos-15; its change is comment-only.
  • The test plan's trigger claims are accurate. engine-library.yml lists .github/workflows/engine-library.yml in its own push paths (line 45), so the merge to main runs the darwin natives legs; railgun-dmg.yml runs on every main push; neither has a pull_request trigger, as the description says.
  • The min-macOS floor of the artifacts is unaffected, as the description argues: the dmg floor comes from the JDK build's and rustc's deployment targets, not the runner OS, and the docs/android-library.md edit keeps the per-platform runner note accurate (glibc 2.35 stays pinned by Ubuntu 22.04, which is untouched).

Minor notes, neither blocking:

  • One inline comment on a date nuance in the new desktop-dmg.yml comment (announced retirement date vs. the first cancelled run).
  • CLAUDE.md asks that the PR description end with the session link and not a generated-footer; here the final line is a _Generated by Claude Code_ footer. It links the session itself rather than the product page, so the rationale of the rule is met, but strictly the bare session link should be the last line.

One caveat: this review sandbox could not fetch the cited changelog / runner-images issue to independently confirm the retirement, but the fix is safe either way — same architecture, and the cancellation evidence in the description is specific and consistent (green through run #1679 on 2026-11-05, cancelled-unstarted from 2026-11-06, macos-15 jobs unaffected). The direct validation is this PR's own Desktop DMG (arm64) check, which was still queued behind the review gate at review time — worth confirming it goes green before merge.

biafra23 commented Nov 6, 2026

Copy link
Copy Markdown
Owner Author

Reply to the review summary, which has no thread of its own:

One inline comment on a date nuance in the new desktop-dmg.yml comment …

Accepted in aaaad86. Details are on its thread.

CLAUDE.md asks that the PR description end with the session link and not a generated-footer …

Accepted. The tool that opened the PR appended that footer to the body I sent. I have edited the description, and it now ends with the session link as its last line, which I confirmed by re-reading the PR. #732 got the same appended footer and is already merged.

… worth confirming it goes green before merge.

Agreed. The Desktop DMG (arm64) run on aaaad86 is the direct proof that macos-15 gets a runner. I'll report the PR ready only once it has passed.


Generated by Claude Code

@biafra23
biafra23 merged commit 5263a42 into main Nov 6, 2026
19 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