# V335 implementation record

## Root cause corrected

The previous active path mixed palm placement, mesh-nearest searches, wrist-roll searches and finger closing. That allowed a numerically plausible snap on the wrong hand side and could close fingers in air. The final right-side failure was narrower: the simplified cylinder test counted the shared MCP/knuckle-to-palm root twice, first as solved palm contact and again as a moving finger segment, producing a false penetration for index and middle.

## V335 correction

The active path now has one source of truth: explicit cylinder snap → two fixed palm anchors → local `-Z` side gate → sequential digit closure. The finger collision layer keeps the existing cylinder and tolerances, but samples the first moving phalanx after the proximal 30% shared knuckle/palm root. No threshold was relaxed.

## Measured result

| Case | Result | Key evidence |
|---|---|---|
| Left hurdle grip | PASS | 6.22 mm snap error, 0° palm-line error, all five digits PASS |
| Right hurdle grip | PASS | 5.51 mm snap error, 0° palm-line error, all five digits PASS |
| Bodyweight squat | PASS | Grip solver inactive |
| High knee left | PASS | Grip solver inactive |
| High knee right | PASS | Grip solver inactive |

The numerical FBX gates pass, but the later actual Chromium WebGL render disproves visual completion: both hands remain visibly open at the target. The real OpenGL frames, close-ups and renderer evidence are stored in `diagnostics/v335/opengl/`. V335 must not be treated as visually approved until this mismatch is corrected.
