From d1878097ee3680a2f0049073d82626cff6713b72 Mon Sep 17 00:00:00 2001 From: Caio Pizzol Date: Fri, 24 Apr 2026 11:57:11 -0300 Subject: [PATCH] ci: give every validate job a unique check context The require-ci ruleset requires one check context named "validate" but 13 workflows all emit a job named validate. That makes the required-check match ambiguous: any one of the 13 checks can satisfy the rule, so PRs can merge while most workflows are still failing or not even running. Add a unique workflow-prefixed name: to every validate job so each one becomes its own required context. Harden the five aggregate validators to fail on any non-success result (cancelled and skipped included, not just failure). Add merge_group to visual-test.yml so its validate context can be required safely. Companion ruleset update lives in the PR description. --- .github/workflows/ci-behavior.yml | 4 +++- .github/workflows/ci-demos.yml | 4 +++- .github/workflows/ci-docs.yml | 1 + .github/workflows/ci-document-api.yml | 1 + .github/workflows/ci-esign.yml | 1 + .github/workflows/ci-examples.yml | 4 +++- .github/workflows/ci-mcp.yml | 1 + .github/workflows/ci-react.yml | 1 + .github/workflows/ci-sdk.yml | 1 + .github/workflows/ci-superdoc.yml | 4 +++- .github/workflows/ci-template-builder.yml | 1 + .github/workflows/ci-vscode-ext.yml | 1 + .github/workflows/visual-test.yml | 5 ++++- 13 files changed, 24 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-behavior.yml b/.github/workflows/ci-behavior.yml index a631113816..612d45956b 100644 --- a/.github/workflows/ci-behavior.yml +++ b/.github/workflows/ci-behavior.yml @@ -75,12 +75,14 @@ jobs: working-directory: tests/behavior validate: + name: Behavior Tests / validate if: always() needs: [test] runs-on: ubuntu-latest steps: - name: Check results run: | - if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then + if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}" == "true" ]]; then + echo "One or more required jobs did not succeed." exit 1 fi diff --git a/.github/workflows/ci-demos.yml b/.github/workflows/ci-demos.yml index ff5abd3f8b..57725c784c 100644 --- a/.github/workflows/ci-demos.yml +++ b/.github/workflows/ci-demos.yml @@ -84,12 +84,14 @@ jobs: run: DEMO=${{ matrix.demo }} npx playwright test validate: + name: CI Demos / validate if: always() needs: [smoke-test] runs-on: ubuntu-latest steps: - name: Check results run: | - if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then + if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}" == "true" ]]; then + echo "One or more required jobs did not succeed." exit 1 fi diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml index 4871e8016c..5dbd41bb03 100644 --- a/.github/workflows/ci-docs.yml +++ b/.github/workflows/ci-docs.yml @@ -15,6 +15,7 @@ on: jobs: validate: + name: CI Docs / validate runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/ci-document-api.yml b/.github/workflows/ci-document-api.yml index f14f0eaf03..538b2d9c49 100644 --- a/.github/workflows/ci-document-api.yml +++ b/.github/workflows/ci-document-api.yml @@ -19,6 +19,7 @@ concurrency: jobs: validate: + name: CI Document API / validate runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/ci-esign.yml b/.github/workflows/ci-esign.yml index 5eb751fce7..a12224c133 100644 --- a/.github/workflows/ci-esign.yml +++ b/.github/workflows/ci-esign.yml @@ -16,6 +16,7 @@ concurrency: jobs: validate: + name: CI eSign / validate runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/ci-examples.yml b/.github/workflows/ci-examples.yml index 6ab1e27b66..98fd30ee48 100644 --- a/.github/workflows/ci-examples.yml +++ b/.github/workflows/ci-examples.yml @@ -172,12 +172,14 @@ jobs: run: npx tsx src/index.test.ts validate: + name: CI Examples / validate if: always() needs: [getting-started, collaboration, features, advanced-headless-toolbar, headless] runs-on: ubuntu-latest steps: - name: Check results run: | - if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then + if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}" == "true" ]]; then + echo "One or more required jobs did not succeed." exit 1 fi diff --git a/.github/workflows/ci-mcp.yml b/.github/workflows/ci-mcp.yml index 70d716247c..6a25efcec8 100644 --- a/.github/workflows/ci-mcp.yml +++ b/.github/workflows/ci-mcp.yml @@ -16,6 +16,7 @@ concurrency: jobs: validate: + name: CI MCP / validate runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/ci-react.yml b/.github/workflows/ci-react.yml index 1a0e700b6a..31be40cb14 100644 --- a/.github/workflows/ci-react.yml +++ b/.github/workflows/ci-react.yml @@ -16,6 +16,7 @@ concurrency: jobs: validate: + name: CI React / validate runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/ci-sdk.yml b/.github/workflows/ci-sdk.yml index 431f0e92f0..f722f5f814 100644 --- a/.github/workflows/ci-sdk.yml +++ b/.github/workflows/ci-sdk.yml @@ -22,6 +22,7 @@ concurrency: jobs: validate: + name: CI SDK / validate runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/ci-superdoc.yml b/.github/workflows/ci-superdoc.yml index 208916f66e..f33149ea68 100644 --- a/.github/workflows/ci-superdoc.yml +++ b/.github/workflows/ci-superdoc.yml @@ -232,12 +232,14 @@ jobs: flags: superdoc validate: + name: CI SuperDoc / validate if: always() needs: [build, unit-tests, cli-tests, coverage] runs-on: ubuntu-latest steps: - name: Check results run: | - if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then + if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}" == "true" ]]; then + echo "One or more required jobs did not succeed." exit 1 fi diff --git a/.github/workflows/ci-template-builder.yml b/.github/workflows/ci-template-builder.yml index bf16e9abe9..4ea5f0eb6c 100644 --- a/.github/workflows/ci-template-builder.yml +++ b/.github/workflows/ci-template-builder.yml @@ -16,6 +16,7 @@ concurrency: jobs: validate: + name: CI Template Builder / validate runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/ci-vscode-ext.yml b/.github/workflows/ci-vscode-ext.yml index cd70067d55..9864e27fe4 100644 --- a/.github/workflows/ci-vscode-ext.yml +++ b/.github/workflows/ci-vscode-ext.yml @@ -17,6 +17,7 @@ concurrency: jobs: validate: + name: CI VS Code Extension / validate runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/visual-test.yml b/.github/workflows/visual-test.yml index 09c5378af6..c47c121713 100644 --- a/.github/workflows/visual-test.yml +++ b/.github/workflows/visual-test.yml @@ -17,6 +17,7 @@ on: - 'tests/visual/**' - 'shared/**' - '!**/*.md' + merge_group: workflow_dispatch: concurrency: @@ -126,12 +127,14 @@ jobs: } validate: + name: Visual Tests / validate if: always() needs: [visual] runs-on: ubuntu-latest steps: - name: Check results run: | - if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then + if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}" == "true" ]]; then + echo "One or more required jobs did not succeed." exit 1 fi