Skip to content

Commit e718fd3

Browse files
fix(ci): concurrency dedup + tighten over-broad triggers (Refs #77) (#79)
## What Cause-B mitigation for the CI jam tracked in #77. The forensic analysis in #77 identified two contributing causes: - **Cause A** (parse-time fast-fail of 3 workflows) — fixed in #78. - **Cause B** — every push fans out 20+ workflows with **zero concurrency control**, so stacked pushes pile identical jobs into a queue the saturated personal-account runner pool never drains. This PR is the tractable code-side mitigation for Cause B. ## Changes (purely additive except 2 trigger narrowings; no gate disabled) **Concurrency dedup** — added `concurrency: { group: ${{ github.workflow }}-${{ github.ref }} }` to every workflow that lacked one (`hypatia-scan.yml` already had the canonical block). This matches the repo's own pre-existing idiom. - `cancel-in-progress: true` for push/PR CI gates: rust-ci, codeql, governance, mvp-smoke, live-provers, dogfood-gate, cargo-audit, secret-scanner, security-scan, formal-verification, agda-meta-checker, idris2-abi-ci, chapel-ci, cflite_pr. - `cancel-in-progress: false` for mirror / instant-sync / boj-build / ghcr-publish / scorecard / scorecard-enforcer — these dedupe stacked runs but an in-flight mirror, publish or security scan is **never** aborted mid-run. **Over-broad triggers tightened** (every gate still fires; nothing disabled): - `governance.yml`: `pull_request:` was unscoped (fired on PRs to *every* branch) → `branches: [main, master]`, matching the other gates. - `container-ci.yml`: `push:` was any-branch (path-filtered only) → `branches: [main, master]`, so feature-branch pushes touching those paths no longer also fan out a container build. ## Verification Each insertion is a syntactically-trivial, correctly-indented top-level `concurrency:` mapping placed at a verified-safe position, identical in shape to the repo's existing valid `hypatia-scan.yml`. ## Residual (not fixable in-repo) The root Cause-B driver — GitHub-hosted Actions concurrency / spending-limit saturation on the **personal account** — is org-admin/billing-gated (github.com/settings/billing). This PR removes the *self-inflicted* fan-out amplification; the account-level cap remains and is tracked on #77. Refs #77 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 1182089 commit e718fd3

21 files changed

Lines changed: 136 additions & 0 deletions

.github/workflows/agda-meta-checker.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ on:
1515
- 'meta-checker/**'
1616
workflow_dispatch:
1717

18+
# Cause-B mitigation (#77): cancel superseded runs so stacked pushes
19+
# to the same ref don't pile up identical jobs in the queue.
20+
concurrency:
21+
group: ${{ github.workflow }}-${{ github.ref }}
22+
cancel-in-progress: true
23+
1824
permissions:
1925
contents: read
2026

.github/workflows/boj-build.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ on:
44
push:
55
branches: [main, master]
66
workflow_dispatch:
7+
8+
# Cause-B mitigation (#77): de-duplicate stacked BoJ build triggers.
9+
# cancel-in-progress is false so an in-flight dispatch always completes.
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: false
13+
714
jobs:
815
trigger-boj:
916
runs-on: ubuntu-latest

.github/workflows/cargo-audit.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ on:
1414
# Run weekly on Monday at 06:00 UTC to catch new advisories.
1515
- cron: '0 6 * * 1'
1616

17+
# Cause-B mitigation (#77): cancel superseded runs so stacked pushes
18+
# to the same ref don't pile up identical jobs in the queue.
19+
concurrency:
20+
group: ${{ github.workflow }}-${{ github.ref }}
21+
cancel-in-progress: true
22+
1723
permissions:
1824
contents: read
1925

.github/workflows/cflite_pr.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ on:
44
pull_request:
55
branches: [main]
66

7+
# Cause-B mitigation (#77): cancel superseded fuzzing runs so rapid
8+
# PR pushes don't pile up identical jobs in the queue.
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
713
permissions:
814
contents: read
915

.github/workflows/chapel-ci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ on:
1919
- 'Cargo.toml'
2020
- '.github/workflows/chapel-ci.yml'
2121

22+
# Cause-B mitigation (#77): cancel superseded runs so stacked pushes
23+
# to the same ref don't pile up identical jobs in the queue.
24+
concurrency:
25+
group: ${{ github.workflow }}-${{ github.ref }}
26+
cancel-in-progress: true
27+
2228
permissions: read-all
2329

2430
jobs:

.github/workflows/codeql.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ on:
99
schedule:
1010
- cron: '0 6 * * 1'
1111

12+
# Cause-B mitigation (#77): cancel superseded runs so stacked pushes
13+
# to the same ref don't pile up identical jobs in the queue.
14+
concurrency:
15+
group: ${{ github.workflow }}-${{ github.ref }}
16+
cancel-in-progress: true
17+
1218
permissions:
1319
contents: read
1420

.github/workflows/container-ci.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ name: Container Build Verification
1313

1414
on:
1515
push:
16+
# Cause-B mitigation (#77): was any-branch (path-filtered only);
17+
# scoped to integration branches so feature-branch pushes that
18+
# touch these paths don't also fan out a container build.
19+
branches: [main, master]
1620
paths:
1721
- 'Containerfile'
1822
- '.containerization/**'
@@ -34,6 +38,13 @@ on:
3438
# so the container build does not race the live-prover tests.
3539
- cron: '0 6 * * 0'
3640

41+
# Cause-B mitigation (#77): de-duplicate superseded builds on the same
42+
# ref. cancel-in-progress is false so an in-flight image build/publish
43+
# is never interrupted mid-push.
44+
concurrency:
45+
group: ${{ github.workflow }}-${{ github.ref }}
46+
cancel-in-progress: false
47+
3748
permissions:
3849
contents: read
3950

.github/workflows/dogfood-gate.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ on:
1212
push:
1313
branches: [main, master]
1414

15+
# Cause-B mitigation (#77): cancel superseded runs so stacked pushes
16+
# to the same ref don't pile up identical jobs in the queue.
17+
concurrency:
18+
group: ${{ github.workflow }}-${{ github.ref }}
19+
cancel-in-progress: true
20+
1521
permissions:
1622
contents: read
1723

.github/workflows/formal-verification.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ on:
2929
paths:
3030
- 'crates/echidna-core-spark/**'
3131

32+
# Cause-B mitigation (#77): cancel superseded runs so stacked pushes
33+
# to the same ref don't pile up identical jobs in the queue.
34+
concurrency:
35+
group: ${{ github.workflow }}-${{ github.ref }}
36+
cancel-in-progress: true
37+
3238
permissions:
3339
contents: read
3440

.github/workflows/ghcr-publish.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ on:
99
types: [published]
1010
workflow_dispatch:
1111

12+
# Cause-B mitigation (#77): de-duplicate stacked publish runs.
13+
# cancel-in-progress is false — never abort an image publish in flight.
14+
concurrency:
15+
group: ${{ github.workflow }}-${{ github.ref }}
16+
cancel-in-progress: false
17+
1218
env:
1319
REGISTRY: ghcr.io
1420
IMAGE_NAME: ${{ github.repository }}

0 commit comments

Comments
 (0)