ci(actions): scoped concurrency + dependabot batching - #87
Conversation
Volume controls for this repo's own CI entry points (Epic W4): - Key concurrency groups on head_ref || run_id in ci, pr-title, selector-conformance, and claude-review-self so superseded PR runs are cancelled while main pushes always run to completion (the previous github.ref keys could cancel in-flight default-branch runs). - Drop dead merge_group triggers from ci and pr-title (merge queue is not available on the org's plan) and the root-CI merge_group assertion in select-runner.test.cjs; suite is green (180/180). - Lower Dependabot open-pull-requests-limit to 5 (bumps are already grouped into a single weekly PR with a 7-day cooldown). Reusable workflow_call-only workflows are untouched: callers own concurrency for those. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EPDbXgonTuFwFwdTtHaCmw
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_cf40269a-a5e1-4a01-9bfe-0d0ebe21b834) |
There was a problem hiding this comment.
Stale comment
Risk: medium. Not approving: Cursor Bugbot completed as skipped with no clean review comment, so the required automated signal did not complete successfully. Human review is needed before merge; no reviewers were assigned because the PR author is the sole maintainer on these paths.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f8f2f32a43
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
head_ref is just the source branch name, so two fork PRs sharing a branch name (e.g. main) would collide in one concurrency group and cancel each other's required runs. github.event.pull_request.number is unique per PR; run_id remains the non-grouping fallback for push and dispatch events. Matches the README's canonical consumer block. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EPDbXgonTuFwFwdTtHaCmw
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_a7067c52-5120-4553-b310-64c72828e4f1) |


What
Applies GitHub Actions volume controls to this repo's own CI entry-point workflows (W4 of the Actions-minutes epic).
head_ref || run_idinci,pr-title,selector-conformance, andclaude-review-self(the latter previously had no concurrency block).github.head_refis only set onpull_request, so a new push to a PR cancels the superseded run, whilepush/workflow_dispatchruns get a uniquerun_idgroup and are never cancelled — the previousgithub.ref-based keys could cancel in-flight default-branch runs.merge_grouptriggers removed fromciandpr-title: merge queue is not available on the org's plan, so these runs can never fire. The root-CImerge_groupassertion inselect-runner.test.cjsis updated in the same commit;node --test .github/scripts/*.test.cjspasses 180/180. The README's canonical consumer block (documentingmerge_groupfor queue-enabled consumers) is left intact, as are the merge-queue guards inside thesemantic-prreusable workflow — those support external callers and are inert without a queue.open-pull-requests-limitlowered to 5. Weekly interval, all-actions grouping, and 7-day cooldown were already in place.Why
Cuts wasted runner minutes from superseded PR runs and never-firing triggers without touching any reusable
workflow_callcontract — callers own concurrency for reusable workflows, so none of them gain a concurrency block. Noselect-runnercall, selector source, orruns-onexpression is modified (avoids overlap with #86).Part of melodic-software/github-iac#82
🤖 Generated with Claude Code
https://claude.ai/code/session_01EPDbXgonTuFwFwdTtHaCmw
Note
Low Risk
Workflow trigger and concurrency tuning only; no reusable workflow_call contracts, runner selection, or application logic changed.
Overview
Tightens GitHub Actions usage on this repo’s entry-point workflows: concurrency now groups on
github.event.pull_request.numberwithgithub.run_idas the non-PR fallback, so new PR pushes cancel superseded runs while main / workflow_dispatch runs are not lumped together undergithub.ref.claude-review-selfgets the same pattern (it previously had no concurrency block).merge_groupis dropped fromciandpr-titletriggers because merge queue isn’t available here; comments point queue-enabled consumers at the README pattern. The root-CI contract test no longer requiresmerge_groupinci.yml.Dependabot
open-pull-requests-limitgoes from 10 to 5 (weekly schedule, grouping, and cooldown unchanged).Reviewed by Cursor Bugbot for commit 0da615b. Bugbot is set up for automated code reviews on this repo. Configure here.