Skip to content

Version Packages (beta) - #8801

Draft
aao-release-bot[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Draft

aao-release-bot[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@aao-release-bot

@aao-release-bot aao-release-bot Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

adcontextprotocol@3.3.0-beta.6

Minor Changes

  • b7907ee: An origin-only authorized_agents[].url in adagents.json now authorizes the agent at that origin, whatever its path (adcp#8862). An entry whose canonical form has the root path and no query, such as https://agent.example.com, matches any agent URL with the same canonical origin, including https://agent.example.com/mcp. An entry with a path still matches only that canonical URL, so path-mounted agents on a shared host stay distinct. This aligns adagents.json with the accepted DR-0023 (an agent's identity is its origin, one agent per origin), under which authorized_agents[].url already matched a Web Bot Auth signer by canonical origin. Matching only widens: no entry that authorized an agent under 3.2 stops authorizing it. Validators, TMP providers and registries that check authorized_agents[].url must apply the origin-only rule. Updated: docs/reference/url-canonicalization.mdx, the Agent URL matching section of docs/governance/property/adagents.mdx, the TMP sync-time validation, the authorized-agent-base.json url description, both 3.3 migration guides, and R0 in specs/agent-identity-3-3.md.

  • 7dd93fe: Move the experimental available_installment_statuses (media_buy.installment_lifecycle, feat(schema): installment lifecycle and proof of publication on by_installment rows #8116) from core/reporting-capabilities.json to core/canonical-reporting-capabilities.json (adcp#8501). The definition, x-status: experimental and x-added-in: 3.3.0 are unchanged.

    core/reporting-capabilities.json is used only by the deprecated get_products product, and 3.3 adds no field that exists only on a deprecated task. The canonical product's reporting capabilities, returned by list_products, request_proposals and refine_proposals, already carry supports_installment_breakdown, and the opened schema (DR-0036) now takes the status list beside it.

    This changes 3.3.0-beta.0 through beta.5. The betas are immutable. A seller built from one declares available_installment_statuses on the canonical product's reporting_capabilities and stops sending it on a get_products product. The installment lifecycle docs and experimental status page say where it lives.

  • 49c7231: Keep core/sla-window.json at its 3.2.8 shape and move business time onto the creative review SLA (adcp#8501, entries 11 and 12). sla-window stays closed with the commercial terms until 4.0 (DR-0036), and 3.3.0-beta.1 added clock and business_calendar_id to it, so a strict 3.2 validator rejected a 3.3 SLA. The signed terms use sla-window through change_terms[].processing_sla, and 3.2.8 says sellers include weekends and non-working periods in the maximum, so the signed SLA stays elapsed time.

    clock and business_calendar_id now live on core/creative-review-sla.json. creative_policy.review_sla keeps business time: clock defaults to elapsed, clock: "business" requires a business_calendar_id that resolves to get_adcp_capabilities.business_calendars[], and the calendar and snapshot rules are unchanged. The schema no longer composes sla-window. It defines response_max and completion_max itself, keeps completion_max required, and is open.

    Every other SLA is elapsed time, as in 3.2. An action's sla on allowed_actions[] and available_actions[], a change term's processing_sla, and core/escalation-sla.json reject clock and business_calendar_id. escalation-sla loses the clock: "elapsed" it accepted in the betas.

    This changes 3.3.0-beta.1 through beta.5. The betas are immutable. A seller or SDK built from one stops sending clock and business_calendar_id anywhere except creative_policy.review_sla and the review_sla on a creative action. The 3.3 release notes, What's new, the 3.2 to 3.3 migration guide, and the service commitments page are updated.

  • db87715: Add the optional creative.supports_registry_policy_enforcement capability and
    gate the creative/policy_backed_rejections storyboard on explicit support, so
    sellers that do not publish registry policies in enforced_policies report that
    coverage as not applicable instead of failing it. A creative library alone does
    not imply support, and a seller that publishes a policy must still enforce it.
    The reference seller advertises the flag on the 3.3 contract.

  • 3cf5f53: image_carousel gains an optional card_image_sizes parameter (adcp#8911): a list of accepted logical { width, height } pairs for card images, the same shape as native_in_feed's main_image_sizes. Each image card's media must match one listed pair exactly; a larger image at the same ratio does not match. When the cards slot declares pixel_ratios, the intrinsic size is the matched pair times the selected ratio. All card images in one creative match pairs of the same aspect ratio. The field does not constrain video card media. When card_aspect_ratio is also declared, every listed pair must have that ratio within 1%; a declaration where they disagree is invalid. Additive and optional: existing declarations are unchanged, and a seller that omits the field leaves card pixel size unconstrained beyond card_aspect_ratio.

  • 2dc672e: Open the schemas that were meant to be open (working-group decision of 2026-11-09, DR-0036). Closing a schema only breaks validators that hard-code it, so opening one is not a protocol break.

    additionalProperties goes from false to true at 747 of the 859 closed locations in the 3.3 source. Nothing else in those schemas changes, and every payload that was valid stays valid. This includes the capability blocks and containers that fix(schemas): open the capability blocks and containers 3.3 extends, against DR-0019 (#8501) #8772 opened (daypart windows, the targeting overlay requirement and support containers, and the spot and canonical reporting capabilities), folded in here with thanks to Konstantin Mirin. The sync_creatives assign operation opens too. Its operation const keeps the branches apart, so it doesn't need fix(schemas): open the capability blocks and containers 3.3 extends, against DR-0019 (#8501) #8772's named exception. From fix(schemas): open the capability blocks and containers 3.3 extends, against DR-0019 (#8501) #8772, boolean demographics on the overlay schemas is also deprecated as the 3.2 shorthand for { "age": true }. Senders MUST send the object form, receivers MUST accept true, and only support with gender: true satisfies a gender requirement. 4.0 removes the boolean form.

    112 locations stay closed: most for a structural reason, and the commercial terms as a hold until 4.0.

    • oneOf forms told apart by key presence: a2ui/bound-value.json and the brand.json document forms.
    • Held closed until 4.0, as a hold rather than a structural reason: commercial-terms, product-purchase, change-term, change-term-constraints, sla-window, bidding-policy, and the canonical measurement terms, performance standard, reporting commitment, pricing option and budget allocation.
    • Join keys: metric qualifier objects and forecast dimensions.
    • canonical-installment-ref and the JWS response-payload envelope.
    • Privacy clamps: the TMP identity and context match requests, catalog-item-reference-not-found-error, the per-agent PERMISSION_DENIED and BILLING_NOT_PERMITTED_FOR_AGENT details, the get_principal recognized, unconfigured and failed results and the sync_principal failed result, and the error objects of the get_reporting_status lookup_unavailable failure.
    • Credential-free reporting destinations. proposal-budget-constraint, the strict peer of budget-range, is held until 4.0 with the commercial terms.
    • No key material or markup: trust.json, on the signature-verification fetch path, and the declarative placement-presentation frame.
    • Maps keyed by identifiers (patternProperties).

    Where closure also rejected a specific field the protocol defines elsewhere, the opened schema names it in not: { anyOf: [{ required: [...] }] }, as fix(schemas): reopen the 3.2 proposal-flow schemas closed against DR-0019 #8531 did for canonical-product. For example, trackers and landing_page_url stay assign-only, hold entries carry no expires_at, and delivery-ready webhooks carry no access token. Each node with a named rejection says in its description what it rejects and why, since generated types can't express not.

    The additive-minor check now flags an added property only where the schema stays closed. It still fails on removals, renames, retypes, removed enum values, tightened bounds, new required names, and closing an open schema. The closed-anywhere-in-the-major rule and the reopening corrections are gone, and the baseline keeps 4 entries, each with its resolution.

    Generated types change. A generator that reads additionalProperties now treats the opened objects as open: json-schema-to-typescript gives them an index signature, and Pydantic models stop forbidding extra fields. A strict validator built from the 3.2 schemas still rejects 3.3 fields on these objects, so send a 3.3 field only to a 3.3 peer. The next 3.2.x patch (fix(schemas): open schemas that were closed by accident (3.2.x backport) #8864) opens the same locations that 3.2 has, all but one: it keeps get-reporting-status-response.json#/oneOf/1/oneOf/0 closed, as 3.2 published it.

  • 3bd51b8: State that a seller accepts a creative that conforms to the format option it targets (adcp#8918).

    • sync_creatives gains a "Format conformance" rule. A seller MUST NOT refuse, with a conformance code (CREATIVE_SIZE_MISMATCH, CREATIVE_VALUE_NOT_ALLOWED, CREATIVE_VALIDATION_FAILED_GENERIC, or VALIDATION_ERROR / INVALID_REQUEST against the assets), a creative on the grounds of a declared parameter that the creative satisfies, and MUST NOT enforce a narrower value than the one declared.
    • A closed set narrows a slot only when declared. With no cta_values, the cta slot takes free text and CREATIVE_VALUE_NOT_ALLOWED does not apply.
    • Any other narrowing parameter the option omits sets no limit through that parameter. Under technical_requirements_complete: true the seller holds no undeclared limit either, so a creative that conforms to every parameter is accepted. Without that assertion the omitted constraint stays undeclared, as before.
    • Refusals outside format conformance are unchanged: CREATIVE_REJECTED for content, brand-safety and accessibility review, POLICY_VIOLATION for seller advertising policy, and validation codes for corrupt or unfetchable assets.
    • The CREATIVE_VALUE_NOT_ALLOWED description and the cta_values descriptions on the native_in_feed and image canonicals now say the same. The canonical-formats and creative-formats docs carry the rule beside technical completeness.
    • New compliance scenario media_buy_seller/declared_format_option_acceptance (3.3, required by media_buy_seller, gated on creative.has_creative_library). It seeds a native_in_feed option that declares a 336x280 main_image, a 90-character title limit, no cta_values and technical_requirements_complete: true, then expects sync_creatives to accept a creative built exactly to it, with a free-text CTA and no icon.

    This tightens a seller obligation in the 3.3 beta. A seller that refused declared sizes or enforced an undeclared CTA list was already contradicting its own declaration; it now fails the new scenario.

  • 63d996b: Require experimental TMP Context Match caches in AdCP 3.3 to partition by
    trusted evaluation namespace as well as request hash, re-authorize warm hits,
    and bypass caching when the required context cannot be established. Keep
    provider model-deployment changes under the existing cache_ttl policy, state
    the stale-entry window, and recommend lowering TTL before such deployments.
    The 3.1.22 emergency privacy and request-partitioning corrections remain in
    force; no published 3.1 or 3.2 release artifact changes.

  • 7ce107a: Add 3gp, mpeg, and m4v to the containers enum of the video asset requirements (core/requirements/video-asset-requirements.json), so a seller that accepts those files can declare them. Three additive enum values: no existing value changes, and clients already tolerate unknown enum values. Proposed for 3.3 by consent (adcp#8107).

  • 3deb1cf: Keep 3.3 additions off the deprecated create_media_buy and update_media_buy tasks (adcp#8501). Both are compatibility tasks that buyers are moving off, so 3.3 adds nothing to them: a field that exists only there is one more gap for every migration. Six fields that the 3.3 betas added to them are removed from them. Where a live task (buy_products, accept_proposal, control_media_buy, get_media_buys, sync_creatives assignment_operations) has the same field, it stays there unchanged.

    This is a beta-to-beta change. No stable release carried these fields. The betas are immutable, so a buyer, seller, or SDK built from a beta bundle has them to remove. The schemas are open, so a seller on the later schema ignores them like any unknown field rather than rejecting the request.

    • predecessor_media_buy_id and lineage_reason (experimental media_buy.lineage, feat(media-buy): forward-only lineage for renewal and replacement buys #8038, from 3.3.0-beta.0). Removed from the create_media_buy request, with their paired dependencies. They stay on the buy_products and accept_proposal requests, on get_media_buys readback and its predecessor_media_buy_id filter, and on core/media-buy.json.
    • artifact_webhook.signing_profile (experimental, docs(security): add the Web Bot Auth request-signing profile #7894, from 3.3.0-beta.0). Removed from the create_media_buy request, with its rule against sending it next to authentication. No live task has artifact_webhook, so it lives nowhere: an artifact_webhook without authentication is signed with adcp/webhook-signing/v1. signing_profile stays on push_notification_config, reporting_webhook, and the notification configurations, and webhook_signing.profiles no longer lists artifact_webhook.
    • start_requires_all_creatives_approved (feat(media-buy): define creative approval startup policy #8485, from 3.3.0-beta.1). Removed from media-buy/package-request.json (create_media_buy packages and update_media_buy new_packages), media-buy/package-update.json, and core/package.json (the package readback in their responses). It stays on control_media_buy package controls (media-buy/package-control.json), get_media_buys package readback, the update_creative_start_policy available action, and media_buy.features.creative_start_policy, whose description now names only control_media_buy.
    • target_audiences[] (experimental media_buy.audience_evidence_targets, feat(media-buy): experimental target_audiences in audience_evidence_requirements #8215, from 3.3.0-beta.1). Removed from media-buy/package-request.json, with its dependencies entry. With the get_products filters copy withdrawn in the same release, no 3.3 wire form remains: sellers stop listing the feature id, and core/audience-evidence-target.json and enums/audience-evidence-relationship.json are removed, along with their index.json registrations and tests/audience-evidence-targets.test.cjs. The stable inline relationship enums on audience evidence are unchanged. The design and its matching rules are kept under the 4.0 check purchase_target_audiences_required_in_4_0, whose detection no longer depends on the retired feature id.
    • trackers and landing_page_url on package creative assignments (feat(creative): add assignment-scoped measurement trackers #8220, feat(creative): support assignment landing page overrides #8180, from 3.3.0-beta.0). Removed from core/creative-assignment.json, which only create_media_buy and update_media_buy requests and their package readback use. They stay on sync_creatives assignment_operations assign, read back on list_creatives and get_media_buys, which defines its own assignment rows. creative.supports_assignment_trackers and creative.supports_assignment_landing_page now name only sync_creatives.
    • billing_measurement.counting_mechanisms[] (experimental media_buy.measurement_provenance, feat(schema): experimental collection-mechanism vocabulary for counting_mechanisms and measurement_provenance #7940, from 3.3.0-beta.2). Removed from core/measurement-terms.json, which only get_products products and create_media_buy and update_media_buy packages use, so this covers all three tasks. It lives nowhere in 3.3; the canonical commercial terms, held closed until 4.0, gain it then (canonical_counting_mechanisms_required_in_4_0, whose design notes now record it). vendor_metric_provenance[] and enums/collection-mechanism.json stay.

    expected_confirmation_at stays on every submitted response, create_media_buy included. The training agent stops echoing the start gate on create_media_buy and update_media_buy packages. It ignores assignment trackers and landing_page_url on their creative assignments and does not echo assign-set ones in their responses. get_media_buys still reads back what sync_creatives assign set. The 3.3 release notes, What's new, the 3.2 to 3.3 migration guide, and the 3.3 beta page list the removals under "Withdrawn from the deprecated tasks".

  • 18da1a4: Withdraw the 3.3 additions to the deprecated get_products task and the deprecated sync_creatives assignments[] row, and move execution readiness to list_products (adcp#8501, entries 20–25 and the get_products rows of the deprecated-task table). 3.3 adds no field that exists only on a deprecated task. Where a live task lacks the capability, it moves there or waits for 4.0.

    All of these shipped in 3.3 betas and are removed after 3.3.0-beta.5. This is a beta-to-beta change, not a change to a stable release. The betas are immutable, so a seller or SDK built from a beta bundle has the surfaces below to remove.

    Exact-package forecasts on get_products (feat(media-buy): forecast exact packages before booking #8468, beta.1 to beta.5). Removed: refine[].package, media-buy/package-forecast-input.json, the request rule tying package to buying_mode: "refine" and to non-finalize entries, and refinement_applied[] result_product_id, resolved_start_time and resolved_end_time with their applied rule. refinement_applied is optional again for every request. The forecast has no 3.3 home; where it belongs on the compact lifecycle is an open working-group question.

    get_products filters.target_audiences (feat(media-buy): experimental target_audiences in audience_evidence_requirements #8215, experimental, beta.1 to beta.5). Removed from core/product-filters.json, with its dependencies entry. It is planned for list_products offer_filters and buy_products purchases in 4.0 (purchase_target_audiences_required_in_4_0).

    Collection cards on get_products (feat(schema): experimental collection objects in product and proposal responses #8141, experimental, beta.0 to beta.5). Removed: the include_collections request flag, the response-level collections array and its dependencies entry, the collections branch of get-products-rejected.json, and include_collections in the wholesale_feed_version scope. list_products, request_proposals and refine_proposals keep both.

    Execution readiness (feat(schema): add experimental per-account execution readiness #7934, experimental, beta.1 to beta.5) moves to list_products. include_execution_readiness leaves the get_products request and the execution_readiness map leaves its response. Both are added to the open list_products request and response, with the same shape and rules; the map is versioned independently of feed_version and is absent on an unchanged outcome. The media_buy.execution_readiness storyboard now drives list_products. binding_field now names the buy_products paths, purchases[].optimization_goals[].event_sources[].event_source_id and purchases[].catalog_ids[], instead of the legacy create_media_buy packages[] paths, and execution_requirements documents the purchase binding beside the legacy one.

    price_adjustments on get_products pricing options (feat(schema): selection-dependent price_adjustments on fixed-price pricing options #7955, experimental, beta.1 to beta.5). Removed from the cpm, vcpm, cpc, cpcv, cpv, cpp and flat_rate options with their dependencies, along with pricing-options/price-adjustments.json, error-details/price-adjustments-mismatch.json, the product rule that a placement-selection row requires overlay_support.placement_selection, the price_adjustments_resolution verifier constraint on product-purchase.json, and the price-adjustments test vectors. A seller stops listing media_buy.price_adjustments. The design is kept for the canonical pricing option in 4.0 (canonical_price_adjustments_required_in_4_0).

    sync_creatives assignments[] landing_page_url and trackers (feat(creative): support assignment landing page overrides #8180, feat(creative): add assignment-scoped measurement trackers #8220, beta.0 to beta.5). Removed from the deprecated row, which now rejects them by name. The assignment_operations assign operation keeps both.

    The consumed changesets for these PRs stay in .changeset/pre/ as history. The 3.3 release notes, What's new, the 3.2 to 3.3 migration guide, and the 3.3 beta page say what to remove under "Withdrawn from the deprecated tasks".

Patch Changes

  • b195f57: Compliance storyboards now check that sellers never author operator_fee (adcp#8367). media_buy_seller/product_filter_behavior checks get_products pricing_options[].eligible_adjustments[] and pricing_options[].price_breakdown.adjustments[].kind. media_buy_seller/total_budget_redistribution checks create_media_buy packages[].price_breakdown.adjustments[].kind and update_media_buy affected_packages[].price_breakdown.adjustments[].kind. The checks pass when a seller returns no breakdown or eligible_adjustments. They are advisory until runner capability version 17.0.0 and then become required. total_budget_redistribution now declares requires: field_excludes_runner, which the storyboard schema mandates for field_excludes.

  • c951012: Docs: DR-0036 records the decision of the 2026-11-09 working-group session. Schemas are open within a major. A schema is closed only for a structural reason: oneOf branch disjointness, a closed key set or vocabulary, or a signed or binding payload. Opening a 3.x schema that was closed without such a reason is a correction, so 3.3 opens those schemas and a 3.2.x patch does too. Once opened, a schema takes additions in later minors. The versioning page no longer says closed schemas stay closed until the next major. DR-0019 is superseded. DR-0032 and DR-0033, proposed in docs(governance): DR-0032 and DR-0033, revised against DR-0036 #8519 and never ratified, are recorded as withdrawn in favor of the versioning rules. No schema changes.

    Docs: a deprecation needs no minimum notice period before its removal in the next major. A deprecated feature is never removed within the major that deprecated it. The next major may remove it with no minimum notice, because removals are what a major is for. The previous major's support window of at least 12 months after the successor's GA protects implementers. The 6-month deprecation notice is gone from the versioning page, the cadence table, the specification lifecycle, and the pages that cited it. Experimental surfaces keep their 6-week notice within a major. Brian O'Kelley ruled this on 2026-11-10, and it is open for working-group comment on RFC RFC: AdCP 4.0 — a fast, cleanup-first major (scope, principles, schedule) #8756 until 2026-12-04.

  • 5541479: Stop the dependency_impairment and dependency_impairment_cardinality storyboards from failing sellers whose selected format option is not an image format (adcp#8770). Both storyboards send a fixed 300x250 image creative against the first product's first format option. When that option is a display_tag, video_vast or other non-image kind, the creative phases are now skipped instead of failing a seller that correctly refuses an image it does not accept. Image sellers run the storyboards unchanged.

  • 3bb0710: Build legacy inline creative manifests from the captured format's exact required slots, preserving the legacy wire and preflighting both manifests before any purchase.

  • eede511: Loosen seventeen over-specified URL patterns to ^https:// (adcp#8398). Nine attestation URLs (core/attestation-capabilities.json, attestation-evaluation.json, attestation-issuer.json, attestation-reference.json, attestation-subject.json, product-audience-evidence-requirements.json) dropped a pattern that refused userinfo and fragments. Eight reporting URIs (core/reporting-canonical-content-digest.json, reporting-delivery-capabilities.json, reporting-delivery-offering.json, reporting-reliability-statistics.json, reporting-revision.json) dropped a lexical private-address denylist that could not see DNS or redirects. Every value the old patterns accepted still validates. The fetch-time SSRF rules (the attestation fetch contract and safe_schema_fetch) are unchanged, and the descriptions no longer claim the schema enforces them. The origin-shaped patterns, governance/accepted-governance-agents.json, and reference-renderer.source_repository are unchanged.

  • 8f159e4: Gate product_signal_targeting and cross_path_targeting_provenance on wholesale support in both media_buy.buying_modes and signals.discovery_modes. A seller that advertises only brief discovery no longer runs them. Their negative probes now cascade-skip when product discovery fails, instead of sending an unresolved $context.product_id.

  • 9395a3e: Docs: Python adcp 10.0.0b13 is on PyPI, adopting the signed 3.3.0-beta.5 bundle and negotiating only 3.3-beta.5. The 3.3 beta program page, the beta checkpoint table, and Choose your SDK now name it, with its install command and adcp-reporting-storage 0.2.0b3 for Reliable Reporting storage.

  • e64e858: Docs: refresh the 3.3 release notes, What's new, the 3.2 to 3.3 migration guide, and the 3.3 beta program page through 3.3.0-beta.5. Adds beta.4 and beta.5 to the checkpoint and wire-pin tables, with curated sections. Beta.4 covers the reporting-subscription coverage fixes and probe reset, replace that transfers assignment settings, tracker-slot limits, BUDGET_TOO_LOW details, creative.supports_provenance, opportunity on explicit-package buys, undefined-property reporting, and the new storyboards. Beta.5 covers match keys, the stable sales-fixed-rate specialism, and the bundled Public Suffix List. The SDK guidance now records that @adcp/sdk 17.0.0-beta.18 and later and Python adcp 10.0.0b12 support beta.4, and the in-review tables reflect the 3.3.0 milestone as of 2026-11-08.

  • e9c2162: Stop signed functional storyboard requests from exhausting the per-keyid cap that the signed-requests rate_abuse vector grades (adcp#8877). Functional dispatch in test-kits/signed-requests-runner.yaml signed with test-ed25519-2026, the same keyid vector 020-rate-abuse caps at 100 for the test counterparty, so a full compliance run could hit the cap before the signed-requests vectors started and fail them with request_signature_rate_abuse. Functional dispatch now signs with a dedicated test-functional-2026 Ed25519 key that no conformance vector uses, published in the request-signing keys.json and declared in runner_signing_keys. The rate_abuse block now states that agents MAY lower the per-keyid cap to the grading target for the vector 020 keyid (test-ed25519-2026) only, and MUST NOT apply the lowered cap to the functional-dispatch keyid. Sellers that register the runner signing keys individually rather than loading the published keys.json must add test-functional-2026 to their test counterparty. Sellers that configure one global per-keyid cap on their replay store (as the SDK reference stores take, e.g. maxEntriesPerKeyid: 100) must scope the lowered cap to test-ed25519-2026, for example with a keyid-aware wrapper, or functional storyboards hit the cap on test-functional-2026 instead.

  • 9db8225: Docs: the public test agent's opt-in 3.3 preview moves to 3.3-beta.4, the beta that @adcp/sdk 17.0.0-beta.18 and later negotiate. The 3.3 beta program page and the quickstart name the new pin, and the page notes that 3.3.0-beta.5 is published but no SDK negotiates it yet. The preview now follows the beta the current SDK prerelease negotiates rather than the latest published beta. The beta tracker records that supported match keys merged in feat(media-buy): declare supported match keys for cross-publisher frequency capping #8446.

  • 4942cab: Docs: the public test agent's opt-in 3.3 preview moves to 3.3-beta.5, the beta that @adcp/sdk 17.0.0-beta.21 and later negotiate. The 3.3 beta program page and the quickstart name the new pin. The SDK guidance and the beta checkpoint table record that @adcp/sdk 17.0.0-beta.21 and later bundle 3.3.0-beta.5, and that 17.0.0-beta.18 through 17.0.0-beta.20 bundle beta.4. Python adoption of beta.5 is in flight.

  • fc3c5bd: Docs: state the rules for what changes between releases at the top of the versioning page. A minor only adds, a replaced field is emitted alongside its replacement until the next major, and removals and breaking changes happen in a major. A fourth rule keeps a field off a mutating request in a minor when an older seller that ignores it would commit to something different, unless the field ships behind a capability the seller declares. Removes text from that page that told SDKs what to do or described translating between versions, and corrects one sentence in the create_media_buy reference that said new keys could join a closed schema in a minor. Wire behavior is unchanged.

  • 7ec4059: Stop the webhook_emission storyboard from failing sellers whose create_media_buy completes synchronously. When the primary trigger returns the media buy inline, the storyboard now checks that no task webhook arrives for it and skips the emitted-webhook phases. It still grades the webhook-signing JWKS of a synchronous seller that declares webhook_signing.supported: true. Triggers that return submitted, or working without a media_buy_id, are still graded on signed webhook delivery. A working response that carries media_buy_id is classified as synchronous, and its completion webhook fails synchronous_trigger_silence, until the runner reads the task status (Storyboard runner: create_media_buy context extractor records media_buy_id from interim task envelopes adcp-client#3682).

  • 50fafb3: Stop product_coverage_filters and portfolio_routing_scope from failing sellers that declare only brief/refine buying modes. The get_products coverage phase of product_coverage_filters now requires wholesale in media_buy.buying_modes, and its list_products phase runs independently. In portfolio_routing_scope, the wholesale read that checks returned channels against the declared allowlist moves to its own phase, which runs only for sellers that declare wholesale, so brief-only sellers are no longer sent a wholesale request they cannot serve.

@mintlify

mintlify Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
adcp 🟢 Ready View Preview Nov 12, 2026, 9:25 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 9db8225
Prior ref: b7fed8b
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42441664058
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: e64e858
Prior ref: 3737b94
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42445356717
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 4942cab
Prior ref: 74a2802
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42483325870
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 9395a3e
Prior ref: 9329204
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42490862681
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 2877ec0
Prior ref: ff9a8a8
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42504731987
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot
aao-release-bot Bot force-pushed the changeset-release/main branch from ff9a8a8 to 12660a9 Compare November 8, 2026 17:30
bokelley added a commit that referenced this pull request Nov 8, 2026
… snapshots from the Fly image (#8814)

The 3.3.0-beta.6 Version Packages PR (#8801) fails both production
Docker builds: /app measures 7,524 MiB against the 7,424 MiB budget.
The growth is the release itself. Its schema bundle is 144 MiB, and
every file carries a versioned $id, so it cannot be hard-linked to
beta.5. Compliance adds 10 MiB and the archive 27 MiB. Main was already
within about 1 MiB of the budget locally, so the next release had
nowhere to go.

Two runtime retention fixes, with the budget unchanged:

- Protocol tarballs were 934 MiB of the image. #8752 offloaded CDN-verified
  archives only outside the required schema closure, but archive bodies
  have no runtime reader besides the /protocol download route, which
  already redirects offloaded archives to the R2 CDN. Offload every
  versioned archive that R2 discovery lists and whose bytes match. A
  required release's archive that R2 does not list yet, such as the
  release a Version Packages build is cutting, stays local; any other
  missing archive still fails the build. latest.tgz, sidecars and the
  discovery inventory stay local.
- update-release-docs-nav only ever added dist/docs allowlist rules, so
  superseded snapshots (3.1.31, 3.3.0-beta.3, 3.3.0-beta.4) were still
  copied into the image. Regenerate the allowlist from docs.json on every
  release and add a test that fails when the committed .dockerignore
  drifts from navigation.

Released artifacts in Git and on the CDN are unchanged.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: fafe043
Prior ref: 12660a9
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42520030584
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 867fdce
Prior ref: fa0f9a2
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42621216683
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: fc3c5bd
Prior ref: 2f0d61f
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42656743599
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: fad5b30
Prior ref: e8c5e18
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/42668998382
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 50fafb3
Prior ref: 87ee108
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43205195968
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: db87715
Prior ref: 14a37d3
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43213748682
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: d08c827
Prior ref: bd6d45b
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43228448283
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot
aao-release-bot Bot force-pushed the changeset-release/main branch from bd6d45b to cca34b7 Compare November 12, 2026 13:39
@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: b7907ee
Prior ref: cca34b7
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43232010657
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot
aao-release-bot Bot force-pushed the changeset-release/main branch from cca34b7 to 30effde Compare November 12, 2026 14:05
@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 63d996b
Prior ref: 30effde
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43234832859
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot
aao-release-bot Bot force-pushed the changeset-release/main branch from 30effde to f785ebc Compare November 12, 2026 14:19
@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 2dc672e
Prior ref: f785ebc
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43244831691
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: c951012
Prior ref: cfab0d1
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43256658719
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 7dd93fe
Prior ref: edd6cbc
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43286393387
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 18da1a4
Prior ref: e28379d
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43295794405
Do not mark Ready or merge without checking this run and fresh release provenance.

@aao-release-bot

Copy link
Copy Markdown
Contributor Author

HOLD: generated release branch requires human reconciliation/review. Automation is preparing a leased update. The PR must remain Draft.
Tested base: 3deb1cf
Prior ref: 358bd16
Candidate: not pushed
Observed ref: absent/unknown
Workflow: https://github.com/adcontextprotocol/adcp/actions/runs/43302616631
Do not mark Ready or merge without checking this run and fresh release provenance.

This branch was successfully deployed

1 active deployment
staging — 75528d41 Deployed Nov 12, 2026 by mintlify[bot]
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.

0 participants