Goal
Close out the test-parity acceptance criteria of #2123: same-named Isaac tests mirroring the MuJoCo motion-primitive suite, plus a real-Isaac integration test.
Depends on #2155 - the Isaac move_to implementation (and transitively #2154) - if that PR hasn't merged yet, post a comment on this issue and stop.
Scope
- Parity unit suite:
tests/simulation/isaac/test_motion_primitives.py mirroring tests/simulation/mujoco/test_motion_primitives.py case-for-case where the behavior is backend-neutral (validation rejections, gripper metadata semantics, abort reasons, structured error shapes). GPU-dependent cases are skipped in unit CI using the same skip pattern as the existing tests/simulation/isaac/ files. Where a MuJoCo case pins a MuJoCo-only mechanism (e.g. data.ctrl interplay, _SUBSTEPS_PER_TICK), note the omission in a comment rather than porting it emptily - test behavior, not implementation.
- Integration test (AGENTS.md rule 8):
tests_integ/simulation/test_isaac_motion_primitives.py (or matching the existing tests_integ/ layout) running against real Isaac Sim:
- If any of the three primitives are surfaced through agent tools during this work, every exposed parameter needs its own
Args: entry (AGENTS.md rule 13, pinned by tests/tools/test_agent_tool_parameter_descriptions.py). If they are not tool-surfaced, this item is a no-op - do not add tool wrappers here.
Constraints
- No production-code changes expected; if a parity test exposes a real behavioral divergence, file it as its own issue and skip/xfail with a reference rather than patching production code in this test-only PR.
- MuJoCo suite untouched and green;
hatch run format && hatch run lint && hatch run test green (integration tests run via hatch run test-integ on GPU hardware and are not part of unit CI).
- Changelog fragment
changelog.d/<pr-number>-isaac-primitive-parity-tests.md.
Part of #2123. Newton has the same gap; it stays out of scope here (noted follow-up on the parent).
Parent: #2123
Goal
Close out the test-parity acceptance criteria of #2123: same-named Isaac tests mirroring the MuJoCo motion-primitive suite, plus a real-Isaac integration test.
Depends on #2155 - the Isaac
move_toimplementation (and transitively #2154) - if that PR hasn't merged yet, post a comment on this issue and stop.Scope
tests/simulation/isaac/test_motion_primitives.pymirroringtests/simulation/mujoco/test_motion_primitives.pycase-for-case where the behavior is backend-neutral (validation rejections, gripper metadata semantics, abort reasons, structured error shapes). GPU-dependent cases are skipped in unit CI using the same skip pattern as the existingtests/simulation/isaac/files. Where a MuJoCo case pins a MuJoCo-only mechanism (e.g.data.ctrlinterplay,_SUBSTEPS_PER_TICK), note the omission in a comment rather than porting it emptily - test behavior, not implementation.tests_integ/simulation/test_isaac_motion_primitives.py(or matching the existingtests_integ/layout) running against real Isaac Sim:move_toa named/known-reachable pose; assert convergence withintol.move_toan unreachable target (e.g. beyond the arm's reach but inside the workspace sanity radius); assert the structured error carries the correct abort reason / IK residual.set_gripperopen -> closed round trip asserting the gripper joint reaches the registry-mapped range ends.reset()kills articulation handles) is not a blocker but tests that reset between cases must account for it - prefer one sim session per test or re-acquire handles, and referencetests/simulation/isaac/test_reset_revives_articulations.pyfor the current state of that behavior.Args:entry (AGENTS.md rule 13, pinned bytests/tools/test_agent_tool_parameter_descriptions.py). If they are not tool-surfaced, this item is a no-op - do not add tool wrappers here.Constraints
hatch run format && hatch run lint && hatch run testgreen (integration tests run viahatch run test-integon GPU hardware and are not part of unit CI).changelog.d/<pr-number>-isaac-primitive-parity-tests.md.Part of #2123. Newton has the same gap; it stays out of scope here (noted follow-up on the parent).
Parent: #2123