Skip to content

Canonical-formats conformance storyboard track — gates 3.1 GA promotion rubric #4591

@bokelley

Description

@bokelley

Filed off the SDK-team implementor review on #3307 (creative formats canonical / canonical-formats).

Problem

The canonical-formats base schema is intentionally permissive: additionalProperties: true everywhere, x-canonical-policy-required-params-not-enforced on /schemas/formats/canonical/_base.json, no required parameter fields on any canonical. This is correct for the canonical (it's a loose contract — products narrow it) but it means JSON Schema validation passes on almost any conformant-shaped declaration.

The current "fixtures validate" evidence is Schroedinger conformance: the fixtures pass because they were authored against the schema, not because adopters' independent emissions would. Until we have a conformance harness that exercises:

  • v1↔v2 projection in both directions (including divergence detection per RFC #3305 implementation preview — v2 creative formats (full spec, not for merge) #3307's new normative section)
  • format_schema fetch contract (digest mismatch, $ref sandbox, invalid-schema handling) per IR3
  • validate_input three-way result_kind discrimination across all 12 format_kind variants
  • runtime_status skip-gating (compliance storyboards SHOULD gracefully skip declared_only)
  • synthesis_nondeterministic × *_source compatibility rules from _base.json

…we don't actually know whether independent v2 emitters and consumers agree.

What this issue tracks

Build a canonical-formats storyboard track in the compliance harness (storyboard infrastructure already exists for other AdCP surfaces). Scope:

  1. Producer storyboards: emit a product with format_ids + format_options (agreeing), format_ids only, format_options only, format_kind: "custom" (must have v2_only: true), divergent dual-emission (negative — must be flagged by consumer).
  2. Consumer storyboards: read each producer-shape, assert the SDK projects/warns correctly (silent-loss-of-inventory must be caught).
  3. format_schema fetch storyboards: serve a digest-matched schema, a digest-mismatched schema, an invalid-JSON-Schema body, a $ref-out-of-sandbox schema. Assert SDK responses (resolved / hard-fail / hard-fail / hard-fail with structured warning).
  4. validate_input storyboards: per-canonical positive (validated_pass), per-canonical negative (validated_fail with violations), nondeterministic (unvalidatable_nondeterministic).
  5. runtime_status skip-gate: assert declared_only entries are skipped gracefully, not failed.

Why this is GA-blocking, not 3.1-beta-blocking

The schema work is shippable as beta. The conformance harness is the artifact that lets us promote individual canonicals from preview to stable under the rubric in _base.json#status (2 adopters × 90 days no breakage). Without it, promotion is on vibes.

Dependencies

Out of scope here

Tracking: gates 3.1 GA promotion rubric for individual canonicals.

Metadata

Metadata

Assignees

No one assigned

    Labels

    compliance-suitecreativeschemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygiene

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions