# NEXT11 V425 Dynamic Warmup App V6.4 — Exercise 8 Reverse Lunges

## Scope
V6.4 starts from `NEXT11_V425_DYNAMIC_WARMUP_APP_V6_3_SHARED_V412_PLAYBACK_FULL_ROOT.zip` and adds exercise 8 (`reverse-lunges`) to the frozen Dynamic Warmup player flow. No new feature, solver, rig, resolved motion, model, camera core, runway core, or UI core was introduced.

## Exercise 8 changes
- Added `assets/nex/workout_profiles/dynamic_warmup/ex08_reverse-lunges.json`.
- Rebuilt the generated travel registry from source profiles.
- Changed only the Reverse Lunges wrapper import from historical V405 playback to the already-locked shared `nexprod01-resolved-playback-v412.mjs`.
- The production motion remains `reverse-lunges-v425-contact-corrected.resolved.json`, byte-identical to V6.3.
- Resolved loop authority: 5.2 s.
- Travel: 1.0 m per two-side loop, 0.5 m per completed reverse-lunge repetition, only during rise/return windows.

## QA result
PASS for the deterministic real-Nex path.

- Actual Nex FBX + V425 Reverse Lunges resolved frames + shared V412 playback rendered for 2 loops / 10.4167 s.
- V412 phase timing hits phase 0.5 at 2.6 s and wraps correctly at 5.2 s.
- Camera uses the unchanged frozen app equations for front three-quarter follow, FOV 32.
- Camera side angle: 13.7223° throughout the loop.
- Camera elevation: 14.9076° maximum.
- Maximum camera-relative pose drift: 8.88e-16 m.
- Camera and target loop-seam jump: 0 m at the tested seam.
- Travel is monotonic and has no backward step.
- Exercise 8 entry mapping and exercise 9 exit mapping are present.
- No debug/overhead camera branch was introduced.

Evidence:
- `diagnostics/v64/V6_4_EX8_REVERSE_LUNGES_V425_V412_TWO_LOOP_QA.mp4`
- `diagnostics/v64/V6_4_EX8_REVERSE_LUNGES_CONTACT_SHEET.png`
- `diagnostics/v64/V6_4_EX8_REVERSE_LUNGES_RENDER_REPORT.json`
- `diagnostics/v64/V6_4_EX8_CAMERA_AND_FROZEN_GUARD.json`

## Frozen guard
PASS.

The static frozen-player guard reports:
`FROZEN PLAYER GUARD: PASS | core=16 | profiles_locked=8 | motion/model=66`

The V6.4 runtime-state guard freezes exercise 8 at phase 0.42 for 1.6 s and verifies that all five requested state dimensions remain invariant:
- camera mode
- camera target / camera transform
- animation time
- playback state
- scene selection

The V6.3 manifest contained one stale duplicate hash for the already-migrated Figure Fours wrapper. V6.4 normalizes that manifest metadata to the existing authoritative shared-wrapper hash. Figure Fours file bytes are not changed.

## Browser transport note
This executor's Chromium is currently organization-blocked from navigating both loopback HTTP and local `file://` pages. Three transport variants were attempted. Therefore V6.4 does not claim a fresh full-app Chromium navigation capture from this executor. Instead, exercise 8 visual QA uses the actual Nex FBX with Three.js CPU skinning and the production V412 playback, while camera/frozen-state QA evaluates the exact frozen app camera equations over the full loop. The app/browser files themselves remain frozen.

## Scope guard versus V6.3
PASS.

- 1710 V6.3 files remain byte-identical.
- Existing files changed: generated travel registry, Reverse Lunges wrapper, frozen manifest metadata.
- Added functional file: exercise 8 travel profile.
- Added files under `diagnostics/v64` and this V6.4 report only.
- No resolved motion or Nex model file changed.

See `diagnostics/v64/V6_4_V63_DIFF_REPORT.json`.

## Inherited item deliberately untouched
The pre-existing High Knee Run (#2) authoring approval gate from V6.3 is not changed by V6.4 and is outside this #8 scope.
