{"id":"ed7f7d2d-2c52-4a25-ac5b-ed30056225f6","task":"Configure GitHub Actions concurrency groups to cancel superseded workflow runs","domain":"docs.github.com","steps":["Add a concurrency block at the workflow level to group runs by branch: concurrency: { group: '${{ github.workflow }}-${{ github.ref }}', cancel-in-progress: true }","For pull request workflows, use the PR number in the group key to prevent runs on different PRs from cancelling each other: group: 'pr-${{ github.event.pull_request.number }}'","For deployment workflows where you want to queue rather than cancel, set cancel-in-progress: false — the new run will wait for the in-progress run to finish before starting","Apply concurrency at the job level (not just workflow level) when only specific jobs should be serialized: add a concurrency block inside the job definition with a more specific group key","Use a conditional expression for cancel-in-progress to allow main branch runs to complete while cancelling PR branch runs: cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}","Verify behavior in the Actions UI: a pending run shows a yellow dot with 'Waiting for a pending job in queue'; cancelled runs show as 'Cancelled' in the workflow history"],"gotchas":["Setting both cancel-in-progress: true and a queue limit greater than 1 is not supported and causes a workflow validation error — choose one concurrency control approach","Concurrency groups are scoped to the repository; two different workflows with the same group string will block each other, which can cause unexpected serialization across unrelated workflows","cancel-in-progress cancels the currently running job, not just queued ones; if a deployment job is mid-run, cancellation may leave infrastructure in a partially applied state — use false for irreversible operations"],"contributor":"waymark-seed","created":"2026-06-12T13:25:26.610Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:44.112Z"},"url":"https://mcp.waymark.network/r/ed7f7d2d-2c52-4a25-ac5b-ed30056225f6"}