# V6.3 — Shared V412 resolved playback core

Base: V6.2 Frozen Player + V426 Hurdle motion maintenance.

## Change
Exercises 1–7 now import the same resolved playback module: `assets/nexprod/nexprod01-resolved-playback-v412.mjs`. Historical wrapper filenames and resolved motion assets are retained. Only import plumbing and engine metadata changed.

## Parity gate
For each active exercise, the prior playback module and V412 were evaluated over 241 time samples across two loops plus 201 direct phase samples. All assets have phase knots. Maximum phase delta = 0. Maximum root/bone quaternion/scale/position component delta = 0.

## Frozen invariants
No workout travel profile changed. No resolved motion asset changed. No Nex model changed. No camera/runway/UI/player presentation code changed. Hurdle remains on V426 motion asset. Straight Leg March and ATG keep the V6.1 timing profiles.

## Active runtime mapping
1 High Knee Tuck → V412
2 High Knee Run → V412
3 Hurdle Stretch V426 motion → V412
4 Butt Kick Run → V412
5 Figure Fours → V412
6 Straight Leg March → V412
7 ATG Split Squat/Lunge → V412

## Browser QA note
Actual Chromium/WebGL direct-player QA passed for exercises 1 and 3–7 on V412. High Knee Run loads the V412 module and Nex model, but its legacy authoring profile `high_knee_run_ik_v1` is still marked `NEX_NATIVE_INTERNAL_DATA_AVAILABLE__REVIEW_REQUIRED`, so the HTML wrapper stops at the approval gate before applying the resolved asset. The same gate block was reproduced against the untouched V6.2/V390 wrapper, so this is pre-existing and not a V412 regression. The resolved V390 asset itself has exact numeric playback parity on V412.

No approval state was changed in V6.3. That should be a separate explicit maintenance decision rather than being hidden inside playback homogenization.
