[PR #3007] [MERGED] perf(ci): share trusted caches and fail fast on PR test failures #5558

Closed
opened 2026-10-31 01:07:34 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/3007
Author: @morluto
Created: 10/13/2026
Status: ✅ Merged
Merged: 10/13/2026
Merged by: @morluto

Base: main ← Head: fix/ci-hosted-cache-policy


📝 Commits (3)

  • b0c06c6 fix(ci): restore inherited validation failures
  • ac3753c perf(ci): share trusted caches and fail fast on PR test failures
  • b61a1e7 fix(ci): bound static cache and hash vitest config for knip

📊 Changes

27 files changed (+767 additions, -54 deletions)

View changed files

➕ .github/actions/npm-cache/action.yml (+42 -0)
📝 .github/workflows/ci.yml (+49 -15)
📝 .github/workflows/pages.yml (+3 -1)
📝 .github/workflows/real-binary-layout.yml (+3 -1)
📝 .github/workflows/real-browser.yml (+3 -1)
📝 .github/workflows/real-evm-interface.yml (+3 -1)
📝 .github/workflows/real-go-binary.yml (+3 -1)
📝 .github/workflows/real-hopper-linux.yml (+6 -2)
📝 .github/workflows/real-hopper.yml (+3 -1)
📝 .github/workflows/real-javascript-recovery.yml (+3 -1)
📝 .github/workflows/real-packet-capture.yml (+3 -1)
📝 .github/workflows/real-recorded-crash.yml (+3 -1)
📝 .github/workflows/real-signal-recording.yml (+3 -1)
📝 .github/workflows/real-web-network-captures.yml (+3 -1)
📝 .github/workflows/real-web-runtime.yml (+3 -1)
📝 .github/workflows/real-web-source-map.yml (+3 -1)
📝 .github/workflows/sqlite-runtime.yml (+3 -1)
📝 docs/readme/README_tr.md (+1 -0)
📝 docs/testing.md (+28 -5)
📝 src/dotnet/ManagedCilDecoding.test.ts (+2 -0)

...and 7 more files

📄 Description

PR feedback currently saves duplicate branch-scoped npm caches, static checks do not restore Turbo results, and all remaining portable shards continue after a test failure. This change reduces that repeated work on GitHub-hosted runners.

  • Replace 25 implicit npm cache writers with one download-cache policy: trusted default-branch push/schedule/manual runs can save; PRs restore only. Every consumer still runs npm ci, including on cache misses. Preserve Node setup, host selection, and package-verifier HOME isolation.
  • Restore static Turbo snapshots and save them only after successful trusted validation. Hash the Node pin and npm install settings globally, and add Knip's missing ignore/config inputs before enabling reuse.
  • Enable matrix fail-fast only for ordinary fast-tier PRs. Main, ci:full, scheduled/manual qualification, release coverage, and the native package matrix retain all results. Failed/canceled/missing shards remain blocking; partial reports cannot publish successful timing history.
  • Repair inherited formatting, oversized test groups, and one missing Turkish README link in a separate prerequisite commit; test assertions remain unchanged.

Portable owner-based test selection remains observational. The inspected candidate comparisons are incomplete and do not justify omitting tests. Passing PRs still run the complete portable suite. Runner infrastructure and branch protection are unchanged.

Validation: 47 CI/cache/selection regressions and 114 related regressions passed; check:ci, check:fast, docs:check, test discovery, Python producer tests, and actionlint passed locally. Added real-checker coverage for cold/warm cache reuse, fresh-consumer report restoration, injected source failure, and Node/npm/ignore/config invalidation.

Local npm run check:ci experiment (Node 24.18.0/npm 11.16.0, macOS arm64, two runs per condition): empty Turbo cache 9.38–9.47 s; warm cache 0.73–0.87 s, with all eight tasks reused. Dependencies and OS caches were already warm. CPU including sampler subprocesses was 53.6–56.4 s cold and 1.06–1.19 s warm; sampled summed process-family RSS was 4.31–5.30 GiB cold and 0.20–0.25 GiB warm. RSS may double-count shared pages; host interference was uncontrolled. Cache transfer, hosted end-to-end latency, and agent-token costs remain unmeasured. Main warms the new namespaces after merge; no hosted speedup is claimed.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/3007 **Author:** [@morluto](https://github.com/morluto) **Created:** 10/13/2026 **Status:** ✅ Merged **Merged:** 10/13/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `fix/ci-hosted-cache-policy` --- ### 📝 Commits (3) - [`b0c06c6`](https://github.com/morluto/rea/commit/b0c06c660e916c4c6676c883b5ac5efdc9071ee0) fix(ci): restore inherited validation failures - [`ac3753c`](https://github.com/morluto/rea/commit/ac3753ceab4d793e14ead1c9429f89e0133fa356) perf(ci): share trusted caches and fail fast on PR test failures - [`b61a1e7`](https://github.com/morluto/rea/commit/b61a1e7fb7015b4a44c4fd941c628bac25549aa7) fix(ci): bound static cache and hash vitest config for knip ### 📊 Changes **27 files changed** (+767 additions, -54 deletions) <details> <summary>View changed files</summary> ➕ `.github/actions/npm-cache/action.yml` (+42 -0) 📝 `.github/workflows/ci.yml` (+49 -15) 📝 `.github/workflows/pages.yml` (+3 -1) 📝 `.github/workflows/real-binary-layout.yml` (+3 -1) 📝 `.github/workflows/real-browser.yml` (+3 -1) 📝 `.github/workflows/real-evm-interface.yml` (+3 -1) 📝 `.github/workflows/real-go-binary.yml` (+3 -1) 📝 `.github/workflows/real-hopper-linux.yml` (+6 -2) 📝 `.github/workflows/real-hopper.yml` (+3 -1) 📝 `.github/workflows/real-javascript-recovery.yml` (+3 -1) 📝 `.github/workflows/real-packet-capture.yml` (+3 -1) 📝 `.github/workflows/real-recorded-crash.yml` (+3 -1) 📝 `.github/workflows/real-signal-recording.yml` (+3 -1) 📝 `.github/workflows/real-web-network-captures.yml` (+3 -1) 📝 `.github/workflows/real-web-runtime.yml` (+3 -1) 📝 `.github/workflows/real-web-source-map.yml` (+3 -1) 📝 `.github/workflows/sqlite-runtime.yml` (+3 -1) 📝 `docs/readme/README_tr.md` (+1 -0) 📝 `docs/testing.md` (+28 -5) 📝 `src/dotnet/ManagedCilDecoding.test.ts` (+2 -0) _...and 7 more files_ </details> ### 📄 Description PR feedback currently saves duplicate branch-scoped npm caches, static checks do not restore Turbo results, and all remaining portable shards continue after a test failure. This change reduces that repeated work on GitHub-hosted runners. - Replace 25 implicit npm cache writers with one download-cache policy: trusted default-branch push/schedule/manual runs can save; PRs restore only. Every consumer still runs `npm ci`, including on cache misses. Preserve Node setup, host selection, and package-verifier HOME isolation. - Restore static Turbo snapshots and save them only after successful trusted validation. Hash the Node pin and npm install settings globally, and add Knip's missing ignore/config inputs before enabling reuse. - Enable matrix fail-fast only for ordinary fast-tier PRs. Main, `ci:full`, scheduled/manual qualification, release coverage, and the native package matrix retain all results. Failed/canceled/missing shards remain blocking; partial reports cannot publish successful timing history. - Repair inherited formatting, oversized test groups, and one missing Turkish README link in a separate prerequisite commit; test assertions remain unchanged. **Portable owner-based test selection remains observational.** The inspected candidate comparisons are incomplete and do not justify omitting tests. Passing PRs still run the complete portable suite. Runner infrastructure and branch protection are unchanged. Validation: 47 CI/cache/selection regressions and 114 related regressions passed; `check:ci`, `check:fast`, `docs:check`, test discovery, Python producer tests, and actionlint passed locally. Added real-checker coverage for cold/warm cache reuse, fresh-consumer report restoration, injected source failure, and Node/npm/ignore/config invalidation. Local `npm run check:ci` experiment (Node 24.18.0/npm 11.16.0, macOS arm64, two runs per condition): empty Turbo cache 9.38–9.47 s; warm cache 0.73–0.87 s, with all eight tasks reused. Dependencies and OS caches were already warm. CPU including sampler subprocesses was 53.6–56.4 s cold and 1.06–1.19 s warm; sampled summed process-family RSS was 4.31–5.30 GiB cold and 0.20–0.25 GiB warm. RSS may double-count shared pages; host interference was uncontrolled. Cache transfer, hosted end-to-end latency, and agent-token costs remain unmeasured. Main warms the new namespaces after merge; no hosted speedup is claimed. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:07:34 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#5558
No description provided.