supply-path | Fail-closed owner-sold supply-path states, leg diagnostics, collection/property scope, revocations and applicable IAB evidence | static/compliance/source/test-vectors/supply-path/ | /compliance/latest/test-vectors/supply-path/ |
reporting-summary | Future expectations in complete reporting summaries, scope guards, timestamp formats, and unchanged view and health constraints (next 3.2 RC) | static/compliance/source/test-vectors/reporting-summary/ | /compliance/latest/test-vectors/reporting-summary/ |
request-signing | RFC 9421 request-signing profile: canonical signature base, covered components, signature params, tag namespace, alg allowlist, adcp_use discriminator, replay dedup, revocation, content-digest semantics, and URL canonicalization | static/compliance/source/test-vectors/request-signing/ | /compliance/latest/test-vectors/request-signing/ |
wba-profile | Web Bot Auth request-signing profile, experimental in 3.3 (DR-0023): covered Signature-Agent member, key selection by JWK thumbprint from the directory at the named origin, required nonce and replay rejection, one signature per request, signed directory responses (WBA Appendix B.1), 400/403/429 status-code outcomes, and failure scenarios as data | static/compliance/source/test-vectors/wba-profile/ | /compliance/latest/test-vectors/wba-profile/ |
webhook-signing | RFC 9421 webhook-signing profile: required covered components (content-digest mandatory — no forbidden opt-out), adcp/webhook-signing/v1 tag, webhook-valid adcp_use set (request-signing plus deprecated webhook-signing), webhook_signature_* error taxonomy; shares @target-uri canonicalization with request-signing | static/compliance/source/test-vectors/webhook-signing/ | /compliance/latest/test-vectors/webhook-signing/ |
plan-hash | JCS canonicalization of the plan_hash preimage: required-only baseline, full-optional, bookkeeping-stripped, omitted-vs-explicit-null, array-order sensitivity, ext.trace_id distinctness, Unicode non-normalization (RFC 8785 §3.2.5) | static/compliance/source/test-vectors/plan-hash/ | /compliance/latest/test-vectors/plan-hash/ |
hold-policy | Experimental hold_policy verdicts: min_duration and max_duration bounds from the committed hold_placed_at (24-hour days on the UTC instant, submitted finalizes, placement inside the request window, window grading for 3.2 callers), policy presence and carry-forward, hold_unavailable and batch_aborted in all-or-none batches, per-entry terms-only resolution, hold_semantics defaults, the 3.3 version gate and below-3.3 omission, draft derivation from product policies, duration ordering, installment booking_deadline and change_cutoff capping a hold, exact-retry replay of a finalize, and experimental extend_hold successors (max_total_duration from the original hold_placed_at, carry-forward, extendable defaulting to false, INVALID_STATE for a source without a hold, multi-entry all-or-none batches), experimental hold ranking (rankable derivation, hold_rank presence, positions that never worsen across an extension), and experimental installment holds (complete, duplicate-free holds on allocated products, the worst entry position, the same entries across an extension) | static/compliance/source/test-vectors/hold-policy/ | /compliance/latest/test-vectors/hold-policy/ |
collection-copies | Experimental collection copies (media_buy.collection_cards, media_buy.collection_catalog): the buyer’s merged view of a seller copy and adagents.json (the closed list, followers per distribution entry, unverified, duplicate, omitted and stray copies), list_collections seller responses (selectors, filters with RFC 4647 language ranges, silent omission, visibility, copy consistency with include_collections, token scope, the 100-ID limit, the 3.3 version gate), collection_card.* and collection_catalog.bulk_change webhook payloads, and card mirror application (gaps, out-of-order arrival, bulk change, retries and re-emissions, failed signatures) | static/compliance/source/test-vectors/collection-copies/ | /compliance/latest/test-vectors/collection-copies/ |
governance-authorization | Cross-role governed-payload JCS/SHA-256 hashes, authorization decisions, and 27 byte-exact Ed25519 compact-JWS fixtures. Signed cases cover critical headers, audience/caller/task/payload bindings, commitment currency and ceiling, time bounds, replay identifiers, signature tampering, and zero-cost authorization. The published private component is test-only and MUST NOT be installed as a production trust anchor. | static/compliance/source/test-vectors/governance-authorization.json | /compliance/latest/test-vectors/governance-authorization.json |
webhook-receiver-envelope | Receiver-side replay vectors for full MCP webhook POST envelopes: canonical delivery-report envelope acceptance, retry idempotency preservation, and rejection of bare result payloads or malformed envelopes | static/compliance/source/test-vectors/webhook-receiver-envelope.json | /compliance/latest/test-vectors/webhook-receiver-envelope.json |
catalog-macro-substitution | Catalog-item macro substitution safety: NFC normalization, RFC 3986 percent-encoding, nested-expansion preservation, CRLF neutralization, bidi override neutralization, and URL-scheme injection neutralization | static/compliance/source/test-vectors/catalog-macro-substitution.json | /compliance/latest/test-vectors/catalog-macro-substitution.json |
universal-macro-translation | Producer-side universal-macro translation: RFC 3986 unreserved-whitelist value encoding, verbatim native insertion, unmapped-macro param dropping, privacy/consent macro advisory, suspect native-value detection, single-pass substitution, and control-character rejection in native mappings | static/compliance/source/test-vectors/universal-macro-translation.json | /compliance/latest/test-vectors/universal-macro-translation.json |
creative-representation-resolution | Deterministic creative-representation selection across product and seller capability intersections: paired redirects, highest-compatible VAST selection, representation-order tie breaking, retained alternatives, and exhaustive rejection output when no representation is compatible | static/compliance/source/test-vectors/creative-representation-resolution.json | /compliance/latest/test-vectors/creative-representation-resolution.json |
macro-processing | Creative macro-processing capability matching: byte-preserving unknown tokens, exact dialect/namespace/registry-revision/operation/context/owner/depth checks, seller-side universal-token translation, and the required two RFC 3986 encoding passes for nested click values | static/compliance/source/test-vectors/macro-processing.json | /compliance/latest/test-vectors/macro-processing.json |
tracker-execution-contracts | Product and package tracker execution commitments: normalized pixel/VAST/DAAST selectors, exact event/version/actor/path matching, completeness semantics, package snapshot digests, and narrowing rules | static/compliance/source/test-vectors/tracker-execution-contracts.json | /compliance/latest/test-vectors/tracker-execution-contracts.json |
attestations | Portable attestation trust and resolution: allowlist checks, delivery selection, validity windows, revocation, subject and digest comparison, stable outcomes, and the no-network rule for off-policy inputs. Uses a fictional proof format; cryptographic verification bytes are format-specific and tested by each format’s own suite | static/compliance/source/test-vectors/attestations/ | /compliance/latest/test-vectors/attestations/ |
rights-attestations | Rights-grant profile composed with portable attestations: holder/claim/resolver policy, rights-subject checks, JWKS purpose binding, issuer-bound status evidence, constraint-digest comparison, and fail-closed outcomes for paused, revoked, stale, or untrusted grants | static/compliance/source/test-vectors/rights-attestations/ | /compliance/latest/test-vectors/rights-attestations/ |
governance-runtime-attestations | check_governance signal-activation with portable attestations: normalized outcome and governance verdict, binding-digest computation, deactivation negative-policy, and cache-reuse validity constraints | static/compliance/source/test-vectors/governance-runtime-attestations/ | /compliance/latest/test-vectors/governance-runtime-attestations/ |
audience-evidence | Population-level audience-evidence contract: product evidence snapshot validation, RFC 8785 content-digest recomputation, requirement-mode enforcement (required excludes, preferred ranks), when_available presence handling, and provider/methodology exclusion lists | static/compliance/source/test-vectors/audience-evidence/ | /compliance/latest/test-vectors/audience-evidence/ |
brand-response-signing | Brand-authorization cross-check for verify_brand_claim and verify_brand_claims envelopes: advisory binding produces verifier-local untrusted results without hard-rejecting the response or rewriting signer-asserted verification_status. Mandatory cryptographic brand authorization is deferred to 4.0 | static/compliance/source/test-vectors/brand-response-signing/ | /compliance/latest/test-vectors/brand-response-signing/ |
oauth-setup | OAuth metadata-graph conformance: deterministic network fixtures for oauth_metadata_graph checks, redirect validation, graph-budget enforcement, and fail-closed behavior for missing fixture responses. No live network access permitted | static/compliance/source/test-vectors/oauth-setup/ | /compliance/latest/test-vectors/oauth-setup/ |
trusted-match-context-merge | Context Match targeting key-value merge: router attribution from publisher-controlled provider registration, bucket-key derivation, provider signals.targeting_kvs pass-through, shared-key multi-provider contribution, and dropped unmapped/case-mismatched tuples | static/compliance/source/test-vectors/trusted-match-context-merge/ | /compliance/latest/test-vectors/trusted-match-context-merge/ |
products-only-brief-compatibility | Products-only brief flow across AdCP 2.5, 3.0, 3.1: compact projection without invented proposals, fail-closed legacy-create continuation with named fences, seller-fenced listed_purchase feed/pricing propagation, and 3.2 reverse-compatibility facades | static/compliance/source/test-vectors/products-only-brief-compatibility/ | /compliance/latest/test-vectors/products-only-brief-compatibility/ |
price-adjustments | Deterministic resolution of selection-dependent price_adjustments: one row per dimension (first match), sequential running total in declared order (index cards as fee and discount rates), quote binding to account and expiry, accepted terms pricing a permitted change without granting one, half-away-from-zero rounding at option price precision (JPY, sub-cent cpv), declared-breakdown composition, cross-encoding and cross-scope selector identity, below-zero rejection, buyer-pricing mismatch, new-ID-on-change, and schema negatives (next 3.3 beta) | static/compliance/source/test-vectors/price-adjustments/ | /compliance/latest/test-vectors/price-adjustments/ |
error-recovery | Version-gated 3.2 recovery emission and compatible 3.1 decoding: known/unknown codes with and without recovery, buyer-reason consistency, bounded fallback retries, and retry_after scheduling including legacy fractions | static/compliance/source/test-vectors/error-recovery/ | /compliance/latest/test-vectors/error-recovery/ |
reporting-reconciliation | Managed-reporting reconciliation: exact manifest/object/receipt bytes, canonical logical rows, SHA-256 and SHA-512 evidence, retry/permanent classifications, integrity mutations, receipt idempotency, and uncertain-write checkpoint recovery | static/compliance/source/test-vectors/reporting-reconciliation/ | /compliance/latest/test-vectors/reporting-reconciliation/ |
reporting-subscriptions | Experimental reporting-subscription coverage (media_buy.reporting_subscriptions): every period a subscription owes per buy and resolved offering, from the start bound, the confirmation period, flights as of each period end, cutovers between versions, resolutions, and timezones, deactivation and reactivation, authorization chains and gaps, exceptions, selection, and period generation across DST transitions at midnight, 30-minute DST, non-hour offsets, month-end clamps, and weeks and years. The set also freezes the SDK error codes (error-codes.json) and the coverage reason codes (reason-codes.json). Expected rows use a pinned IANA tzdata release, and a brute-force reference model in scripts/reference/reporting-coverage reproduces every case | static/compliance/source/test-vectors/reporting-subscriptions/ | /compliance/latest/test-vectors/reporting-subscriptions/ |
relationship-scoped-indicators | Indicator snapshot semantics and invalidation lifecycle: scope containment validation, snapshot freshness, and relationship-scoped invalidation behavior | static/compliance/source/test-vectors/relationship-scoped-indicators.json | /compliance/latest/test-vectors/relationship-scoped-indicators.json |
transport-error-mapping | Transport-layer error envelope shapes: the JSON-RPC (error.code / data) and A2A (task status.message) carriers for each documented AdCP transport error | static/test-vectors/transport-error-mapping.json | /test-vectors/transport-error-mapping.json |
mcp-response-extraction | Client extraction of the AdCP payload from MCP tools/call envelopes | static/test-vectors/mcp-response-extraction.json | /test-vectors/mcp-response-extraction.json |
a2a-response-extraction | Client extraction of the AdCP payload from A2A task statuses and artifacts | static/test-vectors/a2a-response-extraction.json | /test-vectors/a2a-response-extraction.json |
a2a-profile-extension-v3 | A2A 1.0 profile advertisement and activation, { skill, input } invocation, advisory TextParts, completed-Task mapping for AdCP Submitted responses, metadata-duplication rejection, and get_task_status polling | static/test-vectors/a2a-profile-extension-v3.json | /test-vectors/a2a-profile-extension-v3.json |
webhook-payload-extraction | Receiver-side format detection and payload extraction for inbound AdCP webhooks | static/test-vectors/webhook-payload-extraction.json | /test-vectors/webhook-payload-extraction.json |
webhook-hmac-sha256 (legacy) | HMAC-SHA-256 signature computation and byte-equality invariants for the legacy HMAC webhook profile. Deprecated in 3.x, removed in 4.0 per Webhook callbacks; new integrations use webhook-signing | static/test-vectors/webhook-hmac-sha256.json | /test-vectors/webhook-hmac-sha256.json |
canonical-image-pixel-ratio | Canonical image logical-size versus intrinsic-pixel validation, top-level/slot density intersection, accepted and required rendition sets, mismatch failures, and parameterized legacy projection | static/test-vectors/canonical-image-pixel-ratio.json | /test-vectors/canonical-image-pixel-ratio.json |
html-markup-legacy-projection | HTML-markup legacy formats (display_html, display_WxH_html): projection to display_tag inline markup, exact sized legacy-ref selection with markup carried in html_creative, and negative cases for html5 zips, unproven sizes, and non-inline delivery | static/test-vectors/html-markup-legacy-projection.json | /test-vectors/html-markup-legacy-projection.json |
v1-canonical-mapping | Literal v1 format-ID projection plus positive and negative vectors for the normative one-way v2-narrows-v1 relation | static/test-vectors/v1-canonical-mapping.json | /test-vectors/v1-canonical-mapping.json |
adagents-discovery-redirects | adagents.json discovery redirect handling: same-registrable-domain following with eTLD+1 (including PSL private section), HTTPS preservation, per-hop SSRF revalidation, 3-hop cap, cross-registrable-domain refusal, and zero-redirect authoritative_location policy | static/test-vectors/adagents-discovery-redirects.json | /test-vectors/adagents-discovery-redirects.json |
brand-discovery-redirects | brand.json discovery redirect handling: exact original-host/www following, HTTPS and original-port preservation, 3-hop cap, sibling refusal, and zero-redirect authoritative_location policy | static/test-vectors/brand-discovery-redirects.json | /test-vectors/brand-discovery-redirects.json |
delegation-chains | Experimental demand-side grants: the delegation-chain rule from the parent organization to the signer’s operator, at most two grants, the allowed account.operator values, agents[] narrowing, scope, brand, country, and window intersection, the one record that authorizes, and how the parent organization’s exclusive_grants decides between grant_absent and seller_discretion | static/test-vectors/delegation-chains.json | /test-vectors/delegation-chains.json |
a2a-json-numbers | A2A google.protobuf.Value number interoperability: integer lexical equivalence, safe-integer boundaries, unsafe-integer rejection, and exact-decimal string representation | static/test-vectors/a2a-json-numbers.json | /test-vectors/a2a-json-numbers.json |
canonical-format-classification | Canonical format classification from realistic publisher-spec descriptions: classification follows creative payload and rendering responsibility, not placement behavior richness | static/test-vectors/canonical-format-classification.json | /test-vectors/canonical-format-classification.json |
media-buy | Media-buy lifecycle vectors: package-status targeting-overlay echo and status_as_of temporal query semantics | static/test-vectors/media-buy/ | package-status-targeting-overlay-echo.json, status-as-of.json |