feat(reporting): nielsen_audio demographic system + radio reconciliation guide - #6836
Conversation
…ion guide Implements the WG-ratified #6139 decisions: nielsen_audio enters demographic-system.json (notation, same P/M/W scheme as Nielsen TV on the radio panel); RAJAR stays a measurement_source. The radio channel guide gains the delivery-reconciliation contract: notation vs provider vs maturation as three separate declarations, measurement_windows reuse per the #6167 ratification (no impression_phase), and weekly panel cadence as an optimization-eligibility gate. Refs #6139, #6167 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated path touched without required approval.
This PR modifies static/schemas/source/enums/demographic-system.json, which falls under the repo's hard, path-based approval gate (gated_paths: true). review_decision is REVIEW_REQUIRED, not APPROVED, so the gate is not satisfied and the decision table row 2 forces escalate (no critical/high findings exist to make this request-changes).
The change itself looks coherent: nielsen_audio is added as a new enum value with a P/M/W notation description, the enum scope is broadened to audio, and it ships a correct minor (additive/Normative) changeset. This is a Normative, non-breaking addition — not a breaking-class change — so the breaking-change hard gate does not independently apply. Schema↔docs coherence largely holds against the measurement_source/measurement_windows/is_final/finalized_at contracts.
Medium findings (surfaced for the human reviewer):
- docs/creative/channels/radio.mdx:158 — Docs name a nonexistent field
reporting_capabilities.reporting_frequencies. Should be corrected before merge.
Escalation reason:
- Modifies gated path
static/schemas/source/enums/demographic-system.json; requires human/CODEOWNERS review (review_decisionisREVIEW_REQUIRED, notAPPROVED).
Medium findings
- docs/creative/channels/radio.mdx:158 — Docs name a nonexistent field
reporting_capabilities.reporting_frequencies
Why human review
- Modifies gated path static/schemas/source/enums/demographic-system.json (matches static/schemas/source/**); review_decision is REVIEW_REQUIRED, not APPROVED — human/CODEOWNERS review required.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/enums/demographic-system.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.
…sticism check Same standing as the existing nielsen entry — Nielsen Audio notation is the US radio audience vocabulary, ratified in #6139. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…quencies The guide referenced reporting_capabilities.reporting_frequencies, which is not a wire field; the schema encodes it as available_reporting_frequencies. Addresses the open secretariat review thread on #6836. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
Implements the WG-ratified #6139 decisions (radio/broadcast measurement packet, approved — outcome recorded on the issue):
nielsen_audioentersdemographic-system.json— same P/M/W notation scheme as Nielsen TV, measured on the PPM/diary radio panel. Enum +enumDescriptionsentry, and the enum's description broadened to audio channels with the notation-vs-provider line stated explicitly.measurement_source, not a notation system — per the author's own resolution on the Radio: delivery-time audience-currency declaration — demographic_system placement + audio measurement systems #6139 thread (withdrawn from the notation ask;delivery-forecast.jsonalready listsrajarinmeasurement_sourceexamples).radio.mdx, replacing the bare Radio measurement: delayed delivery and reconciliation contract #6167 pointer): the three declarations — notation (demographic_system), provider identity (row-levelmeasurement_source), maturation (measurement_windowsreuse per the Radio measurement: delayed delivery and reconciliation contract #6167 ratification; noimpression_phase) — with a worked committed-metric ↔ delivery-row example and the weekly-cadence optimization-eligibility gate.Dependency note
The delivery-row example references row-level
measurement_source, which ships in #6241 (the ratified #6139 decision 1 rides there because the OOH block needs the lane immediately). Merge #6241 first, or accept a brief window where the guide references a field that lands days later — schema changes here are independent either way.Changeset included (minor). Refs #6139, #6167.
🤖 Generated with Claude Code