Skip to content

Remove legacy bare-key fallback for v1.0 component envelope fields #4082

Open

Description

@gspencergoog

Summary

Remove the legacy bare-key fallback for v1.0 component envelope fields once all known v1.0 producers emit only the @-prefixed names.

Background

#4037 renamed the v1.0 component envelope fields to @catalogId, @metadata, @accessibility, and @checks, so they no longer collide with custom catalog properties of the same bare name (#4012, #1376). #4044 switches the specification, catalogs, agent SDKs, and conformance suites to emit only the @ names.

During the transition, the core SDKs still accept the legacy bare catalogId, metadata, accessibility, and checks on v1.0 components when the component schema doesn't declare a custom property with that name. This keeps v1.0 payloads written before the rename working while producers move to the new names.

What to remove

On v1.0 surfaces only (v0.8, v0.9, and v0.9.1 are unaffected):

  • TypeScript: the bare-key branch in splitComponentEnvelope and componentMixinLayout (typescript/core/web_core/src/catalog/component_envelope.ts), and the bare accessibility and checks mirrors in GenericBinder and the host accessibility helpers.
  • Python: the legacy fallback in get_custom_envelope_properties (python/a2ui_core/src/a2ui/core/catalog/catalog.py), the MessageProcessor normalization, and the bare checks handling in the node resolver and generic binder.
  • Dart: the legacy branch in _normalizeV1Component (dart/a2ui_core/lib/src/processing/processor.dart) and the matching catalog helpers.
  • Swift: the bare-key branch in ComponentEnvelope (swift/core/Sources/A2UICore/Validation/ComponentEnvelope.swift), the bare checks alias in NodeResolver.cachedSchema, and the bare checks path in PayloadValidator.schemaInstance.
  • Agent SDKs: the bare-key reading in the Express, Atom, and Elemental decompilers (Python, TypeScript, Dart).
  • Conformance: turn the "legacy bare key on v1.0" cases into rejection cases, and drop them from the v0.9-lowered runners' v1.0-only lists.

After removal, a bare catalogId, metadata, accessibility, or checks on a v1.0 component is an ordinary component property, validated against the component schema like any other.

When

After the known v1.0 producers have moved to the @ names. Each SDK's envelope helper has a TODO pointing at this issue.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions