[fix] prevent macos-13 runner starvation from blocking docker image update (#395)

macos-13 (Intel Mac) GitHub Actions runners have become increasingly scarce
and regularly queue for 24h before timing out. This caused the entire build
matrix to fail, blocking update-docker and leaving the release status stuck
at BUILDING indefinitely.

- Remove macOS-x86_64 (macos-13) from the build matrix: Intel Mac is being
  phased out and no downstream consumer (Docker image, Linux workflow) needs
  darwin-x86_64 artifacts; Apple Silicon covers all active Mac use cases
- Add fail-fast: false so a future matrix failure does not cancel remaining
  in-progress builds
- Fix failure job condition to always() && failure() so it fires even when
  update-docker is skipped rather than failed, preventing status from being
  stuck at BUILDING
diff --git a/.github/workflows/build-4.0.yml b/.github/workflows/build-4.0.yml
index e41fde2..518ccda 100644
--- a/.github/workflows/build-4.0.yml
+++ b/.github/workflows/build-4.0.yml
@@ -113,32 +113,9 @@
     needs: prerelease
     if: needs.prerelease.outputs.should_release == 'true' || (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build == 'true')
     strategy:
+      fail-fast: false
       matrix:
         config:
-          - name: macOS-x86_64
-            os: macos-13
-            packages: >-
-              'm4'
-              'automake'
-              'autoconf'
-              'libtool'
-              'pkg-config'
-              'texinfo'
-              'coreutils'
-              'gnu-getopt'
-              'python@3'
-              'ninja'
-              'ccache'
-              'bison'
-              'byacc'
-              'gettext'
-              'wget'
-              'pcre'
-              'openjdk@11'
-              'maven'
-              'node'
-              'llvm@20'
-
           - name: macOS-arm64
             os: macos-14
             packages: >-
@@ -458,7 +435,7 @@
   failure:
     name: Failure
     needs: [build, update-docker]
-    if: failure()
+    if: always() && failure()
     runs-on: ubuntu-latest
     env:
       GH_REPO: ${{ github.repository }}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 7d896e6..e88684c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -99,10 +99,12 @@
     needs: prerelease
     if: needs.prerelease.outputs.should_release == 'true' || (github.event_name == 'workflow_dispatch' && github.event.inputs.force_build == 'true')
     strategy:
+      fail-fast: false
       matrix:
         config:
           - name: macOS-x86_64
             os: macos-13
+            continue-on-error: true
             packages: >-
               'm4'
               'automake'
@@ -176,6 +178,7 @@
               'maven'
 
     runs-on: ${{ matrix.config.os }}
+    continue-on-error: ${{ matrix.config.continue-on-error == true }}
     env:
       GH_REPO: ${{ github.repository }}
       GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -422,7 +425,7 @@
   failure:
     name: Failure
     needs: [build, update-docker]
-    if: failure()
+    if: always() && failure()
     runs-on: ubuntu-latest
     env:
       GH_REPO: ${{ github.repository }}