Build1 publisher2 min readPublished
An audit of 4,940 robot episodes found a four-to-one idle-time gap inside one lab's data
Thirteen public LeRobot datasets cleared every integrity check on default thresholds, while the same tool's behaviour layer measured median idle time of 20.8% on one xArm task and 83.3% on another from the same rig.
The Engineer · Build desk

What happened
- RDA v0.9.7 was run over 13 LeRobot-format datasets pulled from HuggingFace Hub, 4,940 episodes in total, on default thresholds with no per-dataset tuning.
- Every one of the 4,940 episodes passed the integrity layer, with no missing frames, no NaN values, no schema mismatches and no timestamp inversions.
- RDA is wired so that only the hard integrity checks can set an EXCLUDE verdict, and the diagnostic layers emit findings without touching the verdict.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint A team that shortlists datasets by finding count is ordering them by how one default threshold reacts to each action space, and that order will not survive re-tuning.
- decision An 83.3% idle median is a choice to be made before the first training run: reweight the loss, subsample the waiting, or accept a policy pulled toward no-op actions.
- contradiction The post ties these behavioural profiles to training outcomes while reporting only measurements of the data, so the training claim rests on argument and not on a result in the material.
- precedent Barring diagnostics from setting a verdict sets an expectation for data tooling: corruption excludes an episode, and skew gets reported to whoever has to price it.
The separation of measurement from judgement is the part I would copy. Give a diagnostic the power to drop episodes and you will spend the next sprint arguing about its threshold. In RDA v0.9.7 only L1's nine deterministic hard checks can set an EXCLUDE verdict; L2's eight motion and video metrics, L3's four profile metrics and L4's per-dataset P10/P50/P90 aggregation report and nothing more [4][5].
The two xArm sets are the cleanest comparison in the audit, because the confounds are held still: same platform, same lab, same team, 800 episodes each [6][7][8]. Median effective motion runs 79.2% on the lift task and 16.7% on the push task, a 4.7x spread [7][8][1]. Episodes carrying at least one L2 finding run 72 of 800 against 629 of 800, roughly nine times as many on equal samples [2]. The write-up attributes the gap to the tasks: lift is large-amplitude pick and place, push is a small-force nudge then watch [9]. Its warning about the consequence is stated as structure, not as a result: the post says a loss function trained on a 75%-idle distribution is structurally biased toward predicting inaction [10].
The discontinuity table is where I would be slowest to transfer a number. Spikes are found with MAD-based detection at default thresholds [11]. jaco_play flags 176 of 1,085 episodes at a median of 10 spikes per episode; libero_10 flags 0 of 379 at the same median of 10 [15][16]. Same median, different flag rate. MAD-based detection sets its bar from the dispersion of the sequence it is scanning, so I would treat the flag rate as a property of each dataset's action space as much as of its spike count. Both ALOHA scripted simulation sets flag every episode they have, at medians of 33 and 49 spikes, which the post puts down to scripted controller discretization [12].
Per-dataset episode counts appear for nine of the 13 sets. They sum to 3,555 episodes, or 72% of the 4,940 audited, leaving 1,385 episodes not broken out [3].
For the idle finding to bite on someone else's stack, the policy would have to see frames at close to the collection rate. Subsample, or predict action chunks, and the idle fraction reaching the loss is not the 83.3% measured on xarm_push_medium [8]. Every figure here is a measurement of a dataset under one tool's defaults, and the post does not report a training run; its own framing is narrower than a benchmark, saying the results challenge the assumption that "clean data" and "good training data" are the same thing [19].
What to watch
- Whether the L3 profile numbers for the same 13 datasets get published, since the four coverage and efficiency metrics are described but not reported.
- Whether anyone trains matched policies on xarm_lift_medium and xarm_push_medium to test the idle-bias claim against a measured result.
- Whether LeRobot dataset cards begin carrying idle ratio and spike medians next to integrity pass/fail.