Review leftover #17. animate_skyboxes keeps its per-model clocks across frames (a path String is cloned only when a model first shows), poses into reused buffers (SkyRig::pose_into), and re-skins and re-uploads a skinned batch only when its model's pose changed (a generation counter). resolve_camera_skybox compares paths with an allocation-free norm_eq and owns only the winning WMO skybox name. Test: norm_eq agrees with norm. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>