Reading the groups. Foundation crates parse the two file formats and never depend on the logic above them; the diagnostics / generation crates read both and write only Unity YAML; the runtime rig and OSC crates are the only place glam is allowed; the surface crates (cli, mcp, web-analyzer) expose the same graph three ways.

Foundation & models

cargo build --workspace cargo tree -p avatar-cli -e normal | grep -c glam # the glam-confinement invariant

Diagnostics, generation & migration

Runtime rig layer

The "load and drive a rig at runtime" foundation, renderer-agnostic. glam (f32) is confined to pose/input/gltf/render — never the lint/osc/cli graph.

OSC runtime

App & agent surface