{
  "id": "sawyer-open-drawer",
  "title": "Open a drawer with a simulated Sawyer",
  "query": "drawer open",
  "runtime": "metaworld",
  "robot": "sawyer",
  "skill_id": "metaworld-sawyer-drawer-open-v3",
  "start_url": "https://api.superfastrobotics.com/v1/start?q=drawer+open&runtime=metaworld&hub_commit=f97266a5cdd2c600cd376397a54892f08290df20&robot=sawyer",
  "exact_start_url": "https://api.superfastrobotics.com/v1/start?q=metaworld-sawyer-drawer-open-v3&query_mode=all_terms&hub_commit=f97266a5cdd2c600cd376397a54892f08290df20",
  "hub_commit": "f97266a5cdd2c600cd376397a54892f08290df20",
  "record_version": "1.0.0",
  "source_commit": "c0dafaf1557f31cad3b96ba2b62462f45638f5a5",
  "environment": [
    {
      "runtime": "metaworld",
      "runtime_version": "3.1.1",
      "robot": "sawyer",
      "controller": "scripted-policy",
      "observation": "privileged_simulator_state",
      "os": "linux",
      "architecture": "x86_64",
      "python": "3.11",
      "status": "hub_verified"
    }
  ],
  "requirements": {
    "python": ">=3.11,<3.12",
    "packages": [
      "metaworld==3.1.1",
      "mujoco==3.3.0",
      "numpy==1.26.4",
      "gymnasium==1.2.0",
      "packaging==25.0"
    ],
    "hardware": [
      "Linux x86_64; CPU simulation; see retained receipt for the exact host environment"
    ],
    "rendering": "Headless. EGL libraries are required for MuJoCo imports; PushT uses SDL dummy video. No interactive display.",
    "api_keys": [],
    "network": [
      "Pinned source archive during preparation",
      "PyPI dependencies during explicit installation"
    ],
    "dependency_lock": "Direct runtime versions are pinned and measured. The receipt retains the complete environment freeze; prepare records the installed environment. System drivers are separate host requirements."
  },
  "example_input": {
    "seed": 0
  },
  "interface": {
    "version": "1",
    "kind": "task",
    "abstraction_level": 2,
    "execution_domain": "simulation",
    "language": "python",
    "input_transport": "json_file_or_inline",
    "output_transport": "json_stdout",
    "output_selector": "outputs",
    "conventions": {
      "linear_unit": "m",
      "angular_unit": "rad",
      "time_unit": "s",
      "coordinate_frame": "right_handed_world_xyz; +z_up",
      "joint_order": "not_used",
      "quaternion_order": "not_used"
    },
    "input_schema": {
      "type": "object",
      "required": [
        "seed"
      ],
      "properties": {
        "seed": {
          "type": "integer",
          "minimum": 0,
          "maximum": 10000
        }
      },
      "additionalProperties": false
    },
    "output_schema": {
      "type": "object",
      "required": [
        "success_window",
        "native_success",
        "steps",
        "control_effort",
        "hand_movement_m",
        "native_metrics"
      ],
      "properties": {
        "success_window": {
          "type": "array",
          "minItems": 1,
          "maxItems": 20,
          "items": {
            "type": "boolean"
          }
        },
        "native_success": {
          "type": "boolean"
        },
        "steps": {
          "type": "integer",
          "minimum": 1,
          "maximum": 500
        },
        "control_effort": {
          "type": "number",
          "minimum": 0,
          "maximum": 10000
        },
        "hand_movement_m": {
          "type": "number",
          "minimum": 0,
          "maximum": 10,
          "x-unit": "m"
        },
        "native_metrics": {
          "type": "array",
          "minItems": 0,
          "maxItems": 32,
          "items": {
            "type": "object",
            "required": [
              "name",
              "value"
            ],
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 80
              },
              "value": {
                "type": "number",
                "minimum": -10000,
                "maximum": 10000
              }
            },
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    },
    "preconditions": [
      "Use the exact recorded source, Linux Python 3.11 environment and pinned direct packages.",
      "No physical robot, network actuation or external robot credentials."
    ],
    "postconditions": [
      "All reported checks must be true and all output numbers finite.",
      "Success covers the declared goal and frozen cases, not arbitrary tasks or physical hardware."
    ],
    "failure_codes": [
      "invalid_input_or_environment",
      "execution_failed",
      "task_failed"
    ],
    "composition": {
      "depends_on": [],
      "automatic_frame_conversion": false,
      "automatic_hardware_execution": false
    },
    "origin_reference_ids": [
      "metaworld-metaworld-policies-sawyer-drawer-open-v3-policy-py"
    ],
    "origin_relationship": "prepared_from_the_same_pinned_model; inspect the declared controller and goal; no physical compatibility is inferred"
  },
  "completion": {
    "success_condition": "All declared goal and finite-state checks pass; exit 0 with task_complete. Five consecutive native task-success predicates within 500 dynamic simulation steps. Task-specific success definitions come from the pinned upstream environment; this is not a general manipulation score.",
    "timeout_seconds": 180,
    "failure_modes": [
      "Invalid input or source checksum",
      "Different pinned package version",
      "Unavailable runtime/driver",
      "Goal not reached within bounded steps"
    ],
    "stop_condition": "Terminate the adapter at the recorded timeout. No physical hardware is opened."
  },
  "evidence": {
    "level": "task_complete",
    "verified_by": "Hub finite-case Lambda execution harness",
    "date": "2026-10-20",
    "environment": {
      "scope": "simulation",
      "physical_robot": false,
      "platforms": [
        "linux"
      ]
    },
    "commands": [
      "python tools/verify_runtime_expansion.py --backend metaworld --source-cache SOURCE_CACHE --output OUTPUT"
    ],
    "result": "All 3 frozen cases completed against this exact adapter and source.",
    "artifacts": [
      "https://raw.githubusercontent.com/Superfast-Robotics/robot-skill-hub/f97266a5cdd2c600cd376397a54892f08290df20/evidence/runtime/diverse-sim-v1/metaworld-sawyer-drawer-open-v3.json"
    ],
    "runtime_verification": "task_complete",
    "contributor_reported": null,
    "hub_verification": {
      "runtime": "task_complete",
      "scope": "simulation",
      "adapter_sha256": "19af7cd2a022999f46c161d6460395f2e44315f40735e26105fd71e0361568b9",
      "source_commit": "c0dafaf1557f31cad3b96ba2b62462f45638f5a5",
      "record_version": "1.0.0",
      "case_count": 3,
      "retained_failed_cases": 0
    }
  },
  "current_execution_state": "completed",
  "sample_url": "https://hub.superfastrobotics.com/samples/metaworld-sawyer-drawer-open-v3/",
  "execution_performed": false,
  "sharing_performed": false
}
