{
  "requested_episodes": 1,
  "completed_episodes": 1,
  "unfinished_episodes": 0,
  "complete": true,
  "success_rate": 0.0,
  "completed_only": {
    "episodes": 1,
    "successes": 0.0,
    "success_rate": 0.0,
    "high_success_rate": 0.0,
    "lift_rates": {
      "0.02": 1.0,
      "0.05": 1.0,
      "0.1": 1.0,
      "0.15": 0.0
    },
    "mean_peak_lift_m": 0.12217026948928833,
    "drop_rate": 0.0,
    "invalid_episode_rate": 1.0
  },
  "matrix": [
    {
      "dr_scale": 0.0,
      "bottle_x_bin": 2,
      "bottle_y_bin": 0,
      "episodes": 1,
      "successes": 0.0,
      "success_rate": 0.0,
      "high_success_rate": 0.0,
      "lift_rates": {
        "0.02": 1.0,
        "0.05": 1.0,
        "0.1": 1.0,
        "0.15": 0.0
      },
      "mean_peak_lift_m": 0.12217026948928833,
      "drop_rate": 0.0,
      "invalid_episode_rate": 1.0
    }
  ],
  "episodes": [
    {
      "success": 0.0,
      "high_success": 0.0,
      "max_clearance": 0.12217026948928833,
      "best_hold_s": 0.0,
      "best_high_hold_s": 0.0,
      "ever_lifted": 1.0,
      "ever_dropped": 0.0,
      "ever_bad_contact": 0.0,
      "max_penetration": 0.007635138928890228,
      "max_joint_speed": 0.5299668908119202,
      "max_force_ratio": 1.0,
      "nonfinite": 0.0,
      "elapsed_s": 12.600000381469727,
      "physics_overflow_bits": 0,
      "final_goal_error_m": 0.44200780987739563,
      "initial_layout_footprint_overlap": 0.0,
      "return_": 18.478595733642578,
      "dr_scale": 0.0,
      "bilateral_fraction": 0.14476190507411957,
      "world": 0,
      "bottle_local_xy": [
        0.18000000715255737,
        -0.12999999523162842
      ],
      "terminated": true,
      "timeout": false,
      "bottle_x_bin": 2,
      "bottle_y_bin": 0,
      "invalid": true
    }
  ],
  "command": "evaluate",
  "vector_steps": 252,
  "seconds": 17.918861544691026,
  "policy": "supplied callable (CLI without checkpoint uses zero Cartesian action/open gripper)",
  "num_envs": 1,
  "contract": {
    "version": "mjlab-gs-cartesian-v4",
    "observation_mode": "state",
    "controller": "gpu-differential-ik",
    "arm_bias_compensation": true,
    "state_dim": 37,
    "goal_dim": 0,
    "goal_frame": "object-to-goal in robot/base; embedded in state",
    "action_dim": 7,
    "action_frame": "robot/base",
    "translation_m_per_step": 0.005,
    "rotation_rad_per_step": 0.017453292519943295,
    "gripper": "-1 closed; +1 open",
    "physics_dt": 0.001,
    "control_dt": 0.05,
    "rgb_shape": null,
    "rgb_dtype": null,
    "assets_manifest_sha256": "8eb22a0ebbc461bb728c2e2a0b601d6737a3fa3fd972dcbf2270d5cdabef9de0",
    "scene_sha256": "5be735fd530a190e8e287538ce232b101458b211d2990c03e6a1493d6a424dd7",
    "controller_details": {
      "ik_max_dq_rad": 0.02,
      "ik_delta_clip": "uniform direction-preserving",
      "joint_target_period_s": 0.008,
      "ik_damping": 0.005,
      "ik_orientation_weight": 0.2
    }
  },
  "task_spec": {
    "version": "bottle-lift-v5",
    "visual_actor_profile": null,
    "task_id": "Mjlab-GS-Bottle-UR5-State",
    "observation_mode": "state",
    "observations": {
      "actor": {
        "terms": {
          "joint_pos": {
            "func": "mjlab.envs.mdp.observations.joint_pos_rel",
            "params": {},
            "noise": {
              "operation": "add",
              "_tensor_cache": {},
              "n_min": -0.01,
              "n_max": 0.01
            },
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          },
          "joint_vel": {
            "func": "mjlab.envs.mdp.observations.joint_vel_rel",
            "params": {},
            "noise": {
              "operation": "add",
              "_tensor_cache": {},
              "n_min": -0.05,
              "n_max": 0.05
            },
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          },
          "ee_to_cube": {
            "func": "mjlab.tasks.manipulation.mdp.observations.ee_to_object_distance",
            "params": {
              "object_name": "bottle",
              "asset_cfg": {
                "name": "robot",
                "joint_names": null,
                "joint_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "body_names": null,
                "body_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "geom_names": null,
                "geom_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "site_names": [
                  "tcp"
                ],
                "site_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "actuator_names": null,
                "actuator_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "tendon_names": null,
                "tendon_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "camera_names": null,
                "camera_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "light_names": null,
                "light_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "material_names": null,
                "material_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "texture_names": null,
                "texture_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "pair_names": null,
                "pair_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "preserve_order": false
              }
            },
            "noise": {
              "operation": "add",
              "_tensor_cache": {},
              "n_min": -0.002,
              "n_max": 0.002
            },
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          },
          "cube_to_goal": {
            "func": "mjlab.tasks.manipulation.mdp.observations.object_to_goal_distance",
            "params": {
              "object_name": "bottle",
              "command_name": "lift_height"
            },
            "noise": {
              "operation": "add",
              "_tensor_cache": {},
              "n_min": -0.002,
              "n_max": 0.002
            },
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          },
          "actions": {
            "func": "mjlab.envs.mdp.observations.last_action",
            "params": {},
            "noise": null,
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          }
        },
        "concatenate_terms": true,
        "concatenate_dim": -1,
        "enable_corruption": false,
        "history_length": null,
        "flatten_history_dim": true,
        "nan_policy": "disabled",
        "nan_check_per_term": true
      },
      "critic": {
        "terms": {
          "joint_pos": {
            "func": "mjlab.envs.mdp.observations.joint_pos_rel",
            "params": {},
            "noise": {
              "operation": "add",
              "_tensor_cache": {},
              "n_min": -0.01,
              "n_max": 0.01
            },
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          },
          "joint_vel": {
            "func": "mjlab.envs.mdp.observations.joint_vel_rel",
            "params": {},
            "noise": {
              "operation": "add",
              "_tensor_cache": {},
              "n_min": -0.05,
              "n_max": 0.05
            },
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          },
          "ee_to_cube": {
            "func": "mjlab.tasks.manipulation.mdp.observations.ee_to_object_distance",
            "params": {
              "object_name": "bottle",
              "asset_cfg": {
                "name": "robot",
                "joint_names": null,
                "joint_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "body_names": null,
                "body_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "geom_names": null,
                "geom_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "site_names": [
                  "tcp"
                ],
                "site_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "actuator_names": null,
                "actuator_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "tendon_names": null,
                "tendon_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "camera_names": null,
                "camera_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "light_names": null,
                "light_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "material_names": null,
                "material_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "texture_names": null,
                "texture_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "pair_names": null,
                "pair_ids": {
                  "slice": [
                    null,
                    null,
                    null
                  ]
                },
                "preserve_order": false
              }
            },
            "noise": {
              "operation": "add",
              "_tensor_cache": {},
              "n_min": -0.002,
              "n_max": 0.002
            },
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          },
          "cube_to_goal": {
            "func": "mjlab.tasks.manipulation.mdp.observations.object_to_goal_distance",
            "params": {
              "object_name": "bottle",
              "command_name": "lift_height"
            },
            "noise": {
              "operation": "add",
              "_tensor_cache": {},
              "n_min": -0.002,
              "n_max": 0.002
            },
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          },
          "actions": {
            "func": "mjlab.envs.mdp.observations.last_action",
            "params": {},
            "noise": null,
            "clip": null,
            "scale": null,
            "delay_min_lag": 0,
            "delay_max_lag": 0,
            "delay_per_env": true,
            "delay_hold_prob": 0.0,
            "delay_update_period": 0,
            "delay_per_env_phase": true,
            "history_length": 0,
            "flatten_history_dim": true
          }
        },
        "concatenate_terms": true,
        "concatenate_dim": -1,
        "enable_corruption": false,
        "history_length": null,
        "flatten_history_dim": true,
        "nan_policy": "disabled",
        "nan_check_per_term": true
      }
    },
    "critic_dim": 37,
    "randomization": {
      "enabled": true,
      "nominal_fraction": 0,
      "bottle_edge_margin_m": 0.05,
      "bottle_yaw_deg": 180.0,
      "table_xy_m": 0.15,
      "table_yaw_deg": 15,
      "robot_xy_m": 0.1,
      "robot_yaw_deg": 15,
      "initial_joint_deg": [
        15,
        10,
        10,
        15,
        15,
        30
      ],
      "initial_gripper_open_min": 0.85,
      "camera_xyz_m": 0,
      "camera_rotation_deg": 0,
      "camera_focal_fraction": 0,
      "camera_principal_px": [
        0,
        0
      ],
      "friction_scale": [
        0.7,
        1.3
      ],
      "bottle_mass_scale": [
        0.8,
        1.2
      ],
      "joint_damping_scale": [
        0.8,
        1.2
      ],
      "light_gain": [
        1,
        1
      ],
      "material_gain": [
        1,
        1
      ],
      "exposure_gain": [
        1,
        1
      ],
      "white_balance": [
        1,
        1
      ],
      "image_noise_std_255": 0
    },
    "curriculum": {
      "enabled": false,
      "boundaries": [
        0,
        20000,
        50000,
        100000,
        200000
      ],
      "scales": [
        0.05,
        0.15,
        0.35,
        0.65,
        1.0
      ],
      "evaluation_scale": 0.0
    },
    "objective": {
      "lift_height_m": 0.1,
      "high_lift_height_m": 0.15,
      "hold_s": 2.0,
      "contact_force_n": 0.05,
      "max_hold_linear_speed": 0.15,
      "max_hold_angular_speed": 1.0,
      "max_penetration_m": 0.003,
      "hard_penetration_m": 0.02,
      "max_joint_speed": 1.57,
      "terminate_on_success": false,
      "contact_grace_s": 0.2,
      "capture_metrics": true
    },
    "episode_length_s": 15.0,
    "scale_rewards_by_dt": true,
    "reward_profile": "mjlab-lift-cube-8ee51fbc",
    "goal": {
      "nominal_joint_pos": [
        -3.522548046633501,
        -1.1518142048840005,
        0.9810469344913387,
        -1.4231175467061197,
        -1.5491226335784967,
        -0.36253961360662956
      ],
      "half_width_m": [
        0.05,
        0.05,
        0.03
      ],
      "joint_spread_deg": [
        5.0,
        5.0,
        5.0,
        5.0,
        5.0,
        5.0
      ],
      "candidates": 16
    },
    "goal_frame": "robot/base; nominal TCP FK + bounded reachable joint proposals",
    "goal_observation_dim": 0,
    "rewards": {
      "lift": {
        "func": "mjlab.tasks.manipulation.mdp.rewards.staged_position_reward",
        "params": {
          "command_name": "lift_height",
          "object_name": "bottle",
          "reaching_std": 0.2,
          "bringing_std": 0.3,
          "asset_cfg": {
            "name": "robot",
            "joint_names": null,
            "joint_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "body_names": null,
            "body_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "geom_names": null,
            "geom_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "site_names": [
              "tcp"
            ],
            "site_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "actuator_names": null,
            "actuator_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "tendon_names": null,
            "tendon_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "camera_names": null,
            "camera_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "light_names": null,
            "light_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "material_names": null,
            "material_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "texture_names": null,
            "texture_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "pair_names": null,
            "pair_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "preserve_order": false
          }
        },
        "weight": 1.0
      },
      "lift_precise": {
        "func": "mjlab.tasks.manipulation.mdp.rewards.bring_object_reward",
        "params": {
          "command_name": "lift_height",
          "object_name": "bottle",
          "std": 0.05
        },
        "weight": 1.0
      },
      "action_rate_l2": {
        "func": "mjlab.envs.mdp.rewards.action_rate_l2",
        "params": {},
        "weight": -0.01
      },
      "joint_pos_limits": {
        "func": "mjlab.envs.mdp.rewards.joint_pos_limits",
        "params": {
          "asset_cfg": {
            "name": "robot",
            "joint_names": [
              ".*"
            ],
            "joint_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "body_names": null,
            "body_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "geom_names": null,
            "geom_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "site_names": null,
            "site_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "actuator_names": null,
            "actuator_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "tendon_names": null,
            "tendon_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "camera_names": null,
            "camera_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "light_names": null,
            "light_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "material_names": null,
            "material_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "texture_names": null,
            "texture_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "pair_names": null,
            "pair_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "preserve_order": false
          }
        },
        "weight": -10.0
      },
      "joint_vel_hinge": {
        "func": "mjlab.tasks.manipulation.mdp.rewards.joint_velocity_hinge_penalty",
        "params": {
          "max_vel": 0.5,
          "asset_cfg": {
            "name": "robot",
            "joint_names": [
              ".*"
            ],
            "joint_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "body_names": null,
            "body_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "geom_names": null,
            "geom_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "site_names": null,
            "site_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "actuator_names": null,
            "actuator_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "tendon_names": null,
            "tendon_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "camera_names": null,
            "camera_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "light_names": null,
            "light_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "material_names": null,
            "material_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "texture_names": null,
            "texture_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "pair_names": null,
            "pair_ids": {
              "slice": [
                null,
                null,
                null
              ]
            },
            "preserve_order": false
          }
        },
        "weight": -0.01
      }
    },
    "commands": {
      "lift_height": {
        "resampling_time_range": [
          1000000000.0,
          1000000000.0
        ],
        "debug_vis": true,
        "entity_name": "bottle",
        "success_threshold": 0.05,
        "difficulty": "fixed",
        "target_position_range": {
          "x": [
            0.3,
            0.5
          ],
          "y": [
            -0.2,
            0.2
          ],
          "z": [
            0.2,
            0.4
          ]
        },
        "object_pose_range": null,
        "viz": {
          "target_color": [
            1.0,
            0.5,
            0.0,
            0.3
          ]
        }
      }
    },
    "reward_curriculum": {
      "joint_vel_hinge_weight": {
        "func": "mjlab.envs.mdp.curriculums.reward_curriculum",
        "params": {
          "reward_name": "joint_vel_hinge",
          "stages": [
            {
              "step": 0,
              "weight": -0.01
            },
            {
              "step": 12000,
              "weight": -0.1
            },
            {
              "step": 24000,
              "weight": -1.0
            }
          ]
        }
      }
    }
  },
  "note": "Fixed per-world episode quotas; no IK, reachability, visibility or collision-start rejection. No training.",
  "role": "learned scripted initialization actor; no PPO yet; not qualified",
  "seed": 2524,
  "scale": 0.0,
  "actor_sha256": "4b3242db3600d20bf20a193ab858c493337a43c27fd7b84391687102dcf63255"
}