fix(dispatch): per-role two-layer concurrency for per-repo (#981) - #2465
Conversation
…ai#981) Remove the monolithic per-repo shim concurrency group and add matching cancel-in-progress groups on reusable-dispatch stage jobs plus all reusable-{stage}.yml workflows so roles dedupe independently. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
PR Summary by QodoPer-role concurrency for per-repo dispatch workflows Description
Diagram
High-Level Assessment
Files changed (10)
|
Site previewPreview: https://e828f5bf-site.fullsend-ai.workers.dev Commit: |
|
🤖 Finished Review · ✅ Success · Started 8:39 AM UTC · Completed 8:53 AM UTC |
Code Review by Qodo
Context used✅ Tickets:
🎫 Deduplicate review dispatches for the same HEAD SHA 🎫 Follow-up: document concurrency/cancel-in-progress & fan-out semantics under synchronous dispatch (post ADR 0041) 🎫 Concurrency group cancels code dispatch when triage applies multiple labels✅ Compliance rules (platform):
58 rules✅ Skills:
writing-user-docs, writing-adrs 1.
|
ReviewFindingsMedium
Previous runReviewFindingsMedium
Low
Previous run (2)ReviewFindingsMedium
Low
Previous run (3)ReviewFindingsMedium
Low
Previous run (4)ReviewFindingsMedium
Low
Labels: PR fixes dispatch concurrency groups across workflow files and scaffold templates. Previous run (5)ReviewFindingsMedium
Low
Previous run (6)ReviewFindingsMedium
Low
Labels: PR fixes dispatch concurrency groups across workflow files and scaffold templates. |
Signed-off-by: Barak Korren <bkorren@redhat.com>
Align ADR 0034/0041 consequences with per-role cancel-in-progress groups introduced for per-repo dispatch (fullsend-ai#981). Fixes gofmt CI failure. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Review · ❌ Terminated · Started 9:56 AM UTC · Ended 10:11 AM UTC |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Babysit update
|
|
🤖 Finished Review · ✅ Success · Started 9:56 AM UTC · Completed 10:11 AM UTC |
Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Review · |
…ncel Per-role groups on workflow_call parents (thin callers and reusable-dispatch stage jobs) share keys with reusable stage workflows. Duplicate groups with cancel-in-progress cancel the parent immediately, breaking e2e triage (fullsend-ai#981). Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 10:25 AM UTC · Completed 10:40 AM UTC |
Add pinact installation to `make bootstrap` so local devs get the SHA-pin checker without manual setup. Expand the pre-commit hook's files regex to also match `.github/actions/`, aligning it with the paths configured in `.pinact.yaml`. Assisted-by: Claude claude-opus-4-6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
…commit-hook chore(ci): add pinact pre-commit hook to enforce SHA-pinned actions
Signed-off-by: Barak Korren <bkorren@redhat.com>
Defense-in-depth: dispatch and agent groups for triage, code, and prioritize now chain issue.number || pull_request.number like review/fix/retro. Tighten shim template test to match indented concurrency keys only (fullsend-ai#981). Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 11:42 AM UTC · Completed 11:51 AM UTC |
82fc89b to
a3bbc22
Compare
Resolve conflicts: keep ADR 0054 dispatch authorization gates, mint-in-binary code workflow env, and agent-scoped concurrency groups from fullsend-ai#981. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
fullsend-dispatch-{issue|pr}concurrency group from the per-repo shim template — it serialized unrelated roles and could drop the wrong pending run when multiple label events arrived in quick succession (Concurrency group cancels code dispatch when triage applies multiple labels #2452).cancel-in-progress: trueconcurrency on all six stage jobs inreusable-dispatch.yml(triage, code, review, fix, retro, prioritize).reusable-{stage}.ymlworkflows (defense-in-depth for overlappingworkflow_callinvocations and manual re-triggers).Roles operate independently: a review dispatch does not cancel triage, code, fix, etc.
History (why this is messy)
dispatch-triage,dispatch-fix, etc., butdispatch-reviewanddispatch-codedid not → PR refactor: unify mint provisioning and harden URL validation #930 saw 23 review dispatches, only 8 useful.dispatchjob with a shared queue group; per-stage cancellation moved to per-org thin callers (review.yml, etc.).reusable-dispatch.ymlwas documented to get per-stage concurrency (PR feat: add per-repo installation mode (ADR 0033) #799) but never did.This PR implements the two-layer, per-role policy ADR 0033 intended for per-repo installs.
Issues
Closes #981
Closes #982
Closes #1357
Also addresses:
Not solved here (follow-ups):
Test plan
mise exec -- go test ./internal/scaffold/ -vMade with Cursor