Skip to content

feat: consume physical entities in manager reset transactions (#1599) - #1600

Merged
TATP-233 merged 6 commits into
mainfrom
feat/issue-1599-entity-consumer
Sep 17, 2026
Merged

TATP-233 merged 6 commits into
mainfrom
feat/issue-1599-entity-consumer

Conversation

@TATP-233

@TATP-233 TATP-233 commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

Manager-Based object-only reset previously rebuilt a full state row from global defaults, which could reset the robot and broadcast environment zero's variant state. This change binds logical entities to UniSim's public physical layout, stages one selected-entity reset request and restores per-environment state/control defaults through public backend methods.

The A/B audit additionally removes quadratic row lookup and unused whole-batch snapshots from reset staging. Different joint position/velocity subsets merge without losing untouched columns; validation precedes the single native commit. Cold binding rejects logical roots that name descendant bodies, so queries, defaults and root writes refer to the same physical object. Scene/config owners collect all declared physical/variant asset paths. A registered primitive task uses the same pickleable EnvFactory for MuJoCo and IsaacSim, with passive joints adding state without actions.

Fixes #1599. Refs unilabsim/unisim#108/#113 and merged audit unilabsim/unisim#138. Declared/PR base: main; governing ADRs: ADR-0006 and ADR-0007. No training, learner/runner, reward, M3 contact/DR capability or runtime lifecycle change.

Merge status: all final-head checks pass, but main protection requires one approving review and none is present. GitHub rejected ordinary merge; repository auto-merge is disabled. This PR remains open for the required review; branch protections were not bypassed.

Released dependency: normal and ROCm metadata require unisim-core>=1.5.0, and both locks resolve PyPI 1.5.0 without Git source overrides. Upstream v1.5.0 release passed source-distribution installation/smoke and publication. uv sync --locked --extra mujoco --extra motrix installed it in site-packages; distribution metadata is 1.5.0 with no direct_url.json, so this is neither editable nor Git-only validation. ROCm lock resolution is checked, without claiming ROCm hardware execution. IsaacSim recording acceptance was explicitly deferred by the maintainer to unilabsim/unisim#133 and is not claimed passed.

Validation on final implementation/dependency head 9e8a0977:

  • make test-all: 1485 passed / 28 skipped / 588 slow deselected, 70% coverage; required benchmark import smoke 34/34 module and 35/35 script, plus Ruff/mypy/Pyright. No UV_NO_SYNC or editable override; optional Drake warning remains.
  • UNILAB_TEST_M2_ISAACSIM=1 uv run pytest -q tests/envs/test_multi_entity_consumer.py -k native --basetemp=/tmp/unilab-m2-pypi-native -x: 2 passed with the PyPI dependency, actual registered factory → Manager-Based → public UniSim → native IsaacSim.
  • uv lock --check: passed for normal and isolated ROCm profile pairs; git diff --check: passed.
  • uv run pytest -q tests/scripts/test_check_docs.py: 19 passed on the final head; CI builds Sphinx.
  • Bounded CPU staging A/B has 24 equal-output cases, separating old code, row-index-only optimization and sparse-field optimization. N=R=4096 pose staging: 23.456 → 1.697 → 1.407 ms; no engine/IPC/rollout-throughput claim. Reproduce with uv run python scripts/benchmark/physics/m2_reset_ablation.py --output /tmp/reset-ab.json; upstream bilingual audit records the evidence and limits.
  • All six current-head CI jobs passed on 9e8a0977ba73296549addba66dc8f5de161c2752: format, lint, mypy, pyright, benchmark smoke and tests. Sphinx build passed; PR deployment is intentionally skipped. An earlier duplicate run on the same commit was superseded when the PR became ready.

Go2/Allegro assets are obtained via the registered hub and stay ignored. The fresh-process physics/registry test explicitly disables graphics before interpreter startup, avoiding unrelated OSMesa dependencies while still exercising real physics construction/reset. This does not change rendering acceptance.

@TATP-233
TATP-233 marked this pull request as ready for review September 17, 2026 04:42
@TATP-233
TATP-233 merged commit 84ef109 into main Sep 17, 2026
8 of 14 checks passed
@TATP-233
TATP-233 deleted the feat/issue-1599-entity-consumer branch September 17, 2026 05:51
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.

feat: 消费 UniSim 多实体契约并验证跨后端局部 reset(unisim#108)

1 participant