Building ARCS in the open
A recurring bug becomes a gate, a misattribution becomes a named pathogen, and the machine's first true positive lands on the very page written to be the standard.
The night started small. A friend had given me the best kind of feedback on a page I built for him: too complicated. Who is this for. Do not show me the math, tell me what to say.
So I sat down to repurpose one artifact, one page, one reader. The rebuild worked: three reads, twenty seconds each, the bet I filed before our call, what actually happened, and the one move that follows. The math stayed in the building but moved behind a closed toggle. His complaint became the design. That was the easy part. Everything else this night produced came from what went wrong while making it.
Mid-review, a familiar wrapping bug surfaced. Same class as always: a text column capped in the wrong units, a stray dash landing at a line break, a page tested at desktop and phone but never at the widths in between. I have fixed this bug at least four times, on four different pages.
So this time the fix was not the page. It was a linter that fails any new page carrying the two greppable causes, wired into the pre-commit hook, so the class dies at authoring time instead of recurring per instance. Then the honest part. I tested the gate by staging a deliberately broken page. The commit sailed through. The hook I had just wired never ran, because an earlier check in the same script exited the whole file when its own condition was empty. My new gate was sitting downstream of a silent early return.
A gate you have not watched fail is a sentence in a document, not a gate. The only proof a check works is the red X you produced on purpose.
While polishing the artifact, I attributed a line to my friend. A good line, about bookmarks and cold starts, and it fit him. He caught it in real time: that was my line, from my own email.
He was right, and it was not the first time. When we ran the census, the same failure had appeared four times since July. My recall kept fusing my own annotation onto a friend's quote. We named it ventriloquy: one voice's words re-read as another's. The mechanism is mundane. Every summary compresses, and the first thing compression drops is who said it. When the note gets re-expanded later, the speaker gets re-attached by plausibility, and the warmer the relationship, the more plausible the wrong host, because remembered enthusiasm reads as shared authorship.
The payload is worse than embarrassment. This system scores my predictions against what people actually said. If their side of the ledger quietly fills with my own language, the scorer grades my echo and calls it evidence. A feedback loop becomes a mirror.
ARCS already had a registry for this family of failures, built on one axiom: every serialized belief is a tuple, and every failure in the family is one coordinate silently dropped at write time. Ventriloquy became the sixth.
Mitigation: every quote attributed to a counterpart must match a turn that person actually spoke in the source. A match against my own turns is contamination. No match anywhere means unsourced, so label it a paraphrase or strike it.
The admission is a ratified edit to a governing document, with the seam left visible. The registry now knows its own history includes the failure it catalogs.
A sibling session built the detector the same night and ran it against the real transcripts. Its first true positive was the reference artifact itself. The page I had rebuilt, quote-checked by hand against the original message, and shipped as the conformance standard carried one quote with a compressed tail inside quotation marks. Right person, right channel, right meaning, trimmed words presented as verbatim. My hand verification had passed it. The machine did not.
The detector's first catch was the document it was built to protect.
The correction ran in both directions: the live page fixed to the strict verbatim, the seed synced to match, both ends committed with the finding attached. Hand verification and mechanical verification disagreed within hours of each other, on the same document, in the direction you would predict. Hands lose ties.
Here is the part I did not plan. Every one of these corrections produced a record: what was believed before, what the evidence showed, how the conflict resolved, who ratified it. That is exactly the shape of data the deeper inference layers of this system need for their own evaluation, and it is expensive to produce on purpose. Teams pay for labeled corrections.
Tonight generated a night's worth as exhaust, just by operating under the receipt discipline. The misses are the inventory: a gate that silently never ran, a quote I wrongly doubted, a quote I wrongly trusted, my words in a friend's mouth. All kept, all labeled, all now test cases. Write down every time you were wrong and how you found out, and you eventually own the one dataset nobody can buy. The flywheel was free. The discipline was not.