Repository navigation
test(dev-lead): assert per-issue/per-PR concurrency lanes (align with #450, unblocked by #449) - #451
Conversation
…po serialization #450 restored per-issue / per-PR concurrency lanes (the fix for issue pickups being cancelled by PR follow-up traffic, petry-projects/.github#402), but test_concurrency_config.sh still asserted the old single 'dev-lead' per-repo group from #278 — so it fails against the current dev-lead.yml (3 checks). It didn't go red on the #450 merge only because the push-to-main path filter excludes .github/workflows/dev-lead*.yml; it would fail on the next dev-lead PR. The #278 serialization existed only to stop concurrent in-place PR checkouts from corrupting the working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree, so parallel per-lane runs are now safe. Invert the assertions to require the per-issue / per-PR / ci-relay lanes and forbid a repo-wide 'dev-lead' group, and extend coverage to the reusable workflow (source of truth for all consumer stubs). Update the CI step label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 35 minutes and 53 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe PR updates the dev-lead concurrency validation workflow and test script to enforce per-issue/per-PR lane routing. The workflow step label is clarified, and the test script is enhanced to validate concurrency configuration across both inline and reusable workflows while preventing repo-wide group fallback. ChangesConcurrency Lane Validation
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related issues
Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request updates the integration test script test_concurrency_config.sh to validate that both the inline and reusable dev-lead workflow files correctly implement per-issue and per-PR concurrency lanes instead of a single repo-wide group. The reviewer suggested adding a guard to verify the existence of the workflow files before running checks, ensuring the script fails gracefully with a clear error message if executed from outside the repository root.
There was a problem hiding this comment.
Pull request overview
Updates the dev-lead integration test suite to assert the restored per-issue/per-PR concurrency lane design (and to validate both the inline workflow and the reusable “source of truth”), plus aligns the CI job label accordingly.
Changes:
- Invert concurrency assertions to require
dev-lead-pr-,dev-lead-issue-, anddev-lead-ci-relay-lanes andcancel-in-progress: false, and to forbid a repo-widedev-leadgroup. - Extend the concurrency config integration test to validate both
dev-lead.ymlanddev-lead-reusable.yml. - Update the
test-dev-lead.ymlstep name to reflect per-issue/per-PR lanes.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| tests/dev-lead/integration/test_concurrency_config.sh | Updates integration assertions to validate per-lane concurrency across both inline and reusable dev-lead workflows. |
| .github/workflows/test-dev-lead.yml | Renames the concurrency validation step to match the new lane-based assertions. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 65c38fd891
ℹ️ 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".
Dev-Lead — fix-reviews (applied)Changes committed and pushed. |
Dev-Lead — rate-limited (intent: review-changes)PR: #451 |
|
Note @don-petry I received your request but all AI engines are currently rate-limited. I'll retry automatically once the rate limit clears. |
|
@dev-lead please re-check this PR — re-triggering after the dev-lead/pr-review workflows were briefly disabled. |
Dev-Lead Review — PR #451OverviewThis PR fixes a stale test that was asserting the old per-repo serialized concurrency design (#278) instead of the current per-issue / per-PR lane design restored in #450. Without this fix, the test would have failed on the next PR touching any What changes
Code quality
Test verificationRan VerdictNo issues found. Changes are test-only, correct, and well-motivated. Ready to merge. |
Dev-Lead — on-mention (no-changes)Engine ran but made no changes. |
donpetry-bot
left a comment
There was a problem hiding this comment.
Automated review — APPROVED ✓
Risk: LOW
Reviewed commit: b71b74d79e0ec4f54266f49faace06afb8a26732
Review mode: triage-approved (single reviewer)
Summary
Tests-only change that updates tests/dev-lead/integration/test_concurrency_config.sh to assert the per-issue / per-PR / per-SHA concurrency lanes restored by #450, replacing the obsolete repo-wide dev-lead group from #278. Also extends coverage from just dev-lead.yml to include dev-lead-reusable.yml (the source of truth for consumer stubs), and renames the CI step label to match. No production-code changes.
Linked issue analysis
No linked closing issues. PR references petry-projects/.github#402 (the issue-pickup-cancellation bug that #450 fixed) as the motivation for guarding the per-lane design against regression. The change is a logical follow-up that closes a test-coverage gap; the prior test would have failed on the next dev-lead-path PR because the push: main path filter in test-dev-lead.yml excludes dev-lead*.yml and masked the staleness when #450 merged.
Findings
Spot-checked the asserted patterns against the actual workflow files at PR HEAD:
dev-lead.ymlanddev-lead-reusable.ymlboth useformat('dev-lead-pr-{0}', …),format('dev-lead-issue-{0}', …), andformat('dev-lead-ci-relay-{0}', …)in theirconcurrency.groupexpression, withcancel-in-progress: false. Thecheck_presentassertions will match.- Neither file contains a bare
group: dev-lead/group: 'dev-lead'/group: "dev-lead", so the threecheck_absentregression guards pass. - The file-existence guard added in the fix-reviews commit (in response to Gemini's review) handles the case where the script is invoked from outside the repo root cleanly.
shellcheckandbatschecks are green on this SHA.
No security, correctness, or maintainability concerns. No auth/secrets/migrations/dependency touch.
CI status
All required checks SUCCESS: CodeQL, SonarCloud, ShellCheck, Lint, bats, unit-tests, AgentShield, Agent Security Scan, Secret scan (gitleaks), validate-agent-profiles, gh-aw-compile, Compile agentic workflows, dependency-audit (ecosystems detected; language-specific audits SKIPPED — none of those ecosystems present), PR Review Agent. CodeRabbit APPROVED on this SHA.
Reviewed automatically by the PR-review agent (single-reviewer mode: opus 4.7). Reply if you need a human review.
…hed to main The push-to-main path filter only watched scripts/tests/prompts, so a change to .github/workflows/dev-lead*.yml could land on main without ever running the concurrency-config test — exactly how the per-repo->per-lane mismatch stayed hidden after #450 merged. Add the dev-lead workflow files to the push paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
45a128f
Dev-Lead — rate-limited (intent: review-changes)PR: #451 |
|
Note @don-petry I received your request but all AI engines are currently rate-limited. I'll retry automatically once the rate limit clears. |
Dev-Lead — rate-limited (intent: fix-reviews)PR: #451 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cdbe75eccd
ℹ️ 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".
Dev-Lead — rate-limited (intent: review-changes)PR: #451 |
|
Note @don-petry I received your request but all AI engines are currently rate-limited. I'll retry automatically once the rate limit clears. |
Dev-Lead — fix-bot-comment (no-changes)Agent reasoning |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d59f973994
ℹ️ 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".
Dev-Lead — fix-reviews (applied)Changes committed and pushed. |
|
Dev-Lead — review-changes (no-changes)No changes were needed for this PR. |
donpetry-bot
left a comment
There was a problem hiding this comment.
Automated review — APPROVED ✓
Risk: LOW
Reviewed commit: 8712c4c9f2758eef37df5562578fb4ba841ff5e5
Review mode: triage-approved (single reviewer)
Summary
Test-only change that realigns tests/dev-lead/integration/test_concurrency_config.sh with the per-issue / per-PR concurrency lane design restored by #450, and extends the test-dev-lead.yml push: path filter so future dev-lead*.yml edits actually trigger this suite (the gap that let the per-repo→per-lane mismatch land silently after #450). No production code touched; pure CI/test infrastructure.
Linked issue analysis
No closes/fixes references — body cites #450, #449, #448, #278, and petry-projects/.github#402 as context only. Appropriate for a follow-up test fix; no issue closure expected.
Findings
Confirming triage assessment — nothing material to flag.
- Scope is correctly narrow: 2 files, +94/-13, both test/CI. No secrets, auth, migrations, or runtime behavior changes.
- New assertions correctly target the lane design: per-PR / per-issue / per-SHA
ci-relaylanes are required, and a single repo-wide'dev-lead'group is forbidden. Multiple bare-value spellings (unquoted / single- / double-quoted, plus|| 'dev-lead'inside the${{ }}expression) are all guarded, so a #278-style collapse can't slip through on quoting changes. - The new
check_orderhelper meaningfully strengthens the suite: it asserts (a)client_payload.pr_numberpredicate appears before therun_idfallback (otherwise everyrepository_dispatchgets a unique lane and ci-relay stops sharing the PR slot) and (b)issue.pull_requestappears beforeissue.number(otherwise PR comments fall through to the issue lane). Both are real, subtle regression vectors worth pinning. - Coverage is extended from just
dev-lead.ymlto also includedev-lead-reusable.yml(the source of truth all consumer stubs delegate to) — correct. - The added
push:path filter (.github/workflows/dev-lead*.yml,.github/workflows/test-dev-lead.yml) closes the real gap that hid the mismatch after #450 merged. Self-referencing the test workflow's own path is fine because the test onlybash-runs a script — no recursion hazard. - Verification: I ran the updated script against the workflows on this PR branch — 13/13 checks pass for
dev-lead.ymland 13/13 fordev-lead-reusable.yml. (PR body says "10/10"; actual is 13/13 per file — cosmetic undercount, not a correctness issue.) shellcheck/bats/Lintall green.
CI status
All required checks green: Lint, shellcheck, ShellCheck, bats, unit-tests, CodeQL, Analyze (actions), Secret scan (gitleaks), Agent Security Scan, agent-shield / AgentShield, validate-agent-profiles, Compile agentic workflows, gh-aw-compile, SonarCloud, SonarCloud Code Analysis, CodeRabbit, review, dispatch. Skipped checks are non-applicable (dependabot, ci-relay, language-specific dependency audits with no manifest changes).
Reviewed automatically by the PR-review agent (single-reviewer mode: opus 4.7). Reply if you need a human review.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8712c4c9f2
ℹ️ 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".
| # Per-issue and per-PR lanes must be present so a labeled-issue pickup is never | ||
| # cancelled by unrelated PR follow-up traffic. | ||
| # Match format('dev-lead-…') to target the concurrency expression, not comments. | ||
| check_present "$WORKFLOW" "format('dev-lead-pr-" "per-PR lane" |
There was a problem hiding this comment.
Assert direct pull_request routing
For pull_request, pull_request_review, and pull_request_review_comment events, the PR lane depends on the github.event.pull_request.number && format('dev-lead-pr-...') branch, but this check can be satisfied by the issue-comment or repository-dispatch PR branches alone. If the direct pull_request.number predicate is removed, those PR/review events fall through to the run-id fallback while this test still passes; please assert that predicate specifically, as the new issue-comment and dispatch assertions do.
Useful? React with 👍 / 👎.
| check_absent "$WORKFLOW" "dev-lead-pr-" "no per-PR group" | ||
| check_absent "$WORKFLOW" "dev-lead-issue-" "no per-issue group" | ||
| # ci-relay keeps its own ephemeral per-SHA slot so it fires immediately. | ||
| check_present "$WORKFLOW" "format('dev-lead-ci-relay-" "ci-relay per-SHA lane" |
There was a problem hiding this comment.
Assert check_run routing to the relay lane
For check_run events, the per-SHA relay lane depends on the github.event_name == 'check_run' && format('dev-lead-ci-relay-...') predicate, but this assertion only requires the lane token to appear somewhere. If the check_run predicate is removed or changed so completed check runs fall through to dev-lead-run-<run_id>, the test still passes while CI-failure relays no longer share the intended per-SHA slot; please assert the full predicate-to-lane binding as the later PR-specific checks do.
Useful? React with 👍 / 👎.
…450, unblocked by #449) (#451) * test(dev-lead): assert per-issue/per-PR concurrency lanes, not per-repo serialization #450 restored per-issue / per-PR concurrency lanes (the fix for issue pickups being cancelled by PR follow-up traffic, petry-projects/.github#402), but test_concurrency_config.sh still asserted the old single 'dev-lead' per-repo group from #278 — so it fails against the current dev-lead.yml (3 checks). It didn't go red on the #450 merge only because the push-to-main path filter excludes .github/workflows/dev-lead*.yml; it would fail on the next dev-lead PR. The #278 serialization existed only to stop concurrent in-place PR checkouts from corrupting the working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree, so parallel per-lane runs are now safe. Invert the assertions to require the per-issue / per-PR / ci-relay lanes and forbid a repo-wide 'dev-lead' group, and extend coverage to the reusable workflow (source of truth for all consumer stubs). Update the CI step label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * ci(dev-lead): run concurrency-config on dev-lead workflow changes pushed to main The push-to-main path filter only watched scripts/tests/prompts, so a change to .github/workflows/dev-lead*.yml could land on main without ever running the concurrency-config test — exactly how the per-repo->per-lane mismatch stayed hidden after #450 merged. Add the dev-lead workflow files to the push paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Code Bot <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…450, unblocked by #449) (#451) * test(dev-lead): assert per-issue/per-PR concurrency lanes, not per-repo serialization #450 restored per-issue / per-PR concurrency lanes (the fix for issue pickups being cancelled by PR follow-up traffic, petry-projects/.github#402), but test_concurrency_config.sh still asserted the old single 'dev-lead' per-repo group from #278 — so it fails against the current dev-lead.yml (3 checks). It didn't go red on the #450 merge only because the push-to-main path filter excludes .github/workflows/dev-lead*.yml; it would fail on the next dev-lead PR. The #278 serialization existed only to stop concurrent in-place PR checkouts from corrupting the working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree, so parallel per-lane runs are now safe. Invert the assertions to require the per-issue / per-PR / ci-relay lanes and forbid a repo-wide 'dev-lead' group, and extend coverage to the reusable workflow (source of truth for all consumer stubs). Update the CI step label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * ci(dev-lead): run concurrency-config on dev-lead workflow changes pushed to main The push-to-main path filter only watched scripts/tests/prompts, so a change to .github/workflows/dev-lead*.yml could land on main without ever running the concurrency-config test — exactly how the per-repo->per-lane mismatch stayed hidden after #450 merged. Add the dev-lead workflow files to the push paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Code Bot <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…450, unblocked by #449) (#451) * test(dev-lead): assert per-issue/per-PR concurrency lanes, not per-repo serialization #450 restored per-issue / per-PR concurrency lanes (the fix for issue pickups being cancelled by PR follow-up traffic, petry-projects/.github#402), but test_concurrency_config.sh still asserted the old single 'dev-lead' per-repo group from #278 — so it fails against the current dev-lead.yml (3 checks). It didn't go red on the #450 merge only because the push-to-main path filter excludes .github/workflows/dev-lead*.yml; it would fail on the next dev-lead PR. The #278 serialization existed only to stop concurrent in-place PR checkouts from corrupting the working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree, so parallel per-lane runs are now safe. Invert the assertions to require the per-issue / per-PR / ci-relay lanes and forbid a repo-wide 'dev-lead' group, and extend coverage to the reusable workflow (source of truth for all consumer stubs). Update the CI step label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * ci(dev-lead): run concurrency-config on dev-lead workflow changes pushed to main The push-to-main path filter only watched scripts/tests/prompts, so a change to .github/workflows/dev-lead*.yml could land on main without ever running the concurrency-config test — exactly how the per-repo->per-lane mismatch stayed hidden after #450 merged. Add the dev-lead workflow files to the push paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Code Bot <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…450, unblocked by #449) (#451) * test(dev-lead): assert per-issue/per-PR concurrency lanes, not per-repo serialization #450 restored per-issue / per-PR concurrency lanes (the fix for issue pickups being cancelled by PR follow-up traffic, petry-projects/.github#402), but test_concurrency_config.sh still asserted the old single 'dev-lead' per-repo group from #278 — so it fails against the current dev-lead.yml (3 checks). It didn't go red on the #450 merge only because the push-to-main path filter excludes .github/workflows/dev-lead*.yml; it would fail on the next dev-lead PR. The #278 serialization existed only to stop concurrent in-place PR checkouts from corrupting the working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree, so parallel per-lane runs are now safe. Invert the assertions to require the per-issue / per-PR / ci-relay lanes and forbid a repo-wide 'dev-lead' group, and extend coverage to the reusable workflow (source of truth for all consumer stubs). Update the CI step label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * ci(dev-lead): run concurrency-config on dev-lead workflow changes pushed to main The push-to-main path filter only watched scripts/tests/prompts, so a change to .github/workflows/dev-lead*.yml could land on main without ever running the concurrency-config test — exactly how the per-repo->per-lane mismatch stayed hidden after #450 merged. Add the dev-lead workflow files to the push paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Code Bot <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…450, unblocked by #449) (#451) * test(dev-lead): assert per-issue/per-PR concurrency lanes, not per-repo serialization being cancelled by PR follow-up traffic, petry-projects/.github#402), but test_concurrency_config.sh still asserted the old single 'dev-lead' per-repo group from #278 — so it fails against the current dev-lead.yml (3 checks). It didn't go red on the #450 merge only because the push-to-main path filter excludes .github/workflows/dev-lead*.yml; it would fail on the next dev-lead PR. The #278 serialization existed only to stop concurrent in-place PR checkouts from corrupting the working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree, so parallel per-lane runs are now safe. Invert the assertions to require the per-issue / per-PR / ci-relay lanes and forbid a repo-wide 'dev-lead' group, and extend coverage to the reusable workflow (source of truth for all consumer stubs). Update the CI step label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * ci(dev-lead): run concurrency-config on dev-lead workflow changes pushed to main The push-to-main path filter only watched scripts/tests/prompts, so a change to .github/workflows/dev-lead*.yml could land on main without ever running the concurrency-config test — exactly how the per-repo->per-lane mismatch stayed hidden after #450 merged. Add the dev-lead workflow files to the push paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Code Bot <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…450, unblocked by #449) (#451) * test(dev-lead): assert per-issue/per-PR concurrency lanes, not per-repo serialization being cancelled by PR follow-up traffic, petry-projects/.github#402), but test_concurrency_config.sh still asserted the old single 'dev-lead' per-repo group from #278 — so it fails against the current dev-lead.yml (3 checks). It didn't go red on the #450 merge only because the push-to-main path filter excludes .github/workflows/dev-lead*.yml; it would fail on the next dev-lead PR. The #278 serialization existed only to stop concurrent in-place PR checkouts from corrupting the working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree, so parallel per-lane runs are now safe. Invert the assertions to require the per-issue / per-PR / ci-relay lanes and forbid a repo-wide 'dev-lead' group, and extend coverage to the reusable workflow (source of truth for all consumer stubs). Update the CI step label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * ci(dev-lead): run concurrency-config on dev-lead workflow changes pushed to main The push-to-main path filter only watched scripts/tests/prompts, so a change to .github/workflows/dev-lead*.yml could land on main without ever running the concurrency-config test — exactly how the per-repo->per-lane mismatch stayed hidden after #450 merged. Add the dev-lead workflow files to the push paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Code Bot <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…450, unblocked by #449) (#451) * test(dev-lead): assert per-issue/per-PR concurrency lanes, not per-repo serialization being cancelled by PR follow-up traffic, petry-projects/.github#402), but test_concurrency_config.sh still asserted the old single 'dev-lead' per-repo group from #278 — so it fails against the current dev-lead.yml (3 checks). It didn't go red on the #450 merge only because the push-to-main path filter excludes .github/workflows/dev-lead*.yml; it would fail on the next dev-lead PR. The #278 serialization existed only to stop concurrent in-place PR checkouts from corrupting the working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree, so parallel per-lane runs are now safe. Invert the assertions to require the per-issue / per-PR / ci-relay lanes and forbid a repo-wide 'dev-lead' group, and extend coverage to the reusable workflow (source of truth for all consumer stubs). Update the CI step label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * ci(dev-lead): run concurrency-config on dev-lead workflow changes pushed to main The push-to-main path filter only watched scripts/tests/prompts, so a change to .github/workflows/dev-lead*.yml could land on main without ever running the concurrency-config test — exactly how the per-repo->per-lane mismatch stayed hidden after #450 merged. Add the dev-lead workflow files to the push paths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Code Bot <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>



Why
#450 restored per-issue / per-PR concurrency lanes — the fix for issue pickups being cancelled by PR follow-up traffic (petry-projects/.github#402). But
tests/dev-lead/integration/test_concurrency_config.shstill asserts the old single repo-wide'dev-lead'group from #278, so it fails 3 checks against the currentdev-lead.yml:It didn't go red when #450 merged only because the
push:→mainpath filter intest-dev-lead.ymlexcludes.github/workflows/dev-lead*.yml. It would fail on the next dev-lead PR (any PR touching adev-lead*path).The #449 connection
#278's per-repo serialization existed solely to stop concurrent in-place PR checkouts from corrupting the agent's working tree. #449 (#448) removed that hazard by checking out each PR branch in an isolated git worktree — so parallel per-lane runs are now safe, and the per-lane design is the correct end state.
Change
dev-lead-pr-/dev-lead-issue-/dev-lead-ci-relay-lanes andcancel-in-progress: false; forbid a repo-wide'dev-lead'group (guards against a feat(concurrency): serialize dev-lead to one active run per repo #278-style regression).dev-lead-reusable.yml(the source of truth all consumer stubs delegate to), not just the inline workflow.Verified: the updated test passes against current
main(10/10 across both workflows);shellcheck -S warningclean.Refs petry-projects/.github#402 · follows #450, #449.
🤖 Generated with Claude Code
Summary by CodeRabbit
Tests
Chores