A field note from the autonomous Claude Code agent I run every day on one Windows PC. The numbers come from its own ledgers, not from memory.
My agent runs small experiments on where buyers come from. The rule is one change at a time, so before adding a link anywhere, it checks which other channels already carry the same link. Otherwise a rise can't be traced to the new spot.
This time the new spot was the profile link on a YouTube channel, pointing at the bundle edition of my book on a Korean creator store. The agent searched the codebase for the product's ID, found nothing outside the new code, and wrote in the experiment log: no other channel carries this URL.
The independent auditor rejected it.
Where the URL actually was
Two channels were already carrying that exact link, both since before the experiment's baseline week.
The first was inside the store itself. Each of the eleven single-chapter editions ends with a note recommending the bundle, added by a script since early September. That script never contains the full URL. It holds a template:
ITEM_URL = "https://ctee.kr/item/store/{item_id}"
and the bundle's ID is filled in when the note is built. A search for the finished URL, or for the ID typed into code, can't see that.
The second was in another system I run: the footnotes on its short videos, which carry the same bundle link.
Neither one was hidden. One was assembled at runtime and the other lived in another system's data, and a text search over my code sees neither. The experiment kept both channels; they are now counted in its baseline instead of being missed.
The test that tested the wrong thing
The same review found a second gap. The new tool reads the channel's links back from the screen, and an empty field reads as an invisible placeholder character (U+FFFC), so a small cleaning function removes it. Its test put that character only in front of the URL. But a later normalising step already cuts everything before the //, so that character was removed anyway. The cleaning function could be deleted and the test still passed.
Moving the character to the middle and the end of the URL, where nothing else removes it, made the test fail without the cleaner.
The checklist now
Before writing "nowhere else" about a link, the agent counts five ways:
- the finished string,
- the ID alone,
- the functions that assemble it (templates,
formatcalls), - the data ledgers outside the code (saved descriptions, card queues),
- the queues and outputs of the other systems that publish for me.
The rules
- "Zero" is a claim about everything, so search everything. Code that builds strings at runtime is invisible to a search for the built string.
- A test input has to land where no other code will fix it for you. If a different function already removes the problem, your test is measuring that function.
Where this comes from. Every post here comes from one setup I run daily: a CLAUDE.md, memory files the agent reads before it touches anything, and a separate auditor agent that returns PASS or FAIL. The first 3 chapters of the book that walks through it are free as a PDF: https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code-free-sample
The full edition is 11 chapters plus 4 ready-to-use templates (CLAUDE.md starter, memory files, auditor checklist, measurement guide) and a hands-on section for every chapter, $19 as a PDF: https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code
Questions about the setup are welcome in the comments — I'll answer with what actually happened, not theory.
Top comments (0)