Skip to content

feat(#2611): pin runners to ubuntu-24.04 with configurable __GH_RUNNER__ - #2659

Merged
waynesun09 merged 3 commits into
mainfrom
fix-2611-pin-ubuntu-runner
Jun 25, 2026
Merged

feat(#2611): pin runners to ubuntu-24.04 with configurable __GH_RUNNER__#2659
waynesun09 merged 3 commits into
mainfrom
fix-2611-pin-ubuntu-runner

Conversation

@waynesun09

@waynesun09 waynesun09 commented Jun 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Pin all runs-on: ubuntu-latest to ubuntu-24.04 across repo CI workflows and user-facing docs
  • Make the runner image configurable for scaffold templates via __GH_RUNNER__ placeholder, resolved at install time from config.DefaultGHRunner
  • Add runner_image input (default: ubuntu-24.04) to all reusable workflows so callers can override

Architecture

Layer Mechanism Override
Repo CI (.github/workflows/) Hardcoded ubuntu-24.04 Edit the workflow directly
Scaffold templates (internal/scaffold/) __GH_RUNNER__ placeholder, resolved by render.go Pass RunnerImage in RenderOptions
Reusable workflows (reusable-*.yml) runner_image input with default Caller passes runner_image in with:

Commits

  1. ci: Pin repo CI workflows and user guide to ubuntu-24.04
  2. feat(scaffold): Add DefaultGHRunner constant, wire __GH_RUNNER__ through render pipeline, update templates and tests
  3. feat(dispatch): Add runner_image input to all reusable workflows, pass through dispatch

Closes #2611

Test plan

  • grep -r 'ubuntu-latest' .github/workflows/ internal/scaffold/ returns nothing
  • go test ./internal/scaffold/ ./internal/config/ passes
  • make lint passes
  • CI workflows pass on ubuntu-24.04
  • Scaffold templates render correctly with pinned version

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Pin GitHub Actions runners to ubuntu-24.04
⚙️ Configuration changes 📝 Documentation 🕐 20-40 Minutes

Grey Divider

Description

• Pin all GitHub Actions jobs to ubuntu-24.04 to avoid ubuntu-latest drift.
• Update scaffolded workflow templates to enroll repos with the pinned runner.
• Refresh docs examples to match the new runner baseline.
Diagram

graph TD
A["Repo workflows"] --> B["CI jobs"] --> C["Runner ubuntu-24.04"]
D["Scaffold templates"] --> B
E["Docs examples"] --> B
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Centralize runner label via repo/org variable
  • ➕ Single place to update runner version without touching many files
  • ➕ Easier to standardize runner choice across templates and workflows
  • ➖ Requires variable management/permissions across environments/orgs
  • ➖ Expression-based runs-on can reduce readability and portability
2. Add a CI/lint guardrail for `ubuntu-latest`
  • ➕ Prevents accidental reintroduction of ubuntu-latest
  • ➕ Keeps the pinning invariant enforceable over time
  • ➖ Extra maintenance for a repo-specific lint/check
  • ➖ May need allowlisting for third-party examples or edge cases
3. Increase reuse via reusable workflows for common jobs
  • ➕ Reduces duplication and makes runner changes more centralized
  • ➕ Encourages consistent job configuration across the repo
  • ➖ Higher upfront refactor cost than a straightforward pin
  • ➖ Not all workflows/jobs may fit a shared abstraction cleanly

Recommendation: The direct pin to ubuntu-24.04 is the right immediate mitigation for ubuntu-latest drift and is appropriately low-risk. As a follow-up, add a simple lint/check to block ubuntu-latest (and optionally centralize the runner label via a variable) to reduce future maintenance and prevent regressions.

Files changed (27) +33 / -33

Documentation (1) +2 / -2
building-custom-agents.mdUpdate custom agents guide to use ubuntu-24.04 runners +2/-2

Update custom agents guide to use ubuntu-24.04 runners

• Adjusts workflow examples in the guide to use 'runs-on: ubuntu-24.04' so docs match the repo's pinned runner policy.

docs/guides/user/building-custom-agents.md

Other (26) +31 / -31
branch-cleanup.ymlPin branch cleanup job runner to ubuntu-24.04 +1/-1

Pin branch cleanup job runner to ubuntu-24.04

• Replaces 'runs-on: ubuntu-latest' with 'ubuntu-24.04' for the cleanup job to avoid alias drift.

.github/workflows/branch-cleanup.yml

e2e.ymlPin E2E workflow runners to ubuntu-24.04 +2/-2

Pin E2E workflow runners to ubuntu-24.04

• Updates both the gating and E2E execution jobs to run on 'ubuntu-24.04' instead of 'ubuntu-latest'.

.github/workflows/e2e.yml

fullsend.yamlPin fullsend workflow runner to ubuntu-24.04 +1/-1

Pin fullsend workflow runner to ubuntu-24.04

• Pins the fullsend job runner image to 'ubuntu-24.04' to prevent unexpected changes when 'ubuntu-latest' moves.

.github/workflows/fullsend.yaml

functional-tests.ymlPin functional test runners to ubuntu-24.04 +2/-2

Pin functional test runners to ubuntu-24.04

• Updates both the gate and functional test jobs to use the 'ubuntu-24.04' runner.

.github/workflows/functional-tests.yml

lint.ymlPin lint workflow runners to ubuntu-24.04 +3/-3

Pin lint workflow runners to ubuntu-24.04

• Pins the lint jobs (including commit-message linting and web lint) to 'ubuntu-24.04' for stability across GitHub runner updates.

.github/workflows/lint.yml

notify-adr-slack.ymlPin ADR Slack notifier runner to ubuntu-24.04 +1/-1

Pin ADR Slack notifier runner to ubuntu-24.04

• Changes the notify job runner from 'ubuntu-latest' to 'ubuntu-24.04'.

.github/workflows/notify-adr-slack.yml

pat-cleanup.ymlPin PAT cleanup workflow runner to ubuntu-24.04 +1/-1

Pin PAT cleanup workflow runner to ubuntu-24.04

• Pins the cleanup job to 'ubuntu-24.04' to avoid breakage from 'ubuntu-latest' alias updates.

.github/workflows/pat-cleanup.yml

release.ymlPin release workflow runner to ubuntu-24.04 +1/-1

Pin release workflow runner to ubuntu-24.04

• Updates the release job to run on 'ubuntu-24.04' rather than 'ubuntu-latest'.

.github/workflows/release.yml

renovate.ymlPin Renovate workflow runner to ubuntu-24.04 +1/-1

Pin Renovate workflow runner to ubuntu-24.04

• Pins the Renovate job runner image to 'ubuntu-24.04' for deterministic CI behavior.

.github/workflows/renovate.yml

reusable-code.ymlPin reusable code workflow runner to ubuntu-24.04 +1/-1

Pin reusable code workflow runner to ubuntu-24.04

• Updates the reusable workflow's job runner to 'ubuntu-24.04' to keep callers consistent.

.github/workflows/reusable-code.yml

reusable-dispatch.ymlPin reusable dispatch workflow runner to ubuntu-24.04 +1/-1

Pin reusable dispatch workflow runner to ubuntu-24.04

• Pins the route job runner to 'ubuntu-24.04' for stability across uses of this reusable workflow.

.github/workflows/reusable-dispatch.yml

reusable-fix.ymlPin reusable fix workflow runner to ubuntu-24.04 +1/-1

Pin reusable fix workflow runner to ubuntu-24.04

• Pins the reusable fix job runner image to 'ubuntu-24.04'.

.github/workflows/reusable-fix.yml

reusable-prioritize.ymlPin reusable prioritize workflow runner to ubuntu-24.04 +1/-1

Pin reusable prioritize workflow runner to ubuntu-24.04

• Updates the prioritize job to run on 'ubuntu-24.04' instead of the moving 'ubuntu-latest' target.

.github/workflows/reusable-prioritize.yml

reusable-retro.ymlPin reusable retro workflow runner to ubuntu-24.04 +1/-1

Pin reusable retro workflow runner to ubuntu-24.04

• Pins the retro job runner image to 'ubuntu-24.04' for predictable execution across invocations.

.github/workflows/reusable-retro.yml

reusable-review.ymlPin reusable review workflow runner to ubuntu-24.04 +1/-1

Pin reusable review workflow runner to ubuntu-24.04

• Pins the review job runner to 'ubuntu-24.04' to avoid 'ubuntu-latest' drift for callers.

.github/workflows/reusable-review.yml

reusable-triage.ymlPin reusable triage workflow runner to ubuntu-24.04 +1/-1

Pin reusable triage workflow runner to ubuntu-24.04

• Updates the triage job to run on 'ubuntu-24.04' rather than 'ubuntu-latest'.

.github/workflows/reusable-triage.yml

sandbox-images.ymlPin sandbox image build runners to ubuntu-24.04 +2/-2

Pin sandbox image build runners to ubuntu-24.04

• Pins both base and code image build jobs to 'ubuntu-24.04' for consistent container build environments.

.github/workflows/sandbox-images.yml

site-build.ymlPin site build workflow runner to ubuntu-24.04 +1/-1

Pin site build workflow runner to ubuntu-24.04

• Pins the documentation/site build job runner image to 'ubuntu-24.04'.

.github/workflows/site-build.yml

site-deploy.ymlPin site deploy workflow runner to ubuntu-24.04 +1/-1

Pin site deploy workflow runner to ubuntu-24.04

• Updates the deploy job runner to 'ubuntu-24.04' to avoid surprises from 'ubuntu-latest' changes.

.github/workflows/site-deploy.yml

stale.ymlPin stale issue workflow runner to ubuntu-24.04 +1/-1

Pin stale issue workflow runner to ubuntu-24.04

• Pins the stale automation job runner to 'ubuntu-24.04'.

.github/workflows/stale.yml

dispatch.ymlPin scaffold dispatch workflow runner to ubuntu-24.04 +1/-1

Pin scaffold dispatch workflow runner to ubuntu-24.04

• Updates the scaffolded dispatch workflow to use 'ubuntu-24.04', ensuring newly scaffolded repos are pinned by default.

internal/scaffold/fullsend-repo/.github/workflows/dispatch.yml

prioritize-scheduler.ymlPin scaffold prioritize scheduler runner to ubuntu-24.04 +1/-1

Pin scaffold prioritize scheduler runner to ubuntu-24.04

• Pins the scaffolded scheduler/dispatch job to 'ubuntu-24.04' for stability in enrolled repositories.

internal/scaffold/fullsend-repo/.github/workflows/prioritize-scheduler.yml

repo-maintenance.ymlPin scaffold repo maintenance runner to ubuntu-24.04 +1/-1

Pin scaffold repo maintenance runner to ubuntu-24.04

• Pins the reconcile/enrollment maintenance workflow job to 'ubuntu-24.04'.

internal/scaffold/fullsend-repo/.github/workflows/repo-maintenance.yml

retro.ymlPin scaffold retro workflow runner to ubuntu-24.04 +1/-1

Pin scaffold retro workflow runner to ubuntu-24.04

• Pins the scaffolded retro debounce job runner to 'ubuntu-24.04'.

internal/scaffold/fullsend-repo/.github/workflows/retro.yml

shim-per-repo.yamlPin per-repo shim template runner to ubuntu-24.04 +1/-1

Pin per-repo shim template runner to ubuntu-24.04

• Updates the shim workflow template to use 'ubuntu-24.04', so generated workflows don’t rely on 'ubuntu-latest'.

internal/scaffold/fullsend-repo/templates/shim-per-repo.yaml

shim-workflow-call.yamlPin workflow-call shim template runner to ubuntu-24.04 +1/-1

Pin workflow-call shim template runner to ubuntu-24.04

• Pins the shim workflow-call template to 'ubuntu-24.04' to ensure consistent runners for generated workflows.

internal/scaffold/fullsend-repo/templates/shim-workflow-call.yaml

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown

Site preview

Preview: https://71e98ced-site.fullsend-ai.workers.dev

Commit: b0f9080102bfdb5274edc76f3294009c5aa5c8ca

@fullsend-ai-review

fullsend-ai-review Bot commented Jun 25, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 2:21 PM UTC · Completed 2:34 PM UTC
Commit: eec8999 · View workflow run →

@codecov

codecov Bot commented Jun 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📎 Requirement gaps (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 58 rules

Grey Divider


Remediation recommended

1. Docs still show ubuntu-latest 🐞 Bug ⚙ Maintainability
Description
Multiple markdown docs still contain GitHub Actions examples with runs-on: ubuntu-latest, despite
this PR pinning workflows/templates to ubuntu-24.04. This leaves inconsistent guidance and makes
it easy for contributors/users to copy-paste ubuntu-latest back into real workflows later.
Code

docs/guides/user/building-custom-agents.md[373]

+    runs-on: ubuntu-24.04
Relevance

⭐⭐⭐ High

Team often fixes doc/workflow drift (outdated labels, action version inconsistencies) in docs;
similar fixes accepted.

PR-#1039
PR-#2508
PR-#1179

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The repo now pins active workflows to ubuntu-24.04, but these documentation snippets still
explicitly specify ubuntu-latest, creating inconsistent guidance.

docs/ADRs/0024-harness-definitions.md[609-630]
docs/plans/agent-execution-environment.md[95-122]
docs/superpowers/plans/2026-04-09-site-cloudflare-pages.md[49-60]
docs/superpowers/plans/2026-05-04-retro-agent.md[741-760]
docs/superpowers/plans/2026-05-04-retro-agent.md[909-951]
docs/superpowers/specs/2026-04-17-installer-agent-content-design.md[148-205]
.github/workflows/e2e.yml[40-50]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Several markdown docs still include GitHub Actions examples using `runs-on: ubuntu-latest` even though the repo’s workflows/templates were pinned to `ubuntu-24.04` in this PR.

## Issue Context
This PR’s intent is to avoid silent CI changes caused by the moving `ubuntu-latest` alias. Leaving `ubuntu-latest` in other docs creates inconsistent guidance and increases the chance it gets reintroduced into real workflows via copy/paste.

## Fix Focus Areas
- docs/ADRs/0024-harness-definitions.md[609-630]
- docs/plans/agent-execution-environment.md[95-122]
- docs/superpowers/plans/2026-04-09-site-cloudflare-pages.md[49-60]
- docs/superpowers/plans/2026-05-04-retro-agent.md[741-760]
- docs/superpowers/plans/2026-05-04-retro-agent.md[909-951]
- docs/superpowers/specs/2026-04-17-installer-agent-content-design.md[148-205]

## Notes
If any of these documents intentionally want `ubuntu-latest` (e.g., to encourage staying current), explicitly call that out in text next to the snippet so the inconsistency is deliberate and clear.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

@waynesun09
waynesun09 requested a review from rh-hemartin June 25, 2026 14:24
@fullsend-ai-review

fullsend-ai-review Bot commented Jun 25, 2026

Copy link
Copy Markdown

Review

Findings

Medium

  • [protected-path] .github/workflows/, .pre-commit-config.yaml — 21 files under protected paths are modified (20 workflow files + .pre-commit-config.yaml). The PR links to issue fullsend github action use -latest for github runner  #2611 and explains the rationale (pinning runners to prevent silent CI breakage). Human approval is required for changes to protected paths regardless of context.

  • [Runner selection injection] .github/workflows/reusable-code.yml — The runner_image input (type: string, default: ubuntu-24.04) added to all seven reusable workflows is used directly in runs-on: ${{ inputs.runner_image }} with no validation. Any caller workflow can override the runner label. While the threat is mitigated by the fact that callers already control their own workflow context (the challenger downgraded this from high), adding an allowlist check for GitHub-hosted runner labels would be defense-in-depth. This applies to reusable-code.yml, reusable-dispatch.yml, reusable-fix.yml, reusable-prioritize.yml, reusable-retro.yml, reusable-review.yml, and reusable-triage.yml.

  • [scope-creep] internal/config/config.go — Issue fullsend github action use -latest for github runner  #2611 requested pinning runners from ubuntu-latest to ubuntu-24.04. The PR goes further by adding configurable runner infrastructure (DefaultGHRunner constant, RunnerImage field in RenderOptions, resolvedRunner() function, __GH_RUNNER__ placeholder). While this is a reasonable design choice for future-proofing (Ubuntu 26.04 will eventually replace 24.04), it expands scope beyond the issue's authorization. Note that RenderOptionsForInstall is not updated to accept RunnerImage, so the configurability is not wired into the production CLI path — the feature is effectively test-only.

  • [architectural-misalignment] internal/scaffold/render.go — Existing scaffold placeholders (__REUSABLE_WORKFLOW__, __REUSABLE_DISPATCH__, __FULLSEND_AI_REF__) control distribution-model concerns (vendored vs. upstream). Runner image selection is orthogonal — it's deployment configuration, similar to mint_url and gcp_region, which are passed as workflow inputs via vars.* rather than install-time placeholders. Adding __GH_RUNNER__ as a placeholder conflates install-time substitution with runtime configuration. Consider whether runner_image should follow the vars.* pattern instead.


Labels: PR modifies CI workflows and scaffold templates for runner pinning

Previous run

Review

Findings

Medium

  • [protected-path] .github/workflows/, .pre-commit-config.yaml — 21 files under protected paths are modified (20 workflow files + .pre-commit-config.yaml). The PR links to issue fullsend github action use -latest for github runner  #2611 and explains the rationale (pinning runners to prevent silent CI breakage). Human approval is required for changes to protected paths regardless of context.

  • [Runner selection injection] .github/workflows/reusable-code.yml — The runner_image input (type: string, default: ubuntu-24.04) added to all seven reusable workflows is used directly in runs-on: ${{ inputs.runner_image }} with no validation. Any caller workflow can override the runner label. While the threat is mitigated by the fact that callers already control their own workflow context (the challenger downgraded this from high), adding an allowlist check for GitHub-hosted runner labels would be defense-in-depth. This applies to reusable-code.yml, reusable-dispatch.yml, reusable-fix.yml, reusable-prioritize.yml, reusable-retro.yml, reusable-review.yml, and reusable-triage.yml.

  • [scope-creep] internal/config/config.go — Issue fullsend github action use -latest for github runner  #2611 requested pinning runners from ubuntu-latest to ubuntu-24.04. The PR goes further by adding configurable runner infrastructure (DefaultGHRunner constant, RunnerImage field in RenderOptions, resolvedRunner() function, __GH_RUNNER__ placeholder). While this is a reasonable design choice for future-proofing (Ubuntu 26.04 will eventually replace 24.04), it expands scope beyond the issue's authorization. Note that RenderOptionsForInstall is not updated to accept RunnerImage, so the configurability is not wired into the production CLI path — the feature is effectively test-only.

  • [architectural-misalignment] internal/scaffold/render.go — Existing scaffold placeholders (__REUSABLE_WORKFLOW__, __REUSABLE_DISPATCH__, __FULLSEND_AI_REF__) control distribution-model concerns (vendored vs. upstream). Runner image selection is orthogonal — it's deployment configuration, similar to mint_url and gcp_region, which are passed as workflow inputs via vars.* rather than install-time placeholders. Adding __GH_RUNNER__ as a placeholder conflates install-time substitution with runtime configuration. Consider whether runner_image should follow the vars.* pattern instead.


Labels: PR modifies CI workflows and scaffold templates for runner pinning

Previous run

Review

Findings

Medium

  • [protected-path] .github/workflows/ — 17 files under the protected .github/ path are modified. The PR links to issue fullsend github action use -latest for github runner  #2611 and explains the rationale (pinning runners to prevent silent CI breakage), providing sufficient context. Human approval is required for changes to protected paths regardless of context.

Labels: PR pins GitHub Actions runner versions across CI workflows and scaffold templates — CI maintenance.


Labels: PR modifies CI workflows, scaffold templates, and runner configuration

Previous run

Review

Findings

Medium

  • [protected-path] .github/workflows/, .pre-commit-config.yaml — 21 files under protected paths are modified (20 workflow files + .pre-commit-config.yaml). The PR links to issue fullsend github action use -latest for github runner  #2611 and explains the rationale (pinning runners to prevent silent CI breakage). Human approval is required for changes to protected paths regardless of context.

  • [Runner selection injection] .github/workflows/reusable-code.yml — The runner_image input (type: string, default: ubuntu-24.04) added to all seven reusable workflows is used directly in runs-on: ${{ inputs.runner_image }} with no validation. Any caller workflow can override the runner label. While the threat is mitigated by the fact that callers already control their own workflow context (the challenger downgraded this from high), adding an allowlist check for GitHub-hosted runner labels would be defense-in-depth. This applies to reusable-code.yml, reusable-dispatch.yml, reusable-fix.yml, reusable-prioritize.yml, reusable-retro.yml, reusable-review.yml, and reusable-triage.yml.

  • [scope-creep] internal/config/config.go — Issue fullsend github action use -latest for github runner  #2611 requested pinning runners from ubuntu-latest to ubuntu-24.04. The PR goes further by adding configurable runner infrastructure (DefaultGHRunner constant, RunnerImage field in RenderOptions, resolvedRunner() function, __GH_RUNNER__ placeholder). While this is a reasonable design choice for future-proofing (Ubuntu 26.04 will eventually replace 24.04), it expands scope beyond the issue's authorization. Note that RenderOptionsForInstall is not updated to accept RunnerImage, so the configurability is not wired into the production CLI path — the feature is effectively test-only.

  • [architectural-misalignment] internal/scaffold/render.go — Existing scaffold placeholders (__REUSABLE_WORKFLOW__, __REUSABLE_DISPATCH__, __FULLSEND_AI_REF__) control distribution-model concerns (vendored vs. upstream). Runner image selection is orthogonal — it's deployment configuration, similar to mint_url and gcp_region, which are passed as workflow inputs via vars.* rather than install-time placeholders. Adding __GH_RUNNER__ as a placeholder conflates install-time substitution with runtime configuration. Consider whether runner_image should follow the vars.* pattern instead.


Labels: PR modifies CI workflows and scaffold templates for runner pinning

Previous run (2)

Review

Findings

Medium

  • [protected-path] .github/workflows/ — 17 files under the protected .github/ path are modified. The PR links to issue fullsend github action use -latest for github runner  #2611 and explains the rationale (pinning runners to prevent silent CI breakage), providing sufficient context. Human approval is required for changes to protected paths regardless of context.

Labels: PR pins GitHub Actions runner versions across CI workflows and scaffold templates — CI maintenance.

@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment component/ci CI pipelines and checks type/chore Maintenance and housekeeping tasks labels Jun 25, 2026
Replace ubuntu-latest with ubuntu-24.04 across all repo CI workflows
and the custom agents user guide. Pinning prevents silent breakage
when GitHub updates the ubuntu-latest alias.

Assisted-by: Claude
Signed-off-by: Wayne Sun <gsun@redhat.com>
@waynesun09
waynesun09 force-pushed the fix-2611-pin-ubuntu-runner branch from eec8999 to eed2d71 Compare June 25, 2026 14:35
@waynesun09 waynesun09 changed the title fix(#2611): pin GitHub Actions runners to ubuntu-24.04 feat(#2611): pin runners to ubuntu-24.04 with configurable __GH_RUNNER__ Jun 25, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Jun 25, 2026

Copy link
Copy Markdown

🤖 Review · ⚠️ Cancelled · Started 2:39 PM UTC · Ended 2:43 PM UTC
Commit: 2d8adb7 · View workflow run →

Add DefaultGHRunner constant ("ubuntu-24.04") in config and wire
__GH_RUNNER__ placeholder substitution through the scaffold render
pipeline. All scaffold templates now use __GH_RUNNER__ instead of a
hardcoded runner, resolved to the default at install time. Callers
can override via RenderOptions.RunnerImage.

Assisted-by: Claude
Signed-off-by: Wayne Sun <gsun@redhat.com>
@fullsend-ai-review

fullsend-ai-review Bot commented Jun 25, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 2:46 PM UTC · Completed 3:00 PM UTC
Commit: 4bf6085 · View workflow run →

@waynesun09
waynesun09 added this pull request to the merge queue Jun 25, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 25, 2026
@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment and removed requires-manual-review Review requires human judgment labels Jun 25, 2026
Add runner_image workflow_call input (default: ubuntu-24.04) to all
reusable agent workflows and reusable-dispatch.yml. The dispatch
workflow passes the value through to each stage. Callers can now
override the runner image without forking workflows.

Assisted-by: Claude
Signed-off-by: Wayne Sun <gsun@redhat.com>
@fullsend-ai-review

fullsend-ai-review Bot commented Jun 25, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 3:12 PM UTC · Completed 3:25 PM UTC
Commit: b0f9080 · View workflow run →

@fullsend-ai-review fullsend-ai-review Bot removed the requires-manual-review Review requires human judgment label Jun 25, 2026
@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment component/runner Agent runner behavior and lifecycle component/install CLI install and app setup labels Jun 25, 2026
@waynesun09 waynesun09 added the ok-to-test Allow e2e CI to run after maintainer review (must be re-applied after each push) label Jun 25, 2026
@waynesun09
waynesun09 added this pull request to the merge queue Jun 25, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jun 25, 2026
@waynesun09
waynesun09 added this pull request to the merge queue Jun 25, 2026
Merged via the queue into main with commit 5e39c91 Jun 25, 2026
30 of 31 checks passed
@waynesun09
waynesun09 deleted the fix-2611-pin-ubuntu-runner branch June 25, 2026 19:38
@fullsend-ai-retro

fullsend-ai-retro Bot commented Jun 25, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 7:42 PM UTC · Completed 7:50 PM UTC
Commit: b0f9080 · View workflow run →

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #2659 — Pin runners to ubuntu-24.04 with configurable __GH_RUNNER__

Timeline

  • 14:17 — PR opened by waynesun09 (human-authored, 37 files, 3 commits)
  • 14:18 — CI and review agent dispatched
  • 14:26 — Human (ralphbean) approves PR — 8 minutes before the first review agent run completes
  • 14:34 — Review run 1 completes (commit eec8999): 1 finding (protected-path only)
  • 14:39–14:43 — Review run 2 (commit 2d8adb7): cancelled by subsequent push (concurrency working correctly)
  • 14:46–15:00 — Review run 3 (commit 4bf6085): 4 medium findings — protected-path, runner selection injection, scope-creep, architectural-misalignment
  • 15:12–15:25 — Review run 4 (commit b0f9080): same 4 findings
  • 19:38 — PR merged with no findings addressed

What went well

  • Review agent identified legitimate concerns. The runner injection, scope-creep, and architectural-misalignment findings were all substantive. The agent correctly flagged that the PR went beyond the issue's ask (pinning) to add configurable runner infrastructure.
  • Concurrency control worked. Run 2 was correctly cancelled when superseded by a new push. Prior-review anchoring ensured severity stability across runs 3 and 4.
  • Qodo bot caught a practical gap. Multiple docs/ADRs still reference ubuntu-latest despite the PR's intent to eliminate it.

What could go better

  • Human approved before any review agent findings were posted. The approval at 14:26 predated the first review completion at 14:34. The 4 medium findings posted later were effectively ignored. This is a known gap tracked by #2099.
  • Review agent missed the incomplete migration. Qodo found that docs/ADRs still contain ubuntu-latest references. The review agent's 4 findings were all design/architecture-level concerns; it did not check whether the mechanical replacement was applied consistently across docs, examples, and plans. See proposal below.

Existing issues covering observed gaps

  • #2099 — Review agent should alert when human approves with unresolved Medium+ findings. Directly applicable here.
  • #1222 — Triage agent should recommend old-value searches for rename/default-change tasks. Related but targets triage, not review.
  • #1422 / #963 — Deduplication of review runs on rebases. Partially applicable but the 4 runs here were triggered by 4 distinct pushes, so behavior was correct.

Proposals filed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/ci CI pipelines and checks component/install CLI install and app setup component/runner Agent runner behavior and lifecycle ok-to-test Allow e2e CI to run after maintainer review (must be re-applied after each push) requires-manual-review Review requires human judgment type/chore Maintenance and housekeeping tasks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fullsend github action use -latest for github runner

2 participants