Conversation
…ionLists Protocols (breadth sprint Batch 4 — FINAL)
Final batch of the breadth-sprint per the parity audit. Ports the
remaining four specialism Protocols from JS reference. With this
PR, every spec specialism slug except ``governance-aware-seller``
has a Protocol class + REQUIRED_METHODS coverage.
New Protocols:
* ``BrandRightsPlatform`` — covers ``brand-rights``. Identity
discovery + licensing. Required (3, sync): ``get_brand_identity``,
``get_rights``, ``acquire_rights``. ``acquire_rights`` returns a
3-arm discriminated success union (acquired / pending / rejected)
— rejection-as-data for spec-defined GRANT rejection, AdcpError
only for buyer-fixable REQUEST rejection. Async outcomes for the
``pending`` arm flow via ``push_notification_config`` webhook
(NOT a polling tool).
* ``ContentStandardsPlatform`` — covers ``content-standards``.
Brand safety policies, content adjacency rules, per-creative
compliance verification. Required (6): list/get/create/update,
``calibrate_content``, ``validate_content_delivery``. Optional
(2, analyzer reads): ``get_media_buy_artifacts``,
``get_creative_features``.
* ``PropertyListsPlatform`` + ``CollectionListsPlatform``
(specialisms/lists.py) — covers ``property-lists`` and
``collection-lists``. Parallel CRUD shapes (5 methods each, all
required) with token-issuance semantics: ``create_*`` returns a
per-seller-scoped ``fetch_token``, ``delete_*`` revokes it.
Compromise-driven revocation MUST trigger the delete path.
Required-method coverage in ``REQUIRED_METHODS_PER_SPECIALISM``:
``brand-rights`` (3), ``content-standards`` (6),
``property-lists`` (5), ``collection-lists`` (5).
Public re-exports added at ``adcp.decisioning.__all__``:
``BrandRightsPlatform``, ``ContentStandardsPlatform``,
``PropertyListsPlatform``, ``CollectionListsPlatform``.
Test coverage in ``tests/test_decisioning_specialisms.py`` (13 new
tests, 43 total in the file):
* ``runtime_checkable`` conformance per Protocol.
* ``validate_platform`` enforcement per slug — including a
security-relevant test that ``property-lists`` REQUIRES
``delete_property_list`` (revocation path) so adopters can't ship
list-publishing without revocation primitives.
* Contract pins per slug.
* **Breadth-sprint completeness pin**:
``test_every_spec_slug_except_governance_aware_seller_is_enforced``
asserts that ``SPEC_SPECIALISM_ENUM - REQUIRED_METHODS.keys()``
yields exactly ``{governance-aware-seller, signed-requests}`` —
the two slugs unenforced by design (composition claim and
deprecated-moved-to-universal respectively).
One existing dispatch test updated:
``test_validate_platform_warns_on_unenforced_spec_specialism``
swapped its canonical "spec-recognized but unenforced" example
from ``brand-rights`` (now enforced) to ``governance-aware-seller``
(the only remaining unenforced spec slug — by design).
**Breadth sprint COMPLETE.** All 8 missing specialism Protocols
from the parity audit are now ported. 9 PRs total accumulating in
the held release PR #328:
* #316 foundation
* #329 codemod ergonomics
* #330 parity rename + Tier 1 docs
* #331 F12 auto-emit
* #332 Signals + Audience (Batch 1)
* #333 Creative Builder + AdServer (Batch 2)
* #334 Campaign Governance (Batch 3)
* #335 Brand + Content + Lists (Batch 4 — this PR)
Ready for salesagent validation against editable install before
tagging 4.4.0.
2252 tests pass (up from 2239).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 1, 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
Breadth sprint COMPLETE. Final batch ports the remaining four specialism Protocols. With this PR, every spec specialism slug except `governance-aware-seller` (a SELLER composition claim by design) and `signed-requests` (deprecated, moved to universal storyboards) has a Protocol class + REQUIRED_METHODS coverage.
New:
Tests (13 new, 43 total in file):
One existing dispatch test updated: canonical "spec-recognized but unenforced" example switched from `brand-rights` (now enforced) to `governance-aware-seller`.
Held release pile (9 PRs total → 4.4.0)
After this lands, the breadth sprint is DONE. Ready to ping salesagent for validation against editable install before tagging 4.4.0.
Test plan
🤖 Generated with Claude Code