From 42d05541e124c31eed5953626d1cc930898e3a4f Mon Sep 17 00:00:00 2001 From: Omer C <639682+omercnet@users.noreply.github.com> Date: Sat, 1 Aug 2026 21:22:55 +0300 Subject: [PATCH 1/2] ci: make Ready gate fail when required jobs fail Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0021e2d86..8f85828a7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -137,6 +137,20 @@ jobs: name: 🚀 Ready runs-on: ubuntu-latest needs: [build, eslint, gitleaks, pr-title-check, unit-test] + # Run even when a dependency fails or is skipped, so this required + # gate reports a real pass/fail instead of being auto-satisfied by + # a "skipped" status when an upstream job fails. + if: always() steps: + - name: Verify all required jobs succeeded + if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') + run: | + echo "One or more required jobs failed or were cancelled:" + echo " build: ${{ needs.build.result }}" + echo " eslint: ${{ needs.eslint.result }}" + echo " gitleaks: ${{ needs.gitleaks.result }}" + echo " pr-title-check: ${{ needs.pr-title-check.result }}" + echo " unit-test: ${{ needs.unit-test.result }}" + exit 1 - name: Ready run: echo "All checks passed and the PR is ready to be merged!" From b12bab46f457cd54596aad9021ac39105be16e70 Mon Sep 17 00:00:00 2001 From: Omer Cohen <639682+omercnet@users.noreply.github.com> Date: Sat, 1 Aug 2026 21:50:03 +0300 Subject: [PATCH 2/2] Update .github/workflows/ci.yml Co-authored-by: shuni-bot[bot] <251468265+shuni-bot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f85828a7..f44fd3dff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -146,11 +146,7 @@ jobs: if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') run: | echo "One or more required jobs failed or were cancelled:" - echo " build: ${{ needs.build.result }}" - echo " eslint: ${{ needs.eslint.result }}" - echo " gitleaks: ${{ needs.gitleaks.result }}" - echo " pr-title-check: ${{ needs.pr-title-check.result }}" - echo " unit-test: ${{ needs.unit-test.result }}" + echo '${{ toJSON(needs) }}' exit 1 - name: Ready run: echo "All checks passed and the PR is ready to be merged!"