{
  "side": "right",
  "value": {
    "hasModel": true,
    "runtimeVersion": "V328_WRIST_FIRST_PALM_RESTART",
    "side": "R",
    "meet": {
      "schema": "NEXPROD01_V324_ACTUAL_CALF_OBJECT_MEET_RESTART",
      "active": true,
      "applied": true,
      "pass": false,
      "side": "R",
      "reason": "actual_calf_contact_still_blocked_after_leg_meet",
      "firstPalm": "pinky",
      "armResidualM": 0.02916,
      "requestedMeetM": 0.02916,
      "maxObjectMeetM": 0.08,
      "meetDelta": {
        "x": -0.0008,
        "y": 0.02351,
        "z": 0.01724
      },
      "legSolve": {
        "ok": true,
        "finalError": 8e-05,
        "iterations": 24
      },
      "footBefore": {
        "x": -0.0727,
        "y": 0.80259,
        "z": -0.34324
      },
      "footAfter": {
        "x": -0.0735,
        "y": 0.82608,
        "z": -0.32593
      },
      "achievedMeetM": 0.029189,
      "achievedDelta": {
        "x": -0.0008,
        "y": 0.02349,
        "z": 0.01731
      },
      "footLocalQuatDriftRad": 0,
      "toeLocalQuatDriftRad": 0,
      "firstSolve": {
        "schema": "NEXPROD01_V328_WRIST_FIRST_PALM_RESTART_SOLVE",
        "active": true,
        "applied": true,
        "pass": false,
        "side": "R",
        "firstPalm": "pinky",
        "rollDeg": 170,
        "before": {
          "indexDistanceM": 0.055301,
          "pinkyDistanceM": 0.042358
        },
        "after": {
          "index": {
            "distanceM": 0.006551,
            "surface": {
              "x": -0.1029,
              "y": 0.70238,
              "z": -0.33457
            }
          },
          "pinky": {
            "distanceM": 0.014599,
            "surface": {
              "x": -0.11933,
              "y": 0.68887,
              "z": -0.30008
            }
          },
          "palmFacesCalf": 0.458412,
          "palmPatch": {
            "gapM": -0.054242,
            "pass": false,
            "calfCount": 47,
            "palmCount": 613
          }
        },
        "bestCandidate": {
          "deg": 170,
          "firstPalm": "pinky",
          "pass": false,
          "score": 1923.71249,
          "indexDistanceM": 0.006551,
          "pinkyDistanceM": 0.014599,
          "firstErrM": 0.014599,
          "secondErrM": 0.006551,
          "palmFacesCalf": 0.458412,
          "palmPatch": {
            "gapM": -0.054242,
            "pass": false,
            "calfCount": 47,
            "palmCount": 613
          },
          "firstTarget": {
            "x": -0.11933,
            "y": 0.68887,
            "z": -0.30008
          },
          "indexSurface": {
            "x": -0.1029,
            "y": 0.70238,
            "z": -0.33457
          },
          "pinkySurface": {
            "x": -0.11933,
            "y": 0.68887,
            "z": -0.30008
          },
          "arm1": {
            "ok": true,
            "finalError": 0.02916,
            "iterations": 14
          },
          "arm2": {
            "ok": true,
            "finalError": 0.0132,
            "iterations": 10
          }
        },
        "candidateCount": 146,
        "calfVertexCount": 483,
        "outsideCalfVertexCount": 259,
        "palmPatchVertexCount": 650,
        "axis": {
          "x": -0.09696,
          "y": -0.94174,
          "z": 0.32205
        },
        "outside": {
          "x": -0.25846,
          "y": -0.28865,
          "z": -0.92189
        },
        "changedFingerLocals": [],
        "policy": "V328 restarts wrist orientation from the locked first MCP-derived palm contact and exhaustively searches the full wrist-roll domain; it uses the corrected MCP palm geometry: Index/Pinky MCP points shifted 20 mm proximally toward the wrist in the palm plane. Those two points remain the only contact authority; nearby actual skinned palm vertices are only a penetration guard. Candidates that push the palm patch through actual CalfTwist skin cannot win. No finger writes and no Foot/ToeBase/legacy palm targets."
      },
      "secondSolve": {
        "schema": "NEXPROD01_V328_WRIST_FIRST_PALM_RESTART_SOLVE",
        "active": true,
        "applied": true,
        "pass": false,
        "side": "R",
        "firstPalm": "index",
        "rollDeg": -180,
        "before": {
          "indexDistanceM": 0.00986,
          "pinkyDistanceM": 0.008262
        },
        "after": {
          "index": {
            "distanceM": 0.006533,
            "surface": {
              "x": -0.10304,
              "y": 0.7253,
              "z": -0.32673
            }
          },
          "pinky": {
            "distanceM": 0.013375,
            "surface": {
              "x": -0.08889,
              "y": 0.74508,
              "z": -0.34146
            }
          },
          "palmFacesCalf": 0.322689,
          "palmPatch": {
            "gapM": -0.033123,
            "pass": false,
            "calfCount": 55,
            "palmCount": 650
          }
        },
        "bestCandidate": {
          "deg": -180,
          "firstPalm": "index",
          "pass": false,
          "score": 1221.757939,
          "indexDistanceM": 0.006533,
          "pinkyDistanceM": 0.013375,
          "firstErrM": 0.006533,
          "secondErrM": 0.013375,
          "palmFacesCalf": 0.322689,
          "palmPatch": {
            "gapM": -0.033123,
            "pass": false,
            "calfCount": 55,
            "palmCount": 650
          },
          "firstTarget": {
            "x": -0.10304,
            "y": 0.7253,
            "z": -0.32673
          },
          "indexSurface": {
            "x": -0.10304,
            "y": 0.7253,
            "z": -0.32673
          },
          "pinkySurface": {
            "x": -0.08889,
            "y": 0.74508,
            "z": -0.34146
          },
          "arm1": {
            "ok": true,
            "finalError": 0.00934,
            "iterations": 14
          },
          "arm2": {
            "ok": true,
            "finalError": 0.0066,
            "iterations": 10
          }
        },
        "candidateCount": 146,
        "calfVertexCount": 483,
        "outsideCalfVertexCount": 257,
        "palmPatchVertexCount": 650,
        "axis": {
          "x": -0.09244,
          "y": -0.96798,
          "z": 0.2334
        },
        "outside": {
          "x": -0.2651,
          "y": -0.20202,
          "z": -0.94282
        },
        "changedFingerLocals": [],
        "policy": "V328 restarts wrist orientation from the locked first MCP-derived palm contact and exhaustively searches the full wrist-roll domain; it uses the corrected MCP palm geometry: Index/Pinky MCP points shifted 20 mm proximally toward the wrist in the palm plane. Those two points remain the only contact authority; nearby actual skinned palm vertices are only a penetration guard. Candidates that push the palm patch through actual CalfTwist skin cannot win. No finger writes and no Foot/ToeBase/legacy palm targets."
      },
      "policy": "V324 follows the grip contract: if arm IK cannot place the actual MCP+20 first-palm point on the actual CalfTwist outside surface, the raised leg/object meets the hand by the arm residual using thigh/calf IK, capped at 80 mm. Actual calf vertices are recollected and arm-snap/wrist-roll restarts. Foot/Toe are not contact authority and their local quaternions are not written. Fingers remain blocked."
    },
    "solve": {
      "schema": "NEXPROD01_V328_WRIST_FIRST_PALM_RESTART_SOLVE",
      "active": true,
      "applied": true,
      "pass": false,
      "side": "R",
      "firstPalm": "index",
      "rollDeg": -180,
      "before": {
        "indexDistanceM": 0.00986,
        "pinkyDistanceM": 0.008262
      },
      "after": {
        "index": {
          "distanceM": 0.006533,
          "surface": {
            "x": -0.10304,
            "y": 0.7253,
            "z": -0.32673
          }
        },
        "pinky": {
          "distanceM": 0.013375,
          "surface": {
            "x": -0.08889,
            "y": 0.74508,
            "z": -0.34146
          }
        },
        "palmFacesCalf": 0.322689,
        "palmPatch": {
          "gapM": -0.033123,
          "pass": false,
          "calfCount": 55,
          "palmCount": 650
        }
      },
      "bestCandidate": {
        "deg": -180,
        "firstPalm": "index",
        "pass": false,
        "score": 1221.757939,
        "indexDistanceM": 0.006533,
        "pinkyDistanceM": 0.013375,
        "firstErrM": 0.006533,
        "secondErrM": 0.013375,
        "palmFacesCalf": 0.322689,
        "palmPatch": {
          "gapM": -0.033123,
          "pass": false,
          "calfCount": 55,
          "palmCount": 650
        },
        "firstTarget": {
          "x": -0.10304,
          "y": 0.7253,
          "z": -0.32673
        },
        "indexSurface": {
          "x": -0.10304,
          "y": 0.7253,
          "z": -0.32673
        },
        "pinkySurface": {
          "x": -0.08889,
          "y": 0.74508,
          "z": -0.34146
        },
        "arm1": {
          "ok": true,
          "finalError": 0.00934,
          "iterations": 14
        },
        "arm2": {
          "ok": true,
          "finalError": 0.0066,
          "iterations": 10
        }
      },
      "candidateCount": 146,
      "calfVertexCount": 483,
      "outsideCalfVertexCount": 257,
      "palmPatchVertexCount": 650,
      "axis": {
        "x": -0.09244,
        "y": -0.96798,
        "z": 0.2334
      },
      "outside": {
        "x": -0.2651,
        "y": -0.20202,
        "z": -0.94282
      },
      "changedFingerLocals": [],
      "policy": "V328 restarts wrist orientation from the locked first MCP-derived palm contact and exhaustively searches the full wrist-roll domain; it uses the corrected MCP palm geometry: Index/Pinky MCP points shifted 20 mm proximally toward the wrist in the palm plane. Those two points remain the only contact authority; nearby actual skinned palm vertices are only a penetration guard. Candidates that push the palm patch through actual CalfTwist skin cannot win. No finger writes and no Foot/ToeBase/legacy palm targets."
    },
    "mesh": {
      "schema": "NEXPROD01_V318_ACTUAL_CALF_PALM_MESH_TRUTH",
      "active": true,
      "side": "R",
      "pass": false,
      "status": "ACTUAL_CALF_PALM_CONTACT_BLOCKED",
      "gapM": -0.077608,
      "gapOk": false,
      "nearestPalmCalfM": 0.002584,
      "nearestPalmFootM": 0.003209,
      "nearestOk": true,
      "footCloser": false,
      "counts": {
        "palm": 4763,
        "calf": 2001,
        "foot": 2085,
        "calfBand": 485,
        "palmBand": 3736
      },
      "axisPoint": {
        "x": -0.07934,
        "y": 0.76484,
        "z": -0.31117
      },
      "radial": {
        "x": -0.23494,
        "y": -0.20659,
        "z": -0.9498
      },
      "policy": "V318 actual visible-surface authority: outside-shin palm contact is measured against skinned CALF vertices only. Foot/ToeBase are diagnostics and cannot satisfy the palm gate."
    },
    "prefinger": {
      "schema": "NEXPROD01_V327_ACTUAL_CALF_MESH_PREFINGER_GATE",
      "pass": false,
      "status": "ACTUAL_CALF_PALM_CONTACT_BLOCKED",
      "orientationFail": false,
      "wrongWay": false
    },
    "finger": {
      "active": false,
      "blocked": true,
      "ready": false,
      "reason": "v306_actual_surface_or_entry_frame_gate_not_passed"
    },
    "boneCount": 165,
    "skinnedMeshCount": 12
  },
  "events": [
    "CONSOLE warning [.WebGL-0x1fec0011f200]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels",
    "CONSOLE warning [.WebGL-0x1fec0011f200]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels",
    "CONSOLE warning [.WebGL-0x1fec0011f200]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels",
    "CONSOLE warning [.WebGL-0x1fec0011f200]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels (this message will no longer repeat)",
    "CONSOLE error Failed to load resource: the server responded with a status of 404 (File not found)",
    "CONSOLE warning THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.",
    "CONSOLE warning THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.",
    "CONSOLE warning THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."
  ]
}