Skip to content

docs(dooh): support audio-only venue inventory - #7059

Merged
bokelley merged 7 commits into
mainfrom
investigate-issue-5878
Aug 31, 2026
Merged

docs(dooh): support audio-only venue inventory#7059
bokelley merged 7 commits into
mainfrom
investigate-issue-5878

Conversation

@bokelley

@bokelley bokelley commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • define the dooh property type by venue-operated endpoints rather than physical location alone; a hotel-operated television can be DOOH while a listener-owned phone in a tavern remains personal streaming
  • preserve channels as buyer-facing allocation vocabulary and show that supported_channels is genuinely multi-valued, with each product narrowing to its selling context
  • keep creative medium orthogonal through canonical audio_hosted / audio_daast formats and clarify that screen-specific placement fields are optional
  • add an end-to-end fictional tavern example covering publisher-owned property identity, seller authorization, discovery, flat-rate play guarantees, and proof-of-play plus modeled-impression reporting
  • keep audio_distribution_types focused on the underlying feed; this PR does not add a venue/location value

The broader cross-channel decomposition of property_type—including endpoint operator, decision locus, audience derivation, and measurement currency—is intentionally deferred to the 3.3 follow-up in #7111.

Structured coordinates and coverage remain in #5538 and are not invented here; coordinates stay metadata rather than identity.

Testing

  • npm run test:audio-radio
  • npm run build:schemas
  • npm run test:schemas
  • npm run lint:schema-links
  • npm run test:owned-links
  • push hook: version synchronization, changeset policy, schema-link convention, and Mintlify navigation

Closes #5878

@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 and human/CODEOWNERS review not yet satisfied.

This PR modifies 8 files under static/schemas/source/**, which are under a hard, path-based approval gate (gated_paths: true). The required review status is REVIEW_REQUIRED, not APPROVED, so decision-table row 2 forces escalation regardless of how clean the diff is.

The reviewer found no Critical/High/Medium findings: all schema changes are description-only clarifications broadening dooh to cover audio-only venue inventory, with verified schema↔docs coherence, an in-scope patch changeset, no oneOf regression, no dist/** mutation, and a genuine new test. The diff is mechanically sound, but the gate lifts only when review_decision becomes APPROVED — that is a human act, not something I can derive from the diff quality.

Escalation reasons

  • Touches gated protocol schema files under static/schemas/source/** (canonical-placement, delivery-metrics, placement-definition, placement, channels, forecastable-metric, property-type, flat-rate-option); human/CODEOWNERS review required and review_decision is REVIEW_REQUIRED.

No blocking findings; this can proceed to approval once a required reviewer signs off.

Why human review

  • Modifies gated schema files under static/schemas/source/** (8 files) while review_decision is REVIEW_REQUIRED, not APPROVED — hard approval gate (row 2) requires human/CODEOWNERS review.
  • This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/canonical-placement.json (modified) matches static/schemas/source/**; static/schemas/source/core/delivery-metrics.json (modified) matches static/schemas/source/**; 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/channels.json (modified) matches static/schemas/source/**; static/schemas/source/enums/forecastable-metric.json (modified) matches static/schemas/source/**; static/schemas/source/enums/property-type.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 added the ladon/needs-human-review Ladon has escalated this PR for human review. label Aug 30, 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 schema files touched without an APPROVED review.

This PR modifies 8 files under static/schemas/source/**, which sit behind a hard, deterministic approval gate (gated_paths: true). The current review_decision is REVIEW_REQUIRED, not APPROVED, so decision-table row 2 fires: the gate is not satisfied and the PR cannot be auto-approved regardless of how clean the diff is.

The reviewer's delta pass found no critical/high/medium findings — the only change since the prior clean review was aligning the tavern adagents.json $schema from /schemas/latest/ to /schemas/v3/ in docs/creative/channels/dooh.mdx, matching repo convention, with no test regression (audio-DOOH test still selects via .endsWith('/adagents.json')). The diff is mechanically clean.

However, the hard approval gate stands until a human/CODEOWNERS approval is recorded. This matches the prior decision (also escalate for the same reason).

Escalation reasons

  • Modifies gated schema files under static/schemas/source/** (canonical-placement.json, delivery-metrics.json, placement-definition.json, placement.json, enums/channels.json, enums/forecastable-metric.json, enums/property-type.json, pricing-options/flat-rate-option.json) while review_decision is REVIEW_REQUIRED. A human/CODEOWNERS approval is required before merge.

Why human review

  • Modifies gated schema files under static/schemas/source/** (8 files) while review_decision is REVIEW_REQUIRED, not APPROVED — hard approval gate (row 2) requires human/CODEOWNERS review before merge.
  • This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/canonical-placement.json (modified) matches static/schemas/source/**; static/schemas/source/core/delivery-metrics.json (modified) matches static/schemas/source/**; 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/channels.json (modified) matches static/schemas/source/**; static/schemas/source/enums/forecastable-metric.json (modified) matches static/schemas/source/**; static/schemas/source/enums/property-type.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 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 schema files require human/CODEOWNERS approval.

This PR modifies 8 files under static/schemas/source/**, which are under a hard, deterministic approval gate (gated_paths: true). The current review_decision is REVIEW_REQUIRED, not APPROVED, so decision-table row 2 fires: the gate is not satisfied and the PR cannot auto-approve regardless of how clean the diff is.

The reviewer found no Critical/High/Medium findings. The changes are a coherent DOOH-semantics clarification: description-only edits to the dooh channel and property-type enums (values unchanged, no wire drift), matching prose across DOOH/media-products/taxonomy docs, a broadened supported_channels example that is schema-valid, and a test that parses the doc's own JSON block to keep them in lockstep. The patch changeset scope is correct. Schema↔docs coherence holds.

No blocking findings, but the hard schema-source approval gate stands until a human/CODEOWNERS approval is recorded.

Escalation reasons

  • Modifies gated schema files under static/schemas/source/** (8 files) while review_decision is REVIEW_REQUIRED, not APPROVED — row 2 hard approval gate requires human/CODEOWNERS review before merge.

Why human review

  • Modifies gated schema files under static/schemas/source/** (8 files: canonical-placement.json, delivery-metrics.json, placement-definition.json, placement.json, enums/channels.json, enums/forecastable-metric.json, enums/property-type.json, pricing-options/flat-rate-option.json) while review_decision is REVIEW_REQUIRED, not APPROVED. Hard approval gate (row 2) requires human/CODEOWNERS approval before merge, regardless of a clean diff.
  • This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/canonical-placement.json (modified) matches static/schemas/source/**; static/schemas/source/core/delivery-metrics.json (modified) matches static/schemas/source/**; 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/channels.json (modified) matches static/schemas/source/**; static/schemas/source/enums/forecastable-metric.json (modified) matches static/schemas/source/**; static/schemas/source/enums/property-type.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.

bokelley and others added 2 commits August 31, 2026 12:21
# Conflicts:
#	tests/audio-radio-formats.test.cjs
Add an explicit note in the Storyboard coverage section that the
current sales-dooh storyboard exercises the visual (screen) path —
image format, screen-compatible creative sync, and screen-specific
dooh_metrics fields. Audio-only DOOH is documented but not yet
covered by this conformance storyboard.

Addresses review feedback from @garvitkaushik-123 on PR #7059.
@bokelley

Copy link
Copy Markdown
Contributor Author

@garvitkaushik-123 good catch — the medium-neutral prose in those three bullets was misleading without a corresponding disclaimer. Pushed a follow-up commit that adds an explicit note immediately after the numbered list:

The current storyboard exercises the visual (screen) path: the product declares format_kind: "image", creative sync confirms a screen-compatible format, and delivery reconciliation checks screen-specific dooh_metrics fields. Audio-only DOOH is documented above but is not yet covered by this conformance storyboard.

That keeps the broader language in steps 2–4 (which is accurate as a description of what the storyboard structure does) while making it unambiguous to a reader that the concrete exercises are still screen-only and an audio creative would fail step 3.


Generated by Claude Code

@aao-secretariat

Copy link
Copy Markdown
Contributor

Ladon cannot review this PR until merge conflicts are resolved.

@garvitkaushik-123 garvitkaushik-123 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Schemas build, tests pass, example JSON validates against branch schemas, and the new storyboard disclaimer clarifies the visual-only scope. LGTM.

@bokelley

Copy link
Copy Markdown
Contributor Author

The branch is now synchronized with current main and preserves the reviewer-authored storyboard clarification in 107fcf6. The only manual conflict was the audio test constants after #7099 added canonical audio VAST; both test paths were retained and npm run test:audio-radio passes all 8 tests. Re-requesting approval because GitHub dismissed the prior approval after the merge-sync commits.

@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 schema paths require human/CODEOWNERS approval.

This PR (#7059, audio-only DOOH clarification) is a clean, description-only pass: all eight static/schemas/source/** edits change only descriptions — no field, required, enum, or oneOf changes — carrying a correctly-scoped patch changeset. Docs and schema descriptions move in lockstep, new dooh.mdx examples validate against real schemas, and no dist/** artifact is touched. The reviewer surfaced no critical/high/medium findings.

However, the PR modifies files under a hard, non-overridable approval gate (static/schemas/source/**) and the current review_decision is REVIEW_REQUIRED, not APPROVED. Per decision rule row 2, this blocks auto-approval regardless of how clean the diff is. The gate lifts only when a human/CODEOWNERS approval is recorded.

Escalation reasons

  • Modifies gated schema files under static/schemas/source/** (canonical-placement.json, delivery-metrics.json, placement-definition.json, placement.json, enums/channels.json, enums/forecastable-metric.json, enums/property-type.json, pricing-options/flat-rate-option.json) while review_decision is REVIEW_REQUIRED. Human/CODEOWNERS approval required before merge.

Why human review

  • Modifies gated schema files under static/schemas/source/** (8 files: canonical-placement.json, delivery-metrics.json, placement-definition.json, placement.json, enums/channels.json, enums/forecastable-metric.json, enums/property-type.json, pricing-options/flat-rate-option.json) while review_decision is REVIEW_REQUIRED, not APPROVED. Hard approval gate (row 2) requires human/CODEOWNERS approval before merge, regardless of a clean diff.
  • This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/canonical-placement.json (modified) matches static/schemas/source/**; static/schemas/source/core/delivery-metrics.json (modified) matches static/schemas/source/**; 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/channels.json (modified) matches static/schemas/source/**; static/schemas/source/enums/forecastable-metric.json (modified) matches static/schemas/source/**; static/schemas/source/enums/property-type.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.

@bokelley
bokelley merged commit 6217bae into main Aug 31, 2026
59 checks passed
@bokelley
bokelley deleted the investigate-issue-5878 branch August 31, 2026 11:47
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.

RFC: Support place-based audio as DOOH inventory, not screen-only or generic streaming audio

3 participants