Gantry

When something goes wrong

Every message the bench can hand back, what it actually means, and what to do next. Most of these are one line to fix and worth retrying straight away. Where the fault is ours rather than your data, it says so.

Jump to

  1. The fetch did not land
  2. Over the size limit
  3. Gated, private, or not found
  4. Not a LeRobot export
  5. A version the checks do not read
  6. Two index files disagree
  7. Missing, short, or unreadable video
  8. Not every clip carries the same camera
  9. Too few clips to conclude anything
  10. The shuffled control won
  11. It has been running a long time

The fetch did not land

Our side, retry
What you saw The fetch broke on our side, not because of the dataset. ConnectionError, Network error, HTTP status client error (429 Too Many Requests)

Hugging Face rate limited us while pulling your files. It has nothing to do with your data. Datasets filed as one small file per episode are the usual trigger, because pulling one is several hundred separate requests.

The fetcher now backs off and tries again on its own, up to four times, going slower and plainer each attempt. If you saw this message, all four attempts were refused.

What to do

  1. Paste the same link again. Rate limits clear on their own, usually within a few minutes. Nothing about your dataset needs changing.
  2. If it keeps happening, download the dataset yourself and upload the zip from the new submission page. That path does not touch the Hub at all.

Over the size limit

Trim and retry
What you saw your-name/your-dataset is 2.4 GB, over the 1 GB fetch limit. Push a subset of the episodes to a new repo, or upload a trimmed archive

One gigabyte, whether the bytes arrive by paste or by upload. The limit is checked against the Hub's own file listing before anything downloads, so an oversized dataset costs you seconds rather than a long wait.

Sending fewer episodes costs you nothing in the answer. The checks read the same things either way, and a hundred clips is comfortably enough to conclude on.

What to do

  • Push a subset to a new repo. A hundred episodes of the same task is plenty.
  • Or trim the archive and upload it directly.
  • Cutting video resolution or dropping a redundant camera also works, if you would rather keep every episode.

Gated, private, or not found

Needs your account
What you saw your-name/your-dataset is gated on Hugging Face, so we cannot pull it

there is no public dataset called your-name/your-dataset on Hugging Face. Check the link on the dataset's page; private repos are invisible to us

We pull anonymously, so anything your own account can see but a stranger cannot is invisible to us. That covers private repos and gated ones whose terms you have accepted and we have not.

What to do

  1. Download it yourself, since your account already has access.
  2. Upload the zip on the new submission page.
  3. For a not-found message, copy the link from the dataset's own page. A model page or a personal profile link will not resolve to a dataset.

Not a LeRobot export

Convert and retry
What you saw your-name/your-dataset has no meta/info.json, so it is not a LeRobot dataset

the dataset declares no episodes

no action channel, so there is nothing for a policy to imitate

The checks read a LeRobot export, which means a meta/info.json describing the features and a data/ folder holding them. Without the metadata there is no way to know which column is an action and which is a joint reading, and guessing is how a millimetre comes to be read as a metre.

Every frame needs the command that was issued at it, not only the position the arm reached. A dataset of states alone has nothing for a policy to imitate.

What to do

  • Re-export with LeRobot and push that, or upload the export directly.
  • If your footage is a person rather than a robot, that is accepted too. Upload the video with a clips.json saying what each clip shows and where it was filmed, and the arm movements are worked out from the hands.
  • If total_episodes reads zero, the export did not finish. Run it again before uploading.

A version the checks do not read

Re-export
What you saw this is a LeRobot v1.6 export, and the checks read v2.0, v2.1, v3.0

v2.0, v2.1 and v3.0 all work. If you hit this on a v3 dataset before 17 August 2026, that is fixed now and the same link will go through.

The layouts differ in how episodes are filed, not in what was recorded, so a supported export of the same footage gives the same answers.

What to do

  • Re-export with a current LeRobot and push or upload that.
  • If the version named is newer than anything listed, the format has moved again. Tell us and it gets read.

Two index files disagree

Delete the stale file
What you saw meta/episodes places 60 episode(s) in two different files at once, including episode(s) 40, 41, 42, 43, 44, 45

This is a v3 dataset whose index contradicts itself. v3 spreads its episode index over several parquet files, and rewriting part of a dataset without deleting the file that was replaced leaves two rows for the same episode saying it lives in different places.

We refuse rather than pick one. Both rows claim the file they sit in, so nothing in the format says which is current, and choosing wrong would pair one episode's video with another episode's actions. That is exactly the defect this bench exists to catch, and we are not going to introduce it while looking for it.

What to do

  1. Look in meta/episodes/. You will find more index files than the dataset needs, usually one large early file plus the smaller ones that superseded it.
  2. Delete the stale one, keeping the files that together cover each episode exactly once.
  3. Push again and re-paste the link. If you are unsure which is stale, re-exporting the dataset from scratch also clears it.

Missing, short, or unreadable video

Re-export the clips
What you saw the schema declares video channels but the archive contains no .mp4 files

file-002.mp4 holds 3000 frame(s) and this episode is 250 step(s) starting at frame 3250

The first means the parquet arrived without the footage. A LeRobot export keeps pixels in mp4 side-cars, so the videos/ folder has to come with it. The parquet files alone have no pixels in them.

The second means the metadata and the video disagree about where an episode is. The index claims frames the file does not contain, which usually follows an interrupted export or files copied across from a different version of the dataset.

What to do

  • Include the whole export, videos folder and all, and check the upload finished rather than stopping partway.
  • Re-export the clips named in the message. A file that lists in the archive but cannot be decoded is worse than one that is absent, because it looks present.
  • If you trimmed videos by hand after exporting, re-export instead. The metadata still describes the untrimmed footage.

Not every clip carries the same camera

Abstains, not refuses
What you saw no image channel is present in every clip

The comparison trains on your clips and on a shuffled copy of the same clips, so every clip has to offer the same view. A channel only some clips carry cannot be compared across all of them, and the check abstains rather than quietly scoring a subset and calling it your dataset.

This is an abstention, not a verdict. It says the bench could not measure, not that your footage is bad.

What to do

  • Upload clips that all carry the same camera. If you filmed with two and only some episodes have the second, submit the one they all share.
  • Check the camera is named identically everywhere. images.laptop in one episode and images.top in another reads as two different cameras.

Too few clips to conclude anything

Abstains, not refuses
What you saw 12 clip(s) is too few for this check to conclude anything. That is about the size of the upload, not the footage

A quarter of the clips are held back and scored on, and the rest are trained on. With too few held back, your data winning every single clip would still not be past chance, so the check would abstain however good the footage was. Saying that up front is cheaper than training first and abstaining after.

What to do

  • Upload more clips. Fifty is comfortable, a hundred is better.
  • Nothing about the footage needs to change. This is arithmetic about sample size.

The shuffled control won

Check your alignment
What you saw scrambling which actions belong to which frames made prediction better, which should be impossible if the pairing is right

This is the most useful thing the bench can tell you, and it is worth stopping for. Handing each episode's actions to a different episode's video should destroy information. If it improved prediction, the actions in your dataset were not lined up with the frames they belong to in the first place.

The usual cause is an offset. An export that wrote actions a frame or two late, or a timestamp column that was recorded but never used to align the streams.

What to do

  1. Check the alignment before running any robot test. Nothing downstream can recover from actions attached to the wrong frames.
  2. Compare a timestamp on a camera frame against the timestamp of the command issued at it, on a few episodes by hand.
  3. Re-export once they line up, and submit again. The old version keeps its results, so you can see what the fix did.

It has been running a long time

Probably normal

The signal check trains a policy on your data and then trains it again on twenty shuffled copies of the same data. On the machine currently serving this, a hundred clips takes around half an hour. The page updates itself, so you can close the tab and come back.

The earlier checks are quick. If Intake and the Data report have passed, the dataset is fine and the wait is only compute.

What to do

  • Leave it. Nothing is stuck.
  • Add your email on the submission form if you would rather be told when it lands. It is also the way back to a submission if your network changes, since you are identified here by address.

None of these match

Send the submission link and what you expected to happen to @GuraseesSDhanoa. A message the bench returns that is not on this page is a message worth rewriting, so it is genuinely useful to hear about.