Repository navigation
Description
Which section?
Whole document / more than one section
Field(s) involved
visibility, eligible_bidders, required_credentials, catalog_ref, reporting, measurement_source, correlation_id, idempotency_key, assent, payment_terms, invoicing_party
Your comment
Here's the draft — Part 1 is the text you'd paste into the GitHub Comment issue:
Public comment on OpenProposal — AAMP 3.0 draft v3.0-draft-1
Filed by: Rattan Priya Bhasin
I am filing in an individual capacity as a participating member of IAB Tech Lab's AI-Era Attribution Blueprint working group.
Interest declaration: I work on applied AI/ML for privacy-preserving digital advertising. I was on the founding product team of Apple Search Ads, and I regularly participate in the W3C Private Advertising Technology working group. I am reading this draft from the perspective of a practitioner who will build and buy against agent-driven media transactions, with particular attention to privacy and measurement.
I support the draft's direction — especially the no-inheritance rule (a committed record that is self-contained and immutable at agreement is a privacy and auditability win), the idempotency requirement on commitments (§ 5.6.1), and AdCOM continuity from discovery through reporting.
My comments below are offered in that spirit.
1. The Summary Representation needs field-level disclosure guidance (§§ 2.1, 5.3, 5.8). Section 2.1 requires every catalog summary to carry, per line item, audience information — including taxonomy references, provenance, and addressable scale — alongside pricing. That is exactly the information a buying agent needs to compare opportunities, and it is also competitive and potentially privacy-sensitive intelligence about a seller's audience business. Section 5.8 gives each line item a visibility of public, registry_gated, or named — but the draft never says which summary fields are withheld or redacted when visibility is not public. I recommend the draft add a rule or non-normative guidance tying the required summary fields to visibility tiers, so sellers can publish agent-readable catalogs without leaking audience intelligence. This also bears on open question 2: catalog_ref values must resolve during discovery (§ 2.2), which exposes seller catalogs to any discovering agent; guidance on gating catalog resolution to eligible parties would give sellers the control the announcement promises.
2. Measurement choices need privacy-preserving guidance; comparability must not require log-level exposure (§ 5.7 and open question 3). Section 5.7's reporting field offers log_level, aggregate, or no feed, with no guidance on choosing between them. In a privacy-constrained market, log-level feeds carry direct privacy implications. I recommend non-normative guidance on selecting feed types in privacy-constrained contexts, and on how measurement_source qualifiers can declare privacy-preserving methodologies (for example, aggregated or on-device attribution) so a buying agent can transact without demanding user-level data. On open question 3: I agree cross-channel guarantee comparability is unsolved and should be stated as such — but comparability across viewable_rate, completion_rate, and audience-modelled metrics should not require log-level exposure to compute. Privacy-preserving aggregation methods should be first-class inputs to any future normalization, not an afterthought.
3. Define the agent-identity floor; require the correlation ID to be opaque (§§ 4.1, 5.6.1, 5.10). Section 4.1 says assent records use signature scheme "WS1," which the draft never defines. Agents will be negotiating and committing real spend — so the identity and authorization of the agents on both sides is load-bearing, not decorative. I recommend the draft either define the minimum agent-identity requirements for assent or explicitly defer them to the AAMP agent authentication and authorization work, with a pointer. Separately, § 5.10 defines correlation_id as "one identity for this line item's commitment, carried across every system it touches" — a single identifier that travels across every system is a join key. I recommend the draft require correlation_id to be opaque and non-personal — generated randomness with no embedded user, device, or household identifiers — so cross-system reconciliation doesn't quietly create a tracking vector. I support the § 5.6.1 idempotency rule as written.
4. Keep catalog references in 3.0, but gate their resolution (open questions 2 and 6; §§ 2.2, 5.8, 5.10). On open question 2, catalog_ref belongs in 3.0 — without it, large shelves become unwieldy — but the resolution rule should be qualified: a registry_gated or named line item's catalog entries should resolve only for parties that satisfy § 5.8's eligibility. On open question 6, I would leave payment_terms and invoicing_party as inline-or-catalog at the seller's discretion rather than mandating either; the no-inheritance rule (§ 2) is preserved either way.
Thank you to the working group for the draft and for the open process. I am happy to discuss any of the above, including from an implementation perspective as the SDK reference implementations harden.
— Rattan Priya Bhasin
Concrete scenario
No response
You are commenting as
Buyer / advertiser
Before you submit
- I have read CONTRIBUTING.md and agree my contribution may be published under this repository's licence.
- This comment contains no confidential or commercially sensitive information.
Activity
pkanna000 commentedon Nov 6, 2026
Implementation evidence for point 1 (field-level disclosure).
The reference seller agent returns exact and floor prices to anonymous callers: IABTechLab/seller-agent#114. It shows how easily negotiation-sensitive fields leak when the specification doesn't say who may see them.
A minimal version of the guidance you propose: state that
pricing[].flooris disclosed only to callers the seller would admit to a commitment on that line item, and never appears in a Summary Representation. #139, which defines who eachvisibilityvalue admits, looks like the natural place for it. Thenvisibility: publicgoverns whether a line item can be discovered, not whether a seller's negotiating position is public.Whether
pricing[].seller_ratebelongs in the same class probably depends on where #135 lands, so I'd decide the two together.KonstantinMirin commentedon Nov 6, 2026
Postindustria (IAB Tech Lab member). Thanks, @pkanna000. In our PRs,
pricing[].floorbecomespricing[].min_rate(our buyer writes PR (#141)): a hint of the lowestlist_ratethe seller will consider. It grants nothing and is never sent downstream, and a Summary Representation can't carry it (§ 2.1).Read access is per line item (our parties PR (#139), § 5.8): anyone who can read a line item reads its
min_rate. A seller that doesn't want its floor public leavesmin_rateoff that line item, or states it on anamedone. We'd rather not add a read rule for one field, because an absentmin_ratewould then no longer mean that the seller set none.Our signing PR (#142) removes
pricing[].seller_rate, so there's no second field to decide.Analyzed and generated with the help of Claude, fully reviewed by me.