§6 C2PA: unverifiable
1.0 §9 imposes an unconditional MUST — “when a manifest is present it MUST be validated” — over a three-value status vocabulary that has no term for the common outcome: a well-formed manifest whose validation could not be completed. Under 1.0 a Producer facing an unreachable trust list, an expired signer, or an unimplemented claim generator must either report a falsehood or omit provenance.c2pa and forfeit L3 (E28).
provenance.c2pa.statusgains a fourth value,unverifiable: a manifest is present and structurally well-formed, and validation could not be completed.
reasonis REQUIRED whenstatusisunverifiable, and MUST NOT be present otherwise (both halves schema-encoded). It is a machine-readable token, one of:
Token Meaning unsupported_algorithmA signature or hash algorithm in the manifest is not implemented trust_store_unavailableThe trust list or anchor set could not be consulted manifest_malformedThe manifest is present and parseable enough to detect, but its structure defeated validation network_unavailableA required network fetch (OCSP, timestamp, remote manifest) failed credential_unavailableThe signer's certificate or key could not be obtained validator_errorThe validator failed for a reason internal to it or an authority-namespaced escape
<authority>/x-<token>for a case this list does not cover. A Consumer MUST treat an unrecognisedreasonasvalidator_errorfor the purpose of acting, and MUST preserve the value it received.
error_detailis OPTIONAL and non-normative in every status: free human-readable text for an operator. A Consumer MUST NOT branch on it. It was REQUIRED-and-only-for-unverifiablein an earlier revision of this draft, which put a machine obligation on a string written for people;reasonnow carries the machine obligation anderror_detailcarries the explanation.
unverifiableMUST NOT be used in place ofinvalid. A manifest that was validated and failed isinvalid, always. A Consumer MUST NOT treatunverifiableas any degree of positive evidence: it carries exactly the trust of an unsigned assertion, and any assertion sourced from such a manifest carries trust tierunsigned, neverc2pa_verified.The E28 consistency rules stand:
availability.c2pa: "present"andprovenance.c2pa.status ∈ {valid, invalid, unverifiable}are two views of one fact and MUST agree.
