From 85f8ecf9eebd0fbd94860b397450a3d1d6faaeec Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 1 Mar 2026 11:48:50 +0000 Subject: [PATCH 1/4] Initial plan From d4986bcf0ac401e68b06157c390da9651704a2c1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 1 Mar 2026 12:10:53 +0000 Subject: [PATCH 2/4] fix: mixed-trigger workflows collapse workflow_dispatch runs into degenerate concurrency group Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/workflow/concurrency.go | 19 +++++++++++++++++-- pkg/workflow/concurrency_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/pkg/workflow/concurrency.go b/pkg/workflow/concurrency.go index 2a80092645..e51625b8b4 100644 --- a/pkg/workflow/concurrency.go +++ b/pkg/workflow/concurrency.go @@ -169,6 +169,12 @@ func isWorkflowDispatchOnly(on string) bool { return true } +// hasWorkflowDispatchTrigger returns true when workflow_dispatch appears among the +// triggers in the "on" section (possibly alongside other triggers). +func hasWorkflowDispatchTrigger(on string) bool { + return strings.Contains(on, "workflow_dispatch") +} + // isPushWorkflow checks if a workflow's "on" section contains push triggers func isPushWorkflow(on string) bool { return strings.Contains(on, "push") @@ -202,11 +208,20 @@ func buildConcurrencyGroupKeys(workflowData *WorkflowData, isCommandTrigger bool } else if isPullRequestWorkflow(workflowData.On) { // Pure PR workflows: use PR number if available, otherwise fall back to ref for compatibility keys = append(keys, "${{ github.event.pull_request.number || github.ref }}") + } else if strings.Contains(workflowData.On, "issues") && hasWorkflowDispatchTrigger(workflowData.On) { + // Mixed issues+workflow_dispatch: fall back to run_id when dispatch fires (no issue context). + // strings.Contains(on, "issues") intentionally does NOT match "issue_comment" because + // "issue_comment" does not contain "issues" as a substring; the issue_comment+workflow_dispatch + // combination (the rendered form of slash_command) is handled by isIssueWorkflow below. + keys = append(keys, "${{ github.event.issue.number || github.run_id }}") } else if isIssueWorkflow(workflowData.On) { - // Issue workflows: use issue number + // Pure issue workflows: use issue number keys = append(keys, "${{ github.event.issue.number }}") + } else if isDiscussionWorkflow(workflowData.On) && hasWorkflowDispatchTrigger(workflowData.On) { + // Mixed discussion+workflow_dispatch: fall back to run_id when dispatch fires (no discussion context) + keys = append(keys, "${{ github.event.discussion.number || github.run_id }}") } else if isDiscussionWorkflow(workflowData.On) { - // Discussion workflows: use discussion number + // Pure discussion workflows: use discussion number keys = append(keys, "${{ github.event.discussion.number }}") } else if isPushWorkflow(workflowData.On) { // Push workflows: use ref to differentiate between branches diff --git a/pkg/workflow/concurrency_test.go b/pkg/workflow/concurrency_test.go index 4c2c507deb..b46fa1b56c 100644 --- a/pkg/workflow/concurrency_test.go +++ b/pkg/workflow/concurrency_test.go @@ -826,6 +826,30 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.pull_request.number }}"}, description: "slash_command (input-level YAML) should include issue/PR number in concurrency group", }, + { + name: "Mixed issues and workflow_dispatch should fall back to run_id for dispatch runs", + workflowData: &WorkflowData{ + On: `on: + issues: + types: [opened, edited] + workflow_dispatch:`, + }, + isAliasTrigger: false, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.run_id }}"}, + description: "Mixed issues+workflow_dispatch workflows should fall back to run_id when issue number is unavailable", + }, + { + name: "Mixed discussion and workflow_dispatch should fall back to run_id for dispatch runs", + workflowData: &WorkflowData{ + On: `on: + discussion: + types: [created, edited] + workflow_dispatch:`, + }, + isAliasTrigger: false, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.discussion.number || github.run_id }}"}, + description: "Mixed discussion+workflow_dispatch workflows should fall back to run_id when discussion number is unavailable", + }, } for _, tt := range tests { From 143c943eb9067fe88c4fc10e2b9e92d424c67a56 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 1 Mar 2026 12:28:40 +0000 Subject: [PATCH 3/4] fix: always add github.run_id as fallback for all event-specific concurrency keys Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/auto-triage-issues.lock.yml | 2 +- .../workflows/security-compliance.lock.yml | 2 +- pkg/workflow/concurrency.go | 47 +++++++------------ pkg/workflow/concurrency_test.go | 38 +++++++-------- 4 files changed, 38 insertions(+), 51 deletions(-) diff --git a/.github/workflows/auto-triage-issues.lock.yml b/.github/workflows/auto-triage-issues.lock.yml index 2e6af81c9a..4c7e80089e 100644 --- a/.github/workflows/auto-triage-issues.lock.yml +++ b/.github/workflows/auto-triage-issues.lock.yml @@ -43,7 +43,7 @@ name: "Auto-Triage Issues" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.run_id }}" run-name: "Auto-Triage Issues" diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index 66842bb623..f5967191bb 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -44,7 +44,7 @@ name: "Security Compliance Campaign" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.run_id }}" run-name: "Security Compliance Campaign" diff --git a/pkg/workflow/concurrency.go b/pkg/workflow/concurrency.go index e51625b8b4..28ae9ee52d 100644 --- a/pkg/workflow/concurrency.go +++ b/pkg/workflow/concurrency.go @@ -169,12 +169,6 @@ func isWorkflowDispatchOnly(on string) bool { return true } -// hasWorkflowDispatchTrigger returns true when workflow_dispatch appears among the -// triggers in the "on" section (possibly alongside other triggers). -func hasWorkflowDispatchTrigger(on string) bool { - return strings.Contains(on, "workflow_dispatch") -} - // isPushWorkflow checks if a workflow's "on" section contains push triggers func isPushWorkflow(on string) bool { return strings.Contains(on, "push") @@ -194,38 +188,31 @@ func buildConcurrencyGroupKeys(workflowData *WorkflowData, isCommandTrigger bool keys := []string{"gh-aw", "${{ github.workflow }}"} if isCommandTrigger || isSlashCommandWorkflow(workflowData.On) { - // For command/slash_command workflows: use issue/PR number - keys = append(keys, "${{ github.event.issue.number || github.event.pull_request.number }}") + // For command/slash_command workflows: use issue/PR number; fall back to run_id when + // neither is available (e.g. manual workflow_dispatch of the outer workflow). + keys = append(keys, "${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}") } else if isPullRequestWorkflow(workflowData.On) && isIssueWorkflow(workflowData.On) { - // Mixed workflows with both issue and PR triggers: use issue/PR number - keys = append(keys, "${{ github.event.issue.number || github.event.pull_request.number }}") + // Mixed workflows with both issue and PR triggers + keys = append(keys, "${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}") } else if isPullRequestWorkflow(workflowData.On) && isDiscussionWorkflow(workflowData.On) { - // Mixed workflows with PR and discussion triggers: use PR/discussion number - keys = append(keys, "${{ github.event.pull_request.number || github.event.discussion.number }}") + // Mixed workflows with PR and discussion triggers + keys = append(keys, "${{ github.event.pull_request.number || github.event.discussion.number || github.run_id }}") } else if isIssueWorkflow(workflowData.On) && isDiscussionWorkflow(workflowData.On) { - // Mixed workflows with issue and discussion triggers: use issue/discussion number - keys = append(keys, "${{ github.event.issue.number || github.event.discussion.number }}") + // Mixed workflows with issue and discussion triggers + keys = append(keys, "${{ github.event.issue.number || github.event.discussion.number || github.run_id }}") } else if isPullRequestWorkflow(workflowData.On) { - // Pure PR workflows: use PR number if available, otherwise fall back to ref for compatibility - keys = append(keys, "${{ github.event.pull_request.number || github.ref }}") - } else if strings.Contains(workflowData.On, "issues") && hasWorkflowDispatchTrigger(workflowData.On) { - // Mixed issues+workflow_dispatch: fall back to run_id when dispatch fires (no issue context). - // strings.Contains(on, "issues") intentionally does NOT match "issue_comment" because - // "issue_comment" does not contain "issues" as a substring; the issue_comment+workflow_dispatch - // combination (the rendered form of slash_command) is handled by isIssueWorkflow below. - keys = append(keys, "${{ github.event.issue.number || github.run_id }}") + // PR workflows: use PR number, fall back to ref then run_id + keys = append(keys, "${{ github.event.pull_request.number || github.ref || github.run_id }}") } else if isIssueWorkflow(workflowData.On) { - // Pure issue workflows: use issue number - keys = append(keys, "${{ github.event.issue.number }}") - } else if isDiscussionWorkflow(workflowData.On) && hasWorkflowDispatchTrigger(workflowData.On) { - // Mixed discussion+workflow_dispatch: fall back to run_id when dispatch fires (no discussion context) - keys = append(keys, "${{ github.event.discussion.number || github.run_id }}") + // Issue workflows: run_id is the fallback when no issue context is available + // (e.g. when a mixed-trigger workflow is started via workflow_dispatch). + keys = append(keys, "${{ github.event.issue.number || github.run_id }}") } else if isDiscussionWorkflow(workflowData.On) { - // Pure discussion workflows: use discussion number - keys = append(keys, "${{ github.event.discussion.number }}") + // Discussion workflows: run_id is the fallback when no discussion context is available. + keys = append(keys, "${{ github.event.discussion.number || github.run_id }}") } else if isPushWorkflow(workflowData.On) { // Push workflows: use ref to differentiate between branches - keys = append(keys, "${{ github.ref }}") + keys = append(keys, "${{ github.ref || github.run_id }}") } return keys diff --git a/pkg/workflow/concurrency_test.go b/pkg/workflow/concurrency_test.go index b46fa1b56c..7bf3d51eb6 100644 --- a/pkg/workflow/concurrency_test.go +++ b/pkg/workflow/concurrency_test.go @@ -197,7 +197,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true`, description: "PR workflows should use PR number or ref with cancellation", }, @@ -211,7 +211,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: true, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}"`, + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}"`, description: "Alias workflows should use dynamic concurrency with ref but without cancellation", }, { @@ -224,7 +224,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.ref }}"`, + group: "gh-aw-${{ github.workflow }}-${{ github.ref || github.run_id }}"`, description: "Push workflows should use github.ref without cancellation", }, { @@ -250,7 +250,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number }}"`, + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.run_id }}"`, description: "Issue workflows should use issue number without cancellation", }, { @@ -263,7 +263,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number }}"`, + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.run_id }}"`, description: "Issue comment workflows should use issue number without cancellation", }, { @@ -278,7 +278,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" cancel-in-progress: true`, description: "Mixed workflows should use issue/PR number with cancellation enabled", }, @@ -292,7 +292,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.discussion.number }}"`, + group: "gh-aw-${{ github.workflow }}-${{ github.event.discussion.number || github.run_id }}"`, description: "Discussion workflows should use discussion number without cancellation", }, { @@ -307,7 +307,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.discussion.number }}"`, + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.discussion.number || github.run_id }}"`, description: "Mixed issue and discussion workflows should use issue/discussion number without cancellation", }, { @@ -334,7 +334,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}"`, + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}"`, description: "slash_command (input-level YAML) should use issue/PR number, same as command trigger", }, { @@ -348,7 +348,7 @@ func TestGenerateConcurrencyConfig(t *testing.T) { }, isAliasTrigger: false, expected: `concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number }}"`, + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.run_id }}"`, description: "Rendered slash_command YAML (issue_comment + workflow_dispatch) uses issue number via isIssueWorkflow", }, } @@ -718,7 +718,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { types: [opened, edited]`, }, isAliasTrigger: true, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.pull_request.number }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}"}, description: "Alias workflows should use issue/PR number", }, { @@ -729,7 +729,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { types: [opened, synchronize]`, }, isAliasTrigger: false, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.pull_request.number || github.ref }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.pull_request.number || github.ref || github.run_id }}"}, description: "Pure PR workflows should use PR number", }, { @@ -740,7 +740,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { types: [opened, edited]`, }, isAliasTrigger: false, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.run_id }}"}, description: "Pure issue workflows should use issue number", }, { @@ -753,7 +753,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { types: [opened, synchronize]`, }, isAliasTrigger: false, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.pull_request.number }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}"}, description: "Mixed workflows should use issue/PR number", }, { @@ -764,7 +764,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { types: [created, edited]`, }, isAliasTrigger: false, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.discussion.number }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.discussion.number || github.run_id }}"}, description: "Pure discussion workflows should use discussion number", }, { @@ -777,7 +777,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { types: [created, edited]`, }, isAliasTrigger: false, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.discussion.number }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.discussion.number || github.run_id }}"}, description: "Mixed issue and discussion workflows should use issue/discussion number", }, { @@ -788,7 +788,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { branches: [main]`, }, isAliasTrigger: false, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.ref }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.ref || github.run_id }}"}, description: "Push workflows should use github.ref", }, { @@ -801,7 +801,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { types: [opened, synchronize]`, }, isAliasTrigger: false, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.pull_request.number || github.ref }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.pull_request.number || github.ref || github.run_id }}"}, description: "Mixed push+PR workflows should use PR logic since PR is checked first", }, { @@ -823,7 +823,7 @@ func TestBuildConcurrencyGroupKeys(t *testing.T) { workflow_dispatch:`, }, isAliasTrigger: false, - expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.pull_request.number }}"}, + expected: []string{"gh-aw", "${{ github.workflow }}", "${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}"}, description: "slash_command (input-level YAML) should include issue/PR number in concurrency group", }, { From d4f48a2a6b6091f4537609a4c0ee4b65bb38133d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 1 Mar 2026 12:43:58 +0000 Subject: [PATCH 4/4] fix: update wasm golden files for || github.run_id concurrency fallback Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/archie.lock.yml | 2 +- .github/workflows/brave.lock.yml | 2 +- .github/workflows/changeset.lock.yml | 2 +- .github/workflows/craft.lock.yml | 2 +- .github/workflows/example-custom-error-patterns.lock.yml | 2 +- .github/workflows/firewall-escape.lock.yml | 2 +- .github/workflows/grumpy-reviewer.lock.yml | 2 +- .github/workflows/mergefest.lock.yml | 2 +- .github/workflows/pdf-summary.lock.yml | 2 +- .github/workflows/plan.lock.yml | 2 +- .github/workflows/poem-bot.lock.yml | 2 +- .github/workflows/pr-nitpick-reviewer.lock.yml | 2 +- .github/workflows/q.lock.yml | 2 +- .github/workflows/scout.lock.yml | 2 +- .github/workflows/security-review.lock.yml | 2 +- .github/workflows/smoke-agent.lock.yml | 2 +- .github/workflows/smoke-claude.lock.yml | 2 +- .github/workflows/smoke-codex.lock.yml | 2 +- .github/workflows/smoke-copilot-arm.lock.yml | 2 +- .github/workflows/smoke-copilot.lock.yml | 2 +- .github/workflows/smoke-gemini.lock.yml | 2 +- .github/workflows/smoke-multi-pr.lock.yml | 2 +- .github/workflows/smoke-project.lock.yml | 2 +- .github/workflows/smoke-temporary-id.lock.yml | 2 +- .github/workflows/smoke-test-tools.lock.yml | 2 +- .github/workflows/unbloat-docs.lock.yml | 2 +- .github/workflows/workflow-generator.lock.yml | 2 +- .../TestWasmGolden_CompileFixtures/smoke-copilot.golden | 2 +- .../TestWasmGolden_CompileFixtures/smoke-test-tools.golden | 2 +- 29 files changed, 29 insertions(+), 29 deletions(-) diff --git a/.github/workflows/archie.lock.yml b/.github/workflows/archie.lock.yml index 8ab137f6e1..6fd3601ca9 100644 --- a/.github/workflows/archie.lock.yml +++ b/.github/workflows/archie.lock.yml @@ -49,7 +49,7 @@ name: "Archie" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Archie" diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml index 2254203601..695ce53601 100644 --- a/.github/workflows/brave.lock.yml +++ b/.github/workflows/brave.lock.yml @@ -39,7 +39,7 @@ name: "Brave Web Search Agent" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Brave Web Search Agent" diff --git a/.github/workflows/changeset.lock.yml b/.github/workflows/changeset.lock.yml index 443ee1437a..99a8dc8091 100644 --- a/.github/workflows/changeset.lock.yml +++ b/.github/workflows/changeset.lock.yml @@ -44,7 +44,7 @@ name: "Changeset Generator" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Changeset Generator" diff --git a/.github/workflows/craft.lock.yml b/.github/workflows/craft.lock.yml index b12349b737..67bf9a0189 100644 --- a/.github/workflows/craft.lock.yml +++ b/.github/workflows/craft.lock.yml @@ -36,7 +36,7 @@ name: "Workflow Craft Agent" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Workflow Craft Agent" diff --git a/.github/workflows/example-custom-error-patterns.lock.yml b/.github/workflows/example-custom-error-patterns.lock.yml index ef1453447a..c9246887c9 100644 --- a/.github/workflows/example-custom-error-patterns.lock.yml +++ b/.github/workflows/example-custom-error-patterns.lock.yml @@ -33,7 +33,7 @@ name: "Example: Custom Error Patterns" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.run_id }}" run-name: "Example: Custom Error Patterns" diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index 5e6408015b..85c1257626 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -40,7 +40,7 @@ name: "The Great Escapi" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "The Great Escapi" diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index dfe906e3c9..c8e6d25fd2 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -39,7 +39,7 @@ name: "Grumpy Code Reviewer 🔥" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Grumpy Code Reviewer 🔥" diff --git a/.github/workflows/mergefest.lock.yml b/.github/workflows/mergefest.lock.yml index 3b896be973..fccb281d08 100644 --- a/.github/workflows/mergefest.lock.yml +++ b/.github/workflows/mergefest.lock.yml @@ -35,7 +35,7 @@ name: "Mergefest" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Mergefest" diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 56560dac6f..055cda561b 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -55,7 +55,7 @@ name: "Resource Summarizer Agent" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Resource Summarizer Agent" diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index 3ccb3ad7ba..b4dff6d18c 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -39,7 +39,7 @@ name: "Plan Command" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Plan Command" diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 0c0066d75d..107c94bd59 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -49,7 +49,7 @@ name: "Poem Bot - A Creative Agentic Workflow" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Poem Bot - A Creative Agentic Workflow" diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index e35c2ba1cb..916a50438e 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -61,7 +61,7 @@ name: "PR Nitpick Reviewer 🔍" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "PR Nitpick Reviewer 🔍" diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index b13158bb12..71b934222c 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -65,7 +65,7 @@ name: "Q" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Q" diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 8e93c541e6..400a0d9127 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -84,7 +84,7 @@ name: "Scout" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Scout" diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml index ae4c3fcfa4..2794607af2 100644 --- a/.github/workflows/security-review.lock.yml +++ b/.github/workflows/security-review.lock.yml @@ -39,7 +39,7 @@ name: "Security Review Agent 🔒" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Security Review Agent 🔒" diff --git a/.github/workflows/smoke-agent.lock.yml b/.github/workflows/smoke-agent.lock.yml index 059af8936a..5e1aafad82 100644 --- a/.github/workflows/smoke-agent.lock.yml +++ b/.github/workflows/smoke-agent.lock.yml @@ -37,7 +37,7 @@ name: "Smoke Agent" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Agent" diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 5ea1976691..2788b72669 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -51,7 +51,7 @@ name: "Smoke Claude" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Claude" diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index ae8cfdd431..6df0f1925f 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -44,7 +44,7 @@ name: "Smoke Codex" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Codex" diff --git a/.github/workflows/smoke-copilot-arm.lock.yml b/.github/workflows/smoke-copilot-arm.lock.yml index 001a0741e4..ebb07d361d 100644 --- a/.github/workflows/smoke-copilot-arm.lock.yml +++ b/.github/workflows/smoke-copilot-arm.lock.yml @@ -43,7 +43,7 @@ name: "Smoke Copilot ARM64" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Copilot ARM64" diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index eafde05678..13c6272b5f 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -45,7 +45,7 @@ name: "Smoke Copilot" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Copilot" diff --git a/.github/workflows/smoke-gemini.lock.yml b/.github/workflows/smoke-gemini.lock.yml index 6f0bde9b11..2e2aa8af6d 100644 --- a/.github/workflows/smoke-gemini.lock.yml +++ b/.github/workflows/smoke-gemini.lock.yml @@ -44,7 +44,7 @@ name: "Smoke Gemini" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Gemini" diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml index 4fd2d75da8..4875113687 100644 --- a/.github/workflows/smoke-multi-pr.lock.yml +++ b/.github/workflows/smoke-multi-pr.lock.yml @@ -39,7 +39,7 @@ name: "Smoke Multi PR" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Multi PR" diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 2058fcce7b..6101e75994 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -37,7 +37,7 @@ name: "Smoke Project" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Project" diff --git a/.github/workflows/smoke-temporary-id.lock.yml b/.github/workflows/smoke-temporary-id.lock.yml index d324927ddc..0c34f1311a 100644 --- a/.github/workflows/smoke-temporary-id.lock.yml +++ b/.github/workflows/smoke-temporary-id.lock.yml @@ -37,7 +37,7 @@ name: "Smoke Temporary ID" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Temporary ID" diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 9c1c62d709..34bdb162fb 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -39,7 +39,7 @@ name: "Agent Container Smoke Test" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Agent Container Smoke Test" diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 5c3a6d5fbb..aca06c61df 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -43,7 +43,7 @@ name: "Documentation Unbloat" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}" run-name: "Documentation Unbloat" diff --git a/.github/workflows/workflow-generator.lock.yml b/.github/workflows/workflow-generator.lock.yml index cdb5a325c0..bddc939d70 100644 --- a/.github/workflows/workflow-generator.lock.yml +++ b/.github/workflows/workflow-generator.lock.yml @@ -35,7 +35,7 @@ name: "Workflow Generator" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.run_id }}" run-name: "Workflow Generator" diff --git a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-copilot.golden b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-copilot.golden index 4e2a411f0e..9af9349297 100644 --- a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-copilot.golden +++ b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-copilot.golden @@ -15,7 +15,7 @@ name: "Smoke Copilot" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Smoke Copilot" diff --git a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-test-tools.golden b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-test-tools.golden index 5fb9d289e1..53c228a119 100644 --- a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-test-tools.golden +++ b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-test-tools.golden @@ -13,7 +13,7 @@ name: "Agent Container Smoke Test" permissions: {} concurrency: - group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + group: "gh-aw-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}" cancel-in-progress: true run-name: "Agent Container Smoke Test"