Craft Notes
What 'done' actually means: the boring parts AI skips
AI can write the feature. It can't decide the feature is finished. Here's the unglamorous checklist — tests, review, edge cases, rollback plans — that separates 'demo' from 'done.'
16 October 2026 · Hamza
AI can write the feature. It cannot decide the feature is finished. That decision — done — is a judgment call, and it's where hand-crafted software earns its keep.
Here's the unglamorous checklist. Nothing on it is impressive. All of it is load-bearing.
1. The tests that embarrass the code
Not "does the happy path work" — the demo already proved that. Done means: what happens when the API is slow, when it's down, when it returns garbage? What happens with an empty list, a list of ten thousand, a list containing one hostile entry? Write the test that would embarrass the code, then make the code pass it. AI will happily write tests too — but only the ones you think to ask for. The test suite is only as adversarial as its author.
2. The review by someone with scars
Every line of consequential code gets read by a human who has been burned before. Not for style — for the things linters can't see: "this cache has no invalidation," "this retry has no backoff," "this query is fine at 100 rows and a disaster at 100,000." Review is pattern-matching against past pain. AI has no past pain. It has training data about pain, which is not the same thing.
3. The edge cases nobody demos
Empty states. Loading states. Error states. The user with a 3G connection and a phone from 2019. The admin who pastes a novel into the "name" field. The timezone bug that only fires during the one week of DST transition. Done means walking the perimeter of the feature and checking every fence post. Demos walk the garden path.
4. The rollback plan
Done means knowing how to un-ship it. Database migration with a down path. Feature flag, not a deploy-and-pray. A runbook entry for the 2 AM version of you. AI-generated projects almost never include an undo strategy, because "undo" requires imagining failure — and the prompt said "build me X," not "build me X and a dignified retreat."
5. The boring documentation
Not a novel. Just: what does this do, what does it depend on, what breaks if I touch it, who do I call. Future-you is a stranger; write for them. Six months from now, the difference between a codebase you can extend and one you want to burn down is usually a README and honest comments at the tricky parts.
6. The delete key
Done sometimes means deleting. The AI-generated helper that's used once. The dependency pulled in for one function. The abstraction that anticipates requirements nobody has. Done is not "it works" — it's "it works and there's nothing left to take away."
Why this matters now
None of this is new. It's the same checklist good engineers have used for decades. What's new is the volume: AI lets one person generate a month of code in an afternoon, which means the boring parts — review, tests, edge cases — are now the bottleneck. The industry spent 2025 celebrating generation speed and is spending 2026 discovering that speed without judgment just produces mistakes faster.
The studios and developers who thrive won't be the ones who generate the most code. They'll be the ones with the best definition of done.
Ours is above. It's not glamorous. It's the whole business.
If your project needs someone who owns the definition of done — that's the studio. Start a conversation.
Written by
Hamza — Full Stack Engineer
Full Stack Engineer (Python · Django · React/Next.js) with production AI/LLM experience. I build with AI every day — and write about doing it well.
The Craft Report
One email. Vibe-coded apps, ranked and roasted.
New rankings, teardowns, and craft notes. No spam, unsubscribe anytime.
Newsletter provider coming soon — this form is a placeholder.
Keep reading
Vibe-Code Watch
We ranked 8 AI app builders by actual code quality
Everyone ranks AI builders by how fast the demo looks. We ranked them by what matters: the code they leave behind. Eight tools, one rubric, zero mercy.
19 Oct 2026
Vibe-Code Watch
5 vibe-coded launches that fell apart in week one
The demo was flawless. The launch tweet went viral. Then real users showed up. Five archetypes of vibe-coded launches — and the exact week-one failure each one earned.
18 Oct 2026
Teardowns
Anatomy of a vibe-coded checkout: 14 bugs in 200 lines
A founder sent us the checkout flow their AI built. 200 lines, looked perfect in the demo. We found 14 bugs — including one that charged customers twice. Here's the full teardown.
17 Oct 2026