FOUNDATIONS / COMPOSITIONGN / 02
Primitive anatomy
A small semantic tree coordinates selection and intent. Geometry, materials, camera, and lighting remain project-owned.
Compose behavior, not markup.
Each primitive owns one responsibility. Adapters preserve these relationships even when their framework syntax differs.
- Spatial.Root
- Owns item order, selected value, orientation, and loop policy.
- Spatial.Scene
- Exposes the current snapshot to a project-owned renderer host.
- Spatial.Collection
- Owns listbox focus, active-descendant state, and keyboard intent.
- Spatial.Item
- Maps one unique value inside a collection to one spatial object.
- Previous / Next
- Move through valid items while respecting disabled boundaries.
One selected value.
Pointer, drag, wheel, and keyboard input all request changes through the same store. The renderer never creates a second source of truth.
RULE 01
If a scene can be selected with a pointer, its equivalent semantic item must expose the same unique value and state inside Spatial.Collection.
Spatial does not mean inaccessible.
The collection keeps an active option discoverable, routes Home, End, and axis-specific arrow keys through core helpers, and mirrors state with stable data-gnomon-* attributes.