Skip to content

feat(schema): add DOOH structured selling-unit fields to placements - #5623

Open
garvitkaushik-123 wants to merge 4 commits into
adcontextprotocol:mainfrom
garvitkaushik-123:feat/dooh-placement-attributes
Open

feat(schema): add DOOH structured selling-unit fields to placements#5623
garvitkaushik-123 wants to merge 4 commits into
adcontextprotocol:mainfrom
garvitkaushik-123:feat/dooh-placement-attributes

Conversation

@garvitkaushik-123

@garvitkaushik-123 garvitkaushik-123 commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements #5537 — adds structured DOOH selling-unit metadata to placements so buyers can evaluate screen characteristics during product discovery.

  • dooh_placement_attributes object on both placement.json and placement-definition.json with four optional fields:
    • slot_duration_seconds — duration of one ad slot
    • loop_duration_seconds — full loop rotation (canonical source, supersedes pricing-layer field)
    • screen_resolution — physical { width, height } in pixels
    • motionfull_motion, partial_motion, or static (new dooh-motion-type enum)
  • identifiers[] array on both placement schemas — reuses the { type, value } pattern from property identifiers for DOOH venue_id, screen_id, openooh_venue_type, etc.
  • dooh-motion-type.json enum — full_motion, partial_motion, static
  • identifier-types.json title updated from "Property Identifier Types" to channel-neutral "Identifier Types"
  • flat-rate-option.json loop_duration_seconds description updated with superseded note
  • Docs — DOOH placement attributes section added to media-products.mdx

Design decisions

  • Follows the existing channel-overlay pattern (video_placement_types, audio_distribution_types, etc.) — new fields sit alongside those in the same position
  • additionalProperties: true on dooh_placement_attributes to allow future field additions without breaking changes
  • identifiers[] is channel-neutral by design — reuses the same enum already used for property identifiers
  • motion enum values align with industry conventions (OpenOOH/OAAA terminology)

Test plan

  • All 4232 unit tests pass
  • TypeScript typecheck passes
  • Schema build (build:schemas) succeeds
  • Verify DOOH placement example validates against updated schema

Closes #5537

@aao-release-bot aao-release-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Argus review could not complete

The automated review encountered an issue (possibly reached max turns, timed out, or failed to post the final gh pr review). A human reviewer should take this PR.

View workflow run

This is an automated message from the Argus AI review workflow.

@bokelley

Copy link
Copy Markdown
Contributor

This contribution still appears directionally useful, but it has been idle since June and main plus the active 3.2 OOH work have moved substantially. Please confirm you want to continue and rebase/reconcile it with the current OOH contract. If there is no response by August 17, we will close it as stale; the work can be reopened when an implementer is ready to carry it.

@garvitkaushik-123

Copy link
Copy Markdown
Contributor Author

Hey @bokelley — yep, still on this! Got sidetracked but I'm picking it back up now. I see main has moved quite a bit with the 3.2 OOH work and the static OOH draft (#6146) — will rebase and reconcile over the next few days. Should have it updated well before the 17th.

@garvitkaushik-123
garvitkaushik-123 force-pushed the feat/dooh-placement-attributes branch from 2019177 to 4597efc Compare August 10, 2026 07:21
@garvitkaushik-123

Copy link
Copy Markdown
Contributor Author

Rebased onto current main. No conflicts — the placement schema additions (identifiers[], dooh_placement_attributes) slot in after the social_placement_surfaces block that landed since June.

Reviewed the static OOH draft (#6146) — that work is architectural for classic/printed OOH and doesn't overlap with the DOOH selling-unit fields here. The dooh_placement_attributes pattern stays consistent with the existing channel-overlay approach (video_placement_types, audio_distribution_types, etc.).

No schema shape changes from the original — just a clean rebase. Ready for review whenever it makes sense in the 3.2 cycle.

@garvitkaushik-123
garvitkaushik-123 force-pushed the feat/dooh-placement-attributes branch from 4597efc to 76c4d86 Compare August 10, 2026 07:38
@bokelley
bokelley force-pushed the feat/dooh-placement-attributes branch from 76c4d86 to f927f92 Compare August 15, 2026 21:49
@bokelley
bokelley enabled auto-merge (squash) August 15, 2026 21:49
@aao-secretariat aao-secretariat Bot added the ladon/needs-human-review Ladon has escalated this PR for human review. label Aug 15, 2026

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Escalate to human review

Escalate — gated paths touched without required review approval.

This PR adds additive DOOH placement metadata: optional dooh_placement_attributes and identifiers[] on placement.json and placement-definition.json, a new closed dooh-motion-type enum, and a description-only supersession note on flat-rate-option.loop_duration_seconds. The reviewer classifies it as Normative/non-breaking with a correct minor changeset; schema/docs/tests cohere and identifier shapes match. No critical/high/medium findings were raised.

However, this PR modifies files under static/schemas/source/**, which are under a deterministic hard approval gate (gated_paths: true), and review_decision is REVIEW_REQUIRED — not APPROVED. Per decision table row 2, the gate is not satisfied and the outcome must be escalate. Human/CODEOWNERS review is required before merge.

Escalation reasons

  • Touches gated schema-source files without required approval; human/CODEOWNERS review required.

Medium findings

  • None.

Low (non-blocking)

  • docs/media-buy/advanced-topics/pricing-models.mdx:469 — DOOH params not updated with supersession note (docs-coherence follow-up).

Why human review

  • Modifies gated schema-source files (static/schemas/source/core/placement.json, placement-definition.json, enums/dooh-motion-type.json, enums/identifier-types.json, pricing-options/flat-rate-option.json) while review_decision is REVIEW_REQUIRED — human/CODEOWNERS approval required before merge.
  • This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/placement-definition.json (modified) matches static/schemas/source/**; static/schemas/source/core/placement.json (modified) matches static/schemas/source/**; static/schemas/source/enums/dooh-motion-type.json (added) matches static/schemas/source/**; static/schemas/source/enums/identifier-types.json (modified) matches static/schemas/source/**; static/schemas/source/pricing-options/flat-rate-option.json (modified) matches static/schemas/source/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.

@aao-secretariat
aao-secretariat Bot requested a review from bokelley August 15, 2026 21:53
@bokelley
bokelley disabled auto-merge August 19, 2026 05:36
garvitkaushik-123 and others added 4 commits August 19, 2026 07:49
Add dooh_placement_attributes (slot_duration_seconds, loop_duration_seconds,
screen_resolution, motion) and identifiers[] to both placement.json and
placement-definition.json. Create dooh-motion-type enum. Update identifier-types
title to channel-neutral language. Add superseded note to flat-rate-option
loop_duration_seconds. Document DOOH placement attributes in media-products docs.

identifiers[] items use additionalProperties: true to match the property.json
identifier pattern. Add test coverage for DOOH placement attributes and
identifiers on both placement and placement-definition schemas.

Closes adcontextprotocol#5537
@bokelley
bokelley force-pushed the feat/dooh-placement-attributes branch from f927f92 to 06bae33 Compare August 19, 2026 06:20
@bokelley

Copy link
Copy Markdown
Contributor

Maintainer update pushed onto this branch.

Key changes:

  • keeps effective format_options as the sole creative-acceptance authority; DOOH fields are inventory/scheduling facts
  • defines publisher/product resolution, identifier union, and post-merge slot <= loop validation
  • makes placement loop duration canonical and requires any legacy pricing copy to agree
  • exposes the fields on the AdCP 3.2 canonical-placement / list_products path as well as the full placement schemas
  • registers the motion enum and adds behavioral/schema coverage, including the exact canonical product path

Validation: schema build passed; placement catalog tests pass (20/20); expert protocol, implementation, and workflow reviews found no remaining blocker.

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

Labels

ladon/needs-human-review Ladon has escalated this PR for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DOOH: Add structured selling-unit fields to placements (slot_duration, share_of_time, screen_resolution, delivery_unit)

2 participants