Skip to content

[Change] § 5.4: Keep creative inspection and previews from sending production tracking #42

Open

Description

@aleksUIX

What kind of change?

Change a normative requirement (MUST / SHOULD / MAY)

Which section?

5.4: Creative requirements

Current text

Section 5.4 defines creative delivery, supplied assets and approval. The third_party_tags description is "Accepted wrapper types and VAST versions". It does not distinguish requests made to inspect a creative from notifications that report delivery of that creative.

Proposed text

Add the following subsection after the § 5.4 field table:

Creative inspection and previews

For this section, inspection means evaluating a creative outside live campaign delivery, including discovery, composition, submission checks and previews. A production notification is an event report intended for a campaign's live measurement or delivery diagnostics.

An implementation performing inspection MUST NOT send production impression, playback, click, viewability, verification or ad-error notifications. This includes requesting an event URL solely to check its availability, regardless of the HTTP method used.

An implementation MAY retrieve creative documents, follow VAST wrappers and inspect referenced media as needed for its checks. Permission to retrieve these resources does not extend to firing their event URLs. Retrieval can itself be logged by the resource owner; this requirement does not imply that inspection produces no server activity.

A preview that executes creative or verification code MUST prevent that code from sending production notifications. Synthetic events MAY be sent to test endpoints, or through a test mode that the receiving service documents as excluding those events from production measurement and delivery diagnostics. An inspector's own test flag is insufficient unless the receiving service supports it.

Inspection failures MUST be returned through the inspection result or a separate diagnostic channel. They MUST NOT be reported by firing a production VAST <Error> or verificationNotExecuted URL.

A skipped or blocked check MUST NOT be reported as passed. This section does not waive any required checks.

These requirements apply to inspection only. During live delivery, implementations remain subject to the tracking and error-reporting requirements of the applicable execution standard.

Why

Consider an agent previewing a supplied VAST tag before committing to a line item. It loads the tag into a player to check playback. The player fires the tag's impression and start beacons. A second check encounters a wrapper failure and fires its error beacon. The endpoints receive real event reports even though these were inspection attempts.

VAST distinguishes resource retrieval from event reporting. Its tracking section explains that requests to tracking resources contribute to event counts, and that they belong at the corresponding playback event. Its error-reporting section describes player failures during ad serving. Reusing a player for previews therefore needs an explicit boundary around its production notifications. The same problem can occur when a display preview loads an embedded tracking pixel.

This is a source-review scenario, not a report of a defect observed in an OpenProposal implementation.

VAST 4.3, §§ 2.3.4 and 2.3.6 provides the underlying event semantics. Issue #32 concerns which creative checks run at submission. This change concerns what those checks and previews are permitted to send, regardless of which checks are implemented.

Knock-on effects

  • No new fields, mutability markers or enum values. The field indexes in Appendices A and B stay unchanged.
  • No requirement to add document fetching or previews. Implementations that offer them must keep their event traffic separate from live delivery.
  • Add a short note alongside the § 6.3 CTV example explaining that inspecting its VAST creative must not fire production tracking.
  • VAST and OpenRTB execution semantics stay unchanged. The proposal does not define a measurement methodology, attribution rule or settlement process.
  • No additional buyer-seller round trip is required. An optional inspection can be omitted with the limitation reported. A required check needs a way to run without production notifications before it can pass.

Would this break an implementation already built to this draft?

Yes, for an implementation that sends production notifications during inspection. The payload shape is unchanged.

Alternatives you considered and rejected

Rely entirely on VAST's playback rules. Those rules describe a player serving an ad; OpenProposal also has agents checking and previewing creatives before delivery. The inspection boundary should be explicit where those checks happen.

Require a universal test query parameter. A parameter only works if the receiving service recognizes it and separates the resulting events. This proposal permits existing test modes without inventing a new one.

You are commenting as

Standards body / working group participant

Member of the IAB Tech Lab Agentic Taskforce, commenting in a personal capacity.

Before you submit

  • I have read CONTRIBUTING.md and agree my contribution may be published under this repository's licence.
  • This contains no confidential or commercially sensitive information.

Activity

  1. added
    change-requestProposes specific normative wording
    normativeChanges what the spec requires
    breakingWould break an implementation already built to this draft
    on Oct 21, 2026
  2. aleksUIX commented on Oct 24, 2026

    @aleksUIX
    Author

    Proposed wording and reproducible fixtures: PR #118.

    I have prepared the spec diff and synthetic inspection fixtures for this
    proposal. The document cases follow wrapper chains while recording requests
    and document hashes. They distinguish successful retrieval and XML parsing
    from conformance, playback and seller approval.

    Adversarial checks found two gaps in my initial reference inspector: a fragment
    alias bypassed the event guard, and companion click tracking was missing from
    its event-role set. Both are corrected. The guard now uses normalized HTTP
    request identities and includes companion, non-linear and icon event roles.
    The original reproductions produce zero requests to their local event traps.

    The supporting browser demonstration also checks the complete notification log,
    including unexpected endpoints. A deliberately injected test-driver event makes
    the isolated case fail and remains in the receipt. The normal cases have positive
    controls that reach the trap and isolated attempts that produce no notifications
    during the measured interval.

    The fixtures pass 41 document/URL cases, 27 browser cases and 10 assertion cases.
    All endpoints are synthetic loopback traps. This is evidence for the inspection
    boundary, not a production sandbox guarantee or a test of a VAST player or real
    verification SDK. Schema conformance, media decode, seller-spec conformance and
    seller approval remain separate checks, as discussed in #32. Overall readiness
    is not assessed by this first profile.

    Member of the IAB Tech Lab Agentic Taskforce, commenting in a personal capacity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    breakingWould break an implementation already built to this draftchange-requestProposes specific normative wordingnormativeChanges what the spec requiressection:5.4-creative

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions