feat(schemas): committed_metrics_supported capability flag#3585
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add
committed_metrics_supportedboolean tomedia-buy-features.json. Closes the buyer-side detection gap from PR #3510 — absence ofcommitted_metricson 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_metricsarray (per #3576) covering both standard and vendor-defined entries, one snapshot capability = one flag. No need for separatecommitted_vendor_metrics_supported.MUST timing — atomic with the flag. Sellers declaring
trueMUST populatecommitted_metricson everycreate_media_buyresponse AND MUST honor append-only mid-flight metric additions viaupdate_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 existingproperty_list_filtering/catalog_managementprecedent. Buyers can pass it as arequired_featuresfilter onget_productsto 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_metricsshape. 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— cleannpm run test:schemas— 7/7npm run test:examples— 34/34npm run typecheck— cleanCloses #3517.
🤖 Generated with Claude Code