# HANDOVER V400 · Canonical Straight Leg March

## Why V400 exists
V399 introduced a process regression: the bake script reconstructed whole keyposes with manual `setNeutral/setPeak`-style targets and then called the result canonical. This was rejected.

## Hard Dynamic Warmup rule from V400 forward
- Locked canonical IK/keyposes are geometry authority by default.
- Reference/user film owns timing, phase placement and cadence by default.
- Geometry corrections require an explicit source-conformity patch with exact keypose/joint whitelist and diff audit.
- Hidden full-pose reconstruction is forbidden.
- Post-solve hand/foot quaternion resets are forbidden by default.
- Ordinary video integration may not create a new IK profile or exercise-specific solver.
- Actual Nex render + human visual acceptance remains mandatory.

## Straight Leg March V400
Base profile: `warmup_straight_leg_march_ik_v1`

V399 geometry is not used. V399 contributes only the measured source-film timeline.

Declared source-conformity patch:
- high, nearly straight lifted leg;
- contralateral reaching arm toward the lifted shoe/toe;
- non-reaching arm reuses the locked canonical `ready` arm targets verbatim;
- peak torso/head targets move only 30% toward locked canonical `ready`, avoiding V399's excessive fold while preserving canonical as the base.

Canonical source keypositions are hashed before solve and remain unmodified.
Undeclared canonical target diffs: 0.
New IK profile: no.
New solver: no.
Live solver calls in playback: 0.
Baked frames: 720.
Duration: 7.2 s.

Peak metrics from actual Nex solve:
- left peak: opposite hand-to-foot 0.0746 m; knee 169.66°
- right peak: opposite hand-to-toe 0.0989 m; knee 168.17°

The joint-center distance is only a numerical proxy; actual shoe/hand mesh relationship must be judged in the included Nex QA render.

Chromium/WebGL parity is not claimed in this environment.
