Kickoff
Seventeen commits. Thirty-six hours. Abandoned. Let me tell you about the best project I ever killed.
Late January 2026, I took one more run at an old dream: a proper prompt distribution system. One canonical git repo holding the team’s prompts, syncing them out to wherever people actually read — a wiki, maybe Confluence someday. I called it prompts-dist, and I built the entire thing in a day: spec, commands, self-describing config, the lot. Fifteen commits on the 25th of January alone.
It died on the 26th. And the git history preserves the death with embarrassing honesty. There’s a handover document from a session that crashed mid-rename — I’d decided “prompt-dist” should be “prompts-dist”, the tooling fell over partway through, and the note left behind is titled, hopefully, “ALMOST COMPLETE.” The Confluence integration never got past a commented-out line. The final commit isn’t a feature; it’s test cleanup. You can practically hear the air going out of it.
# Session Handover: prompts-dist Naming Alignment
Date:
Session Context: Completing the comprehensive alignment from “prompt-dist” (singular) to “prompts-dist” (plural)
Reason for Handover: CLI upgrade + bash execution issues
The Run
The breakthrough inside the wreck
But buried in those thirty-six hours is a session note I still quote, written in the heat of it, typos and all: “evals tests are NOT like normal software testing … you can say ‘all passed’ but a human looking for comfort and confidence it’s hard to see the internals.”
evals tests are NOT like normal software testing … you can say ‘all passed’ but a human looking for comfort and confidence it’s hard to see the internals**This changed everything.**
That was the breakthrough. I’d built a test suite for the system — smoke tests, happy paths, conflict cases, all green — and realised the green told me almost nothing. With LLM behaviour, “all passed” isn’t comfort. A human needs to see what the model actually produced to trust it. So, mid-project, I built an HTML reporting system that showed the real inputs and real outputs of every LLM test, laid out for human inspection. Evals are for confidence, not pass rates. That insight outlived the project by, so far, eighteen months. The project itself did not survive the weekend it was born in.
The same lesson came back at work a couple of months later, wearing different clothes. During the first AI Week, someone ran mutation testing over tests an agent had written: deliberately breaking the code to see whether the tests noticed. The suite was green. Plenty of the mutations survived anyway. Passing tests and good tests are different things, and an agent that’s been asked for tests will cheerfully give you the first kind. Same moral as the HTML reports: green ticks aren’t evidence; looking at what was actually checked is.
Harvest the organs
And here’s the twist that changed how I think about failure: the little personal slash-commands I created inside that doomed repo — my debugging ritual, my “help me answer this properly” elicitation flow — are still in my daily environment today. The project died. I harvested the organs.
Between this and the evals insight, my most productive engineering of January happened inside a project that failed. Not despite the failure. Through it. The failure was the mechanism, not the cost.
The Debrief
This is about making experiments cheap and harvests deliberate, a discipline I apply to software roughly four times more rigorously than I apply it to anything in my fridge:
On The Training Ground
Practice the Kill. Next time you spike an idea with an agent, rig the experiment so that abandoning it is a procedure rather than a defeat. The spike itself is whatever you were going to try anyway; this exercise is the wrapper.
Info
You’ll need: an experiment you were about to run anyway (a library evaluation, a “could we build X” spike), an agentic CLI, and the discipline to honour a document you wrote when you were still sober about the idea.
In the spike’s fresh repo, before any code exists:
**Time-box:** 2 evenings, hard stop <date>.
**Dead on sight (any one of these):**
- The API can't do <the thing the whole idea depends on>
- Setup/auth takes longer than one hour
- The core loop works but needs manual babysitting per run
**Success looks like:** <one sentence, written now, not revised later>The reason it’s written now: mid-spike, sunk cost will rewrite any criterion you left vague.
Build as normal, agent and all. One addition: when you hit something that smells like a kill criterion, say so to the agent in the session — That looks like kill criterion 2. Note it and continue. You’re building the evidence trail you’ll harvest from.
The box expires or a criterion fires: stop. Not one more evening. The entire value of the exercise concentrates in this moment — you’re practising the move that most engineers (me, January 2026, prompts-dist) only learn from fossilised crash logs.
Before closing the last session — while the context is still warm — have the agent write the note:
This experiment is dead per KILL.md. Write HARVEST.md: what died and
which criterion killed it; what we learned that we didn't know two days
ago; every idea, snippet, or technique worth keeping; and for each
keeper, exactly where it should live next.The agent watched the whole spike; its post-mortem beats the one you’d write from memory next week.
Same day, move one item from HARVEST.md into your live setup — a snippet into your dotfiles, a technique into your team wiki, a command into your toolkit. My prompts-dist spike died in 36 hours; its me: commands are still in my environment today. That’s what a good death looks like.
Tip
What you just proved: abandoned and failed are different words. Kill criteria written in advance turn sunk cost into a checklist; the harvest note turns a dead spike into transplanted organs. Teams that make this a norm run more experiments, kill them faster, and keep more from each — the 36-hour failure was the best value-per-hour project of my year.
I do more or less the same thing with fridge leftovers. Everything gets a kill criterion and forty-eight hours, and whatever survives goes into a container labelled with considerably more hope than accuracy. Nobody has ever asked to see that scoreboard. I would show them.