{
  "batch_id": "20260825_GRASP_VALIDATION84",
  "run_idx": 42,
  "run_id": "validation_043_coupled_z_pos_matched",
  "program_sha256": "136c6530d40acfa288e203a2ef411b9c49207759f8e4b8635ab038c3175c19a3",
  "program": {
    "schema": "grasp_programs_v2",
    "run_id": "validation_043_coupled_z_pos_matched",
    "design": {
      "block": "coupled_trajectory",
      "trajectory_family": "coupled_arc",
      "target_axis": "z",
      "target_sign": "pos",
      "rate": "current",
      "rotation_pattern": "matched"
    },
    "tokens": [
      {
        "index": 0,
        "kind": "se3_quat_delta",
        "duration_s": 0.15,
        "neg_delta_translation_m": [
          0.00029704273724,
          -0.002419218956,
          0.0
        ],
        "pos_delta_translation_m": [
          -0.00029704273724,
          0.002419218956,
          0.0
        ],
        "neg_delta_quat_wxyz": [
          0.9925461516413351,
          0.0,
          0.0,
          0.12186934340504114
        ],
        "pos_delta_quat_wxyz": [
          0.9925461516413351,
          0.0,
          0.0,
          0.12186934340504114
        ],
        "neg_delta_se3": [
          0.00029704273724,
          -0.002419218956,
          0.0,
          0.0,
          0.0,
          0.24434609527899187
        ],
        "pos_delta_se3": [
          -0.00029704273724,
          0.002419218956,
          0.0,
          0.0,
          0.0,
          0.24434609527899187
        ],
        "source": {
          "kind": "se3_quat_delta",
          "duration_s": 0.15,
          "neg": {
            "translation_m": [
              0.00029704273724,
              -0.002419218956,
              0.0
            ],
            "rotation_quat_wxyz": [
              0.992546151641,
              0.0,
              0.0,
              0.121869343405
            ]
          },
          "pos": {
            "translation_m": [
              -0.00029704273724,
              0.002419218956,
              0.0
            ],
            "rotation_quat_wxyz": [
              0.992546151641,
              0.0,
              0.0,
              0.121869343405
            ]
          },
          "sampling": {
            "arc_inward_m": 0.00029704273724,
            "arc_tangential_m": 0.002419218956,
            "rotation_angle_deg": 14.0
          }
        }
      }
    ],
    "observe_duration_s": 0.15,
    "gravity": true,
    "gravity_stage": "Closure",
    "gravity_ramp_s": 0.05,
    "closure_displacement_per_side_m": 0.01,
    "initial_cube_pose": {
      "offset_m": [
        0.0,
        0.0,
        0.0
      ],
      "rotation_quat_wxyz": [
        1.0,
        0.0,
        0.0,
        0.0
      ]
    },
    "drop_z_m": -0.025,
    "motion_substeps": 16,
    "amplitude_definition": "TABULAR"
  },
  "closure_duration_s": 0.25,
  "cube_half_size_m": 0.01,
  "base_mounts": {
    "neg": {
      "position": [
        -0.043,
        0,
        0
      ],
      "quaternion_wxyz": [
        0,
        0.7071067811865476,
        0.7071067811865476,
        0
      ]
    },
    "pos": {
      "position": [
        0.043,
        0,
        0
      ],
      "quaternion_wxyz": [
        0.7071067811865476,
        0,
        0,
        0.7071067811865476
      ]
    }
  },
  "source_record": "run_00042.json",
  "source_record_sha256": "51ae801dd8a95e7b653e33de0d5c8afad6d28624baa92609b32d92c098393892",
  "provenance": "Deterministically regenerated normalized batch program; SHA-256 exactly matches saved run 42.",
  "display": "Mount poses follow the original 16-substep smooth closure/SE(3) command. Cube following the mean commanded rotation and contact-surface flattening are illustrative, not solved fields. The loop replays the same prescribed path forward and backward at 10x slowdown.",
  "source_batch": "thesis_metric_coverage/20260825_GRASP_VALIDATION84_five_arm"
}
