gamestruct v0.1

One semantic tree. Two lanes. Four primitives.

A UI that is accessible to a person using a screen reader and a UI that is accessible to a software agent are the same UI. gamestruct is the small, dependency-free contract that serves both from one description: named, role-tagged nodes with stable handles, a linear traversal, and an event stream.

# one tree, both audiences
human.a11yDump(bridge)   # what a screen reader reads
agent.toolCatalog(bridge)  # what an MCP client auto-wires
await bridge.act('ui:start') # one code path