Skip to content

ci: run-level concurrency and bounded browser install - #179

Merged
altaywtf merged 2 commits into
mainfrom
ci/run-level-concurrency
Aug 20, 2026
Merged

ci: run-level concurrency and bounded browser install#179
altaywtf merged 2 commits into
mainfrom
ci/run-level-concurrency

Conversation

@altaywtf

@altaywtf altaywtf commented Aug 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Replaces the job-level concurrency blocks on verify and the compatibility matrix with a single workflow-level group; superseded pull request runs now cancel atomically instead of job by job. Pushes to main queue (cancel-in-progress only for pull_request), so release runs are never cancelled.
  • Caps the Install browser runtime step at timeout-minutes: 10.

What actually happened on #177

Diagnosed from the run history, not the hypothesis in the issue:

  • The webkit job that needed gh run rerun --failed (run 32295425657 attempt 1) was not cancelled by a concurrency group. Its Install browser runtime step (playwright install --with-deps webkit) hung on apt-get update fetching archive.ubuntu.com at 19:54:40Z and sat silent until the job's timeout-minutes: 30 killed it — annotation: "The job has exceeded the maximum execution time of 30m0s". A timeout kill reports conclusion cancelled, which made it look like a concurrency cancel; the aggregate then correctly failed.
  • The job-level concurrency design is still a real defect, just a different one: the superseded run (32294909565) had each browser job cancelled individually ("Canceling since a higher priority waiting request for compatibility-browser-webkit-CI-refs/pull/177/merge exists"), leaving a red failure aggregate on the old run instead of a cancelled run. And because matrix jobs only enter their groups after verify finishes, start order can invert across runs: an older run whose verify finishes later can cancel a newer run's in-progress matrix job. Run-level grouping removes both, and GitHub orders run-level cancellation by run creation.

Race proof

Two rapid pushes to this branch, second push landing while the first run's full matrix was in progress:

  • 02:16:33Z push f3034b0 -> run 32324091171; all 5 matrix jobs in progress by 02:17:57Z.
  • 02:18:08Z push c28b5c2 -> run 32324150731.
  • Run 1: conclusion cancelled atomically; every cancelled job carries the single run-level annotation "Canceling since a higher priority waiting request for CI-refs/pull/179/merge exists" -- no per-target group cancellations. (Its if: always() aggregate still reports failure on the superseded SHA; only the latest SHA gates the PR.)
  • Run 2: attempt 1, fully green -- Verify SDK, all 5 matrix targets, and Compatibility result succeeded with zero intra-run cancellation and no rerun.

Verification

  • vp run verify
  • Additional targeted checks (vp run test:live, vp run test:compat, single-target live commands):
    • actionlint .github/workflows/ci.yml clean
    • rapid-push supersede proof (see above)

Notes

Fixes #178

altaywtf and others added 2 commits August 20, 2026 05:15
Job-level concurrency groups cancel superseded runs piecemeal: each
matrix job of the old run fails its own group, the aggregate reports
failure instead of cancelled, and because matrix jobs only enter their
groups after verify finishes, start order can invert across runs and an
older run's late matrix job can cancel a newer run's in-progress job.

A single workflow-level group cancels a superseded pull request run
atomically and queues pushes to main without cancelling release runs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The webkit job on #177 was killed by the 30-minute job timeout after
apt-get update hung fetching archive.ubuntu.com inside playwright
install --with-deps; the kill reports the job as cancelled and fails
the aggregate. A step-level cap surfaces a mirror stall in 10 minutes
instead of consuming the whole job budget.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 20, 2026 02:17

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the CI workflow to use a single workflow-level concurrency group so superseded PR runs cancel as a unit (instead of job-by-job), while keeping push runs on main queued (not cancelled).

Changes:

  • Add workflow-level concurrency keyed by ${{ github.workflow }}-${{ github.ref }}, with cancel-in-progress enabled only for pull_request events.
  • Remove job-level concurrency blocks from verify and the compatibility matrix jobs.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/ci.yml
@altaywtf
altaywtf merged commit 4dcc79f into main Aug 20, 2026
8 checks passed
@altaywtf
altaywtf deleted the ci/run-level-concurrency branch August 20, 2026 02:22
@putio-releaser

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 11.2.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix compatibility-matrix concurrency race

2 participants