From 7ae7997c9371f1b28f32312a2ae1e4c0524c5304 Mon Sep 17 00:00:00 2001 From: jdx <216188+jdx@users.noreply.github.com> Date: Sun, 3 May 2026 15:17:22 +0000 Subject: [PATCH] chore(ci): use !cancelled() instead of always() for final job Combined with the workflow's `cancel-in-progress` group, `if: always()` overrides cancellation and runs the aggregator even on superseded commits. `!cancelled()` still runs on upstream success or failure but skips when the workflow is cancelled. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 306d0a58..1a3d364c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -209,7 +209,9 @@ jobs: - windows runs-on: namespace-profile-endev-linux-amd64 timeout-minutes: 2 - if: always() + # Run on success or upstream failure but skip when the workflow is cancelled + # — `always()` would override `cancel-in-progress` and waste a runner. + if: ${{ !cancelled() }} steps: - name: Gate on upstream job results env: