<?xml version="1.0" encoding="utf-8"?>
<rfc ipr="trust200902" docName="draft-wang-jep-receipt-profile-00" category="exp" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <front>
    <title abbrev="JEP Receipt Profile">JEP Receipt Profile: Verifiable Behavior and Evidence Receipts</title>
    <seriesInfo name="Internet-Draft" value="draft-wang-jep-receipt-profile-00"/>
    <author initials="Y." surname="Wang" fullname="Yuqiang Wang">
      <organization/>
      <address>
        <email>signal@humanjudgment.org</email>
        <uri>https://github.com/hjs-spec</uri>
      </address>
    </author>
    <date year="2026" month="September" day="26"/>
    <keyword>JEP</keyword>
    <keyword>receipts</keyword>
    <keyword>evidence</keyword>
    <keyword>AI agents</keyword>
    <abstract>
      <t>This document defines JEP Receipt Profile 1 (JEP-RP-1), a minimal receipt and evidence profile for the Judgment Event Protocol (JEP) <xref target="JEP"/>.</t>
      <t>JEP-RP-1 binds a JEP event to one digest-addressed receipt record through a critical JEP extension. It defines a small behavior-record format, portable receipt manifests and bundles, and independent receipt-validation checks. JEP remains authoritative for event verbs, Event Identity, Event Hash, signature processing, references, extension processing, validation modes, and acceptance semantics.</t>
      <t>Receipt records are technical evidence about observable behavior and related artifacts. JEP-RP-1 does not assign legal liability, prove subjective intent, establish authorization validity, determine causality or factual truth, define governance outcomes, or establish regulatory compliance.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro"><name>Introduction</name>
      <t>AI agents and automated services increasingly act across platforms, organizations, tools, and jurisdictions. Operators, counterparties, auditors, and downstream systems may need a portable record showing that a specific JEP event was cryptographically bound to a specific behavior or receipt record.</t>
      <t>JEP-RP-1 provides that receipt layer.</t>
      <t>The narrow profile question is:</t>
      <sourcecode type="text"><![CDATA[
Which JEP event was signed,
which receipt record was bound to it,
and can that binding be independently revalidated?
]]></sourcecode>
      <t>The profile deliberately does not answer whether the recorded action was correct, authorized, fair, lawful, causally complete, or sufficient for an external policy.</t>
      <t>JEP Profiles <xref target="JEP-PROFILES"/> defines the general profile-selection and composition model. JEP Conformance <xref target="JEP-CONFORMANCE"/> defines executable Core validation-result and test-harness conventions used by Receipt Profile implementations.</t>
      <t>Earlier work used the technical name HJS in <tt>draft-wang-hjs-accountability</tt>. This document uses a new Internet-Draft filename and is intended to replace that draft series. The protocol component name is JEP Receipt Profile. Organizational names are outside the protocol namespace.</t>
      <t>Where this document conflicts with JEP-Core, JEP-Core controls.</t>
    </section>
    <section anchor="requirements"><name>Requirements Language</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.</t>
    </section>
    <section anchor="scope-layering"><name>Scope and Layering</name>
      <section anchor="defines"><name>JEP-RP-1 Defines</name>
      <t>JEP-RP-1 defines:</t>
      <ul spacing="normal">
        <li>one explicit Receipt Profile identifier;</li>
        <li>one critical receipt-binding extension;</li>
        <li>one minimal behavior-record format;</li>
        <li>one receipt-manifest format;</li>
        <li>receipt-bundle packaging semantics;</li>
        <li>independent receipt-validation checks;</li>
        <li>privacy and non-inference requirements.</li>
      </ul>
      </section>
      <section anchor="non-goals"><name>JEP-RP-1 Does Not Define</name>
      <t>JEP-RP-1 does not define:</t>
      <ul spacing="normal">
        <li>new JEP verbs;</li>
        <li>an independent signature format;</li>
        <li>a replacement for Event Identity or Event Hash;</li>
        <li>chain causality or complete-log semantics;</li>
        <li>authorization or delegation validity;</li>
        <li>legal liability, fault, intent, negligence, consent, fairness, or harm;</li>
        <li>regulatory compliance;</li>
        <li>monitoring duties, sanctions, remedies, or appeal rights;</li>
        <li>a global identity or trust framework;</li>
        <li>a mandatory archive format;</li>
        <li>a global model, tool, risk, or policy taxonomy.</li>
      </ul>
      </section>
      <section anchor="jep-ownership"><name>JEP Ownership</name>
      <t>JEP-Core is authoritative for:</t>
      <ul spacing="normal">
        <li>J, D, T, and V semantics;</li>
        <li>required Core event fields;</li>
        <li>Event Identity <tt>(who,id)</tt>;</li>
        <li>Event Hash;</li>
        <li>the JEP Signing Payload;</li>
        <li>signature processing;</li>
        <li><tt>ref</tt>;</li>
        <li><tt>ext</tt> and <tt>ext_crit</tt>;</li>
        <li>independent Core validation checks;</li>
        <li>validation modes;</li>
        <li>acceptance outcomes and idempotent acceptance.</li>
      </ul>
      <t>JEP-RP-1 MUST NOT redefine those semantics.</t>
      </section>
      <section anchor="actor-signer-agent"><name>Actor, Signer, and Observed Agent</name>
      <t>JEP-RP-1 distinguishes three concepts:</t>
      <ul spacing="normal">
        <li><strong>JEP actor</strong>: the actor claimed by the JEP <tt>who</tt> field;</li>
        <li><strong>signer</strong>: the key holder that produced the JEP signature;</li>
        <li><strong>observed agent</strong>: the AI agent, runtime, service, or automated component described by the behavior record.</li>
      </ul>
      <t>These MAY refer to the same entity, but JEP-RP-1 MUST NOT assume that they do.</t>
      <t>Actor/key binding is determined by the selected trust profile.</t>
      <t>The observed-agent identifier is evidence content. It does not establish that the observed agent controlled the signing key or emitted the JEP event.</t>
      </section>
    </section>
    <section anchor="identifiers"><name>Profile and Extension Identifiers</name>
      <section anchor="profile-id"><name>Receipt Profile Identifier</name>
      <t>The JEP-RP-1 profile identifier is:</t>
      <sourcecode type="text"><![CDATA[
https://humanjudgment.org/jep/profiles/receipt/1
]]></sourcecode>
      <t>The human-readable label <tt>JEP-RP-1</tt> MAY be used in documentation and user interfaces.</t>
      <t>The profile identifier is a publisher-controlled HTTPS URI. Dereferencing it is not required for validation. The publisher SHOULD keep the URI stable and SHOULD make profile documentation available there when practical.</t>
      </section>
      <section anchor="binding-ext-id"><name>Receipt-Binding Extension Identifier</name>
      <t>The JEP-RP-1 receipt-binding extension identifier is:</t>
      <sourcecode type="text"><![CDATA[
https://humanjudgment.org/jep/extensions/receipt-binding/1
]]></sourcecode>
      <t>An event claiming JEP-RP-1 conformance MUST carry this extension under JEP <tt>ext</tt> and MUST list the identifier in <tt>ext_crit</tt>.</t>
      <t>A verifier that does not understand this critical extension cannot claim successful JEP-RP-1 validation.</t>
      </section>
      <section anchor="version-boundary"><name>Version and Naming Boundary</name>
      <t>JEP-RP-1 is not wire-compatible with the HJS-Core-1 binding model used by <tt>draft-wang-hjs-accountability-05</tt>.</t>
      <t>HJS-Core-1 commonly placed an external record digest in JEP <tt>what</tt>. That model is not a valid generic binding rule for JEP-Core 0.7 because D, T, and V have verb-specific required <tt>what</tt> members.</t>
      <t>JEP-RP-1 therefore moves receipt binding into a critical JEP extension and leaves Core <tt>what</tt> semantics entirely under JEP-Core.</t>
      <t>Historical HJS-Core-1 receipts MUST NOT be silently rewritten as JEP-RP-1 receipts.</t>
      </section>
    </section>
    <section anchor="event-model"><name>Receipt Event Model</name>
      <section anchor="receipt-event"><name>Receipt Event</name>
      <t>A JEP-RP-1 Receipt Event is a JEP-Core event that:</t>
      <ul spacing="normal">
        <li>validates under the requested JEP validation mode and selected profiles;</li>
        <li>carries the JEP-RP-1 receipt-binding extension;</li>
        <li>lists that extension in <tt>ext_crit</tt>;</li>
        <li>binds exactly one primary receipt record by digest.</li>
      </ul>
      <t>The underlying JEP verb remains authoritative.</t>
      </section>
      <section anchor="verbs"><name>Use of J, D, T, and V</name>
      <t>JEP-RP-1 does not assign new meanings to J, D, T, or V.</t>
      <t>A producer MUST satisfy the JEP-Core requirements for the selected verb before receipt binding is considered.</t>
      <t>In particular:</t>
      <ul spacing="normal">
        <li>a D event MUST retain the Core D <tt>what.delegatee</tt> and <tt>what.scope</tt> semantics;</li>
        <li>a T event MUST retain the Core T <tt>what.termination_scope</tt> and <tt>ref</tt> semantics;</li>
        <li>a V event MUST retain the Core V <tt>what.verification_scope</tt>, <tt>what.result</tt>, and <tt>ref</tt> semantics.</li>
      </ul>
      <t>Receipt metadata MUST NOT replace those Core fields.</t>
      </section>
      <section anchor="who"><name><tt>who</tt></name>
      <t>The JEP <tt>who</tt> field identifies the actor claimed by the Receipt Event.</t>
      <t>JEP-RP-1 MUST NOT describe <tt>who</tt> as a verified signer identity unless the applicable actor-binding check actually passed.</t>
      <t><tt>who</tt> SHOULD NOT contain plaintext personal information unless the deployment requires that form and has an appropriate privacy basis.</t>
      </section>
      <section anchor="ref"><name><tt>ref</tt></name>
      <t>JEP-RP-1 uses JEP <tt>ref</tt> exactly as defined by JEP-Core.</t>
      <t>A logical reference to another JEP event SHOULD use Event Identity. An optional Event Hash MAY pin an exact signed artifact.</t>
      <t>JEP-RP-1 MUST NOT use Event Hash as a substitute for stable Event Identity when the reference is logically about an event.</t>
      <t>The presence of a JEP reference does not establish causality, completeness, authorization, endorsement, or legal effect.</t>
      </section>
    </section>
    <section anchor="binding-extension"><name>Receipt-Binding Extension</name>
      <section anchor="extension-value"><name>Extension Value</name>
      <t>The receipt-binding extension value MUST be a JSON object containing:</t>
      <ul spacing="normal">
        <li><tt>profile</tt></li>
        <li><tt>record_type</tt></li>
        <li><tt>record_digest</tt></li>
        <li><tt>media_type</tt></li>
      </ul>
      <t><tt>profile</tt> MUST equal <tt>https://humanjudgment.org/jep/profiles/receipt/1</tt>.</t>
      <t><tt>record_type</tt> MUST be one of:</t>
      <ul spacing="normal">
        <li><tt>behavior</tt></li>
        <li><tt>receipt-manifest</tt></li>
      </ul>
      <t><tt>record_digest</tt> MUST be an algorithm-tagged digest string conforming to the JEP digest-string rules.</t>
      <t><tt>media_type</tt> MUST be a non-empty string. JEP-RP-1 JSON records use <tt>application/json</tt>.</t>
      <t>The extension MAY additionally contain <tt>record_uri</tt>. If present, <tt>record_uri</tt> is a retrieval hint only. Validation MUST NOT depend solely on trusting the retrieved location.</t>
      </section>
      <section anchor="extension-example"><name>Extension Example</name>
      <sourcecode type="json"><![CDATA[
{
  "ext": {
    "https://humanjudgment.org/jep/extensions/receipt-binding/1": {
      "profile": "https://humanjudgment.org/jep/profiles/receipt/1",
      "record_type": "behavior",
      "record_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "media_type": "application/json"
    }
  },
  "ext_crit": [
    "https://humanjudgment.org/jep/extensions/receipt-binding/1"
  ]
}
]]></sourcecode>
      <t>The example digest is illustrative and is not a test vector.</t>
      </section>
      <section anchor="one-primary"><name>One Primary Record</name>
      <t>Each JEP-RP-1 Receipt Event binds exactly one primary receipt record through the receipt extension.</t>
      <t>Additional evidence objects are referenced from that primary record or a receipt manifest. This rule avoids ambiguity about which object the Receipt Event primarily authenticates.</t>
      </section>
    </section>
    <section anchor="behavior-records"><name>Behavior Records</name>
      <section anchor="behavior-shape"><name>Required Shape</name>
      <t>A JEP-RP-1 behavior record MUST be a JSON object containing:</t>
      <ul spacing="normal">
        <li><tt>jep_receipt_record</tt></li>
        <li><tt>record_type</tt></li>
        <li><tt>agent</tt></li>
        <li><tt>action</tt></li>
        <li><tt>created_at</tt></li>
        <li><tt>evidence</tt></li>
      </ul>
      <t><tt>jep_receipt_record</tt> MUST equal <tt>"1"</tt>.</t>
      <t><tt>record_type</tt> MUST equal <tt>"behavior"</tt>.</t>
      <t><tt>agent</tt> MUST be a JSON object containing a non-empty string <tt>id</tt>. <tt>agent.role</tt> and <tt>agent.deployment_id</tt> MAY be present as non-empty strings.</t>
      <t><tt>action</tt> MUST be a JSON object containing a non-empty string <tt>type</tt>. Additional action fields are deployment-defined.</t>
      <t><tt>created_at</tt> MUST be a non-negative integer representing declared Unix seconds for record creation. It is not trusted time or proof of freshness.</t>
      <t><tt>evidence</tt> MUST be a JSON array of zero or more Evidence Descriptors.</t>
      <t>The record MAY additionally contain:</t>
      <ul spacing="normal">
        <li><tt>human_participants</tt></li>
        <li><tt>context</tt></li>
        <li><tt>redaction</tt></li>
      </ul>
      <t>No other top-level members are defined by JEP-RP-1. Additional structured content SHOULD be placed in evidence objects or defined by an explicitly selected companion profile.</t>
      </section>
      <section anchor="evidence-desc"><name>Evidence Descriptor</name>
      <t>An Evidence Descriptor MUST be a JSON object containing:</t>
      <ul spacing="normal">
        <li><tt>kind</tt></li>
        <li><tt>digest</tt></li>
      </ul>
      <t><tt>kind</tt> MUST be a non-empty string describing the evidence class.</t>
      <t><tt>digest</tt> MUST be an algorithm-tagged digest string.</t>
      <t>An Evidence Descriptor MAY additionally contain:</t>
      <ul spacing="normal">
        <li><tt>media_type</tt></li>
        <li><tt>uri</tt></li>
        <li><tt>redaction</tt></li>
      </ul>
      <t><tt>media_type</tt>, when present, MUST be a non-empty string.</t>
      <t><tt>uri</tt>, when present, is a retrieval hint. A verifier MUST NOT treat URI dereference success as evidence-integrity success.</t>
      <t><tt>redaction</tt>, when present, SHOULD be one of:</t>
      <ul spacing="normal">
        <li><tt>none</tt></li>
        <li><tt>partial</tt></li>
        <li><tt>digest-only</tt></li>
        <li><tt>withheld</tt></li>
      </ul>
      <t>A companion profile MAY define additional redaction values.</t>
      </section>
      <section anchor="human-participant"><name>Human Participant Reference</name>
      <t><tt>human_participants</tt>, when present, MUST be an array of structured references.</t>
      <t>Each reference MUST contain:</t>
      <ul spacing="normal">
        <li><tt>role</tt></li>
        <li><tt>reference_type</tt></li>
      </ul>
      <t><tt>role</tt> and <tt>reference_type</tt> MUST be non-empty strings.</t>
      <t>If <tt>reference_type</tt> is not <tt>withheld</tt>, the object MUST contain <tt>reference</tt>.</t>
      <t>If <tt>reference_type</tt> is <tt>withheld</tt>, <tt>reference</tt> MUST be absent.</t>
      <t>A reference MAY contain <tt>privacy_mode</tt> and <tt>salt_holder</tt>.</t>
      <t>JEP-RP-1 does not guarantee anonymity or unlinkability. Timing, metadata, content similarity, device identifiers, storage locations, or salt reuse can create linkability.</t>
      </section>
      <section anchor="context-redaction"><name>Context and Redaction</name>
      <t><tt>context</tt>, when present, MUST be a JSON object whose semantics are defined by the deployment or companion profile.</t>
      <t><tt>redaction</tt>, when present, MUST be a JSON object describing minimization or redaction applied to the behavior record or its referenced evidence.</t>
      <t>The presence of a redaction descriptor does not prove that redaction was legally required, sufficient, complete, or correctly performed.</t>
      </section>
      <section anchor="behavior-digest"><name>Behavior Record Digest</name>
      <t>For JEP-RP-1, the Behavior Record Digest uses JCS <xref target="RFC8785"/> and is:</t>
      <sourcecode type="text"><![CDATA[
sha256(UTF8(JCS(behavior_record)))
]]></sourcecode>
      <t>The textual digest is represented as a JEP algorithm-tagged digest string.</t>
      <t>JEP-RP-1 producers and verifiers MUST support <tt>sha256</tt> for behavior-record digests.</t>
      <t>A companion profile MAY permit additional digest algorithms but MUST NOT change the meaning of the JEP-RP-1 baseline digest.</t>
      <t>A behavior record MUST NOT embed the Event Hash of the JEP event that binds it, because doing so would create a circular artifact dependency.</t>
      </section>
    </section>
    <section anchor="manifests"><name>Receipt Manifests</name>
      <section anchor="manifest-shape"><name>Manifest Shape</name>
      <t>A JEP-RP-1 receipt manifest MUST be a JSON object containing:</t>
      <ul spacing="normal">
        <li><tt>jep_receipt_manifest</tt></li>
        <li><tt>profile</tt></li>
        <li><tt>root_event</tt></li>
        <li><tt>events</tt></li>
        <li><tt>records</tt></li>
        <li><tt>created_at</tt></li>
      </ul>
      <t><tt>jep_receipt_manifest</tt> MUST equal <tt>"1"</tt>.</t>
      <t><tt>profile</tt> MUST equal <tt>https://humanjudgment.org/jep/profiles/receipt/1</tt>.</t>
      <t><tt>root_event</tt> MUST be an Event Descriptor.</t>
      <t><tt>events</tt> MUST be a non-empty array of Event Descriptors.</t>
      <t><tt>records</tt> MUST be a non-empty array of Record Descriptors.</t>
      <t><tt>created_at</tt> MUST be a non-negative integer representing declared Unix seconds for manifest creation. It is not trusted time.</t>
      <t>A receipt manifest MAY additionally contain:</t>
      <ul spacing="normal">
        <li><tt>external_refs</tt></li>
        <li><tt>redaction</tt></li>
      </ul>
      </section>
      <section anchor="event-desc"><name>Event Descriptor</name>
      <t>An Event Descriptor MUST contain <tt>event_identity</tt>:</t>
      <sourcecode type="json"><![CDATA[
{
  "event_identity": {
    "who": "did:example:agent-123",
    "id": "urn:uuid:018f4f8d-7c63-7c2e-9b43-4ef657eec1c0"
  }
}
]]></sourcecode>
      <t><tt>event_identity.who</tt> and <tt>event_identity.id</tt> MUST be non-empty strings.</t>
      <t>An Event Descriptor MAY additionally contain:</t>
      <ul spacing="normal">
        <li><tt>event_hash</tt></li>
        <li><tt>uri</tt></li>
      </ul>
      <t><tt>event_hash</tt>, when present, pins one exact signed event artifact.</t>
      <t><tt>uri</tt>, when present, is only a retrieval hint.</t>
      <t>Every Event Identity in <tt>events</tt> MUST be unique within the manifest.</t>
      <t><tt>root_event.event_identity</tt> MUST equal one Event Identity listed in <tt>events</tt>.</t>
      <t>If <tt>root_event.event_hash</tt> is present, it MUST equal the Event Hash for the corresponding exact signed artifact, except as prohibited by Section 8.4.</t>
      </section>
      <section anchor="record-desc"><name>Record Descriptor</name>
      <t>A Record Descriptor MUST contain:</t>
      <ul spacing="normal">
        <li><tt>record_type</tt></li>
        <li><tt>digest</tt></li>
      </ul>
      <t><tt>record_type</tt> MUST be a non-empty string.</t>
      <t><tt>digest</tt> MUST be an algorithm-tagged digest string.</t>
      <t>A Record Descriptor MAY additionally contain:</t>
      <ul spacing="normal">
        <li><tt>media_type</tt></li>
        <li><tt>uri</tt></li>
      </ul>
      <t>The digest, not the URI, is the integrity identity of the record.</t>
      </section>
      <section anchor="circularity"><name>Binding-Event Circularity Rule</name>
      <t>If a JEP Receipt Event binds a receipt manifest as its primary record, that manifest MUST identify the binding event by Event Identity and MUST NOT include the binding event's Event Hash anywhere in the manifest.</t>
      <t>This rule applies to both <tt>root_event</tt> and any corresponding entry in <tt>events</tt>.</t>
      <t>The manifest MAY include Event Hash values for other JEP events.</t>
      <t>A verifier MUST reject a manifest that includes the binding event's Event Hash, because the binding Event Hash depends on the signed extension containing the manifest digest and would create a circular artifact dependency.</t>
      </section>
      <section anchor="manifest-digest"><name>Manifest Digest</name>
      <t>A JSON receipt manifest is digest-addressed using:</t>
      <sourcecode type="text"><![CDATA[
sha256(UTF8(JCS(receipt_manifest)))
]]></sourcecode>
      <t>A Receipt Event MAY bind a receipt manifest as its primary record by using <tt>record_type</tt> equal to <tt>receipt-manifest</tt> in the receipt-binding extension.</t>
      </section>
    </section>
    <section anchor="bundles"><name>Receipt Bundles and Export</name>
      <section anchor="bundle"><name>Bundle</name>
      <t>A JEP receipt bundle is a packaging concept containing zero or more:</t>
      <ul spacing="normal">
        <li>signed JEP events;</li>
        <li>behavior records;</li>
        <li>receipt manifests;</li>
        <li>validation reports;</li>
        <li>external evidence objects.</li>
      </ul>
      <t>JEP-RP-1 does not define a <tt>validation-report</tt> primary record type. Validation reports MAY appear as bundle artifacts, but their structure and semantics are outside the JEP-RP-1 baseline.</t>
      <t>JEP-RP-1 does not define a mandatory ZIP, CBOR, JSON, archive, transport, or storage container.</t>
      <t>Packaging MUST NOT alter signed JEP event bytes or misrepresent digest-bound record content.</t>
      </section>
      <section anchor="partial-export"><name>Partial and Redacted Export</name>
      <t>A bundle MAY contain only a subset of available evidence.</t>
      <t>A partial or redacted export MUST NOT present omitted material as nonexistent, unchanged, irrelevant, agreed, waived, or verified.</t>
      <t>Where omission could affect interpretation, the export SHOULD include an explicit withheld, redacted, or partial-view indication.</t>
      </section>
      <section anchor="no-chain"><name>No Chain Inference</name>
      <t>A bundle containing multiple events is not, merely by being a bundle, a causal chain, responsibility chain, authorization chain, or complete event history.</t>
      <t>Chain reconstruction, cycle analysis, termination cascade, complete-log assumptions, and causal interpretation belong to a selected chain profile or external system.</t>
      </section>
    </section>
    <section anchor="validation"><name>Receipt Validation</name>
      <section anchor="validation-layers"><name>Layer Separation</name>
      <t>Receipt validation reports separately:</t>
      <ul spacing="normal">
        <li>JEP-Core validation status;</li>
        <li>Receipt Profile checks;</li>
        <li>Receipt Profile overall status.</li>
      </ul>
      <t>JEP-RP-1 MUST NOT replace or overwrite the underlying JEP validation result.</t>
      </section>
      <section anchor="validation-mode"><name>Baseline Validation Mode</name>
      <t>A JEP-RP-1 Verifier MUST support JEP <tt>archival</tt> validation mode.</t>
      <t>If no JEP validation mode is explicitly requested, receipt validation MUST use <tt>archival</tt> mode.</t>
      <t>Archival receipt validation MUST NOT consume JEP acceptance state.</t>
      <t>A deployment MAY additionally request <tt>acceptance</tt>, <tt>chain</tt>, or <tt>policy</tt> mode when those semantics are required. Those modes remain JEP modes and MUST NOT be redefined by this profile.</t>
      </section>
      <section anchor="validation-checks"><name>Receipt Profile Checks</name>
      <t>The initial JEP-RP-1 check identifiers are:</t>
      <ul spacing="normal">
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#profile-binding</tt></li>
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#receipt-extension</tt></li>
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#record-binding</tt></li>
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#record-structure</tt></li>
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#manifest-structure</tt></li>
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#bundle-integrity</tt></li>
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#privacy-reference-format</tt></li>
      </ul>
      <t>Check statuses use the JEP conformance vocabulary:</t>
      <ul spacing="normal">
        <li><tt>pass</tt></li>
        <li><tt>fail</tt></li>
        <li><tt>not_checked</tt></li>
        <li><tt>not_applicable</tt></li>
        <li><tt>unsupported</tt></li>
        <li><tt>indeterminate</tt></li>
      </ul>
      <t>A verifier MUST NOT report an unperformed Receipt Profile check as <tt>pass</tt>.</t>
      </section>
      <section anchor="validation-status"><name>Receipt Profile Overall Status</name>
      <t>The Receipt Profile overall status is one of:</t>
      <ul spacing="normal">
        <li><tt>valid</tt></li>
        <li><tt>invalid</tt></li>
        <li><tt>indeterminate</tt></li>
      </ul>
      <t>For the requested Receipt Profile validation context:</t>
      <ul spacing="normal">
        <li><tt>invalid</tt> means the underlying required JEP validation is invalid or at least one required Receipt Profile check failed;</li>
        <li><tt>indeterminate</tt> means no required check failed, but the underlying required JEP validation is indeterminate or at least one required Receipt Profile check is unsupported, not checked, or indeterminate;</li>
        <li><tt>valid</tt> means the underlying required JEP validation is valid and every required Receipt Profile check passed or was not applicable.</li>
      </ul>
      </section>
      <section anchor="validation-procedure"><name>Validation Procedure</name>
      <t>A verifier SHOULD:</t>
      <ul spacing="normal">
        <li>validate the JEP event under the requested JEP mode and selected profiles;</li>
        <li>verify that the receipt extension is present and listed in <tt>ext_crit</tt>;</li>
        <li>verify that the extension profile equals the JEP-RP-1 profile identifier;</li>
        <li>obtain the primary receipt record;</li>
        <li>canonicalize and hash the record according to the applicable Receipt Profile record rules;</li>
        <li>compare the recomputed digest with <tt>record_digest</tt>;</li>
        <li>validate the record structure for the declared <tt>record_type</tt>;</li>
        <li>if a manifest is the bound primary record, enforce the binding-event circularity rule in Section 8.4;</li>
        <li>if a manifest or bundle is evaluated, verify Event Identity and optional Event Hash bindings independently;</li>
        <li>verify all required external evidence digests that are available in the requested validation context;</li>
        <li>return the JEP result, Receipt Profile check results, and Receipt Profile overall status separately.</li>
      </ul>
      <t>A successful Receipt Profile result proves the checked cryptographic and structural bindings. It does not prove the external truth or completeness of the recorded behavior.</t>
      </section>
      <section anchor="validation-example"><name>Receipt Validation Result Example</name>
      <sourcecode type="json"><![CDATA[
{
  "receipt_status": "valid",
  "profile": "https://humanjudgment.org/jep/profiles/receipt/1",
  "jep": {
    "status": "valid",
    "mode": "archival",
    "event_identity": {
      "who": "did:example:receipt-service",
      "id": "urn:uuid:018f4f8d-7c63-7c2e-9b43-4ef657eec1c0"
    },
    "event_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
  },
  "checks": {
    "https://humanjudgment.org/jep/profiles/receipt/1#profile-binding": "pass",
    "https://humanjudgment.org/jep/profiles/receipt/1#receipt-extension": "pass",
    "https://humanjudgment.org/jep/profiles/receipt/1#record-binding": "pass",
    "https://humanjudgment.org/jep/profiles/receipt/1#record-structure": "pass",
    "https://humanjudgment.org/jep/profiles/receipt/1#manifest-structure": "not_applicable",
    "https://humanjudgment.org/jep/profiles/receipt/1#bundle-integrity": "not_applicable",
    "https://humanjudgment.org/jep/profiles/receipt/1#privacy-reference-format": "not_applicable"
  },
  "record": {
    "record_type": "behavior",
    "record_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  },
  "warnings": [],
  "errors": []
}
]]></sourcecode>
      <t>The example is illustrative and is not a test vector.</t>
      </section>
    </section>
    <section anchor="verification-events"><name>Verification Events</name>
      <t>A JEP V event MAY record a Receipt Profile evaluation.</t>
      <t>The V event MUST satisfy JEP-Core V requirements.</t>
      <t>JEP-RP-1 defines the following provisional profile-specific verification scopes:</t>
      <ul spacing="normal">
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#receipt-validation</tt></li>
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#record-binding</tt></li>
        <li><tt>https://humanjudgment.org/jep/profiles/receipt/1#bundle-integrity</tt></li>
      </ul>
      <t>A V event MUST identify its target through JEP <tt>ref</tt>.</t>
      <t>A V event's <tt>what.result</tt> reports the semantic result of its declared verification scope. It MUST NOT be confused with the independent per-check status vocabulary used by a Receipt Profile verifier.</t>
      <t>A V event MUST NOT imply evaluation beyond its declared scope.</t>
    </section>
    <section anchor="conformance"><name>Conformance</name>
      <section anchor="conf-producer"><name>JEP-RP-1 Producer</name>
      <t>A conforming JEP-RP-1 Producer MUST:</t>
      <ul spacing="normal">
        <li>produce a JEP event conforming to the applicable JEP Producer requirements;</li>
        <li>preserve the selected JEP verb semantics;</li>
        <li>include the receipt-binding extension;</li>
        <li>list the extension in <tt>ext_crit</tt>;</li>
        <li>use the JEP-RP-1 profile identifier;</li>
        <li>bind exactly one primary receipt record by digest;</li>
        <li>produce the bound record according to the applicable Receipt Profile record format;</li>
        <li>avoid rewriting Event Identity or Event Hash semantics.</li>
      </ul>
      </section>
      <section anchor="conf-verifier"><name>JEP-RP-1 Verifier</name>
      <t>A conforming JEP-RP-1 Verifier MUST:</t>
      <ul spacing="normal">
        <li>perform or consume an actual JEP validation result;</li>
        <li>support JEP <tt>archival</tt> validation mode;</li>
        <li>process the critical receipt extension;</li>
        <li>support JEP-RP-1 behavior-record and manifest digest calculation;</li>
        <li>support the required Receipt Profile checks for its claimed validation context;</li>
        <li>preserve independent check statuses;</li>
        <li>distinguish Event Identity from Event Hash;</li>
        <li>distinguish JEP validity from Receipt Profile validity;</li>
        <li>enforce the binding-event circularity rule for bound manifests;</li>
        <li>return <tt>indeterminate</tt> rather than success when a required check cannot be completed.</li>
      </ul>
      </section>
      <section anchor="conf-bundle"><name>Receipt Bundle Verifier</name>
      <t>An implementation claiming Receipt Bundle Verifier capability MUST additionally:</t>
      <ul spacing="normal">
        <li>validate manifest structure when a manifest is present;</li>
        <li>verify Event Identity descriptors;</li>
        <li>verify every required Event Hash pin;</li>
        <li>verify every required record digest for available records;</li>
        <li>report missing required bundle components as failure or indeterminate according to the requested validation context;</li>
        <li>avoid inferring causal-chain completeness from bundle membership.</li>
      </ul>
      </section>
    </section>
    <section anchor="security"><name>Security Considerations</name>
      <t>A valid JEP-RP-1 receipt does not prove that the described behavior actually occurred as represented. It proves only the properties that were actually validated.</t>
      <t>Implementations MUST consider:</t>
      <ul spacing="normal">
        <li>actor/signer confusion;</li>
        <li>observed-agent/actor confusion;</li>
        <li>Event Identity/Event Hash confusion;</li>
        <li>substitution of an unbound receipt record;</li>
        <li>circular binding between a manifest digest and the binding event's Event Hash;</li>
        <li>URI substitution when a verifier trusts location instead of digest;</li>
        <li>omitted or selectively exported evidence;</li>
        <li>misleading redaction;</li>
        <li>fabricated but correctly hashed behavior content;</li>
        <li>unsupported critical extensions;</li>
        <li>profile confusion;</li>
        <li>false chain or completeness inference.</li>
      </ul>
      <t>A verifier MUST compare the recomputed primary-record digest with the digest inside the signed critical receipt extension.</t>
      <t>A verifier MUST enforce Section 8.4 when a Receipt Event binds a receipt manifest.</t>
      <t>A verifier MUST NOT claim actor binding unless the applicable trust-profile check passed.</t>
      <t>A verifier MUST NOT infer authorization, causality, truth, completeness, liability, or policy compliance from successful Receipt Profile structural validation.</t>
    </section>
    <section anchor="privacy"><name>Privacy Considerations</name>
      <t>Receipt records can expose:</t>
      <ul spacing="normal">
        <li>actor identifiers;</li>
        <li>observed-agent identifiers;</li>
        <li>behavior timing;</li>
        <li>action categories;</li>
        <li>tool or evidence relationships;</li>
        <li>human participant roles;</li>
        <li>organizational or workflow structure;</li>
        <li>storage and retrieval locations.</li>
      </ul>
      <t>Implementations SHOULD minimize plaintext personal data.</t>
      <t>Human participant references SHOULD use opaque, pseudonymous, rotating, digest-only, or withheld representations when direct identity is unnecessary.</t>
      <t>Digest-based references can still enable correlation or dictionary attacks, especially when the underlying value has low entropy.</t>
      <t>A receipt bundle SHOULD disclose only the evidence required for its intended validation purpose.</t>
      <t>Receipt Profile privacy mechanisms do not themselves establish consent, lawful basis, data-subject rights compliance, confidentiality obligations, or entitlement to disclosure.</t>
    </section>
    <section anchor="non-inference"><name>Non-Inference Boundary</name>
      <t>JEP-RP-1 is a technical receipt profile.</t>
      <t>A successful Receipt Profile validation MUST NOT be presented, by itself, as proof:</t>
      <ul spacing="normal">
        <li>that an external factual claim is true;</li>
        <li>that an AI output is correct or safe;</li>
        <li>that the behavior record is complete;</li>
        <li>that the observed agent caused a downstream outcome;</li>
        <li>that a delegation or tool call was authorized;</li>
        <li>that a human participant consented;</li>
        <li>that a process was fair;</li>
        <li>that a policy was adequate;</li>
        <li>that an explanation was sufficient;</li>
        <li>that a legal duty was satisfied;</li>
        <li>that any person or organization is liable or not liable;</li>
        <li>that a regulatory requirement was met.</li>
      </ul>
      <t>External profiles and policies MAY use receipt evidence when making such determinations, but those conclusions remain external to JEP-RP-1.</t>
    </section>
    <section anchor="iana"><name>IANA Considerations</name>
      <t>This document requests no IANA actions.</t>
      <t>The JEP-RP-1 profile identifier, receipt-extension identifier, Receipt Profile check identifiers, and Receipt Profile verification-scope identifiers defined by this document are publisher-controlled HTTPS URI identifiers.</t>
      <t>Future specifications MAY define registries if stable interoperable deployment requires them.</t>
    </section>
    <section anchor="examples"><name>Examples</name>
      <section anchor="ex-behavior"><name>Behavior Record</name>
      <sourcecode type="json"><![CDATA[
{
  "jep_receipt_record": "1",
  "record_type": "behavior",
  "agent": {
    "id": "did:example:agent-789",
    "role": "planner",
    "deployment_id": "runtime-42"
  },
  "action": {
    "type": "tool_call",
    "name": "calendar.create_event"
  },
  "created_at": 1790424000,
  "evidence": [
    {
      "kind": "tool_request",
      "digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
      "media_type": "application/json",
      "redaction": "digest-only"
    },
    {
      "kind": "tool_response",
      "digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
      "media_type": "application/json",
      "redaction": "partial"
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="ex-j-event"><name>J Event Carrying a Receipt Binding</name>
      <sourcecode type="json"><![CDATA[
{
  "jep": "1",
  "id": "urn:uuid:018f4f8d-7c63-7c2e-9b43-4ef657eec1c0",
  "verb": "J",
  "who": "did:example:receipt-service",
  "when": 1790424000,
  "what": {
    "claim": "agent-behavior-recorded"
  },
  "ext": {
    "https://humanjudgment.org/jep/extensions/receipt-binding/1": {
      "profile": "https://humanjudgment.org/jep/profiles/receipt/1",
      "record_type": "behavior",
      "record_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "media_type": "application/json"
    }
  },
  "ext_crit": [
    "https://humanjudgment.org/jep/extensions/receipt-binding/1"
  ],
  "sig": "..."
}
]]></sourcecode>
      <t>The J <tt>what</tt> object remains a JEP-Core judgment claim. The receipt-record binding is carried only in the critical receipt extension.</t>
      </section>
      <section anchor="ex-manifest"><name>Receipt Manifest</name>
      <sourcecode type="json"><![CDATA[
{
  "jep_receipt_manifest": "1",
  "profile": "https://humanjudgment.org/jep/profiles/receipt/1",
  "root_event": {
    "event_identity": {
      "who": "did:example:receipt-service",
      "id": "urn:uuid:018f4f8d-7c63-7c2e-9b43-4ef657eec1c0"
    }
  },
  "events": [
    {
      "event_identity": {
        "who": "did:example:receipt-service",
        "id": "urn:uuid:018f4f8d-7c63-7c2e-9b43-4ef657eec1c0"
      }
    }
  ],
  "records": [
    {
      "record_type": "behavior",
      "digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "media_type": "application/json"
    }
  ],
  "created_at": 1790424010
}
]]></sourcecode>
      <t>This example is suitable for a manifest that is itself bound by the root Receipt Event; therefore the binding event is identified by Event Identity without its Event Hash, avoiding a circular dependency.</t>
      </section>
    </section>
    <section anchor="changes"><name>Transition from HJS-05</name>
      <t>This Internet-Draft is intended to replace <tt>draft-wang-hjs-accountability</tt>. The following summarizes the technical transition from <tt>draft-wang-hjs-accountability-05</tt>:</t>
      <ul spacing="normal">
        <li>renamed the technical protocol component from HJS to <strong>JEP Receipt Profile</strong> and started a new Internet-Draft filename for the renamed component;</li>
        <li>aligned the profile with JEP-Core 0.7, JEP Profiles-01, and JEP Conformance-01;</li>
        <li>introduced JEP-RP-1 as the initial profile version under the new JEP Receipt Profile namespace;</li>
        <li>moved primary receipt-record binding from generic use of JEP <tt>what</tt> to a critical JEP extension so D, T, and V retain their required Core <tt>what</tt> semantics;</li>
        <li>made the receipt-binding extension mandatory and critical for JEP-RP-1;</li>
        <li>defined publisher-controlled HTTPS identifiers for the profile and extension;</li>
        <li>separated JEP actor, signer, and observed AI agent;</li>
        <li>changed logical event references from Event Hash to Event Identity;</li>
        <li>retained Event Hash only for exact signed-artifact pinning;</li>
        <li>changed receipt-manifest <tt>root_event</tt> and event descriptors to carry Event Identity plus optional Event Hash;</li>
        <li>prohibited a manifest from embedding the Event Hash of the JEP event that binds that manifest, eliminating a circular hash dependency;</li>
        <li>removed <tt>validation-report</tt> as a baseline primary record type; validation reports may remain bundle artifacts;</li>
        <li>made JEP <tt>archival</tt> mode the required and default repeatable receipt validation mode when no other mode is explicitly requested;</li>
        <li>removed assumptions that a bundle is a causal or responsibility chain;</li>
        <li>replaced cumulative or implicit validation assumptions with independent Receipt Profile checks and <tt>valid</tt> / <tt>invalid</tt> / <tt>indeterminate</tt> status;</li>
        <li>made receipt validation preserve the underlying JEP validation result rather than replacing it;</li>
        <li>defined exact baseline JSON shapes for behavior records, evidence descriptors, manifests, event descriptors, and record descriptors;</li>
        <li>defined JCS plus SHA-256 baseline digest rules for JEP-RP-1 records;</li>
        <li>removed the under-specified set of HJS-Core-1 optional extension identifiers from the narrow waist;</li>
        <li>moved model, tool, policy, risk, explanation, multi-party, identity-rotation, and other specialized semantics to companion or deployment profiles;</li>
        <li>tightened privacy and non-inference language;</li>
        <li>changed IANA language to request no action.</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="JEP">
          <front><title>Judgment Event Protocol (JEP)</title><author initials="Y." surname="Wang" fullname="Yuqiang Wang"/><date year="2026" month="September" day="26"/></front>
          <seriesInfo name="Internet-Draft" value="draft-wang-jep-judgment-event-protocol-07"/>
        </reference>
        <reference anchor="JEP-PROFILES">
          <front><title>JEP Profiles and Interoperability</title><author initials="Y." surname="Wang" fullname="Yuqiang Wang"/><date year="2026" month="September" day="26"/></front>
          <seriesInfo name="Internet-Draft" value="draft-wang-jep-profiles-01"/>
        </reference>
        <reference anchor="JEP-CONFORMANCE">
          <front><title>JEP Conformance and Test Suite</title><author initials="Y." surname="Wang" fullname="Yuqiang Wang"/><date year="2026" month="September" day="26"/></front>
          <seriesInfo name="Internet-Draft" value="draft-wang-jep-conformance-01"/>
        </reference>
        <reference anchor="RFC2119">
          <front><title>Key words for use in RFCs to Indicate Requirement Levels</title><author initials="S." surname="Bradner"/><date year="1997" month="March"/></front>
          <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title><author initials="B." surname="Leiba"/><date year="2017" month="May"/></front>
          <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/>
        </reference>
        <reference anchor="RFC8785">
          <front><title>JSON Canonicalization Scheme (JCS)</title><author initials="A." surname="Rundgren"/><author initials="B." surname="Jordan"/><author initials="S." surname="Erlandsson"/><date year="2020" month="June"/></front>
          <seriesInfo name="RFC" value="8785"/>
        </reference>
      </references>
    </references>
  </back>
</rfc>
