Three production defects, found and fixed the same night
Three production defects in Content Ops — a runs race, an artifacts race, and a polling fan-out — surfaced and fixed the same night.
Read more »Reading this with an AI? Start at /for-agents/ (orientation) or /llms.txt (index).
Skip to contentContent Ops is a console for running a client's knowledge and content. Discovery notes and an open-questions tracker. A knowledge base where documents move through an editorial lifecycle (draft, needs review, approved, deprecated) with version history. A content plan built from keyword data. A drafting pipeline that writes from approved sources. And a one-way sync that publishes approved knowledge into Sadyr, so the revenue agent answers from the same documents.
It's live in production, at version 5.13.
Most AI content starts from a prompt and hopes. Content Ops starts from evidence: what the business actually knows, approved by a person, with sources attached. The AI proposes changes as a changeset, and a human reviews them before anything is written. That's slower than letting the model write straight to the database, and it's the reason I trust what comes out.
We run Adroit on it. It drafted our own website.
Claude Code writes the code, the tests and the documentation; I set the backlog, review, and decide what ships. The app is Next.js and TypeScript with a Python agent layer and PostgreSQL, hosted on Sevalla. Every release has to pass the full test suite and a production build before it's pushed.
It runs one project at a time. At three parallel jobs the process ran out of memory, and the choice was a bigger server or a slower queue. We chose slower.
The first time we ran it at real concurrency, rewriting our live website, it produced three production defects in one night. All three were the same habit in agent-written code: writing to a database table by deleting the whole table and re-inserting every row. At one job at a time that's harmless. At three, two jobs collide.
The lesson I kept: agent-written code can carry one bad habit across several unrelated tables, so finding it once doesn't mean it's gone. And build the diagnostic tool before the incident that needs it. The postmortem exporter paid for itself before midnight on the night it shipped.
Cost capture is measured now, at the site level: writing Adroit's site content cost $8.92 in total generation spend, and writing toddpaulbrownjr.com's content cost $5.33. Those are the cost to write each site's content, not per-page figures — Content Ops hasn't run enough priced pages yet to publish a number I'd stand behind at that granularity.
| Figure | What | Source |
|---|---|---|
| 995 + 57 | TypeScript + Python tests passing, 0 failing | state/repo-state.md, last full run at 1697727, pulled 2026-10-09 |
| 92 of 95 | planned website pages drafted in two days of batch runs | manifest B-03 / B-08, 2026-09-08 to 09-09 |
| 74 + 17 | website pages updated + created, live since late September 2026 | manifest B-03 |
| 3 | production defects found and fixed the same night | manifest B-08, 2026-09-08 |
| 33 | approved public documents published to Sadyr | manifest B-02, 2026-09-21; updated 2026-09-28 per page-pointer sync |
All measured. More on the receipts page.