Skip to content

14. Independent Verification ​

Status: draft, matches packages/verifier.

14.1 Purpose ​

A third party MUST be able to check an exported evidence bundle without trusting the service that produced it, and without access to its database.

14.2 Inputs ​

A bundle containing entries (canonical evidence lines, in order), optionally expectedHead, requests, decisions, authorities and approvals; and the operator's trust roots. The bundle format is dip-evidence-bundle, version 1.

14.3 Checks ​

CheckFailure means
CANONICALAn entry is not in canonical form
SCHEMAAn entry does not match the evidence schema
PROTOCOL_VERSIONNot 1.0
SEQUENCE, CHAINPosition or link is wrong
DUPLICATE_IDAn evidence identifier repeats
SIGNATURESignature does not verify, or the key is revoked
INVARIANTA section 10.3 rule is violated
REQUESTThe request body does not match its digest or the evidence
DECISIONThe decision is not authentic or does not match the evidence
AUTHORITYThe authority is not authentic or does not match the policy reference
APPROVALThe approval is not bound, not from a named approver, or was not APPROVED at decision time
EXECUTION_ORDERExecution is recorded before the decision
HEADThe head does not match expectedHead

14.4 Verdicts ​

VerdictWhen
INVALIDAny check failed
UNVERIFIABLENo failure, but a signing key is not among the trust roots
INCOMPLETENo failure and nothing unverifiable, but a needed record is absent, the bundle is empty, or no head was supplied
VALIDEvery check passed

Precedence: INVALID over UNVERIFIABLE over INCOMPLETE over VALID.

14.5 Scope ​

The verifier confirms that the recorded decision is authentic and bound to the request. It does not re-run the policy.

14.6 Exit codes ​

dip verify exits 0 for VALID, 1 for INVALID, 2 for INCOMPLETE or UNVERIFIABLE, and 3 for input errors.

Released under the Apache License 2.0.