diagnosis: a named
code, the cause in one sentence, the fix in one sentence, and the evidence the probe matched on.
The fields
string
required
A stable identifier. Branch on this — it will not be reworded. One of the thirteen in the
catalogue.
string
required
One sentence saying what is actually true right now, with the real names and values in it. Render
it; do not match on it.
string
required
One sentence saying what to change. For the cases where nothing needs changing —
negative_cache
— it says so and gives the wait.object
required
The evidence the probe matched on, and its shape depends on
code. record_at_apex carries
{ name, value }; servfail carries { resolvers }; negative_cache carries
{ secondsRemaining }.Where it comes from
The probes run over an observation that has already been collected — recursive resolvers first, then the authoritative nameservers if the answer was negative. No probe issues a query of its own, which is why a verification can carry a diagnosis without any extra DNS traffic when you read it back. See DNS Verification for the three questions a check asks.Rendering one
A verification that has not proved always carries exactly one ofdiagnosis or waitEstimate, and
they mean opposite things. That makes the whole “what now” message two fields:
diagnosis means something has to change. waitEstimate means nothing does, and its reason
says what is being waited on:
cause and fix are product copy and are improved regularly. They are safe to render verbatim
and unsafe to match on. If you need to key behaviour off a case, key it off code.