44 push :
55 branches : [main, develop]
66 pull_request :
7+ types : [opened, synchronize, reopened, ready_for_review, converted_to_draft, closed]
78
89permissions :
910 contents : read
@@ -12,14 +13,15 @@ concurrency:
1213 # Keep one active CI run per PR while preserving independent push runs. A
1314 # synchronized head cancels its queued/running predecessor instead of
1415 # multiplying the hosted-runner backlog with stale evidence.
15- group : ci- ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
16- cancel-in-progress : true
16+ group : ${{ github.workflow }}-${{ github.repository }}-${{ github. event.pull_request.number || github.run_id }}
17+ cancel-in-progress : ${{ github.event_name == 'pull_request' }}
1718
1819jobs :
1920 # Matrix legs report as "python (3.12)" / "python (3.14)". Branch protection
2021 # still requires the exact check context name `python`, so a thin aggregate
2122 # job below re-exports matrix success under that name.
2223 python-matrix :
24+ if : ${{ github.event_name != 'pull_request' || (!github.event.pull_request.draft && github.event.action != 'closed') }}
2325 name : python (${{ matrix.python-version }})
2426 runs-on : ubuntu-latest
2527 strategy :
4648 python :
4749 name : python
4850 needs : python-matrix
49- if : always()
51+ if : ${{ always() && (github.event_name != 'pull_request' || (!github.event.pull_request.draft && github.event.action != 'closed')) }}
5052 runs-on : ubuntu-latest
5153 steps :
5254 - name : Require every CPython matrix leg
5658
5759
5860 rust :
61+ if : ${{ github.event_name != 'pull_request' || (!github.event.pull_request.draft && github.event.action != 'closed') }}
5962 runs-on : ubuntu-latest
6063 steps :
6164 - uses : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
7275 - run : cargo test --manifest-path crates/fast-mlsirm-py/Cargo.toml
7376
7477 gpu-smoke :
78+ if : ${{ github.event_name != 'pull_request' || (!github.event.pull_request.draft && github.event.action != 'closed') }}
7579 # One bounded explicit-GPU parity test remains on every PR. The full
7680 # paper-design GPU recovery study runs in the scheduled/manual workflow.
7781 runs-on : ubuntu-latest
@@ -152,6 +156,7 @@ jobs:
152156 PY
153157
154158 fuzz :
159+ if : ${{ github.event_name != 'pull_request' || (!github.event.pull_request.draft && github.event.action != 'closed') }}
155160 # Short, bounded coverage-guided fuzzing so PR cost stays low. The
156161 # property-based Hypothesis tests already run in the `python` job (via the
157162 # dev extra); this job adds the Atheris coverage-guided harnesses with a
@@ -184,6 +189,7 @@ jobs:
184189 -max_total_time=60 -timeout=25 fuzz/corpus/config
185190
186191 package :
192+ if : ${{ github.event_name != 'pull_request' || (!github.event.pull_request.draft && github.event.action != 'closed') }}
187193 runs-on : ubuntu-latest
188194 steps :
189195 - uses : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
0 commit comments