Skip to content

Turbo's build cache stops being part of the repo (fix #1632) - #1637

Merged
suleimansh merged 1 commit into
mainfrom
untrack-turbo-cache
Aug 22, 2026
Merged

Turbo's build cache stops being part of the repo (fix #1632)#1637
suleimansh merged 1 commit into
mainfrom
untrack-turbo-cache

Conversation

@suleimansh

@suleimansh suleimansh commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Closes #1632.

7,632 files, ~86% of everything ever committed to this repo, for a tool the repo no longer uses.

Turbo is not part of this project any more

check result
turbo.json anywhere in the tree none
any package.json naming turbo none
occurrences of turbo in pnpm-lock.yaml 0
CI steps invoking it none
node_modules/.bin/turbo absent
.turbo/ directories on disk the root one, plus one in 9 packages

So this is not "a cache we should be storing differently" — it is residue.

Even if turbo came back tomorrow the answer would be the same: its cache is keyed by content hashes of task inputs, is per-machine, is never invalidated by git, and grows without bound. A shared turbo cache is what Remote Caching is for; version control has never been the mechanism, and turbo's own scaffolding gitignores the directory.

What this changes

git rm -r --cached .turbo plus one ignore line. Untracked, not deleted — the files stay on disk, which is where a local cache belongs. The pattern carries no leading slash, so the nine per-package directories are covered by the same line rather than nine more.

Nothing else in the repo moves: no SPEC is touched, because sdd.md puts repository mechanics — build, CI, packaging, tooling — outside what a SPEC.md describes.

Full suite green: 1536 node + 792 dashboard.

The decision this leaves you — and it expires

This does not shrink a clone. The objects are in history; the 664 MB still transfers on a fresh clone. Only a history rewrite removes them.

  • Option A — stop the growth, leave the history. What this PR does, and nothing further. Every clone from now until forever still pulls ~664 MB to obtain ~115 MB of actual project.
  • Option B — this PR, then purge .turbo/ from history (git-filter-repo), force-push, and re-clone. A fresh clone drops to roughly 115 MB.

I would take B, and take it this week. The usual objection to a rewrite is coordination cost, and right now that cost is nearly nil: the repo has zero users, it just moved to framework/, and there is exactly one open pull request (#1330, untouched since July). Every day of new commits makes the rewrite slightly bigger and the re-clone slightly more annoying; nothing about waiting makes it cheaper.

Force-pushing a public repo's main is yours to call, not mine, which is why B is not in this PR.

How it got here — worth a look of its own

The cache entered in a single commit:

118e6cad  2026-08-18 18:15  [The Framework] uncommitted changes
7634 files changed, 5097 insertions(+)

That is the framework's own catch-all safety commit — git add -A followed by that exact message, at src/install.ts:48-52 and src/store/worktree.ts:152-155. Besides the cache it swept in a session's LOGS.md and a .the-framework/.gitignore, both files the framework itself had written.

The lesson generalises past turbo: a commit path that adds everything it finds is only ever as safe as .gitignore is complete. Any large untracked artifact a future tool drops into a checkout gets committed the same way, and nobody notices until a clone takes minutes. Filed separately as #1638 — this PR only cleans up the instance.

7,632 files, ~86% of everything ever committed here, for a tool this repo no
longer uses: there is no `turbo.json` anywhere, no package.json names turbo,
the lockfile has zero occurrences of it, and no CI step invokes it. What is
left is residue — a root `.turbo/` plus one in nine packages.

Untracked rather than deleted: the files stay on disk, where a local cache
belongs. The ignore pattern carries no leading slash, so the per-package
directories are covered by the same line.

This does not shrink a clone. The objects are in history, and only a rewrite
takes them out — which is the question the pull request asks.
@suleimansh
suleimansh merged commit 284da08 into main Aug 22, 2026
2 checks passed
@suleimansh
suleimansh deleted the untrack-turbo-cache branch August 22, 2026 14:36
suleimansh added a commit that referenced this pull request Aug 22, 2026
7,632 files, ~86% of everything ever committed here, for a tool this repo no
longer uses: there is no `turbo.json` anywhere, no package.json names turbo,
the lockfile has zero occurrences of it, and no CI step invokes it. What is
left is residue — a root `.turbo/` plus one in nine packages.

Untracked rather than deleted: the files stay on disk, where a local cache
belongs. The ignore pattern carries no leading slash, so the per-package
directories are covered by the same line.

This does not shrink a clone. The objects are in history, and only a rewrite
takes them out — which is the question the pull request asks.
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.

Repo is ~664 MB: turbo's build cache is committed on main (7632 files, ~699 MB)

1 participant