robot-data-diff

Track changes for robot training data.

Real pre-computed results · this page runs no code

Compare two versions of a LeRobot dataset and see exactly which episodes changed.

Run it locally:

pip install robot-data-diff
robot-data-diff diff lerobot/pusht@855546dc lerobot/pusht@main

How it works

Dataset v2.1 Dataset v3.0 robot-data-diff episode-aware diff Added Removed Changed Unchanged

Give the tool two versions of a dataset. It compares them episode by episode and sorts every episode into Added, Removed, Changed, or Unchanged.

This page shows real, pre-computed diffs — the same reports the tool produces. It cannot run a new pair in the browser (this is a free Static Space: pages only, no Python). To diff your own pair, run it locally:

Silent joint recalibration — svla_so100_pickplace v2.1 → v3.0

50 → 50 · 0 added · 0 removed · 50 changed · 0 unchanged. Two joint dims remapped on every episode.

50 → 50
Episodes
0
Added
0
Removed
50
Changed
0
Unchanged

One block per episode — all 50 changed.

Changed: 50    Unchanged: 0

What actually changed: two joints remapped

dim 1: v3 = 90 − v2   new value = 90 minus the old value

dim 2: v3 = v2 − 90   new value = the old value minus 90

Dims 0, 3, 4, 5 did not change — identical in v2.1 and v3.0.

Show full report
========================================================================
robot-data-diff  —  episode-aware dataset diff
========================================================================
A: lerobot/svla_so100_pickplace@a440cbb2   (v2.1, 50 episodes, 30 fps)
B: lerobot/svla_so100_pickplace@main   (v3.0, 50 episodes, 30 fps)

Episodes: 50 -> 50 (+0 added, -0 removed, ~50 changed, =0 unchanged)

CHANGED EPISODES (50):
  [ep 0] length 454 -> 454 (+0 frames)
           d(action_min)  [+0.0000, -184.5703, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -184.5703, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -213.7291, -89.9998, +0.0000, +0.0001, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 1] length 468 -> 468 (+0 frames)
           d(action_min)  [+0.0000, -178.0664, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -178.0664, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -204.3904, -89.9998, +0.0000, -0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 2] length 420 -> 420 (+0 frames)
           d(action_min)  [+0.0000, -192.5684, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -192.5684, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -224.8841, -89.9997, +0.0000, +0.0002, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 3] length 416 -> 416 (+0 frames)
           d(action_min)  [+0.0000, -179.3848, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -179.3848, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -208.7897, -89.9999, +0.0000, -0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 4] length 401 -> 401 (+0 frames)
           d(action_min)  [+0.0000, -195.9961, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -195.9961, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -227.6912, -89.9998, +0.0000, -0.0001, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 5] length 354 -> 354 (+0 frames)
           d(action_min)  [+0.0000, -190.9863, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -190.9863, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -223.9423, -89.9999, +0.0000, +0.0000, -0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 6] length 357 -> 357 (+0 frames)
           d(action_min)  [+0.0000, -180.7910, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -180.7910, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -219.5686, -89.9998, +0.0000, +0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 7] length 351 -> 351 (+0 frames)
           d(action_min)  [+0.0000, -180.9668, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -180.9668, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -221.6553, -89.9998, +0.0000, +0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 8] length 368 -> 368 (+0 frames)
           d(action_min)  [+0.0000, -186.5918, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -186.5918, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -216.8870, -89.9997, +0.0000, +0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 9] length 388 -> 388 (+0 frames)
           d(action_min)  [+0.0000, -181.9336, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -181.9336, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -213.1301, -89.9998, +0.0000, +0.0000, -0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 10] length 364 -> 364 (+0 frames)
           d(action_min)  [+0.0000, -161.6309, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -161.6309, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -172.2101, -90.0000, +0.0000, -0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 11] length 377 -> 377 (+0 frames)
           d(action_min)  [+0.0000, -166.3770, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -166.3770, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -197.8757, -89.9999, +0.0000, -0.0001, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 12] length 369 -> 369 (+0 frames)
           d(action_min)  [+0.0000, -157.1484, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -157.1484, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -188.0868, -89.9998, +0.0000, +0.0001, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 13] length 357 -> 357 (+0 frames)
           d(action_min)  [+0.0000, -164.8828, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -164.8828, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -206.6688, -89.9999, +0.0000, +0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 14] length 375 -> 375 (+0 frames)
           d(action_min)  [+0.0000, -163.4766, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -163.4766, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -200.9436, -89.9999, +0.0000, +0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 15] length 384 -> 384 (+0 frames)
           d(action_min)  [+0.0000, -167.9590, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -167.9590, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -203.6738, -89.9998, +0.0000, +0.0001, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 16] length 365 -> 365 (+0 frames)
           d(action_min)  [+0.0000, -164.1797, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -164.1797, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -191.1779, -89.9999, +0.0000, -0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 17] length 409 -> 409 (+0 frames)
           d(action_min)  [+0.0000, -156.7090, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -156.7090, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -187.6610, -89.9998, +0.0000, -0.0001, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 18] length 385 -> 385 (+0 frames)
           d(action_min)  [+0.0000, -167.2559, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -167.2559, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -196.9664, -89.9999, +0.0000, +0.0000, -0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 19] length 367 -> 367 (+0 frames)
           d(action_min)  [+0.0000, -173.7598, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -173.7598, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -206.0649, -89.9998, +0.0000, +0.0000, +0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 20] length 366 -> 366 (+0 frames)
           d(action_min)  [+0.0000, -190.7227, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -190.7227, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -223.5961, -89.9997, +0.0000, +0.0000, -0.0000]
           d(idle_ratio)  +0.0000
           d(spikes)      +0
  [ep 21] length 370 -> 370 (+0 frames)
           d(action_min)  [+0.0000, -188.9648, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_max)  [+0.0000, -188.9648, -90.0000, +0.0000, +0.0000, +0.0000]
           d(action_mean) [+0.0000, -222.3631, -89.9997, +0.0000, +0.0000, +0.0000]
           d(idle_ratio)  +0.0000

… (full per-episode list truncated for the page — run the tool locally for the complete report.)

Clean migration — svla_so101_pickplace v2.1 → v3.0

50 → 50 · 0 added · 0 removed · 0 changed · 50 unchanged. A bit-perfect migration.

50 → 50
Episodes
0
Added
0
Removed
0
Changed
50
Unchanged

One block per episode — all 50 unchanged.

Changed: 0    Unchanged: 50

Show full report
========================================================================
robot-data-diff  —  episode-aware dataset diff
========================================================================
A: lerobot/svla_so101_pickplace@50920d7c   (v2.1, 50 episodes, 30 fps)
B: lerobot/svla_so101_pickplace@main   (v3.0, 50 episodes, 30 fps)

Episodes: 50 -> 50 (+0 added, -0 removed, ~0 changed, =50 unchanged)

No changed episodes (same index + identical stats).

TASK INVENTORY (episodes per task: A -> B):
    pink lego brick into the transparent box                          50 ->    50

Schema: identical feature sets.

QUALITY SUMMARY (heuristic, CPU-only):
  mean idle-frame ratio: 0.2302 -> 0.2302 (+0.0000)
  total action spikes:   14 -> 14 (+0)

========================================================================

Task labels only — lerobot/pusht v2.1 → v3.0

206 → 206 · 0 added · 0 removed · 206 flagged · 0 unchanged — but only the task-label formatting changed; the episode data is untouched.

206 → 206
Episodes
0
Added
0
Removed
206
Changed
0
Unchanged

One block per episode — all 206 flagged (labels only).

Changed: 206    Unchanged: 0

Show full report
========================================================================
robot-data-diff  —  episode-aware dataset diff
========================================================================
A: lerobot/pusht@855546dc   (v2.1, 206 episodes, 10 fps)
B: lerobot/pusht@main   (v3.0, 206 episodes, 10 fps)

Episodes: 206 -> 206 (+0 added, -0 removed, ~206 changed, =0 unchanged)

CHANGED EPISODES (206):
  [ep 0] length 161 -> 161 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 1] length 118 -> 118 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 2] length 141 -> 141 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 3] length 159 -> 159 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 4] length 159 -> 159 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 5] length 157 -> 157 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 6] length 69 -> 69 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 7] length 169 -> 169 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 8] length 80 -> 80 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 9] length 134 -> 134 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 10] length 188 -> 188 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 11] length 149 -> 149 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 12] length 140 -> 140 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 13] length 125 -> 125 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 14] length 107 -> 107 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 15] length 153 -> 153 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 16] length 126 -> 126 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 17] length 102 -> 102 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 18] length 86 -> 86 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 19] length 75 -> 75 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 20] length 142 -> 142 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 21] length 115 -> 115 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 22] length 109 -> 109 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 23] length 110 -> 110 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 24] length 98 -> 98 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 25] length 133 -> 133 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 26] length 158 -> 158 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 27] length 112 -> 112 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 28] length 107 -> 107 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 29] length 115 -> 115 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 30] length 84 -> 84 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 31] length 95 -> 95 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 32] length 148 -> 148 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 33] length 120 -> 120 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 34] length 142 -> 142 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 35] length 143 -> 143 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 36] length 142 -> 142 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 37] length 121 -> 121 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 38] length 186 -> 186 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 39] length 99 -> 99 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 40] length 139 -> 139 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 41] length 73 -> 73 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 42] length 136 -> 136 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 43] length 118 -> 118 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 44] length 127 -> 127 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 45] length 152 -> 152 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 46] length 83 -> 83 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 47] length 109 -> 109 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 48] length 138 -> 138 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 49] length 83 -> 83 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 50] length 69 -> 69 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 51] length 73 -> 73 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 52] length 136 -> 136 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 53] length 173 -> 173 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 54] length 205 -> 205 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 55] length 106 -> 106 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 56] length 105 -> 105 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 57] length 83 -> 83 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 58] length 118 -> 118 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 59] length 122 -> 122 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 60] length 60 -> 60 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 61] length 150 -> 150 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 62] length 67 -> 67 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 63] length 140 -> 140 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 64] length 103 -> 103 (+0 frames)
           tasks: ["['Push the T-shaped block onto the T-shaped target.']"] -> ['Push the T-shaped block onto the T-shaped target.']
  [ep 65] length 166 -> 166 (+0 frames)

… (full per-episode list truncated for the page — run the tool locally for the complete report.)