Conversation
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## feat/openyam-lerobot-rollout #3921 +/- ##
==============================================================
Coverage 79.65% 79.66%
==============================================================
Files 1519 1521 +2
Lines 143269 143383 +114
Branches 12237 12246 +9
==============================================================
+ Hits 114128 114229 +101
- Misses 25787 25809 +22
+ Partials 3354 3345 -9
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 5 files with indirect coverage changes 🚀 New features to boost your workflow:
|
Greptile SummaryThis change adds a dashboard for controlling OpenYAM teach-data collection alongside Quest input. Testing reproduced a control race in Confidence Score: 4/5Not safe to merge until dashboard episode commands are made consistent with the authoritative recording state. A focused executable reproduction exercised both normal and stale-state control flows and observed an unintended save as well as a suppressed discard request. Files Needing Attention:
What T-Rex did
|
| def action_toggle_recording(self) -> None: | ||
| self._episode_command("toggle") | ||
|
|
||
| def action_discard(self) -> None: | ||
| if self._status.state != "recording": | ||
| self._message = "Nothing to discard. Start a take first." | ||
| self._refresh() | ||
| return | ||
| self._episode_command("discard") |
There was a problem hiding this comment.
Dashboard actions use stale episode state
The dashboard derives its commands from self._status, which is only updated during polling, while Quest can change the monitor state independently. If Quest starts recording after the last poll, the dashboard can still show idle: Space sends toggle, which the authoritative monitor resolves as save and unexpectedly ends the active take. In that same stale-idle state, D returns from the local guard without sending discard, leaving the recording active. Make the intended action state-aware at the authoritative monitor, or refresh and atomically validate status before dispatching it.
Artifacts
Focused dashboard stale-status race reproduction source
- The executable harness imports the PR dashboard actions and runs them against the monitor's documented transition semantics, showing the exact baseline and stale-state cases.
Dashboard actions when cached and authoritative state agree
- The executed baseline run shows toggle starting recording and discard issuing an RPC that increments the discard count, establishing the normal expected behavior.
Dashboard actions after authoritative state changes to recording between polls
- The executed race run shows stale-idle Space saving the authoritative recording and stale-idle D making no discard RPC, proving the candidate bug.
127ce28 to
1ef8eb8
Compare
562643c to
6bca282
Compare
6bca282 to
58b5b5c
Compare
58b5b5c to
7463ad0
Compare
2a69c7c to
9a7c673
Compare
9a7c673 to
960058e
Compare
960058e to
d62d515
Compare
d62d515 to
6fbe6c9
Compare
6fbe6c9 to
59ad909
Compare
Contribution path
Problem
Solution
openyam-teach-collectionusing the existing trajectory task's idle-hold behavior.(2, 2, 2, 0.5, 0.5, 0.5).OPENYAM_TEACH_COLLECTIONwith measured seven-joint positions for both state and hand-guided action.dimos collectcommand or learning-profile wrapper is introduced here.API shape
dimos.robot.manipulators.openyam.collection.source_kind="snapshot"; teaching actions are measurements, not partial command updates.coordinator_joint_state.position; wrist RGB is the image observation.EpisodeControlSpec.How to Test
With an arm and wrist RGB camera configured:
dimos --can-port follower_l run openyam-teach-collection --recorder.recording recordings/teach-001 --episodes.task "pick up the cube" --wrist.hardware.camera-index 0EpisodeControlSpec; support the arm before runtime shutdown.AI assistance
Checklist