Repository navigation
quest: harden the queue runners (fork approval, watch-mode cleanup, reusable queue build) - #439
Merged
Merged
Conversation
Quest-Claim: 7971fe2153d8fda6
…p in kixelated/nixos#20 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 3, 2026
…nner group Records the 2026-11-03 decision to restrict each queue runner group to a reusable build workflow at refs/heads/main, and takes its first step here and in moq-dev/rind#289 and moq-dev/rust2#536. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
marked this pull request as ready for review
November 3, 2026 15:16
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 44 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. CodeRabbit Verify
|
This was referenced Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Works Harden the merge-queue runners. Fork approval and the watch-mode cleanup are done; the runner-group restriction takes its first step here, and the quest is rewritten to what remains.
Fork approval (done on GitHub, 2026-11-02): set
fork-pr-contributor-approvalwithgh api -X PUT repos/moq-dev/<repo>/actions/permissions/fork-pr-contributor-approval:first_time_contributorsall_external_contributorsfirst_time_contributorsall_external_contributorsfirst_time_contributorsall_external_contributorsWatch-mode cleanup: kixelated/nixos#20, stacked on kixelated/nixos#19. It generates the check launcher, check user and group,
qland-<id>network, staging directory, KVM grant and storage tagging only for repositories onquest land serve. Deploying it removes them for moq, quest, rind and rust2 and drops moq's/dev/kvmACL; moq.pro keeps its own. A newquest-land-watchflake check verifies this.Runner groups, first step: the self-hosted job moves into
.github/workflows/queue-build.yml(on: workflow_call), whichqueue.ymlcalls. Same change in moq-dev/rind#289 and moq-dev/rust2#536.merge_group. The called job's own guard matters once the group admits that workflow: a pull request's workflow that callsqueue-build.yml@mainstill gets no runner.Queue build / Build, notQueue. A newQueuejob on a hosted runner reports the build's result under the context main's ruleset requires, so no ruleset change is needed. It runs withalways(), so a failed or cancelled build fails the context instead of skipping it, since a skipped required context would pass the group. It skips on pull requests as before.quest land watchreads every failing job of the run, so the fixer still gets the build's log.queue.ymlcalls the file by its local path for now: a merge group calling@mainbefore the file is on main finds no workflow and fails. So this PR's merge group runs the new file itself. Switching to@mainis the next step, then the maintainer restricts the group.Queuecheck passes only when the build does.Decisions
Settled by the user in a /quest-complete grill round on 2026-11-03, also recorded in the quest's Plan:
queue.ymlcalls at@mainand runs only formerge_group, then restrict the group to that workflow atrefs/heads/main.Choices made without asking
Queuecontext name with a hosted reporting job, rather than requiringQueue build / Buildin the rulesets. That would need a ruleset change timed with the workflow change, plus renaming the PR-side skip and theworkflow_dispatchreport.@mainonce it lands), for the bootstrap reason above.restricted_to_workflowssetting. It's an org admin change, and it would stall the queue if it landed before the@maincall.Left in the quest
The quest's Waiting section holds these:
queue.ymlcallsqueue-build.yml@mainon main, restrict its group. For quest:gh api -X PATCH orgs/moq-dev/actions/runner-groups/8 -f name=quest-queue -F restricted_to_workflows=true -f 'selected_workflows[]=moq-dev/quest/.github/workflows/queue-build.yml@refs/heads/main'(rind-queue is 9 and rust2-queue is 10). Check thatgh api orgs/moq-dev/actions/runner-groups/<id>showsrestricted_to_workflows: true, and that a merge group still runs on the runner. Caveat: GitHub documents workflow restriction for Enterprise Cloud, and moq-dev is on the Team plan, though the api.github.com API takes the fields. If GitHub rejects or drops them, revert and fall back to option (2).deploy/quest-land.The agent work left is the
@mainswitch in each repository once its first step lands.Validation
quest check --base origin/mainandjust checkpass on 3063c8d, including actionlint on both workflows.just check origin/mainpasses on each PR's head.Review
Codex (
quest review, gpt-6.1-sol, medium), round 1 on 3063c8d against origin/main e5d11d1: no findings. The code change in kixelated/nixos#20 had its own Codex review there.Follow-ups
@mainswitch and the restriction stay in this quest, not a new one.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)