Skip to content

Publish bounded semantic snapshots for native accessibility #541

Description

@wieslawsoltes

Parent epic: #262. Also advances nested-webview acceptance in #268. Native peer publication is owned by SceneTech/AppScene#30.

Proven gap

WebScene exposed visual scene state but no bounded, generation-stamped semantic provider that AppScene could project into NSAccessibility, UIA, or AT-SPI peers. The unchanged Code OSS workbench and nested documents therefore lacked a reusable native accessibility handoff.

Scope

  • Add immutable acquire/release semantic snapshot leases.
  • Publish deterministic composed-tree preorder across top and nested documents.
  • Include document/frame/navigation/layout generations, stable semantic IDs, tree indices, roles, computed names/values/descriptions, states, relationships, focus, origins, and transformed bounds.
  • Omit hidden, inert, detached, and non-rendered subtrees while retaining hidden IDREF name sources.
  • Build on demand on the worker and prevent stale in-flight publication after navigation, low memory, or teardown.
  • Keep held leases valid after publication replacement or engine destruction.

Hard bounds

  • 16,384 nodes
  • 256 documents
  • 65,536 relationships
  • 4 MiB UTF-8 arena
  • 64 KiB per computed alternative

Acceptance

  • Additive ABI, documentation, contracts, profile, and focused source regressions are authored.
  • git diff --check passes.
  • Focused execution, package testing, assistive-technology acceptance, and performance measurement run in the deferred validation lane.
  • AppScene#30 consumes snapshots into native platform peers.
  • Follow-up action/edit routing, incremental deltas, and live-region streams are implemented.

No build, test, benchmark, or formatter was executed under the current fast-merge instruction.

Metadata

Metadata

Assignees

No one assigned

    Labels

    vscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integration

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions