Repository navigation
ci: move eight light required jobs and rivet-delta to self-hosted light runners - #241
Merged
Merged
Conversation
…ht runners
The org's GitHub-hosted queue is stalled (owner decision 2026-11-14,
"move light jobs now"). These jobs only lint, validate or check text,
so they move to `light`; job names are unchanged so the required
contexts still match:
Format, Rivet artifact validation, Commit traceability (rivet),
Required checks track CI jobs (scry#130), Doc claims (claim-check),
AADL model (spar parse), WIT round-trip (wasm-tools),
cargo-deny (licenses, advisories, bans); plus Rivet artifact delta.
runs-on keeps fork PRs on ubuntu-latest:
${{ github.event.pull_request.head.repo.fork && 'ubuntu-latest' || fromJSON('[...light]') }}
Tools are no longer compiled in the job: rivet v0.42.2 and spar v0.49.0
come from release tarballs via tools/ci/install-release-bin.sh (was
`cargo install --git`, i.e. HEAD), wasm-tools and cargo-deny from
taiki-e/install-action. The rust toolchain and rust-cache steps are
dropped where nothing compiles; cargo-deny keeps the toolchain for
cargo metadata. Clippy, Test, Bazel build, MC/DC, proofs, release and
publish stay on hosted runners.
Trace: skip
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEjmjcVaTucsMZy5Fubas7
`head.repo.fork && 'ubuntu-latest' || <self-hosted>` sends a job to the self-hosted runner whenever `.fork` is not true, including when `head.repo` is null (a deleted fork) or the field is missing. Select self-hosted only for non-PR events or a PR whose head repo is this repository; every other case gets ubuntu-latest. Trace: skip Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KEjmjcVaTucsMZy5Fubas7
tools/check_selfhosted_fork_guard.py (same script as bazel-file-ops-component#126, adapted from ordeal) fails on any self-hosted runs-on without the fail-closed guard, on any self-hosted job in a pull_request_target workflow (ordeal#322), and when it finds no self-hosted job. It runs in the required-checks drift job, so no new check name. This tree: 9 self-hosted jobs, exit 0. Planted guarded job in a pull_request_target workflow: exit 1. Trace: skip Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KEjmjcVaTucsMZy5Fubas7
📐 rivet artifact deltaPR: #241 Base SHA: Validationhead — `rivet validate` resultbase — `rivet validate` result (for comparison)Artifact stats
full stats — headDiff (base → head)AADL model — headPosted by the |
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 org's GitHub-hosted queue is stalled: about 50 jobs queued for up to 2.5 h, with 5 hosted jobs running org-wide. Owner decision 2026-11-14: move light jobs now.
cargo install --git rivet(HEAD) → rivet v0.42.2 release binarycargo install --git spar(HEAD) → spar v0.49.0 release binarycargo install wasm-tools→ taiki-e/install-actioncargo install cargo-deny→ taiki-e/install-actionClippy, Test, Bazel build, MC/DC, the proof workflows, release and publish stay on hosted runners: each compiles the workspace or runs Bazel.
Forks: every moved job runs on
pull_request. The runs-on expression sends fork PRs toubuntu-latestand everything else to[self-hosted, linux, x64, light], so fork code never reaches our runners. The install steps work on both.Behaviour change: rivet and spar move from git HEAD to pinned releases. Version bumps now need an edit here.
Verified locally:
check-required-checks.py --against-filepasses (12 required contexts).check-gate-coverage.pypasses, and the commit trailer guard passes (Trace: skip).install-release-bin.shdownloads and installs spar v0.49.0 and fails with exit 56 on a bad tag.Not verified: a run on the
lightrunners themselves. This PR's own CI is that test.🤖 Generated with Claude Code
https://claude.ai/code/session_01KEjmjcVaTucsMZy5Fubas7