diff --git a/.github/workflows/_build.yml b/.github/workflows/_build.yml index d28bc2c2c..9bff487ac 100644 --- a/.github/workflows/_build.yml +++ b/.github/workflows/_build.yml @@ -39,11 +39,12 @@ jobs: cc: cc cxx: c++ runs-on: ${{ matrix.os }} - # GitHub is sunsetting Intel-macOS runners, so the macos-15-intel leg is - # frequently cancelled before it can be allocated. Mark only that leg - # non-blocking so a scarce runner can't gate the aggregate build result - # (and thus skip smoke/soak in the dry-run). All other legs stay required. - continue-on-error: ${{ matrix.os == 'macos-15-intel' }} + # Every leg is BLOCKING — no continue-on-error. The darwin-amd64 binary + # built on macos-15-intel must ship with every release; if that runner is + # unavailable the build fails loudly rather than silently publishing a + # release with no Intel macOS binary (a user-reported gap). macos-15-intel + # is GitHub's supported Intel image through Aug 2027 (the last x86_64 macOS + # runner); revisit the Intel leg before that retirement. timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/dry-run.yml b/.github/workflows/dry-run.yml index f61dc78bd..bb9e700b1 100644 --- a/.github/workflows/dry-run.yml +++ b/.github/workflows/dry-run.yml @@ -58,9 +58,9 @@ jobs: uses: ./.github/workflows/_build.yml # ── Smoke test every binary ──────────────────────────────────── - # Run unless builds were skipped or a build leg genuinely FAILED. A - # 'cancelled' aggregate caused only by the non-blocking macos-15-intel leg - # (scarce Intel-macOS runner) must NOT skip smoke — see _build.yml. + # Run unless builds were skipped or a build leg FAILED. Every build leg + # (including the macos-15-intel darwin-amd64 binary) is blocking now, so a + # failed/missing platform binary correctly stops smoke — see _build.yml. smoke: if: ${{ inputs.skip_builds != true && !cancelled() && needs.build.result != 'failure' && needs.build.result != 'skipped' }} needs: [build]