{
  "schema_version": 1,
  "status": "source audit; not experimental outcomes",
  "source_revision": "81cf7909b13fe1a961aae9a4e457a5e786e4df8c",
  "arena_revision": "c5826c87aa181442328c2c74c49f9e551b5c3d8c",
  "expert_revision": "e0f5a056257fc89b386b7584cd5978285c6a02de",
  "dataset_revision": "1c5b2fbfaa35f70451bb462426c1b8adec1b7ec6",
  "assets_revision": "e005c6be4e8b5522c7efe1040764b97df7fcdc38",
  "task_catalog": [
    {
      "id": "LMBoxLift",
      "instruction": "Walk to the table and pick up the box",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Object root world Z >0.18m and at least one finger link within0.2m.",
        "root_z_gt_m": 0.18,
        "finger_near_m": 0.2
      },
      "native_reset": {
        "robot_xy_half_range_m": 0.05,
        "robot_yaw_half_range_rad": 0.17453292519943295,
        "table_center_xyz_m": [
          2,
          0,
          -0.8
        ],
        "table_xy_half_range_m": 0.16,
        "table_yaw_center_half_range_rad": [
          3.141592653589793,
          0.16
        ],
        "object_offset_from_table_world_axes_m": {
          "x": [
            -0.41,
            -0.09
          ],
          "y": [
            -0.16,
            0.16
          ],
          "z": [
            0.80145,
            0.80145
          ]
        },
        "object_yaw_center_half_range_rad": [
          1.5707963267948966,
          0.16
        ]
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMBoxLift.py",
      "source_sha256": "1f73c5e0af8f159aeffc405495032db4f658c753bbecc328ddbf12a847f64261",
      "interpretation_caveat": "Absolute world root height plus finger proximity; no secure-contact or dwell requirement."
    },
    {
      "id": "LMBoxLiftFloor",
      "instruction": "Walk to the box and pick it up from the floor",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Object root world Z >\u22120.5m, local-Z/world-up dot \u22650.9, and at least one finger within0.6m.",
        "root_z_gt_m": -0.5,
        "upright_dot_ge": 0.9,
        "finger_near_m": 0.6
      },
      "native_reset": {
        "robot_xy_half_range_m": 0.05,
        "robot_yaw_half_range_rad": 0.17453292519943295,
        "box_center_xyz_m": [
          2,
          0,
          -0.8
        ],
        "box_xy_half_range_m": 0.16,
        "box_yaw_center_half_range_rad": [
          0,
          0.16
        ]
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMBoxLiftFloor.py",
      "source_sha256": "8c1625ef2310437afbe343a2c2a29b20bf5adb360e41b519603758411ce84e35",
      "interpretation_caveat": "Absolute root height and orientation; the0.6m finger proximity allowance is a broad proxy."
    },
    {
      "id": "LMBoxTableToShelfPnP",
      "instruction": "Move the box from the table to the shelf",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Object/destination root separation per axis <[0.16,0.14,0.9227]m, object static, every finger >0.1m away, and destination contact >0.95N.",
        "root_separation_lt_xyz_m": [
          0.16,
          0.14,
          0.9227
        ],
        "static": true,
        "all_fingers_far_m": 0.1,
        "destination_contact_gt_N": 0.95,
        "drop_below_root_z_m": -0.6
      },
      "native_reset": {
        "robot_fixed": true,
        "source_table_center_xyz_m": [
          1.4,
          0,
          -0.8
        ],
        "source_table_xy_half_range_m": 0.1,
        "source_table_yaw_center_half_range_rad": [
          3.141592653589793,
          0.02
        ],
        "object_offset_from_table_world_axes_m": {
          "x": [
            -0.341,
            0.159
          ],
          "y": [
            -0.278,
            0.322
          ],
          "z": [
            0.762,
            0.762
          ]
        },
        "object_yaw_center_half_range_rad": [
          0,
          0.36
        ],
        "shelf_center_xyz_m": [
          0.3,
          -1.1,
          -0.8
        ],
        "shelf_xy_half_range_m": 0.18,
        "shelf_yaw_center_half_range_rad": [
          1.5707963267948966,
          0.36
        ]
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMBoxTableToShelfPnP.py",
      "source_sha256": "c4a1540f34cb3b8ce4e4d0c7fe5f8e1fb80f12eef1728236ccb9d697d7d2c9b4",
      "interpretation_caveat": "World-axis root proximity and destination contact; static permits speed up to0.15m/s and0.15rad/s."
    },
    {
      "id": "LMDrillLift",
      "instruction": "Walk to the table and pick up the power drill",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Drill root world Z >0.16m and approximate grasp predicate.",
        "root_z_gt_m": 0.16,
        "approximate_grasp": true
      },
      "native_reset": {
        "robot_xy_half_range_m": 0.05,
        "robot_yaw_half_range_rad": 0.17453292519943295,
        "table_center_xyz_m": [
          2,
          0,
          -0.8
        ],
        "table_xy_half_range_m": 0.16,
        "table_yaw_center_half_range_rad": [
          3.141592653589793,
          0.1
        ],
        "drill_offset_from_table_world_axes_m": {
          "x": [
            -0.38,
            -0.1
          ],
          "y": [
            -0.4,
            0.4
          ],
          "z": [
            0.80145,
            0.80145
          ]
        },
        "drill_yaw_center_half_range_rad": [
          -1.5707963267948966,
          0.4
        ]
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMDrillLift.py",
      "source_sha256": "6a0f3db2ca052b480fb79167e7de3226023fd22def58336627dacf21567aca94",
      "interpretation_caveat": "Grasp is approximated by finger proximity and joint closure, without required object-hand contact."
    },
    {
      "id": "LMDrillLiftObs",
      "instruction": "Navigate around the shelf and pick up the power drill from the table",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Drill root world Z >0.16m and approximate grasp predicate. Success does not explicitly require obstacle avoidance.",
        "root_z_gt_m": 0.16,
        "approximate_grasp": true
      },
      "native_reset": {
        "robot_xy_half_range_m": 0.05,
        "robot_yaw_half_range_rad": 0.17453292519943295,
        "obstacle_center_xyz_m": [
          0.805,
          0,
          -0.8
        ],
        "obstacle_xy_half_ranges_m": [
          0.12,
          0.6
        ],
        "obstacle_yaw_half_range_rad": 0.12,
        "table_center_xyz_m": [
          2.3,
          0,
          -0.8
        ],
        "table_xy_half_range_m": 0.12,
        "table_yaw_center_half_range_rad": [
          3.141592653589793,
          0.12
        ],
        "drill_offset_from_table_world_axes_m": {
          "x": [
            -0.35,
            -0.14
          ],
          "y": [
            0.28,
            0.64
          ],
          "z": [
            0.80145,
            0.80145
          ]
        },
        "drill_yaw_center_half_range_rad": [
          -1.5707963267948966,
          0.3
        ]
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMDrillLiftObs.py",
      "source_sha256": "c8d4ba247813dab5d62370d574ef26e5702c6ae90ddf5ece3c4c84490f56d278",
      "interpretation_caveat": "Approximate grasp; success does not explicitly test that the robot avoided colliding with the obstacle."
    },
    {
      "id": "LMDrillPnP",
      "instruction": "Move the power drill from one table to another",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Drill/destination-table root separation <[0.3,0.27,0.81]m, static, local-Z/world-up dot \u22650.8, and every finger >0.1m away. No contact term.",
        "root_separation_lt_xyz_m": [
          0.3,
          0.27,
          0.81
        ],
        "static": true,
        "upright_dot_ge": 0.8,
        "all_fingers_far_m": 0.1,
        "destination_contact_required": false,
        "drop_below_root_z_m": -0.6
      },
      "native_reset": {
        "robot_fixed": true,
        "source_table_center_xyz_m": [
          1.2,
          0,
          -0.8
        ],
        "source_table_xy_half_range_m": 0.12,
        "source_table_yaw_center_half_range_rad": [
          3.141592653589793,
          0.12
        ],
        "drill_offset_from_table_world_axes_m": {
          "x": [
            -0.3,
            -0.14
          ],
          "y": [
            -0.3,
            0.3
          ],
          "z": [
            0.8,
            0.8
          ]
        },
        "drill_yaw_center_half_range_rad": [
          -1.5707963267948966,
          0.3
        ],
        "destination_table_center_xyz_m": [
          0,
          1.2,
          -0.8
        ],
        "destination_table_xy_half_range_m": 0.12,
        "destination_table_yaw_center_half_range_rad": [
          -1.5707963267948966,
          0.12
        ]
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMDrillPnP.py",
      "source_sha256": "b482efbf037b23173ee36edbbb64de370e0c91b7a539a91faf7f60326c3d4063",
      "interpretation_caveat": "Root proximity, orientation and static test; no destination contact term."
    },
    {
      "id": "LMPickDrillFromHolder",
      "instruction": "Pick up the power drill from the holder",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Drill root world Z >0.13m, approximate grasp, and holder contact is not above0.95N.",
        "root_z_gt_m": 0.13,
        "approximate_grasp": true,
        "holder_contact_not_gt_N": 0.95
      },
      "native_reset": {
        "robot_xy_half_range_m": 0.05,
        "robot_yaw_half_range_rad": 0.17453292519943295,
        "shelf_center_xyz_m": [
          2,
          0,
          -0.79
        ],
        "shelf_xy_half_range_m": 0.12,
        "shelf_yaw_fixed_rad": 1.5707963267948966,
        "holder_offset_world_axes_m": {
          "x": [
            -0.769,
            -0.769
          ],
          "y": [
            -0.12,
            0.12
          ],
          "z": [
            0.75,
            0.75
          ]
        },
        "drill_slot_world_offsets_m": [
          [
            -0.07,
            0.165,
            -0.16
          ],
          [
            -0.07,
            0.055,
            -0.16
          ],
          [
            -0.07,
            -0.055,
            -0.16
          ],
          [
            -0.07,
            -0.165,
            -0.16
          ]
        ],
        "slot_rng": "Python random.choice; also seed NumPy and Torch for other native reset samplers"
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMPickDrillFromHolder.py",
      "source_sha256": "08ef91d0eee6ad68203cb6d1b81209f993af8bd4b4619f673b6118ba89f4d3f5",
      "interpretation_caveat": "Approximate hand grasp plus no holder contact; removing the drill is not a secure-grasp guarantee."
    },
    {
      "id": "LMPushButton",
      "instruction": "Walk to the console and press the red button",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Button joint normalized pressedness >0.5 and at least one finger within0.2m.",
        "normalized_pressedness_gt": 0.5,
        "finger_near_m": 0.2,
        "reset_normalized_pressedness": 0.2
      },
      "native_reset": {
        "robot_xy_half_range_m": 0.05,
        "robot_yaw_half_range_rad": 0.17453292519943295,
        "console_world_ranges_m": {
          "x": [
            1,
            1.8
          ],
          "y": [
            -0.2,
            0.8
          ],
          "z": [
            -0.79,
            -0.79
          ]
        },
        "console_yaw_fixed_rad": 1.5707963267948966,
        "button_offset_world_axes_m": {
          "x": [
            -0.3,
            -0.3
          ],
          "y": [
            -0.48,
            -0.38
          ],
          "z": [
            0.8,
            0.8
          ]
        },
        "button_quaternion_xyzw": [
          0,
          -0.70711,
          0,
          0.70711
        ]
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMPushButton.py",
      "source_sha256": "2bb257ad28b812fd763777879176ceee2796b1e1f3b62a2539bff3558a7c0c1c",
      "interpretation_caveat": "Normalized joint travel plus finger proximity; no force-contact or sustained-press requirement."
    },
    {
      "id": "LMPushShelfForward",
      "instruction": "Push the tall wheeled shelf to the marked area",
      "public_demonstrations": 100,
      "matched_checkpoint": "nvidia/G1-Factory-GR00T-1.7",
      "episode_seconds": 20,
      "control_hz": 50,
      "native_success": {
        "summary": "Shelf/target root separation <[0.3,0.3,0.01]m, static, local-Z/world-up dot \u22650.9, and a finger within1.1m.",
        "root_separation_lt_xyz_m": [
          0.3,
          0.3,
          0.01
        ],
        "static": true,
        "upright_dot_ge": 0.9,
        "finger_near_m": 1.1
      },
      "native_reset": {
        "robot_fixed": true,
        "cart_center_xyz_m": [
          1.5,
          0,
          -0.8
        ],
        "cart_xy_half_range_m": 0.3,
        "cart_yaw_center_half_range_rad": [
          -1.5707963267948966,
          0.06
        ],
        "target_center_xyz_m": [
          4.305,
          0,
          -0.8
        ],
        "target_xy_half_range_m": 0.1,
        "target_yaw_half_range_rad": 0.02
      },
      "source_url": "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/environments/LMPushShelfForward.py",
      "source_sha256": "4a69e60d92a3b25572df83290a9ccc60756e80ae401b84c0135b8194b6d97158",
      "interpretation_caveat": "Root/target proximity and static/upright test; the1.1m finger proximity allowance is broad."
    }
  ],
  "common_native_metric": {
    "name": "success_rate",
    "definition": "Mean native success flag captured before each finishing episode reset; initial reset excluded by SuccessRecorder.",
    "aggregation": "Report every task separately and equal-task macro average; all task failures remain visible. Pilot seed42 excluded from frozen evaluation seeds1000\u20131009.",
    "sources": [
      "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/tasks/g1_locomanip_lift_task.py",
      "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/tasks/g1_locomanip_pnp_task.py",
      "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/tasks/press_button_task.py",
      "https://github.com/NVlabs/G1-Factory/blob/81cf7909b13fe1a961aae9a4e457a5e786e4df8c/g1_factory/terms/terminations.py",
      "https://github.com/isaac-sim/IsaacLab-Arena/blob/c5826c87aa181442328c2c74c49f9e551b5c3d8c/isaaclab_arena/metrics/success_rate.py"
    ]
  },
  "checkpoint_coverage": {
    "scope": "One joint nine-task GR00T-N1.7 checkpoint; exact published task instructions, G1 WBC31-state/35-command group contract. No demonstrated arbitrary-task language generalization.",
    "model_card": "https://huggingface.co/nvidia/G1-Factory-GR00T-1.7",
    "dataset_card": "https://huggingface.co/datasets/nvidia/G1-Factory-Benchmark"
  },
  "risks_and_interpretation": [
    "Native lift criteria use absolute object-root world Z, not displacement from reset. Root origins can be below the visible object.",
    "Approximate grasp means any of14 finger links within0.18m plus at least3 finger joints displaced >0.1rad from defaults; no required object-hand contact sensor, and proximity/closure are not explicitly bound to the same hand.",
    "Static means linear speed \u22640.15m/s and angular speed \u22640.15rad/s. Placement uses per-axis world root separation, not a support-surface polygon.",
    "A proximity predicate or a single terminal frame is not proof of a secure sustained grasp. The collection CLI success-hold option does not automatically add dwell to inference success.",
    "The obstacle task instruction requests avoidance, but its success predicate only tests drill lift/grasp. Keep collisions and videos visible rather than reinterpret native success.",
    "Button reset_pressedness=0.8 maps through the Arena unpress event to pressed fraction0.2; it does not initialize the button beyond the0.5 success threshold.",
    "Factory uses an unlocked-waist HOMIEv2 WBC, a distinct robot USD, a different head-camera extrinsic/FOV, and mobile base commands. Apple geometry/controller/camera must not be substituted.",
    "Official pyproject restricts its uv environment to Linux x86_64. ARM GB300 needs a separately verified runtime; the pinned submodules declare IsaacSim6.0.1 while the model card mentions6.2.",
    "The pretrained expert was task-tuned on900 public demonstrations plus foundation pretraining. New ACT uses810 gradient-training episodes,90 reserved episodes, task-ID conditioning and320\u00d7240 RGB. Outcomes compare current systems, not architecture causality.",
    "The90 reserved episodes select ACT checkpoints and calibrate dispersion, so they are training-held-out but not untouched validation. Per-task q95 is empirical score calibration, not failure probability.",
    "Synchronous RPC pauses simulation. Neither measured wall latency nor native50Hz command timing demonstrates asynchronous latency hiding, Jetson performance, or WAN reliability."
  ],
  "viewer_extension_plan": {
    "storage": "New Factory directory only; previous apple outputs remain immutable.",
    "default_view": "Task selector + complete paired-seed outcome table, then recorded rollout selection. Do not choose only successful routes.",
    "recorded_player": "Actual MP4 synchronized by decoded frame presentation timestamp at50Hz; per-step ACT cyan/GR00T purple and five-step amber fade.",
    "charts": [
      "Both wrist mm and degree disagreement",
      "Both hand rad disagreement",
      "Waist joint rad diagnostic",
      "Height m and navigation m/s,rad/s disagreement",
      "ACT dispersion and task-specific q95",
      "Critical max ratio and acceptance level1",
      "Actual selected policy timeline; exclude initial selection from switch count",
      "RPC wall time and simulation time on separate labeled axes"
    ],
    "unknowns": "Expert disagreement absent between queries is a gap, never a zero; measured comparisons are predicted-command disagreement, not tracking error.",
    "per_task_context": "Instruction, native success predicate and proxy limitations alongside each replay. Locomotion overview must include robot, obstacle and target.",
    "evidence_links": [
      "Exact reset-pair checks",
      "Native termination predicates and episode record",
      "USD FK audit",
      "Frozen model/data/calibration/protocol identities",
      "All failed attempts and infrastructure retries retained separately"
    ]
  }
}
