| Internet-Draft | EQR Conformance | October 2026 |
| Watts | Expires 17 April 2027 | [Page] |
This document defines a deterministic conformance profile and test-vector corpus for Evidence Qualification Receipts (EQRs). The profile, named eqr-core-1, makes receipt conformance mechanically reproducible: strict JSON structure, SHA-256 digest encoding, UTC timestamp handling, evidence-reference integrity, requirement-state derivation, and three-valued PASS, FAIL, or INDETERMINATE results are checked by a closed algorithm. The profile is intentionally narrow. Conformance does not establish that evidence is true, that a proposition is scientifically valid, that an issuer is trustworthy, or that an action is authorized. The goal is interoperable verification of receipt semantics, not promotion of conformance into substantive truth.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 17 April 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Evidence Qualification Receipts are described in [I-D.watts-eqr]. Their central requirement is that unresolved required evidence remain distinguishable from both satisfied and failed evidence, and that qualification remain distinct from authorization. That architectural distinction is useful only if independent implementations derive the same status from the same declared requirement states.¶
This document therefore defines a strict conformance profile, eqr-core-1, plus executable test vectors.
The profile does not attempt to determine whether evidence corresponds to reality. It determines whether an EQR
object is structurally and semantically self-consistent under a fully specified finite rule set.¶
A receipt can be conformant and still contain evidence from an issuer a relying party does not trust. A conformant PASS result is not permission to execute an action.¶
The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, and MAY in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals.¶
Agreement with the finite syntactic and semantic rules of this profile.¶
Whether the underlying evidence and proposition are actually correct. This document does not establish it.¶
One of satisfied, failed, missing, unresolved, or stale.¶
The PASS, FAIL, or INDETERMINATE result computed from the requirement states.¶
An eqr-core-1 object is a JSON object as defined by [RFC8259].
Duplicate JSON member names MUST cause non-conformance.¶
SHA-256 is the only digest algorithm in this profile [RFC6234]. Digest values MUST be exactly 32 octets represented using unpadded base64url [RFC4648]. A producer that hashes a JSON object MUST first apply the JSON Canonicalization Scheme [RFC8785].¶
All timestamps in this profile MUST be UTC Internet timestamps ending in
Z and conforming to [RFC3339].¶
The profile requires exactly the following top-level members:¶
version, whose value is "1";¶
profile_id, whose value is "eqr-core-1";¶
receipt_id and issuer;¶
issued_at, expires_at, and evaluation_time;¶
profile and claim SHA-256 digest objects;¶
requirements;¶
evaluation;¶
evidence; and¶
supersedes, which can be null.¶
The strict member set is intentional for this conformance profile. Other EQR profiles can define extensions.¶
Each requirement has a unique id, one state, and an optional array of
evidence_ids. The only states are:¶
A satisfied requirement MUST name at least one evidence object. Every named evidence identifier
MUST resolve within the same receipt. Evidence used by a satisfied requirement
MUST NOT be stale at evaluation_time.¶
The status derivation function is:¶
def derive_status(requirements):
if not requirements:
return "indeterminate"
states = [r["state"] for r in requirements]
if any(s == "failed" for s in states):
return "fail"
if all(s == "satisfied" for s in states):
return "pass"
return "indeterminate"
¶
FAIL has precedence over missing or unresolved information. PASS is possible only for a non-empty requirement set in which every requirement is satisfied. In every other valid case the result is INDETERMINATE.¶
The receipt's declared evaluation.status MUST equal the derived status.
A mismatch is non-conformant; a verifier MUST NOT rewrite the declaration to make it conform.¶
expires_at MUST be later than issued_at.
evaluation_time MUST fall within the inclusive receipt validity interval.¶
An evidence object has a fresh_until timestamp. A requirement declared satisfied is non-conformant if any
evidence object it relies on has fresh_until earlier than evaluation_time.¶
This rule checks self-consistency only. It does not establish that the chosen freshness interval is appropriate for a relying party's risk or policy.¶
supersedes can identify a predecessor receipt. It MUST NOT equal the current
receipt_id. This profile does not mutate predecessor state. New evidence is represented by a new receipt.¶
A verifier returns two logically separate outputs:¶
Non-conformance MUST NOT be reported as PASS, FAIL, or INDETERMINATE. Those values describe evidence qualification semantics, not parser or profile validity.¶
The companion corpus contains twenty-one vectors covering valid PASS, FAIL, and INDETERMINATE cases plus malformed or
internally inconsistent inputs. The SHA-256 digest of the UTF-8 vector file
eqr-core-1-vectors.json in the author's published package is:¶
8d8832b5de8c12393f47be3a7067ecd69edfc26822441595318e72e77ea923df¶
The corpus includes empty requirements, FAIL precedence, missing and stale evidence, duplicate requirement identifiers, unsupported hash algorithms, invalid digest encodings, expired receipts, unknown evidence references, invalid state values, self-supersession, and declared-status mismatch.¶
An implementation claiming conformance to the vector profile MUST produce the expected conformance Boolean and derived status for every vector. Failure of one vector is sufficient to reject a claim of complete vector-profile conformance.¶
This specification is intentionally falsifiable at the implementation layer. If two purportedly conformant implementations produce different outputs for the same normative vector, at least one implementation is non-conformant or the specification is ambiguous and requires revision.¶
Passing all vectors does not establish truth of the evidence, scientific validity of the proposition, honesty of the issuer, appropriateness of the profile, authorization to act, successful execution, or safety. Those are different claims requiring different evidence.¶
This document is a conformance companion to [I-D.watts-eqr] and follows the non-collapse distinction described in [I-D.watts-noncollapse]. It does not replace executor-side action/evidence processing such as [I-D.schrock-aeb], evidence challenge protocols such as [I-D.schrock-aec], claim-preserving evidence exchange such as [I-D.abak-claim-preservation], or runtime conformance receipts such as [I-D.correctover-ccs].¶
Strict parsing prevents duplicate-member substitution and status laundering through ambiguous JSON. Digest and timestamp checks prevent several classes of malformed or stale self-consistency claims, but this profile provides no key management, issuer authentication, revocation, trust-anchor selection, or policy decision.¶
A malicious issuer can create a perfectly conformant receipt containing false evidence. Therefore conformant MUST NOT be interpreted as truthful, trusted, authorized, or safe.¶
Evidence identifiers and digests can still act as correlators. Implementations should minimize externally exposed evidence metadata and avoid placing sensitive plaintext into receipts when a scoped digest or protected reference is sufficient.¶
This document has no IANA actions. The string eqr-core-1 is a profile label defined by this experimental
document and is not an IANA registration.¶