1
0 Comments

The bug report said "regression." It had never been built.

A user told me a feature stopped working. I did the obvious thing: opened the git log, found the refactor near that code, started hunting for the commit that removed it.

There wasn't one. It had never been built in the new version.

The behavior existed in the old implementation. When I rewrote that surface behind a feature flag, it was on a hand-written list of things to port, and it quietly never got ticked. Specified, discussed, written up in a PR as done, never actually there.

The lesson is not really about git. It is that the word "regression" in a bug report smuggled in an assumption, and I accepted it without checking. Regression means the thing existed and then stopped existing. Accept that and you reach for bisect and blame. Reject it and you reach for grep, which answers the question in about ten seconds.

Two things kept me fooled longer than they should have. A hand-written parity checklist is not a diff, and hand-written lists are always missing something. And a green test suite tells you nothing, because nobody writes a test for code that was never written.

Building solo makes this worse, because there is nobody to say "are you sure that ever shipped?" You have to be the person who asks.

Now every "we lost X" report starts with a grep of the current code.

on July 20, 2026