You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
docs: add MIGRATION_v8_to_v9.md covering behavior changes not in the topic guides #1440
9.0's breaking changes are documented across topic guides (docs/types-9-migration.md, docs/reporting-caller-ownership-migration.md, docs/canonical-format-kinds-migration.md, docs/request-signing-migration.md). There is no top-level MIGRATION_v8_to_v9.md, which every earlier major has had (up to MIGRATION_v7_to_v8.md). Some changes that broke or nearly broke a production seller aren't in any of the guides.
Behavior changes we'd like called out in one place
Credential carriers (bug(auth): MCP leg accepts conflicting Authorization and alias tokens that the A2A leg rejects as ambiguous #1305). On the MCP leg, 8.x read the first Authorization: Bearer and fell back to a legacy alias such as x-adcp-auth otherwise. 9.0 inspects every carrier and answers 401 when any is empty or malformed, or when tokens differ. Requests that authenticated on 8.x now fail: a Basic or bare-token Authorization next to a valid x-adcp-auth, an empty x-adcp-auth next to a valid Bearer, and repeated headers with different tokens. (We shipped a log-only audit to measure this before upgrading.)
A2A Host allowlist defaults to loopback and now returns 421 for unlisted hosts. Agent-card discovery is included.
Origin enforcement now covers discovery. See the separate issue on the agent card returning 403.
Strict bool/int/number validation and format: uri/hostname checks on inbound requests. Lax payloads that 8.x coerced now return ValidationError.
Generated validators reject documents their schemas forbid: for example FrequencyCap() with no field group, or CreateMediaBuyRequest without packages or a proposal.
Reporting caller ownership requires a schema migration before the new version starts. This means planning a deploy, not just upgrading the package.
Ask
Add MIGRATION_v8_to_v9.md as the index: one line per breaking change, linking to the topic guides, plus the items above that no guide covers yet.
docs-expert: Additive and non-breaking, format fits the established pattern — but docs/canonical-format-kinds-migration.md and docs/types-9-migration.md §6 contradict each other on format_kind treatment; the index can't safely link both until that's resolved.
My take: Both blocking concerns are real. The format_kind contradiction needs to be resolved before the index links to both guides, and a credential-carriers entry that only says "this now 401s" without telling integrators what to change is the most hazardous kind of migration note.
Questions:
format_kind contradiction:docs/canonical-format-kinds-migration.md describes format_kind as a closed CanonicalFormatKind enum in 9.0 (unknown kinds rejected, is comparisons work), while docs/types-9-migration.md §6 says 9.0 makes format_kind a bare str everywhere (unknown kinds retained, is comparisons break). Which guide is correct, or do they describe different subpopulations of fields? The index needs to link one or both accurately, and at least one may need updating before this ships.
Credential carriers migration path (bug(auth): MCP leg accepts conflicting Authorization and alias tokens that the A2A leg rejects as ambiguous #1305): The issue body explains what 9.0 rejects (mixed carriers, empty x-adcp-auth alongside a valid Bearer, disagreeing tokens), but not what an integrator should actually do. For a seller that was sending both Authorization: Bearer and x-adcp-auth in 8.x: what's the correct 9.0 migration? Remove the legacy header? Configure a single authoritative carrier? A separate docs/credential-carriers-migration.md topic guide (following the pattern of the other v9 guides) would cover this adequately; otherwise the index entry should include the fix, not just the failure mode.
Summary
9.0's breaking changes are documented across topic guides (
docs/types-9-migration.md,docs/reporting-caller-ownership-migration.md,docs/canonical-format-kinds-migration.md,docs/request-signing-migration.md). There is no top-levelMIGRATION_v8_to_v9.md, which every earlier major has had (up toMIGRATION_v7_to_v8.md). Some changes that broke or nearly broke a production seller aren't in any of the guides.Behavior changes we'd like called out in one place
Authorization: Bearerand fell back to a legacy alias such asx-adcp-authotherwise. 9.0 inspects every carrier and answers 401 when any is empty or malformed, or when tokens differ. Requests that authenticated on 8.x now fail: aBasicor bare-tokenAuthorizationnext to a validx-adcp-auth, an emptyx-adcp-authnext to a valid Bearer, and repeated headers with different tokens. (We shipped a log-only audit to measure this before upgrading.)format: uri/hostnamechecks on inbound requests. Lax payloads that 8.x coerced now returnValidationError.FrequencyCap()with no field group, orCreateMediaBuyRequestwithout packages or a proposal.Ask
Add
MIGRATION_v8_to_v9.mdas the index: one line per breaking change, linking to the topic guides, plus the items above that no guide covers yet.