Skip to content

[CI] ci: stop cache-test edits from starting five warm-up runners - #26399

Merged
nwparker merged 1 commit into
mainfrom
nwparker/skip-test-only-ci-cache-warmup
Oct 8, 2026
Merged

nwparker merged 1 commit into
mainfrom
nwparker/skip-test-only-ci-cache-warmup

Conversation

@nwparker

@nwparker nwparker commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​12 0 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​12
Prod 1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​2 $\color{#cf222e}{\Huge{\mathbf{−}}}$​3 $\color{#cf222e}{\Huge{\mathbf{−}}}$​1

ELI5

Changing a cache-related test currently starts five extra runners even when no cache input changed. Those runners mostly restore existing caches and compete with required CI. This stops that work for test-only edits while keeping normal tests and useful shared warming.

What Changed

Use the exact headless-detector-compiler-cache.mjs implementation path instead of a wildcard that also matches its test. Remove the workflow test itself from the warmer's PR triggers. Actual workflow, action and Docker input changes still trigger validation. Main cache-input pushes, the six-hour schedule, manual runs and all job bodies remain unchanged.

Why

PR #26374 changed 40 files; the only warmer-trigger match was headless-detector-compiler-cache.test.mjs, which is absent from the compiler cache key. All five jobs hit existing primary caches. Four saved nothing; Linux saved only PR-private TypeScript state after required preflight had completed. PR writes cannot populate another PR's shared caches (GitHub cache scope).

Narrowing three trigger lines preserves action validation and main-produced caches without adding a routing job or changing cache consumers, runtimes, test isolation or coverage. Removing all warming would also remove useful default-branch producers.

Before / after evidence

Optional warmer work for the complete #26374 diff Before, latest observed run After, verified trigger routing
Runner jobs scheduled 5 0
Combined runner execution 344 seconds 0 seconds
Per-job rounded runner minutes (not an invoice) 7 0

The after column follows from testing the complete 40-file diff against every revised PR trigger: zero matches. It is a source-based scheduling result, not a measured end-to-end CI speedup. No new runtime was launched to benchmark an absent workflow.

Raw before measurements, with every job retained:

Job Latest run 37715409408 Previous run 37714269775
Linux x64 51 s 131 s
Linux ARM 33 s 33 s
Windows x64 57 s 56 s
Windows ARM 156 s 243 s
Linux package fixtures 47 s 44 s
Combined execution 344 s 507 s

This fix PR’s workflow validation also ran all five unchanged jobs because it edits the warmer workflow: Linux x64 85 s, Linux ARM 29 s, Windows x64 59 s, Windows ARM 230 s and Docker fixtures 65 s, totaling 468 runner-seconds; all passed. These retained timings are not a test-only after event and do not establish a runtime gain or regression. The improvement is avoiding their enrollment when only the excluded tests change.

The latest workflow elapsed 6m49s including queues, but it runs independently of required verify. Its Linux job started at 02:02:34 UTC, after required preflight completed at 02:02:25; its TypeScript cache was saved at 02:03:21. Required unit runners queued for 97–395 seconds. This establishes avoidable runner consumption, not a causal queue reduction, 51 seconds of serial PR delay, or the broader whole-suite 2× goal.

Linked Issue

Internal CI audit requested for #26374; no separate issue.

Visual Proof

N/A — CI path filters only; no product UI or interaction changes.

Testing

  • Parsed before/after YAML and verified all other workflow fields unchanged.
  • Checked the complete feat(runtime): isolate the server behind a compatibility launcher #26374 changed-file list: one before trigger match, zero after matches; executable/action/workflow inputs still match.
  • Formatter, changed-code-quality gate, focused oxlint and diff checks passed locally. No local Vitest or app process was launched.
  • Added the trigger contract to the existing workflow unit suite; both cache-related test files remain included in full unit discovery.
  • Shipping CI run 37717672359: static analysis/typecheck, all ten full unit shards, Node relay contracts, unit-selection evidence and required verify passed. Logs confirm 8 workflow-contract and 13 compiler-contract cases passed. All five warmer validation jobs passed; headless routing passed.

Review

Three independent read-only agents checked cache scope, changed-input ownership and the required CI dependency graph. The review bot covered the exact shipping commit and reported no actionable comments; zero unresolved threads. Current main includes #26374: the two owned files and eleven relevant source guards are unchanged; its five-line compiler-test fixture addition is reviewed and preserved, without claiming that newer whole tree ran in our CI. No cache action or product runtime changes; macOS/Linux/Windows, SSH and folder-workspace behavior are unaffected.

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Checklist

  • This PR is small and focused.
  • Explained before/after, mechanism and alternative.
  • N/A visual proof explained.
  • Self-reviewed for correctness, security and performance.
  • Cross-platform and remote impact considered.
  • Required CI passed; no performance claim depends on an unobserved after runtime.

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5536f8d9-821b-4c1b-8ac8-71a32eeb45fc
📥 Commits

Reviewing files that changed from the base of the PR and between 846caf0 and db0a115.

📒 Files selected for processing (2)
  • .github/workflows/ci-cache-warmup.yml
  • config/scripts/ci-cache-warmup-workflow.test.mjs

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The push and pull-request path filters now match the exact compiler cache script instead of a wildcard. The pull-request filter no longer includes the cache-warmup workflow test. Tests verify the expected included and excluded paths for both filters.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to db0a1

The cache warmer retains its required implementation and input triggers while skipping test-only changes; no actionable merge-blocking risk was identified, subject to normal CI checks.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely describes the main change: preventing cache-test edits from starting unnecessary warm-up runners.
Description check ✅ Passed The description is detailed and covers the requested explanation, changes, rationale, evidence, testing, review, impact, and checklist. It includes an internal audit reference instead of a separate li…
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nwparker
nwparker merged commit 316822f into main Oct 8, 2026
40 checks passed
@nwparker nwparker changed the title ci: stop cache-test edits from starting five warm-up runners [CI] ci: stop cache-test edits from starting five warm-up runners Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant