From af5ba92f91960a266cc67c80f34abd05f4d7c287 Mon Sep 17 00:00:00 2001 From: Joseph Mearman Date: Sun, 13 Sep 2026 14:00:30 +0100 Subject: [PATCH 1/2] fix(ci): replace the retired macos-13 runner label with macos-latest-large MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GitHub fully retired the macos-13 runner image on 2025-12-08. A job targeting it never gets assigned a runner and queues forever rather than failing loudly, which is exactly what both verify-macos (macos-13) and sea (macos-13) did across two separate releases — each stuck queued for well over an hour with zero progress, confirmed against GitHub's own actions/runner-images README, which no longer lists macos-13 as an available image at all. macos-latest-large is GitHub's current arm64/x64 counterpart to macos-latest, tracking whichever OS version that means over time rather than pinning to a specific one that will itself eventually be retired the same way. --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 736568c..9e5814e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,9 +90,10 @@ jobs: strategy: fail-fast: false matrix: + # macos-latest and macos-latest-large are GitHub's own arm64/x64 pair for the current macOS runner generation, tracking whichever OS version that means over time — deliberately not a version-pinned label like macos-13, which GitHub fully retired on 2025-12-08 (github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down) and which then queued forever with no runner ever assigned, rather than failing loudly. include: - os: macos-latest - - os: macos-13 + - os: macos-latest-large runs-on: ${{ matrix.os }} timeout-minutes: 15 steps: @@ -167,10 +168,10 @@ jobs: strategy: fail-fast: false matrix: - # Every (platform, arch) pair on a standard runner image: two darwin legs, two linux, two win32. Windows was excluded here previously (a genuine Node limitation: no filesystem-path AF_UNIX support on Windows, only named pipes — nodejs/node#55979), but CcPeer now branches to a real named pipe on native Windows (see paths.ts and win-proc-info.ts), so both legs build a working binary again. build-sea.ts qualifies each asset name by process.platform AND process.arch so shared-OS legs cannot clobber each other's release upload, and gives win32 its .exe. + # Every (platform, arch) pair on a standard runner image: two darwin legs (macos-latest-large is GitHub's current arm64/x64 counterpart to macos-latest — see verify-macos's own comment on why this isn't a version-pinned label like the retired macos-13), two linux, two win32. Windows was excluded here previously (a genuine Node limitation: no filesystem-path AF_UNIX support on Windows, only named pipes — nodejs/node#55979), but CcPeer now branches to a real named pipe on native Windows (see paths.ts and win-proc-info.ts), so both legs build a working binary again. build-sea.ts qualifies each asset name by process.platform AND process.arch so shared-OS legs cannot clobber each other's release upload, and gives win32 its .exe. include: - os: macos-latest - - os: macos-13 + - os: macos-latest-large - os: ubuntu-latest - os: ubuntu-24.04-arm - os: windows-latest From 5be6bcc20b9bec4d2ab263e4ddcd15040f87b5bd Mon Sep 17 00:00:00 2001 From: Joseph Mearman Date: Sun, 13 Sep 2026 14:04:16 +0100 Subject: [PATCH 2/2] fix(ci): use macos-26-intel instead of macos-latest-large macos-latest-large failed a job in 4 seconds with zero recorded steps, the signature of a runner request GitHub's scheduler could never satisfy at all. actions/runner-images' own README lists both labels as aliases for the identical x64 macOS 26 image, but -large evidently routes through the (not enabled on this account) Larger Runners feature rather than acting as a plain alias in practice. macos-26-intel names the same image without going through that path. --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e5814e..56923fb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,10 +90,10 @@ jobs: strategy: fail-fast: false matrix: - # macos-latest and macos-latest-large are GitHub's own arm64/x64 pair for the current macOS runner generation, tracking whichever OS version that means over time — deliberately not a version-pinned label like macos-13, which GitHub fully retired on 2025-12-08 (github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down) and which then queued forever with no runner ever assigned, rather than failing loudly. + # macos-latest (arm64) and macos-26-intel (x64) are GitHub's current pair for this macOS generation. macos-13, retired by GitHub on 2025-12-08 (github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down), used to be the x64 half of this pair; it queued forever with no runner ever assigned rather than failing loudly. macos-latest-large, listed alongside macos-26-intel in actions/runner-images' own README as an alias for the identical x64 image, was tried first and failed a job in 4 seconds with zero recorded steps — the signature of a runner request GitHub's scheduler could never satisfy at all, consistent with -large routing through the (opt-in, not enabled here) Larger Runners feature rather than being a plain alias in practice. include: - os: macos-latest - - os: macos-latest-large + - os: macos-26-intel runs-on: ${{ matrix.os }} timeout-minutes: 15 steps: @@ -168,10 +168,10 @@ jobs: strategy: fail-fast: false matrix: - # Every (platform, arch) pair on a standard runner image: two darwin legs (macos-latest-large is GitHub's current arm64/x64 counterpart to macos-latest — see verify-macos's own comment on why this isn't a version-pinned label like the retired macos-13), two linux, two win32. Windows was excluded here previously (a genuine Node limitation: no filesystem-path AF_UNIX support on Windows, only named pipes — nodejs/node#55979), but CcPeer now branches to a real named pipe on native Windows (see paths.ts and win-proc-info.ts), so both legs build a working binary again. build-sea.ts qualifies each asset name by process.platform AND process.arch so shared-OS legs cannot clobber each other's release upload, and gives win32 its .exe. + # Every (platform, arch) pair on a standard runner image: two darwin legs (macos-26-intel is GitHub's current x64 counterpart to macos-latest's arm64 — see verify-macos's own comment on why this isn't macos-latest-large or the retired macos-13), two linux, two win32. Windows was excluded here previously (a genuine Node limitation: no filesystem-path AF_UNIX support on Windows, only named pipes — nodejs/node#55979), but CcPeer now branches to a real named pipe on native Windows (see paths.ts and win-proc-info.ts), so both legs build a working binary again. build-sea.ts qualifies each asset name by process.platform AND process.arch so shared-OS legs cannot clobber each other's release upload, and gives win32 its .exe. include: - os: macos-latest - - os: macos-latest-large + - os: macos-26-intel - os: ubuntu-latest - os: ubuntu-24.04-arm - os: windows-latest