From 5e3dab9027b55eaf8d5227baada87c5a25461fd0 Mon Sep 17 00:00:00 2001 From: "aao-ipr-bot[bot]" <279263549+aao-ipr-bot[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2026 08:57:32 +0000 Subject: [PATCH 1/2] chore(next): release 10.0.0-beta.0 --- .release-please-manifest.next.json | 2 +- CHANGELOG.next.md | 123 +++++++++++++++++++++++++++++ pyproject.toml | 2 +- 3 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.next.md diff --git a/.release-please-manifest.next.json b/.release-please-manifest.next.json index abf2f550c..e9f56b845 100644 --- a/.release-please-manifest.next.json +++ b/.release-please-manifest.next.json @@ -1,4 +1,4 @@ { - ".": "9.0.0-beta.3", + ".": "10.0.0-beta.0", "packages/adcp-reporting-storage": "0.1.0-beta.4" } diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md new file mode 100644 index 000000000..b5adabdcb --- /dev/null +++ b/CHANGELOG.next.md @@ -0,0 +1,123 @@ +# Changelog + +## [10.0.0-beta.0](https://github.com/adcontextprotocol/adcp-client-python/compare/v9.0.0-beta.3...v10.0.0-beta.0) (2026-10-27) + + +### ⚠ BREAKING CHANGES + +* **protocol:** the wire pin is AdCP 3.3.0-beta.0 (adcp_version "3.3-beta.0" by default; pin adcp_version="3.2" for a 3.2 contract). adcp.types.UniversalMacro is a RootModel union; the closed enum is UniversalMacro3. The identity preview modules are removed and adcp.types.experimental_identity binds the generated 3.3 types (RequestSigning.profiles is list[Profile], PrincipalChangedWebhook.reason is the generated enum). adcp.signing.identity_schema_bundle is removed. Legacy RFC 9421 SigningConfig / RequestSignatureVerification construction emits a DeprecationWarning. evaluator_id is gone from evaluator specs. See MIGRATION_v9_to_v10.md. +* **a2a:** With request signing configured, A2A requests that break the AdCP 3.3 operation-resolution hardening clauses (duplicate or case-variant keys, batches, malformed Parts, extra DataParts, mismatched task continuations) are refused with request_body_malformed or INVALID_REQUEST. +* **webhooks:** WebhookReceiver rejects bodies over 1 MiB (was 10 MiB) and JSON deeper than 64 or with more than 100,000 members with HTTP 413 before signature verification, and adds the rejection reasons body_too_complex, content_encoding_unsupported and body_framing_invalid. Client responses past the depth or member bounds raise ADCPResponseTooComplexError. +* **signing:** BrandJsonJwksResolver and the other brand.json fetchers raise ValueError for max_body_bytes above 2 MiB, the AdCP 3.3 cap verifiers must not read past. +* **canonical-formats:** PixelTrackerDowngrade.v1 is now V1UrlTracker or None. Check it before reading asset_id or url. See MIGRATION_v9_to_v10.md. +* **reporting:** the PostgreSQL reporting stores, the row storage providers, the change feed, the ownership-migration helpers and `ReliableReportingService.postgres` leave `adcp`; install `adcp-reporting-storage[pg]` (plus `gcs`/`s3`/`azure`) and import them from `adcp_reporting_storage`. The `adcp[reporting-gcs]`, `[reporting-s3]` and `[reporting-azure]` extras are removed. See docs/reporting-storage-package-migration.md. +* **codegen:** a JSON document carrying `null` for an optional property whose schema does not admit `null` is now refused by `model_validate_json` and `TypeAdapter.validate_json`, and the published JSON Schema of such a property has no null arm. A Python `None` is still accepted. JSON produced with `exclude_none=False` must be read back in Python mode (`model_validate(json.loads(...))`). +* **types:** SyncCreativesRequest.creatives is now list[CreativeAsset] | None. Handlers must guard it before iteration or use request.creatives or [] for assignment-only requests. +* **signing:** adcp.signing.b64url_decode accepts only RFC 7515 base64url (no padding, no standard-alphabet characters, no non-zero trailing bits) and raises ValueError for anything else. public_key_from_jwk reads a JWK through joserfc, so its ValueError text changes. private_key_from_jwk raises ValueError when a JWK's x (or y) isn't the public key of its d. adcp.signing.publisher_pins.jwk_thumbprint returns the RFC 7638 thumbprint as a base64url str instead of the digest bytes. +* **types:** adcp.types.generated_poc no longer imports. Use adcp.types.domains, or run adcp migrate v3-to-v4 --apply. +* **reporting:** row storage tables, provider inputs and locators are renamed to the AdCP names above, REPORTING_ROW_ENCODING_V1 is replaced by REPORTING_ROW_FORMAT_V1 and REPORTING_ROW_ALGORITHM_V1, and {period_date} renders the source timezone date as YYYY-MM-DD instead of the UTC date as yyyy/MM/dd, and a custom key template without {revision_key} is refused unless its binding is read_only. create_schema migrates existing databases; stop older writers first. + +### ci + +* **release:** cut 10.0.0-alpha.N pre-releases from next ([df3ee2c](https://github.com/adcontextprotocol/adcp-client-python/commit/df3ee2c1221169ba1cd9df425a8c5be250c53e9a)) +* **release:** cut 10.0.0-beta.N pre-releases from next ([#1672](https://github.com/adcontextprotocol/adcp-client-python/issues/1672)) ([322e6f0](https://github.com/adcontextprotocol/adcp-client-python/commit/322e6f01731108e3f8fa7ff3c5216fbd9825c2ff)) + + +### chore + +* **release:** leave the beta channel for SDK 9.0.0 GA ([#1567](https://github.com/adcontextprotocol/adcp-client-python/issues/1567)) ([4e9c123](https://github.com/adcontextprotocol/adcp-client-python/commit/4e9c1231600335bb45acada61523050b77dccfc5)) + + +### Features + +* **client:** cap agent response size by default ([#1504](https://github.com/adcontextprotocol/adcp-client-python/issues/1504)) ([d5195a9](https://github.com/adcontextprotocol/adcp-client-python/commit/d5195a9525239124416741808addcbcf0f0a8a98)) +* **compat:** negotiate and translate AdCP minor versions ([#1559](https://github.com/adcontextprotocol/adcp-client-python/issues/1559)) ([31d7217](https://github.com/adcontextprotocol/adcp-client-python/commit/31d7217e81533e6513cfe4ab28441abb0ed3db77)) +* **decisioning:** export media-buy terminal statuses and the observed transition graph ([#1664](https://github.com/adcontextprotocol/adcp-client-python/issues/1664)) ([4b1554e](https://github.com/adcontextprotocol/adcp-client-python/commit/4b1554e14de0e72bf21af8a6a2b3f102a1227a5b)), closes [#1604](https://github.com/adcontextprotocol/adcp-client-python/issues/1604) +* **decisioning:** resolve account_id references in NaturalKeyAccounts for AdCP 3.3 ([#1653](https://github.com/adcontextprotocol/adcp-client-python/issues/1653)) ([dca87b9](https://github.com/adcontextprotocol/adcp-client-python/commit/dca87b95257a64ddf35197eb99fe733740b4b0b7)), closes [#1478](https://github.com/adcontextprotocol/adcp-client-python/issues/1478) +* **identity:** add experimental AdCP 3.3 agent identity ([#1502](https://github.com/adcontextprotocol/adcp-client-python/issues/1502)) ([3961d1c](https://github.com/adcontextprotocol/adcp-client-python/commit/3961d1cf7a235c4d45673370521b1aec9bc4c496)) +* **identity:** verify JWS artifacts on the issuer's Web Bot Auth key directory ([#1543](https://github.com/adcontextprotocol/adcp-client-python/issues/1543)) ([233ebee](https://github.com/adcontextprotocol/adcp-client-python/commit/233ebeefd1bd44640a9fa983299c6a65410b2356)) +* **media-buy:** persist and echo create context on get_media_buys ([#1600](https://github.com/adcontextprotocol/adcp-client-python/issues/1600)) ([4083dc5](https://github.com/adcontextprotocol/adcp-client-python/commit/4083dc52702ddd1d20aa840dd4265bf61dd75ddd)), closes [#1575](https://github.com/adcontextprotocol/adcp-client-python/issues/1575) +* **property-lists:** unify resolution and validate seller inventory ([#1532](https://github.com/adcontextprotocol/adcp-client-python/issues/1532)) ([734bf3a](https://github.com/adcontextprotocol/adcp-client-python/commit/734bf3acde31fb1ea7b96867710c08087384737d)) +* **protocol:** adopt the signed AdCP 3.3.0-beta.0 bundle ([#1662](https://github.com/adcontextprotocol/adcp-client-python/issues/1662)) ([7472aae](https://github.com/adcontextprotocol/adcp-client-python/commit/7472aae088de21ea77b27c4d796d72cacde0751c)) +* **reporting:** add current-revision host reads ([#1473](https://github.com/adcontextprotocol/adcp-client-python/issues/1473)) ([13ca2c5](https://github.com/adcontextprotocol/adcp-client-python/commit/13ca2c502818777bf1eef2f2cd5e8bfbac196dcf)) +* **reporting:** add GCS, S3 and Azure Blob row providers ([#1468](https://github.com/adcontextprotocol/adcp-client-python/issues/1468)) ([fde127d](https://github.com/adcontextprotocol/adcp-client-python/commit/fde127db8992bc6f62303ebbfcbf8f0617be33f4)) +* **reporting:** add the shared host change feed and registered consumers ([#1472](https://github.com/adcontextprotocol/adcp-client-python/issues/1472)) ([b7012e0](https://github.com/adcontextprotocol/adcp-client-python/commit/b7012e05591f3e7823314ab39d65cb1cc723324a)) +* **reporting:** align row storage with AdCP stored names and the period date rule ([#1485](https://github.com/adcontextprotocol/adcp-client-python/issues/1485)) ([47084e8](https://github.com/adcontextprotocol/adcp-client-python/commit/47084e83a4a2cfd879db4127e26c3fb54fd73dd8)) +* **reporting:** migrate legacy inline rows to verified chunks ([#1466](https://github.com/adcontextprotocol/adcp-client-python/issues/1466)) ([bf7e3a6](https://github.com/adcontextprotocol/adcp-client-python/commit/bf7e3a62b38975ed037bc8dbd440bfb2ebe440d4)) +* **reporting:** retire expired periods with tombstones and holds ([#1474](https://github.com/adcontextprotocol/adcp-client-python/issues/1474)) ([c527b18](https://github.com/adcontextprotocol/adcp-client-python/commit/c527b1866bf544ca0926eb844b316136a2172a5c)) +* **reporting:** schedule retention in the production worker ([#1476](https://github.com/adcontextprotocol/adcp-client-python/issues/1476)) ([5c23598](https://github.com/adcontextprotocol/adcp-client-python/commit/5c23598b420725987c3ed0f79c923ead19f1d6be)) +* **reporting:** ship the Reliable Reporting storage as adcp-reporting-storage ([#1557](https://github.com/adcontextprotocol/adcp-client-python/issues/1557)) ([d59eee9](https://github.com/adcontextprotocol/adcp-client-python/commit/d59eee9da4d246557bfacf42119729e1d68e78a7)) +* **reporting:** store revision rows as verified chunks in PostgreSQL ([#1464](https://github.com/adcontextprotocol/adcp-client-python/issues/1464)) ([54a133e](https://github.com/adcontextprotocol/adcp-client-python/commit/54a133ed8e1723e20f1d575b68af88e214afede3)) +* **reporting:** sweep abandoned uploads and prune expired row sets ([#1469](https://github.com/adcontextprotocol/adcp-client-python/issues/1469)) ([e32daba](https://github.com/adcontextprotocol/adcp-client-python/commit/e32daba5c78b5c49ebeee25730b42acb0a1c72d6)) +* **reporting:** sync empty-ledger replacement and owned-ledger rollback for 9.0 adopters ([#1554](https://github.com/adcontextprotocol/adcp-client-python/issues/1554)) ([38d046a](https://github.com/adcontextprotocol/adcp-client-python/commit/38d046a809bab9c684d8c0cac761f8d59a50072d)) +* **reporting:** write row chunks to object storage with fenced uploads ([#1467](https://github.com/adcontextprotocol/adcp-client-python/issues/1467)) ([83f62c9](https://github.com/adcontextprotocol/adcp-client-python/commit/83f62c9bcef7cca65abae376fe796e6df13eb064)) +* **server:** let PrincipalResolverError carry a stable error code ([#1633](https://github.com/adcontextprotocol/adcp-client-python/issues/1633)) ([cf96d57](https://github.com/adcontextprotocol/adcp-client-python/commit/cf96d573ba2240fb5b666dc0f891378f253dfbe4)), closes [#1623](https://github.com/adcontextprotocol/adcp-client-python/issues/1623) +* **signing:** accept brand.json up to 2 MiB for AdCP 3.3 ([#1654](https://github.com/adcontextprotocol/adcp-client-python/issues/1654)) ([ca8d422](https://github.com/adcontextprotocol/adcp-client-python/commit/ca8d42239dfe5b51d0004ca9771ab741c26f5d8c)), closes [#1635](https://github.com/adcontextprotocol/adcp-client-python/issues/1635) +* **signing:** pin the Public Suffix List snapshot used for eTLD+1 ([#1652](https://github.com/adcontextprotocol/adcp-client-python/issues/1652)) ([a6fd1fa](https://github.com/adcontextprotocol/adcp-client-python/commit/a6fd1fa4cad2e842287e8f7026199fa45ae28dfa)), closes [#1562](https://github.com/adcontextprotocol/adcp-client-python/issues/1562) +* **types:** keep wire bytes on parsed URLs, datetimes, UUIDs and emails so digests round-trip ([#1617](https://github.com/adcontextprotocol/adcp-client-python/issues/1617)) ([a7f5acd](https://github.com/adcontextprotocol/adcp-client-python/commit/a7f5acdbf58fcba5c2e590976c00dba4b84dbbf2)), closes [#1610](https://github.com/adcontextprotocol/adcp-client-python/issues/1610) +* **types:** remove the adcp.types.generated_poc alias in v10 ([#1536](https://github.com/adcontextprotocol/adcp-client-python/issues/1536)) ([893720b](https://github.com/adcontextprotocol/adcp-client-python/commit/893720b649bf5ff5b7ac45d5e5c2c724469fbd98)) +* **webhooks:** add PgNotificationOutbox.enqueue_prepared_sync for synchronous business transactions ([#1665](https://github.com/adcontextprotocol/adcp-client-python/issues/1665)) ([e081fe4](https://github.com/adcontextprotocol/adcp-client-python/commit/e081fe431d83c733648921d34ead9420d0cbce4b)), closes [#1607](https://github.com/adcontextprotocol/adcp-client-python/issues/1607) +* **webhooks:** bound inbound bodies before verification and response JSON shape for AdCP 3.3 ([#1656](https://github.com/adcontextprotocol/adcp-client-python/issues/1656)) ([283f877](https://github.com/adcontextprotocol/adcp-client-python/commit/283f877de119cd75a5624237ea2ef67e0c1aa7c6)), closes [#1636](https://github.com/adcontextprotocol/adcp-client-python/issues/1636) + + +### Bug Fixes + +* **a2a:** echo request context on unknown-skill and unexpected-error tasks ([#1597](https://github.com/adcontextprotocol/adcp-client-python/issues/1597)) ([7b44d8d](https://github.com/adcontextprotocol/adcp-client-python/commit/7b44d8d5d1627f98fede0ed5660ab3d804f230bd)), closes [#1573](https://github.com/adcontextprotocol/adcp-client-python/issues/1573) +* **a2a:** enforce the AdCP 3.3 operation-resolution hardening clauses ([#1659](https://github.com/adcontextprotocol/adcp-client-python/issues/1659)) ([b3e34c2](https://github.com/adcontextprotocol/adcp-client-python/commit/b3e34c2ff52770b53e0460c8ff4eb3982e71418b)), closes [#1637](https://github.com/adcontextprotocol/adcp-client-python/issues/1637) +* **a2a:** keep integers integral in echoed context across the protobuf Struct ([#1594](https://github.com/adcontextprotocol/adcp-client-python/issues/1594)) ([bf6d966](https://github.com/adcontextprotocol/adcp-client-python/commit/bf6d96641910ccdaa2e2b95bf7965a564c9e1d9b)), closes [#1572](https://github.com/adcontextprotocol/adcp-client-python/issues/1572) +* **adagents:** strip surrounding whitespace in normalize_url ([#1629](https://github.com/adcontextprotocol/adcp-client-python/issues/1629)) ([4e2ae8f](https://github.com/adcontextprotocol/adcp-client-python/commit/4e2ae8fc153a662ec67bbb24ef478621b37570db)), closes [#1624](https://github.com/adcontextprotocol/adcp-client-python/issues/1624) +* **canonical-formats:** compare every parameter a format reference declares ([#1518](https://github.com/adcontextprotocol/adcp-client-python/issues/1518)) ([d073712](https://github.com/adcontextprotocol/adcp-client-python/commit/d0737127b94b58355221c3ab9b1e7353e66ac2d6)), closes [#1517](https://github.com/adcontextprotocol/adcp-client-python/issues/1517) +* **canonical-formats:** drop playback trackers on the v1 downgrade instead of firing them as impressions ([#1655](https://github.com/adcontextprotocol/adcp-client-python/issues/1655)) ([2ffa538](https://github.com/adcontextprotocol/adcp-client-python/commit/2ffa5380b3bff2a8983447efd8c48dde50964a7a)), closes [#1643](https://github.com/adcontextprotocol/adcp-client-python/issues/1643) +* **canonical-formats:** read an omitted pixel_ratio as 1x on the supported side too ([#1553](https://github.com/adcontextprotocol/adcp-client-python/issues/1553)) ([b07adbc](https://github.com/adcontextprotocol/adcp-client-python/commit/b07adbc59c66cef8a7ada8189ab7739fc77c7733)) +* **codegen:** refuse a JSON null on optional properties whose schema forbids one ([#1555](https://github.com/adcontextprotocol/adcp-client-python/issues/1555)) ([a40c2f0](https://github.com/adcontextprotocol/adcp-client-python/commit/a40c2f0a71f9110cedc844f125630d3055e209f4)) +* **compat:** infer display_tag and every 3.2 asset type from the asset key ([#1628](https://github.com/adcontextprotocol/adcp-client-python/issues/1628)) ([88cf04a](https://github.com/adcontextprotocol/adcp-client-python/commit/88cf04a1cd684595b6ae58712cec42e01590c58f)), closes [#1624](https://github.com/adcontextprotocol/adcp-client-python/issues/1624) +* **compat:** log server-side conversion losses at DEBUG with one INFO summary ([#1609](https://github.com/adcontextprotocol/adcp-client-python/issues/1609)) ([f7e4f3a](https://github.com/adcontextprotocol/adcp-client-python/commit/f7e4f3a5f1c8acba40072df0af377927a0af74ec)) +* **compat:** never downgrade into a payload the older schema refuses ([#1630](https://github.com/adcontextprotocol/adcp-client-python/issues/1630)) ([b5234e2](https://github.com/adcontextprotocol/adcp-client-python/commit/b5234e221b539abb7c6797aa278e9c2874ea38fa)) +* **decisioning:** project ADCPTaskError from platform methods to its own wire error ([#1632](https://github.com/adcontextprotocol/adcp-client-python/issues/1632)) ([7b95b26](https://github.com/adcontextprotocol/adcp-client-python/commit/7b95b26f0d61b1b35edaae1d192f8f74adc40289)), closes [#1622](https://github.com/adcontextprotocol/adcp-client-python/issues/1622) +* **governance:** require crit markers with their claims, and run the signing tests CI skips ([#1539](https://github.com/adcontextprotocol/adcp-client-python/issues/1539)) ([15c85cf](https://github.com/adcontextprotocol/adcp-client-python/commit/15c85cf6e5de6b1b401c688d3e3e8470a47ba449)) +* **identity:** a grantee that is not a registrable domain covers no claim ([#1542](https://github.com/adcontextprotocol/adcp-client-python/issues/1542)) ([6cb3c8a](https://github.com/adcontextprotocol/adcp-client-python/commit/6cb3c8a2be7823b3f399cd7351dfa62154439d2c)) +* **identity:** align AdCP 3.3 agent identity with the final spec and the Go and TS SDKs ([#1514](https://github.com/adcontextprotocol/adcp-client-python/issues/1514)) ([2b08ced](https://github.com/adcontextprotocol/adcp-client-python/commit/2b08cedcf5b75e7a364363e1cfcea676bd241456)) +* **identity:** implicit grant authority extends to the brand's house ([#1565](https://github.com/adcontextprotocol/adcp-client-python/issues/1565)) ([4b8b7e4](https://github.com/adcontextprotocol/adcp-client-python/commit/4b8b7e48ce9a695431c57317adbcbb77ee01d220)) +* **identity:** never send a bound origin to the 3.2 profile, and treat a missing kid as invalid ([#1549](https://github.com/adcontextprotocol/adcp-client-python/issues/1549)) ([2db4741](https://github.com/adcontextprotocol/adcp-client-python/commit/2db47417806c8e66ebf9c59c4c279be15db586df)) +* **protocol:** adopt signed AdCP 3.2.4 on SDK 9 beta ([#1479](https://github.com/adcontextprotocol/adcp-client-python/issues/1479)) ([0ad2a8f](https://github.com/adcontextprotocol/adcp-client-python/commit/0ad2a8fae218ae927b75ed6ac38ddb5107822350)) +* **protocol:** adopt signed AdCP 3.2.7 on SDK 9 ([#1657](https://github.com/adcontextprotocol/adcp-client-python/issues/1657)) ([95ed163](https://github.com/adcontextprotocol/adcp-client-python/commit/95ed163d61c40a851997280c647ef8627ada17b0)) +* **release:** tighten V9 reporting and CI readiness checks ([#1550](https://github.com/adcontextprotocol/adcp-client-python/issues/1550)) ([41c2be7](https://github.com/adcontextprotocol/adcp-client-python/commit/41c2be73e6851264f71edbab13fcd801d2a94454)), closes [#1383](https://github.com/adcontextprotocol/adcp-client-python/issues/1383) [#1493](https://github.com/adcontextprotocol/adcp-client-python/issues/1493) +* **reporting:** answer unreadable exact revision reads with SERVICE_UNAVAILABLE ([#1471](https://github.com/adcontextprotocol/adcp-client-python/issues/1471)) ([623b2c1](https://github.com/adcontextprotocol/adcp-client-python/commit/623b2c1603d2c59dc3d5429f7e44c469a3550fcb)) +* **reporting:** classify pending status and owed history as transient, unresolved references as REFERENCE_NOT_FOUND ([#1631](https://github.com/adcontextprotocol/adcp-client-python/issues/1631)) ([a2ec81c](https://github.com/adcontextprotocol/adcp-client-python/commit/a2ec81c0679042c0a3cb0a0779d03df53311e174)), closes [#1618](https://github.com/adcontextprotocol/adcp-client-python/issues/1618) +* **reporting:** keep feed consumer checkpoints forward-only ([#1515](https://github.com/adcontextprotocol/adcp-client-python/issues/1515)) ([0de3f57](https://github.com/adcontextprotocol/adcp-client-python/commit/0de3f57c7e3a434c6d774e880663ca8c4908841c)), closes [#1509](https://github.com/adcontextprotocol/adcp-client-python/issues/1509) +* **reporting:** keep retention moving past stuck work and make it visible ([#1482](https://github.com/adcontextprotocol/adcp-client-python/issues/1482)) ([4623104](https://github.com/adcontextprotocol/adcp-client-python/commit/462310439d05b92cdfe510b9aac571a8a9f28f0c)) +* **reporting:** name the cause of a reporting startup failure ([a202a3c](https://github.com/adcontextprotocol/adcp-client-python/commit/a202a3cbeb41ce6f89dcac8db943a0a0f9d72da3)), closes [#1561](https://github.com/adcontextprotocol/adcp-client-python/issues/1561) +* **reporting:** reject a change page that crossed a concurrent prune ([#1516](https://github.com/adcontextprotocol/adcp-client-python/issues/1516)) ([73d1261](https://github.com/adcontextprotocol/adcp-client-python/commit/73d12611effa9adeb8a588992428a60864e6a006)), closes [#1508](https://github.com/adcontextprotocol/adcp-client-python/issues/1508) +* **reporting:** truncate account feed pages at the first in-flight change and match JS backoff ([#1483](https://github.com/adcontextprotocol/adcp-client-python/issues/1483)) ([21f4216](https://github.com/adcontextprotocol/adcp-client-python/commit/21f4216addc5e39f30b076288889b57f8d1cb455)) +* **server:** advertise compact output schemas so discovery is servable ([#1507](https://github.com/adcontextprotocol/adcp-client-python/issues/1507)) ([d908aaa](https://github.com/adcontextprotocol/adcp-client-python/commit/d908aaa98caa88e5b0cd992037eb5010dc009da1)) +* **server:** collect stranded defs, memoize the escape hatch, soften a claim ([#1513](https://github.com/adcontextprotocol/adcp-client-python/issues/1513)) ([fc285b0](https://github.com/adcontextprotocol/adcp-client-python/commit/fc285b057406f0e715412d1d53bb86a281503fb2)), closes [#1507](https://github.com/adcontextprotocol/adcp-client-python/issues/1507) +* **server:** mirror a raised AdcpError into the payload errors array ([#1592](https://github.com/adcontextprotocol/adcp-client-python/issues/1592)) ([cd0319b](https://github.com/adcontextprotocol/adcp-client-python/commit/cd0319b57d27ab8bbb06ddb091537645dadf887b)), closes [#1558](https://github.com/adcontextprotocol/adcp-client-python/issues/1558) +* **signing:** match standard Web Bot Auth, and finish the library migration ([#1537](https://github.com/adcontextprotocol/adcp-client-python/issues/1537)) ([09db189](https://github.com/adcontextprotocol/adcp-client-python/commit/09db1893c7b45ca2ca07d6a8db90bb59f05ec089)) +* **signing:** use only the directory keys with a valid signature ([#1544](https://github.com/adcontextprotocol/adcp-client-python/issues/1544)) ([56d5e73](https://github.com/adcontextprotocol/adcp-client-python/commit/56d5e7329ff8437933c9cc720520fb78d8427881)) +* **signing:** work with http-sf 1.5.0 and http-message-signatures 2.2.0 ([#1568](https://github.com/adcontextprotocol/adcp-client-python/issues/1568)) ([cf97bd2](https://github.com/adcontextprotocol/adcp-client-python/commit/cf97bd26253fcae0c59573bcf33f6f9fb138ee5c)) +* **sync:** inherit generated fields on the identity facades and skip the retired generated_poc alias test ([7d8b043](https://github.com/adcontextprotocol/adcp-client-python/commit/7d8b0439e3165ce5d0107a9ba97ae867751bf708)) +* **targeting:** bridge package forecast request inputs ([#1598](https://github.com/adcontextprotocol/adcp-client-python/issues/1598)) ([7cd667f](https://github.com/adcontextprotocol/adcp-client-python/commit/7cd667f9e134d958aadffadef1420d0c91c941ef)) +* **tasks:** echo the poll's own context on tasks/get ([#1599](https://github.com/adcontextprotocol/adcp-client-python/issues/1599)) ([f1f7593](https://github.com/adcontextprotocol/adcp-client-python/commit/f1f75930152510de374d98bd286f2462af2100bb)), closes [#1574](https://github.com/adcontextprotocol/adcp-client-python/issues/1574) +* **testing:** stop build_all_models hanging after a generated_poc alias import ([#1626](https://github.com/adcontextprotocol/adcp-client-python/issues/1626)) ([6f61234](https://github.com/adcontextprotocol/adcp-client-python/commit/6f61234cc2717e5e9cff2a824b28d3eb480af6f8)), closes [#1619](https://github.com/adcontextprotocol/adcp-client-python/issues/1619) +* **types:** allow assignment-only creative syncs ([81c2a8b](https://github.com/adcontextprotocol/adcp-client-python/commit/81c2a8b2b0fb221fff3d5d8ddcb96c673b9fbe68)), closes [#1545](https://github.com/adcontextprotocol/adcp-client-python/issues/1545) +* **types:** drop the empty-model arm codegen emits beside a constrained array ([#1658](https://github.com/adcontextprotocol/adcp-client-python/issues/1658)) ([adaf29b](https://github.com/adcontextprotocol/adcp-client-python/commit/adaf29bcb040860d8d4047741735002ea527016f)), closes [#1616](https://github.com/adcontextprotocol/adcp-client-python/issues/1616) +* **types:** generate the open asset unions, and derive the vocabulary they route by ([#1501](https://github.com/adcontextprotocol/adcp-client-python/issues/1501)) ([30a72ee](https://github.com/adcontextprotocol/adcp-client-python/commit/30a72ee2a409bccb53fe961816584bdea2518f70)) +* **types:** inherit the generated constraints on the canonical creatives field ([#1548](https://github.com/adcontextprotocol/adcp-client-python/issues/1548)) ([69a0f6b](https://github.com/adcontextprotocol/adcp-client-python/commit/69a0f6b9525b400b17b25c1b18294a4650c56afb)) +* **types:** inherit the generated creatives ceiling on PackageRequest ([#1579](https://github.com/adcontextprotocol/adcp-client-python/issues/1579)) ([6f13ce0](https://github.com/adcontextprotocol/adcp-client-python/commit/6f13ce07e69bc24de23ce63b97958875f6866cc7)) +* **types:** inherit the generated field on every hand-written redeclaration ([#1625](https://github.com/adcontextprotocol/adcp-client-python/issues/1625)) ([6e0ed68](https://github.com/adcontextprotocol/adcp-client-python/commit/6e0ed688e16c3be94fb117fef5157b4cda08a136)) +* **types:** leave unset optional fields off the wire from any parent ([#1591](https://github.com/adcontextprotocol/adcp-client-python/issues/1591)) ([1086cd9](https://github.com/adcontextprotocol/adcp-client-python/commit/1086cd90f70e760873b445f15db5cdcb0d8aeeed)), closes [#1587](https://github.com/adcontextprotocol/adcp-client-python/issues/1587) +* **types:** model macro_resolution_capabilities on Format ([#1505](https://github.com/adcontextprotocol/adcp-client-python/issues/1505)) ([eb66de8](https://github.com/adcontextprotocol/adcp-client-python/commit/eb66de84c7445abe0de185947d886290b08eb14f)) +* **types:** preserve custom targeting validation errors ([#1484](https://github.com/adcontextprotocol/adcp-client-python/issues/1484)) ([275e520](https://github.com/adcontextprotocol/adcp-client-python/commit/275e520822eaa280f28965ade8e20085f78cfd57)) +* **types:** refuse a JSON null on reporting_webhook.operation_id too ([#1570](https://github.com/adcontextprotocol/adcp-client-python/issues/1570)) ([9e238f3](https://github.com/adcontextprotocol/adcp-client-python/commit/9e238f34f75870d4d27b07156e26093a11b30151)) +* **webhooks:** echo reporting_webhook.operation_id on scheduled delivery reports ([#1552](https://github.com/adcontextprotocol/adcp-client-python/issues/1552)) ([0bac033](https://github.com/adcontextprotocol/adcp-client-python/commit/0bac033511d5b73908f2720d670b84a2642d2dba)), closes [#1092](https://github.com/adcontextprotocol/adcp-client-python/issues/1092) +* **webhooks:** send PgWebhookDeliverySupervisor task webhooks and deliver the ones already stuck in the queue ([#1651](https://github.com/adcontextprotocol/adcp-client-python/issues/1651)) ([83a2fe3](https://github.com/adcontextprotocol/adcp-client-python/commit/83a2fe37e8517950c4aa465ad0d5b92a955bf16c)) + + +### Performance Improvements + +* **types:** reduce canonical creative serialization overhead ([#1521](https://github.com/adcontextprotocol/adcp-client-python/issues/1521)) ([bde770b](https://github.com/adcontextprotocol/adcp-client-python/commit/bde770b76ab9c07fd6e8bb11394dd868ddb09984)) + + +### Reverts + +* move experimental AdCP 3.3 identity from main to next ([#1534](https://github.com/adcontextprotocol/adcp-client-python/issues/1534)) ([1e6d4b9](https://github.com/adcontextprotocol/adcp-client-python/commit/1e6d4b99b5340a5862e2429425354a1b70c27e48)) diff --git a/pyproject.toml b/pyproject.toml index a303db5ca..0c26488f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "adcp" -version = "9.3.0" +version = "10.0.0-beta.0" description = "Official Python client for the Ad Context Protocol (AdCP)" authors = [ {name = "AdCP Community", email = "maintainers@adcontextprotocol.org"} From 5b6b534a8b7a39aeeb0613a4ec3acf67a4e1bea2 Mon Sep 17 00:00:00 2001 From: "aao-ipr-bot[bot]" <279263549+aao-ipr-bot[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2026 08:57:38 +0000 Subject: [PATCH 2/2] chore: normalize prerelease version to PEP 440 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0c26488f3..0feda53bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "adcp" -version = "10.0.0-beta.0" +version = "10.0.0b0" description = "Official Python client for the Ad Context Protocol (AdCP)" authors = [ {name = "AdCP Community", email = "maintainers@adcontextprotocol.org"}