test(a2a): 1.0-pinned-to-0.3 reverse e2e + v4.0→v4.1 migration doc#268
Closed
test(a2a): 1.0-pinned-to-0.3 reverse e2e + v4.0→v4.1 migration doc#268
Conversation
…n guide Ships two ready items from issue #263 (A2A 1.0 follow-ups): 1. Adds `test_v10_client_pinned_to_v03_against_dual_server` and `test_v10_client_pinned_to_unadvertised_version_raises` to `tests/integration/test_a2a_wire_compat.py`. The existing suite covered 0.3 client → 1.0 server (hand-crafted JSON-RPC). These cover the reverse — our 1.0 Python client with `force_a2a_version="0.3"` routed through `_filter_card_to_version` and `ClientFactory` transport negotiation against the same dual-advertising server fixture. Purely additive; reuses the proven uvicorn contextmanager. 2. Adds `MIGRATION_v4_0_to_v4_1.md` documenting the three subclasser-facing breakages that landed in PR #261 without a dedicated migration note: `ServerError` → `A2AError`, `get_agent_info()` dropping `adcp_version` / `protocols_supported`, and the `a2a.types` Pydantic → protobuf shift. Mirrors the `MIGRATION_v3_to_v4.md` pattern (named migration files, not CHANGELOG edits — release-please owns CHANGELOG.md). Items 1, 2, 3, 5 of #263 remain open pending cross-repo docs alignment (wrapper policy, webhook envelope) or a maintainer call on whether flipping REJECTED → FAILED classification is acceptable. Author signaled revisiting once a2a-sdk 1.0.1 ships upstream. Refs #263 Session: https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID}
Contributor
IPR Policy Agreement RequiredThank you for your contribution! Before we can accept your pull request, you must agree to our Intellectual Property Rights Policy. By making a Contribution, you agree that:
To agree, please comment below with the exact phrase: You can read the full IPR Policy here. I have read the IPR Policy Brian O'Kelley (via Claude Code) seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. |
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.
Summary
Ships two ready items from #263 (A2A 1.0 follow-ups). The other three items remain open on the parent pending cross-repo alignment or a maintainer call — see the triage comment on #263 for the breakdown.
tests/integration/test_a2a_wire_compat.pynow covers 1.0 Python client → 0.3 JSON-RPC interface end-to-end, viaforce_a2a_version="0.3"against the same dual-advertising server fixture. Complements the existing 0.3-client → 1.0-server test. Also adds a failure-path guard thatforce_a2a_version="9.9"raisesADCPConnectionErrorloudly instead of dying deep in the SDK.MIGRATION_v4_0_to_v4_1.mddocumenting the three subclasser-facing breakages introduced by PR feat(a2a): migrate to a2a-sdk 1.0 with 0.3 wire-compat shim (Release-As: 4.1.0) #261:ServerError→A2AError,get_agent_info()droppingadcp_version/protocols_supported, and thea2a.typesPydantic → protobuf shift. Follows theMIGRATION_v3_to_v4.mdpattern (a named migration file is the grep-able artifact subclassers actually find, vs. a hand-edited CHANGELOG entry that release-please would clobber).Deferred to parent issue
adcontextprotocol/adcpbranchbokelley/a2a-1.0-update. Flipping Python is a breaking change for buyers connected to ADK-backed sellers; soften-docs path is author's lean.StreamResponsewrapping): blocked on A2A 1.0 §4.3.3 re-read —StreamResponseis plausibly the streaming-transport frame discriminator, not a webhook envelope, in which case bareTaskemission is correct._process_task_responsetreats both as interimTaskStatus.SUBMITTED— contradicts the_NONTERMINAL_TASK_STATESdocstring which calls REJECTED terminal. Fixing the classification is arguably correctness, but flipsstatus == SUBMITTEDbranches toFAILEDfor any caller in the wild. Maintainer call.What tested
pytest tests/integration/test_a2a_wire_compat.py -v→ 6 passed (4 existing + 2 new).ruff check src/ tests/integration/test_a2a_wire_compat.py→ clean.mypy tests/integration/test_a2a_wire_compat.py→ clean.Expert consensus
ad-tech-protocol-expert: reverse e2e is SAFE-TO-SHIP (purely additive, exercises publicforce_a2a_versionpin).code-reviewer: reverse test ships now (reuses proven fixture, no flakiness risk); CHANGELOG 4.1.0 hand-edit rejected (release-please owns that file) — migration doc is the right primitive.dx-expert: subclassers hitImportError/KeyErrorand grep the repo before reading CHANGELOGs — a named migration file is the artifact coding agents and humans reliably find.Refs #263
Session: https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID}
Generated by Claude Code