Skip to content

Commit 9e2a5ce

Browse files
Merge branch 'main' into refactor/echidna-l3-wave3-sharedbase-l1-guix
2 parents 981389a + e718fd3 commit 9e2a5ce

28 files changed

Lines changed: 516 additions & 494 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: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,48 @@ 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

2026
jobs:
2127
audit:
2228
name: Dependency audit
2329
runs-on: ubuntu-latest
24-
if: hashFiles('Cargo.lock') != ''
2530

2631
steps:
2732
- name: Checkout repository
2833
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
2934

35+
- name: Detect Cargo.lock
36+
id: detect
37+
run: |
38+
if [ -f Cargo.lock ]; then
39+
echo "present=true" >> "$GITHUB_OUTPUT"
40+
else
41+
echo "present=false" >> "$GITHUB_OUTPUT"
42+
echo "No Cargo.lock — skipping dependency audit." >> "$GITHUB_STEP_SUMMARY"
43+
fi
44+
3045
- name: Install Rust toolchain
46+
if: steps.detect.outputs.present == 'true'
3147
uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable
3248

3349
- name: Install cargo-audit
50+
if: steps.detect.outputs.present == 'true'
3451
run: cargo install cargo-audit --locked
3552

3653
- name: Run cargo audit
54+
if: steps.detect.outputs.present == 'true'
3755
run: cargo audit
3856

3957
- name: Write summary
40-
if: always()
58+
if: always() && steps.detect.outputs.present == 'true'
4159
run: |
4260
echo "## Cargo Audit Results" >> "$GITHUB_STEP_SUMMARY"
4361
echo "" >> "$GITHUB_STEP_SUMMARY"

.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: 35 additions & 23 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

@@ -256,31 +262,37 @@ jobs:
256262
257263
echo "has_manifest=true" >> "$GITHUB_OUTPUT"
258264
259-
# Validate TOML structure using Python 3.11+ tomllib
260-
python3 -c "
261-
import tomllib, sys
262-
with open('eclexiaiser.toml', 'rb') as f:
263-
data = tomllib.load(f)
264-
project = data.get('project', {})
265-
if not project.get('name', '').strip():
266-
print('ERROR: project.name is required', file=sys.stderr)
267-
sys.exit(1)
268-
functions = data.get('functions', [])
269-
if not functions:
270-
print('ERROR: at least one [[functions]] entry is required', file=sys.stderr)
271-
sys.exit(1)
272-
for fn in functions:
273-
if not fn.get('name', '').strip():
274-
print('ERROR: function name cannot be empty', file=sys.stderr)
275-
sys.exit(1)
276-
if not fn.get('source', '').strip():
277-
print(f'ERROR: function {fn[\"name\"]} has no source path', file=sys.stderr)
278-
sys.exit(1)
279-
print(f'Valid: {project[\"name\"]} ({len(functions)} function(s))')
280-
" || {
265+
# Validate TOML structure using Python 3.11+ tomllib.
266+
# The Python heredoc body sits at the YAML block-scalar base
267+
# indentation, so after GitHub strips the block's common indent
268+
# the interpreter receives it column-aligned (no sed dedent —
269+
# a sed-based dedent breaks because YAML removes the block's
270+
# leading indent before the script ever reaches the shell).
271+
if ! python3 - <<'PY'
272+
import tomllib, sys
273+
with open('eclexiaiser.toml', 'rb') as f:
274+
data = tomllib.load(f)
275+
project = data.get('project', {})
276+
if not project.get('name', '').strip():
277+
print('ERROR: project.name is required', file=sys.stderr)
278+
sys.exit(1)
279+
functions = data.get('functions', [])
280+
if not functions:
281+
print('ERROR: at least one [[functions]] entry is required', file=sys.stderr)
282+
sys.exit(1)
283+
for fn in functions:
284+
if not fn.get('name', '').strip():
285+
print('ERROR: function name cannot be empty', file=sys.stderr)
286+
sys.exit(1)
287+
if not fn.get('source', '').strip():
288+
print(f'ERROR: function {fn["name"]} has no source path', file=sys.stderr)
289+
sys.exit(1)
290+
print(f'Valid: {project["name"]} ({len(functions)} function(s))')
291+
PY
292+
then
281293
echo "::error file=eclexiaiser.toml::Invalid eclexiaiser.toml — see step output for details"
282294
exit 1
283-
}
295+
fi
284296
285297
- name: Write summary
286298
run: |

.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)