Skip to content
Preview (Alpha), release 0.1. No independent cryptographic review of the protocol or its reference verifiers has been done.

Verification summary schema

The field contract of the verification summary object, read from verification_summary.schema.json. The schema file is the normative artifact; this page is a reading of it. Raw schema file at the release tag.

Property of the schema Value
Schema identity ($id) https://schemas.loquitur.dev/v1/verification_summary.schema.json
JSON Schema dialect https://json-schema.org/draft/2020-12/schema
Root type object
Additional properties at the root refused
Required at the root object_type, schema_version, bundle_id, status, reason_codes, reason_code_vocabulary_version

Fields

Field paths are dotted; [] marks the members of an array item. “Required” is stated against the object that holds the field.

Field Type Required Constraints Description
object_type string yes const "verification_summary"
schema_version string yes enum: v2
bundle_id string yes minLength 1
asset_id string or null no
asset_type string or null no pattern ^[a-z0-9][a-z0-9_]{0,63}$ An asset type: an identifier, a value of the registered vocabulary asset_type (verification-vocabularies.md section 5), or null.
status string yes enum: pass, warning, review, fail
reason_codes array of string yes minItems 1; uniqueItems; items: enum: AUTHORIZATION_ISSUER_KEY_EXPIRED, AUTHORIZATION_ISSUER_KEY_NOT_YET_EFFECTIVE, AUTHORIZATION_ISSUER_KEY_REVOKED, AUTHORIZATION_ISSUER_KEY_SUSPENDED, AUTHORIZATION_ISSUER_NOT_RECOGNISED, AUTHORIZATION_SCOPE_MISMATCH, AUTHORIZATION_SIGNATURE_NOT_VERIFIED, AUTHORIZATION_SIGNING_METHOD_UNSUPPORTED, AUTHORIZATION_TRUST_MATERIAL_OUTSIDE_VALIDITY_WINDOW, AUTHORIZATION_TRUST_REGISTRY_AMBIGUOUS_KEY, AUTHORIZATION_VERIFIED, BUNDLE_EXTRA_FILES, COMPLETENESS_OFFLINE_CHECKS_SKIPPED, COMPLETENESS_OFFLINE_MATERIAL_MISSING, COMPLETENESS_OFFLINE_MISSING_CANONICAL_INPUT, COMPLETENESS_OFFLINE_MISSING_MANIFEST, CONFLICTING_EVIDENCE_DETECTED, FRESHNESS_OK, FRESHNESS_P1_TIMESTAMP_OOW, FRESHNESS_WARNING, INTEGRITY_CHECK_FAILED, INTEGRITY_OFFLINE_CANONICALIZATION_FAILED, INTEGRITY_OFFLINE_ENVELOPE_LINKS_MISMATCH, INTEGRITY_OFFLINE_ENVELOPE_SHA_MISMATCH, INTEGRITY_OFFLINE_EXTRA_FILES_STRICT, INTEGRITY_OFFLINE_FAIL, INTEGRITY_OFFLINE_INPUT_HASH_MISMATCH, INTEGRITY_OFFLINE_MANIFEST_FILE_MISMATCH, INTEGRITY_OFFLINE_MANIFEST_SHA_MISMATCH, INTEGRITY_OFFLINE_SCHEMA_INVALID, INTEGRITY_OK, MARK_ASOF_UNPARSEABLE, MARK_FAR_OUTSIDE_RANGE, MARK_NEAR_BOUNDARY, MARK_OFFSET_FROM_MIDPOINT, MARK_OUTSIDE_RANGE, MARK_STALE, MATERIAL_CHANGE_DETECTED, METHOD_BINDING_MISSING, MISSING_MARK_FIELDS, MISSING_REQUIRED_INPUTS, NEEDS_REVIEW, OFFLINE_CANONICAL_INPUT_MISSING, OFFLINE_INPUT_HASH_NOT_VERIFIED, OFFLINE_MANIFEST_MISSING, OFFLINE_MATERIAL_MISSING, OFFLINE_REPLAY_FAILED, OFFLINE_REPLAY_REVIEW, OFFLINE_REPLAY_SKIPPED, OFFLINE_REPLAY_WARN, P1_TIMESTAMP_OUT_OF_WINDOW, POLICY_BUNDLE_EXTRA_FILES, REQUIRED_CLAIMS_PRESENT, REQUIRED_EVIDENCE_PRESENT, UNSUPPORTED_KEY_CLAIM, VOCABULARY_VALUE_INVALID, VOCABULARY_VALUE_UNKNOWN
reason_context array or null no items: no additional properties LCP-0008: the facts that make an actionable code actionable. A bare code says a key expired; it does not say which key or when. Every field but code is optional on purpose, because a producer able to name only the code must still be able to report at all. code is typed as a plain string here rather than carrying a second copy of the enum above: the vocabulary is checked against the reason-code catalog by loquitur.schemas.verdict_grounds, and a second hand-maintained copy of a vocabulary is the shape that produced the signing-prefix drift corrected in LCP-0006.
warnings array of string no
policy_id string or null no
policy_version integer or null no minimum 1
policy_pack_sha256 string or null no pattern ^sha256:[a-f0-9]{64}$
policy_checks object or null no
policy_checks.evaluation_clock_iso string no pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?(Z|[+-]([01][0-9]|2[0-3]):[0-5][0-9])$ RFC 3339 instant, and the one place in this package where a numeric offset is accepted alongside Z: this is a trace of the clock a policy was evaluated against, reported by the evaluator, not a value any commitment is computed over. The signed surfaces, registry_entry and trust_registry, stay Z-only. A pattern of the form …T.*(Z|…) would accept 2026-13-45Tnot a time at allZ, so each part of the instant is bounded.
policy_surface object or null no
freshness_posture object or null no
required_claims_status object or null no
supported_vs_declared_summary object or null no
key_checks array or object or null no
key_metrics array of object no
reason_code_vocabulary_version string yes const "loquitur.reason_codes.v1"

Example

The schema carries one example instance under its root keyword example, an annotation that decides nothing about any instance. Read it in the raw schema file.

Project site: loquitur.dev

Source: loquitur-protocol/docs/specification/schemas/verification_summary.schema.json at 3ff7899c0c76. Licence of this page's text: MIT OR Apache-2.0.