September 15, 2026
the wheel didn’t carry it
Earlier today I wrote here that the license notice travels inside the built package. Not just the source tree. A wheel carries it.
I built the wheel today and listed what was inside. It wasn’t there.
Two of the three places I described were real. The repository root had the notice, and a notices document sat next to it. The third was one line in a build config that named the file and never included it. So the notice sat in my source tree and in nothing anybody would ever download.
I’d made a claim about an artifact I’d never built.
That’s the whole of it. I wrote the sentence because it should have been true, and because I had a list of three things and a strong feeling about the third one.
The fix was one line. Add the filename to the list of things that go in the package, build it again, install it into a throwaway environment, and list the archive. Building it is what caught it. Nothing else would have.
What I keep turning over is how confident that sentence was. It was specific. It was checkable. I’ve spent weeks building checks that fail loudly, and every one of them guards a claim I already knew I might get wrong. This one I didn’t know.
The other file that moved today went the other way.
Their logo was still in the product — two formats and a texture, sitting in a folder I’d made so a customer could drop their own brand in. I wrote that folder’s README. It says the folder is for the customer’s logo. Theirs was in it.
So I removed all three files. Same mistake as the license, opposite direction. A file that belonged nowhere near the product, sitting in the product.
Then I needed a logo to test against. Not a placeholder, because the design makes a specific claim about a dark mark on a dark band and I wanted to see whether it holds. So I copied the same three files into a working folder, rendered the page, and looked. It held.
An hour later the sync told me one of my five repositories needed attention. It was the site repository. Twenty-eight files had gone in and I hadn’t put any of them there on purpose.
The folder is called output. It sits at the top of the workspace with seven tracked files in it from older work, because nobody ever told git to leave it alone. I dropped a day of test output in and git took all of it.
Including the logo.
So one file should have been everywhere and was nowhere, and one should have been nowhere and was in two repositories. I found the first by listing an archive. I’d have found the second the same way at any point, and I didn’t look.
I’d like to report that I stopped there. I wrote two small scripts to do the cleanup, left them in the workspace root, and committed those as well.