Summary
At VLABench commit cf588fe60c0c7282174fe979f5913170cfe69017,
VLABench/robots/single_arm/franka.py::get_ee_open_state returns true when both finger
positions are below the closed threshold (0.035). The nearby source comment explicitly says
BUG: should be False.
That legacy predicate is externally observable in the official LeRobot mirror. In the pinned
lerobot/vlabench_unified@f61ad898199e746c20af3112f278cc86eb3ca3c4, the last state bit is
copied from the observation, while the last action bit uses the opposite convention (1 = open,
based on target finger qpos above 0.03).
Full-corpus evidence
A checksum-pinned scan of every one of the dataset's 3,114,872 rows found:
- state and action gripper fields are binary on every row;
- 2,965,492 / 3,114,872 same-row pairs are complements (95.2043%);
- 2,988,736 / 3,103,895 comparable state/previous-action pairs are complements (96.2899%);
- direct same-row agreement is only 149,380 / 3,114,872 (4.7957%).
The source evidence and data statistics support a legacy closed-bit in state versus an open-bit in
action. The residual disagreement is not itself corruption: observation/target timing differs,
and the state/action thresholds are 0.035 versus 0.03.
Exact evidence, source manifest, tests, and non-mutating repair sidecar:
Suggested compatibility-safe repair
I would avoid silently flipping the existing field because that can break checkpoints trained on
the legacy convention. A safer migration is explicit and versioned:
legacy_closed_v1: legacy_state_gripper_closed
explicit_open_v2: state_gripper_open = 1 - legacy_state_gripper_closed
Then:
- correct
get_ee_open_state for the v2 path, or rename the legacy predicate to what it returns;
- require an explicit observation-convention selection for old versus new checkpoints;
- test closed/open finger positions at the threshold boundary;
- record the convention and exact generator revision in future dataset metadata;
- leave action values unchanged.
The linked release includes a 3,114,872-row keyed explicit-open-v2 sidecar. It preserves every
source byte and provides byte and logical-row digests; it is evidence and a migration aid, not a
request to rewrite the existing dataset in place.
Claim boundary
The pinned VLABench commit is a semantic source reference; the dataset card does not identify its
exact generator checkout. This issue does not claim policy degradation, corrupt images/poses, or
that corrected observed state must equal a same-row target action. No silent migration is proposed.
I searched existing VLABench issues for this exact open/closed predicate report and did not find a
duplicate.
Summary
At VLABench commit
cf588fe60c0c7282174fe979f5913170cfe69017,VLABench/robots/single_arm/franka.py::get_ee_open_statereturns true when both fingerpositions are below the closed threshold (
0.035). The nearby source comment explicitly saysBUG: should be False.That legacy predicate is externally observable in the official LeRobot mirror. In the pinned
lerobot/vlabench_unified@f61ad898199e746c20af3112f278cc86eb3ca3c4, the last state bit iscopied from the observation, while the last action bit uses the opposite convention (
1 = open,based on target finger qpos above
0.03).Full-corpus evidence
A checksum-pinned scan of every one of the dataset's 3,114,872 rows found:
The source evidence and data statistics support a legacy closed-bit in state versus an open-bit in
action. The residual disagreement is not itself corruption: observation/target timing differs,
and the state/action thresholds are
0.035versus0.03.Exact evidence, source manifest, tests, and non-mutating repair sidecar:
Suggested compatibility-safe repair
I would avoid silently flipping the existing field because that can break checkpoints trained on
the legacy convention. A safer migration is explicit and versioned:
Then:
get_ee_open_statefor the v2 path, or rename the legacy predicate to what it returns;The linked release includes a 3,114,872-row keyed
explicit-open-v2sidecar. It preserves everysource byte and provides byte and logical-row digests; it is evidence and a migration aid, not a
request to rewrite the existing dataset in place.
Claim boundary
The pinned VLABench commit is a semantic source reference; the dataset card does not identify its
exact generator checkout. This issue does not claim policy degradation, corrupt images/poses, or
that corrected observed state must equal a same-row target action. No silent migration is proposed.
I searched existing VLABench issues for this exact open/closed predicate report and did not find a
duplicate.