aere-quantum/conformance/REGULI.json

1083 lines
29 KiB
JSON

{
"v": 1,
"kind": "aere-conformance-rules",
"levels": [
"integrity",
"authenticity",
"anchoring",
"finality"
],
"verifiers": {
"aip23-envelope": {
"artifacts": [
"envelope"
],
"rules": [
{
"id": "envelope.form",
"source": "form",
"level": "integrity",
"sites": 1,
"says": "the envelope has a statement (object) and a statementHash (0x + 64 hex)"
},
{
"id": "envelope.integrity",
"source": "integrity",
"level": "integrity",
"sites": 1,
"says": "sha256 of the canonical statement text is the statementHash"
},
{
"id": "envelope.signature",
"source": "signature",
"level": "authenticity",
"sites": 5,
"says": "the ML-DSA signature the envelope carries verifies over the canonical statement text"
},
{
"id": "envelope.finality",
"source": "finality",
"level": "anchoring",
"sites": 6,
"says": "the statementHash is recorded in the notary under a state root that a verified post-quantum anchor certificate covers (level by site: see finalitySites)"
}
],
"finalitySites": [
{
"site": "most recent anchor did not verify",
"level": "finality",
"reachableWithAnHonestEndpoint": false
},
{
"site": "the header the endpoint served for block",
"level": "anchoring",
"reachableWithAnHonestEndpoint": false
},
{
"site": "has no account at",
"level": "anchoring",
"reachableWithAnHonestEndpoint": false
},
{
"site": "is not the AereNotary contract",
"level": "anchoring",
"reachableWithAnHonestEndpoint": false
},
{
"site": "the Merkle proof for block",
"level": "anchoring",
"reachableWithAnHonestEndpoint": false
},
{
"site": "not notarized:",
"level": "anchoring",
"reachableWithAnHonestEndpoint": true
}
]
},
"payment-risk": {
"artifacts": [
"payment-risk"
],
"rules": [
{
"id": "risk.form",
"source": "forma",
"level": "integrity",
"sites": 4,
"says": "payer and payee are addresses; chain, asset, a positive integer amount and the time are given"
},
{
"id": "risk.asset",
"source": "activ",
"level": "integrity",
"sites": 1,
"says": "the asset on that chain is allowed by the declared policy"
},
{
"id": "risk.counterparty",
"source": "contrapartida",
"level": "integrity",
"sites": 1,
"says": "the payee is not the payer and is not a refused counterparty of the policy"
},
{
"id": "risk.rate",
"source": "curs",
"level": "integrity",
"sites": 1,
"says": "the USD rate is declared (value, source, time) when the policy requires it"
},
{
"id": "risk.limit",
"source": "limita",
"level": "integrity",
"sites": 1,
"says": "the amount in USD is within the per-payment limit of the policy"
},
{
"id": "risk.window",
"source": "fereastra",
"level": "integrity",
"sites": 1,
"says": "the amount and the count stay within the sliding window of the policy"
}
],
"marked": "by a marker on every check"
},
"payment-receipt": {
"artifacts": [
"payment-receipt"
],
"rules": [
{
"id": "receipt.binding",
"source": "legatura",
"level": "integrity",
"sites": 2,
"says": "the settlement envelope commits to this instruction and says the same thing"
},
{
"id": "receipt.amount",
"source": "suma",
"level": "integrity",
"sites": 1,
"says": "the USD amount is the amount at the declared rate, exactly"
},
{
"id": "receipt.policy",
"source": "politica",
"level": "integrity",
"sites": 1,
"says": "the policy shown hashes to the policy the risk verdict names"
},
{
"id": "receipt.risk",
"source": "risc",
"level": "integrity",
"sites": 3,
"says": "the risk verdict reproduces from the inputs and the policy, and it allowed this payment"
},
{
"id": "receipt.chain",
"source": "lant",
"level": "integrity",
"sites": 1,
"says": "the transaction supplied is this payment: payer, payee, value, block, mined"
}
],
"marked": "by a marker on every check"
},
"market-timeline": {
"artifacts": [
"market-timeline"
],
"rules": [
{
"id": "market.form",
"source": "forma",
"level": "integrity",
"sites": 1,
"says": "the timeline is well formed: events with name, arguments, sender, integer time and block; the job and the constants with their integer fields"
},
{
"id": "market.complete",
"source": "intreg",
"level": "integrity",
"sites": 1,
"says": "the timeline carries every event the job state implies: posted; claimed when a provider is set; submitted and disputed when their times are set"
},
{
"id": "market.posting",
"source": "postare",
"level": "integrity",
"sites": 1,
"says": "the JobPosted event matches the job (requester, spec, deadline, reward)"
},
{
"id": "market.deadline",
"source": "termen",
"level": "integrity",
"sites": 3,
"says": "claim and submission are within the deadline; an expiry refund only after it"
},
{
"id": "market.window",
"source": "fereastra",
"level": "integrity",
"sites": 2,
"says": "a dispute is raised inside the challenge window; a third party finalizes only after it"
},
{
"id": "market.arbiter",
"source": "arbitru",
"level": "integrity",
"sites": 3,
"says": "a dispute is resolved by the arbiter, or timed out only after the arbitration timeout"
},
{
"id": "market.payout",
"source": "plata",
"level": "integrity",
"sites": 4,
"says": "the terminal payout matches the final state (who, how much, which bond)"
},
{
"id": "market.result",
"source": "rezultat",
"level": "integrity",
"sites": 1,
"says": "the result bytes hash to the commitment on chain"
},
{
"id": "market.replay",
"source": "replay",
"level": "integrity",
"sites": 3,
"says": "the public task recomputed agrees with who was paid or slashed"
},
{
"id": "market.proof",
"source": "dovada",
"level": "integrity",
"sites": 5,
"says": "the execution envelope names this job and existed before the window closed"
}
],
"marked": "by a marker on every check"
},
"dataset": {
"artifacts": [
"dataset-record",
"dataset-answer",
"dataset-consistency",
"dataset-sample"
],
"rules": [
{
"id": "dataset.form",
"source": "forma",
"level": "integrity",
"sites": 1,
"says": "a row carries its field commitments and its disclosed fields"
},
{
"id": "dataset.commitment",
"source": "angajament",
"level": "integrity",
"sites": 4,
"says": "the record, answer or proof names the commitment it is checked against"
},
{
"id": "dataset.field",
"source": "camp",
"level": "integrity",
"sites": 2,
"says": "a disclosed value opens its salted field commitment"
},
{
"id": "dataset.inclusion",
"source": "includere",
"level": "integrity",
"sites": 1,
"says": "the record is in the log of that version (RFC 9162 inclusion)"
},
{
"id": "dataset.index",
"source": "index",
"level": "integrity",
"sites": 2,
"says": "the row is at its stated position of the sorted index"
},
{
"id": "dataset.range",
"source": "interval",
"level": "integrity",
"sites": 2,
"says": "every row returned is inside the queried range"
},
{
"id": "dataset.order",
"source": "ordine",
"level": "integrity",
"sites": 1,
"says": "consecutive rows are in index order"
},
{
"id": "dataset.completeness",
"source": "completitudine",
"level": "integrity",
"sites": 5,
"says": "the rows are the whole contiguous run; the neighbours on both sides are outside the range"
},
{
"id": "dataset.consistency",
"source": "consistenta",
"level": "integrity",
"sites": 3,
"says": "the older log is a prefix of the newer (RFC 9162 consistency) and the versions are linked"
},
{
"id": "dataset.sample",
"source": "esantion",
"level": "integrity",
"sites": 1,
"says": "every sampled position is served and verifies"
}
],
"marked": "by a marker on every check"
},
"ai-trust": {
"artifacts": [
"ai-trust-bundle"
],
"rules": [
{
"id": "aitrust.form",
"source": "form",
"level": "integrity",
"sites": 1,
"says": "the bundle has the format, an identity, a ledger with its policy, and a Proof of AI envelope"
},
{
"id": "aitrust.identity-mismatch",
"source": "identity-mismatch",
"level": "authenticity",
"sites": 1,
"says": "the id derived from the key is the one the bundle, the ledger and the output name"
},
{
"id": "aitrust.identity-key",
"source": "identity-key",
"level": "authenticity",
"sites": 1,
"says": "the public key of the identity can be read"
},
{
"id": "aitrust.version-attestation",
"source": "version-attestation",
"level": "integrity",
"sites": 1,
"says": "the Proof of Software attestation of the model artifact verifies as an envelope"
},
{
"id": "aitrust.version-artifact-mismatch",
"source": "version-artifact-mismatch",
"level": "integrity",
"sites": 1,
"says": "the output names model weights that the attestation covers"
},
{
"id": "aitrust.version-label-mismatch",
"source": "version-label-mismatch",
"level": "integrity",
"sites": 1,
"says": "the output and the attestation name the same model version"
},
{
"id": "aitrust.runtime-record",
"source": "runtime-record",
"level": "integrity",
"sites": 1,
"says": "the runtime record is a verified runtime attestation"
},
{
"id": "aitrust.runtime-artifact-mismatch",
"source": "runtime-artifact-mismatch",
"level": "integrity",
"sites": 1,
"says": "the host ran the artifact the output names"
},
{
"id": "aitrust.runtime-after-output",
"source": "runtime-after-output",
"level": "integrity",
"sites": 1,
"says": "the runtime record is not dated after the output"
},
{
"id": "aitrust.audit-log-broken",
"source": "audit-log-broken",
"level": "integrity",
"sites": 1,
"says": "the hash chain of the audit log given is intact"
},
{
"id": "aitrust.runtime-not-in-audit-log",
"source": "runtime-not-in-audit-log",
"level": "integrity",
"sites": 1,
"says": "the runtime record is an entry of the audit log given"
},
{
"id": "aitrust.audit-head",
"source": "audit-head",
"level": "integrity",
"sites": 1,
"says": "the audit log continues the attested head given"
},
{
"id": "aitrust.witness-head",
"source": "witness-head",
"level": "anchoring",
"sites": 1,
"says": "every notarized head given is a head of this ledger, recorded on the chain"
},
{
"id": "aitrust.policy-hash",
"source": "policy-hash",
"level": "integrity",
"sites": 1,
"says": "the policy given hashes to the policy hash the bundle pins"
},
{
"id": "aitrust.ledger-invalid",
"source": "ledger-invalid",
"level": "integrity",
"sites": 1,
"says": "the ledger verifies under its policy (signatures, chain, every decision re-derived)"
},
{
"id": "aitrust.output-not-in-ledger",
"source": "output-not-in-ledger",
"level": "integrity",
"sites": 1,
"says": "a ledger entry links this Proof of AI envelope"
},
{
"id": "aitrust.action-refused",
"source": "action-refused",
"level": "integrity",
"sites": 1,
"says": "the ledger entry of the output was allowed by the policy"
},
{
"id": "aitrust.ledger-time-mismatch",
"source": "ledger-time-mismatch",
"level": "integrity",
"sites": 1,
"says": "the ledger entry and the output are dated within the tolerance"
},
{
"id": "aitrust.policy",
"source": "policy",
"level": "integrity",
"sites": 1,
"says": "the policy given is a policy"
},
{
"id": "aitrust.provenance-envelope",
"source": "provenance-envelope",
"level": "integrity",
"sites": 1,
"says": "the Proof of AI envelope verifies as an envelope of its kind"
},
{
"id": "aitrust.provenance-finality",
"source": "provenance-finality",
"level": "anchoring",
"sites": 1,
"says": "a notarization the Proof of AI envelope claims is on the chain"
}
],
"marked": "at the refusal helper"
},
"audit-log": {
"artifacts": [
"audit-log"
],
"rules": [
{
"id": "auditlog.entry",
"source": "intrare",
"level": "integrity",
"sites": 2,
"says": "the log is a list, and each entry is a log entry"
},
{
"id": "auditlog.seq",
"source": "seq",
"level": "integrity",
"sites": 1,
"says": "the entries are numbered from zero, without a gap"
},
{
"id": "auditlog.chain",
"source": "lant",
"level": "integrity",
"sites": 1,
"says": "each entry links the hash of the one before it"
},
{
"id": "auditlog.hash",
"source": "hash",
"level": "integrity",
"sites": 1,
"says": "the hash of each entry is the hash of its content"
},
{
"id": "auditlog.head-form",
"source": "cap-forma",
"level": "integrity",
"sites": 2,
"says": "the attested head is an audit head attestation with a count and a head hash"
},
{
"id": "auditlog.head-hash",
"source": "cap-hash",
"level": "integrity",
"sites": 1,
"says": "the statementHash of the attested head is the hash of its statement"
},
{
"id": "auditlog.head-unsigned",
"source": "cap-nesemnat",
"level": "authenticity",
"sites": 1,
"says": "the head is signed when a signer is required"
},
{
"id": "auditlog.head-scheme",
"source": "cap-schema",
"level": "authenticity",
"sites": 2,
"says": "the head signature is an ml-dsa-65 signature, made with an ML-DSA-65 key"
},
{
"id": "auditlog.head-key",
"source": "cap-cheie",
"level": "authenticity",
"sites": 1,
"says": "the public key of the head signature can be read"
},
{
"id": "auditlog.head-signature",
"source": "cap-semnatura",
"level": "authenticity",
"sites": 1,
"says": "the head signature verifies over the statement"
},
{
"id": "auditlog.head-signer",
"source": "cap-semnatar",
"level": "authenticity",
"sites": 1,
"says": "the head is signed by the expected signer"
},
{
"id": "auditlog.head-short",
"source": "cap-scurt",
"level": "integrity",
"sites": 1,
"says": "the log has at least as many entries as the attested head covers"
},
{
"id": "auditlog.head-rewritten",
"source": "cap-rescris",
"level": "integrity",
"sites": 1,
"says": "the entry at the attested point is the attested head (the history before it was not rewritten)"
}
],
"marked": "by a marker on every check"
},
"audit-tree": {
"artifacts": [
"audit-inclusion",
"audit-consistency"
],
"rules": [
{
"id": "audittree.proof-form",
"source": "dovada-forma",
"level": "integrity",
"sites": 2,
"says": "the proof is an inclusion or a consistency proof that can be read"
},
{
"id": "audittree.head-form",
"source": "arbore-forma",
"level": "integrity",
"sites": 2,
"says": "the tree head is a tree head attestation with a size and a root"
},
{
"id": "audittree.head-hash",
"source": "arbore-hash",
"level": "integrity",
"sites": 1,
"says": "the statementHash of the tree head is the hash of its statement"
},
{
"id": "audittree.inclusion-index",
"source": "includere-index",
"level": "integrity",
"sites": 1,
"says": "the entry shown is the entry of the index proven"
},
{
"id": "audittree.inclusion-entry",
"source": "includere-intrare",
"level": "integrity",
"sites": 1,
"says": "the hash of the entry shown is the hash of its content"
},
{
"id": "audittree.inclusion-envelope",
"source": "includere-plic",
"level": "integrity",
"sites": 1,
"says": "the envelope inside the entry hashes to its statementHash"
},
{
"id": "audittree.inclusion-leaf",
"source": "includere-frunza",
"level": "integrity",
"sites": 1,
"says": "the leaf is the leaf of this entry"
},
{
"id": "audittree.inclusion-path",
"source": "includere-drum",
"level": "integrity",
"sites": 1,
"says": "the path leads from the leaf to the root (RFC 9162 inclusion)"
},
{
"id": "audittree.inclusion-head",
"source": "includere-cap",
"level": "integrity",
"sites": 1,
"says": "the proof is for the tree of the head given (size and root)"
},
{
"id": "audittree.consistency-start",
"source": "consistenta-inceput",
"level": "integrity",
"sites": 1,
"says": "the consistency proof starts at the old head"
},
{
"id": "audittree.consistency-end",
"source": "consistenta-sfarsit",
"level": "integrity",
"sites": 1,
"says": "the consistency proof ends at the new head"
},
{
"id": "audittree.consistency",
"source": "consistenta",
"level": "integrity",
"sites": 1,
"says": "the new tree extends the old one (RFC 9162 consistency)"
}
],
"marked": "by a marker on every check"
},
"agent-ledger": {
"artifacts": [
"agent-ledger"
],
"rules": [
{
"id": "agents.ledger-form",
"source": "registru",
"level": "integrity",
"sites": 1,
"says": "a ledger with a list of entries is given"
},
{
"id": "agents.policy",
"source": "politica",
"level": "integrity",
"sites": 2,
"says": "the policy given is a policy, and hashes to the hash the verifier pins"
},
{
"id": "agents.other-policy",
"source": "alta-politica",
"level": "integrity",
"sites": 3,
"says": "the ledger and every entry name the policy given, and the policy is this agent's"
},
{
"id": "agents.session",
"source": "sesiune",
"level": "integrity",
"sites": 1,
"says": "the session is the one derived from the agent and the policy"
},
{
"id": "agents.key",
"source": "cheie",
"level": "authenticity",
"sites": 2,
"says": "the agent key can be read and is an ML-DSA-65 key"
},
{
"id": "agents.identity",
"source": "identitate",
"level": "authenticity",
"sites": 1,
"says": "the agent id is derived from the key"
},
{
"id": "agents.anchor",
"source": "ancora",
"level": "integrity",
"sites": 3,
"says": "every anchor given names an entry of this ledger, with a time"
},
{
"id": "agents.seq",
"source": "seq",
"level": "integrity",
"sites": 1,
"says": "the entries are numbered from zero, without a gap"
},
{
"id": "agents.chain",
"source": "lant",
"level": "integrity",
"sites": 1,
"says": "each entry links the hash of the one before it"
},
{
"id": "agents.body",
"source": "corp",
"level": "integrity",
"sites": 1,
"says": "the body of an entry names the agent, the session and the sequence number of its header"
},
{
"id": "agents.signature",
"source": "semnatura",
"level": "authenticity",
"sites": 1,
"says": "every entry is signed by the agent key"
},
{
"id": "agents.hash",
"source": "hash",
"level": "integrity",
"sites": 1,
"says": "the hash of each entry reproduces"
},
{
"id": "agents.time",
"source": "timp",
"level": "integrity",
"sites": 6,
"says": "entry times do not go backwards and stay within the bounds the verifier has (its clock, a witnessed start, the anchors)"
},
{
"id": "agents.revocation",
"source": "revocare",
"level": "integrity",
"sites": 3,
"says": "a revocation entry carries a revocation that verifies, and says what it carries"
},
{
"id": "agents.approvals",
"source": "aprobari",
"level": "integrity",
"sites": 1,
"says": "an approvals field, when present, is a list that is not empty"
},
{
"id": "agents.decision",
"source": "decizie",
"level": "integrity",
"sites": 1,
"says": "every decision written is the decision the policy gives when replayed"
}
],
"marked": "by a marker on every check"
},
"identity": {
"artifacts": [
"identity-presentation"
],
"rules": [
{
"id": "identity.form",
"source": "form",
"level": "integrity",
"sites": 3,
"says": "the presentation, its credential and its binding are well formed"
},
{
"id": "identity.issuer-id",
"source": "issuer-id",
"level": "authenticity",
"sites": 1,
"says": "the issuer id is the id derived from the issuer keys in the credential"
},
{
"id": "identity.holder-id",
"source": "holder-id",
"level": "authenticity",
"sites": 1,
"says": "the holder id is the id derived from the holder keys in the credential"
},
{
"id": "identity.credential-signature",
"source": "credential-signature",
"level": "authenticity",
"sites": 1,
"says": "the credential is signed by its issuer, Ed25519 and ML-DSA-65, both"
},
{
"id": "identity.issuer-trusted",
"source": "issuer-trusted",
"level": "authenticity",
"sites": 1,
"says": "the issuer is one of the issuers the verifier trusts"
},
{
"id": "identity.credential-window",
"source": "credential-window",
"level": "integrity",
"sites": 1,
"says": "the credential is valid on the verifier's clock"
},
{
"id": "identity.status-list",
"source": "status-list",
"level": "integrity",
"sites": 1,
"says": "a current status list of the issuer, handed to the verifier, can be read at the credential's index"
},
{
"id": "identity.credential-revoked",
"source": "credential-revoked",
"level": "integrity",
"sites": 1,
"says": "no current status list of the issuer revokes the credential"
},
{
"id": "identity.sd-distinct",
"source": "sd-distinct",
"level": "integrity",
"sites": 1,
"says": "the digests the credential signs are distinct"
},
{
"id": "identity.disclosure-readable",
"source": "disclosure-readable",
"level": "integrity",
"sites": 1,
"says": "every disclosure shown is in its one canonical form (salt of 16 bytes or more, an allowed name)"
},
{
"id": "identity.disclosure-signed",
"source": "disclosure-signed",
"level": "integrity",
"sites": 1,
"says": "the digest of every disclosure shown is one the issuer signed"
},
{
"id": "identity.disclosure-once",
"source": "disclosure-once",
"level": "integrity",
"sites": 1,
"says": "no claim is disclosed twice"
},
{
"id": "identity.disclosure-plain",
"source": "disclosure-plain",
"level": "integrity",
"sites": 1,
"says": "no disclosure covers a claim the credential has in the clear"
},
{
"id": "identity.claim-name",
"source": "claim-name",
"level": "integrity",
"sites": 1,
"says": "every plain claim has an allowed name"
},
{
"id": "identity.binding-credential",
"source": "binding-credential",
"level": "integrity",
"sites": 1,
"says": "the presenter signed for this credential"
},
{
"id": "identity.binding-disclosures",
"source": "binding-disclosures",
"level": "integrity",
"sites": 1,
"says": "the presenter signed for exactly the disclosures shown"
},
{
"id": "identity.binding-delegations",
"source": "binding-delegations",
"level": "integrity",
"sites": 1,
"says": "the presenter signed for exactly the delegation chain shown"
},
{
"id": "identity.presenter",
"source": "presenter",
"level": "authenticity",
"sites": 1,
"says": "the presenter is the holder, or the last delegate of the chain"
},
{
"id": "identity.presentation-signature",
"source": "presentation-signature",
"level": "authenticity",
"sites": 1,
"says": "the presentation is signed by the presenter, Ed25519 and ML-DSA-65, both"
},
{
"id": "identity.audience",
"source": "audience",
"level": "integrity",
"sites": 1,
"says": "the presentation was made for this verifier"
},
{
"id": "identity.nonce",
"source": "nonce",
"level": "integrity",
"sites": 1,
"says": "the presentation carries the nonce this verifier gave"
},
{
"id": "identity.freshness",
"source": "freshness",
"level": "integrity",
"sites": 1,
"says": "the presentation was made within the allowed age of the verifier's clock"
},
{
"id": "identity.chain-length",
"source": "chain-length",
"level": "integrity",
"sites": 1,
"says": "the delegation chain has at most eight links"
},
{
"id": "identity.delegation-form",
"source": "delegation-form",
"level": "integrity",
"sites": 1,
"says": "every link of the chain is a delegation"
},
{
"id": "identity.delegation-ids",
"source": "delegation-ids",
"level": "authenticity",
"sites": 1,
"says": "in every link, the giver and the delegate carry the ids derived from their keys"
},
{
"id": "identity.delegation-from",
"source": "delegation-from",
"level": "authenticity",
"sites": 1,
"says": "the first link is given by the holder, every other by the delegate of the link before"
},
{
"id": "identity.delegation-parent",
"source": "delegation-parent",
"level": "integrity",
"sites": 1,
"says": "every link names the hash of the link before it"
},
{
"id": "identity.delegation-signature",
"source": "delegation-signature",
"level": "authenticity",
"sites": 1,
"says": "every link is signed by who gave it, Ed25519 and ML-DSA-65, both"
},
{
"id": "identity.delegation-scope",
"source": "delegation-scope",
"level": "integrity",
"sites": 2,
"says": "the scope of every link can be read and is in its normal form"
},
{
"id": "identity.delegation-window",
"source": "delegation-window",
"level": "integrity",
"sites": 1,
"says": "every link is valid on the verifier's clock and when the presentation was made"
},
{
"id": "identity.delegation-depth",
"source": "delegation-depth",
"level": "integrity",
"sites": 1,
"says": "every link allows as many links as come after it"
},
{
"id": "identity.delegation-narrows",
"source": "delegation-narrows",
"level": "integrity",
"sites": 1,
"says": "a link only narrows the one before: scope, window and depth"
},
{
"id": "identity.delegation-credential",
"source": "delegation-credential",
"level": "integrity",
"sites": 1,
"says": "the scope of every link covers this credential"
},
{
"id": "identity.delegation-claims",
"source": "delegation-claims",
"level": "integrity",
"sites": 1,
"says": "the scope of every link covers the claims disclosed"
},
{
"id": "identity.delegation-audience",
"source": "delegation-audience",
"level": "integrity",
"sites": 1,
"says": "the scope of every link covers the audience"
},
{
"id": "identity.delegation-revoked",
"source": "delegation-revoked",
"level": "integrity",
"sites": 1,
"says": "no revocation handed to the verifier, signed by the giver of a link or by the holder, has taken effect"
},
{
"id": "identity.unreadable",
"source": "unreadable",
"level": "integrity",
"sites": 1,
"says": "every field a check reads can be read (a time is an RFC 3339 UTC time, a hash input is JSON)"
}
],
"marked": "by a marker on every check"
}
},
"notEnrolled": [
{
"verifier": "identity: SD-JWT (RFC 9901)",
"refusalSites": 26,
"why": "its refusals carry texts, not rule ids (counted: the calls of its refusal helper); it is checked by its own probe, on the RFC 9901 vectors"
},
{
"verifier": "identity: Travel Rule",
"refusalSites": 20,
"why": "its refusals are reasons in a list, not rule ids (counted: the places that add one); it takes the presentation verdict from the enrolled verifier"
},
{
"verifier": "identity: compliance",
"refusalSites": 3,
"why": "its refusals are reasons in a list, not rule ids (counted: the places that add one); it takes the presentation verdict from the enrolled verifier"
}
]
}