One capability’s answer, with unknown kept distinct from no.
The ModelContext::catalog_resolved discipline, applied to a self-report:
an observation that failed to arrive must not masquerade as one that
arrived negative (ADR 0007 decision 3 — unknown never gates).
Deserialize as well as Serialize, unlike the rest of this module: this
one crosses the HTTP boundary in both directions, because ModelDetailDto
carries it and the CLI reads that DTO back out of --json.
Default is Self::Unknown, which is the only safe default there is —
a client omitting the field must never be read as a positive “no”.