Skip to content

chore(ci): add concurrency control to all workflows#92

Merged
avrabe merged 1 commit intomainfrom
chore/ci-concurrency-control
May 2, 2026
Merged

chore(ci): add concurrency control to all workflows#92
avrabe merged 1 commit intomainfrom
chore/ci-concurrency-control

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 2, 2026

Summary

Closes the org-wide CI queue backlog issue per the cross-repo concurrency hardening brief. LOOM had 20 of ~93 jobs perpetually queued as of 2026-05-02 and a 0% pass rate on the queue tail — strong signal of retry-loop pressure from agents pushing rapid follow-up commits.

Without concurrency control, every push to a PR branch starts a fresh run while previous runs on superseded commits keep executing. With this PR, superseded PR runs are cancelled; runs on `main`, tags, releases, and scheduled events are never cancelled.

Per-file classification

File Variant Rationale
`ci.yml` default PR feedback workflow, safe to cancel superseded runs
`validate-shared.yml` default Same as ci.yml
`release.yml` release (`cancel-in-progress: false`, group: `release-`) A cancelled release mid-publish would leave registries / tags / attestations in inconsistent state
`fuzz.yml` scheduled (group: `-<run_id>`, `cancel-in-progress: false`) Each nightly run is independent data and must complete

Diff

```
.github/workflows/ci.yml | 4 ++++
.github/workflows/fuzz.yml | 4 ++++
.github/workflows/release.yml | 4 ++++
.github/workflows/validate-shared.yml | 4 ++++
4 files changed, 16 insertions(+)
```

Scope strictly `.github/workflows/`. No job-level concurrency, no `runs-on:` changes, no cache or permission tweaks.

Verification

  • All 4 files parse cleanly via `python3 yaml.safe_load_all`.
  • Diff is exactly +16 lines (4 per file).
  • CI green.
  • Push a no-op follow-up commit and confirm earlier PR run shows as Cancelled in Actions UI within ~30s. (Will do after CI green.)

Out of scope (separate work)

  • Self-hosted runner migration
  • Job parallelization / matrix restructuring
  • Cache strategy changes
  • Permission minimization

🤖 Generated with Claude Code

Closes the org-wide CI queue backlog issue (LOOM was 20 of ~93 jobs
perpetually queued as of 2026-05-02). Without concurrency control,
every push to a PR branch starts a fresh run while previous runs
on superseded commits keep executing — multiplying queue pressure
for zero useful signal.

Adds a top-level `concurrency:` block to every workflow file. Cancels
superseded PR runs; never cancels runs on `main`, tags, releases,
or scheduled events.

Per-file classification (per the org brief):

- ci.yml — DEFAULT pattern. Cancel on pull_request, never on push to
  main. Group key: workflow + head_ref/ref.
- validate-shared.yml — DEFAULT pattern. Same as ci.yml.
- release.yml — RELEASE variant. Group key: release-<ref>.
  cancel-in-progress: false. A cancelled release mid-publish would
  leave registries / tags / attestations in inconsistent state.
- fuzz.yml — SCHEDULED variant. Group key includes run_id so each
  scheduled run is unique and never queues or cancels other scheduled
  runs. cancel-in-progress: false. Each nightly run is independent
  data and must complete.

Verification:
- All 4 files parse cleanly via Python yaml.safe_load_all.
- Diff is exactly +16 lines (4 per file). Scope strictly
  .github/workflows/.

Out of scope (separate work, tracked):
- Self-hosted runner migration (runs-on: changes)
- Job parallelization / matrix restructuring
- Cache strategy changes
- Permission minimization

Trace: skip
@avrabe avrabe merged commit 5f1d54d into main May 2, 2026
12 of 18 checks passed
@avrabe avrabe deleted the chore/ci-concurrency-control branch May 2, 2026 07:51
@avrabe avrabe mentioned this pull request May 2, 2026
3 tasks
avrabe added a commit that referenced this pull request May 2, 2026
Bump workspace version 0.4.0 → 0.5.0 and add CHANGELOG section.

This release ships the v0.5.0 audit follow-ups across five PRs:

- #88 PR-A: VerificationResult strict-mode helpers (is_skip,
  skip_reason, verify_or_revert_strict) + gale v0.4.0 measurement
  report documenting the CSE soundness bug on production
  kernel-scheduler code.
- #89 PR-B: Close hoist hole on early-exit (Return/Br) patterns.
  Per-pass tracing showed reordering happens in constant_folding's
  terms-IR roundtrip; the function ends up with the if-guard moved
  to the function tail and the load/store sequence hoisted to the
  function head. Fix: extend has_dataflow_unsafe_control_flow to
  flag nested Return/Br; constant_folding and
  optimize_advanced_instructions skip such functions entirely.
  Defense-in-depth guards on simplify_locals, remove_unused_branches,
  optimize_added_constants. Regression test pinned.
- #90 PR-C: 8 minimal post-MVP wasm fixtures + spec_features.rs
  test harness. Pins the "parser must never panic" contract for
  SIMD, ref types, bulk memory, tail calls, exception handling,
  multi-memory, sign-extension, saturating-trunc.
- #91 PR-D: FusedOptimization.v wired into BUILD.bazel. Closes
  audit D1; the 7 axioms remain (discharge is future work).
- #92 chore: top-level concurrency: block on every workflow.
  Closes the org-wide CI queue backlog; superseded PR runs now
  cancelled in ~30s, runs on main / tags / releases / scheduled
  events never cancelled.

CHANGELOG.md adds a v0.5.0 section documenting all of the above
plus the deferred work for the next release.

Trace: REQ-1, REQ-3, REQ-5, REQ-7, REQ-9, REQ-12, REQ-14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant