From bec87bac9d6c26899367cd987906d993e020f0d2 Mon Sep 17 00:00:00 2001 From: UncleSp1d3r Date: Sun, 15 Feb 2026 17:15:58 -0500 Subject: [PATCH 1/3] ci(Mergify): configuration update Signed-off-by: UncleSp1d3r --- .mergify.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .mergify.yml diff --git a/.mergify.yml b/.mergify.yml new file mode 100644 index 00000000..0fbe77d5 --- /dev/null +++ b/.mergify.yml @@ -0,0 +1,7 @@ +merge_protections: + - name: Do not merge outdated PRs + description: Make sure PRs are almost up to date before merging + if: + - base = main + success_conditions: + - "#commits-behind <= 10" From 1b3bf1102f5113cc918e9660963892b0d28e715e Mon Sep 17 00:00:00 2001 From: UncleSp1d3r Date: Sun, 15 Feb 2026 17:22:10 -0500 Subject: [PATCH 2/3] ci: replace ci-pass merge gate with Mergify merge protections Remove the ci-pass aggregate job from CI workflow. Mergify now handles the merge gate via merge_protections that check each CI job individually, properly handling the skipped-vs-running name differences for matrix jobs (test-cross-platform). Signed-off-by: UncleSp1d3r --- .github/workflows/ci.yml | 19 ------------------- .mergify.yml | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 911fc6a1..bc1edd3c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -149,22 +149,3 @@ jobs: with: token: ${{ secrets.QLTY_COVERAGE_TOKEN }} files: lcov.info - - # Single required status check for branch protection. - # Passes when all jobs pass OR when jobs are skipped (no Rust changes). - ci-pass: - name: CI - runs-on: ubuntu-latest - if: always() - needs: [quality, test, test-cross-platform, coverage] - steps: - - name: Check results - run: | - results=("${{ needs.quality.result }}" "${{ needs.test.result }}" "${{ needs.test-cross-platform.result }}" "${{ needs.coverage.result }}") - for result in "${results[@]}"; do - if [[ "$result" != "success" && "$result" != "skipped" ]]; then - echo "Job failed with result: $result" - exit 1 - fi - done - echo "All jobs passed or were skipped" diff --git a/.mergify.yml b/.mergify.yml index 0fbe77d5..cb11af29 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -1,4 +1,29 @@ merge_protections: + - name: CI must pass + description: >- + All CI checks must pass or be legitimately skipped (path filtering). + Matrix job names differ between running and skipped states, so the + test-cross-platform rule uses an and/or pattern to handle both. + if: + - base = main + success_conditions: + - or: + - check-success = quality + - check-skipped = quality + - or: + - check-success = test + - check-skipped = test + - or: + - and: + - "check-success = test-cross-platform (ubuntu-latest, Linux)" + - "check-success = test-cross-platform (ubuntu-22.04, Linux)" + - "check-success = test-cross-platform (macos-latest, macOS)" + - "check-success = test-cross-platform (windows-latest, Windows)" + - check-skipped = test-cross-platform + - or: + - check-success = coverage + - check-skipped = coverage + - name: Do not merge outdated PRs description: Make sure PRs are almost up to date before merging if: From 27e2ec744ea3ca410bd1e0e3fa53b81f6f07ac17 Mon Sep 17 00:00:00 2001 From: UncleSp1d3r Date: Sun, 15 Feb 2026 17:23:39 -0500 Subject: [PATCH 3/3] ci: clarify merge protection description wording Address Copilot review: replace vague "almost up to date" with the specific "within 10 commits of the base branch". Signed-off-by: UncleSp1d3r --- .mergify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mergify.yml b/.mergify.yml index cb11af29..e1360c07 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -25,7 +25,7 @@ merge_protections: - check-skipped = coverage - name: Do not merge outdated PRs - description: Make sure PRs are almost up to date before merging + description: Make sure PRs are within 10 commits of the base branch before merging if: - base = main success_conditions: