# V312 WRIST NODE 180 RESTART ROOT

## Purpose
User correction: the 180° correction must rotate the wrist/hand node, not finger bones and not a post-finger compensation. Fingers remain blocked until the post-commit actual MCP palm gate passes.

## Change
- Runtime version: `NEXPROD01_RUNTIME_V312_WRIST_NODE_180_RESTART_2026_08_19`.
- Added `v312ApplyWristNodeRollBeforePrefinger(side, 180)` inside the one-writer commit flow after arm/hand IK and palm-plane fitting, before any finger release.
- V312 rotates the actual `L_Hand` wrist/hand bone around the `L_Forearm -> L_Hand` axis.
- V312 snapshots finger local quaternions and audits that no finger local rotations are changed by this step.
- Finger release remains blocked by default.

## Browser audit summary
- Browser/WebGL runtime: PASS.
- Left V312 wrist node step observed: PASS.
- No finger release: PASS.
- No local finger quaternion changes inside V312 wrist step: PASS.

## Left result
The wrist/hand node 180° step is now actually applied, but the final actual MCP palm gate is still blocked. After V312:
- `wrongWay=false`
- `orientationFail=true`
- index penetration = 0
- pinky penetration = 0
- index distance to surface ≈ 56.82 mm
- pinky distance to surface ≈ 19.38 mm

This means V312 fixed the previous wrong-way/in-object diagnosis, but the hand is now too far from the actual surface. The next step should be a restart of arm snap/object-meet using the wrist-node-corrected palm frame as authority, not fingers.

## Strict ownership
- Wrist/hand orientation owner: `L_Hand` node via one-writer commit.
- Fingers: blocked; no finger local quaternions changed by V312.
- Arm/leg/object meet: not solved by V312; next step must re-run reach/contact from the corrected wrist frame.
