feat(canonical-formats): 3.1 GA follow-ups — Taboola fixture, Pinterest example, IAB Native vocab, slot-enum fix#4770
Merged
Conversation
…worked example, IAB Native vocab, slot-enum fix Closes three GA-blocking items from PR #3307 expert review, plus a latent slot-enum bug surfaced by the new fixture: - Latent slot asset_type enum gap: _base.json was missing pixel_tracker / vast_tracker / daast_tracker. Any product with explicit tracker slots (including native_in_feed's default slot set) failed validation. Added all three to the enum and to the size-mutex no-size-semantics branch. - Taboola Content Recommendation reference fixture exercising all 12 native_in_feed default slots including pixel_tracker triple. Brings the canonical fixture suite to 15 fixtures across the 12 canonicals. - Pinterest disambiguation worked example in canonical-formats.mdx covering Promoted Pin (native_in_feed), Collection (sponsored_placement), Idea Pin (image_carousel), Shopping Pin (sponsored_placement single_item). Closes the routing ambiguity Pia / Nastassia flagged. - Five IAB OpenRTB Native 1.2 Data Asset vocab additions: likes (type 4), downloads (type 5), saleprice (type 7), address (type 9), secondary_body_text aliased to desc2 (type 10). phone_number annotated with its IAB type 8 mapping. Migration doc updated: fixture count 12 → 13. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Product expert + code reviewer converged on a real gap: the native_in_feed canonical's default slots referenced asset_group_ids (title, main_image, icon, advertiser_name, sponsored_label) that weren't in asset-group-vocabulary.json. The flagship Taboola reference fixture inherited those IDs and validated only via the soft-warning policy — wrong precedent for adopters copying the pattern. - Added five core IAB OpenRTB Native 1.2 vocab entries: title (Title Asset type 1), main_image (Image Asset type 3 main), icon (Image Asset type 1), advertiser_name (sponsoredBy field), sponsored_label (renderer disclosure string). Each carries IAB type annotation and adopter-friendly aliases (e.g., title aliases headline; main_image aliases image_main / hero_image). - price ↔ saleprice cross-reference added to the price description so buyer agents reading `price` alone discover the discount-rendering pattern. - Pinterest Idea Pin row updated to call out video-per-page (carousel canonical's polymorphic image/video per-card slot handles it). - Changeset bumped patch → minor (additive canonical vocab is minor, not patch). - Migration doc fixture count fixed: 14 reference Product fixtures (was miscounted 13). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 19, 2026
bokelley
added a commit
that referenced
this pull request
May 20, 2026
Adds static/compliance/source/protocols/creative/scenarios/native_in_feed.yaml covering the full native_in_feed canonical end-to-end: format discovery via list_creative_formats (asset_types filter), happy-path sync_creatives with all 12 slots + three pixel_tracker entries, four isolated validation-rejection steps (title_max_chars, main_image_sizes, cta_values closed-set → CREATIVE_VALUE_NOT_ALLOWED, pixel_tracker custom without custom_event_name), and preview_creative. Closes #4774. Parent work: #4770 (Taboola fixture + slot-enum fixes), #3307 (native_in_feed GA). https://claude.ai/code/session_01SHXC5MNy7UQCsnvJoUFeXp Co-authored-by: Claude <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.
Closes three of the GA-blocking follow-ups identified in PR #3307 expert review, plus a latent slot-enum bug surfaced by the new fixture.
What landed
Slot
asset_typeenum gap fixed in_base.json. The canonical-formats slot enum was missingpixel_tracker,vast_tracker, anddaast_tracker. Any product carrying explicit tracker slots (including thenative_in_feeddefault slot set, which lists impression/viewability/clickpixel_trackerentries) would fail validation. Added all three to the enum and to the size-mutex "no size semantics" branch. Discovered by the new Taboola fixture; would have hit any 3.1 adopter shipping explicit tracker slots.native_in_feedreference Product fixture atstatic/examples/products/canonical/taboola_content_recommendation.json. Realistic Taboola US Content Recommendation product exercising all 12 default slots — title, body_text, main_image (1200×627 / 1080×1080), cta with closed enum, advertiser_name, sponsored_label, landing_page_url, display_url, rating, plus impression / viewability / clickpixel_tracker. CPC pricing, hourly+daily reporting,v1_format_refpoints at the AAO catalog'snative_content. Canonical fixture suite goes from 14 to 15.Pinterest disambiguation worked example in
docs/creative/canonical-formats.mdx. Closes the routing ambiguity Pia + Nastassia flagged at GA review:native_in_feedsponsored_placementfanout_mode: multi_item_in_creativeimage_carouselsponsored_placementfanout_mode: single_itemSame cleave (asset-bundle vs catalog-row) applies to Snap, TikTok, etc.
Five IAB OpenRTB Native 1.2 Data Asset vocab additions in
asset-group-vocabulary.json:likes— Data Asset type 4 (social-proof engagement)downloads— type 5 (app-install)saleprice— type 7 (e-commerce discount; pairs withprice)address— type 9 (local-business native)secondary_body_textaliased todesc2— type 10 (long-form content-recommendation)phone_numberannotated with its IAB type 8 mapping. Promoting these fromslots_overrideextensions to canonical vocab tightens validation for app-install and e-commerce native.Migration doc updated: fixture count 12 → 13.
Validation
npm run build:schemas— cleannpm run test:canonical-fixtures— 15/15 pass (was 14 + new Taboola)npm run test:canonical-negative— 38/38 passnpm run test:canonical-conventions— 50-entry catalog lint cleanRemaining 3.1 GA follow-ups (tracked separately)
native_in_feedconformance storyboard — multi-phase YAML to extendstatic/compliance/source/protocols/creative/index.yamlwith native sync_creatives + preview coverage.🤖 Generated with Claude Code