# V390 — Video-timed High Knee Run

## Outcome

`high-knee-run` now uses the user-provided 2.24 s exercise film as timing and form authority. The packaged film is mapped through the normal exercise-video service, and Nex playback uses a baked resolved asset with six alternating knee drives.

## Motion contract

- Knee drives in the canonical sagittal `+Z` direction with no intended lateral excursion.
- Peak knee is near hip height; lower leg hangs below the knee.
- Opposite arm drives forward with a bent elbow; the other arm travels back.
- Six steps per 2.24 s source loop (`0.373333 s` per step).
- Production playback uses 720 baked frames and zero live solver calls.

## Source and mapping

- Exercise: `high-knee-run`
- Profile: `high_knee_run_ik_v1`
- Source film: `assets/media/exercises/high-knee-run/source/NEXT11_dynamic_warmup_ijj7TD0DA6Q_high-knee-run.mov`
- Playback film: `assets/media/exercises/high-knee-run/high-knee-run.mp4`
- Resolved animation: `assets/nexprod/resolved/high-knee-run-v390-video-timed.resolved.json`
- Player: `assets/nexprod/nexprod01-resolved-player-v390.html`

## QA

- Build gate: PASS.
- Integration gate: PASS.
- Actual Nex FBX CPU skinned-mesh render: PASS, two loops at 24 fps.
- Human visual acceptance: pending.
- Chromium/WebGL parity is not claimed.
- MediaPipe execution was blocked by environment policy; poses were read frame-by-frame from the film and are not represented as MediaPipe-derived data.

## Re-run

```bash
node tools/nexprod/build_v390_video_timed_high_knee_run.mjs .
node tools/nexprod/render_v390_high_knee_run_cpu_skinned_mesh_temporal_qa.mjs . diagnostics/v390/V390_HIGH_KNEE_RUN_CPU_SKINNED_MESH_TWO_LOOP_QA.mp4 24 2
node tools/nexprod/check_v390_high_knee_run.mjs .
```
