How this backlog got built
Twenty Thinking pieces, built by parallel agents in isolated worktrees and merged through one shared registry file, including the batch that got built twice and the draft that almost named a competitor's model by brand.
Every piece in this registry, including this one, went through the same process: pulled from something real, drafted in voice, built by an agent in its own isolated corner of the repo, checked, merged into one shared file. The table below is a real excerpt of the document that tracked all twenty. Two of the rows exist because that process broke, once each, in two different ways.
01 Source
The backlog started as a single markdown table: a slug, a topic, a source, an interaction idea, a status, one row per piece. The rule from the top was no invented filler — every row traces to something that already existed. A shipped pull request. A saved note. An actual git log. Where the source material was thin, the instruction was to write around the gap rather than manufacture specifics to fill it.
| # | Slug | Source | Status |
|---|---|---|---|
| 1 | night-field | shipped in #70, #71, #72 | done |
| 2 | agents-org-design | shipped in #76 | done |
| 5 | gtd-mini | shipped in #76 | done |
| 6 | compound-engineering | this project | queued |
| 9 | personal-knowledge-graph | gbrain concepts/knowledge-graphs | queued |
| 14 | hop-flights | gbrain career/hop-flights | queued |
| 16 | twilio-compliance | memory twilio.md | queued |
| 20 | this-page | this session | queued |
Eight of the twenty rows in docs/thinking-pieces-tracker.md — slugs and statuses verbatim, the source column trimmed to one reference where the tracker lists several. Row 20 is this piece. By the time you're reading this, more rows than shown here have flipped to done — a tracker written by hand describes the backlog as of the last time someone looked at it, not the backlog as it currently stands.
02 Draft and build
Each row became a job with the same shape: pull the real source, draft it in voice, fit it to a shared kit of layout primitives — a prose-and-specimen unit, a labeled flow diagram, a before/after toggle, a sidenote — then build it. Several rows ran at once, each handed to an agent in its own isolated git worktree, so one agent's half-finished edit couldn't collide with another's mid-build. The one file every worktree agreed to leave alone was the registry: the single list of which pieces exist, wired in by hand after each batch landed, specifically so parallel agents never had to resolve a conflict in the same file.
03 Verify
Verification was mechanical and non-negotiable before anything shipped: typecheck, lint, tests, a production build. One more check sat on top of those, specific to this site: grep every draft for the brand names of AI products, because a personal site tied to a day job at a company with its own model can't casually name a competitor's. It caught something real. One of the twenty drafts named a specific LLM by brand, three separate times — the source material it was pulled from had quoted the name verbatim, and the draft carried it straight through. The grep caught it before merge, in the same pull request. A separate, site-wide sweep run around the same time found a couple of stray mentions already live elsewhere and pulled those too.
04 Integrate
The registry file was supposed to be the one place parallel work couldn't collide. It mostly held. Then two independent batches of agents, started from two different sessions neither aware of the other, built the same four pieces at the same time — same slugs, same arguments, one batch naming a file with a lowercase final letter and the other with an uppercase one, two on-disk names for one essay. Nobody caught it mid-build, because nothing in either worktree could see the other. It surfaced at integration, when a second batch's git-worktree listing came back already full of work that looked exactly like its own. The fix wasn't a smarter agent. It was a habit: check what's already running before starting a new batch, not after.
The table near the top of this piece is real, and it's already wrong by the time you read it — a few of the rows marked queued there will have shipped between the draft and this sentence rendering on your screen. That's not a bug in the tracker. A backlog built by a swarm of parallel agents doesn't have a single moment when it's fully described anywhere; it has a table someone updates by hand, a registry file that's the actual source of truth, and a gap between them that closes and reopens with every batch.
The tracker says what was planned. The registry says what shipped. Believe the registry.