HAUSE

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 MODES1 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.

SUPPORTED

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.

REFUTED

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.

Agreement

N independently-derived values that must be identical — with a FAIL row.

Evidence

Rows of labelled findings with status marks — receipts, not decoration.

Claim

An assertion that knows it must answer to evidence.

Derivation

A value folded down a graded scale by caps — derived, never asserted.

PUBLISHED 31 AUG 2026 · VERSION 1.0

CITE

site 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.