The Surprise 5%
Situation
For weeks, Donald had believed that the old Git machinery on the Museum server had been cleaned up.
The reason was simple: the server no longer needed to be a development machine.
The living-museum repository had been removed from the server. Its large .git history and Python virtual environment were gone. The workflow had changed to something much simpler:
develop on the Mac → rsync to production.
So when the production disk usage suddenly reached 90%, Donald's heart sank.
The server's root disk was only about 10 GB. At that scale, every few hundred megabytes matters.
Something had to be wrong.
Turning Point
A closer look revealed something wonderfully confusing.
The server still had:
/srv/museum/.git
And it was not small.
It occupied:
479 MB.
Donald stared at the old Git repository.
"Wait. Didn't we remove Git from the server?"
Not quite.
Weeks earlier, we had removed the old server-side living-museum working repository. But /srv/museum itself was still carrying an old Git repository for golden-museum.
Its remote still pointed to GitHub.
Its old deploy.sh still contained:
git pull origin main
But that script had already retired.
Nothing in cron or systemd was calling it.
Meanwhile, the actual production files were being updated through rsync.
The old Git repository was no longer doing useful work.
It was simply sitting there.
For 479 MB.
On a 9.7 GB server.
Emergence
We proceeded slowly.
First, the old deployment script was renamed:
deploy.sh.retired
Then, after checking that the Node source existed safely on the Mac and confirming that the server's extra node_modules were merely installed dependencies, Donald finally removed:
/srv/museum/.git
Git immediately complained:
fatal: not a git repository
This time, that was good news.
Then came the moment of truth:
/dev/sda1 9.7G 7.7G 1.5G 85% /
90% → 85%.
Five percentage points had suddenly returned.
Not because we discovered a mysterious optimization.
Not because the server grew.
Not because some enormous database vanished.
We simply finished a cleanup that had been half completed weeks earlier.
Learning
Production does not need to be a development environment.
The Museum now has a much clearer division of responsibility:
Mac
├── living-museum
│ └── source material
│
└── golden-museum
└── generated website + Node source
│
│ rsync
▼
Production Server
/srv/museum
Git history belongs on the Mac and GitHub.
Production needs the files required to run the Museum.
The old server-side Git repository was not helping production anymore. It was just occupying precious disk space.
And there was another lesson hidden inside the surprise:
"We removed it" and "we removed the repository we meant to remove" are not necessarily the same statement.
A cleanup can be technically successful while still leaving another layer of the old architecture behind.
What Is Possible
A tiny production server can become dramatically healthier without changing the application at all.
How Does It Happen
By understanding the difference between source, deployment machinery, runtime dependencies, and Git history—and removing only what is genuinely obsolete.
Why Does It Matter
Because on a 10 GB production server, 479 MB is not abstract.
It is five percentage points.
And five percentage points can change how you feel about the entire night. 😄
Donald's Note
I thought we had removed Git from the server.
It turned out we had removed one old repository and left another one behind.
Tonight we found the second one.
The disk went from 90% to 85%.
My heart feels much lighter.
Sometimes debugging is not about finding what is broken.
Sometimes it is about finally finding what you thought you had already thrown away.