Skip to content

chore(main): release 4.0.0#177

Merged
bokelley merged 1 commit intomainfrom
release-please--branches--main
Apr 22, 2026
Merged

chore(main): release 4.0.0#177
bokelley merged 1 commit intomainfrom
release-please--branches--main

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Apr 16, 2026

🤖 I have created a release beep boop

4.0.0 (2026-04-22)

⚠ BREAKING CHANGES

  • types: rename Asset content types to Content
  • server: pluggable TaskStore on A2A — unblock production A2A adoption
  • server: expert-review followups — tenant-scoped idempotency, A2A context_factory, ContextVar safety
  • types: AssetsNN semantic aliases + format_category shim + downstream smoke
  • sdk: ResolvedBrand.brand_manifest removed. Use .brand. CreateMediaBuyRequest.brand_manifest removed. Use brand. BrandManifest, FormatCategory, DeliverTo, PromotedProducts, PromotedOfferings, Pricing, PackageStatus imports now raise ImportError. See MIGRATION_v3_to_v4.md.
  • webhooks: ADCPClient webhook verification now requires raw_body to be passed through from the HTTP handler. Callers that relied on the implicit re-serialize-from-payload fallback will start seeing ADCPWebhookSignatureError until they plumb the raw body through from their framework's pre-parse hook. Fix path:
  • webhooks: get_adcp_signed_headers_for_webhook now signs the compact-separator JSON form of the payload. Callers that previously hand-serialized spaced JSON and POSTed it with content= will see signature mismatches after this change. The fix is to also serialize with separators=(",", ":") or switch to httpx json= which already uses that form.
  • serve(mount=...) kwarg removed.
  • Budget.authority_level is removed. Migrate to reallocation_threshold / reallocation_unlimited on plan.budget, and set plan.human_review_required for decisions affecting data subjects. See the rc.4 migration section in README.md.

Features

  • A2A server support in serve() (d0c3015)
  • A2A server support in serve() (4e5db4f), closes #175
  • a2a: auto-retain contextId + taskId across multi-turn calls (0564635)
  • a2a: auto-retain contextId + taskId across multi-turn calls (8a084ec)
  • ADCP 3.0 server DX helpers, type guards, and schema sync (de4a079)
  • ADCP 3.0 server DX helpers, type guards, and schema sync to latest (bf0d81d)
  • AdCP RFC 9421 request-signing profile (ba53961)
  • add collection_list and sync_governance task methods (2dbeac1)
  • address PR review — real-world transforms and SDK error types (cfaa9c5)
  • AssetsNN aliases, format_category shim, MCP adoption hooks — unblock salesagent (ed7d30a)
  • auto-inject context passthrough in create_tool_caller (4d4fe5e)
  • bump to 4.0.0b1 with test fixtures updated for new schema shape (dcd6709)
  • bundle-based schema sync + Sigstore verify + 4.0.0b1 on latest (755071a)
  • error translation helper for multi-transport servers (7825ed6)
  • error translation helper for multi-transport servers (#176) (88126d1)
  • examples: add seller_agent.py reference impl (40341c9)
  • idempotency_key auto-injection, typed errors, and capability gate (af9dd2d)
  • idempotency_key auto-injection, typed errors, and capability gate (12cc983)
  • implement AdCP RFC 9421 request-signing profile (fc995e9)
  • MCP response + error extraction per AdCP spec (d991b1e)
  • MCP response + error extraction per AdCP spec (896beb8)
  • mcp: auto-generate sync_governance inputSchema from Pydantic (ac1edb3)
  • mcp: inline $defs in generated inputSchema (closes #208) (8eaeb4d)
  • mcp: inline $defs in generated inputSchema (closes #208) (ffa58e5)
  • migrate+types: v3->v4 codemod, strict-validation flag, version helpers, subclass test (0f50d39)
  • migrate+types: v3->v4 codemod, strict-validation flag, version helpers, subclass test (32bfbeb)
  • salesagent review feedback - typed error codes, state machine export, missing types (8ef8161)
  • schemas: regen for AdCP 3.0 GA — custom pricing + experimental_features (4dfaffe)
  • schemas: regen for AdCP 3.0 GA — custom pricing + experimental_features (db913ba), closes #204
  • sdk: 4.0 beta cleanup — version wiring, brand_manifest drop, migration guide (ebaab12)
  • server+migrate: round-1 feedback followups (dbbc390)
  • server+migrate: round-1 feedback followups (0fe9cb5)
  • server: AccountAwareToolContext + multi-tenant contract doc (69fd3da)
  • server: AccountAwareToolContext + multi-tenant contract doc (3747939)
  • server: context_factory, tenant_id, DISCOVERY_TOOLS — unblock MCP adoption (2203c1d)
  • server: DISCOVERY_METHODS + document tools/list pre-auth posture (closes #222) (a26c948)
  • server: DISCOVERY_METHODS + lock tools/list pre-auth posture (closes #222) (ba2de29)
  • server: gate tools/list on method overrides (#220) (816d22c)
  • server: gate tools/list on method overrides (closes #220) (fc1a788)
  • server: idempotency middleware per AdCP #2315 spec (101713c)
  • server: idempotency middleware per AdCP #2315 spec (f708ed2)
  • server: middleware parity, auth, A2A parser hook, startup log (549d190)
  • server: middleware parity, auth, A2A parser hook, startup log (c9d7bbc)
  • server: per-skill middleware hook in ADCPAgentExecutor (#226) (4e95764)
  • server: per-skill middleware hook in ADCPAgentExecutor (closes #226) (6f9bd26)
  • server: pluggable PushNotificationConfigStore on A2A (#225) (ea21864)
  • server: pluggable PushNotificationConfigStore on A2A (closes #225) (4f64c8d)
  • server: pluggable TaskStore on A2A — unblock production A2A adoption (69ebccd)
  • server: propagate caller_identity from transport into ToolContext (b4a4c93)
  • server: propagate caller_identity from transport into ToolContext (1f3cf8f)
  • server: request-body size cap middleware (closes #239) (21249a5)
  • server: request-body size cap middleware (closes #239) (9ccf960)
  • server: thread ToolContext through TestControllerStore (closes #227) (a4c6489)
  • server: thread ToolContext through TestControllerStore (closes #227) (a0d89e3)
  • server: typed handler params via Pydantic annotation (closes #214) (dcc2c87)
  • server: typed handler params via Pydantic annotation (closes #214) (4e86e1a)
  • server: TypeVar-bound ADCPHandler for typed ToolContext subclasses (#223) (d737527)
  • server: TypeVar-bound ADCPHandler for typed ToolContext subclasses (closes #223) (e1eb923)
  • server: wire idempotency errors to wire + capability helper + DX polish (5b8f353)
  • signing: async revocation-list + JWKS fetchers (55a8fd4)
  • signing: async revocation-list + JWKS fetchers (1c2e676)
  • signing: auto-sign outgoing requests via ADCPClient signing kwarg (551aaf8)
  • signing: auto-sign outgoing requests via ADCPClient signing kwarg (c07c946)
  • signing: full-wire e2e + DX fixes from integrator walkthrough (a44896b)
  • signing: generate_signing_keypair() programmatic API (closes #217) (dd2b961)
  • signing: generate_signing_keypair() programmatic API (closes #217) (c6d5505)
  • signing: IP-pinned httpx transport closes DNS-rebinding TOCTOU (9a7ee9c)
  • signing: IP-pinned httpx transport closes DNS-rebinding TOCTOU (1fa0820)
  • signing: keygen --encrypt flag and adcp-keygen entry point (01c0c5d)
  • signing: live revocation-list fetcher with signed JWS verification (249b79d)
  • signing: live revocation-list fetcher with signed JWS verification (fbe3e90)
  • signing: module rename + keygen --encrypt + adcp-keygen entry point (7bce09a)
  • signing: PostgreSQL-backed PgReplayStore for multi-instance verifiers (8118033)
  • signing: PostgreSQL-backed PgReplayStore for multi-instance verifiers (3ad3951)
  • strip bogus Literal['reuse'] subclasses from datamodel-codegen (3684227)
  • switch ADCP_VERSION to latest, remap aliases for schema redesign (253be88)
  • sync rc.4 schemas + wire update_rights task (67119bf)
  • sync rc.4 schemas + wire update_rights task (6c0e0e9)
  • sync schemas from protocol bundle with Sigstore verification (66b9fb1)
  • ToolAnnotations and agent-facing descriptions for all 56 MCP tools (66729ee)
  • types: AssetsNN semantic aliases + format_category shim + downstream smoke (f5c6b18)
  • types: regenerate schemas + inject Literal-discriminator defaults (27468aa)
  • types: regenerate schemas + inject Literal-discriminator defaults (a4bd6d8)
  • types: rename <Type>Asset content types to <Type>Content (7d0679f)
  • webhooks: adcp.webhooks.deliver() + A2A artifacts conformance (493f219)
  • webhooks: adcp.webhooks.deliver() one-shot legacy-auth dispatcher (3bf663d)
  • webhooks: add from_pem and sign_legacy_webhook helpers (19a8ab3)
  • webhooks: RFC 9421 signing + idempotency_key + sender/receiver UX (63732c8)
  • webhooks: RFC 9421 signing + required idempotency_key + sender/receiver UX (c640b8c)

Bug Fixes

  • CI failures - noqa F401 on guard re-exports, dynamic model_rebuild (378ac50)
  • CI failures and review findings (9089711)
  • CI lint - sort imports in types/init.py, pin ADCP_VERSION (cfbdca1)
  • CI lint (noqa F401 re-exports) and pin ADCP_VERSION to 3.0.0-rc.3 (5959e7b)
  • example: derive port and AGENT_URL from ADCP_PORT env (1df2306)
  • harness,server: surface partial/failing storyboards, reuse port on rerun, default list_creatives timestamps (3b27001)
  • idempotency: honor new required Idempotency.supported field in strict gate (9ff08c9)
  • make ergonomic codegen resilient to datamodel-codegen variant suffix shifts (138179b)
  • migrate+types: PR #247 expert-review followups (ac505c0)
  • mypy override errors in subclass handlers (d35bc63)
  • mypy valid-type in generated code, subclass handler param types (eb4e027)
  • noqa F401 on new re-exports (TRANSIENT_CODES, MEDIA_BUY_STATE_MACHINE, PaginationResponse) (b4059c5)
  • resolve CI failures from latest-tracking regeneration (8b49e1a)
  • sdk: remove stray noqa, correct capabilities_response docstring (05ac689)
  • sdk: SDK cheap fixes for DX Stream B1 (e67e8ed)
  • sdk: three cleanups from round-4 validator findings (d7e93f7)
  • seller: declare compliance_testing block and add missing force_creative_status scenario (5de1c61)
  • server: expert-review followups — tenant-scoped idempotency, A2A context_factory, ContextVar safety (5f053af)
  • server: PR #230 expert-review followups — cross-tenant isolation + hardening (bb2bc67)
  • server: PR #232 expert-review followups — scope_provider injection, loud anonymous fallback, SSRF/secret-storage docs (5d3eff8)
  • server: PR #233 expert-review followups — security docs + retry/transform tests (afbbfac)
  • server: PR #234 expert-review followups — TypeVar tests & docs (df5898c)
  • server: PR #237 expert-review followups (a415786)
  • server: PR #238 expert-review followups (a198656)
  • server: PR #238 review round 2 — MCP field surfacing + custom-validator doc (4d4e2e7)
  • server: PR #241 expert-review followups (ce189f8)
  • server: PR #244 expert-review followups (6af9a7d)
  • server: PR #245 code-review followups — fail loudly on silent-skip paths (a0a3077)
  • server: Threat 3 merge-blocker on advertised-tools gate (11abb3b)
  • signing: PR #206 reviewer fixes — IDN normalization, HTTPS_PROXY, fail-closed reuse (b432b03)
  • signing: PR #243 expert-review followups (e616307)
  • signing: round-2 review — harden identifier check, drop invalid SQL (4ea1d8f)
  • signing: round-2 review — harden issuer/Last-Modified, slide next_update on 304 (8dbcbc5)
  • sort TYPE_CHECKING imports in base.py and mcp_tools.py (I001) (71f7448)
  • suppress E501 in mcp_tools.py (tool descriptions are long strings) (9eea1d9)
  • webhooks,seller,signals: round-6 P1+P2 DX fixes (6e51519)
  • webhooks: align deliver() with canonical compact-separator on-wire form (92240d5)
  • webhooks: re-apply compact-separator signer after rebase onto 3.0 GA (166aa1b)
  • webhooks: sign compact-separator JSON to match httpx wire format (1c2a527)
  • webhooks: verifier fails closed when raw_body missing (adcp#2478) (9a906a9)

Documentation

  • creative: fix NameError in build_creative fallback (afe6afb)
  • creative: remove anti-patterns from build-creative-agent skill (9e42039)
  • design: FastMCP native registration investigation (#209) (d32694f)
  • design: FastMCP native registration investigation (closes #209) (ba3cb73)
  • fix DX gaps in skill docs from real-world agent builds (dc63f8b)
  • generative-seller: fix invalid enums and document generative tools (99e9f2e)
  • link upstream codegen bug in post_generate_fixes (ee6f52c)
  • retail: fix invalid capability enum and storyboard invocation (249acb1)
  • seller,retail: teach proposal refine schema and webhook emission (9723eef)
  • seller: correct invalid schema claims and serve() signature (f3a77c6)
  • seller: replace false compliance_testing auto-wire with explicit kwarg (8d74805)
  • signals,generative: correct idempotency.wrap decorator usage (3ba41e6)
  • signals,seller: round-2 validator findings (2b941d0)
  • signals: tighten signal_ids filter, idempotency, validation command (e0fb6d6)
  • skills,examples: align webhook + proposal examples with real SDK and schema (a9e2a63)
  • skills: round-8 DX polish — scope seller, self-contain signals (3686e38)
  • skills: round-8 DX polish — scope seller, self-contain signals (8b5075c)

Miscellaneous Chores

  • mark 4.0 breaking change for release-please (8d0c430)

This PR was generated with Release Please. See documentation.

@github-actions github-actions Bot force-pushed the release-please--branches--main branch 9 times, most recently from b072cef to 55ec268 Compare April 19, 2026 10:04
@github-actions github-actions Bot changed the title chore(main): release 3.13.0 chore(main): release 4.0.0 Apr 19, 2026
@github-actions github-actions Bot force-pushed the release-please--branches--main branch 4 times, most recently from 4eb7621 to e265e4c Compare April 19, 2026 18:57
@github-actions github-actions Bot force-pushed the release-please--branches--main branch 13 times, most recently from 1e9f2a5 to dcb1d00 Compare April 20, 2026 14:06
@github-actions github-actions Bot force-pushed the release-please--branches--main branch 14 times, most recently from 5580acf to fa9913f Compare April 21, 2026 20:31
@github-actions github-actions Bot force-pushed the release-please--branches--main branch from fa9913f to 8fe8821 Compare April 22, 2026 04:42
@bokelley bokelley merged commit 2ffe024 into main Apr 22, 2026
1 check passed
@github-actions
Copy link
Copy Markdown
Contributor Author

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment