{
  "runtime_node_check": true,
  "runtime_node_stderr": "",
  "source_contract_audit_rc": 0,
  "source_contract_audit": {
    "schema": "NEXT11_V340_FIGURE_FOUR_MULTI_GRIP_SOURCE_CONTRACT_AUDIT",
    "pass": true,
    "currentStep": "Generalize the source contract from one grip intent to an ordered grips[] collection.",
    "stopBoundary": "STOP BEFORE receiver-sector derivation, multi-grip solver execution, arm/wrist solving, or finger solving.",
    "rows": [
      {
        "keyframe": "right_figure_four_peak",
        "pass": true,
        "grips": [
          {
            "gripSide": "L",
            "axis": [
              "R_Foot",
              "R_Calf"
            ],
            "role": "foot_ankle",
            "hasTemporalSector": false
          },
          {
            "gripSide": "R",
            "axis": [
              "R_Calf",
              "R_Thigh"
            ],
            "role": "knee_proximal_shin",
            "hasTemporalSector": false
          }
        ]
      },
      {
        "keyframe": "left_figure_four_peak",
        "pass": true,
        "grips": [
          {
            "gripSide": "R",
            "axis": [
              "L_Foot",
              "L_Calf"
            ],
            "role": "foot_ankle",
            "hasTemporalSector": false
          },
          {
            "gripSide": "L",
            "axis": [
              "L_Calf",
              "L_Thigh"
            ],
            "role": "knee_proximal_shin",
            "hasTemporalSector": false
          }
        ]
      }
    ]
  }
}