fix(actions): pin central required review workflows off starved ubuntu-latest - #1632
Conversation
…u-latest strix.yml, opencode-review.yml, and noema-review.yml -- the three workflows the org's own required-workflow ruleset runs against every PR in every sibling repository -- still requested the floating ubuntu-latest image after #1618 (security gates) and #1609 (merge scheduler) already pinned their own jobs off it as "the observed starved floating image". Since these three are the actual required-check gate blocking merge organization-wide, a starved image here is a direct, high-leverage contributor to the sustained multi-hour organization-wide Actions queuing observed throughout this session (independently corroborated by #1630's own record of 822 queued runs at merge time). Pinned all 9 occurrences (3 + 5 + 2) to ubuntu-24.04, matching the established pattern exactly. New tests/test_required_review_runner_image_contract.py mirrors test_required_security_runner_image_contract.py's structure. Also fixed 4 unrelated pre-existing test failures on main, confirmed to reproduce identically on a clean origin/main checkout: #1630 moved the organization sweep's rotation cadence from every 15 minutes to hourly (reducing control-plane pressure under the same Actions saturation), changing pr-review-merge-scheduler.yml's ORG_SWEEP_ROTATION_INDEX wall-clock fallback divisor from 900 to 3600, but left test_required_workflow_queue_contract.py's four rotation-index tests asserting the old divisor/string. Full suite: 2407 passed, 1 skipped, 21 subtests. Coverage 100% on scripts/ci. Interrogate 100%. All touched workflow files re-parse as valid YAML. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BV96rXhqoR3tYZ9AeAVur4
|
Fresh live evidence: protected The causal patch is independently verified before merge: all nine production changes in The only remaining admission evidence is queued behind the runner fleet whose starved |
Integrate protected main@d9320a42d7a272720f6b659003a0456e4dc65e8e without force-push. The #1632 required-review runner pin is already content-equivalent on this writer; retain the writer's seven governance-path delta while recording current-main ancestry so exact-head review/check evidence regenerates against the latest protected control plane.
Restore the exact protected-main #1632 tree for Strix/OpenCode/Noema runner pins, queue regressions, changelog and product-gap record after ancestry integration. The governance writer retains only its seven intended audit/documentation/test deltas over main.
QUEUE_SATURATION_CHICKEN_EGG: exact head 5bc790d is mechanically mergeable; current-head Devin and CodeRabbit statuses are successful; all review threads are resolved; exact-head quality CI and completed security checks are green. Remaining required Noema/OpenCode/Strix/security workflows are queued behind the documented saturated Actions fleet, and the central runner-owner repair #1632 landed after these stale queued executions were created. Merge uses expected-head protection and the repository ruleset's live authorized owner/admin bypass.
Summary
strix.yml,opencode-review.yml, andnoema-review.yml— the three workflows the org's own required-workflow ruleset runs against every PR in every sibling repository — still requested the floatingubuntu-latestimage after#1618(required security gates) and#1609(merge scheduler) already pinned their own jobs off it as "the observed starved floating image": GitHub-hosted runners requestingubuntu-latestwere being leftqueuedwith no runner assignment for hours, well beyond ordinary scheduling latency.Since these three workflows are the actual required-check gate blocking merge organization-wide, a starved image here is a direct, high-leverage contributor to the sustained multi-hour organization-wide Actions queuing observed throughout this session — independently corroborated by
#1630's own record of 822 queued Actions runs at merge time.strix.yml, 5 inopencode-review.yml, 2 innoema-review.yml) to the explicitubuntu-24.04image, matching the established pattern exactly (a literalruns-on:value swap, no other job semantics touched).tests/test_required_review_runner_image_contract.pyasserts no job in any of the three files requests the floating image, mirroringtest_required_security_runner_image_contract.py's existing structure.Unrelated pre-existing failures fixed in the same pass
#1630(merged shortly before this fix, itself an owner-authorizedQUEUE_SATURATION_CHICKEN_EGGbypass addressing the same 822-run backlog) moved the organization sweep's rotation cadence from every 15 minutes to hourly to reduce control-plane pressure, changingpr-review-merge-scheduler.yml'sORG_SWEEP_ROTATION_INDEXwall-clock fallback divisor from900(15 minutes in seconds) to3600(1 hour), but lefttests/test_required_workflow_queue_contract.py's four rotation-index tests asserting the old900divisor and the old literal workflow string. Confirmed these 4 failures reproduce identically on a cleanorigin/maincheckout, independent of and pre-dating this fix. Updated all four to the new3600divisor/string, preserving each test's original intent unchanged.Residual
This closes the specific floating-image contribution from these three central workflows; it does not by itself guarantee the organization-wide Actions queue is fully drained, since other repositories' own workflows and any remaining unpinned central workflows may still request the floating image. Worth a follow-up sweep across the rest of
.github/workflows/and sibling-repo workflows if queuing persists after this lands.Test plan
PYTHONPATH=. python3 -m pytest tests -q— 2407 passed, 1 skipped, 21 subtestscoverage run -m pytest tests && coverage report— 100% onscripts/ciinterrogate— 100%origin/maincheckout before fixing them🤖 Generated with Claude Code
https://claude.ai/code/session_01BV96rXhqoR3tYZ9AeAVur4
Generated by Claude Code