Skip to content

spec(compliance): wire audience-sync with status.monotonic (adcp-client#782)#2880

Merged
bokelley merged 1 commit into
mainfrom
bokelley/wire-audience-sync-status-monotonic
Apr 22, 2026
Merged

spec(compliance): wire audience-sync with status.monotonic (adcp-client#782)#2880
bokelley merged 1 commit into
mainfrom
bokelley/wire-audience-sync-status-monotonic

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Summary

  • Wires audience-sync/index.yaml with invariants: [status.monotonic], closing the last gap from adcp#2829. sync_audiences responses now carry the same cross-step lifecycle gating as media_buy, creative, account, si_session, catalog_item, proposal, and creative_approval.
  • Bumps @adcp/client ^5.10.0 → ^5.11.0 to pick up the audience transition graph added in adcp-client#782.

How the arc ends

  1. adcp#2829 wired status.monotonic on 20 specialisms; audience-sync was skipped (no named enum).
  2. adcp#2836 extracted /schemas/enums/audience-status.json and documented the permissive transitions in prose.
  3. adcp-client#782 added AUDIENCE_TRANSITIONS to the bundled status.monotonic default + extractor for sync_audiences. Shipped in @adcp/client@5.11.0.
  4. This PR — the one-line wire-up.

Transition table

Fully bidirectional across processing / ready / too_small — the graph allows ready ↔ processing on re-sync, ready ↔ too_small as counts cross minimum_size, and the re-sync path too_small → processing → ready. Off-graph regressions (e.g. seller silently downgrading ready to an unknown enum value) fail here rather than slipping past per-step schema checks. action: deleted | failed rows omit status on the envelope per spec — the extractor's id+status guard makes those silent (absence isn't a transition — adcp#2838 tracks the separate seller-initiated-archival gap).

Test plan

  • npm run build:compliance — 10 universal, 6 protocols, 24 specialisms bundled, no lint regressions
  • Local run-storyboards --filter audience against the training agent — 1/1 clean, zero status.monotonic hits
  • package-lock.json updated to @adcp/client@5.11.0
  • CI: storyboard framework + legacy dispatches stay on the baseline floors

Closes the arc

With this merged, every specialism whose phases exercise a lifecycle-bearing resource is gated by status.monotonic. The #2639 umbrella was closed on 2026-04-22; this PR completes the audience-shaped follow-up that was outstanding from it.

🤖 Generated with Claude Code

…nt#782)

Close the last gap from adcp#2829. audience-sync was skipped in the
original wiring because there was no named audience-status enum in the
spec. That landed in adcp#2836, and the audience transition graph went
into @adcp/client's bundled status.monotonic default in adcp-client#782
(shipped in 5.11.0). Wire the specialism YAML to opt in, bump the dep.

Transition table is fully bidirectional across processing / ready /
too_small — the graph allows ready ↔ processing on re-sync, ready ↔
too_small as counts cross minimum_size, and the re-sync path
too_small → processing → ready. Off-graph regressions fail here rather
than slipping past per-step schema checks.

Local storyboard run against the training agent passes clean (no
status.monotonic hits).

No wire change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bokelley bokelley merged commit f2157ea into main Apr 22, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant