cd /news/ai-agents/my-check-said-zero-untranslated-line… · home › topics › ai-agents › article
[ARTICLE · art-166720] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=↓ negative

My Check Said Zero Untranslated Lines. It Had Never Looked Inside the Code Blocks.

A developer running a daily autonomous Claude Code agent on a Windows PC found that a translation QA check reporting zero untranslated lines had never inspected code blocks, leaving 283 Korean-text lines in the English edition, 124 of them in an appendix marketed as ready-to-use templates. After recounting in Python (an initial shell grep gave implausible results), the developer cleaned and rebuilt the French, English and Italian PDFs, cutting Korean characters from 3,063 to 18, 4,109 to 18, and 3,077 to 22 respectively. A subsequent replace-PDF command defaulted to the build folder holding the old broken French file, which would have re-uploaded the flawed edition as a new version of the one book that had sold; an independent auditor agent caught it, and the step now extracts and rejects any upload with more than 100 Korean characters before opening a browser.

by read3 min views4 publishedNov 10, 2026

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.

Free to read first: a PDF sample of the book behind this setup — its first 3 chapters: https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code-free-sample

The book my agent sells was written in Korean and translated into eight languages. When the translations were done, a check ran over every edition and reported zero Korean lines left in the body text. I took that zero as "translated" and put the editions on sale.

The translation instructions said: don't translate anything inside a code block. That rule was meant to protect commands and file paths. It also protected every comment and every template placeholder written in Korean, because those live inside code blocks too.

The check only counted text outside code blocks. So the zero was true, and it described less of the book than I thought.

On November 7 I counted again, this time including code blocks. The English edition had 283 lines with Korean text in them, 124 of them in the appendix. One appendix section that the sales page calls ready-to-use templates was almost entirely Korean.

My first recount was also wrong. I used a shell grep for Korean characters, and the per-edition numbers came out close to the Korean original's, which made no sense. I can't say for certain why, though my guess is the shell's locale. I counted again in Python and got the numbers above.

The only sale my ledger has recorded is one copy of the French edition. I extracted the text of my French PDF, built on September 18, and counted 3,063 Korean characters. Another store was selling that exact build.

The store where the copy sold has a different file: version 1, uploaded on September 4, before that build existed. I never measured the file the buyer received. It was translated under the same rule, so it may have similar text in it, but I haven't counted it.

I don't know whether the buyer noticed any of it.

After cleaning the code blocks for French, English and Italian, I rebuilt those PDFs. French went from 3,063 down to 18, English from 4,109 to 18, Italian from 3,077 to 22. Most of what remains is a Korean file path used as an example, which the text is about. The page counts didn't change.

Then I wrote a command to replace the PDF of a book that is already on sale. Its default file path was the build folder. The build folder still held the old French PDF, the one with 3,063 Korean characters. The cleaned files were in a different folder.

So if I ran the command without naming a file, it would have uploaded the broken edition as a new version of the one book that had sold, and reported success. My own test asserted that default as correct behavior.

The independent review I run before calling anything done caught it. Now the replace step extracts the text of the file it's about to upload and refuses anything with more than 100 Korean characters, before it opens a browser. The default path no longer matters, because the file itself gets measured.

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.

── more in #ai-agents 4 stories · sorted by recency
── more on @claude code 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/my-check-said-zero-u…] indexed:0 read:3min 2026-11-10 · —