THE BOOK DRIFTS FROM THE CODE
The system changes.
The sentence stays.
Documentation is a copy of the system, and copies rot. Every count in it was true on the day it was typed.
How do you stop documentation drifting from the code?
Stop writing the parts a machine can derive. Counts, origins, contracts and specimens should be read out of the library at build time, so a page cannot state something the code no longer supports. In HAUSE the manifest is the one index everything derives from, the form pages are projected from the doc comments in the source, and a form the manifest names but the ingest cannot find fails the build rather than rendering an empty page.
01 / HOW YOU MEET IT
A specimen book cannot drift from its library when it is the library.
This site had it. A specimen page read twenty-eight of twenty-eight while the library held thirty-five forms, and all seven performances while there were eight. Both sentences were true the day they were typed, both were quietly false a fortnight later — on a site whose entire argument is that the book cannot drift from the library.
02 / THE RESPONSE, IN YOUR HANDS
Derive the facts the system already knows.
Explore the forms below. This is the response implemented in HAUSE.
THREE COUNTS · THREE SOURCES · ONE BUILD
THE MANIFEST ≡ THE SOURCE FILES ≡ THE THREE MODES
THE MANIFEST
manifest.ts — the library's own index
THE SOURCE FILES
components/forms/*.tsx, read by the ingest
THE THREE MODES
formsByMode, summed
35
35
35
PASS
Forms held, counted three ways at build time.
Nothing on this page counted anything by hand. If the manifest ever names a form the ingest cannot find, src/data/forms.ts throws and the build fails — the disagreement stops at the build rather than reaching the reader as a confident sentence.
THE MANIFEST ≡ THE SOURCE FILES ≡ THE THREE MODES — 1 of 1 row agrees; any disagreement is a distinct, named failure, never a warning.
EVIDENCE
Hand-written counts on this site went stale
A specimen page read 28 of 28 while the library held 35 forms, and all seven performances while there were eight. Both were typed as true. Both were wrong within a fortnight, and nothing failed — which is exactly the argument for deriving them.
Derived facts went stale
The holdings page, the mode counts, the form pages and the sitemap all read from the manifest, and moved the day the library did. The fix for the rows above was not proofreading; it was deleting the numbers and reading them instead.
03 / BENEATH THE SURFACE
Why the failure keeps returning.
Prose is faster to write than a projection, and a number inside a sentence has no owner. Nothing fails when it goes stale: the page still builds, still renders, still reads well. Drift is the only kind of bug that gets more convincing with age, because the sentence around it keeps sounding authoritative long after the number stopped being true.
TAKE THE RESPONSE WITH YOU
Give it a form.
PUBLISHED 31 AUG 2026 · VERSION 1.0
CITEsite build 3ee5339 · built 2026-09-09
CITE THIS
Article · 1.0
Hay, C. (2026). The book drifts from the code. In HAUSE — the problems (Version 1.0). hause.design. https://hause.design/problems/the-book-drifts-from-the-code
An argument is a published object: dated, versioned, and referenceable — which is the subject of one of these pages and the practice of all of them.