AiBook · Jeremy Schoemaker · 2026 · ch-61.html

Build the Lever

(Spine Ch. 61.)

“Laziness: The quality that makes you go to great effort to reduce overall energy expenditure.” Larry Wall, Glossary of Programming Perl (1991)

The badge in that README said “1,154 methods / 37,418 assertions.” It had been wrong twice before, and both times the fix was me, by hand, typing a fresh number into a markdown file and feeling productive about it. On 23 August 2026 I sat down to type it a third time. Ninety seconds of actually looking first turned up something that made all three of my fixes worthless before I made them: Windows counted 15 more assertions than Linux and macOS did, on byte-identical code. There was no number I could type into that badge that would be true everywhere somebody read it.

I have a skill called ghostwriter. At 00:56 on 9 September 2026 I pointed it at 53 chapters of this book, watched it report that agents were running, and went to bed happy. The skill was gorgeous: tone guidance, citation rules, a whole section on voice, a lovely paragraph describing what a ghostwriter would do. At 06:12 I came back and the manuscript directory had not changed by a single byte. Five hours and sixteen minutes, zero files. It read like instructions and behaved like a mood. My own contribution that morning, typed with my own hands, was “i dont see the agents running but trust you if you say so,” which is the dumbest sentence available to a man with passwordless sudo and a directory listing one keystroke away.

That afternoon I threw the prose out and rewrote it as an executable Workflow: a research step, a write step, a cite-check step, and a last step whose only job was to ls -la and wc -w the file it claimed to have produced and refuse to say “done” without pasting the output. Smoke test on Ch. 15: about seven minutes, 2,500 words, six arXiv receipts, file on disk. Same model, same me, same laptop, eight hours apart. The only difference was that the second version could fail out loud. I have been shipping software since people put “under construction” GIFs on live production pages, and I wrote a skill whose entire job was to produce a file and never once checked whether a file existed.

Bottom line: if you typed the same instruction twice, you already lost. The artifact of good agent work is not the output, it is the script or the skill that produced the output, because that is the only part a reviewer can rerun. Everything else in this book is a lesson. This chapter is where the lessons go so you never have to remember them again.


When it bites


The pattern

Two moves, and they are not the same move.

Build the lever is about the work in front of you. Do the first unit by hand to learn the recipe, write the script that does the rest, then rerun it on that unit and diff against your hand work. That diff is the proof. A hand change can only be re-verified by doing it again; a script turns “trust me” into “run this.”

Encode lessons in structure is about the second time. Catch yourself writing the same instruction twice and stop writing instructions. Ask whether the rule can be a lint, a type that makes the bad state unrepresentable, an assertion, or a test that fails CI. Agents copy the surrounding code, so a weak guard becomes next week’s template. If the fix is structural, only ship the structural fix.

Both are worth a chapter in 2026 because the cost of building the lever collapsed. Anthropic reported in May 2026 that more than 80% of code merged into its own codebase was Claude-authored, and the typical engineer merged eight times as much code per day as in 2024. The old excuse, that the tool takes longer than the task, is dead.

Adoption is the part nobody wants to hear. Only 18% of teams use test-driven development, per the State of TDD 2022 survey, after decades of people on stages telling them to. Knowing a practice is good was never the bottleneck. A lever costs something today and pays out on a day you cannot put on a calendar.


One worked example

commander-in-chief, 23 August 2026. Two hand fixes to that “1,154 methods / 37,418 assertions” badge, two numbers, neither true for longer than a fortnight. That is not maintenance, that is the Hampster Dance: the same loop and noise forever, and everybody who lands on the page assumes somebody meant it.

The split cut the problem in two. Method count can be right: it does not vary by platform, so a test recounts the methods every run and fails if the README disagrees. Assertion count cannot be pinned, so it became floor notation (“37,000+”), a claim that survives contact with Windows. The lesson went into the one place with the authority to say no, not a CONTRIBUTING.md bullet an agent skims past.

7 September 2026, same project, a packed game export inspector. Its first failure was the test rig itself, an untyped array bug. Then the interesting part: I ran the corrected test against an older pack on purpose. It failed there. That second failure was the receipt, because a test that passes on the fixed build and on the broken build is decoration.

The skill that writes the skills, 9 September 2026. The best lever I own is the one I point at the other levers. /refresh-resume runs at the end of a session, and its first step writes nothing: it invokes get-skillz to mine the session for what would help on a different project next month. Then it updates the docs the session touched, writes a per-project handoff to ~/.claude/resumes/<slug>-<timestamp>-<pid>.md so I can /clear without losing state, and, only on days that genuinely turned, a dated post to blog/: 138 across 17 projects, 73 in airank, one of them the log of the morning my ghostwriter shipped nothing.

It can fail out loud, which is the only reason I trust it. The filename suffix is a PID, and $BASHPID does not exist in zsh, so on macOS it expanded to nothing and produced slug-20260805-025040-.md with the collision safety gone. The rule lives in the skill now: read back the path, because a heredoc to a valid-but-wrong filename is not an error.


The quiet failure

The loud failure is doing everything by hand and burning the hours. The quiet one is worse.

You build the lever and it cannot fail.

A skill that only ever succeeds is a mood ring. The ghostwriter that burned 00:56 to 06:12 never errored and never warned, because success and doing nothing emitted the same signal. The fix was not prose about diligence, it was a step at the end that checks disk and dies. Ch. 52 is the long version.

Second quiet failure: the lever encodes the lesson you had, not the one that keeps biting you. The first two README fixes encoded “the number is stale, retype it.” The correct lesson was “the number is unfalsifiable, stop asserting it.” Fifteen assertions of platform drift beat me twice in a row, which is a n00b result for a guy who keeps telling other people to measure first.

Third: you write the lever and leave it in a scratch directory. A script that is not committed did not happen. On 12 August 2026 an airank jury review caught a timestamp bug it had shipped itself two rounds earlier: one value came from an Eloquent datetime cast, the other from a raw SQL alias, so Safari printed “NaN ago” and Chrome computed five hours wrong in silence. The valuable part was the rule written down afterward and made checkable: a value from max(), min(), an alias, or selectRaw is not a model attribute, so casts do not apply. Left in the review thread, round four ships it again.

Fourth, the one I owe you, because a chapter about levers that only shows the good ones is an ad: ~/Projects/ballotnotes. A civic site where a voter drills from country to state to county to city and reads every candidate on their ballot. I did not write a script for that. I built the factory. AI fan-out ingest from the FEC, OpenStates, the Texas Secretary of State, Denton County and a local paper. Every extracted fact cross-checked against Exa. Every change through a human review queue. Octane and Swoole and Horizon on EC2, zero-downtime Deployer releases. 1,444 commits between 23 April and 5 August 2026, and the number that stings is 26: twenty-six distinct days with a commit in them. Call it 150 to 250 hours at six to ten a sitting, an estimate off commit days and nothing better. Also 267 tags, a cadence with more to do with how good it feels to cut a release than with anybody waiting.

It shipped, which is what makes it useful here instead of sad. ballotnotes.com answered 200 when I checked on 9 September 2026, live since 13 May. The lever works. It is pointed at Justin, Texas. One city, populated end to end, and one city is where it stayed. The last commit, 5 August, is fix(test): flush Redis in ImporterHealthPageTest to stop cross-file rate-limit leak. Not a feature. Not a second city. Upkeep on a machine built to eat every ballot in America, doing one town. Twice on that README badge I built a lever smaller than the problem. Here I built one the size of the country and handed it a town.


Do / don’t

Do

Don’t


Where this sits in the book

Ch. 8 built the ladder from PRD down to prompts. This chapter is the last rung, the one that folds back up: every lesson belongs in something executable, or it belongs to whoever remembers it. Ch. 13 is the skill and prompt layer. Ch. 52 is the gate that has to close, which separates a lever from a decoration.


Sources and receipts

Thesis is Jeremy’s, argument not citation. Principles derive from the pstack skill set (principle-build-the-lever, principle-encode-lessons-in-structure) by Lauren Tan (poteto), packaged as pstack@pstack-claude.

Verified:

What I could not verify: