diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 8f566971..cd5dcb36 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -6,10 +6,6 @@ on: permissions: contents: read -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} - cancel-in-progress: true - jobs: dependency-review: name: Dependency Review diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 865e8394..1c0a93a8 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -9,10 +9,6 @@ on: permissions: contents: read -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} - cancel-in-progress: true - jobs: docs: name: Docs diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml index 155c3ade..e50e455d 100644 --- a/.github/workflows/pr-title.yml +++ b/.github/workflows/pr-title.yml @@ -8,10 +8,6 @@ on: permissions: pull-requests: read -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} - cancel-in-progress: true - jobs: validate: name: Validate PR title diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f0c8502d..7272e2ab 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,10 +9,6 @@ on: permissions: contents: read -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} - cancel-in-progress: true - jobs: test: name: Test diff --git a/AGENTS.md b/AGENTS.md index 5ef1cd4d..5993b7b5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -259,6 +259,15 @@ workflow from `master`, so the PR still reports the old name. `Prepare release` also matches the `Test` workflow by its top-level `name:`, so renaming the workflow stops release planning without failing any check. +The `Test`, `Documentation`, `PR Title`, and `Dependency Review` workflows have +no `concurrency` block, so GitHub does not cancel their runs. Duplicate events +on one PR head, such as a reopen or an edit right after a push, start duplicate +runs of the required checks, and every run must finish. A cancelled run on the +head turns the commit's check rollup to `FAILURE`. Do not add a `concurrency` +group to these workflows. By default a group cancels a pending run when a newer +run joins it, even with `cancel-in-progress: false`. Runs for a superseded head +also finish. They cost CI minutes but block nothing. + Recovery is for the owner. Agents never dispatch release workflows. The release stage accepts only the refs below, re-derives and re-verifies the release commit from the PR on each, and re-running a published version verifies it and changes