A-Comm Evidence Protocol

This document is confidential. Enter the access code to continue.

Open Protocol Specification

A-Comm Evidence Protocol (AEP) v1.1.0

A cryptographically verifiable evidence standard for agentic commerce transactions — from AI-driven discovery through payment authorization and fulfillment.

v1.1.0 Apache License 2.0 Published by A-Comm Inc. 2026

Abstract

The A-Comm Evidence Protocol (AEP) defines a standard for generating, storing, and verifying cryptographic evidence of agentic commerce transactions. As AI agents increasingly drive product discovery and purchase decisions, merchants and payment processors require a dispute-grade audit trail that can demonstrate the provenance of any transaction — from the AI platform that surfaced the product through to payment authorization and fulfillment.

AEP specifies a sequential hash chain of typed artifacts, each immutably linked to its predecessor via SHA-256. The chain spans eight defined layers: discovery, referral, intent, delegation, policy, consent, authorization, and fulfillment. Any insertion, deletion, or modification of an artifact is cryptographically detectable at every subsequent node in the chain. The protocol is designed to be implementable by any PSP, commerce platform, or merchant independently of A-Comm Inc.'s infrastructure.

Status of This Document

Draft Specification This is AEP v1.1.0, a major update that introduces the delegation and consent artifact types, restructures the commerce journey to eight layers, and adds the Network System Interoperability section defining how AEP complements Visa Intelligent Commerce and Mastercard Agent Pay. Feedback and interoperability reports are welcome via the public repository. This specification is published under Apache License 2.0.

A-Comm Inc. maintains the reference implementation. The protocol itself is open and implementable by any party without restriction, royalty, or permission from A-Comm Inc.

License

Copyright 2025 A-Comm Inc. Licensed under the Apache License, Version 2.0 (the "License"). You may not use this specification except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, materials distributed under the License are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.


1. Introduction

1.1 Problem Statement

AI-mediated commerce is growing rapidly. Consumers increasingly discover and purchase products through AI chat interfaces — ChatGPT, Google Gemini, Perplexity, Microsoft Copilot — where product recommendations drive real transactions. This creates a new class of dispute risk:

  • The consumer interacted with an AI agent, not a human or traditional web UI
  • No browser-native referrer chain is reliable across AI platforms
  • The authorization trail exists, but the intent trail — what was asked, what was recommended, what was confirmed — is typically absent from PSP evidence
  • The delegation trail — what the consumer authorized the agent to do, within what limits, and at which merchants — is not captured by any existing payment infrastructure
  • Merchants cannot prove to card networks that a consumer explicitly authorized an agentic transaction

Payment networks are responding with enforcement-layer solutions: Visa Intelligent Commerce (TAP + Payment Instructions + AI-Ready Cards + Verifi) provides agent identity verification, spending limits, and category restrictions enforced at VisaNet. Mastercard Agent Pay (Verifiable Intent + Agent Pay program + Ethoca) captures identity and action-level intent with real-time dispute data sharing. These are valuable prevention systems within their respective networks.

However, enforcement-layer solutions face structural limitations in the dispute context:

  • Network-bound: Visa IC operates on the Visa rail only; MC Agent Pay on the Mastercard rail only. Neither produces evidence usable in a cross-network dispute.
  • Enforcement, not evidence: Payment Instructions are rules loaded into VisaNet. When enforcement fails — misconfiguration, agent circumvention, or a transaction that processes on a different rail — there is no hash-chained evidence artifact proving the rules existed.
  • Category-level, not semantic: Payment Instructions capture "electronics under $200." They cannot capture "wireless noise-canceling headphones" — the semantic detail that agent-mediated disputes actually turn on.
  • No fulfillment attestation: Both systems' scope ends at authorization. Neither produces a post-authorization delivery proof artifact.

AEP solves this by defining a tamper-evident, cross-network evidence chain that captures every step from AI-driven discovery through order fulfillment, producing a dispute-grade artifact bundle that merchants can submit to PSPs and card network reviewers. AEP is designed to complement network enforcement systems — not replace them. When prevention succeeds, the dispute never happens. When prevention fails or the transaction crosses rails, AEP provides the post-hoc evidence layer.

1.2 Design Goals

  • Tamper-evident: Any modification to any artifact in the chain is detectable at all subsequent nodes without requiring a trusted third party.
  • Dispute-grade: The evidence bundle maps directly to Stripe, Adyen, and card network representment evidence fields.
  • Cross-network: Evidence bundles are usable in disputes on any payment rail — Visa, Mastercard, Amex, ACH, or emerging rails. AEP is not bound to any single network's infrastructure.
  • Network-complementary: Designed to work alongside network enforcement systems (Visa Intelligent Commerce, Mastercard Agent Pay) — not replace them. AEP captures the evidence layer that enforcement systems do not produce.
  • Semantic-resolution: Captures consumer intent at the natural-language level ("wireless noise-canceling headphones under $200"), not category-level ("electronics") — the resolution at which agent-mediated disputes are adjudicated.
  • PII-minimal: Consumer identifiers are pseudonymized. No raw card data, no PAN, no personal identifiers in any artifact payload.
  • Platform-agnostic: Works across Shopify, WooCommerce, BigCommerce, Magento, and any PSP.
  • Open: Apache 2.0. Any implementation can generate and verify AEP chains without dependency on A-Comm Inc.
  • Attribution-aware: Bridges AI platform citation events (ChatGPT, Gemini, Perplexity, Copilot) into the cryptographic chain as a first-class artifact type.

2. Data Model

An AEP commerce journey is modeled as a single transaction chain — an ordered sequence of immutable artifacts. Each artifact records one event in the consumer's journey and is cryptographically linked to its predecessor.

2.1 Commerce Journey Layers

A complete agentic commerce transaction spans up to eight artifact layers. The first two (discovery and referral) are present only when the consumer arrived via an external AI platform. The delegation layer is present only when an AI agent acts on behalf of a consumer:

1
Discovery ai_referral types only

Captures the AI platform citation event — the moment a product was surfaced in a ChatGPT, Gemini, Perplexity, or Copilot response. Records the platform, the consumer's query, the product URL cited, and the attribution method used to link the AI citation to the inbound session.

  • Actor type: agent (AI platform) or merchant (tracked link)
  • Key payload fields: platform, query, referral_url, citation_position, attribution_method
2
Referral ai_referral types only

Records the inbound session that originated from the AI citation — the click from the AI platform to the merchant's site, including session token, referral event ID, and the product that was cited.

3
Intent

Records the consumer's (or their agent's) explicit purchase intent: the product selected, quantity, variant, and the actor responsible. This is the earliest layer present for all transaction types.

  • Key payload fields: product_id, product_name, quantity, variant, query
4
Delegation agent-mediated types only

Records the consumer's delegation of authority to an AI agent — the scope, constraints, and limits within which the agent is authorized to act. This is the artifact that proves the consumer said "$150 maximum" or "only from Sephora or Ulta" before the agent transacted. Present only when an AI agent acts on behalf of a consumer.

  • Key payload fields: delegatee_agent_id, scope, spending_limit, allowed_actions, merchant_restrictions, time_window
  • This is the primary artifact for agent-mediated delegation disputes — spending limit violations, unauthorized merchants, and scope exceedances are deterministically provable from this artifact combined with the authorization artifact
5
Policy

Records the outcome of the merchant's policy engine evaluation — whether the transaction was permitted or blocked, which rules were evaluated, and the evaluation result. Required on all transaction types. The policy check must occur before authorization.

6
Consent

Records the consumer's explicit confirmation of the specific items, quantities, and total price before checkout. In agent-mediated transactions, this is the artifact that binds the consumer's approval to the exact products the agent selected — not just the delegation scope, but the specific fulfillment of that scope. Replaces the v1.0 "Cart" artifact with expanded semantics.

  • Key payload fields: confirmed (boolean), items (array with product_id, product_name, quantity, unit_price), total_amount, currency, consent_method
  • The consent_method field distinguishes: explicit (consumer reviewed and confirmed each item), delegated (agent confirmed within delegation scope), or implicit (standard storefront checkout)
7
Authorization Seal Point

Records the PSP payment authorization result. The current_hash of this artifact becomes the sealed_bundle_hash — the immutable seal of the transaction. Post-seal, only fulfillment artifacts may be appended.

  • Actor type: psp
  • Key payload fields: payment_token_reference (never raw card data), psp, authorization_code, amount_authorized, currency
8
Fulfillment

Records the fulfillment provider's response: carrier, tracking number, shipping status, and delivery confirmation. May arrive asynchronously after the chain is sealed. Implementors must support a late-arrival append path that does not require breaking the seal.

  • Actor type: fulfillment_provider
  • Key payload fields: carrier, tracking_number, status, shipped_at, delivered_at

2.2 Transaction Type Matrix

Transactions are classified on two orthogonal axes: how the consumer arrived (AI referral vs. direct) and how they purchased (via merchant agent vs. standard storefront checkout). This produces a 2×2 matrix. The delegation artifact is present only for agent-mediated purchase paths:

Type Arrival Purchase Path Expected Artifacts Notes
ai_referral_agent_session External AI (ChatGPT, Gemini, etc.) Merchant voice/chat agent 8 All layers present. Full discovery + referral + delegation + agent interaction trail.
ai_referral_standard_checkout External AI referral Standard storefront checkout (Shopify, WooCommerce, etc.) 7 Discovery + referral present; no delegation (consumer checked out directly). Consent and auth sourced from platform webhook.
agent_session_only Direct (no AI referral) Merchant voice/chat agent 6 No discovery or referral artifacts. Delegation present. Starts at intent.
direct_web Direct Standard storefront checkout 5 No discovery, referral, or delegation artifacts. Starts at intent.
Chain completeness check Verification implementations must check expected artifact counts by transaction type: 8 for ai_referral_agent_session, 7 for ai_referral_standard_checkout, 6 for agent_session_only, and 5 for direct_web. A chain with fewer artifacts than expected is marked chain_complete: false but remains valid if all present artifacts verify correctly.

2.3 Sequential Hash Chain Model

AEP uses a sequential previous-hash model where previous_hash is included inside the hash input of every artifact. This is distinct from reference-pointer hash chain models:

Model Formula Chain break detection
AEP (sequential) current_hash = SHA256(canonical({...all_fields, previous_hash})) Any insertion, deletion, or mutation is detectable at every subsequent artifact
Reference-pointer model current_hash = SHA256(payload) + separate chained_from pointer Only detects breaks if the pointer is verified separately — pointer can be silently remapped

Because previous_hash is inside the hash input, any reordering or insertion in the sequence invalidates the hash of every subsequent artifact. Verification does not require a trusted third party — anyone with the artifact sequence can independently verify integrity.

Genesis
prev_hash: null
sequence_number = 1
Artifact 2
prev = hash(artifact_1)
prev_hash IN input
Artifact N
prev = hash(artifact_N-1)
...
Auth (Seal)
sealed_bundle_hash = this hash
Immutable seal point
Fulfillment
Post-seal append
Async late-arrival

2.4 Actors

Every artifact is attributed to a specific actor — the entity responsible for that event in the commerce journey:

Actor Type Description Typical Artifact Layers ID Format
user Human consumer intent, cart HMAC-SHA256 pseudonym (see §8.2)
agent AI agent (merchant chat/voice agent, or external AI platform) discovery, intent, cart agent_name[:version] or platform slug
merchant Merchant system (referral tracking, policy engine) referral, policy Merchant account ID
psp Payment service provider authorization PSP name + transaction ID (tokenized)
fulfillment_provider Shipping/logistics provider fulfillment Provider name + fulfillment ID
Interaction channel Agent-sourced artifacts carry an optional interaction_channel field: voice, text_chat, or voice_and_text. This field is null for non-agent actors (psp, fulfillment_provider, direct_web layers).

2.5 Sealing Model

The chain is sealed at the authorization layer. Sealing means:

  • The current_hash of the authorization artifact is stored as sealed_bundle_hash on the transaction chain record
  • sealed_bundle_hash is immutable once set — no update path exists
  • Only fulfillment artifacts may be appended post-seal, via the async late-arrival append path
  • The fulfillment artifact includes the sealed authorization hash in its chain, so any post-seal fulfillment record is still cryptographically bound to the sealed chain
Late-arrival fulfillment Fulfillment artifacts often arrive asynchronously after the chain is sealed (shipping events, delivery confirmations). Implementors must support appending fulfillment artifacts post-seal. The sealed_bundle_hash must not be invalidated by post-seal fulfillment appends.

3. Artifact Types

Each artifact type defines the required and optional payload fields, the permitted actor types, and the position in the commerce journey sequence.

3.1 Discovery Artifact

The discovery artifact bridges the citation monitoring system into the evidence chain. It records the moment an AI platform surfaced a merchant product in a consumer-facing response — before any click, referral, or purchase event.

Why discovery matters for disputes Card network reviewers examining a chargeback on an AI-mediated transaction can trace the chain back to the specific AI platform, query, and product citation that originated the journey. This is the layer that makes agentic commerce disputes provable — not just to the PSP, but to the card network itself.

Payload Schema

{
  "platform": "chatgpt" | "gemini" | "perplexity" | "copilot" | "meta",
                                     // at least one of platform or referral_url is required
  "query": "string — the consumer's query to the AI platform (optional)",
  "referral_url": "string — URL cited by the AI platform (optional)",
  "citation_position": "number — rank of product in AI response (optional)",
  "attribution_method": "referral_param" | "merchant_tracked_link"
                       | "referrer_header" | "behavioral_heuristic" (optional),
  "confidence_score": "number 0.0–1.0 (optional)"
}
// Note: at least one of `platform` or `referral_url` must be present.
// Unknown fields are stripped by the reference implementation (strict validation).

AI Platform Coverage

ChatGPT Google Gemini Perplexity Microsoft Copilot

The discovery artifact captures product citations from all major AI chat platforms that drive agentic commerce traffic. Platform-specific notes:

Platform Referrer Signal Primary Attribution Reliability
ChatGPT Inconsistent — often stripped by OpenAI referral_param (tracked URL), behavioral_heuristic Medium. Referrer unreliable; behavioral matching required.
Google Gemini May pass google.com referrer referrer_header, referral_param High when referrer is present; supplement with behavioral signals.
Perplexity Typically passes referrer header referrer_header, referral_param High. Perplexity referrer signals are more consistent than ChatGPT.
Microsoft Copilot May pass bing.com referrer referral_param, referrer_header Medium. Bing Shopping integration improves signal when active.

Actor Constraints

Permitted actor types for discovery artifacts: agent (when the AI platform citation is detected via synthetic monitoring or the citation system), merchant (when the discovery event is triggered via a merchant-controlled tracked link).

3.2 Referral Artifact

Records the inbound session event — the consumer clicking through from the AI platform citation to the merchant's site. Links the discovery artifact to the on-site session.

Payload Schema

{
  "referral_event_id": "string — ID of the agentic_referral_event row (required)",
  "session_token": "string — signed, merchant-scoped session token (required)",
  "product_id": "string — product cited in the AI response (required)",
  "agent": "string — AI agent slug: chatgpt | gemini | perplexity | copilot | meta (required)",
  "consent_given": "boolean — whether GPC / acomm_consent signal was clear (optional)"
}

Actor type: user. The consumer's actor ID is HMAC-SHA256(consumer_ip, per-merchant-salt) — a pseudonymized identifier that cannot be reversed to a real IP address. The referral tracking system records this event on the backend; the actor type represents the consumer whose session originated from the AI citation.

3.3 Intent Artifact

Records the consumer's or agent's explicit purchase intent — the specific product selected and configured before cart addition.

Payload Schema

{
  "product_id": "string (required)",
  "product_name": "string (required)",
  "quantity": "number, integer ≥ 1 (required)",
  "variant": "string — size/color/SKU (optional)",
  "query": "string — consumer's request if agent-mediated (optional)",
  "unit_price": "string — price at time of intent, avoids float precision (optional)",
  "currency": "string — ISO 4217, e.g. 'USD' (optional)"
}

Permitted actor types: user, agent.

3.4 Delegation Artifact

Records the consumer's delegation of authority to an AI agent — the scope, constraints, and limits within which the agent is authorized to act. This artifact is the primary evidence layer for agent-mediated delegation disputes: spending limit violations, unauthorized merchant purchases, and scope exceedances are deterministically provable by comparing the delegation artifact against the authorization artifact.

Why delegation is a first-class artifact Payment network enforcement systems (Visa Payment Instructions, Mastercard Agent Pay) capture delegation constraints as enforcement rules. When enforcement succeeds, the dispute never happens. When enforcement fails — misconfiguration, agent circumvention, cross-network transaction — there is no hash-chained evidence proving the constraints existed. The delegation artifact captures these constraints as an immutable evidence record, usable in post-hoc dispute representment on any payment rail.

Payload Schema

{
  "delegatee_agent_id": "string — agent identifier (required)",
  "delegatee_agent_name": "string — human-readable agent name (required)",
  "scope": "full" | "limited" (required),
  "spending_limit": {
    "value": "string — decimal amount (required if scope=limited)",
    "currency": "string — ISO 4217 (required if scope=limited)"
  },
  "allowed_actions": ["string"] (required),
  "merchant_restrictions": {
    "type": "allowlist" | "blocklist" | "category" | "none" (required),
    "values": ["string"] (optional)
  },
  "time_window": {
    "start": "ISO8601 UTC (optional)",
    "end": "ISO8601 UTC (optional)"
  },
  "authentication_method": "string — how consumer authorized delegation (required)"
}

Permitted actor types: user. The delegation artifact always records the consumer's action — the consumer is the delegator.

Present only in agent-mediated transaction types (ai_referral_agent_session, agent_session_only). Absent in standard checkout types.

3.5 Policy Artifact

Records the outcome of the merchant's policy engine evaluation. The policy check must occur after intent and before authorization. Implementors must never authorize a transaction without a preceding policy artifact.

Payload Schema

{
  "policy_version": "string (required)",
  "evaluation_result": "approved" | "blocked" | "escalated" (required),
  "rules_evaluated": ["string"] (optional),
  "reason": "string — required if blocked or escalated (optional)"
}

Actor type: merchant. In pilot deployments without a full policy engine, this artifact is auto-generated by the reference implementation with evaluation_result: "approved" and policy_version: "default-v1".

3.7 Authorization Artifact

Records the PSP authorization result. This artifact is the seal point. Its current_hash becomes sealed_bundle_hash on the transaction chain.

🚫
PCI-DSS: No raw card data permitted Authorization artifact payloads must never contain PANs, CVVs, full magnetic stripe data, or any digit sequence that passes the Luhn algorithm. Implementations must validate payload fields at ingestion and reject any payload containing a PAN pattern. The only permitted payment credential field is payment_token_reference — a PSP-issued opaque token.

Payload Schema

{
  "payment_token_reference": "string — PSP-issued token only, never PAN",
  "psp": "string — PSP name (e.g., 'stripe', 'adyen')",
  "authorization_code": "string",
  "amount_authorized": "string",
  "currency": "string (ISO 4217)",
  "payment_method_type": "string (e.g., 'card', 'apple_pay')"
}

Actor type: psp.

3.8 Fulfillment Artifact

Records the fulfillment provider's shipping and delivery data. This artifact may arrive asynchronously after the chain is sealed and must be accepted via the late-arrival append path.

Payload Schema

{
  "carrier": "string (required)",
  "status": "pending" | "in_transit" | "delivered" | "failed" | "returned" (required),
  "tracking_number": "string (optional)",
  "tracking_url": "string — publicly accessible URL (optional)",
  "shipped_at": "ISO8601 UTC timestamp (optional)",
  "delivered_at": "ISO8601 UTC timestamp (optional)",
  "destination_address": "string — city/state/country only; no street address (optional)",
  "platform_order_id": "string — platform-native order ID, e.g. Shopify GID (optional)"
}

Actor type: fulfillment_provider.

3.9 Artifact Type Reference

Type Seq. Transaction Types Permitted Actors Seal point? Post-seal?
discovery 1 ai_referral_* agent, merchant No No
referral 2 ai_referral_* user No No
intent 3 or 1 all user, agent No No
delegation 4 or 2 agent-mediated only user No No
policy 5 or 3 all merchant No No
consent 6 or 4 all user, agent No No
authorization 7 or 5 all psp Yes No
fulfillment 8 or 6 all fulfillment_provider No Yes

4. Cryptographic Hash Chain

4.1 Hash Formula

The current_hash of every artifact is computed as SHA-256 over the canonical JSON representation of the artifact's hash input. All fields that contribute to the hash are listed below:

current_hash = SHA256(canonical_json({
  actor_id,           // normalized actor identifier
  actor_type,         // 'user' | 'agent' | 'merchant' | 'psp' | 'fulfillment_provider'
  artifact_type,      // 'discovery' | 'referral' | 'intent' | 'delegation' | 'policy' | 'consent' | 'authorization' | 'fulfillment'
  interaction_channel, // 'voice' | 'text_chat' | 'voice_and_text' | null
  metadata,           // {protocol, sdk_version, merchant_id, session_id, ...} | null
  payload,            // type-specific payload object
  previous_hash,      // SHA256 of preceding artifact | null (genesis only)
  timestamp           // ISO8601 UTC — RFC3339 'Z' format enforced
}))
Canonical JSON JSON keys are sorted lexicographically. Timestamps are normalized to RFC3339 UTC format (trailing 'Z'). No whitespace. The canonical representation must be deterministic across all environments — identical inputs must produce identical hash output in CI, staging, and production.

The hash is output as a hex-prefixed string: sha256:<64-character lowercase hex>.

previous_hash must be inside the input The previous_hash field must be included inside the hash input object — not treated as a side reference. This is what makes the chain sequential and tamper-evident. Any implementation that computes the hash without previous_hash in the input is non-conformant and produces an undetectable chain break vulnerability.

Hash Output Format

sha256:a3f1c8b0e2d4f6a1b3c5e7f9a1b3c5e7f9a1b3c5e7f9a1b3c5e7f9a1b3c5e7f9

4.2 Genesis Artifact

The first artifact in any chain is the genesis artifact. Its distinguishing property is that previous_hash is null. All subsequent artifacts must have a non-null previous_hash equal to the current_hash of the immediately preceding artifact.

Property Genesis (seq = 1) Non-genesis (seq > 1)
sequence_number 1 N (monotonically increasing)
previous_hash null Required — current_hash of artifact at seq N-1
Chain link verification N/A — no predecessor Must verify previous_hash == preceding.current_hash

4.3 Ed25519 Server Signature

Every artifact carries a required Ed25519 server signature over its current_hash. The signature is stored as a separate field (server_signature) on the artifact record and is never included in the hash input itself.

server_signature = Ed25519Sign(private_key, current_hash)

The corresponding Ed25519 public key is published by the implementing party (A-Comm Inc. or any independent implementor) to allow third-party verification without access to the private key.

🚫
Signature is always required Unsigned artifacts are non-conformant. An AEP dispute bundle that contains artifacts without server signatures cannot be presented as a complete evidence chain. Verification implementations must treat missing signatures as a verification failure.

Verification Steps (per artifact)

  1. Recompute current_hash from the artifact's hash input fields
  2. Assert recomputed hash equals stored current_hash (constant-time comparison)
  3. Verify Ed25519 server_signature against the stored current_hash using the published public key
  4. Verify previous_hash equals current_hash of the preceding artifact (except genesis)

5. Verification

Full chain verification produces a structured result with four independent sub-checks:

Check Field How verified Failure meaning
Hash chain integrity hash_chain_intact For every artifact (seq > 1): current_artifact.previous_hash == preceding.current_hash An artifact was inserted, deleted, or reordered
Hash recomputation part of valid For every artifact: recompute hash from fields and compare to stored current_hash An artifact's content was modified after creation
Signature validity signatures_valid For every artifact: verify Ed25519 signature against current_hash using published public key Artifact was not signed by the claimed authority, or key mismatch
Chain completeness chain_complete total_artifacts == expectedArtifactCount(transaction_type) Expected artifact layers are missing (chain may still be valid)

Verification Result Schema

{
  "valid": boolean,              // true only if hash_chain_intact AND signatures_valid AND all hashes verify
  "hash_chain_intact": boolean,
  "signatures_valid": boolean,
  "chain_complete": boolean,     // expected artifact count met
  "artifacts_verified": number,  // count of successfully verified artifacts
  "errors": ["string"]           // human-readable error messages if valid = false
}
chain_complete is informational A chain can be valid: true and chain_complete: false simultaneously — this occurs when not all expected artifact layers have been appended yet (e.g., a fulfillment artifact has not arrived). Verification is a point-in-time check. The chain remains valid even if not all layers are present.

6. Dispute Evidence Export

An AEP dispute bundle (DisputeBundle) is the complete export of a transaction chain for representment submission. It contains the full artifact sequence, verification result, merchant context, and export timestamp.

6.1 DisputeBundle Schema

{
  "transaction": {
    "id": "string",
    "transactionType": "ai_referral_agent_session" | ...,
    "status": "string",
    "interactionChannel": "voice" | "text_chat" | "voice_and_text" | null,
    "createdAt": "ISO8601",
    "completedAt": "ISO8601 | null",
    "sealedBundleHash": "sha256:... | null"
  },
  "verification": {
    "valid": boolean,
    "hashChainIntact": boolean,
    "signaturesValid": boolean,
    "chainComplete": boolean,
    "artifactsVerified": number,
    "errors": ["string"]
  },
  "artifacts": [EhcArtifactRecord],  // ordered by sequence_number ASC
  "merchantContext": {
    "merchantId": "string",
    "merchantName": "string",
    "totalValue": "string | null",
    "currency": "string | null"
  },
  "exportedAt": "ISO8601"
}

6.2 Chain Re-verification on Export

Before generating a dispute bundle, implementations must re-verify the full chain. Any verification failure must be surfaced in the bundle's verification object rather than silently omitted. A dispute bundle with verification.valid = false must be flagged before submission.


7. Discovery Attribution

Because AI platforms do not provide reliable referral signals, AEP uses a layered attribution model combining deterministic and probabilistic methods to identify the AI citation that originated a commerce journey.

7.1 Platform Coverage

AEP natively supports four AI platforms as discovery sources. Each platform has distinct referrer behavior that affects which attribution methods are reliable:

Platform Value (platform field) Referrer behavior Recommended primary method
ChatGPT chatgpt Frequently strips referrer header referral_param or behavioral_heuristic
Google Gemini gemini May pass google.com referrer referrer_header + referral_param
Perplexity perplexity Consistently passes referrer referrer_header
Microsoft Copilot copilot May pass bing.com referrer referral_param + referrer_header

7.2 Attribution Methods

The attribution_method field on the discovery artifact records how the AI citation was linked to the inbound session:

Method Description Confidence Dispute weight
referral_param URL parameter (e.g., ?acomm_agent=chatgpt) injected into product URLs distributed via structured data and feeds. Deterministic — the parameter was present in the inbound URL. Deterministic Highest
merchant_tracked_link Merchant-controlled link with signed tracking token. Deterministic. Deterministic Highest
referrer_header HTTP Referer header from the AI platform domain. Present when the platform sends referrer data. High High
behavioral_heuristic Session behavior pattern (direct landing on product page, no prior navigation, session timing consistent with AI-mediated click). Probabilistic. Probabilistic Supporting
Attribution method and dispute weight Deterministic methods (referral_param, merchant_tracked_link) produce the strongest dispute evidence. Probabilistic methods (behavioral_heuristic) are supporting signals that corroborate but cannot independently establish attribution. Include all available signals in the discovery artifact payload — do not discard lower-confidence signals when higher-confidence signals are present.

7.3 Session Linkage Chain

Connecting a discovery artifact to a payment authorization requires the ehc_transaction_id to propagate through the consumer's browser session. The reference implementation uses the following linkage chain:

1.  Consumer arrives via AI citation
        → POST /v1/events/referral (referral tracking script)
        → EHC transaction created; discovery + referral artifacts appended
        → Response includes: { ehc_transaction_id: "txn_..." }
        → Store: sessionStorage.setItem("acomm_ehc_transaction_id", id)
                 + cookie: acomm_ehc=txn_...; SameSite=None; Secure

2.  Consumer adds product to cart
        → Shopify Web Pixel: analytics.subscribe("product_added_to_cart", ...)
        → POST /v1/ehc/artifacts  { artifact_type: "intent", ... }
          Auth: X-Acomm-Session header (session token, not cookie)
        → Intent artifact appended (seq 3)

3.  Consumer proceeds to checkout
        → Shopify Checkout Extension (purchase.checkout.block.render)
        → useCartLines() + useTotalAmount() → cart artifact payload
        → POST /v1/ehc/artifacts  { artifact_type: "cart", confirmed: true, ... }
        → Cart artifact appended (seq 5 or 3)
        → Sets Shopify order metafield: acomm_ehc_transaction_id = txn_...

4.  Consumer pays
        → Stripe PaymentIntent created with metadata:
            { acls_ehc_transaction_id: "txn_...", acls_account_id: "acc_..." }
        → payment_intent.succeeded webhook fires
        → Authorization artifact appended + chain sealed

The ehc_transaction_id is the single token that ties all four steps together. Implementations must propagate it from the initial referral response through to the Stripe PaymentIntent metadata. Loss of this token at any step results in an incomplete chain.


8. Implementation Notes

8.1 Immutability Enforcement

AEP artifacts must be append-only. The storage layer must enforce immutability at the database level — application-layer enforcement alone is insufficient because it can be bypassed by direct database access or administrative operations.

Recommended PostgreSQL implementation

-- Prevent mutation of immutable fields
CREATE OR REPLACE FUNCTION prevent_ehc_artifact_mutation()
RETURNS TRIGGER AS $$
BEGIN
  RAISE EXCEPTION
    'ehc_artifacts rows are immutable. Attempted update on id=% field=%',
    OLD.id, TG_OP;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER ehc_artifacts_immutability_update
  BEFORE UPDATE ON ehc_artifacts
  FOR EACH ROW EXECUTE FUNCTION prevent_ehc_artifact_mutation();

-- Prevent deletion
CREATE OR REPLACE FUNCTION prevent_ehc_artifact_delete()
RETURNS TRIGGER AS $$
BEGIN
  RAISE EXCEPTION
    'ehc_artifacts rows are immutable and cannot be deleted. id=%', OLD.id;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER ehc_artifacts_immutability_delete
  BEFORE DELETE ON ehc_artifacts
  FOR EACH ROW EXECUTE FUNCTION prevent_ehc_artifact_delete();

Implementors must also ensure that sealed_bundle_hash on the transaction chain record is set once and never updated. Apply a CHECK constraint or trigger on the column to enforce this.

8.2 PII and Privacy

AEP is designed to be PII-minimal. The following rules apply to all artifact payloads:

  • Consumer actor IDs must be pseudonymized using HMAC-SHA256 with a per-merchant secret salt: HMAC-SHA256(user_id, per_merchant_salt). Never store raw user IDs in artifact payloads.
  • Email addresses, names, and physical addresses must not appear in artifact payloads. Destination addresses in fulfillment artifacts must be redacted to postal code only.
  • Session tokens in discovery/referral payloads must be time-limited (maximum 24 hours), merchant-scoped, and verifiable — never raw session identifiers.
  • The entire artifact chain must be exportable without exposing any PII that could identify the consumer to a third-party reviewer.

8.3 PCI-DSS Compliance

Authorization artifact payloads must never contain primary account numbers (PANs), CVVs, full magnetic stripe data, or any value that passes the Luhn algorithm.

Luhn check enforcement

Implementations must validate authorization payloads at ingestion using a Luhn check against all digit sequences of 13–19 digits. Any payload field containing a PAN-like pattern must be rejected before the artifact is created:

// PAN detection pattern
const PAN_REGEX = /\b(\d[ -]?){13,19}\b/g;

function passesLuhn(digits: string): boolean {
  const d = digits.replace(/\D/g, '');
  let sum = 0;
  let odd = false;
  for (let i = d.length - 1; i >= 0; i--) {
    let n = parseInt(d[i], 10);
    if (odd) { n *= 2; if (n > 9) n -= 9; }
    sum += n;
    odd = !odd;
  }
  return sum % 10 === 0;
}

function containsRawPaymentCredentials(payload: Record<string, unknown>): boolean {
  const text = JSON.stringify(payload);
  const matches = text.match(PAN_REGEX) ?? [];
  return matches.some(m => passesLuhn(m.replace(/\D/g, '')));
}

The only permitted payment credential field is payment_token_reference — an opaque PSP-issued token that references a stored payment method without containing any card data.

8.4 Idempotency

Artifact creation must be idempotent. Implementations must derive idempotency keys deterministically from the artifact's identifying properties, allowing retries without duplicate artifact creation:

idempotency_key = SHA256(
  transaction_id + ":" +
  artifact_type  + ":" +
  actor_id       + ":" +
  floor(timestamp_ms / 60000)  // 60-second window
)

The idempotency key must be stored with a UNIQUE constraint on the artifacts table. A duplicate key violation on insert should return the existing artifact rather than raising an error.

8.5 Data Retention

Evidence chain data must be retained long enough to support dispute resolution, audit, and regulatory review. AEP specifies the following retention model:

Minimum retention Default retention Maximum retention Rationale
12 months 24 months 24 months Card network chargeback windows (120 days) + appeals (18 months) + SOC2 audit cycles

The retention_until timestamp is computed when the transaction is closed (completed_at is set): retention_until = completed_at + 730 days. Implementations should schedule automated deletion after this date.


9. Network System Interoperability

AEP is designed to complement — not replace — payment network enforcement systems. This section defines how AEP evidence chains interoperate with Visa Intelligent Commerce and Mastercard Agent Pay, and where AEP produces evidence that network systems structurally cannot.

9.1 Positioning Principle

Payment network systems and AEP operate at different layers of the agentic commerce stack:

  • Network enforcement systems (Visa IC, MC Agent Pay) prevent disputes by enforcing rules at authorization time — spending limits, category restrictions, agent identity verification. When enforcement succeeds, the dispute never happens.
  • AEP produces evidence for disputes that reach representment — when enforcement fails, when the transaction crosses rails, or when the dispute turns on semantic detail that enforcement cannot capture.

These are complementary, not competing. A merchant using both Visa IC and AEP has stronger protection than either alone: Visa IC prevents most violations in real time; AEP provides the evidence bundle when violations slip through or when the dispute is adjudicated on a non-Visa rail.

9.2 Visa Intelligent Commerce

Visa Intelligent Commerce consists of four components relevant to agentic commerce disputes:

Component Function AEP Relationship
Trusted Agent Protocol (TAP) Verifies agent identity via cryptographic signatures (RFC 9421). Answers: "Is this a legitimate AI agent?" AEP can wrap TAP agent signatures in the intent or delegation artifact's metadata field, preserving the agent verification as part of the evidence chain.
Payment Instructions Consumer-defined spending limits and MCC-level merchant category restrictions, enforced at VisaNet authorization. AEP's delegation artifact captures the same constraints as hash-chained evidence. When Payment Instructions enforcement fails (misconfiguration, agent circumvention, non-Visa rail), the delegation artifact proves the constraints existed.
AI-Ready Cards Passkey-authenticated consumer identity binding to agent sessions. AEP's consumer identity (HMAC-SHA256 pseudonymized) is complementary. AI-Ready Card authentication status can be recorded in the delegation artifact's authentication_method field.
Verifi Rapid Dispute Resolution (RDR) auto-resolves disputes; Order Insight shares transaction details with issuers pre-dispute. Verifi resolves disputes before they reach representment. AEP provides the evidence bundle when disputes escalate beyond what Verifi can auto-resolve. The AEP DisputeBundle can include Verifi interaction data in the merchant_context field.

Structural limitations (where AEP adds evidence Visa IC cannot produce)

  • Visa-only: Payment Instructions and VisaNet enforcement operate on the Visa rail only. AEP evidence is usable in disputes on any payment rail.
  • Enforcement, not evidence: Payment Instructions are rules loaded into VisaNet. When enforcement fails, there is no hash-chained evidence artifact proving the rules existed. AEP's delegation artifact is an immutable evidence record.
  • Category-level, not semantic: Payment Instructions restrict by MCC code ("electronics") and spending limit. AEP's intent artifact captures "wireless noise-canceling headphones under $200" — the semantic resolution at which agent-mediated disputes are adjudicated.
  • No fulfillment attestation: Visa IC's scope ends at authorization. AEP's fulfillment artifact provides post-authorization delivery proof.
  • No merchant policy check: Visa IC operates at the network and consumer level. AEP's policy artifact records the merchant's own risk evaluation.

9.3 Mastercard Agent Pay

Mastercard Agent Pay consists of three components relevant to agentic commerce disputes:

Component Function AEP Relationship
Verifiable Intent Cryptographically signed object capturing consumer identity, action-level intent ("purchase"), and binding proof. AEP can wrap the Verifiable Intent object in the intent artifact's metadata field. AEP's intent artifact adds the semantic layer that Verifiable Intent lacks — not just "purchase" but "purchase wireless noise-canceling headphones."
Agent Pay Program Agent registration, delegation context, and partial spending limit capture. AEP's delegation artifact provides the structured, hash-chained version of delegation constraints. Agent Pay delegation context can be recorded in the delegation artifact's metadata.
Ethoca Real-time dispute data sharing between merchants and issuers. Ethoca shares dispute signals in real time. AEP provides the hash-chained evidence bundle for representment when disputes proceed to arbitration. The AEP DisputeBundle can include Ethoca alert data in the merchant_context field.

Structural limitations (where AEP adds evidence MC Agent Pay cannot produce)

  • Mastercard-only: Agent Pay and Verifiable Intent operate on the Mastercard rail only. AEP evidence is usable in disputes on any payment rail.
  • Action-level, not semantic: Verifiable Intent captures "purchase" as the action. AEP captures the consumer's natural-language request — the semantic detail that determines whether the agent fulfilled the consumer's actual intent.
  • No spending limit as structured field: Spending limits are not a native deterministic field in Agent Pay's evidence output. AEP's delegation artifact captures spending limits as a structured, hash-chained field that enables deterministic violation detection.
  • No merchant restriction mechanism: Agent Pay has no field for domain-level merchant allowlists. AEP's delegation artifact captures merchant restrictions at the domain level ("sephora.com, ulta.com").
  • No fulfillment attestation: MC Agent Pay scope ends at authorization. AEP's fulfillment artifact provides post-authorization delivery proof.
  • No cross-layer hash chain: Verifiable Intent has internal cryptographic binding. AEP produces a cross-layer hash chain where every artifact is linked to its predecessor — any insertion, deletion, or mutation is detectable at every subsequent node.

9.4 Cross-Network Evidence Summary

Evidence Capability Visa IC MC Agent Pay AEP
Consumer identity binding Passkey (AI-Ready Card) Verifiable Intent identity HMAC-SHA256 pseudonymized
Agent identity verification TAP (RFC 9421) Agent Pay registration Agent ID in artifacts (can wrap TAP/AP signatures)
Semantic intent capture Category-level (MCC) Action-level ("purchase") Natural-language level
Delegation constraints Payment Instructions (enforcement) Partial (Agent Pay context) Structured evidence artifact
Item-level consent Category-level (Payment Instruction auth) Action-level (Verifiable Intent) Per-item confirmation with consent method
Merchant policy check Not captured Not captured Policy artifact (merchant-side evaluation)
Fulfillment attestation Verifi Order Insight (partial) Not captured Fulfillment artifact (carrier, tracking, delivery)
Hash chain integrity TAP signatures (per-agent) Verifiable Intent binding (per-object) Cross-layer SHA-256 chain + Ed25519 signatures
Cross-network usability Visa only Mastercard only Any payment rail
Pre-dispute resolution Verifi RDR + Order Insight Ethoca real-time data sharing Not applicable (evidence layer, not enforcement)
Recommended deployment model AEP is strongest when deployed alongside network enforcement systems. The recommended model: Visa IC or MC Agent Pay prevents disputes at the network enforcement layer. AEP captures the evidence chain in parallel. If enforcement succeeds, the AEP chain serves as an audit record. If enforcement fails or the dispute escalates to representment, the AEP DisputeBundle provides the cross-network, hash-chained evidence that network systems cannot produce.

Appendix A — Glossary

Term Definition
Artifact An immutable, cryptographically hashed record of a single event in the commerce journey. Eight artifact types are defined: discovery, referral, intent, delegation, policy, consent, authorization, fulfillment.
Transaction chain The ordered, append-only sequence of artifacts representing a single commerce transaction from discovery to fulfillment.
Genesis artifact The first artifact in a chain (sequence_number = 1). Its previous_hash is null.
Sealed bundle hash The current_hash of the authorization artifact, stored on the transaction chain record. Immutable once set. Marks the boundary between pre-seal and post-seal artifact appends.
AEP A-Comm Evidence Protocol. The name "AEP" reflects the protocol's origin in Intentra's evidence protocol specification. The A-Comm reference implementation uses the name AEP throughout the codebase.
DisputeBundle The complete exported artifact sequence plus transaction metadata, verification result, and merchant context. The unit of evidence submitted to PSPs and card networks.
canonical_json A deterministic JSON serialization with lexicographically sorted keys, RFC3339 UTC timestamps, and no whitespace.
previous_hash The current_hash of the immediately preceding artifact in the chain. Included inside the hash input (not as a side reference). null for genesis artifacts only.
Interaction channel The modality of the agent session: voice, text_chat, or voice_and_text. null for non-agent artifact layers.
Attribution method The mechanism used to link an AI platform citation to an inbound session: referral_param, merchant_tracked_link, referrer_header, or behavioral_heuristic.
Delegation artifact Records the consumer's delegation of authority to an AI agent — scope, spending limits, merchant restrictions, allowed actions, and time constraints. Present only in agent-mediated transaction types. Added in v1.1.0.
Consent artifact Records the consumer's explicit confirmation of specific items, quantities, and total price before checkout. Replaces the v1.0 "cart" artifact with expanded semantics including consent_method (explicit, delegated, implicit). Added in v1.1.0.
Visa Intelligent Commerce Visa's suite of agentic commerce capabilities: Trusted Agent Protocol (TAP) for agent identity, Payment Instructions for spending limits and MCC restrictions, AI-Ready Cards for Passkey consumer authentication, and Verifi for pre-dispute resolution. Operates on the Visa rail only.
Mastercard Agent Pay Mastercard's suite of agentic commerce capabilities: Verifiable Intent for identity and action-level intent, Agent Pay program for agent registration and delegation context, and Ethoca for real-time dispute data sharing. Operates on the Mastercard rail only.
Cross-network evidence Evidence that is usable in dispute representment regardless of which payment rail processed the transaction. AEP evidence is cross-network by design; Visa IC and MC Agent Pay evidence is network-specific.
Enforcement layer Systems that prevent disputes by blocking transactions at authorization time (e.g., VisaNet enforcement of Payment Instructions). Distinct from the evidence layer, which produces proof for post-hoc dispute representment.
Evidence layer Systems that produce cryptographic proof for dispute representment after a transaction has been authorized. AEP operates at the evidence layer. Enforcement and evidence are complementary.

Appendix B — JSON Schema Reference

The following is the TypeScript interface for the artifact hash input, which defines all fields that contribute to current_hash. This interface is the normative reference for hash computation.

interface ArtifactHashInput {
  artifact_type: ArtifactType;
  actor_type: ActorType;
  /**
   * Normalized actor identifier.
   * Users: HMAC-SHA256(id, per-merchant salt). Agents: name[:version].
   */
  actor_id: string;
  /**
   * null for non-agent artifact layers (psp, fulfillment_provider, direct_web).
   */
  interaction_channel: 'voice' | 'text_chat' | 'voice_and_text' | null;
  payload: Record<string, unknown>;
  metadata: Record<string, unknown> | null;
  /**
   * null ONLY for genesis artifact (sequence_number = 1).
   * Required and non-null for all subsequent artifacts.
   */
  previous_hash: string | null;
  /** ISO 8601 UTC string — 'Z' suffix required */
  timestamp: string;
}

type ArtifactType =
  | 'discovery' | 'referral' | 'intent' | 'delegation'
  | 'policy' | 'consent' | 'authorization' | 'fulfillment'
  | 'cart'; // deprecated alias for 'consent' — accepted for v1.0 backward compatibility

type ActorType =
  | 'user' | 'agent' | 'merchant' | 'psp' | 'fulfillment_provider';

type TransactionType =
  | 'ai_referral_agent_session'
  | 'ai_referral_standard_checkout'
  | 'agent_session_only'
  | 'direct_web';

/** Expected artifact count for chain_complete verification */
function expectedArtifactCount(type: TransactionType): number {
  return (type === 'ai_referral_agent_session' ||
          type === 'ai_referral_standard_checkout') ? 7 : 5;
}

Appendix C — Stripe Evidence API Mapping

An AEP DisputeBundle maps directly to Stripe's Dispute Evidence API fields (stripe.com/docs/api/disputes/update). The following mapping is implemented in the reference implementation's stripe-formatter.ts.

Character limit Stripe caps each evidence field at approximately 1,500 characters. The reference implementation caps at 1,400 characters per field to leave headroom for Stripe's internal processing. Implementations must truncate gracefully — never mid-word or mid-hash.
Stripe field AEP source Content
customer_communication discovery + intent + cart artifacts (forward-chronological) Discovery artifact first: AI platform, consumer query, referral URL, attribution method, confidence score, hash. Then intent artifact: product, quantity, actor, channel, timestamp, hash. Then cart artifact: confirmed=true, item count, total, currency, hash. Together these form the complete "authorization trail" from AI citation through explicit cart confirmation.
shipping_documentation fulfillment artifact Carrier, tracking number, tracking URL, fulfillment status, shipped_at, delivered_at, artifact hash and previous hash. "No fulfillment artifact recorded" if the artifact has not yet arrived.
receipt authorization artifact + transaction header Transaction chain ID, transaction type, chain status at export, authorization timestamp, actor, payment token reference (not PAN), PSP name, authorization code, amount authorized, sealed bundle hash, artifact hash.
uncategorized_text Full chain summary Chain integrity verification result (valid/intact/signatures/complete/artifacts verified/errors), transaction ID/type/channel/timestamps, and the full artifact sequence table (sequence number, artifact type, actor type, hash prefix). Provides cryptographic context for card network reviewers.

Sample uncategorized_text output

A-COMM.AI EVIDENCE HASH CHAIN — VERIFICATION SUMMARY
Protocol: A-Comm Evidence Protocol (AEP) v1.1.0 (Apache 2.0)
Exported: 2025-06-15T14:22:07Z

-- CHAIN INTEGRITY --
Chain valid: YES
Hash chain intact: YES
Signatures valid: YES
Chain complete: YES
Artifacts verified: 7

-- TRANSACTION --
ID: txn_01HV4K8QZXMJF2B3C5D7E9FA
Type: ai_referral_agent_session
Channel: text_chat
Created: 2025-06-15T14:01:33Z
Completed: 2025-06-15T14:08:19Z

-- ARTIFACT SEQUENCE --
[1] discovery       actor=agent                hash=a3f1c8b0e2d4f6a1...
[2] referral        actor=user                 hash=b7d2e9f1a4c6b8d0...
[3] intent          actor=agent                hash=c1e3f5g7h9i1j3k5...
[4] policy          actor=merchant             hash=d2f4h6j8l0n2p4r6...
[5] cart            actor=agent                hash=e3g5i7k9m1o3q5s7...
[6] authorization   actor=psp                  hash=f4h6j8l0n2p4r6t8...
[7] fulfillment     actor=fulfillment_provider hash=g5i7k9m1o3q5s7u9...

Appendix D — Changelog

Version Date Changes
v1.1.0 2026-04-10 Major update: delegation and consent artifacts, network interoperability. New artifact types: delegation (records consumer delegation of authority to AI agent — scope, spending limits, merchant restrictions, allowed actions); consent (replaces cart — adds consent_method field distinguishing explicit, delegated, and implicit confirmation). Commerce journey: expanded from 7 to 8 layers; transaction type matrix updated (ai_referral_agent_session: 8 artifacts, agent_session_only: 6 artifacts). New section 9: Network System Interoperability — defines how AEP complements Visa Intelligent Commerce (TAP + Payment Instructions + AI-Ready Cards + Verifi) and Mastercard Agent Pay (Verifiable Intent + Agent Pay + Ethoca); cross-network evidence summary table; recommended deployment model. Updated sections: Problem Statement (1.1) acknowledges network enforcement systems and positions AEP as the cross-network evidence layer; Design Goals (1.2) adds cross-network, network-complementary, and semantic-resolution as explicit goals. Backward compatibility: cart artifact type accepted as deprecated alias for consent with consent_method: "implicit". Glossary expanded with delegation, consent, Visa IC, MC Agent Pay, cross-network evidence, enforcement layer, evidence layer.
v1.0.1 2026-03-31 Reference implementation alignment. Payload schemas: per-artifact Zod validation schemas defined for all 7 artifact types (payload-schemas.ts). Policy artifact: step_up_requiredescalated; blocking_rule/step_up_typereason; added auto-generation note for pilot deployments without a policy engine. Referral artifact: corrected payload schema to match reference implementation (referral_event_id, session_token, product_id, agent, consent_given); corrected actor type from merchant to user (pseudonymized consumer IP). Discovery artifact: removed session_token and model_used fields (strict validation strips unknown fields); added meta to platform enum. Intent artifact: added optional unit_price and currency fields. Fulfillment artifact: updated status enum (pending, in_transit, returned added; processing/shipped consolidated); added platform_order_id. Stripe Appendix C: reordered customer_communication to forward-chronological (discovery → intent → cart). Session linkage: POST /v1/events/referral now returns ehc_transaction_id in response body, enabling session token propagation to Shopify Web Pixel and Checkout Extension. Database: agentic_referral_events.ehc_transaction_id (reverse FK) and transaction_chains.shopify_order_id added (migration 050).
v1.0 2025 Initial public release. Defines: 7-artifact commerce journey (discovery, referral, intent, policy, cart, authorization, fulfillment); 2×2 transaction type matrix; sequential hash chain model with previous_hash inside hash input; Ed25519 server signature on every artifact; sealing model at authorization layer; post-seal fulfillment append path; discovery artifact with AI platform coverage (ChatGPT, Gemini, Perplexity, Copilot); 4-method attribution model; PCI-DSS Luhn enforcement; HMAC-SHA256 actor pseudonymization; idempotency key formula; PostgreSQL append-only trigger patterns; Stripe Evidence API mapping; 4-check verification protocol.

A-Comm Evidence Protocol (AEP) v1.1.0 — Copyright 2026 A-Comm Inc. — Apache License 2.0 — Published by A-Comm Inc., krystalgracier@gmail.com