Builder's Manual ยท Chapter 3

Reachability Is the Whole Game

Here is the failure mode that will bite you, and it is not the one you are expecting.

You will not lose content. You will lose the route to it.

A file that nothing names is a file that does not exist. It sits there, perfectly written, fully valid, passing every check โ€” and the GM never opens it, because nothing ever told it to. Fourteen mechanics in this project, hundreds of kilobytes of genuinely good writing, sat unreachable for months. Every automated check reported green the entire time, because "is anything pointing at this" is not a thing a validator asks.

Why it happens

Because writing the thing feels like the work and wiring it feels like admin.

It is the reverse. The wiring is the work. The writing is the easy part and you will do it enthusiastically at 1am; the wiring is the part you skip because you are tired and you will "do it tomorrow". Tomorrow the file is finished, so it looks done.

The four routes in

THE LADDER NAMES IT   pinned, so the name is always present. About ten
                      tokens. The strongest route there is.
A CARD NAMES IT       in its Deep: footer, or inline. Loads when that
                      card loads. The normal route for most content.
A PHASE NAMES IT      the phase file is opened when phaseMode changes,
                      so anything it names rides in with the state.
A TRIGGER FIRES IT    on an event, evaluated every turn against the phase.
                      Tool triggers fire AFTER the write they ride on.

Searchable is not a route. It means findable if the GM goes looking, and the GM does not go looking for things it does not know exist. That is not a limitation of the model; it is what "searchable" means.

The test, and it takes ten seconds

For anything you add, finish this sentence: "The GM will read this when ______."

If you cannot fill the blank with something specific โ€” a named card, a phase, a trigger condition โ€” you have not added a mechanic. You have added a document.

The blank has to name a mechanism, not an occasion. "...when it is relevant" is not an answer. "...when phaseMode is Combat, because Phase โ€” Combat names it" is.

And the other half

Written but never read. A field the GM dutifully fills that no instruction ever consults.

This one is harder to see, because the file looks alive โ€” data is arriving, the writes are happening, nothing is empty. It is still dead. Ask the mirror question of every field you add: what routinely reads this? If nothing does, you have built a very tidy dead end that costs a write on every turn and returns nothing.

Two checks worth running by hand

Name the field across the whole workspace. Before you delete or rename anything, grep the field name everywhere, not just in the file that owns it. Expressions read fields by name and no validator confirms the field still exists โ€” a computed value pointing at a deleted field evaluates to nothing and passes every check in the suite.

Grep for orphans in the other direction. List the files in a folder, then grep each filename across the rest of the project. Anything with no hits outside itself is unreachable. It takes a minute and it finds more real problems than an afternoon of reading.

Reachability is not a quality bar you clear once. It is the thing that quietly degrades every time somebody renames a file.

Manual updated Aug 12, 2026.