{
  "success_rate": 0.0,
  "successes": 0,
  "trials": 4,
  "wilson95": [
    0.0,
    0.48990002040399916
  ],
  "mean_sorted_fraction": 0.4375,
  "mean_seconds": 76.7125,
  "total_misplaced": 0,
  "total_outside": 0,
  "red_to_right": 0,
  "blue_to_left": 0,
  "validity_failures": 1,
  "by_tube_count": {
    "4": {
      "trials": 4,
      "success_rate": 0.0,
      "mean_sorted_fraction": 0.4375
    }
  },
  "policy": "scripted-expert",
  "checkpoint_sha256": null,
  "prefix": 20,
  "transition_prefix": 5,
  "episodes": 4,
  "randomize": false,
  "dr_scale": null,
  "seed": 22,
  "simulator_contract": {
    "version": "mjlab-gs-cartesian-v4",
    "observation_mode": "visual",
    "controller": "gpu-differential-ik",
    "arm_bias_compensation": true,
    "state_dim": 16,
    "goal_dim": 3,
    "goal_frame": "robot/base",
    "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.0005,
    "control_dt": 0.05,
    "rgb_shape": [
      200,
      320,
      3
    ],
    "rgb_dtype": "uint8",
    "assets_manifest_sha256": "8eb22a0ebbc461bb728c2e2a0b601d6737a3fa3fd972dcbf2270d5cdabef9de0",
    "scene_sha256": "5be735fd530a190e8e287538ce232b101458b211d2990c03e6a1493d6a424dd7",
    "controller_details": {
      "ik_max_dq_rad": 0.025,
      "ik_delta_clip": "uniform direction-preserving",
      "joint_target_period_s": 0.0005,
      "ik_damping": 0.005,
      "ik_orientation_weight": 0.2
    }
  },
  "task_spec": {
    "version": "tube-sort-v2-free-hazel-pla",
    "asset_contract": {
      "box": "hazel_500ml_box",
      "box_mass_kg": 0.016,
      "box_free_joint": true,
      "tubes": [
        "red_pla_tube_20x16x80",
        "blue_pla_tube_20x16x80"
      ],
      "tube_mass_kg": 0.01,
      "geometry_scale_randomization": false,
      "appearance": "source visual mesh with per-world red/blue RGBA"
    },
    "task_id": "Mjlab-GS-TubeSort-UR5",
    "success_definition": "every active tube settled inside its target basket, with the robot and active-object contact-validity gates",
    "sort_rule": {
      "red": "left",
      "blue": "right"
    },
    "colour_target_index": [
      0,
      2
    ],
    "observation_mode": "visual",
    "observations": {
      "actor": {
        "terms": {
          "state": {
            "func": "mjlab_gs.tasks.mdp.state",
            "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": {
          "state": {
            "func": "mjlab_gs.tasks.tubesort.mdp.critic",
            "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
      },
      "camera": {
        "terms": {
          "rgb": {
            "func": "mjlab_gs.tasks.mdp.camera",
            "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
      }
    },
    "goal_observation_dim": 0,
    "critic_dim": 124,
    "visual_actor_profile": {
      "name": "act-style-single-action-v1",
      "backbone": "resnet18",
      "transformer_dim": 256,
      "attention_heads": 8,
      "encoder_layers": 3,
      "decoder_layers": 2,
      "feedforward_dim": 1024,
      "dropout": 0.0,
      "batch_norm": "frozen statistics",
      "pretrained_weights": false,
      "history_frames": 1,
      "action_queries": 1,
      "ppo_head_hidden_dims": [
        256
      ]
    },
    "layout": {
      "centre": {
        "name": "centre",
        "centre": [
          0.0,
          -0.156
        ],
        "interior": [
          0.0745,
          0.047
        ],
        "wall_height": 0.032,
        "wall_thickness": 0.013,
        "floor_thickness": 0.004,
        "rgba": [
          0.62,
          0.6,
          0.56,
          1.0
        ]
      },
      "left": {
        "name": "left",
        "centre": [
          -0.205,
          -0.156
        ],
        "interior": [
          0.0745,
          0.047
        ],
        "wall_height": 0.032,
        "wall_thickness": 0.013,
        "floor_thickness": 0.004,
        "rgba": [
          0.62,
          0.6,
          0.56,
          1.0
        ]
      },
      "right": {
        "name": "right",
        "centre": [
          0.205,
          -0.156
        ],
        "interior": [
          0.0745,
          0.047
        ],
        "wall_height": 0.032,
        "wall_thickness": 0.013,
        "floor_thickness": 0.004,
        "rgba": [
          0.62,
          0.6,
          0.56,
          1.0
        ]
      },
      "tube": {
        "radius": 0.01,
        "half_length": 0.04,
        "mass": 0.01,
        "friction": [
          0.5,
          0.005,
          0.0005
        ],
        "red_rgba": [
          0.8,
          0.12,
          0.12,
          1.0
        ],
        "blue_rgba": [
          0.12,
          0.25,
          0.85,
          1.0
        ],
        "shape": "mesh",
        "damping": 0.0,
        "armature": 0.0,
        "condim": 6,
        "margin": 0.0,
        "solref": [
          0.01,
          1.0
        ],
        "solimp": [
          0.9,
          0.95,
          0.001
        ]
      },
      "pile_half_x": 0.1,
      "pile_half_y": 0.045,
      "drop_margin_m": 0.035,
      "release_drop_m": 0.02,
      "pile_layers": 4
    },
    "randomization": {
      "enabled": false,
      "nominal_fraction": 0.1,
      "tube_count": [
        4,
        10
      ],
      "tube_colour_shade": [
        0.85,
        1.15
      ],
      "tube_radius_scale": [
        1.0,
        1.0
      ],
      "tube_length_scale": [
        1.0,
        1.0
      ],
      "tube_mass_scale": [
        1.0,
        1.0
      ],
      "basket_xy_m": 0.005,
      "basket_yaw_deg": 2.0,
      "table_xy_m": 0.03,
      "table_yaw_deg": 3.0,
      "robot_xy_m": 0.01,
      "robot_yaw_deg": 1.5,
      "initial_joint_deg": [
        6.0,
        4.0,
        5.0,
        6.0,
        5.0,
        12.0
      ],
      "initial_gripper_open_min": 0.85,
      "camera_xyz_m": 0.004,
      "camera_rotation_deg": 2.0,
      "camera_focal_fraction": 0.02,
      "camera_principal_px": [
        6.4,
        4.0
      ],
      "friction_scale": [
        0.7,
        1.3
      ],
      "joint_damping_scale": [
        0.8,
        1.2
      ],
      "light_gain": [
        0.7,
        1.3
      ],
      "material_gain": [
        0.8,
        1.2
      ],
      "exposure_gain": [
        0.85,
        1.15
      ],
      "white_balance": [
        0.95,
        1.05
      ],
      "image_noise_std_255": 2.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": {
      "settle_speed": 0.05,
      "contact_force_n": 0.05,
      "contact_grace_s": 0.2,
      "max_penetration_m": 0.003,
      "max_box_penetration_m": 0.0008,
      "max_tube_penetration_m": 0.0015,
      "hard_penetration_m": 0.02,
      "max_joint_speed": 1.57,
      "terminate_on_success": false,
      "capture_metrics": true
    },
    "contact_profile": "hard2",
    "physics": {
      "timestep": 0.0005,
      "integrator": "implicitfast",
      "impratio": 5.0,
      "cone": "elliptic",
      "jacobian": "auto",
      "solver": "newton",
      "iterations": 80,
      "tolerance": 1e-10,
      "ls_iterations": 50,
      "ls_tolerance": 0.01,
      "ccd_iterations": 50,
      "gravity": [
        0.0,
        0.0,
        -9.81
      ],
      "disableflags": [],
      "enableflags": []
    },
    "episode_length_s": 240.0,
    "scale_rewards_by_dt": true,
    "rewards": {
      "sorted": {
        "func": "mjlab_gs.tasks.tubesort.config.sorted_progress",
        "params": {},
        "weight": 1.0
      }
    },
    "commands": {}
  }
}