Skip to content

docs(spec): document multi-version surface updates and catalog protocol independence - #2375

Open
jacobsimionato wants to merge 5 commits into
a2ui-project:mainfrom
jacobsimionato:versioning-spec-updates
Open

docs(spec): document multi-version surface updates and catalog protocol independence#2375
jacobsimionato wants to merge 5 commits into
a2ui-project:mainfrom
jacobsimionato:versioning-spec-updates

Conversation

@jacobsimionato

@jacobsimionato jacobsimionato commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Summary & Rationale

Updates the A2UI v1.0 protocol specification (specification/v1_0/docs/a2ui_protocol.md) to formally document core versioning and compatibility principles:

  1. Multi-version surface updates: A single surface created under one protocol version (e.g., v0.9) can be updated over its lifetime by messages expressed in a different protocol version (e.g., v1.0). SDKs convert incoming wire payloads across versions into a universal internal state representation (SurfaceModel), enabling long-lived or single-surface views (such as dynamic dashboards) to evolve seamlessly across protocol upgrades.
  2. Catalog protocol independence: Catalogs are expressed in a JSON format associated with a specific catalog description version (protocolVersion in catalog_definition.json), but once loaded into an SDK they are converted to a universal in-memory representation. This decouples catalog definitions from the wire message protocol version, allowing a catalog written for one protocol version (e.g., v0.9) to be targeted by messages expressed in a different protocol version (e.g., v1.0) without requiring re-definition for each protocol upgrade.

Proposal doc: go/a2ui-versioning

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

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 introduces a comprehensive proposal for the A2UI Protocol Versioning and Compatibility Plan, outlining independent wire protocol versions mapping to a universal in-memory representation. It also updates the protocol documentation to detail multi-version surface updates and catalog protocol independence. The review feedback highlights an inconsistency in the proposed JSON schema for renderer capabilities, suggesting the use of patternProperties to enforce version key patterns instead of additionalProperties.

Comment thread specification/proposals/versioning_plan.md Outdated
@jacobsimionato
jacobsimionato requested a review from nan-yu August 24, 2026 11:29
@jacobsimionato
jacobsimionato marked this pull request as ready for review August 24, 2026 11:30

#### Catalog protocol independence

Component catalogs are expressed as JSON catalog definition documents formatted according to a specific catalog description version (specified by `protocolVersion` in `catalog_definition.json`). However, the content of a catalog definition is not considered to be tied to a specific protocol version. A catalog originally configured for one protocol version (e.g., `v0.9`) can be targeted by wire messages expressed in a different protocol version (e.g., `v1.0`) without needing to redefine or duplicate the catalog for each protocol version upgrade.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if a catalog references v0.9 common_types? It feels problematic to re-target the catalog to v1.0 protocol.

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.

2 participants