← Back to Blog

The Three Bugs I Shipped Anyway

August 15, 2026 · 6 min read
A computer screen displaying code and debug output

Part 10 of the Heist Build Log — an honest, running account of building a content OS from scratch. New entries drop on the 1st and 15th.

This post covers i handed it the keys. then it filed bugs., why you ship with bugs you can see, and bug one: too many tools to think about.

I handed it the keys. Then it filed bugs.

A couple entries back, in Part 8, I handed the build log over to the system I built and let it plan, write, and schedule an entry. It worked. But real use is a different test than a demo — and it's since dragged three problems into the light. Three things I already knew about and shipped anyway.

I want to talk about those three honestly, because "we ship with known rough edges" is the least glamorous and most true thing I can tell you about building software. Nobody puts it on the landing page. Everybody lives it.

Why you ship with bugs you can see

There's a version of me that wants everything perfect before anyone touches it. That version of me never ships. The whole reason Heist took two years is that I kept polishing corners nobody was standing in.

At some point you learn the trade: a known, bounded bug in production teaches you more in a week than another month of you testing it alone in the dark. Real callers do things you never would. They hold the tool differently. The only way to find the problems that actually matter is to let the thing run where you can't script it. So you ship — honestly, with a list of what's still rough — and you watch.

Here's the list it handed back.

Bug one: too many tools to think about

When you call Heist from inside ChatGPT through the connector, the friction isn't how many tools exist. It's how many you have to think about to get one thing done. We have flows that need four or five separate lookups to accomplish what should be a single step.

That's not a performance problem. It's a cognitive-load problem, and it's mine to fix. The lesson landed hard: every extra decision you hand a user — or an AI agent acting for them — is a tax, and the taxes compound. The fix isn't fewer features. It's fewer decisions to reach the same outcome. Collapse the five lookups into one. That work is on the board now, and it's the kind of unglamorous simplification that never shows up in a demo but decides whether people actually stay.

Bug two: the date-math footgun

Every agent session I've run, computing something like "next Tuesday" goes sideways when the current day is close to the boundary. If it's Tuesday, or nearly Tuesday, the math guesses wrong.

It's small. It's embarrassing. It's also exactly the kind of bug that survives because it only bites under specific real-world conditions you don't hit while testing on a random Thursday. Known issue. Not fixed as I write this. I'm telling you it exists rather than pretending the system is cleaner than it is — because that's the deal I made with this series.

The humble bugs are the ones that bite in production. The dramatic ones you catch. It's the boring date math that ships.

Bug three: error messages that are too polite

This one's my favorite, because it's a genuine lesson I didn't expect. When something fails — a missing field, a scheduling conflict, a permissions problem — the tool returns a helpful-sounding message that doesn't actually say what specifically went wrong.

For a human, that's mildly frustrating. For an AI agent reading the response, it's worse than useless. A vague error doesn't stop an agent — it makes it guess, confidently, in the wrong direction. I built the error messages to be friendly. Turns out friendly and useless are close cousins when the reader is a machine. The fix is to make errors blunt: say exactly what failed and exactly what to do about it. Precision is a kindness, even when it sounds colder.

What shipping-anyway costs, and what it buys

The cost is obvious: some people hit these rough edges and it's on me. I don't love that. The thing it buys is the only thing that actually improves software — contact with reality. You don't find any of this in a spec. You find it when the system is running in the wild, under real conditions, called by people who aren't you.

All three are fixable. All three are on the board. None of them were surprises, exactly — but seeing them show up in real usage sharpened them from "someday" into "this one, next."

Why I tell you this

Because the build-in-public I believe in isn't the highlight reel. It's the version where you say what's broken while it's still broken. Anyone can announce a launch. Telling you about the date-math bug that's live right now is the part that earns trust — and honestly, it's the part that keeps me honest with myself, too.

Heist is a system for getting content out of your head and into the world, consistently. Building it has been a long exercise in being honest about how hard "consistently" really is — for me, for the product, for the people using it. The bugs are part of that story, not a footnote to it.

Try it yourself

If you're spending 90 minutes a day on content and getting inconsistent results, Heist is built for exactly that problem — rough edges, honest fixes, and all. Seven-day free trial, no credit card required. The Brain learns your voice in the first session.

Start your free trial →

Next: a month of letting Autopilot run without me. What I stopped doing — and the one thing I couldn't hand over.

FREQUENTLY ASKED QUESTIONS
What does "I handed it the keys. Then it filed bugs." cover in this post?

A couple entries back, in Part 8, I handed the build log over to the system I built and let it plan, write, and schedule an entry. It worked. But real use is a different test than a demo — and it's since dragged three problems into the light. Three things I already knew about and shipped anyway.

Why you ship with bugs you can see?

There's a version of me that wants everything perfect before anyone touches it. That version of me never ships. The whole reason Heist took two years is that I kept polishing corners nobody was standing in.

What does "Bug one: too many tools to think about" cover in this post?

When you call Heist from inside ChatGPT through the connector, the friction isn't how many tools exist. It's how many you have to think about to get one thing done. We have flows that need four or five separate lookups to accomplish what should be a single step.

What does "Bug two: the date-math footgun" cover in this post?

Every agent session I've run, computing something like "next Tuesday" goes sideways when the current day is close to the boundary. If it's Tuesday, or nearly Tuesday, the math guesses wrong.