2026-08-23·10 min read

The proofreader who is not allowed to stop me

field-notespantheontoolingclaude-code

There is a file in the Pantheon repo that defines a review agent, and the load-bearing line in it is the list of tools it may use. Read, Grep, Glob, Bash, Write, WebSearch, WebFetch. Edit is not on the list, and cannot be argued onto it. So an agent that finds a bad sentence, and knows exactly what the better sentence would be, has one option: quote the line, cite the file and the line number, hand it back.

Earlier this month I wrote about why I write rules down cold, and that note ends on the rules no script can run. This is what happened to them on Pantheon. They got staff.

Nothing here compiles

Pantheon is a romantic conspiracy thriller set in Hong Kong, sixty-three chapters, close third and past tense, out on 2 October. It is a finished text with one voice in it. Perpetūra has a QA lab under the love story because a story that is also a program can be structurally rotten while reading beautifully. Nothing in Pantheon can be rotten in that sense. The failure here is quieter: the book stops sounding like itself, one sentence at a time, and every individual step was defensible.

Which is why an eager assistant is worse than no assistant. Anything that silently improves a line takes the book away from its author a comma at a time, and you do not notice, because each comma really was an improvement. Most of the design work in this department was not adding capability. It was removing it.

Twelve roles. Here are six.

01 / The proofreader at your shoulder

It runs before every edit into the manuscript folder, and reads the sentence I am about to write against the words already on that page. If nothing rises, it says nothing. If something rises I get one line: which words, from what count to what count.

The check itself is old. What was missing was a trigger that was not me remembering. On 27 July it was run zero times across a five-chapter revision pass while the after-the-fact version of the same check ran after every single edit. About eight collisions went in and came back out again over that pass: house doing two jobs at once, then put, five, built, company, herself, gap, nine. The tool was strong enough. The trigger was wrong.

Its limit is the whole design. It does not block and it does not interrupt. It allows the edit and reports, including on collisions it is certain about. It shipped that same day with a modal instead, and the modal did not survive the day: the floor is three occurrences, a chapter’s own subject vocabulary crosses three honestly, and so it stopped me every few edits to discuss a word nobody had finished choosing yet. Irritating is not a side effect, it is the failure, because a check people want to switch off is a check that gets switched off.

The payoff is that it is still running, and that its report ends by telling the reader to judge rather than obey. A word doing one job four times is usually fine. The same word doing four unrelated jobs is a mannerism. Telling those apart is reading, not counting.

02 / The reader with no pen

Every report skill in this repo carries the same sentence at the top: reports only, never edits prose. For a long time that was all it was, a sentence. Now every subagent those skills spawn is this one definition, which enforces the half a tool layer can reach.

The accident channel is helpfulness. A reviewer three paragraphs into explaining why a line does not work is one plausible step from fixing the line and mentioning it in passing, and nothing about that step feels like a violation while it happens. A convention with nothing enforcing it is this project’s recorded weakness class, recorded because it has failed here before.

So the fix was subtractive. Write survives for scratch checkpoints only, Bash for the read-only measuring tools and git history. A file that needs changing comes back as a finding, quoted, with a line number I can open. Which means every sentence in the finished book is one I wrote, or one I changed myself after reading the argument for changing it. It also insists on exact quotation, and is blunt about why: one of the tools in the repo exists because of a misquote.

03 / The continuity editor

Seven invariants, none of which a static checker can see, because all seven need somebody reading for meaning. Knowledge gates are the most important. For every chapter, take the head we are in and everyone who speaks, and check that nobody treats as settled a fact they have not been given yet. Suspecting is allowed. Stating it as known truth and planning around it is the violation.

Neither a reader nor I can catch that, because every chapter is internally consistent. The break sits between a line in one chapter and a row in a table about who was told what, and seeing it means holding both at once.

Two more are worth naming. The point-of-view contract is one head per chapter, and its test for a leak is good: could this character know this only from inside the other one’s skull? A jaw tightening that she reads as refusal is fine, because that is her own fallible inference. Somebody else’s unqualified thought is not. The last one I will describe by shape only. A character in this book is named differently by the narration in different chapters, and which name is correct is not a switch thrown at a fixed page. It depends on what the point-of-view character knows at that moment, so two adjacent chapters can use two different names and both be right. The instrument checks the name against the head, and that is as much as I will say five weeks out.

One of the seven is barred from producing a finding at all. Cast presence counts how long each character has been off the page and flags any gap of twenty chapters or more, and every flag goes to the unresolved author calls rather than the findings. A character can be absent because they are dead, or held somewhere, or because I wanted the reader to feel them missing. A counter cannot tell those apart, and is not allowed to pretend otherwise.

Its other limit is written into the register check, which compares voice measurements across chapters. Flag wide drift as a signal, it says, never as grounds to rewrite a sentence to move a number, and never as grounds to add dialogue. That prohibition is there because I have done both.

04 / The test audience

Four reader personas, reading blind, in strict order, journalling each chapter before they are allowed to open the next. Perpetūra has a version that plays the story and chooses at every fork. This one cannot choose anything. The only decision a reader of Pantheon makes is whether to keep going, so that is the only decision this measures.

Personas get numbered text files with the frontmatter stripped and no slug in the filename, because one chapter’s filename gives away its own reveal in four words. The strip broke once: --- closes the frontmatter and also marks a scene break in this manuscript, so a strip that stopped at the next --- truncated about forty-eight of fifty-four chapters at their first scene break. A blind reader cannot notice. A truncated chapter reads as a short chapter. Two runs went out on partial prose before anything caught it.

The payoff came out of a complaint no run would reproduce. I read chapters 51 to 56 back and found them exhausting rather than confusing, tiring in the way of working out what each person is trying to say. A run over those exact chapters returned zero flags, because the question it asks is whether one exchange survives a first pass, and my complaint was the cost of a whole sequence. So personas now record the work of reading as they go: where they went back, where they lost track of who was speaking, where they skimmed.

Before I called the book finished I put all four through all sixty-three chapters, each keeping a prediction ledger as it went. One planted detail paid off to an empty room. Not one of the four registered it where it was meant to land, which is exactly the thing I cannot see from inside the book, because I already know what it is for.

05 / The character analyst

It grades every character on the page, chapter by chapter, on four levels: driving the scene’s turn, active without causing it, reactive, or present and inert. Across sixty-three chapters that maps who the book is actually about.

Nobody can do this from memory: presence reads as importance. A character who appears in forty chapters and never once causes anything feels central right up until you count. The same run does a blind attribution test: character sheets plus real exchanges with every tag and action beat stripped out, guess who is speaking.

That test has already rewritten canon. An early round put twenty-nine of fifty-eight lines beyond attribution and reached one character only by elimination, and the fault was in the sheets rather than the prose. Three of them had defined a voice entirely as things the character does not do. One read: no idiom, no humour, no explaining the pattern. An absence cannot be recognised, and it passes every check in the building, because every check counts what is there. Those sheets now carry a positive tell instead, something the character does that nobody else does, audible in a single line.

The real speakers live in an answer key that no agent in the run is ever handed, at any stage. An instrument that can see the answer is measuring nothing.

06 / The acquisitions editor

The market read: who buys this, what it sits beside on a shelf, how an agent’s inbox would receive it.

The difficulty is the pull toward the friendlier shelf. Its own brief names the failure it must not commit: a comps list that leans on clean or sweet romance because that shelf pattern-matches more easily is simply wrong about the book. So the report ends by auditing itself for drift toward a cleaner book than the one I wrote. Comp titles get one search each, and one that cannot be confirmed to exist is dropped rather than guessed at.

Its limit is a governance one. Everything public on this project is mine alone: querying agents, publishing, storefronts, marketing copy. The section most likely to be pasted into a real email is the pitch, so the pitch carries a banner directly above it: internal draft, nothing here authorised to be sent.

The rest of the department

The drafter (07) takes a chapter from the canon pack through its done sequence. The second reader (08) is the frequent pass, and diffs a blind scene outline against what the beat sheet said the chapter was supposed to do. The re-reader (09) exists for the day a craft rule changes after the prose was written. The editorial board (10) runs five lenses over a sequence, argues them against each other, then sends a skeptic back to the prose for every high-severity finding that survived. The production editor (11) maps all sixty-three chapters onto a three-act shape whether they are drafted or not, because a book’s shape is knowable before it is written. The trailer cutter (12) lifts screen-sized lines verbatim out of the prose and renders them to video.

There is a file in the repo called docs/lessons.md. It is 708 lines, every mistake this project has made, sorted into nine families. It was fifty-seven separate entries until I reorganised it, in the order I had learned them, and eighteen of the fifty-seven turned out to be one mistake stated eighteen ways. A failure with a name can be given to somebody. A list of fifty-seven cannot. Family 6 is a rule applied mechanically made the prose worse: a page citation shortened when its length was doing the work, dialogue added to move a metric. Under the heading where every other family lists what catches it now, Family 6 says nothing does, by nature, and that this family is the reason all the others are advisory. The only guard is reading it out loud. Breathless means the sentences are too long. Choppy means too many shorts.

Which is why the thing that reads over my shoulder all day has never once taken the pen.