{
  "version": "NEXT11_EXERCISE_TRUTH_SPECS_V1_NEXDATAA2",
  "generatedAt": "2026-06-05T00:20:00Z",
  "method": "Physio truth spec -> IK target spec -> Matrix V2 actual/authored skeleton validation. Old Matrix PASS is treated as IK sanity only unless truthMatrixV2 passes.",
  "specs": [
    {
      "exerciseKey": "goblet-squat",
      "profileId": "goblet_squat_ik_v1",
      "title": "Goblet Squat",
      "status": "truth_spec_nexdataa2_runtime_guard_ready",
      "movementGoal": "Controlled bilateral squat holding a compact goblet load just in front of sternum; feet stay planted; hips descend visibly with pelvis/root; elbows/wrists must stay outside/in front of torso mesh.",
      "requiredObjects": [
        {
          "objectType": "goblet_prop",
          "role": "goblet_load",
          "anchorPreset": "hand_midpoint_chest"
        }
      ],
      "keyPhases": [
        {
          "id": "ready",
          "t": 0.0,
          "label": "standing goblet hold",
          "expected": {
            "hipY": [
              0.8,
              0.88
            ],
            "chestY": [
              1.15,
              1.25
            ],
            "wristChestDistanceMax": 0.36,
            "feetFloor": true
          }
        },
        {
          "id": "descent",
          "t": 0.32,
          "label": "controlled descent",
          "expected": {
            "hipY": [
              0.52,
              0.76
            ],
            "chestY": [
              1.0,
              1.18
            ],
            "kneeFlex": "increasing",
            "feetFloor": true,
            "wristChestDistanceMax": 0.36,
            "pelvisDescending": true
          }
        },
        {
          "id": "bottom",
          "t": 0.5,
          "label": "stable bottom",
          "expected": {
            "hipY": [
              0.48,
              0.6
            ],
            "chestY": [
              0.94,
              1.07
            ],
            "kneeForwardZMax": -0.08,
            "feetFloor": true,
            "wristChestDistanceMax": 0.36
          }
        },
        {
          "id": "ascent",
          "t": 0.75,
          "label": "controlled ascent",
          "expected": {
            "hipY": [
              0.58,
              0.82
            ],
            "chestY": [
              1.03,
              1.22
            ],
            "feetFloor": true,
            "wristChestDistanceMax": 0.36,
            "pelvisAscending": true
          }
        },
        {
          "id": "finish",
          "t": 1.0,
          "label": "return to standing goblet hold",
          "expected": {
            "hipY": [
              0.8,
              0.88
            ],
            "chestY": [
              1.15,
              1.25
            ],
            "feetFloor": true,
            "wristChestDistanceMax": 0.36
          }
        }
      ],
      "requiredContacts": [
        "left_foot_full_sole_floor",
        "right_foot_full_sole_floor",
        "goblet_prop_between_hands_near_sternum"
      ],
      "forbiddenBehaviors": [
        "arm_drop_or_detached_load",
        "foot_lift_or_foot_drift",
        "torso_collapse_forward",
        "knees_not_flexing",
        "hip_not_descending",
        "arm_chain_inside_torso_mesh",
        "pelvis_root_not_descending",
        "legs_moving_without_pelvis"
      ],
      "matrixChecks": [
        "phase_target_envelope",
        "goblet_hand_chest_distance",
        "foot_floor_lock",
        "hip_descent_amount",
        "symmetry_left_right_ankle_height",
        "metadata_required_object_binding",
        "post_flip_hand_forward_clearance",
        "root_vertical_authority_proxy",
        "elbow_outside_torso_width"
      ],
      "notes": [
        "NexDataA2 keeps Goblet compact but uses deep_squat-derived arm clearance so elbows/wrists do not enter torso mesh.",
        "Intermediate height envelopes are widened to allow the deeper pelvis/root descent required to avoid the false squat where legs move without pelvis."
      ]
    }
  ],
  "nexdatabEquivalenceMatrix": {
    "version": "NEXT11_NEXDATAB_EQUIVALENCE_MATRIX_V1",
    "rule": "Matrix PASS requires Physio Truth Spec -> IK target -> rendered Nex runtime equivalence, including contacts, objects, root/world motion, and forbidden behaviors.",
    "readyProfiles": [
      "goblet_squat_ik_v1"
    ],
    "blockedProfiles": {
      "broad_jump_ik_v1": "Needs horizontal jump truth spec/key phases plus real airborne/travel runtime equivalence.",
      "box_jumps_ik_v1": "Needs support-surface object/contact equivalence, not only broad_jump-like body motion.",
      "step_ups_bodyweight_ik_v1": "Needs support-surface step/contact transfer equivalence."
    }
  }
}
