Skip to content

Commit e5ea334

Browse files
chore(main): release 9.0.0-beta.2
Release SDK 9 beta.2 with the reviewed GA fixes and migration notes. Release-As: 9.0.0-beta.2
1 parent c299d42 commit e5ea334

3 files changed

Lines changed: 67 additions & 14 deletions

File tree

‎.release-please-manifest.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "9.0.0-beta.1"
2+
".": "9.0.0-beta.2"
33
}

‎CHANGELOG.md‎

Lines changed: 65 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,21 +69,74 @@
6969
and any controlled proxy Host values that actually reach the SDK (for
7070
example, `allowed_hosts=["agent.example.com", "agent.internal:8000"]`).
7171
Setting a discovery or public URL does not grant trust to its hostname.
72-
Browser requests also need a separate `allowed_origins` allowlist for
73-
their origins; Host allowlisting does not authorize an Origin. Native
74-
requests without Origin continue to work when their Host is allowed.
72+
Browser protocol and operational requests need an appropriate
73+
`allowed_origins` allowlist. Public GET/HEAD discovery accepts any Origin
74+
and still checks Host; add CORS middleware separately when browsers need
75+
to read the response. Native requests without Origin continue to work
76+
when their Host is allowed.
7577
See [HTTP transport policy](docs/handler-authoring.md#http-host-and-origin-policy)
7678
for wildcard and port matching rules.
7779

78-
* **types:** `CreativeAsset.format_kind`, `Creative.format_kind`, and
79-
`CreativeManifest.format_kind` now reject values outside `CanonicalFormatKind`.
80-
Valid strings still normalize to enum members. Inputs remain strict, while
81-
buyer manifest readback preserves future kinds through private tolerant views
82-
in delivery, preview, build (including nested variants and async results), and
83-
trusted-match offers. Direct `Creative` and `CreativeAsset` response fields
84-
remain strict. Update stored and incoming creative kinds using the
85-
[migration guide](docs/canonical-format-kinds-migration.md).
86-
This closes [#1241](https://github.com/adcontextprotocol/adcp-client-python/issues/1241).
80+
* **types:** Consumer creative and manifest `format_kind` fields remain open
81+
strings and preserve unknown values. Use string equality and opt into
82+
`CanonicalFormatKindStr` or `require_canonical_format_kind(vocabulary)` when
83+
an application boundary needs a closed vocabulary. These helpers do not
84+
change public consumer defaults. See
85+
[format-kind migration](docs/canonical-format-kinds-migration.md).
86+
87+
## [9.0.0-beta.2](https://github.com/adcontextprotocol/adcp-client-python/compare/v9.0.0-beta.1...v9.0.0-beta.2) (2026-10-07)
88+
89+
### Migration notes
90+
91+
See [Migrating from SDK 8 to 9](MIGRATION_v8_to_v9.md) before upgrading.
92+
93+
* `ProductFormatDeclaration` now names the 16-branch authoring union. Validate
94+
it with `validate_union` or `TypeAdapter`; use `Format` for open consumer
95+
parsing and projection helpers.
96+
* Source requests and manifests bind `identity.consumer_id` to the obligation
97+
owner. Retained ownerless evidence keeps its canonical hashes. An active
98+
owned generation cannot replay an ownerless or differently owned frozen
99+
acquisition; reconcile that state and create a new generation.
100+
* First automatic reads spread after actual offering readiness within a window
101+
of up to five minutes by default, bounded by delivery/recovery headroom,
102+
period length and cadence. Set `read_jitter_window=timedelta(0)` on the
103+
producer, Core service or `ReportingProductionOptions` to opt out.
104+
* Strict format-kind helpers are opt-in; consumer fields remain open strings.
105+
* `supported_versions` restricts each server's dispatch and advertisement.
106+
Public GET/HEAD discovery accepts foreign Origins while retaining Host
107+
checks; browser CORS remains separately configured.
108+
109+
110+
### Features
111+
112+
* **reporting:** replace verified empty legacy ledgers atomically ([0f41faa](https://github.com/adcontextprotocol/adcp-client-python/commit/0f41faa59be370c758266809395123851fc78208))
113+
* **reporting:** spread initial source reads across worker turns ([c310a2c](https://github.com/adcontextprotocol/adcp-client-python/commit/c310a2cfb16e7e3aefa8f016cc10ee015fbfa011))
114+
* **server:** select served protocol versions per instance ([ece1f17](https://github.com/adcontextprotocol/adcp-client-python/commit/ece1f17b546d10d71521a901515218b51a8e8072))
115+
* **types:** add cached union and strict format-kind validation helpers ([2efd14f](https://github.com/adcontextprotocol/adcp-client-python/commit/2efd14f344c689a9a4c5b6b5d6878ee531e27510))
116+
117+
118+
### Bug Fixes
119+
120+
* **docs:** skip removed-type modules during API documentation builds ([#1428](https://github.com/adcontextprotocol/adcp-client-python/issues/1428)) ([a3ad8a7](https://github.com/adcontextprotocol/adcp-client-python/commit/a3ad8a76bbcbb11f3e05acf8d32dead9aecde092))
121+
* **migrate:** rewrite generated_poc imports to adcp.types.domains, split-aware ([#1420](https://github.com/adcontextprotocol/adcp-client-python/issues/1420)) ([62a972e](https://github.com/adcontextprotocol/adcp-client-python/commit/62a972e8f1daaa31244c52edfb8066dc120909a2))
122+
* **reporting:** bind source consumers and stagger automatic reads ([c299d42](https://github.com/adcontextprotocol/adcp-client-python/commit/c299d42412aa4436b91121f0ad3841a19729b69a))
123+
* **reporting:** bind source consumers and stagger automatic reads ([#1445](https://github.com/adcontextprotocol/adcp-client-python/issues/1445)) ([c299d42](https://github.com/adcontextprotocol/adcp-client-python/commit/c299d42412aa4436b91121f0ad3841a19729b69a))
124+
* **reporting:** bind source requests to their authenticated consumer ([65e6c8d](https://github.com/adcontextprotocol/adcp-client-python/commit/65e6c8d3bbbc01dcf4d1950c25dec932a84ad53b))
125+
* **reporting:** integrate consumer ownership and automatic read timing ([f52b82b](https://github.com/adcontextprotocol/adcp-client-python/commit/f52b82b356613d5f77d3a7031eecf2182d10b96d))
126+
* **reporting:** integrate recovery retry isolation with source scheduling ([f32686b](https://github.com/adcontextprotocol/adcp-client-python/commit/f32686bfb84e8e565b10e432d0d8652e9e41326b))
127+
* **reporting:** isolate account initialization and recovery failures ([2704d0f](https://github.com/adcontextprotocol/adcp-client-python/commit/2704d0f5f1e92d2b0c2992d22b66e2b01be28533))
128+
* **reporting:** isolate account initialization and recovery failures ([#1405](https://github.com/adcontextprotocol/adcp-client-python/issues/1405)) ([2704d0f](https://github.com/adcontextprotocol/adcp-client-python/commit/2704d0f5f1e92d2b0c2992d22b66e2b01be28533))
129+
* **reporting:** isolate complete queued binding attempts ([36aee4c](https://github.com/adcontextprotocol/adcp-client-python/commit/36aee4c27378d0f61013749a4bd6666d23523fa4))
130+
* **reporting:** isolate invalid contexts during recovery retries ([48bd5bb](https://github.com/adcontextprotocol/adcp-client-python/commit/48bd5bb9ee26260b9cb5dd3077c5342e52b66f85))
131+
* **reporting:** preserve the stopped-worker migration diagnostic ([235d36d](https://github.com/adcontextprotocol/adcp-client-python/commit/235d36d3edc8224d90c215217b46e41b5a651c83))
132+
* **reporting:** preserve worker recovery and frozen SDK fixtures ([fe7f27a](https://github.com/adcontextprotocol/adcp-client-python/commit/fe7f27afb5a0ef045e982712d2ba1fbc4b84ed1c))
133+
* **reporting:** use the frozen acquisition offering readiness ([a2d45a7](https://github.com/adcontextprotocol/adcp-client-python/commit/a2d45a7635207697578a769098d3ab5d96d057aa))
134+
* **reporting:** wait for declared source availability before acquisition ([#1406](https://github.com/adcontextprotocol/adcp-client-python/issues/1406)) ([90e5d3a](https://github.com/adcontextprotocol/adcp-client-python/commit/90e5d3aca964a05a7ce45c5e3811d9582d72a7c3))
135+
* **sdk:** address SDK 9 GA type and server migration gaps ([fe27084](https://github.com/adcontextprotocol/adcp-client-python/commit/fe2708462d0fb158e7c78c9fd07b36329e19f109))
136+
* **sdk:** address SDK 9 GA type and server migration gaps ([#1443](https://github.com/adcontextprotocol/adcp-client-python/issues/1443)) ([fe27084](https://github.com/adcontextprotocol/adcp-client-python/commit/fe2708462d0fb158e7c78c9fd07b36329e19f109))
137+
* **server:** allow cross-origin public discovery reads ([11c6019](https://github.com/adcontextprotocol/adcp-client-python/commit/11c601908c1aa04720f8fd2736ebbd35e267834e))
138+
* **types:** declare the canonical list overrides precisely for every checker ([#1419](https://github.com/adcontextprotocol/adcp-client-python/issues/1419)) ([43910ce](https://github.com/adcontextprotocol/adcp-client-python/commit/43910ce9fe22ca87e6b2e79dc549f4bf31198a19))
139+
* **validation:** isolate cached validators across threads ([#1442](https://github.com/adcontextprotocol/adcp-client-python/issues/1442)) ([b83a0c5](https://github.com/adcontextprotocol/adcp-client-python/commit/b83a0c50e8d39a3bb97c53648ea7f4b351dffbe4))
87140

88141
## [9.0.0-beta.1](https://github.com/adcontextprotocol/adcp-client-python/compare/v8.0.0...v9.0.0-beta.1) (2026-10-06)
89142

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "adcp"
7-
version = "9.0.0b1"
7+
version = "9.0.0b2"
88
description = "Official Python client for the Ad Context Protocol (AdCP)"
99
authors = [
1010
{name = "AdCP Community", email = "maintainers@adcontextprotocol.org"}

0 commit comments

Comments
 (0)