-
Notifications
You must be signed in to change notification settings - Fork 2.2k
fix(spec): Clarify versioning strategy and client responsibilities in protocol specification #1259
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
… protocol specification
Summary of ChangesHello @darrelmiller, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request refines the A2A protocol specification by providing a more detailed and structured explanation of its versioning strategy. It clearly delineates the responsibilities of clients and servers regarding protocol version negotiation, error handling, and introduces guidance for client fallback mechanisms and tooling support to enhance compatibility and robustness across different protocol versions. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request significantly clarifies the A2A protocol's versioning strategy by restructuring the documentation and adding explicit responsibilities for clients and servers, as well as guidance on client fallback and tooling support. The changes are a great improvement to the specification. I've added a couple of minor suggestions to further improve the clarity of the wording in the new sections.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
|
/vote |
|
DEPRECATED Vote created@darrelmiller has called for a vote on The members of the following teams have binding votes:
Non-binding votes are also appreciated as a sign of support! How to voteYou can cast your vote by reacting to
Please note that voting for multiple options is not allowed and those votes won't be counted. The vote will be open for |
Vote statusSo far Summary
Binding votes (2)
|
Vote statusSo far Summary
Binding votes (2)
|
Vote statusSo far Summary
Binding votes (2)
|
Vote statusSo far Summary
Binding votes (2)
|
2 similar comments
Vote statusSo far Summary
Binding votes (2)
|
Vote statusSo far Summary
Binding votes (2)
|
Vote closedThe vote did not pass.
Summary
Binding votes (2)
|
|
/vote |
Vote created@amye has called for a vote on The members of the following teams have binding votes:
Non-binding votes are also appreciated as a sign of support! How to voteYou can cast your vote by reacting to
Please note that voting for multiple options is not allowed and those votes won't be counted. The vote will be open for |
Vote statusSo far Summary
Binding votes (2)
|
Vote statusSo far Summary
Binding votes (2)
|
Vote statusSo far Summary
Binding votes (3)
|
2 similar comments
Vote statusSo far Summary
Binding votes (3)
|
Vote statusSo far Summary
Binding votes (3)
|
Vote statusSo far Summary
Binding votes (4)
|
10 similar comments
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
Vote statusSo far Summary
Binding votes (4)
|
| ### 3.6 Versioning | ||
|
|
||
| The specific version of the A2A protocol in use is identified using the `Major.Minor` elements (e.g. `1.0`) of the corresponding A2A specification version. Patch version numbers do not affect protocol compatibility, SHOULD NOT be included in requests and responses, and MUST not be considered when clients and servers negotiate protocol versions. | ||
| The specific version of the A2A protocol in use is identified using the `Major.Minor` elements (e.g. `1.0`) of the corresponding A2A specification version. Patch version numbers used by the specification, do not affect protocol compatibility. Patch version numbers SHOULD NOT be used in requests, responses and Agent Cards, and MUST not be considered when clients and servers negotiate protocol versions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Patch version numbers SHOULD NOT be used in requests, responses and Agent Cards, and MUST not be considered when clients and servers negotiate protocol versions.
From a security perspective it could be useful for a client to know the exact patch version the server is running assuming that we use patch versions to include that kind of bug fix in the spec.
So perhaps:
Patch version numbers SHOULD NOT be used in requests and Agent Cards, and MUST not be considered when clients and servers negotiate protocol versions. Responses should include the complete negotiated version number providing clients information about the exact protocol version running on the Agent side.
Actually as a separate issue I don't want to derail this PR, this makes me wonder whether we should allow clients to specify a minimum patch version requirement to ensure they can say something like >=1.0.4 (where 1.0.4 contains a security fix).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In previous discussions on this topic, we had said that SDKs would leverage the patch version to identify updates to the SDK. e.g. Python SDK might be at 1.0.34 and .NET at 1.0.11 and they both support the 1.0 protocol.
If we allow using the specification version to indicate security fixes, then it is going to get confusing to say Python SDK 1.0.35 includes Specification 1.0.1 security fix. I would guess most security fixes are going to be in the SDK rather than the specification, and if there is a security bug in the specification that needs closing, then I'm fine with us using a minor version for that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does that mean that the spec should have no patch versions for any reason?
I'm not 100% sure keeping the SDK's version in sync with the spec's version is a good idea. In python for example the ecosystem uses semantic versioning pretty heavily to indicate bug fixes only, compatible and incompatible changes. Many people will pin to a Major.Minor but allow for patch releases through ~ operator in requirements. Using patch number for all releases breaks that assumption and also will prevent SDKs from making breaking API changes without a major spec release happening at the same time.
Also if SDKs start to support multiple versions of the spec so that clients can talk to agents on different versions, having the SDK version in sync with the spec adds to the confusion. i.e. Python SDK 1.0.34 supports 1.0 and 0.3 but Python SDK 2.0.3 supports 2.0 and 1.0 but not 0.3.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As discussed in the TSC call, patch releases for the spec repo should only be for non-functional changes to the spec text / comments in the proto etc. As soon as functional changes to the a2a.proto are made this requires a minor release. Do we need to put this in the spec somewhere?
Co-authored-by: Sam Betts <[email protected]>
Vote statusSo far Summary
Binding votes (4)
|
| User | Vote | Timestamp |
|---|---|---|
| Tehsmash | In favor | 2026-01-05 13:18:59.0 +00:00:00 |
Vote statusSo far Summary
Binding votes (4)
|
| User | Vote | Timestamp |
|---|---|---|
| Tehsmash | In favor | 2026-01-05 13:18:59.0 +00:00:00 |
Fixes #1258
High level summary of changes: