Skip to content

feat(schemas): committed_metrics_supported capability flag#3585

Merged
bokelley merged 1 commit into
mainfrom
bokelley/committed-metrics-capability-flag
Apr 30, 2026
Merged

feat(schemas): committed_metrics_supported capability flag#3585
bokelley merged 1 commit into
mainfrom
bokelley/committed-metrics-capability-flag

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

Add committed_metrics_supported boolean to media-buy-features.json. Closes the buyer-side detection gap from PR #3510 — absence of committed_metrics on a buy response was indistinguishable between "seller didn't snapshot this buy" (missing infra, fine) and "seller chose not to snapshot" (adversarial). Closes #3517.

Design choices

One flag (not two). With the unified committed_metrics array (per #3576) covering both standard and vendor-defined entries, one snapshot capability = one flag. No need for separate committed_vendor_metrics_supported.

MUST timing — atomic with the flag. Sellers declaring true MUST populate committed_metrics on every create_media_buy response AND MUST honor append-only mid-flight metric additions via update_media_buy. The MUST ships now, not as a future tightening — advisory-only flags leave the audit gap exploitable, defeating the purpose.

Placement — extend media-buy-features.json (Option A). Matches the existing property_list_filtering / catalog_management precedent. Buyers can pass it as a required_features filter on get_products to narrow the catalog to snapshot-supporting sellers — that side effect is the design intent, not a bug.

Backwards compatibility

Optional and additive. Sellers without the flag are unchanged; buyers ignore the flag if they don't filter on snapshot support.

Interaction with #3576

This PR depends conceptually on the unified metric-accountability design (#3576) which is open for WG review. The flag's MUST refers to the unified committed_metrics shape. If #3576 lands first, this flag's MUST is straightforward. If this lands first, the MUST briefly references the parallel-array shape from #3510 and re-anchors after #3576 merges. Either order works; this PR's surface (one flag in media-buy-features.json) doesn't conflict with #3576's surface (committed_metrics shape on package + missing_metrics on delivery).

Test plan

  • npm run build:schemas — clean
  • npm run test:schemas — 7/7
  • npm run test:examples — 34/34
  • npm run typecheck — clean

Closes #3517.

🤖 Generated with Claude Code

Add committed_metrics_supported boolean to media-buy-features.json.
Closes the buyer-side detection gap from #3510 — absence of
committed_metrics on a buy response was indistinguishable between
"seller didn't snapshot this buy" (missing infra) and "seller chose
not to snapshot for adversarial reasons."

With this flag, buyers can require sellers that commit to populating
committed_metrics — and use it as a get_products required_features
filter to narrow the catalog accordingly.

One flag (not two) because the unified committed_metrics array (per
#3576) covers both standard and vendor-defined entries — one snapshot
capability, one flag.

MUST timing is atomic with the flag — sellers declaring true MUST
populate committed_metrics on create_media_buy responses AND honor
append-only mid-flight additions on update_media_buy. Advisory-only
flags leave the audit gap exploitable.

Closes #3517.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bokelley bokelley merged commit 42f3557 into main Apr 30, 2026
13 checks passed
@bokelley bokelley deleted the bokelley/committed-metrics-capability-flag branch April 30, 2026 02:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

committed_metrics_supported capability flag for buyer-side detection

1 participant