Version Packages#4486
Merged
Merged
Conversation
4 tasks
9640d8b to
96c5779
Compare
96c5779 to
d29f5c1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to 3.0.x, this PR will be updated.
Releases
adcontextprotocol@3.0.13
Patch Changes
d35ccf0: Backport MCP transport clarification to
v3_envelope_integritystoryboard (3.0.x).Adds the MCP-specific note (already present on main) explaining that
statusmustappear at the top level of
structuredContentand is distinct from thetask-body schema (
get-adcp-capabilities-response.json). Addresses theconfusion reported in v3_envelope_integrity/no_legacy_status_fields expects presence of status field on get_adcp_capabilities envelope, but SDK 7.7.0 does not inject one — schema/storyboard drift #4832:
response_schemapasses because the task schemaintentionally omits protocol envelope fields;
envelope_field_presentforstatusis the separate, correct enforcement layer. Also updates theexpectedblock header from "Response envelope:" to "Response envelope (all transports):"
to match main-branch wording.
The
field_absentTODO comments fortask_status/response_statusare unchanged —those await
field_absentrunner support in adcp-client (tracked separately).The SDK gap (SDK 7.7.0 not emitting
statusonget_adcp_capabilities) is asibling-repo concern also tracked separately.
b2f9ce3: Docs: add the now-required
account.supported_billingblock to the fourget_adcp_capabilitiesexample JSON blocks that declaremedia_buysupport.
Since fix(schema): make account.supported_billing conditional on media_buy protocol #3750 (
fix(schema): make account.supported_billing conditional on media_buy protocol), the response schema requiresaccount.supported_billingwhenever
supported_protocolscontainsmedia_buy. Four illustrativeexamples in the docs (
creative/sales-agent-creative-capabilities.mdx,media-buy/specification.mdx,reference/migration/channels.mdx,reference/migration/geo-targeting.mdx) were not updated alongside theschema and have been failing CI's schema validation step on
3.0.xHEAD,blocking every other patch PR against the branch.
Each example now includes
"account": { "supported_billing": ["operator", "agent"] }, matching the pattern already used indocs/building/integration/accounts-and-agents.mdx. Documentation only —no protocol behavior change.
b605ef8: IdentityMatch & frequency capping architecture, with the wire-spec change and the data-flow boundary contract landing as authoritative protocol docs. Counting and policy live in the buyer's impression tracker; the IdentityMatch service consumes only cap-fire events at the boundary.
Wire spec changes (
identity-match-response.json):serve_window_sec(integer, 1–300, default 60) — per-package single-shot fcap window. After serving the user one impression on each eligible package within this window, the publisher MUST re-query Identity Match before serving from those packages again. Not a router response cache TTL.ttl_sec. Originally documented as a router cache TTL but operationally functioned as a per-package serve throttle. TMP is pre-launch (experimental, pre-3.0.0 GA) and not subject to deprecation cycles, so the field is removed outright.Doc updates:
docs/trusted-match/specification.mdx— addsserve_window_secfield, removesttl_sec, adds normative conformance invariants for IdentityMatch eligibility (audience intersection; cap-state presence check; active state; audience freshness). Updates the caching section for the new contract.docs/trusted-match/identity-match-implementation.mdx(new page) — frequency-cap data flow (boundary contract): the cap-fire event the impression tracker writes into the IdentityMatch cap-state store, and how the IdentityMatch service consumes it at query time. The protocol does not constrain how the impression tracker counts impressions, evaluates windows, or decides when a cap fires — those concerns live entirely in the buyer's impression-tracking pipeline.docs/trusted-match/buyer-guide.mdx— updates frequency-cap management to reflect the impression-tracker / IdentityMatch split, and the serve-window contract section.docs/trusted-match/migration-from-axe.mdx— adds OpenRTB 2.6User.eids[]cross-walk for buyers bridging from OpenRTB-shaped pipelines.Three-layer model:
adcp-go/targeting/fcap(Valkey 9 hashes with HSETEX).Cap-state store surface:
RecordCap(userIdentity, fields, expireAt)andIsCapped(userIdentity, field), wherefieldis{seller_agent_url, package_id}. v1 keys cap-state at(user_identity, seller_agent_url, package_id); broader-dimension caps (advertiser, campaign, creative, line item) are a future extension to the boundary contract.Architecture history preserved at
specs/identitymatch-fcap-architecture.md— captures design decisions, deferred security/privacy follow-ups, the rollout plan, and consolidated Slack/PR-review threads. Earlier iterations of the design (counter-based exposure tracking, log-based tracking withimpression_iddedup,fcap_keyslabel model) were unwound — counting, dedup, and policy evaluation depend on buyer-internal concerns the protocol shouldn't constrain.All TMP surfaces remain
x-status: experimental. Per the experimental-status contract, fields on this surface are not subject to deprecation cycles until 3.0.0 GA.Tracked deferred follow-ups (not in this PR):
hashed_emailin TMPX leak surfacepackage_ids[]