Skip to content

ci: stop warming unused Windows package archives - #29322

Merged
OrcaWin merged 1 commit into
mainfrom
OrcaWin/ci-cache-audit
Oct 16, 2026
Merged

OrcaWin merged 1 commit into
mainfrom
OrcaWin/ci-cache-audit

Conversation

@OrcaWin

@OrcaWin OrcaWin commented Oct 16, 2026 •

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

ELI5

Windows cache warmers keep uploading large package archives that ordinary Windows PR checks deliberately avoid downloading. Stop those uploads while preserving the small compiled-module and launcher caches that real checks restore.

What Changed

  • Set the Windows warmer installer to cache-pnpm-store: false; native preparation, verification records, both launcher caches and probes remain enabled.
  • Include native/windows-security/** in platform warmers’ main-push triggers. Those sources already invalidate Windows native caches, but previously only selected Linux warming immediately.
  • Extend the existing cache-policy tests; no new test suite or cache mechanism.

Why

The 18:51 scheduled run uploaded 698,731,283 bytes (699 MB) of Windows pnpm archives and spent 33.324 seconds saving them (x64 12.255s; ARM 21.069s). Both native and launcher caches were hits. These exact package archive keys were hits six hours earlier, then missing again. Repository cache usage during the audit was 10.687 GB. This shows repeated writes and storage pressure, not which cache evicted another.

Real Windows ARM and x64 consumers use cache-pnpm-store: false, while restoring their native/launcher caches. Ordinary PR root installs and combined x64 installs also bypass archive restoration in the shared action. The manual x64 terminal-restart workflow still uses the root archive; it retains a cold install/save fallback. No ARM root-archive consumer was found.

The reported PR warmer run used 357s ARM + 71s x64. It validates edited Windows workflow commands and cannot seed shared default-branch caches. Keep that infrequent validation: it runs only for the two platform warmer YAML paths, which real Windows consumer workflows do not cover. This change does not claim to eliminate those 428s or establish whole-CI speedup. Removing all warming would also remove useful compiled caches; removing workflow validation would leave changed Windows commands unexercised.

Related audit decisions: retain #24881, #26399, #28081 and #28917, which reduce scheduled or irrelevant allocations. Correct the Windows caller of #24927, rather than revert its measured general download reduction. #29279 cancellation remains compatible.

Other checked CI changes have real benefits: #29136 removes a successful aggregate allocation (observed old job 138s queue + 4s running; new job zero runner/steps), with a hosted negative qualification still failing correctly. #29149 reduced the observed installer build from 831s to 299s, and the whole job from 1170s to 797s; its extra compiler-parity job costs 294s only on qualifying inputs. These compare different hosted runners and commits, not controlled repository-wide averages. Net return from all scheduled warmer jobs remains unproven; cache consumption alone does not prove the producer was necessary.

Linked Issue

Maintainer-requested CI cost audit; no separate issue created.

Visual Proof

N/A — GitHub Actions configuration only; no application UI changes.

Testing

  • I manually tested these changes locally
  • Automated tests added/updated, or explained why not below

On Linux, the two updated regression assertions failed against the original workflows for the intended Windows archive policy and missing security-trigger reasons. After the fix, 131 tests pass across ci-dependency-download-cache, ci-pnpm-store-mode, ci-native-cache and ci-pnpm-verification-cache.

Changed-code quality, focused Oxlint, Oxfmt, git diff --check, and actionlint 1.7.12 pass. No TypeScript implementation changes. Both changed Windows jobs passed on exact head ab326b454cb69bf7efcdf58b31c82b763db6c19b in run 38831888211. Their logs show cache-pnpm-store: false, the archive lookup/save skipped, and the native and launcher cache hits preserved. Full ready-for-review PR qualification is queued in run 38833157340; merge waits for that workflow and its aggregate gate.

Review

Reviewed archive consumers, cold fallback, native/launcher key parity, PR cache scope, event routing and aggregate independence. Required-check names and aggregate failure/conditional handling are unchanged. The package archive fix uses the existing opt-out instead of adding cache-presence or install logic.

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.

Notes

Hosted CI configuration only. No app, SSH execution, folder-workspace, mobile or remote-wire changes. The Windows store opt-out applies equally to x64 and ARM; other platforms retain their existing policy.

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, before/after, mechanism and alternatives)
  • Visual proof is N/A with reason
  • Self-reviewed for correctness, security and performance
  • Cross-platform, SSH/remote and path impact considered
  • Hosted validation passes on Windows x64 and ARM
  • Full ready-for-review PR checks and aggregate gate pass

@OrcaWin
OrcaWin marked this pull request as ready for review October 16, 2026 01:04
@coderabbitai

coderabbitai Bot commented Oct 16, 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: 9dd65d39-6ebc-4816-a7fa-d1becfd03a41
📥 Commits

Reviewing files that changed from the base of the PR and between c023d35 and ab326b4.

📒 Files selected for processing: 3
  • .github/workflows/ci-cache-warmup-platform-jobs.yml
  • .github/workflows/ci-cache-warmup-platforms.yml
  • config/scripts/ci-dependency-download-cache.test.mjs

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

📝 Walkthrough

The Windows cache warmer now disables pnpm store caching and retains the Node native runtime. Pushes to main that change files under native/windows-security/** now trigger the cache-warmup workflow. Tests check both updates.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to ab326

The Windows warmer stops creating large pnpm archives while retaining its other preparation steps. A manually launched x64 workflow may download dependencies on a cache miss, but it can still complete and save the cache; no material issue blocks merging.

Pre-merge checks: Passed 5
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: stopping unnecessary Windows package archive warming.
Description check Passed The description follows the required structure and explains the change, motivation, testing, scope, and checklist status. It identifies the linked issue as a maintainer-requested audit, which is allow…
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autofix · 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.

@OrcaWin
OrcaWin merged commit 82029e6 into main Oct 16, 2026
46 of 58 checks passed
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