### Avatars / digital humans — `wai.avatar.pose`, LIVE at /avatar (2026-06-13)

- **Phase 4 complete — digital humans**: motion as instructions. An
  avatar is a **skeletal world** — the worlds container/op-log/ordering/
  sealing/state-hash/receipt-chain, with the `step` reduced to the
  identity. Conformance is **pose-equivalence** (the per-bone local
  transforms hash identically), a special case of replay-equivalence.
- **`wai.world.sim.skeletal0`** (in `wai-rs` `world` feature): a bone is
  a `parent[16] + translation[3] + rotation-quaternion[4] + scale[3]`
  (all `wai.det.fixed64`). Mutations: `CREATE` / `DELETE` /
  `SET_ROTATION` (the animation driver) / `SET_TRANSLATION` / `SET_SCALE`,
  all LWW. **Trig-free floor**: rotations are quaternions and the FK
  composition is `+ − ×` only; axis-angle authoring happens off-line.
  The forward-kinematics → world space and the skinning of a
  `wai.mesh.glb` are presentation (a pure function of the hashed pose),
  never in the hash. Registered + tiered `Lossless`; dispatched in
  `run_sealed_dispatch`.
- **`avatar-conformance/` corpus** + `wai_avatar_vectors gen|verify`: a
  sealed 3-bone arm wave, a sealed 5-bone humanoid pose, and three seeded
  adversarial-arrival shuffles of the arm wave — all converge, all pass.
- **Browser sink — `SkeletalSink` (`wai-web`)** + `/avatar` demo page,
  LIVE: replays a sealed animation in-tab, **re-derives the sealed pose
  hash** (checked against the native corpus and the file's own seal), and
  exposes FK world-space joints + bone segments to draw the skeleton on a
  rotating orthographic canvas with a tick scrubber. wasm pkg uniquely
  named `wai_avatar`.
- **Spec PROMOTED to `extensions/avatars.md`** (site mirror), registered
  in SPEC.md §5 (`wai.avatar.pose`). A moving body joins sight (worlds),
  sound (audio), touch (haptics), and live state (feeds) under one floor.

