refactor: run the native-runner CI suite in its own Rust-cached General tests lane - #13795
Open
devinfoley wants to merge 1 commit into
Open
devinfoley wants to merge 1 commit into
devinfoley wants to merge 1 commit into
Conversation
devinfoley
requested review from
cryppadotta,
forgottendev and
nickyleach
as code owners
September 22, 2026 03:44
|
✅ All checks passing — ready for Greptile review and maintainer approval. — commitperclip |
Contributor
|
devinfoley
force-pushed
the
ci/native-runner-dedicated-lane
branch
from
September 22, 2026 03:54
98c8bc2 to
07bfd64
Compare
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.
Thinking Path
Linked Issues or Issue Description
Refs #13586 (the script-level workaround this replaces). Refs #13736 (the sibling cleanup in this series that also required workflow-edit permissions).
What Changed
.github/workflows/pr-trusted.yml: thegeneral_testsmatrix gains anative-runnerentry that runs--group general-server-native-runneras its own lane. Two new steps, gated on the entry'srust_cache: trueflag, restore the sharedrelease-runner-v1Rust cache with the same pinned-toolchain block and restore-only contract asVerify Paperclip Runner(the block is copied verbatim; reader and writer must agree on the key). The job declaresNATIVE_RUNNER_SUITE_LANE: dedicatedso the shard script leaves the suite out of the twelve server shards.scripts/run-vitest-stable.mjs: the without-chat exclusion now keys on the explicitNATIVE_RUNNER_SUITE_LANE=dedicateddeclaration instead of sniffingGITHUB_WORKFLOW == "PR". Callers that declare nothing — local runs,release-verify.ymlunder the Release and Cloud readiness workflows — keep the suite in their server shards, exactly as before.packages/paperclip-runner/package.json:test:typescript:vitestreturns to the plainensure:eval-build-deps && build:rust && vitest runchain (its pre-fix: run the cargo-building native-runner CI suite in the Rust-cached vitest lane #13586 value).scripts/run-pr-vitest-lane.mjs, the wrapper that appended the suite to the final PR vitest shard, is deleted.scripts/__tests__/run-vitest-stable-shard.test.mjs: the contract pins move to the new wiring — the dedicated-lane declaration appears exactly once inpr-trusted.yml, exactly one matrix entry runs the group and it opts into the Rust cache, both Rust steps are gated on the flag,release-verify.ymldeclares no lane it does not provide, and the runner package script is the plain chain. The wrapper tests are gone with the wrapper. Coverage partitions (12 PR shards + chat + native-runner = full server group; 10 release shards keep the suite) are pinned as before.Verification
node --test ./scripts/__tests__/run-vitest-stable-shard.test.mjs: all 23 tests pass locally, including the partition-coverage and new wiring pins.actionlint .github/workflows/pr-trusted.ymlpasses.pr.ymlcallspr-trusted.yml@master, so this run uses the current workflow definition with this branch's scripts. That combination takes the designed fallback path — no lane is declared, so the suite runs inside a server shard (cold compile, slower but fully covered). Expect one slowGeneral tests (server N/12)check on this PR only.General tests (native-runner)at roughly the setup cost plus an incremental cargo rebuild, andVerify Paperclip Runner (vitest 2/2)back to its pre-piggyback time (~2min vs ~3min today).Risks
GITHUB_WORKFLOWcheck. The new workflow's env declaration is ignored by the old script, which still excludes the suite via the name check, and the dedicated lane's group has existed since fix: run the cargo-building native-runner CI suite in the Rust-cached vitest lane #13586 — so the suite runs in the dedicated lane and, redundantly, on the final vitest shard. Duplicated coverage, never lost coverage, and only transient.release-runner-v1restore is read-only and keyed identically to the existing consumers; a miss is a slow lane (cold compile within the 20-minute timeout, as every pre-fix: run the cargo-building native-runner CI suite in the Rust-cached vitest lane #13586 run demonstrated), never a wrong result.pr-trusted.yml. The pin tests assert both new steps stay gated onrust_cacheand therelease-runner-v1shared key stays in use, which catches the likeliest drift (deleting or unkeying the restore) but not every divergence.Model Used
Claude Fable 5 (
claude-fable-5), Claude Code session with workflow-edit permissions.Checklist
Fixes: #/Closes #/Refs #OR (b) described the issue in-PR following the relevant issue template#NNN/github.com/paperclipai/paperclipURLs)docs/...,fix/...) and contains no internal Paperclip ticket id or instance-derived details