AdCP 3.3: reporting rules (optional impressions, multi-qualifier totals, property rollups, custody) #1669
Copy link
Copy link
Open
Labels
no-triageSkip the Claude triage bot — human or designated agent will handle this issueSkip the Claude triage bot — human or designated agent will handle this issuesdk-10SDK 10 (next branch, AdCP 3.3)SDK 10 (next branch, AdCP 3.3)
Description
Spec (tag v3.3.0-beta.0)
Reporting rules that touch adcp.reporting and adcp-reporting-storage:
impressionsoptional on every delivery row exceptaggregated_totals. Readers and row codecs must treat absence as "not measured", never zero, and derive no impression-based rates (#8108).- Multi-qualifier metrics omit flat totals in buy and window
totals(#8055); also listed on AdCP 3.3: media-buy and webhook rules (provisional buys, revisions from any origin, optional webhook authentication, totals) #1644. by_property/by_installment_propertyrollups when the seller declaressupports_property_breakdown/supports_installment_property_breakdown; storyboardsproperty_delivery_reportingandinstallment_property_delivery_reporting.source.custody(system_of_record/upstream_derived) on Reliable Reporting report definitions.- Superseded snapshot compaction notice: reads of compacted content return
REFERENCE_NOT_FOUNDwithfield: "reporting_revision_id"; unowed revisions areREVISION_UNREADABLE. Not permitted under 3.3 itself; plan for the next minor.
Work (after #1662)
Audit the reporting readers, ledger and storage codecs for each rule; fix and test; run the two property storyboards if the reference seller can declare the capability.
Inventory: docs/adcp-3.3-sdk-inventory.md §3 "Reporting and delivery", §7. Batch C.
Metadata
Metadata
Assignees
Labels
no-triageSkip the Claude triage bot — human or designated agent will handle this issueSkip the Claude triage bot — human or designated agent will handle this issuesdk-10SDK 10 (next branch, AdCP 3.3)SDK 10 (next branch, AdCP 3.3)
Activity
feat(reporting): apply the AdCP 3.3 reporting rules (#1707)
fix(examples): stop zero-filling impressions and flat multi-standard …
bokelley commentedon Oct 29, 2026
Merged into
next:3e177e69), the SDK side:simulate_deliveryrejects injected property rows sent withdelivery_date, and rejects rows the store can't accept instead of dropping them;ReportingRevisionVerifier.custodyproperty;impressionsandaggregated_totalsare tolerated;docs/reporting-release-notes.md.The storage package needed no change.
a63836f2), the reference seller:impressions, and noviewable_ratewithout measurable impressions;viewabilitytotal across standards;by_formatrows without impressions omitted for callers served below 3.3.Still open:
impressionssent to a 3.2 peer should be dropped, but the generic downgrade likely refuses the whole response instead (not tested).create_media_buy_delivery_webhook_payloaddoesn't stopaggregated_totals, which senders must not include.simulate_deliverydoesn't accept the property row arrays, soproperty_delivery_reportingandinstallment_property_delivery_reportingcan't run against it yet.REFERENCE_NOT_FOUND: errors don't carryfield: "reporting_revision_id"yet; needed for compaction in the next minor.feat(examples): serve the AdCP 3.3 property breakdowns from injected …
fix(webhooks): drop aggregated_totals from media_buy_delivery webhook…