Skip to content

feat(media-buy): add per-product list application receipts - #6850

Open
bokelley wants to merge 1 commit into
mainfrom
collection-match-reporting
Open

feat(media-buy): add per-product list application receipts#6850
bokelley wants to merge 1 commit into
mainfrom
collection-match-reporting

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

  • add a shared list_applications receipt to legacy and canonical product responses
  • report property and collection list effects symmetrically at per-product transaction-response grain
  • bind receipts to list identity, seller snapshot/evaluation timestamps, and matched/unmatched summary counts without echoing fetch credentials
  • document discovery, proposal, refinement, field-projection, legacy property_list, and zero-match inclusion/exclusion semantics

Why

The collection walkthrough describes seller-specific match counts, but those counts vary by product and response. The working group agreed that the seller product response—not a separate governance-agent reporting task—is the correct surface. This also keeps property and collection governance aligned and leaves fuzzy content-standards calibration as a separate concern.

Compatibility

This is additive: the new product fields are optional in the schemas and existing governance list-response schemas are unchanged. When an effective list is present, the protocol requires the seller to include the receipt regardless of field projection.

Validation

  • npm run test:targeting-aware-discovery
  • npm run test:schemas
  • npm run test:oneof-discriminators
  • npm run check:registry
  • npm run test:docs-nav
  • npm run test:owned-links
  • npm run lint:schema-links
  • npm run build:compliance -- --check
  • node scripts/check-changeset-protocol-scope.cjs origin/main
  • npx --yes @changesets/cli@^3.0.0 status --since=origin/main

Closes #6736

@bokelley
bokelley marked this pull request as ready for review August 25, 2026 05:40
@bokelley

Copy link
Copy Markdown
Contributor Author

@lukasz-pubx The working group aligned on putting list-match attribution on each returned product, rather than adding a seller-to-governance reporting task. This PR implements that direction across legacy and canonical product discovery, with property/collection parity. CI is green—would you please review?

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Escalate to human review

Escalate — gated schema paths require human/CODEOWNERS review.

This PR modifies protocol source-of-truth files under static/schemas/source/** (a deterministic hard approval gate), and review_decision is REVIEW_REQUIRED, not APPROVED. Per decision-table row 2, the outcome must be escalate until a real human/CODEOWNERS approval satisfies the gate.

The reviewer found no Critical/High/Medium findings — the change is an additive, product-scoped list_applications receipts feature with a properly discriminated oneOf (const per branch, baseline untouched), closed shape enforcing the MUST-NOT-echo-auth_token rule, coherent schema↔docs, symmetric fields across legacy/canonical product schemas, and a correct minor changeset. The diff is mechanically clean, but the gate is non-negotiable absent APPROVED status.

Escalation reasons

  • Touches gated paths static/schemas/source/** (canonical-product.json, inventory-list-application.json [added], product.json, index.json, get-products-request.json, get-products-response.json, product-fields.json, refine-proposals-response.json) with review_decision: REVIEW_REQUIRED — human/CODEOWNERS review required to satisfy the hard approval gate.

Why human review

  • Modifies gated protocol-source files under static/schemas/source/** (canonical-product.json, inventory-list-application.json added, product.json, index.json, get-products-request.json, get-products-response.json, product-fields.json, refine-proposals-response.json) while review_decision is REVIEW_REQUIRED — human/CODEOWNERS approval required to satisfy the hard approval gate.
  • This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/canonical-product.json (modified) matches static/schemas/source/**; static/schemas/source/core/inventory-list-application.json (added) matches static/schemas/source/**; static/schemas/source/core/product.json (modified) matches static/schemas/source/**; static/schemas/source/index.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/get-products-request.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/get-products-response.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/product-fields.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/refine-proposals-response.json (modified) matches static/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.

@aao-secretariat aao-secretariat Bot added the ladon/needs-human-review Ladon has escalated this PR for human review. label Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ladon/needs-human-review Ladon has escalated this PR for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RFC: collection governance — match reporting and exclusion attribution for sellers

1 participant