Skip to content

sim2 prerequisite: retain Jeff's shared configuration above USD assets - #5153

Closed
Nabla7 wants to merge 8 commits into
jeff/feat/usd_manager_renamefrom
pim/feat/sim2-usd-shared-config
Closed

Nabla7 wants to merge 8 commits into
jeff/feat/usd_manager_renamefrom
pim/feat/sim2-usd-shared-config

Conversation

@Nabla7

@Nabla7 Nabla7 commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Superseded: #5033–#5041 now depend directly on Jeff's USD-manager prerequisite #5111 and use ordinary startup RPCs and explicit camera dependencies, so the shared-config hook and coordinator changes are no longer needed.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

go2 replay realtime (arm64)

Details
Benchmark suite Current: 9cb3cea Previous: 0e021a9 Ratio
peak memory 1745.422 MB 1768.871 MB 0.99
peak threads 377 threads 370 threads 1.02
network (transport) 2725.808 MB 2736.293 MB 1.00
disk write 1.629 MB 1.59 MB 1.02
instructions 136.859 G 138.629 G 0.99

This comment was automatically generated by workflow using github-action-benchmark.

@Nabla7
Nabla7 added this pull request to stack #5154 November 10, 2026 00:07
@codecov

codecov Bot commented Nov 10, 2026

Copy link
Copy Markdown

❌ 2 Tests Failed:

Tests completed Failed Passed Skipped
7905 2 7903 113
View the top 2 failed test(s) by shortest run time
dimos.robot.assets.test_model::test_a_usd_model_from_a_file_is_read_lazily
Stack Traces | 0.003s run time
def load_pxr() -> Pxr:
        global _PXR
        if _PXR is not None:
            return _PXR
        with _PXR_LOCK:
            if _PXR is None:
                _let_mujoco_register_its_schemas_first()
                try:
>                   from pxr import Gf, Sdf, Tf, Usd, UsdGeom, UsdPhysics, Vt
E                   ModuleNotFoundError: No module named 'pxr'


.../robot/assets/usd.py:53: ModuleNotFoundError

The above exception was the direct cause of the following exception:

tmp_path = PosixPath('.../pytest-0/popen-gw0/test_a_usd_model_from_a_file_i0')

    def test_a_usd_model_from_a_file_is_read_lazily(tmp_path: Path) -> None:
        scene = tmp_path / "room.usda"
        model = robot_model.UsdModel.from_file(scene)
    
        scene.write_text(_SCENE_USDA)
    
        assert model.usd == _SCENE_USDA
>       assert model.root_link == "room"

model      = UsdModel(_source_path=PosixPath('.../pytest-0/popen-gw0/test_a_usd_model_from_a_file_i0/room.usda'), _urdf=None, _text=None, _added_frames=())
scene      = PosixPath('.../pytest-0/popen-gw0/test_a_usd_model_from_a_file_i0/room.usda')
tmp_path   = PosixPath('.../pytest-0/popen-gw0/test_a_usd_model_from_a_file_i0')

.../robot/assets/test_model.py:871: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../robot/assets/model.py:200: in root_link
    return usd_root_link(self.usd, self._asset_root())
        self       = UsdModel(_source_path=PosixPath('.../pytest-0/popen-gw0/test_a_usd_model_from_a_file_i0/room.usda'), _urdf=None, _text=None, _added_frames=())
        usd_root_link = <function usd_root_link at 0xff62f7213420>
.../robot/assets/usd_to_urdf.py:73: in usd_root_link
    pxr = load_pxr()
        root       = PosixPath('.../pytest-0/popen-gw0/test_a_usd_model_from_a_file_i0')
        usd        = '#usda 1.0\n(\n    defaultPrim = "room"\n)\n\ndef Xform "room" (\n    prepend apiSchemas = ["PhysicsRigidBodyAPI"]\n)\n{\n}\n'
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    def load_pxr() -> Pxr:
        global _PXR
        if _PXR is not None:
            return _PXR
        with _PXR_LOCK:
            if _PXR is None:
                _let_mujoco_register_its_schemas_first()
                try:
                    from pxr import Gf, Sdf, Tf, Usd, UsdGeom, UsdPhysics, Vt
                except ImportError as exc:  # pragma: no cover - only where the extra is absent
>                   raise ImportError(_NO_USD) from exc
E                   ImportError: Reading or writing USD needs usd-core (pxr), which is in the 'sim' and 'scene' extras: uv sync --extra sim. On linux-aarch64 a wheel exists only from usd-core 26.11 and only for Python 3.11 and up, so a 3.10 arm robot cannot serve USD at all.


.../robot/assets/usd.py:55: ImportError
dimos.robot.test_usd_manager::test_a_world_manager_has_no_asset_root_to_offer
Stack Traces | 0.036s run time
def load_pxr() -> Pxr:
        global _PXR
        if _PXR is not None:
            return _PXR
        with _PXR_LOCK:
            if _PXR is None:
                _let_mujoco_register_its_schemas_first()
                try:
>                   from pxr import Gf, Sdf, Tf, Usd, UsdGeom, UsdPhysics, Vt
E                   ModuleNotFoundError: No module named 'pxr'


.../robot/assets/usd.py:53: ModuleNotFoundError

The above exception was the direct cause of the following exception:

    def test_a_world_manager_has_no_asset_root_to_offer() -> None:
        module = UsdManager()
        try:
>           assert module.get_usd()[0] == ""

module     = <dimos.robot.usd_manager.UsdManager object at 0xffe3865c20f0>

dimos/robot/test_usd_manager.py:1229: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/robot/usd_manager.py:259: in get_usd
    usd = self._description.usd
        self       = <dimos.robot.usd_manager.UsdManager object at 0xffe3865c20f0>
../...../_temp/uv-python-dir/cpython-3.12.16-linux-aarch64-gnu/lib/python3.12/functools.py:998: in __get__
    val = self.func(instance)
        cache      = {'_added_frames': (), '_source_path': None, '_text': None, '_urdf': LoadedRobotModel(xml='<robot name="world"><link name="world" /></robot>', source_path=None, package_paths={})}
        instance   = UsdModel(_source_path=None, _urdf=LoadedRobotModel(xml='<robot name="world"><link name="world" /></robot>', source_path=None, package_paths={}), _text=None, _added_frames=())
        owner      = <class 'dimos.robot.assets.model.UsdModel'>
        self       = <functools.cached_property object at 0xffe43cbbf890>
        val        = <object object at 0xffe481c00290>
.../robot/assets/model.py:143: in usd
    return self._with_added_frames(self._layer())
        self       = UsdModel(_source_path=None, _urdf=LoadedRobotModel(xml='<robot name="world"><link name="world" /></robot>', source_path=None, package_paths={}), _text=None, _added_frames=())
.../robot/assets/model.py:166: in _layer
    return urdf_to_usd(self._urdf)
        self       = UsdModel(_source_path=None, _urdf=LoadedRobotModel(xml='<robot name="world"><link name="world" /></robot>', source_path=None, package_paths={}), _text=None, _added_frames=())
        urdf_to_usd = <function urdf_to_usd at 0xffe3ffa611c0>
.../robot/assets/urdf_to_usd.py:62: in urdf_to_usd
    pxr = load_pxr()
        include_collision = True
        model      = LoadedRobotModel(xml='<robot name="world"><link name="world" /></robot>', source_path=None, package_paths={})
        name       = None
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    def load_pxr() -> Pxr:
        global _PXR
        if _PXR is not None:
            return _PXR
        with _PXR_LOCK:
            if _PXR is None:
                _let_mujoco_register_its_schemas_first()
                try:
                    from pxr import Gf, Sdf, Tf, Usd, UsdGeom, UsdPhysics, Vt
                except ImportError as exc:  # pragma: no cover - only where the extra is absent
>                   raise ImportError(_NO_USD) from exc
E                   ImportError: Reading or writing USD needs usd-core (pxr), which is in the 'sim' and 'scene' extras: uv sync --extra sim. On linux-aarch64 a wheel exists only from usd-core 26.11 and only for Python 3.11 and up, so a 3.10 arm robot cannot serve USD at all.


.../robot/assets/usd.py:55: ImportError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@greptile-apps

greptile-apps Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 4/5

[Medium impact] The change adds an opt-in config-sharing path to module startup.

Fix shared-configuration delivery during receiver restart before merging.

Findings

  1. P1 Restart loses shared settings ▶

Summary

Adds @shared_config getters and a SharedConfigModule receiver.

  • Modules can share config values before they build.

Reviews (1) · Last reviewed commit: "Keep Jeff shared configuration above his..." · Reviewed by Greptile

coordinator,
remote_module_refs=remote_ref_proxies,
)
coordinator._share_configs(coordinator._deployed_modules)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Restart loses shared settings

Restarting a SharedConfigModule creates a fresh receiver, but _restart_module() calls its build() and start() without delivering its shared configuration. Delivery only runs during initial build and load_blueprint(). For example, restarting the supplied _Collector leaves _received empty and _built_after_receive false, even though its senders are still running.

Call _share_configs([name]) after restoring the restarted module's connections and before new_proxy.build().

Knowledge Base Used: Distributed runtime and module hosting

@Nabla7
Nabla7 removed this pull request from stack #5154 November 11, 2026 02:48
@Nabla7 Nabla7 closed this Nov 11, 2026

This branch was successfully deployed

No deployments
cachix — 9cb3cea6 Deployed Nov 10, 2026 by Nabla7 via cachix-build-macos #16565
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.

2 participants