Mostly Done.


or,
A Brief Treatise on the Several Conditions under which
Software may be Declared Finished;
or,
Why the Agent, the Test Suite, the Pull Request, the Release Workflow, and the Actual Application are Rarely Speaking of the Same Thing

Green cloth cover of Mostly Done., gold-stamped, showing a scaffolded tower
Read the Book one chapter to a page, as is proper

Table of Editions

Chapter edition the book as a small website, one chapter per page
Print edition 6 by 9 inches, typeset by LuaLaTeX, suitable for paper
Circulating edition EPUB, cover included, for readers of every size
Single-leaf edition the whole book in one self-contained HTML file
Manuscript edition plain Markdown, agreeable to machines and their agents
Telegraphic edition plain text at eighty columns, for terminals
Office edition DOCX, for reviewers armed with tracked changes

How This Book Was Built

Wood engraving of a ship christening; the stern is unfinished

The book practices its own advice. The source is plain Markdown in a public build system; every edition above is compiled from the same files by Pandoc and LuaLaTeX, in one command, on every push. No format is edited by hand, and nothing is stated in two places.

Each build must survive a gauntlet before it may call itself a book: structural checks on the source, an editorial audit for synthetic prose and forbidden punctuation, a jargon linter with a maintained watchlist, and a rendered-page inspection that verifies trim size, embedded fonts, expected text, and that every page contains ink. Releases are cut by tag; the artifacts you see here were attached by the same continuous integration that refused earlier, worse versions.

It was written and typeset by its author in collaboration with LLM coding agents, which is the subject of the book, and revised through the adversarial review it recommends. The claims inside were checked against real project artifacts before printing, and where checking shrank a claim, the smaller claim is what got printed. Versions and their contents are recorded in the changelog; finished releases live on the releases page.