Faster Actions with safe cross-build caches
Forge now restores prepared workspaces, npm and tool caches, and exact lockfile-keyed dependencies across isolated builds. Two warm production canaries completed the full build, test, lint, deploy, and live-verification workflow in a median 92.0 seconds.
Measured performance
Measured end-to-end production workflow before runner sizing work.
Best measured production canary before cross-build cache support.
Median of two successful production canaries: 91.1s and 92.9s.
An 84.2% reduction from the original 581.2-second baseline.
Representative warm-run stage breakdown
Measured production canaryWhat is changing
- Right-sized container runners for production builds while preserving tests, lint, deployment, and live verification.
- Restore npm's content-addressed download cache before dependency installation, with clean-install fallback on every cache miss or restore failure.
- Reuse exact dependency snapshots only when the lockfile, install configuration, runtime, platform, and runner image all match.
- Persist ESLint's content-based cache so unchanged files do not need to be linted again.
- Prepare reusable repository workspaces to avoid paying the full checkout cost on every isolated run.
- Support workflows that build once and pass the existing output through tests and deployment instead of rebuilding implicitly.
- Record cache hits, misses, bytes, restore/save time, and fallback reasons so speedups remain observable rather than anecdotal.
- Recommend pnpm for new JavaScript/TypeScript projects, with Bun as the high-speed option, and surface advisory guidance in Forge docs, repository UI, and CLI onboarding without forcing existing npm or Yarn projects to migrate.
- Add manager-aware `cache: auto` for pnpm, Bun, and npm dependency stores; ambiguous and Yarn configurations safely skip caching until a dedicated adapter is available.
- Make manager-aware dependency caching the default for container jobs while safely skipping unsupported or ambiguous repositories.
- Classify each run as cold or warm, compare it with recent successful builds, and show the same phase-level evidence and recommendations in the Actions UI and `smolforge actions inspect`.
- Retry the narrow transient cache-save failure caused by a runner code update so a successful cold build is more likely to warm the next run.
- Ship pinned pnpm and Bun toolchains in the standard container runner, and surface a one-time package-manager recommendation after a first default-branch push.
Measurement note: Measured on Forge Actions runs #48 and #49 for Strata commit 2144f49. Both were successful push-triggered container workflows against production. The 92.0-second median is based on two runs, so it is a canary result rather than a percentile claim. The representative 91.1-second run restored the 118 MB workspace in 4.5s, the 313 MB npm/tool cache in 4.8s, and the 1.07 GB exact dependency tree in 4.8s; install then took 0.5s. Its listed stages total 85.1s, with 6.0s of workflow and telemetry overhead. The one-time cold population run took 261.6s, including 109.1s to create and upload the exact snapshot.