The rule that lets me trust work I’m not watching
Unattended AI work is fine when nothing reaches a main branch without passing tests, passing checks and a reviewed diff. Why I hold to that rule, with two numbers and one catch that explain it.
I’m happy for AI to work while I’m not watching. I’m not happy for it to change a main branch on its own say-so. The rule that reconciles the two is short: nothing reaches a main branch without passing its tests, passing its checks and having its diff reviewed.
A worker’s word counts for nothing
When I counted 101 attempts in my job runner’s record in October 2026, the workers said they were done 72 times. Thirty of those then failed a check. That is the number I think about whenever someone says a model has finished.
Tests alone aren’t enough
On 3 and 4 November 2026 a cheaper model’s change passed its tests, and the review still caught a real security hole that the tests had missed. That attempt was fixed by hand, and it went no further.
Whoever writes a change doesn’t get to judge it. Something that took no part in writing it reads the diff, and I read it again before it merges.
What the rule doesn’t do
It doesn’t prove the code is right. It makes a wrong change hard to get through, and it makes sure I find out before it lands, not after.
That is the bar I set for unattended work, and it’s why I’m comfortable leaving it running overnight. It’s also the reason cheap models are safe to use at all, which I wrote about in software that gets built and tested while I sleep.
More on Mullet
-
Why I build my own tools
I don’t want my work capped by any one account, plan or vendor. So I build the parts that matter: several accounts on one setup, a job runner that…
-
Software that gets built and tested while I sleep
I leave software to build and test overnight, and nothing lands unless the tests and a review agree. Routine steps go to cheap and free models…
-
Mullet’s code is private now
I’ve made Mullet’s code private while I work on a new idea. If you’d like to know more or ask about it, get in touch.
-
Checking third-party repos for prompt injection before an AI reads them
Before 18 public repos went into a search pool my sessions read, I scanned and read them for hidden instructions. Nothing malicious turned up, and…
-
Tuning a search pool: content beat weights
Every search-time setting I tried on a Trawl pool scored exactly the same. Fixing what was in the index moved MRR from 0.489 to 0.542, measured on…
-
Why a forked worker can wait for ever
A Trawl reindex started through Mullet’s MCP server hung at 0% CPU, because its forked workers inherited a lock another thread was holding. Pools…
-
Four rules from a game framework’s agent prompts, for web and print design
On 1 November I read the agent prompts of VibeGame, a framework that builds 2D web games, and kept four rules about judgement that carry over to web…
-
Cheap models only for the work that is safe to be wrong about
Trying the cheapest model first is only safe when a wrong answer costs an attempt and nothing more. What the checks can’t judge goes to the best…
Featured projects
-
PrintMD
A Markdown editor that exports print-quality PDF, Word and PowerPoint files, with a small PDF service that runs on your own computer.
-
Solar Calendar
A calendar of 13 identical 28-day months, with each year starting on the first Monday on or after the spring equinox.
-
Where Should I Live
Rank cities around the world by what you’d keep after tax, what a month costs, which visas you can get and how each place fits the way you live.
-
Apple News API
A PHP client for publishing articles to Apple News, with a document builder for the whole Apple News Format.
More writing
-
Several Claude Code accounts, one setup, nothing lost when I switch
I run several Claude Code accounts at once on one machine, all signed in and sharing the same plugins, skills, memory and history. On 3 and 4…
-
One session, about seven hours, 26 subagent runs: what I measured
I measured a long working session from its own record: about seven hours on 3 and 4 November 2026, 26 subagent runs, 142 messages from me…
-
A PDF service that only runs on your machine
PrintMD’s PDF service turns Markdown into a PDF with one request, and it refuses to be hosted. Why that’s on purpose, and how it stays locked down…
-
Custom sizes, one long page and fit to width
Not every PDF is an A4 page. PrintMD’s page options cover a custom size, one continuous page, scaling wide tables to fit and your own margin, and…