Guides · Updated 2026-08-23

Placeholder task labels are silently poisoning robot training

The default label in a lot of recording tooling is literally "task desc". People record, skip renaming, upload. The dataset works for testing, and then poisons any model trained on it with language conditioning.

What actually goes wrong?

A vision language action model learns from pairs of instruction and behavior. Feed it a thousand episodes labeled "task desc" and it learns the instruction channel is noise. This is not theoretical: the SmolVLA team documented having to re-annotate noisy community labels, including placeholders and vague one word commands like "Hold", before they could pretrain on community data.

How common is it?

In our scan of the 1000 most downloaded LeRobot datasets, 9 have placeholder or mostly weak labels among those whose labels we can read, and label files are unreadable or moved to parquet on many more. The problem is common enough that it made cleaning community data a research task.

The ten minute fix

Write labels the way you would instruct a person: verb, object, destination. "Pick the red block and place it in the bin." "Open the top drawer." "Fold the shirt on the table." Specific beats long. Then run pip install datum-lint and datum-lint your-dataset/ before uploading; it lists every weak label with the episode it lives in.

Why this matters beyond your dataset

Community data is now real training material. SmolVLA's entire pretraining corpus was 481 community datasets holding 22.9K episodes. Your labels end up inside other people's models. Make them mean something.