Protocol model

Protocol

The protocol defines the objects an issuer produces and the checks anyone can run on them, offline. The evidence bundle stays with the issuer; the registry entry the issuer signs carries no evidence.

  • 5 objects: the evidence bundle, the receipt, the registry entry, the trust registry and the summaries.
  • 4 checks run offline, on the files alone: structure, integrity, link and authorization.
  • 57 reason codes in 11 categories, in catalog version 2.0.0.

Object model

Objects

The registry entry is written for publication, and the trust registry says whose signature on it counts.

Specification index

Object schemas

The schemas define the verification receipt, the registry entry, the trust registry and the summaries derived from the bundle. The evidence bundle itself is defined by field contracts in the specification.

Canonical protocol objects, with the number of fields each schema defines and how many of them are required.
ObjectFieldsRequired
change_summary254
coverage_summary185
lineage_summary172
registry_entry2319
trust_registry1010
verification_receipt2012
verification_summary206

7 canonical objects. Every one is closed: a field the schema does not define is rejected rather than ignored.

Verification lifecycle

Lifecycle

An update runs the same sequence again.

  1. 01

    Private evidence

    Source documents, structured claims and workflow metadata are gathered on the issuer's side, where they stay.

  2. 02

    Policy evaluation

    The issuer's named, versioned policy checks support, coverage, freshness and conflicts. The protocol defines the record, not the policy.

  3. 03

    Receipt

    The result becomes a verification receipt, which records the manifest hash of the bundle it was checked against.

  4. 04

    Registry entry

    The issuer signs a registry entry that commits to the receipt's hash. The entry carries identifiers and hashes, never evidence.

  5. 05

    Offline verification

    A verifier works offline: it checks structure, integrity, the link to the registry entry and the issuer's key authorization.

Verification checks

Verification checks

Structure, integrity, link and authorization run offline, on the files alone. Transparency and anchoring need an operated log and are not implemented.

Reason-code catalog

Reason codes by category

Codes come from a versioned catalog, and a verification summary's status and a registry entry's verdict must each match the most severe code cited. A party that disputes an outcome can name the code it disputes.

57codes across 11 categories, catalog v2.0.0, versioned apart from the specification. The category Anchoring is reserved and holds no code in this version.
  • Integrity12
  • Offline12
  • Authorization11
  • Freshness6
  • Policy5
  • Valuation cross-check4
  • Coverage2
  • Vocabulary2
  • Conflict1
  • Evidence1
  • Materiality1

By severity

  • fail 19
  • review 21
  • warn 12
  • info 5

Reason codes

Reason-code list

Each code with its category, its severity and the headline the catalog gives it. Filter by category or severity, or search by code.

57 codes, catalog v2.0.0

The Integrity reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
BUNDLE_EXTRA_FILESwarnUndeclared files are present, and the issuer's policy treats them as a warning.
INTEGRITY_CHECK_FAILEDfailThe receipt cannot be cited as supporting the declared evidence.
INTEGRITY_OFFLINE_CANONICALIZATION_FAILEDfailThe canonical input cannot be reproduced and the receipt cannot be replayed.
INTEGRITY_OFFLINE_ENVELOPE_LINKS_MISMATCHfailThe envelope no longer corresponds to its inner receipt and evidence.
INTEGRITY_OFFLINE_ENVELOPE_SHA_MISMATCHfailThe receipt's outer envelope has been altered.
INTEGRITY_OFFLINE_EXTRA_FILES_STRICTfailUndeclared files are present in the bundle and the receipt scope cannot be confirmed.
INTEGRITY_OFFLINE_FAILfailThe bundle fails offline verification and must not be relied upon.
INTEGRITY_OFFLINE_INPUT_HASH_MISMATCHfailThe receipt is not paired with the canonical input it was issued against.
INTEGRITY_OFFLINE_MANIFEST_FILE_MISMATCHfailSupporting evidence has been modified after the receipt was issued.
INTEGRITY_OFFLINE_MANIFEST_SHA_MISMATCHfailThe bundle's index of files has been modified after the receipt was issued.
INTEGRITY_OFFLINE_SCHEMA_INVALIDfailA required bundle artifact is structurally invalid.
INTEGRITY_OKinfoBundle integrity is intact and the receipt may be cited.

The Offline reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
COMPLETENESS_OFFLINE_CHECKS_SKIPPEDreviewThe offline verification is incomplete.
COMPLETENESS_OFFLINE_MATERIAL_MISSINGreviewBundle is incomplete for full offline replay.
COMPLETENESS_OFFLINE_MISSING_CANONICAL_INPUTreviewThe bundle's canonical input is missing.
COMPLETENESS_OFFLINE_MISSING_MANIFESTreviewThe bundle's manifest is missing.
OFFLINE_CANONICAL_INPUT_MISSINGreviewOffline verifier cannot find the canonical input.
OFFLINE_INPUT_HASH_NOT_VERIFIEDreviewInput-hash binding could not be confirmed.
OFFLINE_MANIFEST_MISSINGreviewThe bundle has no manifest and cannot be fully verified.
OFFLINE_MATERIAL_MISSINGreviewOffline verification cannot be performed in full.
OFFLINE_REPLAY_FAILEDfailThe receipt cannot be reproduced from the bundle.
OFFLINE_REPLAY_REVIEWreviewIndependent replay finds review conditions on this bundle.
OFFLINE_REPLAY_SKIPPEDreviewIndependent replay was not executed.
OFFLINE_REPLAY_WARNwarnIndependent replay completed with warnings.

The Authorization reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
AUTHORIZATION_ISSUER_KEY_EXPIREDreviewThe evidence is intact, but the signing key's authorization had lapsed by the evaluation date.
AUTHORIZATION_ISSUER_KEY_NOT_YET_EFFECTIVEreviewThe evidence is intact, but the signer held no authority yet at the evaluation date.
AUTHORIZATION_ISSUER_KEY_REVOKEDfailThe evidence is intact, but the key that signed it has been revoked.
AUTHORIZATION_ISSUER_KEY_SUSPENDEDfailThe evidence is intact, but the signing key is currently on hold.
AUTHORIZATION_ISSUER_NOT_RECOGNISEDfailThe evidence is intact, but the signer is not listed in the trust material.
AUTHORIZATION_SCOPE_MISMATCHfailThe evidence is intact and the signer is authorized by the supplied trust registry, but not for this kind of asset.
AUTHORIZATION_SIGNATURE_NOT_VERIFIEDfailThe bundle is consistent, but the registry entry's signature does not verify.
AUTHORIZATION_SIGNING_METHOD_UNSUPPORTEDfailThe evidence is intact, but it was signed by a method outside the accepted profile.
AUTHORIZATION_TRUST_MATERIAL_OUTSIDE_VALIDITY_WINDOWreviewThe evidence is intact, but the trust material used to check it does not cover this date.
AUTHORIZATION_TRUST_REGISTRY_AMBIGUOUS_KEYfailThe evidence is intact, but the trust material contradicts itself about this key.
AUTHORIZATION_VERIFIEDinfoThe issuer's authority verified against the supplied trust material.

The Freshness reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
FRESHNESS_OKinfoEvidence is current relative to the snapshot effective date.
FRESHNESS_P1_TIMESTAMP_OOWwarnThe receipt's issuance timestamp does not match the period it attests to.
FRESHNESS_WARNINGwarnEvidence is current but approaching staleness.
MARK_ASOF_UNPARSEABLEwarnEvidence date cannot be parsed and freshness cannot be evaluated.
MARK_STALEwarnEvidence is stale and the receipt's evidentiary basis is weakened.
P1_TIMESTAMP_OUT_OF_WINDOWwarnReceipt timestamp falls outside the acceptable issuance window.

The Policy reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
METHOD_BINDING_MISSINGreviewThe valuation method is not bound to specific evidence.
MISSING_MARK_FIELDSreviewThe valuation mark is incomplete.
MISSING_REQUIRED_INPUTSreviewThe bundle is missing inputs the policy requires.
NEEDS_REVIEWreviewThe policy requires human review before this bundle can be relied upon.
POLICY_BUNDLE_EXTRA_FILESwarnBundle contains files the policy does not enumerate.

The Valuation cross-check reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
MARK_FAR_OUTSIDE_RANGEreviewThe declared valuation is materially outside the expected range.
MARK_NEAR_BOUNDARYwarnThe declared valuation is inside but near the edge of the expected range.
MARK_OFFSET_FROM_MIDPOINTwarnThe declared valuation sits clearly above or below the midpoint of the expected range.
MARK_OUTSIDE_RANGEwarnThe declared valuation is outside the expected range, within a soft band.

The Coverage reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
REQUIRED_CLAIMS_PRESENTinfoThe bundle covers every claim the policy requires.
UNSUPPORTED_KEY_CLAIMreviewA required claim is asserted by the issuer without document evidence.

The Vocabulary reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
VOCABULARY_VALUE_INVALIDfailThe record carries a malformed category value and breaks the protocol contract.
VOCABULARY_VALUE_UNKNOWNreviewThe record names an asset type, workflow or method the reader does not recognize.

The Conflict reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
CONFLICTING_EVIDENCE_DETECTEDreviewThe bundle contains internally contradictory evidence.

The Evidence reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
REQUIRED_EVIDENCE_PRESENTinfoRequired source documents are present and bound to their claims.

The Materiality reason codes of catalog v2.0.0, each with its severity and its headline.
CodeSeverityHeadline
MATERIAL_CHANGE_DETECTEDwarnA material change in claim values is recorded.

Structure

Layers and status

Each layer uses only the layers below it. Only the core exists today: the specification, the schemas, the conformance corpus and two verifiers. The other three layers are planned.

The four layers, what each contains, who uses it and its release label.
LayerWhat it containsWho uses itStatus
CoreThe protocol: the specification, the JSON Schemas, the reason-code catalog and the conformance corpus. Two verifiers, one in Python and one in TypeScript, written by the same maintainer and compared case by case over the corpus. The trust registry, the signed list of issuer keys and what each key may sign for. Later, an evidence transparency log.Anyone who has to verify a record.Preview (Alpha)

Protocol, schemas, corpus and both verifiers are published. Transparency log: planned.

ProfilesOne public, versioned profile per asset type. A profile holds the evidence model (the claims an issuer makes, the documents that support each claim, when a document is out of date, when two sources conflict, what counts as a material change) and the policy pack that applies it. Profiles for property valuations and fund NAVs.Whoever produces receipts, and whoever verifies them: a verifier has to be able to read the policy that produced a receipt.Planned

Today the asset types and workflows are registered in versioned files in loquitur-protocol, and each issuer writes its own policy.

ToolsInstalled and run by the party that holds the evidence. The producer applies a profile's policy pack to the evidence and writes the verification receipt, with its coverage, change and lineage summaries. Signing stays in the issuer's own HSM or KMS; the producer does not hold the key. The producer is designed so that no machine learning sits between the evidence and the receipt. The toolkit: a client for the transparency log and a publisher, with each anchoring network as an option. The dossier archive: a format to export and import a set of bundles and receipts, so they can be kept and handed over as one unit.Issuers, fund administrators, valuers, servicers, and banks that check what they receive.Planned

Designed, not built. The producer is the first planned step.

ApplicationsSeparate and optional. A console to open a dossier and read its results. Monitoring of a listing: whether updates arrive on time, and what changes between them. A hosted service.Trading venues, banks, operations teams.Planned

Nothing in the layers below depends on them.

The code, the schemas and the data are offered under MIT OR Apache-2.0, at your choice, and the text of the specification under CC BY 4.0. The license files in each repository are the binding text.

The planned checks on the evidence run across the layers: written in the protocol, checked by the verifiers, produced by the producer. There are two verifiers so that a disagreement between them exposes a defect in the specification or in one of them. Both were written by the same maintainer, so their agreement shows that the specification can be implemented twice consistently; it is not independent review. One reference producer is planned, in Python; a second would not add that cross-check.

What exists is the core without its log: the specification, the schemas, the conformance corpus and the two verifiers, published as an Alpha preview. There is no producer, no hosted service, no transparency log and no anchoring. The order of the planned work is on the status page, under what comes next.

Boundaries

What Loquitur does not do.

  • It forms no opinion on value and does not say whether a NAV or a valuation is correct.
  • It does not replace the valuer, the administrator or the auditor, or their professional judgment.
  • A PASS means the evidence matches what the issuer's signed registry entry commits to. It does not mean the inputs were true.
  • It does not check facts outside the bundle, and it cannot detect false data the issuer signed.
  • It relies on the keys the trust registry authorizes and cannot detect a compromised issuer key or trust root.