You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
SDK 10: implement AdCP 3.3 reporting subscriptions in the reliable-reporting runtime #1695
SDK 10 on AdCP 3.3.0-beta.1 ships the generated types for principal-level reporting subscriptions (RFC adcontextprotocol/adcp#8543 Part B, adcontextprotocol/adcp#8552), but no runtime. A seller built on the SDK can't list sync_principal in configuration_tasks, and a buyer has no helper to calculate the periods it's owed. Obligations, the ledger and receipts already live in the SDK, so the subscription runtime belongs here too. A host supplies only what it alone knows: which accounts a principal may read, and which buys an account holds.
Principal runtime. Opt-in acceptance, validation, readback (core/reporting-subscription-state.json) and versioning of sync_principalreporting_subscriptions, plus principal.changed with reason reporting_subscription_changed. With the option off, keep today's behaviour.
Obligations. Host hooks for authorized accounts, authorization changes and buy facts. Selector resolution (exact / finest / all, ties to the lowest offering_id), precedence (a caller's own sync_accounts config beats any subscription; account_ids beats all-accounts), cutovers at period boundaries, account timezones, no clipping, and deterministic max_accounts.
Status and lost authority.subscription_coverage[] with exceptions only, each over [from, until); accounts_unauthorized[]; receipts accepted after loss for status_retention_days; re-grant, with and without backfill_on_regrant.
Managed delivery. Destinations from reporting_destinations, path-template expansion, account_id on every row, and per-account destinations.
Capabilities.configuration_tasks, configuration_task only when sync_accounts is listed, the subscriptions block, and media_buy.reporting_subscriptions.
Storage.adcp-reporting-storage PostgreSQL migrations for subscription versions, resolutions, exceptions and authority intervals; history retained as long as the obligations that cite it.
Buyer. A pure expected_subscription_periods(...) coverage function over plain data, and consumer-runtime and client support.
Conformance. Buyer-computed periods must equal seller-owed periods, period by period, across the cases listed in adcp-client#3504.
The spec is normative where it differs from the issue text. In particular, coverage starts at the first boundary at or after the latest of the version's accepted_at, the buy's confirmed_at and the account's authorization.authorized_at (see .changeset/pre/reporting-subscriptions.md in the spec repo).
Activity
fix(reporting): derive subscription periods exactly as the TypeScript…
feat(reporting): accept reporting subscriptions on sync_principal and…
feat(reporting): add buyer client helpers and a tracker for reporting…
feat(reporting): accept reporting subscriptions on sync_principal and…
feat(reporting): add buyer client helpers and a tracker for reporting…
fix(reporting): announce a subscription's recovery from action_required
feat(reporting): add buyer client helpers and a tracker for reporting…
fix(reporting): order max_accounts by the current grant chain
feat(reporting): add buyer client helpers and a tracker for reporting…
fix(reporting): keep max_accounts slots with the accounts already served
feat(reporting): add buyer client helpers and a tracker for reporting…
feat(reporting): count withheld periods from host delivery facts when…
feat(reporting): add buyer client helpers and a tracker for reporting…
feat(reporting): adopt the reporting-subscription rules settled in ad…
feat(reporting): accept reporting subscriptions on sync_principal and…
172 remaining items
feat(reporting): make the grant journal the one source of authorized_at
fix(reporting): observe a served account page in one journal write
fix(reporting): observe a served authorization that lists no tasks
feat(reporting-storage): one storage decision with versioned migrations
fix(reporting-storage): keep adcp free of imports of the storage dist…
feat(accounts)!: ensure returns an AccountOutcome and routes to reque…
fix(accounts): read requests back by request_ids and dedupe across in…
fix(accounts): compare normalized pending actions in refresh
feat(reporting): fail closed on a coverage period budget
docs(reporting): guides, README section and agent notes for reporting…
feat(reporting): use "owed" and list_subscription_principals, as the …
feat(reporting): mirror the TypeScript SDK's advanced path, engine er…
feat(reporting): use owed and list_subscription_principals, as the Ty…
feat(reporting): mirror the TypeScript SDK's advanced path, engine er…
fix(reporting): count a rejected authorized_at once and refuse buys o…