Skip to content

unitree-g1-groot-wbc fails startup because Rerun config callable fields are passed as dictionaries #4132

Description

@christiefhyang

Description

Summary

unitree-g1-groot-wbc fails during startup while deploying RerunBridgeModule.

Pydantic validation expects callable values for two Rerun configuration fields, but the blueprint passes dictionaries instead.

This reproduces consistently when the blueprint startup test is run in isolation.

Reproduction

cd ~/dimensional/dimos

uv run pytest \
  'dimos/robot/test_blueprint_startup.py::test_blueprint_starts[unitree-g1-groot-wbc]' \
  -m '' \
  -vv -s --tb=long

Actual behavior

RerunBridgeModule fails to deploy with two Pydantic validation errors:

ValidationError: 2 validation errors for Config

visual_override.world/g1/joints
  Input should be callable
  input_type=dict

static.world/odometry/g1
  Input should be callable
  input_type=dict

The failure originates while constructing the Rerun bridge configuration.

The relevant traceback ends with:

RuntimeError: Failed to deploy module: ValidationError: 2 validation errors for Config

visual_override.world/g1/joints
  Input should be callable

static.world/odometry/g1
  Input should be callable

As a result:

Blueprint 'unitree-g1-groot-wbc' exited during startup with code 1.

Expected behavior

The Rerun configuration supplied by unitree-g1-groot-wbc should preserve the callable values expected by RerunBridgeModule.Config.

The blueprint should be able to deploy the Rerun bridge without callable configuration values being converted or supplied as dictionaries.

Notes

This was reproduced independently after being observed in the full macOS test suite.

This does not appear to be the same hardware/config gating problem tracked in #4130. The failure occurs during module configuration validation before the blueprint reaches normal G1 hardware operation.

The underlying issue may be in blueprint configuration construction or serialization/deserialization between the coordinator and Python worker, since values expected to be callables are received as dictionaries.

Suggested labels

bug


QA provenance clarification

This issue was discovered during a macOS release QA pass using an additional local runtime startup harness that launched registered blueprints and checked whether they remained alive through startup.

The local QA harness was:

dimos/robot/test_blueprint_startup.py

That file was not tracked on main and was not an existing DimOS CI test.

The underlying failure documented in this issue was subsequently reproduced in isolation, so the bug itself remains valid. This clarification is only to correct the original issue wording where it may have implied that test_blueprint_startup.py was already part of the repository or CI.

Runtime startup coverage itself is being discussed separately in #4130.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions