Skip to content

Control Coordinator refactor Docs update and final cleanup - #3294

Open
mustafab0 wants to merge 2 commits into
mainfrom
dual-view-closeout
Open

Control Coordinator refactor Docs update and final cleanup#3294
mustafab0 wants to merge 2 commits into
mainfrom
dual-view-closeout

Conversation

@mustafab0

Copy link
Copy Markdown
Contributor

Problem

The control coordinator publishes joint state two ways: one message holding every robot's joints, or one message per robot. A recent change (#3277) moved both recorders onto the per-robot streams. This is not ideal so I am reverting now, and adding more Docs.


Solution

Both recorders go back on the all-robots stream.

dimos/control/README.md gains an architecture section: both views are permanent, and you pick by what the consumer is.


Breaking Changes

None. Both streams still exist. The consumers that are genuinely robot-specific (g1 replay, the go2 controllers) are untouched.


How to Test

  1. uv run pytest dimos/control dimos/manipulation dimos/imitation -m 'not (tool or self_hosted or mujoco or self_hosted_large)'
  2. uv run pytest dimos/robot/test_all_blueprints_generation.py — confirms the generated blueprint list is unchanged.
  3. Record a short episode on the quest rig, then check the session DB's coordinator_joint_state rows hold the full joint set.
  4. Smoke dimos run xarm6-worldbelief on the xArm6 stack.

Steps 3 and 4 need hardware; CI cannot cover them.

CollectionRecorder and WorldBeliefRecorder capture whatever joints are
present, so the aggregate stream is their intended input. Dropping the
remaps #3277 added lets autoconnect pair them by port name again, with
no module-code changes.

Nothing else consumed either coordinator's `arm_joints`, so the per-robot
opt-in comes off the xarm7 teleop, piper teleop, and xarm6 worldbelief
coordinators too.
Documents the refactor as merged: task cards (TASK_FACTORIES /
TASK_CONSUMES / TASK_EXPOSES), subclass-declared deployment I/O and its
startup validation, TaskConfig.stream_bind, the four routing rules, and
the two permanent joint-state views with the rule for choosing between
them.
@mustafab0
mustafab0 force-pushed the dual-view-closeout branch from 13126e1 to 2a4895f Compare July 30, 2026 19:35
@codecov

codecov Bot commented Jul 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

@@           Coverage Diff           @@
##             main    #3294   +/-   ##
=======================================
  Coverage   74.86%   74.87%           
=======================================
  Files        1137     1138    +1     
  Lines      109071   109070    -1     
  Branches     9838     9838           
=======================================
  Hits        81661    81661           
+ Misses      24618    24616    -2     
- Partials     2792     2793    +1     
Flag Coverage Δ
OS-ubuntu-24.04-arm 68.68% <100.00%> (-0.01%) ⬇️
OS-ubuntu-latest 70.79% <100.00%> (-0.01%) ⬇️
Py-3.10 70.79% <100.00%> (-0.01%) ⬇️
Py-3.11 70.78% <100.00%> (-0.01%) ⬇️
Py-3.12 70.78% <100.00%> (-0.01%) ⬇️
Py-3.13 70.78% <100.00%> (-0.01%) ⬇️
Py-3.14 70.79% <100.00%> (-0.01%) ⬇️
Py-3.14t 70.78% <100.00%> (-0.01%) ⬇️
SelfHosted-Large 29.16% <64.28%> (+0.12%) ⬆️
SelfHosted-Linux 35.89% <64.28%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/imitation/collection/blueprint.py 88.23% <ø> (-0.66%) ⬇️
dimos/imitation/collection/recorder.py 100.00% <ø> (ø)
dimos/imitation/collection/test_blueprint.py 100.00% <100.00%> (ø)
...imos/robot/manipulators/piper/blueprints/teleop.py 100.00% <ø> (ø)
dimos/robot/manipulators/xarm/blueprints/teleop.py 100.00% <ø> (ø)
.../robot/manipulators/xarm/blueprints/worldbelief.py 82.14% <ø> (-3.16%) ⬇️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mustafab0 mustafab0 added the backport:skip Skip creating a backport to any release branches label Jul 30, 2026
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip Skip creating a backport to any release branches ready-to-merge Required CI checks have passed on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant