Skip to content

feat: Report incremental cache reuse in the run summary - #13327

Merged
anthonyshew merged 1 commit into
mainfrom
shew/incremental-cache-summary
Jul 9, 2026
Merged

anthonyshew merged 1 commit into
mainfrom
shew/incremental-cache-summary

Conversation

@anthonyshew

Copy link
Copy Markdown
Contributor

Why

The summary footer's Cached line counts task-cache hits only. Reuse below the task boundary — the compile units sccache serves through the Remote Cache — was invisible: observable only via turborepo_sccache_proxy=debug logs or wall-time deltas. With #13292 turning the compile cache on for Rust CI, the summary should testify about it.

What

A toolchain-agnostic footer line, shown conditionally:

Tasks:              2 successful, 2 total
Cached:             0 cached, 2 total
Incremental cache:  407 hits, 12 misses
Time:               7.116s

Naming: "incremental" is defined as reuse below the task boundary — the task executed, but a tool inside it reused unchanged work units. That covers sccache compile units today and generalizes to TypeScript incremental outputs, bundler module caches, etc. (It is deliberately not rustc's -C incremental, which sccache disables — the line names a Turborepo cache tier, not a Rust mechanism.)

Conditional by design: a run that never exchanged work units — proxy never started (flag off, local run, no credentials), or nothing executed (all task-cache hits) — shows no line at all.

How

  • The sccache proxy counts the work-unit traffic it serves (IncrementalCacheStats: hits/misses/stores as atomics; the .sccache_check health probe is excluded — infrastructure traffic, not reuse).
  • Run::execute_visitor snapshots the counters after all tasks finish and threads a plain-data IncrementalCacheSummary { hits, misses } through Visitor::finishRunTracker::finishExecutionSummary::print. The summary crate stays independent of the proxy crate — future toolchain integrations contribute the same shape.
  • Tests: the opendal round-trip regression test (real sccache storage client) now asserts the counters — 1 hit, 1 store, ≥1 miss, probe excluded; unit test pins the conditional rendering (absent for None and for 0/0; exact text otherwise).

First real-world sighting will be the push-to-main Rust runs once #13292 lands: task-cache miss (source changed) + a populated compile cache ⇒ the line shows the reuse that used to be invisible.

The summary footer's Cached line counts task-cache hits only; reuse
below the task boundary - compile units sccache served through the
Remote Cache - was invisible, observable only via debug logs or wall
time. Add a toolchain-agnostic line:

  Tasks:              2 successful, 2 total
  Cached:             0 cached, 2 total
  Incremental cache:  407 hits, 12 misses
  Time:               7.116s

'Incremental' here means reuse below the task boundary: the task
executed, but a tool inside it reused unchanged work units. The sccache
proxy is the first contributor - it now counts the work-unit traffic it
serves (health-check probe excluded) - and the summary type is plain
data, so future toolchain integrations (TypeScript incremental builds,
bundler module caches) report through the same line.

Conditional by design: a run that never exchanged work units - proxy
never started, or nothing executed - shows no line at all.
@anthonyshew
anthonyshew requested a review from a team as a code owner July 9, 2026 21:12
@anthonyshew
anthonyshew requested review from tknickman and removed request for a team July 9, 2026 21:12
@vercel

vercel Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
examples-basic-web Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
examples-designsystem-docs Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
examples-gatsby-web Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
examples-kitchensink-blog Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
examples-nonmonorepo Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
examples-svelte-web Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
examples-tailwind-web Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
examples-vite-web Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
turbo-site Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm
turborepo-eve-agent Ready Ready Preview, Comment, Open in v0 Jul 9, 2026 9:13pm

@anthonyshew
anthonyshew merged commit 9f3d24a into main Jul 9, 2026
57 of 59 checks passed
@anthonyshew
anthonyshew deleted the shew/incremental-cache-summary branch July 9, 2026 23:30
anthonyshew pushed a commit that referenced this pull request Jul 10, 2026
## Release v2.10.5-canary.5

> [!CAUTION]
> Versioned docs aliasing FAILED. [View
logs](https://github.com/vercel/turborepo/actions/runs/29092745941)

### Changes

- release(turborepo): 2.10.5-canary.4 (#13325) (`6626261`)
- feat: Run the Rust workspace tests through nextest via command
override (#13316) (`6711bbc`)
- feat: Engage the Remote Cache and sccache compile cache for Rust CI
(#13292) (`1ae2065`)
- ci: Pin GitHub Actions to full commit SHAs (#13143) (`ad614d6`)
- fix: Make npm prune rehoisting deterministic and complete (#13323)
(`2dac737`)
- feat: Report incremental cache reuse in the run summary (#13327)
(`9f3d24a`)
- chore: Remove planning docs (#13329) (`5cd1d02`)
- docs: Migrate docs site to @vercel/geistdocs package (#13320)
(`5517bb2`)
- ci: Update Remote Cache action (#13330) (`4a39887`)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
anthonyshew pushed a commit that referenced this pull request Jul 13, 2026
## Release v2.10.5

> [!CAUTION]
> Versioned docs aliasing FAILED. [View
logs](https://github.com/vercel/turborepo/actions/runs/29267191097)

### Changes

- perf: Evaluate simple include globs without wax compilation (#13285)
(`189897a`)
- chore: Dogfood native Cargo support in this repository (#13283)
(`42f067b`)
- release(turborepo): 2.10.4 (#13286) (`f2fce38`)
- ci: Remove dead sccache configuration (#13289) (`558df3f`)
- feat: Serve the Remote Cache as an sccache backend for Cargo tasks
(#13288) (`0d9803f`)
- fix: Reject output path traversal (#13290) (`733ccca`)
- fix: Disable the sccache proxy when remote cache use is off (#13291)
(`3249e22`)
- feat: Embed sccache so the Cargo compile cache needs no installation
(#13293) (`b6d0035`)
- release(turborepo): 2.10.5-canary.1 (#13294) (`e6cd498`)
- fix: Pin a flag-aware turbo canary for the eve-agent deployment
(#13295) (`e60a4bd`)
- fix: Make the sccache compile cache actually cache (#13296)
(`2ac099c`)
- release(turborepo): 2.10.5-canary.2 (#13297) (`e6e6fb6`)
- fix: Stop ambient CARGO_INCREMENTAL from suppressing compile cache
injection (#13298) (`784af75`)
- fix: Never let compile cache storage failures fail the build (#13299)
(`a6fc6c5`)
- test: Add outputs path-traversal negative-case regression tests
(#13300) (`2ff6df9`)
- release(turborepo): 2.10.5-canary.3 (#13302) (`7e44a29`)
- ci: Authenticate to Remote Cache via OIDC token exchange (#13303)
(`a86839c`)
- fix: Keep pnpm patches with version range keys during prune (#13307)
(`3c27a89`)
- test: Scrub ambient turbo configuration from integration test children
(#13306) (`b03d0d6`)
- fix: Show toolchain tasks in the TUI and never run in silence (#13308)
(`d7622b6`)
- ci: Fix change detection on push events (#13304) (`eec3d61`)
- refactor: Rename the Cargo toolchain id to rust (#13311) (`a548b02`)
- fix: Remove extraneous bun.lock entries during prune (#13317)
(`382e9f5`)
- feat: Require a user-declared name for the Cargo workspace package
(#13312) (`5f01746`)
- feat: Parse and validate the task command field (#13313) (`389ea49`)
- chore: Harden turbo-vsc to invoke turbo without a shell (#13319)
(`4a19b6e`)
- feat: Resolve and execute task command overrides (#13315) (`a549baa`)
- release(turborepo): 2.10.5-canary.4 (#13325) (`6626261`)
- feat: Run the Rust workspace tests through nextest via command
override (#13316) (`6711bbc`)
- feat: Engage the Remote Cache and sccache compile cache for Rust CI
(#13292) (`1ae2065`)
- ci: Pin GitHub Actions to full commit SHAs (#13143) (`ad614d6`)
- fix: Make npm prune rehoisting deterministic and complete (#13323)
(`2dac737`)
- feat: Report incremental cache reuse in the run summary (#13327)
(`9f3d24a`)
- chore: Remove planning docs (#13329) (`5cd1d02`)
- docs: Migrate docs site to @vercel/geistdocs package (#13320)
(`5517bb2`)
- ci: Update Remote Cache action (#13330) (`4a39887`)
- release(turborepo): 2.10.5-canary.5 (#13331) (`f699719`)
- ci: Remove path-based workflow scheduling (#13332) (`84f2b2c`)
- fix: Resolve EADDRINUSE in kitchen-sink api dev script (#13328)
(`5886c71`)
- ci: Disable telemetry messages in workflows (#13334) (`2218dea`)
- fix: Prevent Cargo run tasks from being cached (#13335) (`68f449b`)
- fix: Isolate Cargo cache by host platform (#13337) (`c71f5cd`)
- fix: Continue TUI text selection beyond viewport (#13338) (`9cbfd90`)
- ci: Dogfood Cargo target restoration (#13336) (`8ad90a7`)
- fix: Require current Cargo lockfiles for caching (#13339) (`3a3d381`)
- fix: Reject unsupported Cargo local packages (#13340) (`708d656`)
- fix: Allow outputs outside package roots (#13342) (`de6a0d3`)
- fix: Resolve Cargo lock dependencies by source (#13343) (`2223a33`)
- docs: Update Cargo workspace support (#13349) (`241ada8`)
- fix: Build Ghostty for baseline CPUs (#13352) (`a2a04cc`)
- fix: Preserve watch rerun semantics for task inputs (#13351)
(`6ed5eab`)
- fix: Isolate Command Overrides From Toolchain Cache I/O (#13354)
(`e76f0b4`)
- release(turborepo): 2.10.5-canary.6 (#13355) (`f82e2c7`)
- fix: Include patched Ghostty crate in Cargo workspace (#13357)
(`b3cd7a1`)
- ci: Shard Rust tests across runners (#13356) (`ef122d9`)
- fix: Hash Cargo build environment inputs (#13348) (`d533266`)
- fix: Synchronize Cargo prune Docker lockfile (#13350) (`ed17249`)
- chore: Update agents app Eve dependency (#13364) (`38aa7d2`)
- fix: Preserve Yarn package extension ranges when pruning (#13363)
(`6ed2fb4`)
- refactor: Add `Toolchain` output availability (#13360) (`82bcfb6`)

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
Preview – turborepo-eve-agent fcb34069 Deployed Jul 9, 2026 by vercel[bot]
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.

2 participants