policy: select runners by capability, not location - #6
Merged
Conversation
The gate itself ran on `[self-hosted, node-b, linux, x64]` and, on failure, told every repository in the organization to do the same. That advice is what spread a location label into 59 job definitions across 12 repositories, and it is why proxmox-gha-public-rust and wsl2-gha-public-rust sat idle — both `busy: false` — while all three Node B workers were busy and jobs queued behind them at a p90 of 207s and a p99 of 1153s (2026-08-19 review). What the gate *enforces* is deliberately unchanged: a job must name the literal `self-hosted`, and dynamic `runs-on` is still rejected. Only the selector it uses and the examples it prints have changed, to the capability labels the fleet actually advertises — `publish` for a Docker daemon, `tailnet` for Tailnet reachability, and nothing at all for work that can run anywhere.
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.
The gate ran on
[self-hosted, node-b, linux, x64]and, on failure, printed that same selector as the recommended form. That advice is how a location label reached 59 job definitions across 12 repositories — and whyproxmox-gha-public-rustandwsl2-gha-public-rustwere bothbusy: falsewhile all three Node B workers were busy and jobs queued at p90 207s / p99 1153s (2026-08-19 development-cycle review).Enforcement is unchanged: still requires the literal
self-hosted, still rejects dynamicruns-on. Only the gate's own selector and the examples it prints have changed, to the labels the fleet actually advertises —publish(Docker daemon),tailnet(Tailnet reachability), or nothing at all for work that runs anywhere.