{
  "id": "panda-pick-cube",
  "title": "Pick up a cube with a simulated Panda",
  "query": "pick cube",
  "runtime": "maniskill",
  "robot": "panda",
  "skill_id": "maniskill-panda-pick-cube",
  "start_url": "https://api.superfastrobotics.com/v1/start?q=pick+cube&runtime=maniskill&hub_commit=f97266a5cdd2c600cd376397a54892f08290df20&robot=panda",
  "exact_start_url": "https://api.superfastrobotics.com/v1/start?q=maniskill-panda-pick-cube&query_mode=all_terms&hub_commit=f97266a5cdd2c600cd376397a54892f08290df20",
  "hub_commit": "f97266a5cdd2c600cd376397a54892f08290df20",
  "record_version": "1.1.0",
  "source_commit": "33967b9e3ead1f841eec57cc9f31d0d8b8cf0907",
  "environment": [
    {
      "runtime": "maniskill",
      "runtime_version": "3.0.0b22",
      "robot": "panda",
      "controller": "pd_joint_pos",
      "observation": "state",
      "os": "linux",
      "architecture": "x86_64",
      "python": "3.10",
      "status": "hub_verified"
    }
  ],
  "requirements": {
    "python": ">=3.10,<3.11",
    "packages": [
      "torch==2.5.1",
      "numpy==1.26.4",
      "sapien==3.0.0",
      "mplib==0.1.1",
      "fast_kinematics==0.2.2"
    ],
    "hardware": [
      "Linux x86_64 CPU; SAPIEN wheel needs glibc >=2.28",
      "Tested on Ubuntu 22.04 without a physical GPU, using Mesa 23.2.1 lavapipe Vulkan ICD for scene/material initialization"
    ],
    "rendering": "Output rendering disabled: render_backend=none, render_mode=None, state observations and CPU simulation. Pinned SAPIEN material initialization still needs a usable Vulkan ICD; verified CPU-only with Mesa lavapipe. Camera/graphics modes remain separate and unverified.",
    "api_keys": [],
    "network": [
      "GitHub source archive (~233 MiB)",
      "PyPI and dependency distributions; source package build hooks may execute",
      "Official PyTorch CPU wheel index for the verified CPU-only setup"
    ],
    "dependency_lock": "Direct dependencies pinned; transitive dependencies resolved by pip and captured in the prepared project. No bit-for-bit environment guarantee."
  },
  "example_input": {
    "task": "PickCube-v1",
    "seed": 0,
    "robot": "panda",
    "controller": "pd_joint_pos",
    "obs_mode": "state",
    "sim_backend": "cpu",
    "render_backend": "none",
    "max_episode_steps": 1000
  },
  "interface": {
    "version": "1",
    "kind": "task",
    "abstraction_level": 2,
    "execution_domain": "simulation",
    "language": "python",
    "input_transport": "cli_arguments",
    "output_transport": "json_stdout",
    "output_selector": "root",
    "conventions": {
      "linear_unit": "m",
      "angular_unit": "rad",
      "time_unit": "s",
      "coordinate_frame": "maniskill_world_xyz_z_up",
      "joint_order": "pinned_robot_model_order; pd_joint_pos controller",
      "quaternion_order": "not_exposed_by_this_adapter"
    },
    "input_schema": {
      "type": "object",
      "required": [
        "seed"
      ],
      "additionalProperties": false,
      "properties": {
        "seed": {
          "type": "integer",
          "minimum": 0,
          "maximum": 4294967295,
          "x-unit": "dimensionless",
          "description": "Simulation reset seed; task, robot, controller, state observation and 1000-step horizon are fixed by this recipe."
        }
      }
    },
    "output_schema": {
      "type": "object",
      "required": [
        "status"
      ],
      "additionalProperties": true,
      "properties": {
        "status": {
          "type": "string",
          "maxLength": 80
        }
      }
    },
    "argument_map": {
      "seed": "--seed"
    },
    "preconditions": [
      "Use the exact declared runtime/robot/environment combination.",
      "Ground-truth state and environment-generated targets; this adapter accepts a seed, not an arbitrary Cartesian goal.",
      "A nonzero exit or missing JSON is a process failure; never infer completion from preparation."
    ],
    "postconditions": [
      "PickCube-v1 env info.success is true after the upstream solver finishes, truncated is false, and 0 < elapsed_steps < max_episode_steps=1000; only then status is task_complete and exit is 0. The 1000-step motion-planning horizon is a Hub recipe condition, not the upstream default benchmark horizon. Success means cube at its goal and robot static; gripper release or placement on a support surface is not verified."
    ],
    "failure_codes": [
      "motion_plan_failed",
      "episode_truncated",
      "horizon_exceeded",
      "invalid_elapsed_steps",
      "task_objective_not_reached",
      "runtime_error",
      "process_failed_without_json"
    ],
    "composition": {
      "depends_on": [],
      "automatic_frame_conversion": false,
      "automatic_hardware_execution": false
    }
  },
  "completion": {
    "success_condition": "PickCube-v1 env info.success is true after the upstream solver finishes, truncated is false, and 0 < elapsed_steps < max_episode_steps=1000; only then status is task_complete and exit is 0. The 1000-step motion-planning horizon is a Hub recipe condition, not the upstream default benchmark horizon. Success means cube at its goal and robot static; gripper release or placement on a support surface is not verified.",
    "timeout_seconds": 180,
    "failure_modes": [
      "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",
      "Episode truncated or elapsed_steps reaches the Hub 1000-step horizon"
    ],
    "stop_condition": "Stop after one seed; no retries to conceal failures. Use an external 180-second process timeout."
  },
  "evidence": {
    "level": "task_complete",
    "verified_by": "Robot Skill Hub maintainer review of exact LLM-selected GitHub Actions execution artifacts",
    "date": "2026-10-18",
    "environment": {
      "os": "linux",
      "distribution": "Ubuntu 22.04",
      "architecture": "x86_64",
      "python": "3.10.22",
      "packages": {
        "mani_skill": "3.0.0b22",
        "torch": "2.5.1+cpu",
        "numpy": "1.26.4",
        "sapien": "3.0.0",
        "mplib": "0.1.1",
        "fast_kinematics": "0.2.2"
      },
      "robot": "panda",
      "controller": "pd_joint_pos",
      "observation": "state",
      "sim_backend": "cpu",
      "render_backend": "none",
      "vulkan_device": "Mesa 23.2.1 llvmpipe LLVM 15.0.7, PHYSICAL_DEVICE_TYPE_CPU",
      "physical_gpu_used": false,
      "max_episode_steps": 1000
    },
    "commands": [
      "python tools/run_runtime_verification.py --output \"$RUNNER_TEMP/runtime-artifacts\" --work-dir \"$RUNNER_TEMP/runtime-work\"",
      "/home/runner/work/_temp/runtime-work/maniskill-panda-pick-cube/.robot-skill-hub/environments/maniskill-panda-pick-cube/bin/python /home/runner/work/_temp/runtime-work/maniskill-panda-pick-cube/.robot-skill-hub/recipes/maniskill-panda-pick-cube/run.py --seed 0"
    ],
    "result": "PickCube-v1 seed 0 completed in the explicit Hub 1000-step motion-planning episode: success=true, terminated=true, truncated=false, elapsed_steps=74, exit=0 and no process timeout. One invocation was made for this task in the LLM-selected revalidation run. This verifies only the recorded CPU/state configuration and one seed, not the upstream default 50-step benchmark, hardware or camera modes. The cube was carried to the goal with a stationary arm; gripper release or support-surface placement is not required.",
    "artifacts": [
      "https://raw.githubusercontent.com/Superfast-Robotics/robot-skill-hub/07e53d9d7a0e1a6f169cab0065ce647c350cb652/evidence/runtime/llm-bounded-39045603320/manifest.json",
      "https://raw.githubusercontent.com/Superfast-Robotics/robot-skill-hub/07e53d9d7a0e1a6f169cab0065ce647c350cb652/evidence/runtime/llm-bounded-39045603320/maniskill-panda-pick-cube/report.json",
      "https://raw.githubusercontent.com/Superfast-Robotics/robot-skill-hub/07e53d9d7a0e1a6f169cab0065ce647c350cb652/evidence/runtime/llm-bounded-39045603320/maniskill-panda-pick-cube/task.stdout.txt",
      "https://raw.githubusercontent.com/Superfast-Robotics/robot-skill-hub/07e53d9d7a0e1a6f169cab0065ce647c350cb652/evidence/runtime/llm-bounded-39045603320/maniskill-panda-pick-cube/environment.json",
      "https://raw.githubusercontent.com/Superfast-Robotics/robot-skill-hub/07e53d9d7a0e1a6f169cab0065ce647c350cb652/evidence/runtime/llm-bounded-39045603320/vulkan-summary.txt",
      "https://raw.githubusercontent.com/Superfast-Robotics/robot-skill-hub/07e53d9d7a0e1a6f169cab0065ce647c350cb652/evidence/runtime/llm-bounded-39045603320/orchestration.json",
      "https://github.com/Superfast-Robotics/robot-skill-hub/actions/runs/39045603320"
    ],
    "runtime_verification": "task_complete",
    "contributor_reported": null,
    "hub_verification": {
      "level": "task_complete",
      "runtime": "task_complete",
      "workflow_run_id": "39045603320",
      "verified_hub_commit": "3a1c17905e76bf58ed58fab17009aec3806e634a",
      "source_commit": "33967b9e3ead1f841eec57cc9f31d0d8b8cf0907",
      "adapter_sha256": "5cd3551820612b7331709cca8e4454df1894a56c90675fd5bfb78d747bc6e68f",
      "record_version": "1.1.0",
      "seed": 0,
      "max_episode_steps": 1000,
      "terminated": true,
      "truncated": false,
      "elapsed_steps": 74,
      "physical_gpu_used": false
    }
  },
  "current_execution_state": "completed",
  "sample_url": "https://hub.superfastrobotics.com/samples/maniskill-panda-pick-cube/",
  "execution_performed": false,
  "sharing_performed": false
}
