Verification
Objective reports, published policies, deliberate decisions
Signatif splits verification into three separable decisions — what the evidence is, how it grades, and whether it is good enough — so no party silently bundles them.
Hard and soft checks
The pipeline applies an ordered sequence of checks. Hard failures short-circuit immediately to the rejected label. Soft results do not fail anything — they accumulate as evidence into the coverage report.
Pipeline — abbreviated
for check in pipeline:
if check.hard and not check.pass:
return "rejected"
report = collect(pipeline)
label = classify(report) # scheme policy
decision = accept(label) # verifier policyHard checks — failure rejects
- Format validity
- The artifact parses and the canonical payload reconstructs deterministically.
- Signature validity
- Every signature verifies under its stated algorithm and key.
- Chain integrity
- Each delegation link is properly signed by its parent authority.
- Scope narrowing
- The authorization scope narrows — never widens — at every link.
- Scope conditions
- The predicates attached to the signing scope evaluate true for this artifact.
- Revocation status
- No authority in the chain, and no bound state, is revoked.
Soft checks — coverage accumulates
- Transparency inclusion
- The artifact and its certificates are provably in a recognized log.
- Time anchor
- The time attestation falls within the freshness window.
- Cross-domain co-signatures
- Independent roots co-signed the same canonical payload.
- Multi-log attestation
- Inclusion in M of K independent logs, so no operator controls the record.
Path-finding in the trust graph
For each signature on the artifact, the verifier finds one or more paths through the trust graph to root anchors in its trust anchor bundle — validating signature and scope narrowing at every link. All valid paths are collected, and their distinct roots feed cross-domain diversity scoring: an artifact co-signed through two independent roots is stronger evidence than two signatures through one.
The coverage report
The pipeline’s output is a report of objective facts: hard-check status, transparency inclusion, time-anchor status, verified dimension list and count, independent root count, and multi-log quorum status. It is a deterministic function of the artifact and the verifier’s state — two conforming verifiers with the same state produce identical reports, byte for byte.
Report, label, decision
01 · Coverage report
The evidence
Produced by every conforming verifier, deterministically. No policy enters here — only what was checked and what held.
02 · Classification label
The grade
The scheme’s classification policy maps report fields to labels — a pure function, published in the deployment manifest. The standard does not prescribe labels or thresholds; each scheme defines its own.
03 · Acceptance
The decision
The verifier maps labels to accept or reject for a given decision context. This is the verifier’s risk decision — explicit, configurable, and auditable.
Time freshness
A configurable freshness window governs time attestations. Attestations outside the window are rejected; those within a secondary grace period may be accepted at a downgraded label, as the acceptance policy decides. Freshness parameters live in the verifier’s policy, never in the artifact.
Offline equality
Offline verification yields the same classification label as online verification, except where freshness-dependent checks cannot be satisfied — making border inspections, factory floors, and air-gapped archives first-class environments, not degraded ones.
Try the pipeline
A miniature of the real model. Break a hard check and watch the pipeline short-circuit; weaken soft coverage and watch the label downgrade; then change the acceptance policy and watch the same report produce a different decision.
Hard checks — failure rejects
Soft checks — coverage accumulates
Verifier acceptance policy
Coverage report
- signature_valid
- ✓true
- scope_narrowing
- ✓monotonic
- revocation_status
- ✓clear
- transparency
- ✓included
- time_anchor
- ✓fresh
- independent_roots
- ✓2
- multi_log_quorum
- ✓met
Full dimensional coverage, transparency and multi-root inclusion.
acceptance policy: standard