Skip to content

fix(spec-v1.0): remove surfaceProperties from v1.0 specification (#2126) - #2129

Merged
jacobsimionato merged 5 commits into
a2ui-project:mainfrom
jacobsimionato:fix/issue-2126-remove-surface-properties
Jul 31, 2026
Merged

fix(spec-v1.0): remove surfaceProperties from v1.0 specification (#2126)#2129
jacobsimionato merged 5 commits into
a2ui-project:mainfrom
jacobsimionato:fix/issue-2126-remove-surface-properties

Conversation

@jacobsimionato

Copy link
Copy Markdown
Collaborator

Summary

Removes surfaceProperties from the A2UI v1.0 protocol specification, catalog definitions, and documentation, cleanly separating component layout from branding.

Changes

  • Catalog Definitions (catalog_definition.json, catalogs/basic/catalog.json, test/testing_catalog.json): Removed surfaceProperties schema definitions from $defs.
  • Envelope Schema (agent_to_renderer.json): Removed the surfaceProperties property from CreateSurfaceMessage.
  • Documentation (a2ui_protocol.md, evolution_guide.md): Removed all references, examples, and descriptions of surfaceProperties. Updated the evolution guide to indicate that theme and primaryColor were removed rather than replaced.
  • Evaluation & Validation (eval/src/types.ts, eval/src/validator.ts): Removed surfaceProperties from CatalogSchema and from the allowed properties in validateCreateSurface.
  • Tests: Deleted surface_properties_validation.json and verified all 134 remaining v1.0 specification test cases pass cleanly.
  • Coding Agent Log (CODING_AGENT_LOG.md): Updated activity log with completed tasks and test results.

Closes #2126

TAG=agy
CONV=564f1e1b-9755-4c91-a59a-e77c8c281834

…ect#2126

Initialize CODING_AGENT_LOG.md to track core actions and progress toward resolving issue a2ui-project#2126, along with bin/gh wrapper script for restricted GitHub CLI interactions.
…i-project#2126)

## Summary
Removes `surfaceProperties` from the A2UI v1.0 protocol specification, catalog definitions, and documentation, cleanly separating component layout from branding.

## Changes
- **Catalog Definitions (`catalog_definition.json`, `catalogs/basic/catalog.json`, `test/testing_catalog.json`)**: Removed `surfaceProperties` schema definitions from `$defs`.
- **Envelope Schema (`agent_to_renderer.json`)**: Removed the `surfaceProperties` property from `CreateSurfaceMessage`.
- **Documentation (`a2ui_protocol.md`, `evolution_guide.md`)**: Removed all references, examples, and descriptions of `surfaceProperties`. Updated the evolution guide to indicate that `theme` and `primaryColor` were removed rather than replaced.
- **Evaluation & Validation (`eval/src/types.ts`, `eval/src/validator.ts`)**: Removed `surfaceProperties` from `CatalogSchema` and from the allowed properties in `validateCreateSurface`.
- **Tests**: Deleted `surface_properties_validation.json` and verified all 134 remaining v1.0 specification test cases pass cleanly.
- **Coding Agent Log (`CODING_AGENT_LOG.md`)**: Updated activity log with completed tasks and test results.

Closes a2ui-project#2126

TAG=agy
CONV=564f1e1b-9755-4c91-a59a-e77c8c281834

@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 removes surfaceProperties from the v1.0 specification, including its definitions in JSON schemas, documentation, TypeScript validator types, and test cases. While the documentation has been updated in several places, a review comment points out that the 'Surface Properties' section at the end of a2ui_protocol.md was missed and should also be removed to ensure complete cleanup.

- `catalogId` (string, optional): A string that uniquely identifies the default catalog (components and functions) used for this surface. Note that `catalogId` is a string identifier, not a resolvable URI; while it is conventionally formatted as a URI (e.g., `https://mycompany.com/1.0/somecatalog`) to avoid naming collisions across organizations, it does not need to point to any deployed resource or downloadable file. Components and function calls on this surface that do not explicitly specify their own `catalogId` will use this surface-level default `catalogId`.

- `surfaceProperties` (object, optional): A JSON object containing surface properties (e.g., `agentDisplayName`) defined in the catalog's surfaceProperties schema.
- `sendDataModel` (boolean, optional): If true, the renderer will send the full data model of this surface in the metadata of every message sent to the agent (via the Transport's metadata mechanism). This ensures the surface owner receives the full current state of the UI alongside the user's action or query. Defaults to false.

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.

medium

While surfaceProperties has been removed from the createSurface properties list here, the Surface Properties section at the end of this document (lines 1046–1059) was not removed. It still describes iconUrl and agentDisplayName as surface properties. Please remove that section to fully complete the removal of surfaceProperties from the documentation.

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.

Oh, yes, that seems like it should have been updated a while ago for the names, but now should be entirely removed.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Done! Entirely removed the Surface Properties section from a2ui_protocol.md.

},
},

// Rule 1 & Rule 2: $defs is restricted strictly to surfaceProperties, anyComponent, and anyFunction.

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.

Are the "Rule 1 & Rule 2" callouts adding anything to this doc? And are they actually still pointing to the right rules? I'm wondering if saying the rule number just adds maintenance overhead and confusion or if they're actually helpful.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Good point — the rule numbers were just adding maintenance overhead and potential confusion. I've removed all // Rule X: and // Rule X & Rule Y: numbering prefixes from the comments in the JSONC schema example in a2ui_protocol.md, leaving only the descriptive explanations.

- Fully remove the Surface Properties section from a2ui_protocol.md

- Remove 'Rule X:' number prefixes from comments in the JSONC schema template in a2ui_protocol.md to reduce maintenance overhead and improve clarity
@jacobsimionato
jacobsimionato enabled auto-merge (squash) July 31, 2026 07:20
@jacobsimionato
jacobsimionato merged commit a06b22b into a2ui-project:main Jul 31, 2026
24 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in A2UI Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE]: Remove surfaceProperties from the v1.0 specification

3 participants