Skip to content

Keep LeRobot host and isolated worker on canonical CDR inputs - #4719

Closed
TomCC7 wants to merge 2 commits into
cc/feat/cdr-collectionfrom
cc/feat/cdr-lerobot-boundaries
Closed

TomCC7 wants to merge 2 commits into
cc/feat/cdr-collectionfrom
cc/feat/cdr-lerobot-boundaries

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

LeRobot's host contract and isolated worker now agree with generated CDR Image, JointState and UInt32 input ports. The worker reads rgb8 rows through the existing stride-aware view, caches owned image/state values and extracts source timestamps from Header. Packed button masks retain the existing grip interruption and rollout toggle behavior. The start-mismatch retry also reads canonical state time; otherwise it waited on an obsolete .ts field.

Project: https://linear.app/dimensional/project/message-encoding-refactor-05a3ddb4af3e/overview

Parent: #4717 (30f86fa79c68b1d97748b108adb1e6badd64c4d5). This remains one layer in the incomplete proposal; no final graph/dependency/stack completion claim.

File change summary

Category Files Added Deleted Review focus
Host/worker adapters 2 39 22 Canonical matching ports; padded RGB; owned caches; source clock in staleness/retry; same trajectory RPC
Runtime behavior tests 1 121 24 Existing 31 lifecycle/safety assertions retained; real Module initialization; 3 new CDR/ownership/malformed cases
CI/docs 2 32 2 Declared isolated project commands; short type contract; honest shared-checkout packaging limits

Verification

  • 34 final-source runtime tests and the same 34 against both main and runtime wheels installed in a separate task venv, with isolated Python and site-packages assertions for both production modules.
  • 19 source host/bootstrap tests. Strict typing passes for both production files using the native project's existing mypy configuration for upstream LeRobot types.
  • Configured scoped hooks pass except unavailable Nix lint.
  • Actual memq and discovery-disabled loopback Zenoh CDR Image/JointState/UInt32 ports, padded RGB pixels, Header nanoseconds, caller-buffer ownership, grip interruption and malformed frame rejection. Existing preflight, clipping, chunk, cancellation, mismatch-retry, timeout and restart assertions remain.
  • Test dependencies use actual LeRobot 0.6.0 and Transformers 5.5.4; the task-only venv reuses existing CPU Torch 2.7.1, within LeRobot's declared range. No CUDA, models, checkpoint, inference or training run was downloaded/executed. This local result is not a Torch 2.11 matrix claim.
  • Main wheel SHA-256: def90aeb6848fcd0d0b7273a0e3f15f77c6e37c67a0b628c13efffc6972ff62b.
  • Runtime wheel SHA-256: 342ff5b3563bb5003b2de3c3184cd0db696ce98322588667d81a0afa7201d63f.

Manual offline test

Using the existing isolated project workflow from this checkout:

cd native/python/lerobot
DIMOS_TRANSPORT=lcm LCM_DEFAULT_URL=memq:// HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 \
  uv run --isolated --locked --group tests --with-editable ../../.. \
  python -m pytest --confcutdir=. -o addopts='' -q dimos_lerobot/runtime_tests.py

The first environment preparation installs declared dependencies; test policy/coordinator boundaries are fake, with no checkpoint or hardware. The project lock's Torch choice differs from the bounded local CPU environment noted above. CI contains this declared-project check; no CI conclusion is claimed or polled.

Remaining package boundary

The existing optional runtime launcher uses a shared checkout, which can differ from an installed host's revision, and runtime projects are not bundled in the main wheel. Use matching host/checkout revisions. This PR verifies installed worker/main value interoperability, not automatic isolated-launcher revision alignment; that remains an internal final packaging/compatibility gate. Trajectory RPCs and host installation APIs are unchanged.

@TomCC7 TomCC7 closed this Oct 20, 2026
@TomCC7
TomCC7 deleted the cc/feat/cdr-lerobot-boundaries branch October 20, 2026 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant