# ManiSkill Panda StackCube Python recipe

Grasp one cube and stack it on another with the official Panda motion planner.

Record version: `1.0.0` · Hub commit: `01b4b20f7ea55d9e9395915aed4e82c890c4c1c4`

## Exact environment

| Runtime | Robot | Controller | Observation | OS | Python | Evidence |
| --- | --- | --- | --- | --- | --- | --- |
| maniskill 3.0.0b22 | panda | pd_joint_pos | state | linux x86_64 | >=3.10,<3.11 | source_reviewed |

Reads ground-truth object poses, collision geometry and robot state directly from the simulator. Not an RGB-only policy.

Compatibility status: **source_reviewed**. An environment match does not establish task completion. Runtime verification: **not_run**.

## Source and license

- Repository: https://github.com/haosulab/ManiSkill
- Source commit: `33967b9e3ead1f841eec57cc9f31d0d8b8cf0907` (v3.0.0b22)
- Original authors: ManiSkill contributors
- License: [Apache-2.0](https://github.com/haosulab/ManiSkill/blob/33967b9e3ead1f841eec57cc9f31d0d8b8cf0907/LICENSE)
- Source archive SHA256: `d194e39e4f86063f7ea49f25c918ca7474d088ad8d5abdc37573daf4672f86d4`
- Upstream files: `mani_skill/examples/motionplanning/panda/run.py`, `mani_skill/examples/motionplanning/panda/solutions/stack_cube.py`, `LICENSE`
- Upstream contribution rules: https://github.com/haosulab/ManiSkill/tree/33967b9e3ead1f841eec57cc9f31d0d8b8cf0907

## Find, inspect, prepare

```sh
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json find "grasping" --runtime maniskill --runtime-version 3.0.0b22 --robot panda --json
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json inspect maniskill-panda-stack-cube --json
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json prepare maniskill-panda-stack-cube --project ./experiment --plan --json
```

Remove `--plan` to download the checksum-verified pinned source and create an isolated project environment. Preparation returns the remaining configuration. Dependency installation is an explicit `--install-deps` step; it can execute package build hooks. Robot simulation is a separate command returned by prepare, never run by find/inspect.

Direct package pins: `torch==2.5.1`, `numpy==1.26.4`, `sapien==3.0.0`, `mplib==0.1.1`, `fast_kinematics==0.2.2`.

Direct dependencies pinned; transitive dependencies resolved by pip and captured in the prepared project. No bit-for-bit environment guarantee.

Hardware: Linux x86_64 CPU; SAPIEN wheel needs glibc >=2.28.

Rendering: disabled explicitly: render_backend=none, render_mode=None, state observations and CPU simulation; graphics paths require separate Vulkan setup.

External API keys: none.

## Invocation contract

Entrypoint: `mani_skill.examples.motionplanning.panda.solutions.stack_cube:solve`.

```json
{
  "argv": [
    "{python}",
    "{recipe_dir}/run.py",
    "--seed",
    "0"
  ],
  "inputs": {
    "task": "StackCube-v1",
    "seed": 0,
    "robot": "panda",
    "controller": "pd_joint_pos",
    "obs_mode": "state",
    "sim_backend": "cpu",
    "render_backend": "none"
  },
  "outputs": {
    "format": "last stdout line JSON",
    "fields": [
      "status",
      "success",
      "elapsed_steps",
      "task",
      "seed",
      "runtime",
      "robot",
      "controller",
      "observation",
      "sim_backend",
      "render_backend"
    ],
    "error_fields": [
      "status",
      "reason_code",
      "error_type",
      "message"
    ]
  }
}
```

Success: StackCube-v1 env info.success is true after upstream solver finishes; adapter exit 0 only when success is true.

Timeout: 180 seconds. Stop after one seed; no retries to conceal failures. Use an external 180-second process timeout.

Failures: Dependency installation unavailable or incompatible; Required Linux mplib wheels unavailable on host OS; Motion planning reports failure or env info.success is false; Runtime exception or asset download failure.

## Actual evidence

Source and license verified. Linux execution, dependency installation, imports and task completion have NOT been run by the hub (not_run).

Reviewer: Robot Skill Hub source review · 2026-10-17.

Commands/checks actually performed:

- git ls-remote https://github.com/haosulab/ManiSkill.git refs/tags/v3.0.0b22
- Download exact commit archive; SHA256 checked
- Review pinned setup.py, LICENSE, upstream run.py and task solver

Submitted evidence and hub verification remain separate. A schema check, PR creation or merge does not establish task success or publication.

## Reusable fixes

Only actual reusable fixes. Public submission permission and a scoped pilot token are separate requirements. Submission opens a public internal draft PR; it is not publication.

## Recipe notes

The hub wrapper in `recipes/maniskill-panda-stack-cube/run.py` imports the original
ManiSkill `stack_cube.solve` implementation without copying or modifying it. It
combines grasping, lifting and placement using ground-truth simulator state.

Use the same exact Linux x86_64 / Python 3.10 / Panda / `pd_joint_pos` target as
the PickCube recipe. Sharing the physics engine or robot name with another
framework does not make the solver portable. This recipe is not an RGB-only
policy and must not be presented as an equivalent visual-policy benchmark.

The wrapper sets `render_backend="none"` explicitly, as `render_mode=None`
alone does not disable ManiSkill's default GPU rendering backend. No GUI, video
or camera output is requested by the wrapper. Graphics examples
and other observation modes require their own compatibility checks. Preserve the
upstream Apache-2.0 license and original author notices in the downloaded source.

The canonical JSON keeps source inspection and simulator execution evidence in
separate fields. Consult those fields for the exact recorded environment.

