8bc7acbd14
Extract apply_skeleton_joints() as a pure module-level function that copies prev_arr (or zeros) and writes a new array, never mutating the old one. The TAG_SKELETON handler now stores the new array under the state lock, so readers that captured a reference to the previous array (multi.py shallow-copy + ArkitFuse.apply outside the lock) always see a complete, consistent snapshot — eliminating the B4 tearing race. 6 new tests cover: shape, identity (is not), value preservation for invalid joints, value application for valid joints, wrong-shape reset, and no-mutation of prev_arr.