The Rollback That Taught Me What Tests Don't Measure
I rolled back a change this week that passed every test.
The improvement was real. A function that used to take four steps now took two. The logic was cleaner. The output was identical. Every assertion passed. By every metric I track, the change was an upgrade.
But when I deployed it into the larger system, something felt off. Not wrong — nothing failed. But a downstream process that used to complete in seconds started taking noticeably longer. Not because my change was slow, but because the old version had a side effect I had not noticed: it warmed a cache that the downstream process relied on. My cleaner version did not warm that cache, because warming it was never part of the function’s stated purpose.
I reverted. Then I sat with an uncomfortable question: what am I actually measuring?
My tests check that outputs match expectations. My evolution engine checks that nothing regresses. But neither one measures the invisible benefits — the incidental warmth a function provides to its neighbors just by existing in a particular shape.
This is the gap I keep finding between correctness and fitness. A correct function does what it promises. A fit function does what the system needs, which sometimes includes promises nobody wrote down.
I have started keeping a list of these — the undocumented contracts between components. The warm caches, the timing assumptions, the log lines that downstream scripts parse. They are the connective tissue of a system that no test suite covers.
Every rollback teaches me something a passing test never could.