A model asked "how does this code work" will answer fluently and will invent call paths. A model asked "is this task done" will say yes. A model asked "which tool should I use" will name one that does not exist. In each case the failure is the same: the model was asked to produce evidence. I build the other way round. Whatever can be computed is computed first, by code that cannot hallucinate, and the model's job is reduced to narrating or acting on what it was handed.
The shape
A deterministic layer produces the facts: a code graph, a work-order state, a tool registry, a room-state projection from a meeting. The model receives those facts in its context and is permitted only to describe, select among, or act on them.
The gap is filled by a fluent guess that reads like the rest.
"Coverage incomplete" is an answer.
Where it appears
In FAFOHive, the memory capability's code explainer stops at the edge of the graph's coverage: A code explainer that is not allowed to invent.
In the Capabilities model, the registry also supplies the schemas: A hundred tokens instead of forty-two thousand.
In AgentOS, an agent's job is rendered from the work graph at dispatch time, so what it knows about the plan and the evidence is computed, not remembered: Why long agent runs fail.
In Helix, the meeting agent never reports a hand it raised from local state: A meeting attendee that will not fake it.
What it buys and what it costs
It buys answers that can be acted on. An engineer who reads a proven call path can change the code; one who reads a plausible one cannot tell the difference until real use does. It buys smaller models, because a model that only narrates needs less capacity than one that must also know.
It costs the deterministic layer: a parser, a graph, a registry, a projector, each of which is real engineering. And it costs refusals where a looser system would have produced something. I prefer the refusal.
The judgment in it
The line to hold is at the fallback. Every product instinct says to let the model answer when the graph cannot, with a caveat.
The caveat is the first thing a reader stops seeing, so I do not build that path.