{
  "schema": "NEXT11_V239_WIRING_FIXED_PRODUCTION_ROOT",
  "version": "V239",
  "built_at_local": "2026-08-18T18:44+02:00",
  "source_approved_candidate": "V236_ALL_Z_STOP_INDEX_MCP_0p36",
  "source_freeze": "V237_FREEZE_APPROVED_GRIP",
  "status": "production_clean_consolidated_version",
  "not_a_patch_stack": true,
  "single_source_of_truth": [
    "config/V239_APPROVED_GRIP_CONFIG.json",
    "assets/nexprod/nexprod01-runtime-candidate.mjs::__NEXPROD01_V239_APPROVED_GRIP"
  ],
  "scope": {
    "exercise": "hurdle-stretch",
    "case": "v94_right_full",
    "phase": 0.75,
    "grip_side": "R",
    "thumb_writer": "off"
  },
  "locked_baseline": {
    "v199_mode": "wristPivotMoveLeg",
    "v199_roll_deg": 55,
    "green_yellow_m": 0.00749,
    "pink_leg_m": 0.00699
  },
  "approved_policy": {
    "curl_plane": "all finger joints z+",
    "sequence": "MCP -> PIP -> DIP",
    "index_mcp_override": "z+ 0.36",
    "no_writes": [
      "hand",
      "wrist",
      "arm",
      "leg",
      "thumb"
    ],
    "do_not_change_grip_without_visual_reapproval": true,
    "reject_old_routes": [
      "x+ planar close for this grip",
      "contact-at-any-cost",
      "patch-on-patch diagnostic variants"
    ]
  },
  "terms": [
    {
      "finger": "index",
      "seg": 0,
      "joint": "MCP",
      "bone": "R_Index1",
      "axis": "z",
      "sign": 1,
      "amount": 0.36,
      "role": "index MCP visual audit override"
    },
    {
      "finger": "index",
      "seg": 1,
      "joint": "PIP",
      "bone": "R_Index2",
      "axis": "z",
      "sign": 1,
      "amount": 0.72
    },
    {
      "finger": "index",
      "seg": 2,
      "joint": "DIP",
      "bone": "R_Index3",
      "axis": "z",
      "sign": 1,
      "amount": 0.36
    },
    {
      "finger": "middle",
      "seg": 0,
      "joint": "MCP",
      "bone": "R_Mid1",
      "axis": "z",
      "sign": 1,
      "amount": 0.84
    },
    {
      "finger": "middle",
      "seg": 1,
      "joint": "PIP",
      "bone": "R_Mid2",
      "axis": "z",
      "sign": 1,
      "amount": 0.72
    },
    {
      "finger": "middle",
      "seg": 2,
      "joint": "DIP",
      "bone": "R_Mid3",
      "axis": "z",
      "sign": 1,
      "amount": 0.36
    },
    {
      "finger": "ring",
      "seg": 0,
      "joint": "MCP",
      "bone": "R_Ring1",
      "axis": "z",
      "sign": 1,
      "amount": 0.84
    },
    {
      "finger": "ring",
      "seg": 1,
      "joint": "PIP",
      "bone": "R_Ring2",
      "axis": "z",
      "sign": 1,
      "amount": 0.72
    },
    {
      "finger": "ring",
      "seg": 2,
      "joint": "DIP",
      "bone": "R_Ring3",
      "axis": "z",
      "sign": 1,
      "amount": 0.06
    },
    {
      "finger": "pinky",
      "seg": 0,
      "joint": "MCP",
      "bone": "R_Pinky1",
      "axis": "z",
      "sign": 1,
      "amount": 0.84
    },
    {
      "finger": "pinky",
      "seg": 1,
      "joint": "PIP",
      "bone": "R_Pinky2",
      "axis": "z",
      "sign": 1,
      "amount": 0.68
    }
  ],
  "qa_metrics": {
    "avg_finger_to_leg_m": 0.02574,
    "gain_from_baseline_m": 0.03345,
    "min_adjacent_finger_m": 0.01659,
    "topology_reject": false,
    "green_yellow_drift_m": 0.0,
    "pink_leg_drift_m": 0.0,
    "visual_all_views": true
  },
  "source_clean_root": "V238_PRODUCTION_CLEAN_APPROVED_GRIP_ROOT",
  "wiring_fix": "Copied approved runtime hook into assets/nexprod/nexprod01-runtime-candidate.mjs, which is the file imported by assets/nexprod/nexprod01-player.html."
}