<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc tocompact="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc ipr="trust200902" docName="draft-vauban-x402-stark-receipts-02" category="info" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="x402-stark-receipts">x402 STARK Receipt Format Extension</title>

    <author fullname="Vauban Research">
      <organization>Vauban Research</organization>
      <address>
        <email>research@vauban.tech</email>
        <uri>https://pay.vauban.tech</uri>
      </address>
    </author>

    <date year="2026" month="May" day="25"/>

    <area>Applications</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>x402</keyword> <keyword>HTTP</keyword> <keyword>payment</keyword> <keyword>receipt</keyword> <keyword>cryptographic</keyword> <keyword>STARK</keyword> <keyword>zero-knowledge</keyword> <keyword>post-quantum</keyword> <keyword>canonicalisation</keyword> <keyword>JCS</keyword> <keyword>RFC 8785</keyword>

    <abstract>


<?line 116?>

<t>The x402 <spanx style="verb">PAYMENT-RESPONSE</spanx> carries a facilitator-issued settlement reference but does not provide a self-contained, offline-verifiable payment-condition proof. A verifier must today contact the facilitator to confirm whether a specific amount, currency, and payer attestation were satisfied at the time of payment. This gap prevents compliance with EU AI Act Art. 12 (transparency and documentation) and MiCA Art. 76 (settlement record-keeping) in automated payment pipelines.</t>

<t>This document defines the <spanx style="verb">receipt-format</spanx> extension for x402 V2. The extension introduces a negotiable receipt format selection mechanism that allows resource servers, facilitators, and clients to agree on which cryptographic receipt variant to produce and verify, without altering the core <spanx style="verb">PAYMENT-RESPONSE</spanx> wire structure. Three variants are defined: a Stwo Circle STARK proof of payment conditions (post-quantum sound, offline verifiable), a hybrid ES256K + ML-DSA-65 dual-signature receipt (receipt integrity under quantum adversary), and a classical ES256K fallback. A canonical preimage discipline using JCS (<xref target="RFC8785"/>) ensures cross-implementation digest consistency.</t>

<t>The canonical preimage discipline in this document is cross-validated against the x402 canonicalisation conformance set, which is checked byte-for-byte across five independent RFC 8785 (<xref target="RFC8785"/>) implementations in five languages (Python, TypeScript, Go, Java, Rust).</t>



    </abstract>



  </front>

  <middle>


<?line 124?>

<section anchor="introduction"><name>Introduction</name>

<t>The x402 protocol (<xref target="X402-V2"/>) defines HTTP-native payment flows using three messages: <spanx style="verb">PAYMENT-REQUIRED</spanx> (402 response), <spanx style="verb">PAYMENT-SIGNATURE</spanx> (client request), and <spanx style="verb">PAYMENT-RESPONSE</spanx> (facilitator confirmation). The <spanx style="verb">PAYMENT-RESPONSE</spanx> currently carries a <spanx style="verb">payment_hash</spanx> and a facilitator-issued settlement reference. However, it does not include a self-contained cryptographic receipt that a downstream verifier can check offline, without contacting the facilitator.</t>

<t>This limitation creates a compliance gap in two regulatory frameworks:</t>

<t><list style="symbols">
  <t>EU AI Act Art. 12 requires that automated decision-making systems maintain transparent, auditable records. A payment pipeline that cannot produce an offline-verifiable receipt cannot satisfy this requirement without a facilitator callback.</t>
  <t>MiCA Art. 76 requires settlement record-keeping for crypto-asset service providers. A facilitator-issued reference alone is insufficient when the verifying party is not the original payment processor.</t>
</list></t>

<t>The <spanx style="verb">receipt-format</spanx> extension addresses this gap by enabling negotiation of three cryptographic receipt variants, each optimised for a different compliance or security property. The extension is additive: it does not modify the core <spanx style="verb">PAYMENT-RESPONSE</spanx> structure, and it defaults safely to a classical ES256K fallback for implementations that do not require ZK or post-quantum properties.</t>

<t>Three independent implementations established the extension semantics and the three receipt variants in <xref target="X402-2357"/>:</t>

<t><list style="symbols">
  <t>Vauban zkpay (Rust, Apache 2.0): STARK receipt generation and verification</t>
  <t>FeedOracle Grounding Receipt v0.4: hybrid PQC dual-signature</t>
  <t>andysalvo action-ref-verify v0.3.0: canonical preimage conformance suite</t>
</list></t>

<t>The canonical preimage discipline shared by all three variants is additionally cross-validated against the x402 canonicalisation conformance set across five RFC 8785 implementations in five languages (Python, TypeScript, Go, Java, Rust). The Vauban Rust conformance runner uses <spanx style="verb">serde_jcs 0.2.0</spanx> and is available under Apache 2.0. Cross-validation coverage: 53/53 vectors, 37/37 pair invariants byte-for-byte across all published canonicalisation vector sets. The canonicalisation discipline is anchored in <xref target="RFC8785"/> and <spanx style="verb">urn:x402:canonicalisation:jcs-rfc8785-v1</spanx>; it is not bound to any single host surface.</t>

<t>Conformance test vectors for the <spanx style="verb">action_ref</spanx> work-receipt binding are published in <xref target="X402-2398"/> (<spanx style="verb">fixtures/action-ref-verify/v0/</spanx>). The canonicalisation rules these vectors exercise are cross-validated in the broader x402 canonicalisation conformance set <xref target="X402-CANON"/>.</t>

<t>This document is an Independent Submission. It is not the product of an IETF Working Group. It is published for community review and to establish a stable reference for implementors.</t>

</section>
<section anchor="lifecycle-scope"><name>Lifecycle Scope</name>

<t>The <spanx style="verb">stark-vauban-pay-v1</spanx> receipt format defined in this document covers the full lifecycle of a payment transaction in a single unified specification :</t>

<t><list style="symbols">
  <t>Settlement (the canonical successful-payment receipt) ; see <xref target="variant-bodies">Variant-Specific Receipt Bodies</xref> and in particular <xref target="stark-body">stark-vauban-pay-v1</xref></t>
  <t>Refund (canonical reversal receipt, content-addressed to the originating Settlement via JCS canonical preimage hash and the <spanx style="verb">original_payment_ref</spanx> field) ; see <xref target="variant-bodies">Variant-Specific Receipt Bodies</xref></t>
  <t>Delegation (bounded-spend authorization receipt, cryptographically scoped to the granting principal) ; see <xref target="variant-bodies">Variant-Specific Receipt Bodies</xref></t>
</list></t>

<t>Each lifecycle state is cryptographically bound to its predecessor via STARK-anchored proof chains as defined in <xref target="preimage-discipline">Canonical Preimage Discipline</xref>. Verifiers reconstruct full payment histories by walking the chain of <spanx style="verb">original_payment_ref</spanx> and JCS canonical preimage hash linkages, without requiring out-of-band coordination between independent receipt formats.</t>

<t>The unified single-document approach preserves a single audit-time re-verifiable evidence surface per payment lifecycle. Implementations that fragment receipt definitions across multiple specifications introduce ambiguity at state-transition boundaries (Refund following Settlement, Delegation preceding either) and require verifier-side coordination logic absent from this specification. The <spanx style="verb">stark-vauban-pay-v1</spanx> receipt format closes that gap by binding the four canonical PaymentClaim states (PaymentIntent, SettlementReceipt, RefundClaim, DelegationGrant) under one cryptographic discipline.</t>

</section>
<section anchor="conventions"><name>Conventions and Definitions</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

<t>The following terms are used throughout this document:</t>

<dl>
  <dt>Receipt format:</dt>
  <dd>
    <t>A string token identifying which cryptographic receipt variant a facilitator produces. See <xref target="receipt-format-enum"/>.</t>
  </dd>
  <dt>JCS:</dt>
  <dd>
    <t>JSON Canonicalization Scheme, defined in <xref target="RFC8785"/>. Produces a deterministic byte representation of a JSON value by applying recursive key sorting and value normalization.</t>
  </dd>
  <dt>action_ref:</dt>
  <dd>
    <t>A 32-byte opaque digest binding a payment receipt to a work-layer event. Derived by SHA-256 over the UTF-8 JCS encoding of a canonical preimage object. See <xref target="wire-binding"/>.</t>
  </dd>
  <dt>payment_hash:</dt>
  <dd>
    <t>A hash of the payment conditions committed to by the payer, as defined in the x402 V2 base specification (<xref target="X402-V2"/>).</t>
  </dd>
  <dt>Facilitator:</dt>
  <dd>
    <t>An entity that processes x402 payment requests, verifies payment conditions, and issues <spanx style="verb">PAYMENT-RESPONSE</spanx> messages. The term is used as defined in <xref target="X402-V2"/>.</t>
  </dd>
  <dt>NFC:</dt>
  <dd>
    <t>Unicode Normalization Form C, as defined in <xref target="UAX15"/>.</t>
  </dd>
  <dt>compliance_receipt:</dt>
  <dd>
    <t>The internal screening decision record produced by a compliance engine (ALLOW, DENY, or REFER) before wire-format translation. Distinct from the consumer-facing <spanx style="verb">RiskCheckResult</spanx> signal defined in <xref target="X402-2434"/>. See <xref target="compliance-receipt-layer"/>.</t>
  </dd>
</dl>

</section>
<section anchor="receipt-format-enum"><name>Receipt Format Enum</name>

<t>The <spanx style="verb">receipt_format</spanx> field identifies which cryptographic receipt variant a facilitator has produced. The value is a string token from the registry defined in <xref target="iana-considerations"/>:</t>

<texttable>
      <ttcol align='left'>Token</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Approx. size</ttcol>
      <c><spanx style="verb">stark-vauban-pay-v1</spanx></c>
      <c>Stwo Circle STARK over payment-condition witness (amount, currency, payer attestation, nullifier). Post-quantum sound. Offline verifiable.</c>
      <c>~100 KB</c>
      <c><spanx style="verb">hybrid-pqc</spanx></c>
      <c>ES256K + ML-DSA-65 (<xref target="FIPS204"/>) dual-signature over JCS-canonical receipt core. Receipt survives Q-Day independently of proof system upgrade.</c>
      <c>~3.3 KB</c>
      <c><spanx style="verb">classical-es256k</spanx></c>
      <c>ES256K signature only. Default fallback for clients that do not require post-quantum or ZK properties.</c>
      <c>~0.5 KB</c>
</texttable>

<t>Each variant corresponds to <spanx style="verb">evidenceType: "cryptographic"</spanx> in the <xref target="X402-2322"/> compliance taxonomy. The <spanx style="verb">signature_algorithm</spanx> discriminator used in the bazaar <spanx style="verb">evidenceShape</spanx> maps as follows:</t>

<texttable>
      <ttcol align='left'>receipt_format token</ttcol>
      <ttcol align='left'>signature_algorithm</ttcol>
      <c><spanx style="verb">stark-vauban-pay-v1</spanx></c>
      <c><spanx style="verb">"stark-m31-stwo"</spanx></c>
      <c><spanx style="verb">hybrid-pqc</spanx></c>
      <c><spanx style="verb">"es256k+ml-dsa-65"</spanx></c>
      <c><spanx style="verb">classical-es256k</spanx></c>
      <c><spanx style="verb">"es256k"</spanx></c>
</texttable>

<t>Facilitators MAY introduce additional tokens by registering them in the <spanx style="verb">x402 Receipt Format</spanx> registry defined in <xref target="iana-considerations"/>. Tokens not present in the registry MUST be treated as <spanx style="verb">"classical-es256k"</spanx> by verifiers that do not recognise them.</t>

<t>The three variants correspond to three orthogonal properties; a deployment selects the property it requires:</t>

<t><list style="symbols">
  <t><strong>proof-of-payment-conditions</strong>: the <spanx style="verb">stark-vauban-pay-v1</spanx> receipt proves amount, currency, payer attestation, and nullifier without revealing them. The STARK proof is the deliverable.</t>
  <t><strong>receipt-integrity-under-quantum</strong>: the <spanx style="verb">hybrid-pqc</spanx> receipt carries two independent signatures; the receipt remains verifiable if one signature algorithm is broken.</t>
  <t><strong>work-receipt-binding</strong>: all three variants carry an optional <spanx style="verb">action_ref</spanx> field (32-byte opaque digest per <xref target="wire-binding"/>). Binding to the work layer is a property of the preimage derivation, not of the receipt format itself. The same <spanx style="verb">action_ref</spanx> value also serves as the composite trust-query anchor; see <xref target="wire-binding"/> and <xref target="X402-COMPOSITE"/>.</t>
</list></t>

</section>
<section anchor="http-headers"><name>HTTP Header Conventions</name>

<section anchor="x-payment-options"><name>X-Payment-Options (402 response, server to client)</name>

<t>A resource server or facilitator SHOULD include <spanx style="verb">X-Payment-Options</spanx> in the <spanx style="verb">402 Payment Required</spanx> response to advertise which <spanx style="verb">receipt_format</spanx> variants it can produce.</t>

<figure><artwork><![CDATA[
X-Payment-Options: receipt_format="stark-vauban-pay-v1, hybrid-pqc, classical-es256k"
]]></artwork></figure>

<t>The value is a comma-separated ordered list of <spanx style="verb">receipt_format</spanx> tokens, from most-preferred to least-preferred. The server declares its capabilities; the client selects from this list.</t>

<t>If <spanx style="verb">X-Payment-Options</spanx> is absent, the client MUST assume the facilitator can produce only <spanx style="verb">classical-es256k</spanx>.</t>

</section>
<section anchor="x-receipt-format"><name>X-Receipt-Format (PAYMENT-RESPONSE, facilitator to client)</name>

<t>The facilitator MUST include <spanx style="verb">X-Receipt-Format</spanx> in the <spanx style="verb">PAYMENT-RESPONSE</spanx> to state which variant it emitted.</t>

<figure><artwork><![CDATA[
X-Receipt-Format: stark-vauban-pay-v1
]]></artwork></figure>

<t>The verifier uses this header to select the correct receipt parser before attempting to deserialise or verify the receipt body.</t>

<t>If <spanx style="verb">X-Receipt-Format</spanx> is absent, the verifier MUST assume <spanx style="verb">classical-es256k</spanx>.</t>

</section>
</section>
<section anchor="negotiation"><name>Negotiation Semantics</name>

<section anchor="normal-negotiation"><name>Normal Negotiation Path</name>

<t><list style="numbers" type="1">
  <t>Client receives a <spanx style="verb">402</spanx> response with <spanx style="verb">X-Payment-Options</spanx>.</t>
  <t>Client selects the highest-preference variant it can verify from the list.</t>
  <t>Client SHOULD signal its selection to the facilitator by including <spanx style="verb">receipt_format</spanx> in the <spanx style="verb">PAYMENT-SIGNATURE</spanx> request payload (see <xref target="payment-sig-schema"/>).</t>
  <t>Facilitator produces the receipt in the selected variant and sets <spanx style="verb">X-Receipt-Format</spanx> on the <spanx style="verb">PAYMENT-RESPONSE</spanx>.</t>
</list></t>

</section>
<section anchor="fallback"><name>Fallback Behaviour</name>

<t>If the client cannot verify any variant in <spanx style="verb">X-Payment-Options</spanx>, or if <spanx style="verb">X-Payment-Options</spanx> is absent, the client MUST fall back to <spanx style="verb">classical-es256k</spanx>. The facilitator MUST honour this fallback.</t>

<t>A facilitator that lists <spanx style="verb">stark-vauban-pay-v1</spanx> in <spanx style="verb">X-Payment-Options</spanx> MUST also be capable of producing <spanx style="verb">classical-es256k</spanx> as a fallback. Listing a variant without fallback capability is a protocol violation.</t>

</section>
<section anchor="mandatory-format"><name>Mandatory-Format Signalling</name>

<t>If a client REQUIRES a specific receipt format (for example, a regulator requiring an offline-verifiable STARK receipt for EU AI Act Art. 12 purposes), it MUST include <spanx style="verb">receipt_format</spanx> in the <spanx style="verb">PAYMENT-SIGNATURE</spanx> request extensions:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "extensions": {
    "receipt-format": {
      "info": {
        "required": true,
        "receipt_format": "stark-vauban-pay-v1"
      }
    }
  }
}
]]></sourcecode></figure>

<t>If <spanx style="verb">required</spanx> is <spanx style="verb">true</spanx> and the facilitator cannot produce the requested variant, the facilitator MUST return HTTP 402 with error <spanx style="verb">UnsupportedReceiptFormat</spanx> (see <xref target="error-taxonomy"/>) rather than silently downgrading.</t>

<t>If <spanx style="verb">required</spanx> is <spanx style="verb">false</spanx> (or absent), the facilitator MAY downgrade to the highest variant it supports.</t>

</section>
</section>
<section anchor="compliance-receipt-layer"><name>Compliance Receipt and RiskCheckResult Layering</name>

<t>Two distinct protocol-layer constructs are involved in screening-aware payment flows. Implementations MUST NOT conflate them.</t>

<section anchor="compliance-receipt"><name>compliance_receipt (Internal Screening Decision Record)</name>

<t>A <spanx style="verb">compliance_receipt</spanx> is the internal record of a screening decision produced by a compliance engine before any wire-format translation. It carries the raw decision outcome (ALLOW, DENY, or REFER), the screening criteria applied, and any structured evidence supporting the outcome. The <spanx style="verb">compliance_receipt</spanx> is NOT directly transmitted to the client; it is the source material from which the facilitator derives the consumer-facing signal.</t>

<t>The three decision outcomes are:</t>

<t><list style="symbols">
  <t><strong>ALLOW</strong>: the payment request passes all screening criteria; the facilitator MAY proceed to settlement.</t>
  <t><strong>DENY</strong>: the payment request fails one or more screening criteria; the facilitator MUST reject and MUST NOT issue a <spanx style="verb">PAYMENT-RESPONSE</spanx>.</t>
  <t><strong>REFER</strong>: the payment request requires human review before a final ALLOW or DENY can be issued; the facilitator MUST NOT proceed to settlement until the referral is resolved.</t>
</list></t>

<t>The cross-validation exercise described in <xref target="introduction"/> (15/15 byte-for-byte agreements across five implementations) validates the JCS-canonical encoding of the <spanx style="verb">compliance_receipt</spanx> shape as defined in <xref target="X402-2434"/>.</t>

</section>
<section anchor="risk-check-result"><name>RiskCheckResult (Consumer-Facing Wire-Format Signal)</name>

<t>The <spanx style="verb">RiskCheckResult</spanx> (defined in <xref target="X402-2434"/>) is the consumer-facing wire-format signal derived from the <spanx style="verb">compliance_receipt</spanx>. It is designed for transmission in <spanx style="verb">PAYMENT-RESPONSE</spanx> extensions and carries only the information the client needs: the decision outcome, an opaque reference to the underlying <spanx style="verb">compliance_receipt</spanx>, and the <spanx style="verb">action_ref</spanx> binding when applicable.</t>

</section>
<section anchor="relationship-and-layering"><name>Relationship and Layering</name>

<t>The <spanx style="verb">compliance_receipt</spanx> sits BELOW the <spanx style="verb">RiskCheckResult</spanx> in the protocol stack:</t>

<figure><artwork><![CDATA[
  [Facilitator compliance engine]
          |
          v
  compliance_receipt (ALLOW/DENY/REFER + evidence)
          |
          v  [wire-format translation]
          |
  RiskCheckResult (consumer signal in PAYMENT-RESPONSE)
          |
          v
  [Client / verifier]
]]></artwork></figure>

<t>A verifier receiving a <spanx style="verb">RiskCheckResult</spanx> MUST NOT assume access to the underlying <spanx style="verb">compliance_receipt</spanx>. The <spanx style="verb">compliance_receipt</spanx> is a facilitator-internal artefact; its retention, format, and access controls are outside the scope of this extension. The <spanx style="verb">action_ref</spanx> field in the <spanx style="verb">RiskCheckResult</spanx>, when present, provides the binding to the work-layer event and to the composite trust-query anchor (<xref target="X402-COMPOSITE"/>).</t>

</section>
</section>
<section anchor="error-taxonomy"><name>Error Taxonomy</name>

<t>When the facilitator or resource server rejects a payment due to a condition attributable to this extension, it SHOULD include the <spanx style="verb">X-Receipt-Reject-Reason</spanx> header with a machine-readable semantic discriminator. The header supplements the HTTP status code; it does not replace it.</t>

<figure><artwork><![CDATA[
X-Receipt-Reject-Reason: NullifierReplay
]]></artwork></figure>

<section anchor="error-codes"><name>HTTP Status Code Mapping</name>

<texttable>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Reason token</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>400</c>
      <c><spanx style="verb">MalformedClaim</spanx></c>
      <c>Malformed CBOR or invalid JCS in the request body. Parse failed before validation.</c>
      <c>402</c>
      <c><spanx style="verb">PaymentRequired</spanx></c>
      <c>Generic unmet payment condition: amount mismatch, invalid proof, payer attestation failed.</c>
      <c>402</c>
      <c><spanx style="verb">UnsupportedReceiptFormat</spanx></c>
      <c>Client requested a <spanx style="verb">receipt_format</spanx> with <spanx style="verb">required: true</spanx> that the facilitator cannot produce.</c>
      <c>409</c>
      <c><spanx style="verb">NullifierReplay</spanx></c>
      <c>Nullifier already settled. Double-spend attempt detected. The <spanx style="verb">PAYMENT-RESPONSE</spanx> MUST NOT be issued.</c>
      <c>410</c>
      <c><spanx style="verb">Expired</spanx></c>
      <c>TemporalFrame window has elapsed. The payment cannot be settled.</c>
      <c>422</c>
      <c><spanx style="verb">StructuralInvalid</spanx></c>
      <c>Claim structure violates the VPSF sextuplet invariant. Structurally unprocessable.</c>
      <c>451</c>
      <c><spanx style="verb">HumanityRequired</spanx></c>
      <c>Merchant requires a humanity-binding attestation; payer is anonymous and cannot satisfy the requirement.</c>
</texttable>

</section>
<section anchor="reject-reason-format"><name>X-Receipt-Reject-Reason Format</name>

<t>The header value MUST be exactly one reason token from the table above. Verifiers MUST treat unknown tokens as equivalent to the corresponding HTTP status code with no additional semantics.</t>

<t>Facilitators SHOULD include the header on all non-2xx responses in this extension's domain. The header is OPTIONAL on 5xx responses.</t>

</section>
</section>
<section anchor="preimage-discipline"><name>Canonical Preimage Discipline</name>

<t>The canonicalisation rules used by this extension are defined normatively by the x402 shared canonicalisation discipline <xref target="X402-CANON"/>, identified by the stable URI <spanx style="verb">urn:x402:canonicalisation:jcs-rfc8785-v1</spanx>. That section codifies the digest construction <spanx style="verb">JCS_hash = SHA-256(JCS(object))</spanx> over the JSON Canonicalization Scheme <xref target="RFC8785"/>, the version marker <spanx style="verb">jcs-rfc8785-v1</spanx>, and four normative rules: timestamps are encoded as integers, field names are compared as byte strings, arrays preserve their order, and type validation is performed before canonicalisation.</t>

<t>This section does not restate those rules. It profiles them for the <spanx style="verb">action_ref</spanx> preimage of this extension: it fixes the four-field preimage schema (<xref target="preimage-schema"/>), gives the worked digest for the shared coalition preimage, and records the conformance-vector pointers. Where this section previously stated a generic canonicalisation rule, that rule now lives in <xref target="X402-CANON"/>; the text below carries only what is specific to the <spanx style="verb">action_ref</spanx> preimage.</t>

<section anchor="timestamp-field"><name>timestamp_ms Field Name</name>

<t><xref target="X402-CANON"/> Rule 1 requires timestamps to be encoded as integer values. This extension fixes the field name for the <spanx style="verb">action_ref</spanx> preimage: it MUST be <spanx style="verb">timestamp_ms</spanx>, an integer count of milliseconds since the Unix epoch (1970-01-01T00:00:00 UTC). The field name <spanx style="verb">timestamp</spanx> carrying an RFC 3339 string MUST NOT be used in the <spanx style="verb">action_ref</spanx> preimage. Vector <spanx style="verb">0002-field-name-load-bearing</spanx> in the canonicalisation conformance set (<xref target="X402-CANON"/>) demonstrates the divergence that an RFC 3339 string field produces.</t>

</section>
<section anchor="preimage-schema"><name>Preimage Schema</name>

<t>The canonical <spanx style="verb">action_ref</spanx> preimage object contains the following fields, sorted in <xref target="RFC8785"/> lexicographic order for JCS canonicalisation:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "action_type":  "<string>",
  "agent_id":     "<string>",
  "scope":        "<string>",
  "timestamp_ms": <integer>
}
]]></sourcecode></figure>

<t>Key ordering and serialisation follow <xref target="X402-CANON"/> and <xref target="RFC8785"/> Section 3.2.3. The JCS output for the shared coalition preimage is:</t>

<figure><artwork><![CDATA[
{"action_type":"sanctions_screen","agent_id":"did:web:agent-7.example.com","scope":"counterparty-due-diligence","timestamp_ms":1747728000000}
]]></artwork></figure>

<t>The <spanx style="verb">action_ref</spanx> digest is:</t>

<figure><artwork><![CDATA[
action_ref = SHA-256(UTF-8(JCS(preimage)))
           = 10d8a38c01d8672176aa6e5209a368fde3e1831640d69e15283142b35880c2c1
]]></artwork></figure>

</section>
<section anchor="type-validation"><name>Type Validation Requirements</name>

<t><xref target="X402-CANON"/> Rule 4 requires type validation to be performed before canonicalisation. This subsection enumerates the type-validation failures that apply to the <spanx style="verb">action_ref</spanx> preimage specifically.</t>

<t>Implementations MUST reject preimage objects containing:</t>

<t><list style="symbols">
  <t><strong>Float values for <spanx style="verb">timestamp_ms</spanx></strong>: <spanx style="verb">1747728000000.0</spanx> MUST be rejected; only integer JSON numbers are valid. Vector <spanx style="verb">0002-ms-precision-trap</spanx> from <xref target="X402-CANON"/> demonstrates the failure mode where a float representation produces no parsing error but an incorrect digest. Rejection MUST occur before canonicalisation.</t>
  <t><strong>Missing canonical fields</strong>: if any of <spanx style="verb">action_type</spanx>, <spanx style="verb">agent_id</spanx>, <spanx style="verb">scope</spanx>, or <spanx style="verb">timestamp_ms</spanx> is absent, the preimage MUST be rejected before canonicalisation. See proposed vector <spanx style="verb">0012-missing-canonical-field</spanx>.</t>
  <t><strong>Duplicate keys</strong>: if the JSON object contains duplicate key names, the preimage MUST be rejected at parse time. Accepting last-wins or first-wins semantics creates interoperability ambiguity. See proposed vector <spanx style="verb">0010-duplicate-keys</spanx>.</t>
</list></t>

</section>
<section anchor="unicode-normalisation"><name>Unicode Normalisation</name>

<t><xref target="X402-CANON"/> deliberately applies no Unicode normalisation in the canonicaliser, so that NFC and NFD are distinct canonical inputs. This extension imposes a stricter profile on the <spanx style="verb">action_ref</spanx> preimage: it requires NFC and rejects non-NFC input, as specified below. This is a profile narrowing, not a contradiction of <xref target="X402-CANON"/>.</t>

<t><xref target="RFC8785"/> (JCS) performs no Unicode normalisation on string values. Two strings that are semantically equivalent but differ in Unicode normalization form (for example NFC vs NFD per <xref target="UAX15"/>) will produce different JCS bytes and therefore different digests.</t>

<t>Implementations MUST normalise all string values in the preimage to Unicode Normalization Form C (NFC) per <xref target="UAX15"/> BEFORE JCS canonicalisation.</t>

<t>Implementations MUST reject input where any string value in the preimage is encoded in a non-NFC form (NFD, NFKC, or NFKD). Acceptance of non-NFC input is a conformance violation.</t>

<t>Verifiers MUST NOT perform implicit re-normalisation. The input MUST already be NFC for the digest to be reproducible across runtimes.</t>

<t>Rationale: a verifier receiving an NFD-encoded preimage would compute a different digest than one receiving the NFC equivalent, silently breaking receipt verification without a parsing error. macOS HFS+ historically stored filenames in NFD decomposed form, and database collations vary; this is not a hypothetical edge case.</t>

<t>See proposed companion vector <spanx style="verb">0011-unicode-normalisation</spanx> (NFD divergence test case) for a concrete failure mode demonstration.</t>

</section>
<section anchor="trailing-whitespace"><name>Trailing Whitespace and Extra Fields</name>

<t>Vector <spanx style="verb">0003-trailing-whitespace</spanx> from <xref target="X402-CANON"/> confirms that trailing whitespace in string values is significant in JCS. Implementations MUST NOT strip trailing whitespace before canonicalisation.</t>

<t>Vector <spanx style="verb">0004-extra-field-ignored</spanx> confirms that additional fields beyond the canonical four MAY be present in the application preimage, but MUST be sorted in JCS order and included in the digest if present. The canonical binding covers whatever fields were serialised.</t>

</section>
</section>
<section anchor="wire-binding"><name>Wire-Level Binding (action_ref): Pure 32-Byte Hash, Layer-Agnostic</name>

<t>The <spanx style="verb">action_ref</spanx> field in any receipt variant is an opaque 32-byte digest. It MUST be encoded as base64url (<xref target="RFC4648"/> Section 5, no padding) in JSON payloads and as raw bytes in CBOR payloads.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "action_ref": "ENijjAHYZyF2qm5SCaNo_ePhgxZA1p4VKDFCS1iAwsE"
}
]]></sourcecode></figure>

<t>The receipt format does not interpret the <spanx style="verb">action_ref</spanx> preimage. The preimage derivation is defined by the work layer (see <xref target="preimage-schema"/> for the canonical formula). The receipt stores 32 opaque bytes and emits them on demand.</t>

<t>Both <spanx style="verb">stark-vauban-pay-v1</spanx> and <spanx style="verb">hybrid-pqc</spanx> receipts carry the same <spanx style="verb">action_ref</spanx> bytes when bound to the same work event. This is the binding seam: a verifier confirms that the payment (receipt) and the work output (work-layer receipt referencing <spanx style="verb">action_ref</spanx>) are causally linked without coupling the two proof systems.</t>

<t>The same <spanx style="verb">action_ref</spanx> digest doubles as the anchor of the x402 composite trust-query <xref target="X402-COMPOSITE"/>. A composite trust-query is keyed by the pair <spanx style="verb">(payment_hash, action_ref)</spanx> and returns one independently verifiable evidence row per registered emitter. A receipt carrying an <spanx style="verb">action_ref</spanx> under this extension is therefore discoverable as the cryptographic row of such a query: the receipt and the composite envelope share the same 32-byte binding value with no further coupling. This extension defines only the receipt; the composite envelope, its row schema, its set-semantics row ordering, and its composite preimage construction <spanx style="verb">SHA-256(JCS([rows sorted by source identifier, signature fields excluded]))</spanx> are defined normatively by <xref target="X402-COMPOSITE"/> and are out of scope here. The <spanx style="verb">action_ref</spanx> field remains, for the purposes of this extension, an opaque 32-byte digest as specified above.</t>

<t>The <spanx style="verb">action_ref</spanx> field is OPTIONAL in all three receipt variants. A facilitator that does not support work-receipt binding MUST omit the field rather than emit a zero-value or null.</t>

<t>The verifier MUST NOT require <spanx style="verb">action_ref</spanx> to be present. A missing <spanx style="verb">action_ref</spanx> means no binding was asserted; it is not a validation error.</t>

</section>
<section anchor="composite-trust-query"><name>Composite Trust-Query (Axis 4)</name>

<t>This section provides an informative overview of the composite trust-query layer defined normatively by <xref target="X402-COMPOSITE"/>. Receipt-format implementations are not required to implement the composite trust-query; this section is provided for orientation.</t>

<section anchor="composite-hash"><name>Multi-Provider Composite Hash</name>

<t>When multiple compliance emitters each produce an evidence row for the same <spanx style="verb">(payment_hash, action_ref)</spanx> pair, a composite trust-query aggregates those rows into a single verifiable envelope. The composite hash is constructed as:</t>

<figure><artwork><![CDATA[
composite_hash = SHA-256(JCS([emitter_rows sorted by source_id, sig excluded]))
]]></artwork></figure>

<t>The set-semantics rule: row transmission order is NOT significant. Implementations MUST sort rows by <spanx style="verb">source_id</spanx> lexicographically before applying JCS canonicalisation and computing the composite hash. The resulting hash is independent of the order in which rows were received or transmitted.</t>

</section>
<section anchor="absent-row"><name>Absent-Row Partial Response</name>

<t>When a composite trust-query is issued for a <spanx style="verb">(payment_hash, action_ref)</spanx> pair and one or more registered emitters have not yet produced a row, the query response MUST be a partial response containing only the rows that are present. An absent row is NOT a failure; it indicates that the emitter has not yet responded or has not processed the corresponding event. Verifiers MUST NOT treat an absent row as equivalent to a DENY outcome.</t>

</section>
<section anchor="composite-trust-reference-implementation"><name>Reference Implementation</name>

<t>The reference implementation for the composite trust-query is specified in <spanx style="verb">specs/composite-trust-query.md</spanx> in the <xref target="X402-V2"/> repository, as developed under <xref target="X402-2440"/>. Vauban's Rust implementation of the composite trust-query conformance runner uses <spanx style="verb">serde_jcs 0.2.0</spanx> for JCS canonicalisation under Apache 2.0; cross-validation vectors are published in the public conformance repository at <eref target="https://github.com/vauban-org/x402-stark-receipts-conformance">https://github.com/vauban-org/x402-stark-receipts-conformance</eref>.</t>

</section>
</section>
<section anchor="felt252-encoding"><name>On-Chain felt252 Encoding</name>

<t>When a <spanx style="verb">stark-vauban-pay-v1</spanx> receipt is anchored on-chain on Starknet, the <spanx style="verb">action_ref</spanx> digest (32 bytes, 256-bit SHA-256 output) is stored in a Starknet felt252 field element. The Stark field prime is approximately 2^251.6. Implementations MUST apply the following deterministic mask before comparing the on-chain <spanx style="verb">keys[1]</spanx> field against a locally-computed <spanx style="verb">action_ref</spanx> value:</t>

<figure><artwork><![CDATA[
hash_felt252 = sha256_bigint & ((1 << 251) - 1)
]]></artwork></figure>

<t>This operation masks the SHA-256 output to 251 bits. It is a deterministic truncation, not a collision: two distinct SHA-256 digests that differ only in the upper 5 bits produce the same felt252 encoding. For receipt integrity purposes, the probability of such a collision is negligible (approximately 2^-251 per pair). Implementations MUST apply this mask consistently at both emission time and verification time. A verifier that compares the full 256-bit digest against the on-chain felt252 value without applying the mask will report a false verification failure for receipts whose SHA-256 digest has non-zero upper bits.</t>

<t>The canonical check is:</t>

<figure><artwork><![CDATA[
on_chain_key == SHA-256(action_ref_preimage) & ((1 << 251) - 1)
]]></artwork></figure>

<t>This applies to the <spanx style="verb">keys[1]</spanx> field in the Starknet <spanx style="verb">PaymentDemoEmitter</spanx> event schema (<xref target="reference-implementation"/>).</t>

</section>
<section anchor="payment-req-schema"><name>PaymentRequired Extension Schema</name>

<t>When a resource server supports <spanx style="verb">receipt-format</spanx> negotiation, it includes the extension in the <spanx style="verb">PaymentRequired</spanx> response body:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "x402Version": 2,
  "error": "Payment required",
  "resource": {
    "url": "https://api.example.com/compliance-check",
    "description": "Sanctions screening service; STARK receipt required for EU AI Act Art. 12"
  },
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "amount": "50000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "payTo": "0xPaymentAddress",
      "maxTimeoutSeconds": 60
    }
  ],
  "extensions": {
    "receipt-format": {
      "info": {
        "supported": ["stark-vauban-pay-v1", "hybrid-pqc", "classical-es256k"],
        "default": "classical-es256k"
      }
    }
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">receipt-format</spanx> extension fields in the <spanx style="verb">PaymentRequired</spanx> body are:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">supported</spanx></c>
      <c>string[]</c>
      <c>REQUIRED</c>
      <c>Ordered list of <spanx style="verb">receipt_format</spanx> tokens the facilitator can produce; descending preference.</c>
      <c><spanx style="verb">default</spanx></c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>Token to use if the client sends no <spanx style="verb">receipt_format</spanx> preference. MUST be present in <spanx style="verb">supported</spanx>. Defaults to <spanx style="verb">"classical-es256k"</spanx> if absent.</c>
</texttable>

</section>
<section anchor="payment-sig-schema"><name>PAYMENT-SIGNATURE Extension Schema</name>

<t>A client that requires a specific receipt format signals its preference in the <spanx style="verb">PAYMENT-SIGNATURE</spanx> request:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "extensions": {
    "receipt-format": {
      "info": {
        "required": false,
        "receipt_format": "hybrid-pqc"
      }
    }
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">receipt-format</spanx> extension fields in the <spanx style="verb">PAYMENT-SIGNATURE</spanx> body are:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">receipt_format</spanx></c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>The token the client requests.</c>
      <c><spanx style="verb">required</spanx></c>
      <c>boolean</c>
      <c>OPTIONAL</c>
      <c>If <spanx style="verb">true</spanx>, the facilitator MUST produce the requested variant or return HTTP 402 with <spanx style="verb">UnsupportedReceiptFormat</spanx>. Default: <spanx style="verb">false</spanx>.</c>
</texttable>

</section>
<section anchor="payment-resp-schema"><name>PAYMENT-RESPONSE Extension Schema</name>

<t>The facilitator confirms the emitted variant in the <spanx style="verb">PAYMENT-RESPONSE</spanx>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "extensions": {
    "receipt-format": {
      "info": {
        "receipt_format": "stark-vauban-pay-v1",
        "receipt": "<base64url-encoded-receipt-body>",
        "action_ref": "ENijjAHYZyF2qm5SCaNo_ePhgxZA1p4VKDFCS1iAwsE"
      }
    }
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">receipt-format</spanx> extension fields in the <spanx style="verb">PAYMENT-RESPONSE</spanx> body are:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">receipt_format</spanx></c>
      <c>string</c>
      <c>REQUIRED</c>
      <c>The token identifying which variant was produced.</c>
      <c><spanx style="verb">receipt</spanx></c>
      <c>string</c>
      <c>REQUIRED</c>
      <c>base64url-encoded receipt body. Format is variant-specific (see <xref target="variant-bodies"/>).</c>
      <c><spanx style="verb">action_ref</spanx></c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>base64url-encoded 32-byte work-receipt binding digest (<xref target="wire-binding"/>).</c>
</texttable>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="iana-registry"><name>Registry: x402 Receipt Format</name>

<t>This document requests IANA to create a new registry named <spanx style="verb">x402 Receipt Format</spanx> in the <spanx style="verb">x402 Protocol Extensions</spanx> registry group (to be established by the x402 Foundation TSC in coordination with IANA).</t>

<t><strong>Registration procedure</strong>: Specification Required (per <xref target="RFC8126"/> Section 4.6). A Designated Expert MUST review each registration request to confirm the specification is publicly available, the token follows the naming convention in <xref target="token-naming"/>, and no token collision exists with a currently registered value.</t>

<t><strong>Designated Experts</strong>: The initial Designated Experts pool MUST be selected by the x402 Foundation TSC at the time of registry creation. The TSC MAY rotate Designated Experts by consensus. A minimum of two active Designated Experts MUST be maintained at all times.</t>

<section anchor="registry-fields"><name>Registry Fields</name>

<t>Each registered value MUST include the following fields:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Name</c>
      <c>The <spanx style="verb">receipt_format</spanx> token string. MUST match <spanx style="verb">[a-z][a-z0-9-]*</spanx> (lowercase alphanumeric and hyphen).</c>
      <c>Reference</c>
      <c>URL to the specification or authoritative test fixture defining the wire format.</c>
      <c>Status</c>
      <c>One of: <spanx style="verb">Stable</spanx>, <spanx style="verb">Provisional</spanx>, <spanx style="verb">Deprecated</spanx>, <spanx style="verb">Obsolete</spanx>.</c>
      <c>Contact</c>
      <c>Name or organisation responsible for the registration.</c>
      <c>Notes</c>
      <c>Optional free-text notes on implementation or compatibility constraints.</c>
</texttable>

</section>
<section anchor="token-naming"><name>Naming Convention</name>

<t>New <spanx style="verb">receipt_format</spanx> tokens SHOULD follow the pattern <spanx style="verb">&lt;scheme&gt;-&lt;vendor-or-family&gt;-vN</spanx> (for example: <spanx style="verb">stark-vauban-pay-v1</spanx>, <spanx style="verb">hybrid-pqc</spanx>, <spanx style="verb">classical-es256k</spanx>). The pattern is RECOMMENDED for clarity but not enforced by the Designated Expert review. Tokens that deviate MUST include a <spanx style="verb">Notes</spanx> explanation.</t>

</section>
<section anchor="status-transitions"><name>Status Transitions</name>

<t><list style="symbols">
  <t><strong>Provisional to Stable</strong>: requires (a) two independent interoperable implementations whose conformance against the reference specification has been demonstrated publicly, and (b) the wire format has been stable for at least one year with no backwards-incompatible changes. A Designated Expert MUST confirm both conditions before updating status.</t>
  <t><strong>Stable to Deprecated</strong>: requires a vote by the x402 Foundation TSC with public notice of at least six months before the status change takes effect.</t>
  <t><strong>Deprecated to Obsolete</strong>: occurs automatically twelve months after the Deprecated status date, unless the TSC votes to extend the deprecation period.</t>
  <t><strong>Obsolete</strong>: verifiers MUST NOT accept receipts of Obsolete format variants. Facilitators MUST NOT produce Obsolete variants.</t>
</list></t>

</section>
<section anchor="initial-values"><name>Initial Registry Values</name>

<t>The following values are registered by this document:</t>

<texttable>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Contact</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c><spanx style="verb">stark-vauban-pay-v1</spanx></c>
      <c><xref target="VAUBAN-STARK-GIST"/></c>
      <c>Provisional</c>
      <c>Vauban Research</c>
      <c>Stwo Circle STARK M31 over payment-condition witness. CBOR-encoded body. ~100 KB.</c>
      <c><spanx style="verb">hybrid-pqc</spanx></c>
      <c><xref target="FEEDORACLE-GIST"/></c>
      <c>Provisional</c>
      <c>FeedOracle</c>
      <c>ES256K + ML-DSA-65 (<xref target="FIPS204"/>) dual-signature. JCS-canonical JSON body. ~3.3 KB.</c>
      <c><spanx style="verb">classical-es256k</spanx></c>
      <c><xref target="X402-V2"/> base specification</c>
      <c>Provisional</c>
      <c>x402 Foundation</c>
      <c>ES256K JWS Compact Serialization. Default fallback. ~0.5 KB.</c>
</texttable>

<t>These initial values are considered Provisional pending the Stable promotion criteria in <xref target="status-transitions"/>.</t>

</section>
</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="sec-preimage-order"><name>Canonical Preimage Validation Before Content Processing</name>

<t>Implementations MUST validate the canonical preimage discipline described in <xref target="preimage-discipline"/> BEFORE acting on any receipt content. Accepting a receipt whose <spanx style="verb">action_ref</spanx> was derived from a non-canonical preimage (float <spanx style="verb">timestamp_ms</spanx>, missing fields, duplicate keys, non-NFC strings) creates a binding gap: the receipt may appear structurally valid while the work-layer binding is silently broken. A verifier that processes receipt content before checking preimage validity cannot assert the causal link between the payment and the work event.</t>

</section>
<section anchor="sec-replay"><name>Replay Attack Mitigation</name>

<t>The <spanx style="verb">NullifierReplay</spanx> error code (<xref target="error-codes"/>) is the primary mechanism for preventing double-spend. Facilitators MUST maintain a nullifier store indexed by the settlement ledger and MUST reject any <spanx style="verb">PAYMENT-SIGNATURE</spanx> whose nullifier is already present. The <spanx style="verb">timestamp_ms</spanx> field in the <spanx style="verb">action_ref</spanx> preimage further bounds the replay window; facilitators SHOULD enforce a maximum <spanx style="verb">timestamp_ms</spanx> age aligned with the <spanx style="verb">maxTimeoutSeconds</spanx> field in the <spanx style="verb">PaymentRequired</spanx> response.</t>

</section>
<section anchor="sec-timing"><name>Timing Side-Channel Risks in STARK Proof Generation</name>

<t>STARK proof generation (the <spanx style="verb">stark-vauban-pay-v1</spanx> variant) is computationally intensive and its duration correlates with the witness size. On shared infrastructure, an adversary observing proof generation latency MAY be able to infer approximate witness content. Implementors SHOULD run proof generation in isolated compute environments (dedicated VMs or sandboxed processes) and SHOULD add randomised padding to the proof generation timeline where latency is observable by external parties.</t>

</section>
<section anchor="sec-privacy"><name>Privacy Implications of Receipt Sharing</name>

<t>A <spanx style="verb">stark-vauban-pay-v1</spanx> receipt proves payment conditions without revealing the witness (amount, currency, payer attestation, nullifier). However, the <spanx style="verb">action_ref</spanx> digest is deterministic given the preimage. If the preimage is known to an adversary (for example, because the <spanx style="verb">agent_id</spanx> and <spanx style="verb">scope</spanx> are public), the adversary can confirm whether a given payment was bound to a specific work event. Implementations that require unlinkability MUST use opaque, non-guessable <spanx style="verb">agent_id</spanx> and <spanx style="verb">scope</spanx> values.</t>

<t>The <spanx style="verb">hybrid-pqc</spanx> and <spanx style="verb">classical-es256k</spanx> receipts do not provide zero-knowledge properties. They carry the <spanx style="verb">receipt_core</spanx> in cleartext (JCS-canonical JSON). Parties sharing these receipts with third-party verifiers SHOULD be aware that the full payment conditions are visible to the verifier.</t>

</section>
<section anchor="sec-pq"><name>Forward Secrecy Under Quantum Adversary</name>

<t>The <spanx style="verb">hybrid-pqc</spanx> variant is designed to preserve receipt integrity if either ES256K or ML-DSA-65 is broken. However, it does not provide forward secrecy: an adversary that records receipts today and breaks ES256K or ML-DSA-65 in the future can verify the receipt. If forward secrecy is required, the <spanx style="verb">stark-vauban-pay-v1</spanx> variant provides post-quantum sound proof-of-payment-conditions; however, the STARK proof system itself is subject to future cryptanalysis. This document makes no claim about the long-term security of any specific proof system configuration.</t>

</section>
<section anchor="sec-facilitator-trust"><name>Facilitator Trust Boundary</name>

<t>The security model of this extension assumes facilitator integrity for receipt issuance. A compromised facilitator can issue false receipts regardless of the cryptographic variant. The extension does not provide a mechanism to verify that the facilitator was itself uncompromised at the time of issuance. Verifiers that require a trust-minimised settlement proof SHOULD combine the <spanx style="verb">stark-vauban-pay-v1</spanx> receipt with an on-chain settlement anchor (separate from this extension).</t>

</section>
<section anchor="sec-retention-determinism"><name>Retention-Property Determinism (Cross-Observer-Across-Time)</name>

<t>The canonical preimage discipline in <xref target="preimage-discipline"/> produces a digest that two observers verifying at the same instant compute identically. For receipts emitted under a regulatory framework with a statutory retention obligation, the property MUST also hold across time: a supervisor or auditor re-verifying in year N against a retained off-VM manifest of the receipt MUST reproduce the same digest as the original verifier did at issuance time.</t>

<t>This raises a versioning concern. If the canonical rule (JCS, type-validation, field-name canonicalisation, Unicode normalisation policy) is revised between issuance and re-verification, the retained receipt becomes unreproducible under the then-current rule. Verifier-side coercion of non-conforming inputs (rather than rejection) further breaks re-verifiability because the coercion step is verifier-local and is not replayed at audit time.</t>

<t>Producers emitting receipts under frameworks with statutory retention obligations (for example, MiCA Art. 80, AMLR Art. 56, DORA Art. 14) MUST therefore:</t>

<t><list style="symbols">
  <t>Include the canonicalisation version marker in a <spanx style="verb">canon_version</spanx> field in the receipt preimage at emission time. The value MUST be a registered x402 canonicalisation version identifier; the discipline defined in <xref target="X402-CANON"/> is identified by <spanx style="verb">jcs-rfc8785-v1</spanx> (URI <spanx style="verb">urn:x402:canonicalisation:jcs-rfc8785-v1</spanx>). A future verifier selects the contemporaneous rule by this marker rather than applying the then-current rule.</t>
  <t>Reject (not coerce) non-conforming inputs at the parse or schema-validation step, preserving re-verifiability against the raw retained object.</t>
</list></t>

<t>Producers emitting receipts outside such frameworks SHOULD include <spanx style="verb">canon_version</spanx> as a good-discipline default; the field becomes a MUST under any framework that imposes a statutory retention horizon. This subsection profiles the shared x402 canonicalisation discipline <xref target="X402-CANON"/> for the retention case: it requires the version marker to be persisted in the receipt preimage so that re-verification under a statutory retention horizon is reproducible.</t>

</section>
<section anchor="sec-felt252"><name>felt252 Mask and On-Chain Comparison</name>

<t>The felt252 masking operation described in <xref target="felt252-encoding"/> is a deterministic transformation, not a cryptographic weakening. However, implementations that omit the mask at verification time will silently produce false-negative verification results for receipts whose SHA-256 digest has non-zero bits in positions 251-255. Such false negatives do not create a security vulnerability (they deny valid receipts rather than accept invalid ones), but they create an operational failure mode in production payment pipelines. Implementations SHOULD test the mask against a receipt whose <spanx style="verb">action_ref</spanx> digest has a known non-zero high bit before deploying to production.</t>

</section>
<section anchor="sec-open-questions"><name>Open Research Conjectures</name>

<t>Section 10 of the Vauban zkpay specification contains research conjectures about the composition properties of payment claims under the Vauban Proof Stack Framework. These conjectures have not been peer-reviewed at the time of this writing. Implementors SHOULD treat them as working hypotheses. A companion paper is planned for submission to IACR ePrint; readers are directed there for the formal treatment once published.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>

<reference anchor="RFC7235">
  <front>
    <title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypermedia information systems. This document defines the HTTP Authentication framework.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7235"/>
  <seriesInfo name="DOI" value="10.17487/RFC7235"/>
</reference>

<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>

<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>

<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>

<reference anchor="RFC8949">
  <front>
    <title>Concise Binary Object Representation (CBOR)</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <date month="December" year="2020"/>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
      <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="94"/>
  <seriesInfo name="RFC" value="8949"/>
  <seriesInfo name="DOI" value="10.17487/RFC8949"/>
</reference>

<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>


<reference anchor="FIPS204" target="https://doi.org/10.6028/NIST.FIPS.204">
  <front>
    <title>Module-Lattice-Based Digital Signature Standard (ML-DSA-65)</title>
    <author >
      <organization>National Institute of Standards and Technology</organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="UAX15" target="https://www.unicode.org/reports/tr15/">
  <front>
    <title>Unicode Normalization Forms</title>
    <author >
      <organization>Unicode Consortium</organization>
    </author>
    <date year="2023"/>
  </front>
  <seriesInfo name="Unicode Standard Annex" value="#15"/>
</reference>
<reference anchor="X402-V2" target="https://github.com/x402-foundation/x402">
  <front>
    <title>x402 Linux Foundation V2 Working Group</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2357" target="https://github.com/x402-foundation/x402/issues/2357">
  <front>
    <title>x402 STARK Receipts Extension Proposal</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2398" target="https://github.com/x402-foundation/x402/pull/2398">
  <front>
    <title>action-ref-verify conformance vectors</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2322" target="https://github.com/x402-foundation/x402/issues/2322">
  <front>
    <title>x402 evidenceType taxonomy and composite trust-query alignment (discussion thread)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2326" target="https://github.com/x402-foundation/x402/issues/2326">
  <front>
    <title>x402 shared canonicalisation discipline (coalition discussion thread)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2411" target="https://github.com/x402-foundation/x402/pull/2411">
  <front>
    <title>Hybrid-PQC receipt-core fixture set (Axis 2)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2412" target="https://github.com/x402-foundation/x402/pull/2412">
  <front>
    <title>Canonicalisation substrate v0 fixtures (Axis 0, 53 vectors)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2413" target="https://github.com/x402-foundation/x402/pull/2413">
  <front>
    <title>stark-vauban-pay-v1 v0 fixtures (Axis 1)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2434" target="https://github.com/x402-foundation/x402/pull/2434">
  <front>
    <title>risk-check-attestation-sample v0 (compliance-receipt fixture, ALLOW/DENY/REFER)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-2440" target="https://github.com/x402-foundation/x402/pull/2440">
  <front>
    <title>Composite trust-query normative layer (Axis 4)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="X402-CANON" target="urn:x402:canonicalisation:jcs-rfc8785-v1">
  <front>
    <title>x402 Shared Canonicalisation Discipline (jcs-rfc8785-v1)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="x402 Protocol Specs" value="specs/canonicalisation.md"/>
</reference>
<reference anchor="X402-COMPOSITE" target="urn:x402:composite-trust-query:v1">
  <front>
    <title>x402 Composite Trust-Query (Axis 4 assembly-and-binding layer)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="x402 Protocol Specs" value="specs/composite-trust-query.md"/>
</reference>
<reference anchor="VAUBAN-STARK-GIST" target="https://github.com/vauban-org/x402-stark-receipts-conformance">
  <front>
    <title>Vauban STARK receipt conformance vectors (public)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="FEEDORACLE-GIST" target="https://gist.github.com/feedoracle/704ab891170e2b43050f6f0ae00e6923">
  <front>
    <title>FeedOracle hybrid-PQC receipt fixture</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="ANDYSALVO-GIST" target="https://gist.github.com/andysalvo/763a410497454ce78be0fd9dae26a6b4">
  <front>
    <title>andysalvo action-ref-verify v0.3.0</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="VAUBAN-DEMO" target="https://demo.pay.vauban.tech">
  <front>
    <title>Vauban Pay reference demo (Starknet Sepolia)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 654?>

<section anchor="variant-bodies"><name>Variant-Specific Receipt Bodies</name>

<section anchor="stark-body"><name>stark-vauban-pay-v1</name>

<t>The receipt body is CBOR-encoded (<xref target="RFC8949"/> canonical CBOR Section 4.2.1). The STARK proof attests to a circuit that verifies:</t>

<t><list style="symbols">
  <t>Payment amount matches the signed <spanx style="verb">PaymentRequirements.amount</spanx>.</t>
  <t>Currency asset address matches <spanx style="verb">PaymentRequirements.asset</spanx>.</t>
  <t>Payer attestation is valid (subject to merchant <spanx style="verb">HumanityGate</spanx> configuration).</t>
  <t>Nullifier is unique (no replay for this nullifier in the settlement ledger).</t>
</list></t>

<t>The canonical CBOR bytes layout for the <spanx style="verb">stark-vauban-pay-v1</spanx> variant is documented in the public conformance repository (<xref target="VAUBAN-STARK-GIST"/>). Wire format: <xref target="RFC8949"/> canonical CBOR Section 4.2.1, base64url no-pad encoding per <xref target="RFC4648"/> Section 5. The Vauban Pay reference implementation (Apache 2.0) is planned for public release at Phase 1+ per the project roadmap.</t>

<t>When a <spanx style="verb">stark-vauban-pay-v1</spanx> receipt is anchored on Starknet, the felt252 mask described in <xref target="felt252-encoding"/> MUST be applied before writing or comparing the <spanx style="verb">action_ref</spanx> value in <spanx style="verb">keys[1]</spanx> of the on-chain event.</t>

<t>Implementations of the <spanx style="verb">stark-vauban-pay-v1</spanx> variant MUST be conformance test vector-compatible with <xref target="VAUBAN-STARK-GIST"/> as published. Verifiers MUST use the published circuit parameters. Out-of-band circuit versioning is outside the scope of this extension; the <spanx style="verb">stark-vauban-pay-v1</spanx> token is a stable identifier for the v1 circuit.</t>

</section>
<section anchor="hybrid-body"><name>hybrid-pqc</name>

<t>The receipt body is a JSON object (<xref target="RFC8259"/>) with the following top-level fields, JCS-canonical (<xref target="RFC8785"/>):</t>

<t><list style="symbols">
  <t><spanx style="verb">receipt_core</spanx>: JSON object; the canonical payload signed by both algorithms.</t>
  <t><spanx style="verb">signature</spanx>: ES256K signature over <spanx style="verb">SHA-256(UTF-8(JCS(receipt_core)))</spanx>, base64url-encoded.</t>
  <t><spanx style="verb">pqc_signature</spanx>: ML-DSA-65 (<xref target="FIPS204"/>) signature over the identical canonical bytes, base64url-encoded.</t>
  <t><spanx style="verb">kid_es256k</spanx>: Key identifier for the ES256K key in the facilitator's JWKS endpoint.</t>
  <t><spanx style="verb">kid_mldsa65</spanx>: Key identifier for the ML-DSA-65 key in the facilitator's JWKS endpoint.</t>
</list></t>

<t>Both signatures cover the identical canonical byte string. Verifiers MUST confirm both signatures independently. A verifier that can only verify ES256K SHOULD still check <spanx style="verb">pqc_signature</spanx> length and structure for plausibility.</t>

<t>The FeedOracle reference implementation is at <xref target="FEEDORACLE-GIST"/> (standalone Python verifier, no facilitator callback).</t>

</section>
<section anchor="classical-body"><name>classical-es256k</name>

<t>The receipt body is a JWS Compact Serialization string (<xref target="RFC7515"/>). The JWS payload contains the canonical <spanx style="verb">payment_hash</spanx> and optionally <spanx style="verb">action_ref</spanx>. This is the default fallback for clients that do not require ZK or post-quantum properties.</t>

</section>
</section>
<section anchor="reference-implementation"><name>Reference Implementation</name>

<t>The Vauban Pay reference implementation is accessible at <xref target="VAUBAN-DEMO"/> (<spanx style="verb">demo.pay.vauban.tech</spanx>). It demonstrates the full <spanx style="verb">stark-vauban-pay-v1</spanx> flow on Starknet Sepolia.</t>

<section anchor="on-chain-contract"><name>On-Chain Contract</name>

<t>The <spanx style="verb">PaymentDemoEmitter</spanx> contract is deployed on Starknet Sepolia at:</t>

<figure><artwork><![CDATA[
0x044dd87a94a801cf775d4c5e4b6703102d4e97e1cd1d0a8879341219ae4f19ff
]]></artwork></figure>

<t>This contract emits a Starknet event for each completed payment, with <spanx style="verb">keys[0]</spanx> holding the <spanx style="verb">payment_hash</spanx> and <spanx style="verb">keys[1]</spanx> holding the felt252-masked <spanx style="verb">action_ref</spanx> digest (per <xref target="felt252-encoding"/>).</t>

<t>Transactions can be inspected via the Voyager block explorer at <spanx style="verb">https://sepolia.voyager.online</spanx>.</t>

</section>
<section anchor="zero-trust-verifier"><name>Zero-Trust Verifier</name>

<t>The reference verifier operates without authentication. Any party can verify any receipt using:</t>

<t><list style="numbers" type="1">
  <t>The Web Crypto API (browser-native, no server call required).</t>
  <t>A direct Starknet RPC query to <spanx style="verb">https://sepolia.rpc.vauban.tech/rpc/v0_10</spanx> (Pathfinder node, spec v0.10.2).</t>
  <t>The felt252 mask applied per <xref target="felt252-encoding"/> before comparing the locally-computed <spanx style="verb">action_ref</spanx> against <spanx style="verb">keys[1]</spanx>.</t>
</list></t>

<t>The verifier does not contact the Vauban Pay facilitator server. The proof of settlement is the on-chain event; the facilitator is not in the verification critical path.</t>

</section>
<section anchor="five-implementation-cross-validation-evidence"><name>Five-Implementation Cross-Validation Evidence</name>

<t>The ALLOW/DENY/REFER conformance vectors published in <xref target="X402-2434"/> have been independently validated by:</t>

<texttable>
      <ttcol align='left'>Library</ttcol>
      <ttcol align='left'>Language</ttcol>
      <ttcol align='left'>Author lineage</ttcol>
      <ttcol align='left'>Result</ttcol>
      <c>serde_jcs 0.2.0</c>
      <c>Rust</c>
      <c>l1h3r; Vauban Pay runner</c>
      <c>3/3 PASS</c>
      <c>jcs (npm)</c>
      <c>JavaScript</c>
      <c>Erdtman + Rundgren</c>
      <c>3/3 PASS</c>
      <c>python-canonicaljson</c>
      <c>Python</c>
      <c>Trail of Bits</c>
      <c>3/3 PASS</c>
      <c>Go standard library</c>
      <c>Go</c>
      <c>GoWebPKI</c>
      <c>3/3 PASS</c>
      <c>Jackson</c>
      <c>Java</c>
      <c>Rundgren (RFC 8785 reference)</c>
      <c>3/3 PASS</c>
</texttable>

<t>Aggregate result: 15/15 byte-for-byte agreements across all three conformance vectors (ALLOW, DENY, REFER). The cross-validation against publicly available JCS conformance suites was confirmed independently against the Vauban Rust runner output.</t>

</section>
</section>
<section anchor="conformance"><name>Conformance Checklist</name>

<t>An implementation claiming conformance to this extension MUST:</t>

<t><list style="symbols">
  <t>Produce and parse all three receipt format tokens.</t>
  <t>Set <spanx style="verb">X-Payment-Options</spanx> on 402 responses listing supported tokens.</t>
  <t>Set <spanx style="verb">X-Receipt-Format</spanx> on all <spanx style="verb">PAYMENT-RESPONSE</spanx> messages.</t>
  <t>Fall back to <spanx style="verb">classical-es256k</spanx> when the client sends no <spanx style="verb">receipt_format</spanx> preference.</t>
  <t>Return HTTP 402 with <spanx style="verb">UnsupportedReceiptFormat</spanx> when a client requests a variant with <spanx style="verb">required: true</spanx> that the facilitator cannot produce.</t>
  <t>Reject float values for <spanx style="verb">timestamp_ms</spanx> before JCS canonicalisation.</t>
  <t>Reject preimage objects with missing canonical fields before JCS canonicalisation.</t>
  <t>Reject preimage objects with duplicate keys at parse time.</t>
  <t>Normalise all preimage string values to NFC per <xref target="UAX15"/> before JCS canonicalisation, and reject non-NFC input (<xref target="unicode-normalisation"/>).</t>
  <t>Pass every vector in <spanx style="verb">fixtures/action-ref-verify/v0/</spanx> from <xref target="X402-2398"/>.</t>
  <t>Pass the x402 canonicalisation conformance set <xref target="X402-CANON"/> for the <spanx style="verb">action_ref</spanx> preimage profile (object key order, array order, optional fields, scalar form, Unicode NFC versus NFD, timestamp lexical form, field-name canonicalisation).</t>
  <t>Apply the felt252 mask (<xref target="felt252-encoding"/>) consistently at both emission and verification time when anchoring receipts on Starknet.</t>
</list></t>

<t>Proposed companion vectors (pending x402 TSC review; to ship in a follow-up fixtures pull request):</t>

<t><list style="symbols">
  <t><spanx style="verb">0010-duplicate-keys</spanx> (<xref target="type-validation"/>)</t>
  <t><spanx style="verb">0011-unicode-normalisation</spanx> (<xref target="unicode-normalisation"/>)</t>
  <t><spanx style="verb">0012-missing-canonical-field</spanx> (<xref target="type-validation"/>)</t>
</list></t>

<t>On landing of this extension, the following IANA registry initial values MUST be submitted per <xref target="iana-considerations"/>:</t>

<t><list style="symbols">
  <t>Register <spanx style="verb">stark-vauban-pay-v1</spanx> (Status: Provisional; Contact: Vauban Research).</t>
  <t>Register <spanx style="verb">hybrid-pqc</spanx> (Status: Provisional; Contact: FeedOracle).</t>
  <t>Register <spanx style="verb">classical-es256k</spanx> (Status: Provisional; Contact: x402 Foundation).</t>
</list></t>

</section>
<section numbered="false" anchor="known-adopters-and-reference-implementations"><name>Known Adopters and Reference Implementations</name>

<t>This appendix documents reference implementations and adopters of this specification confirmed at the time of publication. The list is informational and will be updated in subsequent revisions as additional implementations are reported.</t>

<section numbered="false" anchor="primary-maintainer"><name>Primary Maintainer</name>

<t>Vauban Pay (<spanx style="verb">https://pay.vauban.tech</spanx>) maintains the reference specification, the published conformance vectors (<spanx style="verb">https://github.com/vauban-org/x402-stark-receipts-conformance</spanx>), and the reference implementations listed below. The Vauban Pay live demonstration emits compliant payloads at <spanx style="verb">https://demo.pay.vauban.tech</spanx>. The on-chain anchor <spanx style="verb">PaymentDemoEmitter</spanx> is deployed on Starknet Sepolia at contract <spanx style="verb">0x044dd87a94a801cf775d4c5e4b6703102d4e97e1cd1d0a8879341219ae4f19ff</spanx> (Voyager-verified at <spanx style="verb">https://sepolia.voyager.online/contract/0x044dd87a94a801cf775d4c5e4b6703102d4e97e1cd1d0a8879341219ae4f19ff</spanx>).</t>

</section>
<section numbered="false" anchor="reference-implementation-matrix"><name>Reference Implementation Matrix</name>

<t>The conformance vector suite maintains an 8-implementation reference matrix across 8 languages :</t>

<texttable>
      <ttcol align='left'>Language</ttcol>
      <ttcol align='left'>Library or Runner</ttcol>
      <ttcol align='left'>Validation status</ttcol>
      <c>Python</c>
      <c>rfc8785@0.1.4 (Trail of Bits)</c>
      <c>validated 11/11 byte-for-byte</c>
      <c>JavaScript</c>
      <c>canonicalize@3.0.0 (Erdtman + Rundgren)</c>
      <c>validated 11/11 byte-for-byte</c>
      <c>Go</c>
      <c>gowebpki/jcs v1.0.1</c>
      <c>validated 11/11 byte-for-byte</c>
      <c>Java</c>
      <c>cyberphone/json-canonicalization (RFC 8785 reference)</c>
      <c>validated 11/11 byte-for-byte</c>
      <c>Rust</c>
      <c>serde_jcs 0.2.0 (l1h3r) via vauban-x402-jcs-conformance</c>
      <c>validated 11/11 byte-for-byte</c>
      <c>PHP</c>
      <c>runners/runner.php (pure stdlib, PHP 8.0+)</c>
      <c>reference, CI-pending</c>
      <c>Ruby</c>
      <c>runners/runner.rb (pure stdlib, Ruby 3.0+)</c>
      <c>reference, CI-pending</c>
      <c>C#</c>
      <c>runners/runner.cs (pure stdlib, .NET 8)</c>
      <c>reference, CI-pending</c>
</texttable>

<t>The published Vauban Pay packages across 3 ecosystems : <spanx style="verb">vauban-x402-jcs-conformance@0.1.0</spanx>, <spanx style="verb">vauban-x402-canonical@0.1.0</spanx>, <spanx style="verb">vauban-x402-wire@0.1.0</spanx> on crates.io ; <spanx style="verb">vauban-x402-stark-receipt@0.1.0</spanx> on PyPI ; <spanx style="verb">@vauban-pay/substrate@0.1.0</spanx> on npm.</t>

<t>Validation methodology is documented in <spanx style="verb">_attestations/2026-05-25-vauban-cross-impl.md</spanx> (5-implementation actually-validated) and <spanx style="verb">_attestations/2026-05-25-vauban-8-impl-extended.md</spanx> (extended 8-implementation matrix with honest scoping) in the conformance vectors repository.</t>

</section>
<section numbered="false" anchor="adoption-process"><name>Adoption Process</name>

<t>Implementers SHOULD notify the IETF contact at <spanx style="verb">research@vauban.tech</spanx> when adopting this specification in production. Adoption notifications include the production endpoint or product identifier, the <spanx style="verb">canon_version</spanx> value emitted, the cross-axis interop binding pattern used if applicable, the JCS implementation library and version, and the contact for follow-on coordination. Reported adopters will be listed in the next revision of this appendix following a verification step against the conformance vector matrix.</t>

</section>
</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The author thanks the x402 coalition contributors who participated in the three-implementation consensus <xref target="X402-2357"/> (2026-05-19), in particular the FeedOracle hybrid-PQC reference implementation (<xref target="X402-2411"/>) and the action-ref-verify v0.3.0 implementation (<xref target="X402-2398"/> review track). The JCS canonicalisation discipline referenced in <xref target="preimage-discipline"/> is publicly documented in the <spanx style="verb">urn:x402:canonicalisation:jcs-rfc8785-v1</spanx> substrate and validated by independent runner implementations against published conformance suites.</t>

<t>The author also thanks Nobulex (<spanx style="verb">arian-gogani</spanx>; bilateral-receipt evidence row in the composite trust-query Axis 4 fixture, aligned with <xref target="X402-COMPOSITE"/>).</t>

<t>A reference Rust 5th-implementation runner for the JCS preimage discipline is published as the <spanx style="verb">vauban-x402-jcs-conformance</spanx> crate (Apache-2.0, Vauban Research), cross-validating 32 vectors and 28 pair invariants byte-identical against publicly available JCS conformance suites.</t>

<t>The shared x402 canonicalisation discipline <xref target="X402-CANON"/>, developed in the <xref target="X402-2326"/> discussion thread, defines the rules this extension profiles, including cross-observer-across-time determinism for receipts emitted under statutory retention obligations. The x402 composite trust-query <xref target="X402-COMPOSITE"/> defines the Axis 4 assembly-and-binding layer to which the <spanx style="verb">action_ref</spanx> digest of this extension serves as anchor.</t>

</section>


  </back>

<!-- ##markdown-source:
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
7G79PwZuiDY/2wAA

-->

</rfc>

