{
  "schema_version": 1,
  "split_name": "cup_5mix_holdout100_20261021",
  "seed": 20261021,
  "counts": {
    "original_heldout": 30,
    "added_heldout": 70,
    "heldout": 100,
    "train": 142,
    "other_excluded": 1
  },
  "convention": "Cup 1 = right, cup 2 = middle, cup 3 = left in the overhead image.",
  "applicability": "For future training using this split. Existing checkpoints trained on the newly selected 70 demos.",
  "final_position_counts": {
    "all": {
      "left": 33,
      "middle": 33,
      "right": 34
    },
    "original30": {
      "left": 10,
      "middle": 10,
      "right": 10
    },
    "added70": {
      "right": 24,
      "middle": 23,
      "left": 23
    }
  },
  "episodes": [
    {
      "test_number": 1,
      "episode_index": 242,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 519,
      "fps": 30,
      "duration_seconds": 17.3,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        2,
        3,
        2,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-lm-lm-lm-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 41,
      "swap_start_frames": [
        79,
        116,
        154,
        191,
        227
      ],
      "swap_end_frames": [
        115,
        153,
        190,
        226,
        284
      ],
      "final_frame": 284,
      "final_time_seconds": 9.466666666666667,
      "reveal_frame": 401,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000242/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000242/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000242/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 2,
      "episode_index": 226,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 514,
      "fps": 30,
      "duration_seconds": 17.133333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        2,
        2,
        1,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-lm-lr-mr-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 36,
      "swap_start_frames": [
        78,
        115,
        159,
        198,
        238
      ],
      "swap_end_frames": [
        114,
        158,
        197,
        237,
        282
      ],
      "final_frame": 282,
      "final_time_seconds": 9.4,
      "reveal_frame": 409,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000226/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000226/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000226/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 3,
      "episode_index": 210,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 456,
      "fps": 30,
      "duration_seconds": 15.2,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        1,
        3,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lm-lr-lm-lr-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 37,
      "swap_start_frames": [
        73,
        114,
        152,
        190,
        228
      ],
      "swap_end_frames": [
        113,
        151,
        189,
        227,
        268
      ],
      "final_frame": 268,
      "final_time_seconds": 8.933333333333334,
      "reveal_frame": 375,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000210/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000210/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000210/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 4,
      "episode_index": 194,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 541,
      "fps": 30,
      "duration_seconds": 18.033333333333335,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        2,
        2,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-lr-mr-lr-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 60,
      "swap_start_frames": [
        105,
        150,
        199,
        242,
        285
      ],
      "swap_end_frames": [
        149,
        198,
        241,
        284,
        319
      ],
      "final_frame": 319,
      "final_time_seconds": 10.633333333333333,
      "reveal_frame": 439,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000194/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000194/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000194/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 5,
      "episode_index": 177,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 482,
      "fps": 30,
      "duration_seconds": 16.066666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        1,
        1,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lm-mr-lr-lm-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 49,
      "swap_start_frames": [
        95,
        136,
        183,
        220,
        267
      ],
      "swap_end_frames": [
        135,
        182,
        219,
        266,
        301
      ],
      "final_frame": 301,
      "final_time_seconds": 10.033333333333333,
      "reveal_frame": 397,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000177/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000177/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000177/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 6,
      "episode_index": 161,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 491,
      "fps": 30,
      "duration_seconds": 16.366666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        3,
        2,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lr-lm-lm-lm-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 44,
      "swap_start_frames": [
        91,
        130,
        170,
        205,
        240
      ],
      "swap_end_frames": [
        129,
        169,
        204,
        239,
        267
      ],
      "final_frame": 267,
      "final_time_seconds": 8.9,
      "reveal_frame": 403,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000161/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000161/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000161/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 7,
      "episode_index": 145,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 500,
      "fps": 30,
      "duration_seconds": 16.666666666666668,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        3,
        1,
        2,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-lm-lr-mr-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 49,
      "swap_start_frames": [
        93,
        138,
        188,
        231,
        271
      ],
      "swap_end_frames": [
        137,
        187,
        230,
        270,
        302
      ],
      "final_frame": 302,
      "final_time_seconds": 10.066666666666666,
      "reveal_frame": 405,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000145/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000145/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000145/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 8,
      "episode_index": 129,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 517,
      "fps": 30,
      "duration_seconds": 17.233333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        3,
        1,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-lr-lm-lr-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 47,
      "swap_start_frames": [
        93,
        150,
        198,
        250,
        291
      ],
      "swap_end_frames": [
        149,
        197,
        249,
        290,
        325
      ],
      "final_frame": 325,
      "final_time_seconds": 10.833333333333334,
      "reveal_frame": 427,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000129/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000129/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000129/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 9,
      "episode_index": 112,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 549,
      "fps": 30,
      "duration_seconds": 18.3,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        1,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-lr-mr-lr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 51,
      "swap_start_frames": [
        96,
        144,
        189,
        240,
        284
      ],
      "swap_end_frames": [
        143,
        188,
        239,
        283,
        322
      ],
      "final_frame": 322,
      "final_time_seconds": 10.733333333333333,
      "reveal_frame": 449,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000112/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000112/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000112/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 10,
      "episode_index": 96,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 499,
      "fps": 30,
      "duration_seconds": 16.633333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        3,
        2,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-mr-lr-lm-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 43,
      "swap_start_frames": [
        90,
        133,
        179,
        219,
        255
      ],
      "swap_end_frames": [
        132,
        178,
        218,
        254,
        290
      ],
      "final_frame": 290,
      "final_time_seconds": 9.666666666666666,
      "reveal_frame": 413,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000096/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000096/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000096/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 11,
      "episode_index": 80,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 454,
      "fps": 30,
      "duration_seconds": 15.133333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        1,
        1,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lm-lm-lm-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 41,
      "swap_start_frames": [
        83,
        126,
        165,
        202,
        243
      ],
      "swap_end_frames": [
        125,
        164,
        201,
        242,
        275
      ],
      "final_frame": 275,
      "final_time_seconds": 9.166666666666666,
      "reveal_frame": 369,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000080/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000080/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000080/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 12,
      "episode_index": 64,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 504,
      "fps": 30,
      "duration_seconds": 16.8,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        3,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-lm-lr-mr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 47,
      "swap_start_frames": [
        82,
        120,
        166,
        208,
        260
      ],
      "swap_end_frames": [
        119,
        165,
        207,
        259,
        301
      ],
      "final_frame": 301,
      "final_time_seconds": 10.033333333333333,
      "reveal_frame": 418,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000064/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000064/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000064/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 13,
      "episode_index": 47,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 458,
      "fps": 30,
      "duration_seconds": 15.266666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        2,
        1,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lr-lm-mr-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 40,
      "swap_start_frames": [
        77,
        120,
        162,
        205,
        248
      ],
      "swap_end_frames": [
        119,
        161,
        204,
        247,
        285
      ],
      "final_frame": 285,
      "final_time_seconds": 9.5,
      "reveal_frame": 376,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000047/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000047/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000047/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 14,
      "episode_index": 31,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 510,
      "fps": 30,
      "duration_seconds": 17.0,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        3,
        1,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-lr-mr-lr-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 43,
      "swap_start_frames": [
        79,
        119,
        163,
        213,
        255
      ],
      "swap_end_frames": [
        118,
        162,
        212,
        254,
        292
      ],
      "final_frame": 292,
      "final_time_seconds": 9.733333333333333,
      "reveal_frame": 418,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000031/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000031/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000031/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 15,
      "episode_index": 13,
      "group": "original30",
      "group_label": "First 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 465,
      "fps": 30,
      "duration_seconds": 15.5,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        2,
        2,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-mr-lr-lr-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 44,
      "swap_start_frames": [
        75,
        114,
        152,
        192,
        230
      ],
      "swap_end_frames": [
        113,
        151,
        191,
        229,
        264
      ],
      "final_frame": 264,
      "final_time_seconds": 8.8,
      "reveal_frame": 379,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000013/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000013/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000013/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 16,
      "episode_index": 235,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 476,
      "fps": 30,
      "duration_seconds": 15.866666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        2,
        3,
        3,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-lm-lm-mr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 40,
      "swap_start_frames": [
        87,
        124,
        170,
        211,
        253
      ],
      "swap_end_frames": [
        123,
        169,
        210,
        252,
        304
      ],
      "final_frame": 304,
      "final_time_seconds": 10.133333333333333,
      "reveal_frame": 390,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000235/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000235/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000235/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 17,
      "episode_index": 218,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 520,
      "fps": 30,
      "duration_seconds": 17.333333333333332,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        2,
        1,
        2,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-lm-mr-mr-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 33,
      "swap_start_frames": [
        74,
        118,
        161,
        204,
        246
      ],
      "swap_end_frames": [
        117,
        160,
        203,
        245,
        288
      ],
      "final_frame": 288,
      "final_time_seconds": 9.6,
      "reveal_frame": 415,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000218/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000218/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000218/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 18,
      "episode_index": 202,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 522,
      "fps": 30,
      "duration_seconds": 17.4,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        3,
        1,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-lr-lr-lr-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 49,
      "swap_start_frames": [
        90,
        127,
        168,
        206,
        246
      ],
      "swap_end_frames": [
        126,
        167,
        205,
        245,
        284
      ],
      "final_frame": 284,
      "final_time_seconds": 9.466666666666667,
      "reveal_frame": 419,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000202/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000202/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000202/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 19,
      "episode_index": 186,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 504,
      "fps": 30,
      "duration_seconds": 16.8,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        2,
        3,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lm-mr-lm-lm-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 52,
      "swap_start_frames": [
        105,
        150,
        205,
        251,
        289
      ],
      "swap_end_frames": [
        149,
        204,
        250,
        288,
        320
      ],
      "final_frame": 320,
      "final_time_seconds": 10.666666666666666,
      "reveal_frame": 416,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000186/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000186/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000186/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 20,
      "episode_index": 169,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 453,
      "fps": 30,
      "duration_seconds": 15.1,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        3,
        2,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-mr-mr-lm-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 55,
      "swap_start_frames": [
        97,
        136,
        175,
        210,
        253
      ],
      "swap_end_frames": [
        135,
        174,
        209,
        252,
        281
      ],
      "final_frame": 281,
      "final_time_seconds": 9.366666666666667,
      "reveal_frame": 376,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000169/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000169/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000169/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 21,
      "episode_index": 153,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 511,
      "fps": 30,
      "duration_seconds": 17.033333333333335,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        3,
        2,
        1,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-lm-lm-mr-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 49,
      "swap_start_frames": [
        91,
        131,
        172,
        216,
        255
      ],
      "swap_end_frames": [
        130,
        171,
        215,
        254,
        287
      ],
      "final_frame": 287,
      "final_time_seconds": 9.566666666666666,
      "reveal_frame": 421,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000153/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000153/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000153/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 22,
      "episode_index": 137,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 498,
      "fps": 30,
      "duration_seconds": 16.6,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        3,
        3,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lr-lm-mr-mr-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 56,
      "swap_start_frames": [
        103,
        147,
        188,
        231,
        272
      ],
      "swap_end_frames": [
        146,
        187,
        230,
        271,
        300
      ],
      "final_frame": 300,
      "final_time_seconds": 10.0,
      "reveal_frame": 407,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000137/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000137/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000137/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 23,
      "episode_index": 121,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 499,
      "fps": 30,
      "duration_seconds": 16.633333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        2,
        2,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-lr-lr-lr-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 62,
      "swap_start_frames": [
        106,
        150,
        200,
        246,
        286
      ],
      "swap_end_frames": [
        149,
        199,
        245,
        285,
        316
      ],
      "final_frame": 316,
      "final_time_seconds": 10.533333333333333,
      "reveal_frame": 416,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000121/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000121/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000121/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 24,
      "episode_index": 103,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 520,
      "fps": 30,
      "duration_seconds": 17.333333333333332,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        1,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-mr-lm-lr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 40,
      "swap_start_frames": [
        86,
        136,
        184,
        227,
        269
      ],
      "swap_end_frames": [
        135,
        183,
        226,
        268,
        311
      ],
      "final_frame": 311,
      "final_time_seconds": 10.366666666666667,
      "reveal_frame": 417,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000103/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000103/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000103/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 25,
      "episode_index": 88,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 510,
      "fps": 30,
      "duration_seconds": 17.0,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        2,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-mr-mr-lm-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 45,
      "swap_start_frames": [
        87,
        131,
        177,
        218,
        264
      ],
      "swap_end_frames": [
        130,
        176,
        217,
        263,
        306
      ],
      "final_frame": 306,
      "final_time_seconds": 10.2,
      "reveal_frame": 417,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000088/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000088/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000088/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 26,
      "episode_index": 72,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 503,
      "fps": 30,
      "duration_seconds": 16.766666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        1,
        2,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lm-lm-mr-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 41,
      "swap_start_frames": [
        78,
        121,
        167,
        227,
        268
      ],
      "swap_end_frames": [
        120,
        166,
        226,
        267,
        329
      ],
      "final_frame": 329,
      "final_time_seconds": 10.966666666666667,
      "reveal_frame": 422,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000072/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000072/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000072/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 27,
      "episode_index": 56,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 466,
      "fps": 30,
      "duration_seconds": 15.533333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        2,
        1,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lm-mr-mr-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 50,
      "swap_start_frames": [
        85,
        126,
        165,
        204,
        247
      ],
      "swap_end_frames": [
        125,
        164,
        203,
        246,
        304
      ],
      "final_frame": 304,
      "final_time_seconds": 10.133333333333333,
      "reveal_frame": 382,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000056/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000056/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000056/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 28,
      "episode_index": 39,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 519,
      "fps": 30,
      "duration_seconds": 17.3,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        1,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lr-lr-lr-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 44,
      "swap_start_frames": [
        83,
        132,
        178,
        225,
        264
      ],
      "swap_end_frames": [
        131,
        177,
        224,
        263,
        300
      ],
      "final_frame": 300,
      "final_time_seconds": 10.0,
      "reveal_frame": 430,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000039/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000039/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000039/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 29,
      "episode_index": 22,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 492,
      "fps": 30,
      "duration_seconds": 16.4,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        3,
        1,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-mr-lm-lr-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 40,
      "swap_start_frames": [
        75,
        115,
        155,
        198,
        240
      ],
      "swap_end_frames": [
        114,
        154,
        197,
        239,
        279
      ],
      "final_frame": 279,
      "final_time_seconds": 9.3,
      "reveal_frame": 397,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000022/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000022/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000022/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 30,
      "episode_index": 6,
      "group": "original30",
      "group_label": "Next 15",
      "source_dataset": "0826_cup_5mix",
      "frames": 451,
      "fps": 30,
      "duration_seconds": 15.033333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        1,
        1,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-mr-mr-lm-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 42,
      "swap_start_frames": [
        71,
        108,
        144,
        186,
        225
      ],
      "swap_end_frames": [
        107,
        143,
        185,
        224,
        258
      ],
      "final_frame": 258,
      "final_time_seconds": 8.6,
      "reveal_frame": 372,
      "videos": {
        "cam_high": "../media/cup_eval_excluded/000006/cam_high.mp4",
        "cam_left_wrist": "../media/cup_eval_excluded/000006/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_eval_excluded/000006/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 31,
      "episode_index": 240,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 487,
      "fps": 30,
      "duration_seconds": 16.233333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        2,
        3,
        2,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lm-lm-lm-lm-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 38,
      "swap_start_frames": [
        75,
        134,
        173,
        213,
        249
      ],
      "swap_end_frames": [
        133,
        172,
        212,
        248,
        311
      ],
      "final_frame": 311,
      "final_time_seconds": 10.366666666666667,
      "reveal_frame": 400,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000240/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000240/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000240/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 32,
      "episode_index": 236,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 561,
      "fps": 30,
      "duration_seconds": 18.7,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        2,
        3,
        3,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-lm-lm-mr-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 45,
      "swap_start_frames": [
        91,
        141,
        183,
        224,
        268
      ],
      "swap_end_frames": [
        140,
        182,
        223,
        267,
        317
      ],
      "final_frame": 317,
      "final_time_seconds": 10.566666666666666,
      "reveal_frame": 460,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000236/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000236/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000236/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 33,
      "episode_index": 220,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 499,
      "fps": 30,
      "duration_seconds": 16.633333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        2,
        1,
        3,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-lm-mr-lr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 45,
      "swap_start_frames": [
        89,
        127,
        170,
        208,
        249
      ],
      "swap_end_frames": [
        126,
        169,
        207,
        248,
        294
      ],
      "final_frame": 294,
      "final_time_seconds": 9.8,
      "reveal_frame": 404,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000220/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000220/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000220/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 34,
      "episode_index": 216,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 505,
      "fps": 30,
      "duration_seconds": 16.833333333333332,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        2,
        1,
        2,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lm-lm-mr-mr-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 48,
      "swap_start_frames": [
        88,
        143,
        188,
        230,
        270
      ],
      "swap_end_frames": [
        142,
        187,
        229,
        269,
        312
      ],
      "final_frame": 312,
      "final_time_seconds": 10.4,
      "reveal_frame": 421,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000216/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000216/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000216/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 35,
      "episode_index": 215,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 493,
      "fps": 30,
      "duration_seconds": 16.433333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        1,
        1,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-lr-lm-lm-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 50,
      "swap_start_frames": [
        87,
        128,
        170,
        207,
        241
      ],
      "swap_end_frames": [
        127,
        169,
        206,
        240,
        284
      ],
      "final_frame": 284,
      "final_time_seconds": 9.466666666666667,
      "reveal_frame": 387,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000215/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000215/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000215/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 36,
      "episode_index": 212,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 498,
      "fps": 30,
      "duration_seconds": 16.6,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        1,
        3,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-lr-lm-lr-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 50,
      "swap_start_frames": [
        87,
        132,
        189,
        226,
        265
      ],
      "swap_end_frames": [
        131,
        188,
        225,
        264,
        301
      ],
      "final_frame": 301,
      "final_time_seconds": 10.033333333333333,
      "reveal_frame": 403,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000212/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000212/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000212/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 37,
      "episode_index": 205,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 489,
      "fps": 30,
      "duration_seconds": 16.3,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        3,
        2,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-lr-lr-lm-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 39,
      "swap_start_frames": [
        81,
        122,
        166,
        207,
        249
      ],
      "swap_end_frames": [
        121,
        165,
        206,
        248,
        284
      ],
      "final_frame": 284,
      "final_time_seconds": 9.466666666666667,
      "reveal_frame": 397,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000205/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000205/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000205/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 38,
      "episode_index": 199,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 491,
      "fps": 30,
      "duration_seconds": 16.366666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        3,
        3,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-lr-lr-mr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 50,
      "swap_start_frames": [
        89,
        130,
        172,
        208,
        250
      ],
      "swap_end_frames": [
        129,
        171,
        207,
        249,
        286
      ],
      "final_frame": 286,
      "final_time_seconds": 9.533333333333333,
      "reveal_frame": 393,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000199/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000199/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000199/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 39,
      "episode_index": 197,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 551,
      "fps": 30,
      "duration_seconds": 18.366666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        2,
        3,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-lr-mr-lm-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 84,
      "swap_start_frames": [
        133,
        176,
        220,
        259,
        297
      ],
      "swap_end_frames": [
        175,
        219,
        258,
        296,
        335
      ],
      "final_frame": 335,
      "final_time_seconds": 11.166666666666666,
      "reveal_frame": 449,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000197/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000197/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000197/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 40,
      "episode_index": 195,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 521,
      "fps": 30,
      "duration_seconds": 17.366666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        2,
        3,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lm-lr-mr-lm-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 54,
      "swap_start_frames": [
        96,
        142,
        189,
        224,
        262
      ],
      "swap_end_frames": [
        141,
        188,
        223,
        261,
        296
      ],
      "final_frame": 296,
      "final_time_seconds": 9.866666666666667,
      "reveal_frame": 421,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000195/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000195/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000195/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 41,
      "episode_index": 192,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 449,
      "fps": 30,
      "duration_seconds": 14.966666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        2,
        2,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lm-lr-mr-lr-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 40,
      "swap_start_frames": [
        83,
        129,
        170,
        209,
        246
      ],
      "swap_end_frames": [
        128,
        169,
        208,
        245,
        274
      ],
      "final_frame": 274,
      "final_time_seconds": 9.133333333333333,
      "reveal_frame": 356,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000192/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000192/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000192/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 42,
      "episode_index": 190,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 481,
      "fps": 30,
      "duration_seconds": 16.033333333333335,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        1,
        2,
        1,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-lr-mr-mr-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 59,
      "swap_start_frames": [
        100,
        140,
        180,
        220,
        256
      ],
      "swap_end_frames": [
        139,
        179,
        219,
        255,
        289
      ],
      "final_frame": 289,
      "final_time_seconds": 9.633333333333333,
      "reveal_frame": 401,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000190/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000190/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000190/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 43,
      "episode_index": 188,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 488,
      "fps": 30,
      "duration_seconds": 16.266666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        2,
        3,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-mr-lm-lm-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 47,
      "swap_start_frames": [
        93,
        136,
        177,
        219,
        258
      ],
      "swap_end_frames": [
        135,
        176,
        218,
        257,
        294
      ],
      "final_frame": 294,
      "final_time_seconds": 9.8,
      "reveal_frame": 400,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000188/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000188/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000188/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 44,
      "episode_index": 187,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 482,
      "fps": 30,
      "duration_seconds": 16.066666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        2,
        3,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-mr-lm-lm-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 41,
      "swap_start_frames": [
        82,
        127,
        170,
        219,
        264
      ],
      "swap_end_frames": [
        126,
        169,
        218,
        263,
        303
      ],
      "final_frame": 303,
      "final_time_seconds": 10.1,
      "reveal_frame": 396,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000187/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000187/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000187/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 45,
      "episode_index": 184,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 451,
      "fps": 30,
      "duration_seconds": 15.033333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        2,
        2,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-mr-lm-lr-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 45,
      "swap_start_frames": [
        91,
        135,
        173,
        214,
        248
      ],
      "swap_end_frames": [
        134,
        172,
        213,
        247,
        287
      ],
      "final_frame": 287,
      "final_time_seconds": 9.566666666666666,
      "reveal_frame": 370,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000184/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000184/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000184/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 46,
      "episode_index": 182,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 458,
      "fps": 30,
      "duration_seconds": 15.266666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        2,
        1,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-mr-lm-mr-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 55,
      "swap_start_frames": [
        100,
        136,
        172,
        206,
        244
      ],
      "swap_end_frames": [
        135,
        171,
        205,
        243,
        273
      ],
      "final_frame": 273,
      "final_time_seconds": 9.1,
      "reveal_frame": 375,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000182/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000182/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000182/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 47,
      "episode_index": 172,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 525,
      "fps": 30,
      "duration_seconds": 17.5,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        1,
        2,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-mr-lr-mr-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 67,
      "swap_start_frames": [
        118,
        170,
        217,
        258,
        299
      ],
      "swap_end_frames": [
        169,
        216,
        257,
        298,
        333
      ],
      "final_frame": 333,
      "final_time_seconds": 11.1,
      "reveal_frame": 428,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000172/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000172/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000172/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 48,
      "episode_index": 170,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 537,
      "fps": 30,
      "duration_seconds": 17.9,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        3,
        2,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lm-mr-mr-lm-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 55,
      "swap_start_frames": [
        98,
        143,
        183,
        223,
        269
      ],
      "swap_end_frames": [
        142,
        182,
        222,
        268,
        303
      ],
      "final_frame": 303,
      "final_time_seconds": 10.1,
      "reveal_frame": 434,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000170/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000170/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000170/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 49,
      "episode_index": 166,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 490,
      "fps": 30,
      "duration_seconds": 16.333333333333332,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        3,
        1,
        3
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-mr-mr-lr-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 48,
      "swap_start_frames": [
        92,
        136,
        177,
        226,
        275
      ],
      "swap_end_frames": [
        135,
        176,
        225,
        274,
        311
      ],
      "final_frame": 311,
      "final_time_seconds": 10.366666666666667,
      "reveal_frame": 413,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000166/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000166/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000166/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 50,
      "episode_index": 165,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 462,
      "fps": 30,
      "duration_seconds": 15.4,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        3,
        1,
        2
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lm-mr-mr-lr-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 51,
      "swap_start_frames": [
        94,
        136,
        172,
        215,
        256
      ],
      "swap_end_frames": [
        135,
        171,
        214,
        255,
        290
      ],
      "final_frame": 290,
      "final_time_seconds": 9.666666666666666,
      "reveal_frame": 384,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000165/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000165/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000165/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 51,
      "episode_index": 163,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 494,
      "fps": 30,
      "duration_seconds": 16.466666666666665,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        3,
        3,
        3,
        3,
        1
      ],
      "swap_pairs": [
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lm-mr-mr-mr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 55,
      "swap_start_frames": [
        123,
        166,
        203,
        239,
        278
      ],
      "swap_end_frames": [
        165,
        202,
        238,
        277,
        314
      ],
      "final_frame": 314,
      "final_time_seconds": 10.466666666666667,
      "reveal_frame": 414,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000163/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000163/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000163/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 52,
      "episode_index": 159,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 533,
      "fps": 30,
      "duration_seconds": 17.766666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        3,
        2,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-lm-lm-lm-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 50,
      "swap_start_frames": [
        98,
        143,
        189,
        234,
        275
      ],
      "swap_end_frames": [
        142,
        188,
        233,
        274,
        306
      ],
      "final_frame": 306,
      "final_time_seconds": 10.2,
      "reveal_frame": 429,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000159/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000159/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000159/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 53,
      "episode_index": 155,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 484,
      "fps": 30,
      "duration_seconds": 16.133333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        3,
        2,
        1,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lr-lm-lm-mr-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 43,
      "swap_start_frames": [
        85,
        140,
        183,
        229,
        268
      ],
      "swap_end_frames": [
        139,
        182,
        228,
        267,
        300
      ],
      "final_frame": 300,
      "final_time_seconds": 10.0,
      "reveal_frame": 403,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000155/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000155/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000155/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 54,
      "episode_index": 141,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 521,
      "fps": 30,
      "duration_seconds": 17.366666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        3,
        3,
        2,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-lm-mr-lm-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 70,
      "swap_start_frames": [
        115,
        156,
        200,
        245,
        289
      ],
      "swap_end_frames": [
        155,
        199,
        244,
        288,
        326
      ],
      "final_frame": 326,
      "final_time_seconds": 10.866666666666667,
      "reveal_frame": 443,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000141/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000141/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000141/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 55,
      "episode_index": 135,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 512,
      "fps": 30,
      "duration_seconds": 17.066666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        3,
        3,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-lm-mr-mr-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 46,
      "swap_start_frames": [
        91,
        146,
        195,
        237,
        273
      ],
      "swap_end_frames": [
        145,
        194,
        236,
        272,
        306
      ],
      "final_frame": 306,
      "final_time_seconds": 10.2,
      "reveal_frame": 427,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000135/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000135/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000135/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 56,
      "episode_index": 124,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 540,
      "fps": 30,
      "duration_seconds": 18.0,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        2,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-lr-lr-lm-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 65,
      "swap_start_frames": [
        115,
        165,
        215,
        259,
        331
      ],
      "swap_end_frames": [
        164,
        214,
        258,
        330,
        366
      ],
      "final_frame": 366,
      "final_time_seconds": 12.2,
      "reveal_frame": 452,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000124/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000124/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000124/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 57,
      "episode_index": 118,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 507,
      "fps": 30,
      "duration_seconds": 16.9,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        2,
        1,
        3
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-lr-lr-mr-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 46,
      "swap_start_frames": [
        91,
        139,
        183,
        223,
        265
      ],
      "swap_end_frames": [
        138,
        182,
        222,
        264,
        298
      ],
      "final_frame": 298,
      "final_time_seconds": 9.933333333333334,
      "reveal_frame": 409,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000118/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000118/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000118/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 58,
      "episode_index": 117,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 523,
      "fps": 30,
      "duration_seconds": 17.433333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        2,
        1,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-lr-lr-mr-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 49,
      "swap_start_frames": [
        95,
        142,
        190,
        235,
        284
      ],
      "swap_end_frames": [
        141,
        189,
        234,
        283,
        324
      ],
      "final_frame": 324,
      "final_time_seconds": 10.8,
      "reveal_frame": 434,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000117/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000117/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000117/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 59,
      "episode_index": 116,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 486,
      "fps": 30,
      "duration_seconds": 16.2,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        1,
        1,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lr-lr-mr-lm-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 47,
      "swap_start_frames": [
        88,
        133,
        176,
        221,
        265
      ],
      "swap_end_frames": [
        132,
        175,
        220,
        264,
        305
      ],
      "final_frame": 305,
      "final_time_seconds": 10.166666666666666,
      "reveal_frame": 395,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000116/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000116/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000116/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 60,
      "episode_index": 115,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 473,
      "fps": 30,
      "duration_seconds": 15.766666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        1,
        1,
        3
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-lr-mr-lm-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 43,
      "swap_start_frames": [
        82,
        129,
        173,
        212,
        251
      ],
      "swap_end_frames": [
        128,
        172,
        211,
        250,
        291
      ],
      "final_frame": 291,
      "final_time_seconds": 9.7,
      "reveal_frame": 391,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000115/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000115/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000115/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 61,
      "episode_index": 111,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 514,
      "fps": 30,
      "duration_seconds": 17.133333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        1,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-lr-mr-lr-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 39,
      "swap_start_frames": [
        85,
        134,
        180,
        227,
        269
      ],
      "swap_end_frames": [
        133,
        179,
        226,
        268,
        301
      ],
      "final_frame": 301,
      "final_time_seconds": 10.033333333333333,
      "reveal_frame": 419,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000111/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000111/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000111/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 62,
      "episode_index": 110,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 557,
      "fps": 30,
      "duration_seconds": 18.566666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        2,
        1,
        2,
        3
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lr-lr-mr-mr-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 61,
      "swap_start_frames": [
        107,
        152,
        200,
        252,
        292
      ],
      "swap_end_frames": [
        151,
        199,
        251,
        291,
        334
      ],
      "final_frame": 334,
      "final_time_seconds": 11.133333333333333,
      "reveal_frame": 454,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000110/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000110/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000110/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 63,
      "episode_index": 106,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 480,
      "fps": 30,
      "duration_seconds": 16.0,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        1,
        1,
        3
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-mr-lm-lm-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 42,
      "swap_start_frames": [
        75,
        120,
        160,
        202,
        241
      ],
      "swap_end_frames": [
        119,
        159,
        201,
        240,
        285
      ],
      "final_frame": 285,
      "final_time_seconds": 9.5,
      "reveal_frame": 394,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000106/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000106/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000106/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 64,
      "episode_index": 104,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 522,
      "fps": 30,
      "duration_seconds": 17.4,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        1,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lr-mr-lm-lr-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 47,
      "swap_start_frames": [
        92,
        135,
        181,
        224,
        271
      ],
      "swap_end_frames": [
        134,
        180,
        223,
        270,
        305
      ],
      "final_frame": 305,
      "final_time_seconds": 10.166666666666666,
      "reveal_frame": 427,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000104/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000104/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000104/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 65,
      "episode_index": 95,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 490,
      "fps": 30,
      "duration_seconds": 16.333333333333332,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        3,
        1,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lr-mr-lr-lr-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 40,
      "swap_start_frames": [
        81,
        130,
        187,
        234,
        278
      ],
      "swap_end_frames": [
        129,
        186,
        233,
        277,
        315
      ],
      "final_frame": 315,
      "final_time_seconds": 10.5,
      "reveal_frame": 408,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000095/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000095/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000095/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 66,
      "episode_index": 91,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 506,
      "fps": 30,
      "duration_seconds": 16.866666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        3,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "lr-mr-lr-mr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 43,
      "swap_start_frames": [
        85,
        137,
        182,
        223,
        270
      ],
      "swap_end_frames": [
        136,
        181,
        222,
        269,
        311
      ],
      "final_frame": 311,
      "final_time_seconds": 10.366666666666667,
      "reveal_frame": 420,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000091/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000091/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000091/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 67,
      "episode_index": 89,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 514,
      "fps": 30,
      "duration_seconds": 17.133333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        2,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "lr-mr-mr-lm-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 47,
      "swap_start_frames": [
        93,
        143,
        190,
        231,
        272
      ],
      "swap_end_frames": [
        142,
        189,
        230,
        271,
        309
      ],
      "final_frame": 309,
      "final_time_seconds": 10.3,
      "reveal_frame": 432,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000089/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000089/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000089/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 68,
      "episode_index": 87,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 526,
      "fps": 30,
      "duration_seconds": 17.533333333333335,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        2,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-mr-mr-lm-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 42,
      "swap_start_frames": [
        83,
        123,
        166,
        207,
        248
      ],
      "swap_end_frames": [
        122,
        165,
        206,
        247,
        278
      ],
      "final_frame": 278,
      "final_time_seconds": 9.266666666666667,
      "reveal_frame": 430,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000087/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000087/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000087/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 69,
      "episode_index": 81,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 496,
      "fps": 30,
      "duration_seconds": 16.533333333333335,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        2,
        1,
        2,
        1,
        2
      ],
      "swap_pairs": [
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "lr-mr-mr-mr-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 46,
      "swap_start_frames": [
        89,
        131,
        171,
        211,
        252
      ],
      "swap_end_frames": [
        130,
        170,
        210,
        251,
        288
      ],
      "final_frame": 288,
      "final_time_seconds": 9.6,
      "reveal_frame": 410,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000081/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000081/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000081/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 70,
      "episode_index": 77,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 505,
      "fps": 30,
      "duration_seconds": 16.833333333333332,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        1,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lm-lm-lr-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 42,
      "swap_start_frames": [
        78,
        116,
        157,
        196,
        237
      ],
      "swap_end_frames": [
        115,
        156,
        195,
        236,
        272
      ],
      "final_frame": 272,
      "final_time_seconds": 9.066666666666666,
      "reveal_frame": 408,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000077/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000077/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000077/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 71,
      "episode_index": 76,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 524,
      "fps": 30,
      "duration_seconds": 17.466666666666665,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        1,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-lm-lm-lr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 46,
      "swap_start_frames": [
        88,
        133,
        175,
        218,
        269
      ],
      "swap_end_frames": [
        132,
        174,
        217,
        268,
        321
      ],
      "final_frame": 321,
      "final_time_seconds": 10.7,
      "reveal_frame": 431,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000076/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000076/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000076/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 72,
      "episode_index": 75,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 482,
      "fps": 30,
      "duration_seconds": 16.066666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        1,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lm-lm-lr-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 38,
      "swap_start_frames": [
        77,
        118,
        160,
        206,
        249
      ],
      "swap_end_frames": [
        117,
        159,
        205,
        248,
        284
      ],
      "final_frame": 284,
      "final_time_seconds": 9.466666666666667,
      "reveal_frame": 397,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000075/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000075/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000075/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 73,
      "episode_index": 73,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 496,
      "fps": 30,
      "duration_seconds": 16.533333333333335,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        1,
        2,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-lm-lm-mr-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 45,
      "swap_start_frames": [
        85,
        131,
        175,
        223,
        271
      ],
      "swap_end_frames": [
        130,
        174,
        222,
        270,
        307
      ],
      "final_frame": 307,
      "final_time_seconds": 10.233333333333333,
      "reveal_frame": 410,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000073/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000073/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000073/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 74,
      "episode_index": 67,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 528,
      "fps": 30,
      "duration_seconds": 17.6,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        3,
        1,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-lm-lr-lr-lr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 38,
      "swap_start_frames": [
        80,
        138,
        185,
        231,
        279
      ],
      "swap_end_frames": [
        137,
        184,
        230,
        278,
        319
      ],
      "final_frame": 319,
      "final_time_seconds": 10.633333333333333,
      "reveal_frame": 444,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000067/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000067/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000067/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 75,
      "episode_index": 63,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 512,
      "fps": 30,
      "duration_seconds": 17.066666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        3,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lm-lr-mr-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 48,
      "swap_start_frames": [
        85,
        127,
        174,
        217,
        253
      ],
      "swap_end_frames": [
        126,
        173,
        216,
        252,
        285
      ],
      "final_frame": 285,
      "final_time_seconds": 9.5,
      "reveal_frame": 430,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000063/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000063/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000063/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 76,
      "episode_index": 62,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 498,
      "fps": 30,
      "duration_seconds": 16.6,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        2,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lm-mr-lm-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 42,
      "swap_start_frames": [
        86,
        131,
        176,
        221,
        261
      ],
      "swap_end_frames": [
        130,
        175,
        220,
        260,
        294
      ],
      "final_frame": 294,
      "final_time_seconds": 9.8,
      "reveal_frame": 421,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000062/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000062/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000062/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 77,
      "episode_index": 59,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 481,
      "fps": 30,
      "duration_seconds": 16.033333333333335,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        1,
        2,
        2,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lm-mr-lr-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 37,
      "swap_start_frames": [
        76,
        123,
        168,
        215,
        255
      ],
      "swap_end_frames": [
        122,
        167,
        214,
        254,
        290
      ],
      "final_frame": 290,
      "final_time_seconds": 9.666666666666666,
      "reveal_frame": 395,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000059/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000059/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000059/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 78,
      "episode_index": 51,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 494,
      "fps": 30,
      "duration_seconds": 16.466666666666665,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        2,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lr-lm-lm-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 49,
      "swap_start_frames": [
        83,
        129,
        174,
        218,
        252
      ],
      "swap_end_frames": [
        128,
        173,
        217,
        251,
        289
      ],
      "final_frame": 289,
      "final_time_seconds": 9.633333333333333,
      "reveal_frame": 400,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000051/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000051/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000051/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 79,
      "episode_index": 49,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 461,
      "fps": 30,
      "duration_seconds": 15.366666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        2,
        2,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-lr-lm-lr-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 45,
      "swap_start_frames": [
        76,
        120,
        158,
        199,
        241
      ],
      "swap_end_frames": [
        119,
        157,
        198,
        240,
        284
      ],
      "final_frame": 284,
      "final_time_seconds": 9.466666666666667,
      "reveal_frame": 383,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000049/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000049/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000049/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 80,
      "episode_index": 45,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 508,
      "fps": 30,
      "duration_seconds": 16.933333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        2,
        1,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lr-lm-mr-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 44,
      "swap_start_frames": [
        89,
        137,
        182,
        225,
        268
      ],
      "swap_end_frames": [
        136,
        181,
        224,
        267,
        306
      ],
      "final_frame": 306,
      "final_time_seconds": 10.2,
      "reveal_frame": 427,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000045/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000045/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000045/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 81,
      "episode_index": 44,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 455,
      "fps": 30,
      "duration_seconds": 15.166666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        1,
        1,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lr-lr-lm-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 36,
      "swap_start_frames": [
        73,
        119,
        164,
        207,
        246
      ],
      "swap_end_frames": [
        118,
        163,
        206,
        245,
        277
      ],
      "final_frame": 277,
      "final_time_seconds": 9.233333333333333,
      "reveal_frame": 375,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000044/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000044/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000044/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 82,
      "episode_index": 41,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 477,
      "fps": 30,
      "duration_seconds": 15.9,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        1,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lr-lr-lr-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 52,
      "swap_start_frames": [
        84,
        121,
        166,
        208,
        247
      ],
      "swap_end_frames": [
        120,
        165,
        207,
        246,
        283
      ],
      "final_frame": 283,
      "final_time_seconds": 9.433333333333334,
      "reveal_frame": 396,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000041/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000041/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000041/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 83,
      "episode_index": 34,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 506,
      "fps": 30,
      "duration_seconds": 16.866666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        3,
        2,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-lr-mr-lm-lr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 44,
      "swap_start_frames": [
        83,
        127,
        172,
        223,
        266
      ],
      "swap_end_frames": [
        126,
        171,
        222,
        265,
        309
      ],
      "final_frame": 309,
      "final_time_seconds": 10.3,
      "reveal_frame": 411,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000034/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000034/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000034/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 84,
      "episode_index": 33,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 497,
      "fps": 30,
      "duration_seconds": 16.566666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        3,
        2,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lr-mr-lm-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 42,
      "swap_start_frames": [
        78,
        130,
        176,
        216,
        256
      ],
      "swap_end_frames": [
        129,
        175,
        215,
        255,
        296
      ],
      "final_frame": 296,
      "final_time_seconds": 9.866666666666667,
      "reveal_frame": 407,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000033/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000033/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000033/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 85,
      "episode_index": 30,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 477,
      "fps": 30,
      "duration_seconds": 15.9,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        3,
        1,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lr-mr-lr-mr",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 37,
      "swap_start_frames": [
        74,
        120,
        159,
        210,
        251
      ],
      "swap_end_frames": [
        119,
        158,
        209,
        250,
        280
      ],
      "final_frame": 280,
      "final_time_seconds": 9.333333333333334,
      "reveal_frame": 393,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000030/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000030/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000030/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 86,
      "episode_index": 29,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 483,
      "fps": 30,
      "duration_seconds": 16.1,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        3,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-lr-mr-mr-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 47,
      "swap_start_frames": [
        83,
        129,
        171,
        208,
        245
      ],
      "swap_end_frames": [
        128,
        170,
        207,
        244,
        279
      ],
      "final_frame": 279,
      "final_time_seconds": 9.3,
      "reveal_frame": 397,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000029/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000029/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000029/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 87,
      "episode_index": 28,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 478,
      "fps": 30,
      "duration_seconds": 15.933333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        3,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-lr-mr-mr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 52,
      "swap_start_frames": [
        87,
        134,
        177,
        216,
        254
      ],
      "swap_end_frames": [
        133,
        176,
        215,
        253,
        297
      ],
      "final_frame": 297,
      "final_time_seconds": 9.9,
      "reveal_frame": 394,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000028/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000028/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000028/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 88,
      "episode_index": 27,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 468,
      "fps": 30,
      "duration_seconds": 15.6,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        3,
        3,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-lr-mr-mr-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 49,
      "swap_start_frames": [
        86,
        133,
        176,
        217,
        247
      ],
      "swap_end_frames": [
        132,
        175,
        216,
        246,
        276
      ],
      "final_frame": 276,
      "final_time_seconds": 9.2,
      "reveal_frame": 372,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000027/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000027/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000027/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 89,
      "episode_index": 26,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 502,
      "fps": 30,
      "duration_seconds": 16.733333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        3,
        2,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-mr-lm-lm-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 44,
      "swap_start_frames": [
        79,
        116,
        162,
        214,
        257
      ],
      "swap_end_frames": [
        115,
        161,
        213,
        256,
        293
      ],
      "final_frame": 293,
      "final_time_seconds": 9.766666666666667,
      "reveal_frame": 409,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000026/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000026/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000026/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 90,
      "episode_index": 24,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 492,
      "fps": 30,
      "duration_seconds": 16.4,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        3,
        2,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-mr-lm-lm-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 48,
      "swap_start_frames": [
        85,
        123,
        164,
        211,
        249
      ],
      "swap_end_frames": [
        122,
        163,
        210,
        248,
        281
      ],
      "final_frame": 281,
      "final_time_seconds": 9.366666666666667,
      "reveal_frame": 408,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000024/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000024/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000024/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 91,
      "episode_index": 20,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 469,
      "fps": 30,
      "duration_seconds": 15.633333333333333,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        3,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-mr-lm-mr-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 46,
      "swap_start_frames": [
        82,
        121,
        164,
        205,
        247
      ],
      "swap_end_frames": [
        120,
        163,
        204,
        246,
        278
      ],
      "final_frame": 278,
      "final_time_seconds": 9.266666666666667,
      "reveal_frame": 378,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000020/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000020/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000020/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 92,
      "episode_index": 17,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 453,
      "fps": 30,
      "duration_seconds": 15.1,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        2,
        3,
        2
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-mr-lr-lm-lm",
      "initial_position": 2,
      "final_position": 2,
      "final_label": "middle",
      "initial_frame": 45,
      "swap_start_frames": [
        83,
        123,
        160,
        203,
        240
      ],
      "swap_end_frames": [
        122,
        159,
        202,
        239,
        271
      ],
      "final_frame": 271,
      "final_time_seconds": 9.033333333333333,
      "reveal_frame": 369,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000017/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000017/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000017/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 93,
      "episode_index": 16,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 493,
      "fps": 30,
      "duration_seconds": 16.433333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        2,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-mr-lr-lm-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 46,
      "swap_start_frames": [
        84,
        129,
        173,
        248,
        288
      ],
      "swap_end_frames": [
        128,
        172,
        247,
        287,
        319
      ],
      "final_frame": 319,
      "final_time_seconds": 10.633333333333333,
      "reveal_frame": 404,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000016/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000016/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000016/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 94,
      "episode_index": 15,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 467,
      "fps": 30,
      "duration_seconds": 15.566666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        2,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-mr-lr-lm-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 43,
      "swap_start_frames": [
        82,
        125,
        170,
        208,
        243
      ],
      "swap_end_frames": [
        124,
        169,
        207,
        242,
        272
      ],
      "final_frame": 272,
      "final_time_seconds": 9.066666666666666,
      "reveal_frame": 374,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000015/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000015/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000015/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 95,
      "episode_index": 14,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 481,
      "fps": 30,
      "duration_seconds": 16.033333333333335,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        2,
        2,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-mr-lr-lr-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 45,
      "swap_start_frames": [
        79,
        119,
        157,
        197,
        237
      ],
      "swap_end_frames": [
        118,
        156,
        196,
        236,
        272
      ],
      "final_frame": 272,
      "final_time_seconds": 9.066666666666666,
      "reveal_frame": 383,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000014/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000014/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000014/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 96,
      "episode_index": 8,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 435,
      "fps": 30,
      "duration_seconds": 14.5,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        1,
        1,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-mr-mr-lm-lm",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 49,
      "swap_start_frames": [
        81,
        116,
        155,
        193,
        227
      ],
      "swap_end_frames": [
        115,
        154,
        192,
        226,
        274
      ],
      "final_frame": 274,
      "final_time_seconds": 9.133333333333333,
      "reveal_frame": 362,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000008/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000008/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000008/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 97,
      "episode_index": 4,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 449,
      "fps": 30,
      "duration_seconds": 14.966666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        1,
        3,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          3
        ]
      ],
      "pair_sequence": "mr-mr-mr-lr-lr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 41,
      "swap_start_frames": [
        78,
        121,
        166,
        206,
        259
      ],
      "swap_end_frames": [
        120,
        165,
        205,
        258,
        290
      ],
      "final_frame": 290,
      "final_time_seconds": 9.666666666666666,
      "reveal_frame": 373,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000004/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000004/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000004/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 98,
      "episode_index": 3,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 460,
      "fps": 30,
      "duration_seconds": 15.333333333333334,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        1,
        3,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          3
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-mr-mr-lr-mr",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 46,
      "swap_start_frames": [
        79,
        111,
        147,
        190,
        230
      ],
      "swap_end_frames": [
        110,
        146,
        189,
        229,
        260
      ],
      "final_frame": 260,
      "final_time_seconds": 8.666666666666666,
      "reveal_frame": 382,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000003/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000003/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000003/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 99,
      "episode_index": 2,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 440,
      "fps": 30,
      "duration_seconds": 14.666666666666666,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        1,
        2,
        3
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          2,
          3
        ]
      ],
      "pair_sequence": "mr-mr-mr-mr-lm",
      "initial_position": 2,
      "final_position": 3,
      "final_label": "left",
      "initial_frame": 41,
      "swap_start_frames": [
        73,
        107,
        144,
        180,
        216
      ],
      "swap_end_frames": [
        106,
        143,
        179,
        215,
        266
      ],
      "final_frame": 266,
      "final_time_seconds": 8.866666666666667,
      "reveal_frame": 365,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000002/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000002/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000002/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    },
    {
      "test_number": 100,
      "episode_index": 0,
      "group": "added70",
      "group_label": "Additional 70",
      "source_dataset": "0826_cup_5mix",
      "frames": 404,
      "fps": 30,
      "duration_seconds": 13.466666666666667,
      "cup_count": 3,
      "swap_count": 5,
      "position_sequence": [
        2,
        1,
        2,
        1,
        2,
        1
      ],
      "swap_pairs": [
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ],
        [
          1,
          2
        ]
      ],
      "pair_sequence": "mr-mr-mr-mr-mr",
      "initial_position": 2,
      "final_position": 1,
      "final_label": "right",
      "initial_frame": 53,
      "swap_start_frames": [
        82,
        116,
        151,
        186,
        221
      ],
      "swap_end_frames": [
        115,
        150,
        185,
        220,
        248
      ],
      "final_frame": 248,
      "final_time_seconds": 8.266666666666667,
      "reveal_frame": 331,
      "videos": {
        "cam_high": "../media/cup_holdout100_new/000000/cam_high.mp4",
        "cam_left_wrist": "../media/cup_holdout100_new/000000/cam_left_wrist.mp4",
        "cam_right_wrist": "../media/cup_holdout100_new/000000/cam_right_wrist.mp4"
      },
      "annotation_method": "Existing per-frame location annotations. Swap pairs inferred from consecutive locations; unchanged location means the other two cups swapped. Boundaries follow the existing annotations."
    }
  ]
}
