Unknown is not absent
Every channel that tells the model what exists keeps three states apart: measured present, measured absent, and never measured. A failed check counts as absence only if it could have found the thing.
Models read silence as “no”. A relationship nobody measured, a probe that timed out, a list cut at 20 items, an API that didn’t load: each turns into “your account doesn’t have shipping data”, stated with confidence and wrong.
So unknown is its own state, everywhere.
// evidence: a timeout is weak absence only for an existence scan, scaled by how far it got
function timeoutEvidence(o: Observation, kind: Kind): number {
if (MEASURED_KINDS.has(kind.name)) return 0; // a heavy value/field probe failing says "too heavy", not "absent"
const exhaustiveness = clamp(o.elapsedMs / o.ceilingMs, 0.25, 1); // ran to the ceiling: scanned nearly all of it
return exhaustiveness * decayWeight(o);
}
// a query error is neutral: it says nothing about the data
storage: value:Order.status="held" present
absent:Order.status="lost" measured absent (its own record; generation never reads it)
(no record) unknown
model text:
Measured absent: Carrier, Warehouse.
Never measured: Return, Coupon. Unmeasured is unknown, not absent.
(+14 more types not listed here; none of them is absent.)
Not loaded here: teams, alert rules. Don't say the account lacks them; look, or say you can't tell.
Rules
nullmeans unknown, in every payload. Never “none”, never false.- Absence is a fact kind, not the lack of a fact. Present and absent records for the same thing replace each other.
- Only existence scans read timeouts. And only in proportion to how much of the data they covered before stopping.
- Truncated lists say so. “and 14 more”, with the reminder that what isn’t listed isn’t missing.
- Totals beat zeros. “0 failed” isn’t “healthy” unless you also know how many there are. Payloads carry the total, and the model is told not to infer health from a missing failure.
What it gives up
Answers hedge more. “I can’t tell from what’s loaded” is less satisfying than a confident no. It’s also less often wrong.
Why it works
The model’s worst error, confidently denying something that’s there, needs an unknown to be mistaken for an absence. Keeping the three states apart at every layer removes the place where that mistake happens.
How this fits the larger system: What the assistant knows.