A structure that is hard to state cleanly is telling you something about the model, not about your prose.
A record maintains two structures, and both are derived from the same decisions about what counts as a thing. The tree — names, placement, neighbours — and the graph — the typed edges between documents. Neither is merely output. Both are instruments, and both report the same class of fault: a distinction that the model has stopped expressing has to live somewhere, and where it goes is prose, or a comment, or nobody’s notes at all.
The tell is friction while writing something else. Not a review finding, not a lint failure — the small awkwardness of having to explain, in a sentence, something the structure should have carried.
In the tree
Two files with the same shape and opposite rules — one README.md you must
edit and one you must not. A marked container beside an unmarked sibling doing
the same job. An authored .stub filed among the generated pages it feeds.
Each is a rule that has moved out of the layout and into somebody’s memory,
and each announces itself as mild untidiness rather than as a defect.
In the graph
A typed edge is a claim, and it can be awkward in the same way. The instance
that promoted this: a boundary declared overrides against a practice, and its
body then had to say which sentence of that practice it argued with — because
the target carried two claims under one code. The edge was correct and the
prose beside it was doing work the graph could not. Splitting the target let
the edge name what it actually beat, and immediately exposed a second edge that
did not hold at all (DP-012 has the worked case).
The same reading applies to an edge nobody can state without a condition, to a required reference that had to be filled with the nearest available document, and to a relation that needs three sentences of context to be intelligible.
What to do with the reading
Read it before absorbing it. The instinct is to write the clarifying sentence and move on; the sentence is cheap and the model stays wrong. Ask instead which boundary the awkwardness is straddling — the answer is usually a distinction that was real and is no longer represented.
Then fix the model, not the prose. Split the document, retype the field, move the file, add the vocabulary. The clarifying sentence is what you write when you have decided the distinction is not worth representing — which is a legitimate answer, and a different one from not having noticed.
Do not add a qualifier to the relation. That is the failure mode specific
to the graph half: a condition beside a checked reference is prose in a data
field, so nothing evaluates it and nothing notices when it stops holding, while
the edge keeps looking checked. It is escalating emphasis one rung up — which
is why #141 puts when expressions among its non-goals and refuses
precedence between configuration surfaces.
The corollary
This only works if the structures are load-bearing. A tree nobody navigates and a graph nobody reads generate no friction, so they report nothing — the instrument has to be used to be an instrument. That is the practical argument for typed edges over a general “mentions” relation (ADR-071, ADR-060), and for a layout the lint holds (ADR-021): the checking is what makes the awkwardness surface at authoring time instead of at the reader’s expense, a year later.