feat(schema): add native creative localization contract#5914
Conversation
There was a problem hiding this comment.
Argus is not auto-reviewing this PR because it modifies protected paths that require human review (.changeset/add-native-creative-localization-contract.md, static/schemas/source/core/creative-asset.json, static/schemas/source/core/creative-localization-readback.json, static/schemas/source/core/creative-localization.json, static/schemas/source/core/locale-tag.json, static/schemas/source/core/x-entity-types.json, static/schemas/source/creative/list-creatives-request.json, static/schemas/source/creative/list-creatives-response.json, static/schemas/source/creative/sync-creatives-response.json, static/schemas/source/index.json, static/schemas/source/protocol/get-adcp-capabilities-response.json). A human reviewer should review and merge this PR; Argus will resume on subsequent PRs once these changes land on main.
|
Independent exact-head contract audit found five substantive blockers despite 31/31 CI: generated union narrowing, request→sync→list equality, status/launch and whole-creative archive invariants, source-update semantics, and accidental inline-trafficking scope. I moved this PR back to draft while those are corrected; please hold human review until a new exact head is posted. The provider-neutral identity/mode model remains the right direction, but downstream Meta must not claim exact localization against an underconstrained contract. |
|
The five HOLD findings are addressed at exact head
The rebuilt schema, composed (172/172), documentation JSON, oneOf, platform-agnostic, UTF-8, schema-link, TypeScript, changeset-policy, and Mintlify push gates pass. I am leaving the PR draft for CI and protected-path human review. |
Why
AdCP has no typed way to request or read back provider-native creative localization. Implementations must either reject localization or accept unvalidated provider extensions, which loses locale, asset, review, and variant identity across
sync_creativesandlist_creatives. This blocks adcp-client#2370 and downstream Meta exact-readback work.What Changed
sync_creatives.creatives[].localizationuses explicit typedoneOfarms for buyer-supplied and provider-generated targets; inline creatives on media-buy create/update reject localization.creative.localizationcapability discovery with the current supported locale set, translation modes, variant ceiling, and review scope.platform_idthe single provider creative identity; localization retains only per-variant provider IDs.locale_variant_idseparate from bothbuild_variant_idand deliveryvariant_id.Exact implementation head:
8ca0b9f1bc597b42c715cdfb7372abea572fc4e4.Test Plan
npm run build:schemas— pass (651 source schemas; 89 bundled schemas)npm run test:schemas— pass (19/19)npm run test:composed— pass (172/172, including standalone bundled compilation)npm run test:json-schema— pass (285 schema-backed documentation examples)npm run test:platform-agnostic— passnpm run test:oneof-discriminators— pass (no new undiscriminated unions)npm run test:schema-utf8— passnpm run lint:schema-links— passnpm run typecheck— passThe full local suite also exposed two pre-existing environment/baseline failures unrelated to this diff: released
3.1.3is correctly marked withdrawn whiledist-schema-version-idsstill expects every semver release to be stable, and nine C2PA tests cannot load the cloned native Mach-O slice on this host. This PR changes neither area; Linux CI remains authoritative for those checks.Unblocks adcontextprotocol/adcp-client#2370; that issue remains open until a generated client release consumes this schema.