# V413 — lateral lunge with explicit foot contacts

Base: V412 continuous travel and camera follow.

## Outcome

V413 removes the visible bilateral foot sliding and makes the source film's actual traveling pattern authoritative. Nex repeatedly travels in one direction while the presentation camera keeps him centered.

The loop no longer alternates into an opposite-side in-place lunge. It repeats the accepted left-leading half-cycle twice:

1. the right foot remains planted while the left foot steps outward;
2. Nex loads the left leg;
3. the left foot remains planted while Nex rises and the right foot gathers inward;
4. the left foot steps outward again from the new position.

## What changed

- V412 frames `0..359` are the source-correct repetition and are repeated at frames `360..719`.
- Root translation is contact-derived from actual Nex FBX foot readback, in full XYZ.
- `R_Foot` is the exact plant authority through frame `240` of each repetition.
- `L_Foot` is the exact plant authority from frame `241` through the repetition end.
- The right gathering foot receives a baked swing-clearance arc during frames `241..358`.
- Only `R_Thigh`, `R_Calf` and `R_Foot` are changed during that free-foot gather interval.
- Upper body, left step/lunge, planted left leg, contact endpoints and accepted source-side timing are preserved.
- V412's baked camera-follow presentation is retained and follows the corrected continuous motion path.

The swing clearance was rebuilt offline with the existing generic fixed-endpoint two-bone method. It is stored as ordinary keyframes. There is no runtime IK, collision pass or exercise-specific live solver.

## Measured result

The actual bundled Nex FBX was read back after skinning:

- maximum planted right-foot drift: `1.25054404557822e-9 m`;
- maximum planted left-foot drift: `1.396862865070447e-9 m`;
- left outward step: at least `0.43760036107728373 m`;
- right inward gather: at least `0.43747556976227275 m`;
- left free-foot lift: at least `0.03383672732727888 m`;
- right free-foot lift: at least `0.021423764501656173 m`;
- travel per repetition: `0.437539567 m`;
- travel per 6.6 s cycle: `0.875079134 m`;
- maximum three-loop motion seam jump: `2.451818303939035e-9 m`;
- maximum camera seam jump: `0 m`;
- maximum loop travel error: approximately `3.33e-16 m`;
- live solver calls: `0`.

All deterministic integration checks pass, including identical repetitions, exact contact phases, correct step/gather direction, swing clearance, profile/sequence/player wiring and three-loop continuity.

## Files and QA

- resolved asset: `assets/nexprod/resolved/lateral-lunges-v413-explicit-foot-contacts.resolved.json`
- source film: `assets/media/exercises/lateral-lunges/source/NEXT11_dynamic_warmup_ijj7TD0DA6Q_lateral-lunges.MOV`
- build report: `diagnostics/v413/V413_EXPLICIT_FOOT_CONTACTS_BUILD_REPORT.json`
- integration gate: `diagnostics/v413/V413_EXPLICIT_FOOT_CONTACTS_INTEGRATION_GATE.json`
- one-loop QA: `diagnostics/v413/V413_EXPLICIT_FOOT_CONTACTS_ONE_LOOP_QA.mp4`
- three-loop QA: `diagnostics/v413/V413_EXPLICIT_FOOT_CONTACTS_THREE_LOOP_QA.mp4`
- chronological sheet: `diagnostics/v413/V413_EXPLICIT_FOOT_CONTACTS_CONTACT_SHEET.png`
- right-gather detail: `diagnostics/v413/V413_RIGHT_GATHER_DETAIL_CONTACT_SHEET.png`

The QA render uses the actual Nex FBX, Three.js CPU skinning and simultaneous world-space/contact and centered-camera views. Chromium is not installed in this executor, so the package contains the deterministic real-Nex render path instead of a Chromium capture.

## Acceptance boundary

Machine QA passes. Human visual approval is still the final boundary. Review the one-loop video first, then the three-loop video for travel continuity. If a later visual adjustment is needed, preserve the explicit plant intervals and modify only the free-foot swing or camera presentation; do not reintroduce bilateral root drift or a live solver.
