feat(delivery-metrics): viewability.viewed_seconds + reach_window (#4579 partial, #4580)#4618
Merged
Merged
Conversation
…4579, #4580) - Add viewed_seconds, attention_seconds, attention_score to delivery-metrics.json — reporting-side counterparts to the same-named optimization-goal metric enum values - Add reach_window { kind: cumulative|period, period?: Duration } to disambiguate whether reach/frequency are reported as rolling-since-campaign-start or per-period uniques - Update reach and frequency descriptions to reference reach_window and warn against summing without it - Update get_media_buy_delivery and get_creative_delivery metrics tables Additive change, optional fields, no breaking impact on existing implementations. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…p attention scalars Per #4579 follow-up review: - viewed_seconds nests into the viewability block (same standard governs the in-view threshold; same measurable_impressions denominator; vendor is on the parent) - attention_seconds and attention_score are NOT added as flat scalars — vendor-specific metrics with no graduated standard belong in vendor_metric_values per measurement/taxonomy.mdx - optimization-goal.json metric enum description points reporters at the right reporting path for each metric reach_window work for #4580 unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…then, doc gaps Addresses ad-tech-protocol, adtech-product, code-reviewer, and docs-expert feedback on PR #4618: - reach_window.kind gains `rolling` (trailing-window uniques) — Nielsen, iSpot, GAM, DV360 all ship trailing-N-day reach; previous `period` description was wrong for the overlapping-rows case - if/then constraint enforces `period: Duration` when kind is `period` or `rolling`; ajv validation confirms the rejection fires - viewability table column ordering unified between get_media_buy_delivery and get_creative_delivery - release-notes.mdx 3.1 section gains a delivery-reporting entry - cross-references added: optimization-reporting.mdx (metric catalog), measurement/taxonomy.mdx (delivery facts line), migration/optimization-goals.mdx (delivery-side routing note for the three duration/attention metrics) viewed_seconds nesting in viewability stays — same vendor measures both in practice; mixing vendors on the same impression population would create denominator mismatches. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two reporting gaps on `core/delivery-metrics.json` flagged by @yvassiliadis, addressed differently than the original proposals:
#4580 — `reach_window` for reach/frequency disambiguation. Added `reach_window { kind: cumulative | period, period?: Duration }` so buyers know whether to sum reported `reach` across delivery rows. Optional but strongly recommended; descriptions on `reach` and `frequency` warn against summing without it.
#4579 — partial. Original issue proposed adding `viewed_seconds`, `attention_seconds`, `attention_score` as flat scalars mirroring the `optimization-goal.json` metric enum. Splitting into three categories instead:
The attention split honors the Tier 0 → Tier 1 graduation process in `docs/measurement/taxonomy.mdx` — vendor-specific metrics without MRC-or-equivalent accreditation flow through `vendor_metric_values`, not dedicated delivery-metrics blocks. `optimization-goal.json`'s metric enum description is updated to point reporters at the right path for each metric. Detail in issue comment.
All four additions are optional and additive.
Test plan
🤖 Generated with Claude Code