From 40e1834506e3c890a83efef9a6bc08f2eb064554 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 14:48:24 +0000 Subject: [PATCH 1/5] Run evals in parallel with safe_outputs by updating job needs Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- pkg/workflow/evals_job.go | 21 ++++------- pkg/workflow/evals_job_test.go | 66 ++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 pkg/workflow/evals_job_test.go diff --git a/pkg/workflow/evals_job.go b/pkg/workflow/evals_job.go index 148f1afb7e9..9ae321f6593 100644 --- a/pkg/workflow/evals_job.go +++ b/pkg/workflow/evals_job.go @@ -53,26 +53,19 @@ func (c *Compiler) buildEvalsJob(data *WorkflowData) (*Job, error) { steps = append(steps, c.buildEvalsJobSteps(data)...) // Determine job dependencies. - // Evals runs after safe_outputs when it is configured; otherwise directly after agent. - var needs []string - if data.SafeOutputs != nil { - needs = []string{string(constants.SafeOutputsJobName), string(constants.ActivationJobName)} - } else { - needs = []string{string(constants.AgentJobName), string(constants.ActivationJobName)} + // Evals always depends on agent, and additionally on detection when the detection job is enabled. + // This allows evals to run in parallel with safe_outputs. + needs := []string{string(constants.AgentJobName), string(constants.ActivationJobName)} + if IsDetectionJobEnabled(data.SafeOutputs) { + needs = append(needs, string(constants.DetectionJobName)) } evalsJobLog.Printf("Evals job dependencies resolved: needs=%v", needs) - // Evals job condition: always run but skip if the upstream job was skipped. + // Evals job condition: always run but skip if the agent job was skipped. // This matches the detection job pattern so conclusion still sees a non-skipped evals result. - var upstreamJobName string - if data.SafeOutputs != nil { - upstreamJobName = string(constants.SafeOutputsJobName) - } else { - upstreamJobName = string(constants.AgentJobName) - } alwaysFunc := BuildFunctionCall("always") upstreamNotSkipped := BuildNotEquals( - BuildPropertyAccess(fmt.Sprintf("needs.%s.result", upstreamJobName)), + BuildPropertyAccess(fmt.Sprintf("needs.%s.result", constants.AgentJobName)), BuildStringLiteral("skipped"), ) jobConditionNode := BuildAnd(alwaysFunc, upstreamNotSkipped) diff --git a/pkg/workflow/evals_job_test.go b/pkg/workflow/evals_job_test.go new file mode 100644 index 00000000000..25e59df92eb --- /dev/null +++ b/pkg/workflow/evals_job_test.go @@ -0,0 +1,66 @@ +package workflow + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/github/gh-aw/pkg/constants" +) + +func TestBuildEvalsJobNeedsWithoutDetection(t *testing.T) { + compiler := NewCompiler() + + data := &WorkflowData{ + AI: "copilot", + Evals: &EvalsConfig{ + Questions: []EvalDefinition{ + {ID: "q1", Question: "Does it build?"}, + }, + }, + SafeOutputs: &SafeOutputsConfig{}, + } + + job, err := compiler.buildEvalsJob(data) + require.NoError(t, err) + require.NotNil(t, job) + + assert.ElementsMatch(t, []string{ + string(constants.AgentJobName), + string(constants.ActivationJobName), + }, job.Needs) + assert.NotContains(t, job.Needs, string(constants.SafeOutputsJobName)) + assert.NotContains(t, job.Needs, string(constants.DetectionJobName)) + assert.Contains(t, job.If, "needs.agent.result") + assert.NotContains(t, job.If, "needs.safe_outputs.result") +} + +func TestBuildEvalsJobNeedsWithDetection(t *testing.T) { + compiler := NewCompiler() + + data := &WorkflowData{ + AI: "copilot", + Evals: &EvalsConfig{ + Questions: []EvalDefinition{ + {ID: "q1", Question: "Does it build?"}, + }, + }, + SafeOutputs: &SafeOutputsConfig{ + ThreatDetection: &ThreatDetectionConfig{}, + }, + } + + job, err := compiler.buildEvalsJob(data) + require.NoError(t, err) + require.NotNil(t, job) + + assert.ElementsMatch(t, []string{ + string(constants.AgentJobName), + string(constants.ActivationJobName), + string(constants.DetectionJobName), + }, job.Needs) + assert.NotContains(t, job.Needs, string(constants.SafeOutputsJobName)) + assert.Contains(t, job.If, "needs.agent.result") + assert.NotContains(t, job.If, "needs.safe_outputs.result") +} From 257dd394a44db63acd52be439d55af2e65419408 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:20:43 +0000 Subject: [PATCH 2/5] chore: initial plan - merge main and recompile Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/auto-triage-issues.lock.yml | 5 +++-- .github/workflows/breaking-change-checker.lock.yml | 5 +++-- .github/workflows/contribution-check.lock.yml | 5 +++-- .github/workflows/smoke-copilot.lock.yml | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/auto-triage-issues.lock.yml b/.github/workflows/auto-triage-issues.lock.yml index e2896f38381..2684a95419d 100644 --- a/.github/workflows/auto-triage-issues.lock.yml +++ b/.github/workflows/auto-triage-issues.lock.yml @@ -1558,8 +1558,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/breaking-change-checker.lock.yml b/.github/workflows/breaking-change-checker.lock.yml index 1588bdc1f3b..d5698779349 100644 --- a/.github/workflows/breaking-change-checker.lock.yml +++ b/.github/workflows/breaking-change-checker.lock.yml @@ -1614,8 +1614,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/contribution-check.lock.yml b/.github/workflows/contribution-check.lock.yml index 3cea5078f72..a78f47ec431 100644 --- a/.github/workflows/contribution-check.lock.yml +++ b/.github/workflows/contribution-check.lock.yml @@ -1672,8 +1672,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 920eabd58e9..23e61b3a7c4 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -2818,8 +2818,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read From 006fb26757900068adcb50389d337a9c46eb10c3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:31:25 +0000 Subject: [PATCH 3/5] fix: merge main, fix comment, and recompile workflows Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/architecture-guardian.lock.yml | 5 +++-- .github/workflows/blog-auditor.lock.yml | 5 +++-- .github/workflows/ci-coach.lock.yml | 5 +++-- .github/workflows/daily-doc-healer.lock.yml | 5 +++-- .github/workflows/daily-issues-report.lock.yml | 5 +++-- .github/workflows/daily-news.lock.yml | 5 +++-- .github/workflows/draft-pr-cleanup.lock.yml | 5 +++-- .github/workflows/plan.lock.yml | 5 +++-- .github/workflows/stale-pr-cleanup.lock.yml | 5 +++-- .github/workflows/weekly-blog-post-writer.lock.yml | 5 +++-- pkg/workflow/evals_job.go | 2 +- 11 files changed, 31 insertions(+), 21 deletions(-) diff --git a/.github/workflows/architecture-guardian.lock.yml b/.github/workflows/architecture-guardian.lock.yml index 2e1612ed77a..21f084cec2b 100644 --- a/.github/workflows/architecture-guardian.lock.yml +++ b/.github/workflows/architecture-guardian.lock.yml @@ -1617,8 +1617,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index b59e4db8d02..37cca1a023b 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -1686,8 +1686,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 6bf5ab0efcf..ba8210d7bb4 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -1670,8 +1670,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index b108fc219dd..34043a34c7b 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -1799,8 +1799,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index a01527c95c0..ea47f189a1d 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -1863,8 +1863,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 64da77c50b2..4dea5e4ba4a 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -1815,8 +1815,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/draft-pr-cleanup.lock.yml b/.github/workflows/draft-pr-cleanup.lock.yml index bc855a84b50..1fb1472df8c 100644 --- a/.github/workflows/draft-pr-cleanup.lock.yml +++ b/.github/workflows/draft-pr-cleanup.lock.yml @@ -1596,8 +1596,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index 51073d47135..f98076a711c 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -1731,8 +1731,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/stale-pr-cleanup.lock.yml b/.github/workflows/stale-pr-cleanup.lock.yml index b13c8de2d8d..03d31856513 100644 --- a/.github/workflows/stale-pr-cleanup.lock.yml +++ b/.github/workflows/stale-pr-cleanup.lock.yml @@ -1591,8 +1591,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index e4616091ae7..65930c896d0 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -1807,8 +1807,9 @@ jobs: evals: needs: - activation - - safe_outputs - if: always() && needs.safe_outputs.result != 'skipped' + - agent + - detection + if: always() && needs.agent.result != 'skipped' runs-on: ubuntu-latest permissions: contents: read diff --git a/pkg/workflow/evals_job.go b/pkg/workflow/evals_job.go index 9ae321f6593..2ee0788f140 100644 --- a/pkg/workflow/evals_job.go +++ b/pkg/workflow/evals_job.go @@ -53,7 +53,7 @@ func (c *Compiler) buildEvalsJob(data *WorkflowData) (*Job, error) { steps = append(steps, c.buildEvalsJobSteps(data)...) // Determine job dependencies. - // Evals always depends on agent, and additionally on detection when the detection job is enabled. + // Evals always depends on agent and activation, and additionally on detection when the detection job is enabled. // This allows evals to run in parallel with safe_outputs. needs := []string{string(constants.AgentJobName), string(constants.ActivationJobName)} if IsDetectionJobEnabled(data.SafeOutputs) { From 393cad0ffbe8a2b1e95d0d9070c6abce3d872d39 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:43:52 +0000 Subject: [PATCH 4/5] docs: update function-level doc comment for buildEvalsJob Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com> --- pkg/workflow/evals_job.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/workflow/evals_job.go b/pkg/workflow/evals_job.go index 2ee0788f140..72aca454f38 100644 --- a/pkg/workflow/evals_job.go +++ b/pkg/workflow/evals_job.go @@ -16,8 +16,8 @@ func evalsBranchName(workflowID string) string { return WorkflowStateBranchName(constants.EvalsBranchPrefix, workflowID) } -// buildEvalsJob creates a separate evals job that runs after the safe_outputs job -// (or directly after the agent job if safe_outputs is not configured). +// buildEvalsJob creates a separate evals job that runs after the agent job (and detection +// job when enabled), allowing it to run in parallel with safe_outputs. // The job downloads the agent artifact to access output files, runs a BinEval // multi-question evaluation via an agentic engine, and uploads evals.jsonl as an artifact. // Returns nil if evals are not declared in the workflow frontmatter. From 8cb9ea3a7e9d7397342153ff4e954b2b3b93ccf8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 17:02:57 +0000 Subject: [PATCH 5/5] chore: merge main and recompile workflows Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/architecture-guardian.lock.yml | 1 + .github/workflows/blog-auditor.lock.yml | 1 + .github/workflows/ci-coach.lock.yml | 1 + .github/workflows/daily-doc-healer.lock.yml | 1 + .github/workflows/daily-issues-report.lock.yml | 1 + .github/workflows/daily-news.lock.yml | 1 + .github/workflows/draft-pr-cleanup.lock.yml | 1 + .github/workflows/plan.lock.yml | 1 + .github/workflows/stale-pr-cleanup.lock.yml | 1 + .github/workflows/weekly-blog-post-writer.lock.yml | 1 + 10 files changed, 10 insertions(+) diff --git a/.github/workflows/architecture-guardian.lock.yml b/.github/workflows/architecture-guardian.lock.yml index 21f084cec2b..4ab4b552eae 100644 --- a/.github/workflows/architecture-guardian.lock.yml +++ b/.github/workflows/architecture-guardian.lock.yml @@ -1793,6 +1793,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"violations-analyzed","question":"Did the workflow analyze changed Go or JavaScript files from the last 24 hours for architecture violations, or correctly conclude there were none?"},{"id":"issue-created-or-noop","question":"Was an architecture report issue created when violations were found, or was noop or skip behavior used appropriately when there was nothing actionable?"}]' GH_AW_EVALS_MODEL: "small" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index dcfe5bf6a96..6c2b6150884 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -1858,6 +1858,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"audit-completed","question":"Did the workflow complete the blog availability audit, including page access and content validation checks?"},{"id":"discussion-created","question":"Was an audit discussion created summarizing the pass or fail results and suggested remediation when needed?"}]' GH_AW_EVALS_MODEL: "small" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index ba8210d7bb4..5f2b1421fb1 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -1844,6 +1844,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"repair-or-optimization-path","question":"Did the workflow check validation-status first and then follow the correct repair or optimization path for this run?"},{"id":"pr-created-or-noop","question":"Was a focused CI improvement pull request created when actionable work was found, or was noop called when CI was already healthy?"}]' GH_AW_EVALS_MODEL: "small" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index 34043a34c7b..f90f920c5a6 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -1971,6 +1971,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"gaps-confirmed","question":"Did the workflow identify at least one confirmed documentation gap to fix, or correctly conclude that no actionable gap remained?"},{"id":"pr-issue-or-noop","question":"Was a documentation pull request or issue created for confirmed gaps, or was noop used appropriately when nothing required action?"}]' GH_AW_EVALS_MODEL: "${{ needs.activation.outputs.model_size }}" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index ea47f189a1d..f63966bc683 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -2037,6 +2037,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"report-generated","question":"Did the workflow analyze the prefetched issues data and generate a clustered daily issues report with metrics and trends?"},{"id":"discussion-created","question":"Was a daily issues discussion created successfully with the report findings and recommendations?"}]' GH_AW_EVALS_MODEL: "small" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 4dea5e4ba4a..a65278c6e0b 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -1966,6 +1966,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"digest-generated","question":"Did the workflow analyze the prefetched repository activity and generate a coherent daily news digest?"},{"id":"discussion-created","question":"Was a daily-news discussion created or updated successfully with the report output?"}]' GH_AW_EVALS_MODEL: "copilot/gpt-5.4" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/draft-pr-cleanup.lock.yml b/.github/workflows/draft-pr-cleanup.lock.yml index 1fb1472df8c..ba1669649d8 100644 --- a/.github/workflows/draft-pr-cleanup.lock.yml +++ b/.github/workflows/draft-pr-cleanup.lock.yml @@ -1766,6 +1766,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"stale-drafts-triaged","question":"Did the workflow review open draft pull requests and classify stale drafts according to the warning and cleanup policy?"},{"id":"warnings-or-closures-applied","question":"Were the expected labels, comments, and closures applied to stale draft pull requests when appropriate?"}]' GH_AW_EVALS_MODEL: "small" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index f98076a711c..60249abdcba 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -1905,6 +1905,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"subissues-planned","question":"Did the workflow analyze the triggering issue or discussion and break the work into actionable sub-issues?"},{"id":"issue-actions-completed","question":"Were the planned sub-issues created successfully, with discussion closure handled correctly when required?"}]' GH_AW_EVALS_MODEL: "small" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/stale-pr-cleanup.lock.yml b/.github/workflows/stale-pr-cleanup.lock.yml index 03d31856513..5c280f43672 100644 --- a/.github/workflows/stale-pr-cleanup.lock.yml +++ b/.github/workflows/stale-pr-cleanup.lock.yml @@ -1755,6 +1755,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"stale-prs-triaged","question":"Did the workflow review pull requests open for 30 or more days and classify them according to the cleanup policy?"},{"id":"actions-taken-or-noop","question":"Were the appropriate stale PR comments, labels, and closures applied when needed, or was noop used correctly when no action was required?"}]' GH_AW_EVALS_MODEL: "small" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index 65930c896d0..eddff1c7677 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -1975,6 +1975,7 @@ jobs: GH_AW_EVALS_QUESTIONS: '[{"id":"draft-prepared","question":"Did the workflow analyze recent releases and merged pull requests and prepare a weekly blog post draft?"},{"id":"pr-created-or-explained","question":"Was a blog post pull request created when a draft was ready, or did the agent clearly explain why no pull request was needed?"}]' GH_AW_EVALS_MODEL: "small" GH_AW_EVALS_PHASE: parse + GITHUB_RUN_ID: ${{ github.run_id }} with: script: | const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');