Environment registry

An environment is one simulated surgical task: a scene, a success check, and a physics backend that steps it.

Every environment passes through an automatic gate (headless run, two-run determinism, a known-fail control) before it is marked green; red environments fail with a measured cause, and to-build entries are planned but not yet built.

170Registered53Green44Red (gate failed)73To build0Counted

What counts: green env AND realism receipt glm_score >= 8. Measured today: 0 environments counted.

Gap policy: a green env with no realism receipt is a recorded gap, never guessed.

17 green environments without a realism receipt (count gaps)

By backend and by source

Environments by backend

BackendEnvs
warp69
mujoco39
isaac26
sofa26
pybullet10

Environments by source

SourceEnvs
hecaton-multiarm73
sofa-env26
factory-v124
i4h-workflows16
i4h-cases12
surrol10
orbit-surgical9

Upstream sources (pinned commits)

KeyRepositoryFilePinned commitEnvs
hecaton-multiarmagent-next/hecaton (forge PR #49)bench/w2/multiarm_tasks.yamlfafb30059114…73
sofa-envgithub.com/ScheiklP/sofa_envsofa_env.json85bf7e05dd08…26
factory-v1agent-next/hecaton (branch surg-factory-v1-20261106)multiarm/surgery/factory9543dcbb95da…24
i4h-workflowsgithub.com/isaac-for-healthcare/i4h-workflowsi4h_workflows.json2ab93f52bb0d…16
i4h-casesgithub.com/isaac-for-healthcare/i4h-physics-simulationi4h_cases.json86e2fd851e30…12
surrolgithub.com/med-air/SurRoLsurrol.jsona903fa6de40b…10
orbit-surgicalgithub.com/orbit-surgical/orbit-surgicalorbit_surgical.json6e47534f7d41…9

All 170 environments

Realism shows the cross-model judged score where a realism receipt exists. Per-environment step-rate (Hz) fields are not extracted into the site data (not found - gap); measured rates live inside the gate receipts linked per row.

IdStatusBackendSourceArmsRealismCountedDetailsReceipt
i4h-chole-tet-medredwarpi4h-cases0(not found - gap)no
nondeterministic post-step state hash across two fresh GPU proce...

Gate cause: nondeterministic post-step state hash across two fresh GPU processes, same seed (reset 22e551e05a809cad identical; steps ebe1f85e10410049 != 5a89518f2ee93027) GPU nondeterminism (fresh-process, same seed); round-1 reproduced 2026-11-06T15:39Z

Notes: richest case: tet_bundle choly-mid (liver+fat+gallbladder), cavity static mesh, blood+irrigation fluids, 5 instruments (grasper/hook/clip_applier/scissors/suction), 26 systems incl cutting, thermal, stretch_breaking, clipping, bleeding, suction, smoke, centreline (cystic artery+duct); sim.envs=1, device cuda:0, dt 1/60, substeps 8

Success function: (not found - gap) physics-only case: no procedure block; measure.py finiteness check + record_baseline.py baseline only

receipt
i4h-chole-graspredwarpi4h-cases0(not found - gap)no
nondeterministic post-step state hash across two fresh GPU proce...

Gate cause: nondeterministic post-step state hash across two fresh GPU processes, same seed (reset 22e551e05a809cad identical; steps 4a37fa0750a51488 != d9b893dd3cc19d77) GPU nondeterminism (fresh-process, same seed); round-1 reproduced 2026-11-06T15:39Z

Notes: case: chole_tet_med + procedure block (merged assets verified in read_validate.out: blood+cavity+irrigation+tissue); gym task I4h-GraspTarget-Direct

Success function: procedure grasp_target -> i4h_surgical.assessment.GraspTarget via i4h_assessment.executor.Procedure: grasper holds tissue.gallbladder particle index 65 within radius 0.15 for hold 0.5 s; Procedure.results()[e]['result']=='success' (else running/timeout/invalid_target); timeout 120 s

receipt
i4h-liverredwarpi4h-cases0(not found - gap)no
nondeterministic post-step state hash across two fresh GPU proce...

Gate cause: nondeterministic post-step state hash across two fresh GPU processes, same seed (reset 082d9cc0129cb242 identical; steps b2429cd92a7fa799 != c836f382db56cd23) GPU nondeterminism (fresh-process, same seed); round-1 reproduced 2026-11-06T15:39Z

Notes: surface-only tet_vtu liver (no interior nodes) at real scale 1.5 L, 391 pinned particles, one sphere probe (9.5 mm indenter, Lister et al. 2011); sim.envs=1 device cuda:0

Success function: (not found - gap) no procedure; built for FEM cross-validation (FEBio/SOFA via i4h-validation); upstream check = state finiteness only

receipt
i4h-liver-h12redwarpi4h-cases0(not found - gap)no
nondeterministic post-step state hash across two fresh GPU proce...

Gate cause: nondeterministic post-step state hash across two fresh GPU processes, same seed (reset 3d5a60483c0287ad identical; steps df5d70d99133e3ca != 5e0b93e0a465d7ce) GPU nondeterminism (fresh-process, same seed); round-1 reproduced 2026-11-06T15:39Z

Notes: TetGen-filled liver (12 mm, 3842 particles incl interior nodes; i4h-validation refine_liver.py), rel 0.19 / E_eff 5.7 kPa vs converged FEM; same probe + pin as liver

Success function: (not found - gap) no procedure; best-match-to-FEM tuning variant; upstream check = state finiteness only

receipt
i4h-tissue-contactgreenwarpi4h-cases01/10no
two disconnected tet parts (source/target) in one bundle; target...

Notes: two disconnected tet parts (source/target) in one bundle; target tip starts 0.003 inside contact shell; NO instruments; sim.envs=2, gravity 0, render noop

Success function: (not found - gap) no procedure; measure_tissue_contact.py reports contact counts/overflow + perf, finiteness assert only

receipt
i4h-two-worldsredwarpi4h-cases0(not found - gap)no
nondeterministic post-step state hash across two fresh GPU proce...

Gate cause: nondeterministic post-step state hash across two fresh GPU processes, same seed (reset cfb810e269e73222 identical; steps 8b87b6a74331fc9c != e225c58aa36c904b) GPU nondeterminism (fresh-process, same seed); round-1 reproduced 2026-11-06T15:39Z

Notes: 2 envs with per-env mesh variants (4x4x4 vs padded 3x3x3 grid block, fix_top, hanging) + cantilever rod + 256-particle water pool + sphere probe; block burnable/cuttable; emitter+suction+fluid_contact; render noop

Success function: (not found - gap) no procedure; upstream checks = tests/runtime/test_two_worlds.py (env isolation) + measure.py finiteness

receipt
i4h-aorta-staticgreenwarpi4h-cases03/10no
192-node 9.55 m Cosserat rod (block-Thomas XPBD rod_direct) into...

Notes: 192-node 9.55 m Cosserat rod (block-Thomas XPBD rod_direct) into static AortaWithVesselsStatic.usdc; catheter_control root/track/tip_bend + rod_containment; gravity 0, envs=1

Success function: (not found - gap) no procedure on the base case; measure.py finiteness + record_baseline baseline (6347 env-steps/s @64env on our 5090, t2 STATUS L32)

receipt
i4h-aorta-static-reachgreenwarpi4h-cases03/10no
case: aorta_static + procedure; gym task I4h-ReachTarget-Direct...

Notes: case: aorta_static + procedure; gym task I4h-ReachTarget-Direct (the only gym-wrapped reach task)

Success function: procedure reach_target -> i4h_endoluminal.assessment.ReachTarget: catheter rod tip node within radius 0.1 of fixed position [9.69, 0.18, 0.38] for hold 0.5 s, timeout 120 s; Procedure.results()[e]['result']=='success'

receipt
i4h-aorta-shellgreenwarpi4h-cases03/10no
deformable shell vessel (DynamicAorta.usdc, boundary rims pinned...

Notes: deformable shell vessel (DynamicAorta.usdc, boundary rims pinned, shell solver) with two-way shell_containment (response 0.5); 128-node catheter

Success function: (not found - gap) no procedure; qualify_endoluminal.py CASES includes it but checks mechanics, not success

receipt
i4h-aorta-shell-reachgreenwarpi4h-cases03/10no
case: aorta_shell + procedure; scripted nav needs insertion 250...

Notes: case: aorta_shell + procedure; scripted nav needs insertion 250 steps + rotation 0.15 + bend 0.05

Success function: procedure reach_target -> ReachTarget: catheter tip within radius 0.1 of [7.36, 0.17, 0.9] for hold 0.5 s, timeout 120 s; Procedure.results()[e]['result']=='success'

receipt
i4h-aorta-centrelinegreenwarpi4h-cases03/10no
vessel is a PBD rod_pbd Cosserat tree (12 branches) along the VM...

Notes: vessel is a PBD rod_pbd Cosserat tree (12 branches) along the VMTK-extracted lumen centreline, surface skinned; lumen_containment two-way; root = right femoral end, other ends pinned

Success function: (not found - gap) no procedure; upstream check = tests/runtime/test_endoluminal_cases.py + measure.py finiteness

receipt
i4h-aorta-centreline-reachgreenwarpi4h-cases03/10no
case: aorta_centreline + procedure; ENDOLUMINAL (numerical_sim/e...

Notes: case: aorta_centreline + procedure; ENDOLUMINAL (numerical_sim/endoluminal). r3 gate red on GPU fresh-process nondeterminism (archived receipt receipts/archive/i4h-aorta-centreline-reach.gpu-nondet-r3.json: reset e9415d49be9153cf identical, steps 5615150ecb5f23cb != c8c31e263b53a394, hz 130.2); i4h-endo-r4 green on warp CPU steps=5 (steps hash 05605cb87780df48 identical across two fresh processes, same reset e9415d49be9153cf as the GPU run, known-fail control passed, hz 23.808); sibling rows (aorta-static/shell/centreline + reach variants) remain GPU-gated greens from r3; realism not scored (not found - gap: no reusable i4h frame script in bench/realism/, frame capture GPU-gated during r2)

Success function: procedure reach_target -> ReachTarget: catheter tip within radius 0.1 of [7.36, 0.17, 0.9] for hold 0.5 s, timeout 120 s; Procedure.results()[e]['result']=='success'

receipt
arena-psm-reachgreenisaaci4h-workflows11/10no
manifest robots defaults to ('robot',); target REACH_TARGET_POS...

Notes: manifest robots defaults to ('robot',); target REACH_TARGET_POS from assets/_surgical. Import smoke green (i4h_arena + PsmReachScene + scene_specs()==16).

Success function: workflow i4h_workflows/laparoscopic-robotics/surgical_reach_psm.py success(): near_object(scene,'reach_target',radius=0.01) (TCP within 0.01 m of target). Env layer: SurgicalReachEnvCfg (envcfg/_surgical.py) terminates on time_out only (5.0 s = 150 steps @30 Hz); the 0.025 m target_success term lives in SurgicalEnvCfg which is used only for native env smoke, not this scene.

receipt
arena-dual-psm-reachgreenisaaci4h-workflows21/10no
action vector split in halves via RobotSlice; commands ee_1_pose...

Notes: action vector split in halves via RobotSlice; commands ee_1_pose/ee_2_pose resampled at 6 s hold.

Success function: workflow surgical_reach_dual_psm.py success(): all_of(near_object('reach_target_1',radius=0.01,robot='psm1'), near_object('reach_target_2',radius=0.01,robot='psm2')). Env layer: SurgicalReachEnvCfg.dual_psm() time_out-only termination, 5.0 s = 150 steps @30 Hz.

receipt
arena-star-reachgreenisaaci4h-workflows12/10no
Uses SeattleLabTable not Props/Table; tcp_body='endo360_needle'.

Notes: Uses SeattleLabTable not Props/Table; tcp_body='endo360_needle'.

Success function: workflow surgical_reach_star.py success(): near_object(scene,'reach_target',radius=0.03). Env layer: SurgicalReachEnvCfg.star() time_out-only, 5.0 s = 150 steps @30 Hz; commands sampled on endo360_needle body box pos_x(0.45,0.52) y(0,0.3) z(0.26,0.4).

receipt
arena-psm-blockgreenisaaci4h-workflows11/10no
dof 8 = 7 ee + binary jaw; gripper_close 0.1; sim_dt 1/200 decim...

Notes: dof 8 = 7 ee + binary jaw; gripper_close 0.1; sim_dt 1/200 decimation 4 -> 50 Hz control.

Success function: workflow surgical_lift_block.py success(): object_above(scene,'block',-0.075) -> world z > 0.075 m (PSM root at world z=0.15). Env layer SurgicalLiftEnvCfg (envcfg/_surgical.py:541): terminations time_out (5.0 s = 250 steps @50 Hz) + object_dropping (root z < -0.05); lift reward object_is_lifted z > 0.02, goal tracking to object_pose command.

receipt
arena-psm-needlegreenisaaci4h-workflows11/10no
Suture needle as SDF collision mesh.

Notes: Suture needle as SDF collision mesh.

Success function: workflow surgical_lift_needle.py success(): object_above(scene,'needle',-0.085) -> world z > 0.065 m. Env layer SurgicalLiftEnvCfg: time_out (5.0 s = 250 steps @50 Hz) + object_dropping; rewards object_is_lifted z > 0.02 + goal tracking.

receipt
arena-psm-needle-organsredisaaci4h-workflows1(not found - gap)no
oracle error: 'RuntimeError: run.sh rc=-9; no demos.hdf5; sessio...

Gate cause: oracle error: 'RuntimeError: run.sh rc=-9; no demos.hdf5; session log tail:\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/spawners/from_files/from_files.py", line 82, in spawn_from_usd\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/spawners/from_files/from_files.py", line 327, in _spawn_from_usd_file\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/utils/assets.py", line 155, in retrieve_file_path\n File "/mnt/wd20t/hecaton-surgery/i4h-venvs/arena/lib/python3.12/site-packages/isaacsim/kit/extscore/omni.client.lib/omni/client/impl/__init__.py", line 368, in copy\n\n2026-11-06T17:24:40Z [1,021,578ms] [Warning] [omni.client.python] Detected a blocking function. This will cause hitches or hangs in the UI. Please switch to the async version:\n File "<frozen runpy>", line 198, in _run_module_as_main\n File "<frozen runpy>", line 88, in _run_code\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/i4h_arena/cli.py", line 370, in <module>\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/i4h_arena/cli.py", line 206, in main\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/i4h_arena/cli.py", line 295, in _launch\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/i4h_arena/app.py", line 73, in make_env\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/.venv/lib/python3.12/site-packages/gymnasium/envs/registration.py", line 734, in make\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/envs/manager_based_rl_env.py", line 88, in __init__\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/envs/manager_based_env.py", line 125, in __init__\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/envs/manager_based_env.py", line 176, in _init_sim\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/scene/interactive_scene.py", line 200, in __init__\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/scene/interactive_scene.py", line 984, in _add_entities_from_cfg\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/utils/string.py", line 221, in __call__\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/utils/prims.py", line 704, in wrapper\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/spawners/from_files/from_files.py", line 82, in spawn_from_usd\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/spawners/from_files/from_files.py", line 327, in _spawn_from_usd_file\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/utils/assets.py", line 155, in retrieve_file_path\n File "/mnt/wd20t/hecaton-surgery/i4h-venvs/arena/lib/python3.12/site-packages/isaacsim/kit/extscore/omni.client.lib/omni/client/impl/__init__.py", line 368, in copy\n\n--- stdout tail ---\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/utils/prims.py", line 704, in wrapper\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/spawners/from_files/from_files.py", line 82, in spawn_from_usd\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/spawners/from_files/from_files.py", line 327, in _spawn_from_usd_file\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/utils/assets.py", line 155, in retrieve_file_path\n File "/mnt/wd20t/hecaton-surgery/i4h-venvs/arena/lib/python3.12/site-packages/isaacsim/kit/extscore/omni.client.lib/omni/client/impl/__init__.py", line 368, in copy\n\n2026-11-06T17:24:40Z [1,021,578ms] [Warning] [omni.client.python] Detected a blocking function. This will cause hitches or hangs in the UI. Please switch to the async version:\n File "<frozen runpy>", line 198, in _run_module_as_main\n File "<frozen runpy>", line 88, in _run_code\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/i4h_arena/cli.py", line 370, in <module>\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/i4h_arena/cli.py", line 206, in main\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/i4h_arena/cli.py", line 295, in _launch\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/i4h_arena/app.py", line 73, in make_env\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/arena/.venv/lib/python3.12/site-packages/gymnasium/envs/registration.py", line 734, in make\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/envs/manager_based_rl_env.py", line 88, in __init__\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/envs/manager_based_env.py", line 125, in __init__\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/envs/manager_based_env.py", line 176, in _init_sim\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/scene/interactive_scene.py", line 200, in __init__\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/scene/interactive_scene.py", line 984, in _add_entities_from_cfg\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/utils/string.py", line 221, in __call__\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/utils/prims.py", line 704, in wrapper\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/spawners/from_files/from_files.py", line 82, in spawn_from_usd\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/sim/spawners/from_files/from_files.py", line 327, in _spawn_from_usd_file\n File "/mnt/wd20t/hecaton-surgery/raw/i4h-workflows/third_party/IsaacLab-ffff603/source/isaaclab/isaaclab/utils/assets.py", line 155, in retrieve_file_path\n File "/mnt/wd20t/hecaton-surgery/i4h-venvs/arena/lib/python3.12/site-packages/isaacsim/kit/extscore/omni.client.lib/omni/client/impl/__init__.py", line 368, in copy'; known-fail control returned None (must be False); hz<=0

Notes: Needle sits on organ bed.

Success function: workflow surgical_lift_needle_organs.py success(): object_above(scene,'needle',-0.085) -> world z > 0.065 m. Env layer SurgicalLiftEnvCfg(organs=True): time_out + object_dropping; reset_object_position narrowed x(-0.03,0.02) y(-0.01,0.01).

receipt
arena-panda-phantomgreenisaaci4h-workflows12/10no
6-D relative Cartesian (relative_ee=True), no gripper; Vention t...

Notes: 6-D relative Cartesian (relative_ee=True), no gripper; Vention table + abdominal phantom; reset servos to PI0 training start pose (0.3229,-0.011,0.30) pointing down; e2e annotate criterion visible-scan graded by VLM over room+wrist cameras.

Success function: envcfg/panda_phantom.py:139 ultrasound_scan_success: near_target (ee-target distance <= 0.20 m AND axis alignment >= 0.80) OR scan_complete (>= 245 steps AND contact seen (ee z <= 0.22 m) AND twist alignment >= 0.95 seen AND max scan sweep distance >= 0.10 m); terminates on success. Workflow ultrasound_liver_scan.py success() = ctx.scene.termination('success'). Episode cfg 10.0 s; workflow runner cap 250 steps @30 Hz.

receipt
arena-ultrasound-probe-reachredisaaci4h-workflows1(not found - gap)no
oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session...

Gate cause: oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session log tail:\n--- stdout tail ---\n==> run dir /mnt/wd20t/hecaton-surgery/tmp/gate-arena-tnyt82rw/control\n==> recording /mnt/wd20t/hecaton-surgery/tmp/gate-arena-tnyt82rw/control/demos.hdf5\n==> run metadata /mnt/wd20t/hecaton-surgery/tmp/gate-arena-tnyt82rw/control/run.json\n==> lint ultrasound_probe_reach [rule-based]\n--- stderr tail ---\nerror: "workflow \'ultrasound_probe_reach\' has no mode \'rule-based\'; available: [\'idle\', \'policy\']"'; known-fail control returned None (must be False); hz<=0

Notes: manifest mode_overrides policy: cameras []; rl_framework_entry_point='rsl_rl_cfg_entry_point'.

Success function: envcfg/ultrasound_probe_reach.py probe_reach_success: position_error <= 0.02 m (POSITION_TOLERANCE_M) AND orientation_error <= 10 deg (ORIENTATION_TOLERANCE_RAD) held for 20 consecutive steps (SUCCESS_HOLD_STEPS); returns all-false during rl_training (no early termination). Targets sampled from 8 measured torso-surface poses (TORSO_TARGET_POSES). Workflow success() = termination('success'). episode_length_s=5.0 (250 steps @50 Hz).

receipt
arena-endoluminal-navigationgreenisaaci4h-workflows02/10no
Teleop slider caps insertion speed at 60 mm/s, default 9 mm/s; f...

Notes: Teleop slider caps insertion speed at 60 mm/s, default 9 mm/s; fluoroscopy sensor with DSA/DRR outputs and AP/LAO45/Lateral/RAO30 presets.

Success function: envcfg/endoluminal_navigation.py navigation_terminations_cfg -> reached_navigation_target: tip within ENDOLUMINAL_ARRIVAL_TOLERANCE_M = 0.008 m (default; overridable via I4H_CATHETER_ARRIVAL_MM) of distal route target, held ARRIVAL_HOLD_STEPS=15; workflow success() = termination('success'), all-false without a patient twin. Episode 600 steps @30 Hz (episode_length_s=600/30=20.0 s).

receipt
arena-endoluminal-navigation-armgreenisaaci4h-workflows12/10no
dof 4 = commanded catheter/C-arm columns; embodiment adds 7 reco...

Notes: dof 4 = commanded catheter/C-arm columns; embodiment adds 7 recorded arm joints (ArmCatheterCArmJointStateProvider) appended after catheter+C-arm columns for recordings.

Success function: inherited from endoluminal_navigation: reached_navigation_target within 8 mm held 15 steps; workflow success() = termination('success'); all-false without patient twin. Episode 600 steps @30 Hz.

receipt
arena-g1-cartredisaaci4h-workflows1(not found - gap)no
oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session...

Gate cause: oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session log tail:\n--- stdout tail ---\n==> run dir /mnt/wd20t/hecaton-surgery/tmp/gate-arena-ae1ri3m8/control\n==> recording /mnt/wd20t/hecaton-surgery/tmp/gate-arena-ae1ri3m8/control/demos.hdf5\n==> run metadata /mnt/wd20t/hecaton-surgery/tmp/gate-arena-ae1ri3m8/control/run.json\n==> lint locomanip_push_cart [rule-based]\n--- stderr tail ---\nerror: "workflow \'locomanip_push_cart\' has no mode \'rule-based\'; available: [\'idle\', \'policy\', \'replay\', \'teleop\']"'; known-fail control returned None (must be False); hz<=0

Notes: dof 50 = 43 WBC joint targets + 7 locomotion command columns (RobotSlice joint_width=43); teleop mode_override dof 23, teleop embodiment g1_wbc_pink; Rheo pre_op room, surgical_tray prop at grasp height.

Success function: envcfg/g1_cart.py:22 CartDisplacement termination: cart XY displacement from reset pose >= 2.0 m (minimum_distance); workflow locomanip_push_cart.py success() = termination('success'); object_dropped term below scene object_min_z. Episode cfg episode_length_s = max(10, 1801/30) = 60.03 s (manifest cap 1800 steps @30 Hz).

receipt
arena-g1-trayredisaaci4h-workflows1(not found - gap)no
oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session...

Gate cause: oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session log tail:\n--- stdout tail ---\n==> run dir /mnt/wd20t/hecaton-surgery/tmp/gate-arena-e6baf5ec/control\n==> recording /mnt/wd20t/hecaton-surgery/tmp/gate-arena-e6baf5ec/control/demos.hdf5\n==> run metadata /mnt/wd20t/hecaton-surgery/tmp/gate-arena-e6baf5ec/control/run.json\n==> lint locomanip_tray_pick_and_place [rule-based]\n--- stderr tail ---\nerror: "workflow \'locomanip_tray_pick_and_place\' has no mode \'rule-based\'; available: [\'idle\', \'policy\', \'replay\', \'teleop\']"'; known-fail control returned None (must be False); hz<=0

Notes: teleop dof override 23; mimic datagen subtasks for right/left/body (grasp, face cart front, place); same Rheo pre_op room and cart asset as g1_cart but tray is the pick-up object and cart the destination.

Success function: envcfg/g1_tray.py:155 tray_placed_success: tray within x/y separation <= 0.16 m of cart and z <= 0.88 m, linear speed <= 0.08 m/s, held settle_steps=20 consecutive steps; workflow locomanip_tray_pick_and_place.py success() = object_within(scene,'tray','cart',radius=0.9). Episode cfg max(10, 1501/30) = 50.03 s (manifest cap 1500 @30 Hz).

receipt
arena-g1-trocarredisaaci4h-workflows1(not found - gap)no
oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session...

Gate cause: oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session log tail:\n--- stdout tail ---\n==> run dir /mnt/wd20t/hecaton-surgery/tmp/gate-arena-c4v4rndj/control\n==> recording /mnt/wd20t/hecaton-surgery/tmp/gate-arena-c4v4rndj/control/demos.hdf5\n==> run metadata /mnt/wd20t/hecaton-surgery/tmp/gate-arena-c4v4rndj/control/run.json\n==> lint assemble_trocar [rule-based]\n--- stderr tail ---\nerror: "workflow \'assemble_trocar\' has no mode \'rule-based\'; available: [\'idle\', \'policy\', \'replay\']"'; known-fail control returned None (must be False); hz<=0

Notes: Lightwheel trocar_assembly_scene; 29-body + 14-Dex3 explicit joint order (ASSEMBLE_TROCAR_JOINT_NAMES); SuccessRateMetric registered.

Success function: envcfg/g1_trocar.py:390 task_success_termination: get_task_stage >= 5. Five-stage machine (update_task_stage:225): 0->1 both trocars lifted z > 0.85483+0.15; 1->2 trocar tip distance < 0.015 m; 2->3 centers < 0.05 m AND axis angle < 0.15 rad; 3->4 both placed in placement zone x[-1.8,-1.4] y[1.5,1.8] z < 0.9 and still assembled; 4->5 hands back near open/reset pose (released). Workflow assemble_trocar.py success() = termination('success'). Episode cfg max(15, 251/30) = 15.0 s; manifest runner cap 250 steps @30 Hz.

receipt
arena-soarm-scissorsgreenisaaci4h-workflows13/10no
No IK: manifest declares joint_position so workflow-lint rejects...

Notes: No IK: manifest declares joint_position so workflow-lint rejects ik tasks; surgical scissors + tray on Props/Table.

Success function: envcfg/soarm_scissors.py:78 success_scissors_placed: scissors root inside tray bounds (xy half-extents 0.08,0.08 m; z in [-0.02,0.09]) AND settled (move <= 0.004 m/step while in tray) AND arm tool tip back within 0.03 m of episode-start ee pose. Episode cfg max(8, 601/60) = 10.02 s (manifest cap 600 steps @60 Hz).

receipt
arena-g1-tableclothredisaaci4h-workflows2(not found - gap)no
oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session...

Gate cause: oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session log tail:\n--- stdout tail ---\n==> run dir /mnt/wd20t/hecaton-surgery/tmp/gate-arena-v3k_lyhi/control\n==> recording /mnt/wd20t/hecaton-surgery/tmp/gate-arena-v3k_lyhi/control/demos.hdf5\n==> run metadata /mnt/wd20t/hecaton-surgery/tmp/gate-arena-v3k_lyhi/control/run.json\n==> lint spread_tablecloth_g1 [rule-based]\n--- stderr tail ---\nerror: "workflow \'spread_tablecloth_g1\' has no mode \'rule-based\'; available: [\'idle\', \'replay\', \'teleop\']"'; known-fail control returned None (must be False); hz<=0

Notes: Pink IK bimanual controllers recovered from Rheo v0.7.0; cameras front+both wrists; cloth centroid exposed as object state.

Success function: (not found - gap) no simulator-side success predicate: TableclothScene.build() sets cfg.terminations.time_out = None and neither the envcfg nor spread_tablecloth_g1.py declares success/annotate; XR teleop data collection with task cap max_seconds=120 s (3600 steps @30 Hz).

receipt
arena-h2-tableclothredisaaci4h-workflows2(not found - gap)no
oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session...

Gate cause: oracle error: 'RuntimeError: run.sh rc=2; no demos.hdf5; session log tail:\n--- stdout tail ---\n==> run dir /mnt/wd20t/hecaton-surgery/tmp/gate-arena-jkdf4lu9/control\n==> recording /mnt/wd20t/hecaton-surgery/tmp/gate-arena-jkdf4lu9/control/demos.hdf5\n==> run metadata /mnt/wd20t/hecaton-surgery/tmp/gate-arena-jkdf4lu9/control/run.json\n==> lint spread_tablecloth_h2 [rule-based]\n--- stderr tail ---\nerror: "workflow \'spread_tablecloth_h2\' has no mode \'rule-based\'; available: [\'idle\', \'replay\', \'teleop\']"'; known-fail control returned None (must be False); hz<=0

Notes: front camera only; bimanual_pose Pink controllers.

Success function: (not found - gap) no simulator-side success predicate (same as g1_tablecloth); XR teleop data collection with task cap max_seconds=300 s (9000 steps @30 Hz).

receipt
sofa-reachgreensofasofa-env10/10no
gymnasium.make id: (not found - gap) - sofa_env registers NO gym...

Notes: gymnasium.make id: (not found - gap) - sofa_env registers NO gymnasium env ids; construction is direct class instantiation. 1 arm: dVRK PSM-style ControllableRigidObject end-effector (dvrk_gripper.stl + psm_main_link.stl, scene_description.py:91-92). scene: sofa_env/scenes/reach/scene_description.py. Validated: constructed + reset() headless CPU, obs Box(-1,1,(3,)) STATE mode, RenderMode.NONE, no stepping.

Success function: _get_done() -> bool(reward_features['successful_task']); successful_task = distance_to_target <= distance_to_target_threshold (default 0.003 m); reach_env.py:287,311-313

receipt
sofa-deflect-spheresgreensofasofa-env12/10no
gymnasium.make id: (not found - gap). 1 or 2 arms (single_agent...

Notes: gymnasium.make id: (not found - gap). 1 or 2 arms (single_agent flag): right_cauter + left_cauter PivotizedCauter (4-DoF ptsd @RCM), scene_description.py:81-82. scene: sofa_env/scenes/deflect_spheres/scene_description.py.

Success function: _get_done() -> reward_features['successful_task']; successful = num_deflections >= num_deflect_to_win; per-sphere deflection = active_post.get_deflection() >= min_deflection_distance; deflect_spheres_env.py:431-446

receipt
sofa-search-for-pointredsofasofa-env2(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=1); stderr tail: '[ERROR] [PythonScript] AttributeError: `np.NaN` was removed in the NumPy 2.0 release. Use `np.nan` instead.\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 106, in run_twice\n env = make_env(spec)\n ^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 46, in make_env\n return cls(observation_type=getattr(mod, \'ObservationType\').STATE,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/search_for_point/search_for_point_env.py", line 239, in __init__\n self.cauter_max_state_velocity = np.NaN\n ^^^^^^\n File "/mnt/wd20t/venvs/surg-t2-sofa/lib/python3.12/site-packages/numpy/__init__.py", line 763, in __getattr__\n raise AttributeError(\n\n'

Notes: gymnasium.make id: (not found - gap). 2 instruments (surgeon cauter + assistant gripper, hideable): Cauter from grasp_lift_touch + PivotizedArticulatedInstrument shafts, scene_description.py:248,270. scene: sofa_env/scenes/search_for_point/scene_description.py.

Success function: _get_done() -> reward_features['successful_task']; successful = camera_position_in_tolerance AND poi_in_image_center AND poi_is_in_frame (tolerance_image_center, tolerance_target_distance); touch variant: cauter touches target and is activated; search_for_point_env.py:517,534

receipt
sofa-tissue-manipulationredsofasofa-env1(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=-11); stderr tail: 'o find attribute: isEnabled \n You possibly wanted to access: \n - The data field named \'enable\' (66% match)\n - The data field named \'scale3d\' (62% match)\n\nTraceback (most recent call last):\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 108, in run_twice\n return [one_run(env, seed, steps, warmup) for _ in range(2)]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 67, in one_run\n obs, _info = env.reset(seed=seed)\n ^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/tissue_manipulation/tissue_manipulation_env.py", line 420, in reset\n self._visual_target.reset(new_position=target_position)\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/tissue_manipulation/sofa_objects/visual_target.py", line 61, in reset\n self.set_visibility(True)\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/tissue_manipulation/sofa_objects/visual_target.py", line 66, in set_visibility\n self.visual_model_node.OglModel.isEnabled.value = int(val)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n########## SIG 11 - SIGSEGV: segfault ##########\n sofa::helper::BackTrace::sig(int)\n PyObject_Call\n Py_FinalizeEx\n Py_RunMain\n __libc_start_main\n _start\n'

Notes: gymnasium.make id: (not found - gap). 1 arm: AttachedGripper (gripper_15deg_visual.stl) permanently attached/grasping the tissue patch; scene_description.py:22,104. scene: sofa_env/scenes/tissue_manipulation/scene_description.py.

Success function: _get_done() checks end_episode_criteria against reward_info; default [EpisodeEndCriteria.SUCCESS] = reward_info['goal_reached']==True; goal_reached set when tissue reaches target; SB3 hook info['is_success']=float(goal_reached); tissue_manipulation_env.py:42-51,538-545,606; default env in __main__ uses SUCCESS+STABILITY+STUCK criteria (:748)

receipt
sofa-pick-and-placeredsofasofa-env1(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=-11); stderr tail: 'ck_and_place_env.py", line 608, in reset\n self.reset()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/pick_and_place/pick_and_place_env.py", line 608, in reset\n self.reset()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/pick_and_place/pick_and_place_env.py", line 608, in reset\n self.reset()\n [Previous line repeated 985 more times]\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/pick_and_place/pick_and_place_env.py", line 555, in reset\n self.gripper.reset_gripper()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/rope_threading/sofa_objects/gripper.py", line 723, in reset_gripper\n self.set_state(new_state)\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/rope_threading/sofa_objects/gripper.py", line 626, in set_state\n self.set_pose(pose)\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/sofa_templates/rigid.py", line 943, in set_pose\n with self.motion_target_mechanical_object.position.writeable() as sofa_pose:\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/venvs/surg-t2-sofa/lib/python3.12/site-packages/numpy/_core/_internal.py", line 629, in _dtype_from_pep3118\n dtype, align = __dtype_from_pep3118(stream, is_subdtype=False)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/venvs/surg-t2-sofa/lib/python3.12/site-packages/numpy/_core/_internal.py", line 673, in __dtype_from_pep3118\n itemsize_str = stream.consume_until(lambda c: not c.isdigit())\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/venvs/surg-t2-sofa/lib/python3.12/site-packages/numpy/_core/_internal.py", line 610, in consume_until\n while i < len(self.s) and not c(self.s[i]):\n ^^^^^^^^^^^^\n\n\n########## SIG 11 - SIGSEGV: segfault ##########\n sofa::helper::BackTrace::sig(int)\n PyObject_Call\n Py_FinalizeEx\n Py_RunMain\n __libc_start_main\n _start\n'

Notes: gymnasium.make id: (not found - gap). 1 arm: ArticulatedGripper (from rope_threading sofa_objects), scene_description.py:17,87. scene: sofa_env/scenes/pick_and_place/scene_description.py.

Success function: _get_done() -> successful_task; successful = torus on an active peg (peg_in_torus_xz AND peg_in_torus_y AND not torus_probably_unstable when block_done_when_torus_unstable); pick_and_place_env.py:395-404

receipt
sofa-grasp-lift-touchredsofasofa-env2(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=1); stderr tail: '[ERROR] [PythonScript] ValueError: This environment does not support render mode NONE, use HEADLESS instead. We need to render the scene to check if the target is visible to the camera which is part of the LIFT phase of the task.\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 106, in run_twice\n env = make_env(spec)\n ^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 46, in make_env\n return cls(observation_type=getattr(mod, \'ObservationType\').STATE,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/grasp_lift_touch/grasp_lift_touch_env.py", line 198, in __init__\n raise ValueError("This environment does not support render mode NONE, use HEADLESS instead. We need to render the scene to check if the target is visible to the camera which is part of the LIFT phase of the task.")\n\n'

Notes: gymnasium.make id: (not found - gap). 2 arms: Gripper + Cauter (both pivotized dVRK PSM-style, grasper left/cauter right), scene_description.py:17-19,68. scene: sofa_env/scenes/grasp_lift_touch/scene_description.py.

Success function: _get_done() -> reward_info['successful_task'] OR reward_info['failed_task']; phased (Phase enum), grasp success requires infundibulum contact; end_in_phase configures which phase must complete; grasp_lift_touch_env.py:455-457

receipt
sofa-rope-cuttingredsofasofa-env1(not found - gap)no
nondeterministic state hash

Gate cause: nondeterministic state hash

Notes: gymnasium.make id: (not found - gap). 1 arm: PivotizedCauter (blue visual model), scene_description.py:19,193-199. scene: sofa_env/scenes/rope_cutting/scene_description.py.

Success function: _get_done() -> successful_task OR failed_task; successful = num_cut_ropes >= num_ropes_to_cut; failed = remaining ropes < ropes still to cut; rope_cutting_env.py:372-384,401-403

receipt
sofa-precision-cuttingredsofasofa-env1(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=-11); stderr tail: 'ng scene file: /mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/precision_cutting/scene_description.py. \n <<module \'numpy\' has no attribute \'row_stack\'>>\nTraceback (most recent call last):\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 108, in run_twice\n return [one_run(env, seed, steps, warmup) for _ in range(2)]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 67, in one_run\n obs, _info = env.reset(seed=seed)\n ^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/precision_cutting/precision_cutting_env.py", line 492, in reset\n super().reset(seed)\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/base.py", line 207, in reset\n self._init_sim()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/precision_cutting/precision_cutting_env.py", line 244, in _init_sim\n super()._init_sim()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/base.py", line 288, in _init_sim\n raise AttributeError(f"Could not create scene using scene file: {self._scene_path}. \\n <<{error}>>")\n\n\n########## SIG 11 - SIGSEGV: segfault ##########\n sofa::helper::BackTrace::sig(int)\n PyObject_Call\n Py_FinalizeEx\n Py_RunMain\n __libc_start_main\n _start\n'

Notes: gymnasium.make id: (not found - gap). 1 or 2 arms (with_gripper flag, default False = cautery only): cautery + optional ArticulatedGripper, scene_description.py:61,196,214-221. scene: sofa_env/scenes/precision_cutting/scene_description.py.

Success function: _get_done() -> successful_task; successful = cut_ratio >= ratio_to_cut (fraction of path triangles removed); precision_cutting_env.py:405,437-439

receipt
sofa-tissue-dissectionredsofasofa-env1(not found - gap)no
nondeterministic state hash

Gate cause: nondeterministic state hash

Notes: gymnasium.make id: (not found - gap). 1 arm: PivotizedCauter (with optional board collision), scene_description.py:19. scene: sofa_env/scenes/tissue_dissection/scene_description.py.

Success function: _get_done() -> reward_features['successful_task']; successful = len(connective_tissue.topology_container.tetrahedra) == 0; tissue_dissection_env.py:396,428-430

receipt
sofa-thread-in-holeredsofasofa-env1(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=1); stderr tail: '[ERROR] [SofaRuntime] AttributeError: Could not create scene using scene file: /mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/thread_in_hole/scene_description.py. \n <<module \'numpy\' has no attribute \'in1d\'>>\nTraceback (most recent call last):\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 108, in run_twice\n return [one_run(env, seed, steps, warmup) for _ in range(2)]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 67, in one_run\n obs, _info = env.reset(seed=seed)\n ^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/thread_in_hole/thread_in_hole_env.py", line 457, in reset\n super().reset(seed)\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/base.py", line 207, in reset\n self._init_sim()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/thread_in_hole/thread_in_hole_env.py", line 229, in _init_sim\n super()._init_sim()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/base.py", line 288, in _init_sim\n raise AttributeError(f"Could not create scene using scene file: {self._scene_path}. \\n <<{error}>>")\n\n'

Notes: gymnasium.make id: (not found - gap). 1 arm: ArticulatedGripper (start_grasped thread, gripper_ptsd_state [60,0,180,90]), scene_description.py:15,63-71. scene: sofa_env/scenes/thread_in_hole/scene_description.py.

Success function: _get_done() -> reward_features['successful_task']; successful = all checked thread points inside hole: z < hole.height AND xz-norm < hole.inner_radius (indices_to_check_for_success); thread_in_hole_env.py:369-374,412-414

receipt
sofa-rope-threadingredsofasofa-env2(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=-11); stderr tail: '\nTraceback (most recent call last):\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 108, in run_twice\n return [one_run(env, seed, steps, warmup) for _ in range(2)]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 67, in one_run\n obs, _info = env.reset(seed=seed)\n ^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/rope_threading/rope_threading_env.py", line 878, in reset\n return self._get_observation(self._maybe_update_rgb_buffer()), {}\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/rope_threading/rope_threading_env.py", line 733, in _get_observation\n state_dict["left_ptsda_state"] = self.left_gripper.get_articulated_state()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/rope_threading/sofa_objects/gripper.py", line 587, in get_articulated_state\n self.articulated_state[-1] = self.get_angle()\n ~~~~~~~~~~~~~~~~~~~~~~^^^^\n\n\n########## SIG 11 - SIGSEGV: segfault ##########\n sofa::helper::BackTrace::sig(int)\n PyObject_Call\n Py_FinalizeEx\n Py_RunMain\n __libc_start_main\n _start\n'

Notes: gymnasium.make id: (not found - gap). 1 or 2 arms (only_right_gripper flag): left_gripper + right_gripper ArticulatedGripper, scene_description.py:256,299. scene: sofa_env/scenes/rope_threading/scene_description.py.

Success function: _get_done() -> reward_info['successful_task']; successful = last eyelet state == EyeStates.DONE (per-eye done when fraction_of_rope_to_pass passed through); rope_threading_env.py:701-705,714-716

receipt
sofa-ligating-loopredsofasofa-env1(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=-11); stderr tail: 'ould not create scene using scene file: /mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/ligating_loop/scene_description.py. \n <<module \'numpy\' has no attribute \'in1d\'>>\nTraceback (most recent call last):\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 108, in run_twice\n return [one_run(env, seed, steps, warmup) for _ in range(2)]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 67, in one_run\n obs, _info = env.reset(seed=seed)\n ^^^^^^^^^^^^^^^^^^^^\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/ligating_loop/ligating_loop_env.py", line 608, in reset\n super().reset(seed)\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/base.py", line 207, in reset\n self._init_sim()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/scenes/ligating_loop/ligating_loop_env.py", line 334, in _init_sim\n super()._init_sim()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/base.py", line 288, in _init_sim\n raise AttributeError(f"Could not create scene using scene file: {self._scene_path}. \\n <<{error}>>")\n\n\n########## SIG 11 - SIGSEGV: segfault ##########\n sofa::helper::BackTrace::sig(int)\n PyObject_Call\n Py_FinalizeEx\n Py_RunMain\n __libc_start_main\n _start\n'

Notes: gymnasium.make id: (not found - gap). 1 or 2 arms (with_gripper flag, default False): main shaft instrument + optional ArticulatedGripper, scene_description.py:51,241,237-241. scene: sofa_env/scenes/ligating_loop/scene_description.py.

Success function: _get_done() -> reward_features['successful_task']; successful = loop_marking_overlap > target_loop_overlap_ratio AND loop.get_ratio_loop_closed() > target_loop_closed_ratio (loop around cavity); ligating_loop_env.py:531,559-561

receipt
sofa-tissue-retractiongreensofasofa-env13/10no
gymnasium.make id: (not found - gap). 1 arm: PSM gripper (grippe...

Notes: gymnasium.make id: (not found - gap). 1 arm: PSM gripper (gripper_open.stl/gripper_closed.stl + psm_main_link.stl), scene_description.py:157-160,305. scene: sofa_env/scenes/tissue_retraction/scene_description.py.

Success function: _get_done() -> reward_info['goal_reached']; goal_reached set in RETRACTING phase when tissue reaches end position; phases: GRASPING -> RETRACTING; tissue_retraction_env.py:500-534,550-552

receipt
sofa-bimanual-tissue-manipulationgreensofasofa-env23/10no
gymnasium.make id: (not found - gap). 2 arms: left_gripper + rig...

Notes: gymnasium.make id: (not found - gap). 2 arms: left_gripper + right_gripper PivotizedGripper (scene-local sofa_objects/gripper.py), scene_description.py:16,61-62,187-208. scene: sofa_env/scenes/bimanual_tissue_manipulation/scene_description.py.

Success function: _get_done() -> reward_features['successful_task']; successful = np.all(reward_features['markers_at_target']); bimanual_tissue_manipulation_env.py:509,542-544

receipt
sofa-magnetic-continuum-robotredsofasofa-env0(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=1); stderr tail: '[ERROR] [PythonScript] AttributeError: \'MCREnv\' object has no attribute \'_sofa_root_node\'\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 110, in run_twice\n env.close()\n File "/mnt/wd20t/hecaton-surgery/raw/sofa_env/sofa_env/base.py", line 222, in close\n self.sofa_simulation.unload(self._sofa_root_node)\n ^^^^^^^^^^^^^^^^^^^^\n\n'

Notes: gymnasium.make id: (not found - gap). NO surgical robot arm: magnetic catheter controller (mcr_controller_sofa); out-of-scope for surgical arms bench. scene: sofa_env/scenes/magnetic_continuum_robot/scene_description.py.

Success function: _get_done() -> reward_features['successful_task']; successful = tip_pos_distance_to_dest_pos < target_distance_threshold; mcr_env.py:202-206,237-239

receipt
sofa-controllable-object-exampleredsofasofa-env0(not found - gap)no
RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=...

Gate cause: RuntimeError: runner produced no 'GATE-RUNNER-RESULT ' line (rc=1); stderr tail: 'Traceback (most recent call last):\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 278, in <module>\n raise SystemExit(main())\n ^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 270, in main\n child_main(args)\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/env_gate.py", line 95, in child_main\n runs = adapter.run_twice(spec, args.steps, args.warmup, args.seed)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 106, in run_twice\n env = make_env(spec)\n ^^^^^^^^^^^^^^\n File "/home/robot/workspace/agent-next/task-runs/20261104-surgery-multiarm/bench/gate/adapters/sofa.py", line 46, in make_env\n return cls(observation_type=getattr(mod, \'ObservationType\').STATE,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nAttributeError: module \'sofa_env.scenes.controllable_object_example.controllable_env\' has no attribute \'ObservationType\'\n'

Notes: gymnasium.make id: (not found - gap). No robot arm: 1x ControllableRigidObject sphere. Listed for completeness; it is the README 'Getting Started' smoke test, not a bench env. scene: sofa_env/scenes/controllable_object_example/scene_description.py.

Success function: step() returns terminated = info['sphere_position'][0] <= -130.0, reward 10.0 on done; controllable_env.py:46-48

receipt
sofa-reach-obs-targetgreensofasofa-env10/10no
variant of sofa-reach: observe_target_position=True (reach_env.p...

Notes: variant of sofa-reach: observe_target_position=True (reach_env.py:65; obs-space extension at reach_env.py:140-161) -> STATE obs Box gains 3 target-position dims vs base row Box(-1,1,(3,)). Base kwargs time_step 0.1 / frame_skip 1 / image_shape [32,32] mirror the sofa-reach row. gymnasium.make id: (not found - gap), package registers none.

Success function: _get_done() -> bool(reward_features['successful_task']); successful_task = distance_to_target <= distance_to_target_threshold (default 0.003 m); reach_env.py:287,311-313

receipt
sofa-reach-thresh-1mmgreensofasofa-env10/10no
variant of sofa-reach: distance_to_target_threshold=0.001 (reach...

Notes: variant of sofa-reach: distance_to_target_threshold=0.001 (reach_env.py:66, default 0.003) -> 3x tighter success radius, harder difficulty. Other kwargs mirror sofa-reach. gymnasium.make id: (not found - gap).

Success function: _get_done() -> bool(reward_features['successful_task']); successful_task = distance_to_target <= distance_to_target_threshold (default 0.003 m); reach_env.py:287,311-313

receipt
sofa-deflect-spheres-bimanualgreensofasofa-env21/10no
variant of sofa-deflect-spheres: single_agent=False (deflect_sph...

Notes: variant of sofa-deflect-spheres: single_agent=False (deflect_spheres_env.py:102, default True) -> right_cauter + left_cauter both in scene (scene_description.py:81-82), joint action space; base row gated arms: 1. gymnasium.make id: (not found - gap).

Success function: _get_done() -> reward_features['successful_task']; successful = num_deflections >= num_deflect_to_win; per-sphere deflection = active_post.get_deflection() >= min_deflection_distance; deflect_spheres_env.py:431-446

receipt
sofa-deflect-spheres-num8greensofasofa-env11/10no
variant of sofa-deflect-spheres: num_objects=8 (deflect_spheres_...

Notes: variant of sofa-deflect-spheres: num_objects=8 (deflect_spheres_env.py:104, default 5) -> 8 deflectable spheres; win condition unchanged (num_deflect_to_win default 5). gymnasium.make id: (not found - gap).

Success function: _get_done() -> reward_features['successful_task']; successful = num_deflections >= num_deflect_to_win; per-sphere deflection = active_post.get_deflection() >= min_deflection_distance; deflect_spheres_env.py:431-446

receipt
sofa-tissue-retraction-phase-obsgreensofasofa-env12/10no
variant of sofa-tissue-retraction: observe_phase_state=True (tis...

Notes: variant of sofa-tissue-retraction: observe_phase_state=True (tissue_retraction_env.py:86; STATE obs gains the Phase value, docstring :60, obs assembly :190-202) -> obs array gains 1 dim encoding GRASPING/RETRACTING. gymnasium.make id: (not found - gap).

Success function: _get_done() -> reward_info['goal_reached']; goal_reached set in RETRACTING phase when tissue reaches end position; phases: GRASPING -> RETRACTING; tissue_retraction_env.py:500-534,550-552

receipt
sofa-tissue-retraction-fs6greensofasofa-env12/10no
variant of sofa-tissue-retraction: frame_skip=6 (tissue_retracti...

Notes: variant of sofa-tissue-retraction: frame_skip=6 (tissue_retraction_env.py:88, default 3) -> 6 SOFA time_steps (0.1 s each) per env.step, doubling control dt vs base row. gymnasium.make id: (not found - gap).

Success function: _get_done() -> reward_info['goal_reached']; goal_reached set in RETRACTING phase when tissue reaches end position; phases: GRASPING -> RETRACTING; tissue_retraction_env.py:500-534,550-552

receipt
sofa-bimanual-tissue-4targetsredsofasofa-env2(not found - gap)no
upstream NotImplementedError at construction (bimanual_tissue_ma...

Gate cause: upstream NotImplementedError at construction (bimanual_tissue_manipulation_env.py:130): 'Only two targets are supported at the moment.' -- num_targets=4 variant rejected before any reset/step; runner rc=1

Notes: variant of sofa-bimanual-tissue-manipulation: num_targets=4 (bimanual_tissue_manipulation_env.py:100, default 2) -> 4 tissue markers each with a target; success still np.all(markers_at_target). gymnasium.make id: (not found - gap).

Success function: _get_done() -> reward_features['successful_task']; successful = np.all(reward_features['markers_at_target']); bimanual_tissue_manipulation_env.py:509,542-544

receipt
sofa-bimanual-tissue-nocollgreensofasofa-env21/10no
variant of sofa-bimanual-tissue-manipulation: with_collision=Fal...

Notes: variant of sofa-bimanual-tissue-manipulation: with_collision=False (bimanual_tissue_manipulation_env.py:94, default True) -> collision models dropped from the scene config, grippers can overlap. gymnasium.make id: (not found - gap).

Success function: _get_done() -> reward_features['successful_task']; successful = np.all(reward_features['markers_at_target']); bimanual_tissue_manipulation_env.py:509,542-544

receipt
sofa-ligating-loop-gripperredsofasofa-env2(not found - gap)no
scene build fails at reset in FRESH process: "module 'numpy' has...

Gate cause: scene build fails at reset in FRESH process: "module 'numpy' has no attribute 'in1d'" (NumPy 2.0 removed np.in1d; ligating_loop/scene_description.py) -- same upstream incompatibility as base sofa-ligating-loop row; SIGSEGV at Py_FinalizeEx teardown after the scene error, rc=-11

Notes: variant of sofa-ligating-loop: with_gripper=True (ligating_loop_env.py:113, default False; wired into scene at :125, scene_description.py:237-241) -> second ArticulatedGripper instrument in scene (2 arms). Base scene failed on numpy in1d removal (base receipt); variant expected to inherit that upstream incompatibility. gymnasium.make id: (not found - gap).

Success function: _get_done() -> reward_features['successful_task']; successful = loop_marking_overlap > target_loop_overlap_ratio AND loop.get_ratio_loop_closed() > target_loop_closed_ratio (loop around cavity); ligating_loop_env.py:531,559-561

receipt
sofa-rope-threading-right-onlyredsofasofa-env1(not found - gap)no
reset crash in FRESH process: right_gripper.get_articulated_stat...

Gate cause: reset crash in FRESH process: right_gripper.get_articulated_state ValueError 'setting an array element with a sequence' (rope_threading/sofa_objects/gripper.py:587, articulated_state[-1] = get_angle()) then SIGSEGV at Py_FinalizeEx teardown, rc=-11 -- single-gripper (only_right_gripper=True) path untested upstream

Notes: variant of sofa-rope-threading: only_right_gripper=True (rope_threading_env.py:168, default False; left gripper removed at :229, single_agent set at :201) -> single-arm scene; base row gated arms: 2. gymnasium.make id: (not found - gap).

Success function: _get_done() -> reward_info['successful_task']; successful = last eyelet state == EyeStates.DONE (per-eye done when fraction_of_rope_to_pass passed through); rope_threading_env.py:701-705,714-716

receipt
orbit-reach-psmredisaacorbit-surgical1(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: cfg class PSMReachEnvCfg; joint_pos_env_cfg.py imports PSM_CFG from orbit.surgical.assets.psm

Success function: (no explicit success fn - reward-only) rewards position_command_error + orientation_command_error (reach/mdp/rewards.py:19,36); terminations = time_out only (reach/reach_env_cfg.py:131)

receipt
orbit-reach-ecmredisaacorbit-surgical1(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: table from ORBITSURGICAL_ASSETS_DATA_DIR/Props/Table/table.usd (joint_pos_env_cfg.py:45-46); no gripper action (ECM has none); no state_machine script for ECM

Success function: (no explicit success fn - reward-only, same as reach family); terminations = time_out only

receipt
orbit-reach-starredisaacorbit-surgical1(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: robot scaled 0.5 (joint_pos_env_cfg.py:56); table from ISAAC_NUCLEUS_DIR (remote Nucleus asset - needs network access at runtime)

Success function: (no explicit success fn - reward-only, same as reach family); terminations = time_out only

receipt
orbit-reach-dual-psmredisaacorbit-surgical2(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: the dual-PSM lane most relevant to surgery-multiarm; table Props/Table/table.usd

Success function: (no explicit success fn - reward-only) position_command_error + orientation_command_error over both ee_1/ee_2 (reach_dual/mdp/rewards.py:19,36); terminations = time_out only (reach_dual/reach_env_cfg.py:175)

receipt
orbit-reach-dual-starredisaacorbit-surgical2(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: table from ISAAC_NUCLEUS_DIR (remote asset)

Success function: (no explicit success fn - reward-only, same as reach_dual); terminations = time_out only

receipt
orbit-lift-block-psmredisaacorbit-surgical1(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: object = ORBITSURGICAL_ASSETS_DATA_DIR/Props/Surgical_block (block.usd); num_envs=4096 default, sim dt 1/60 decimation 2

Success function: mdp.lift.terminations.object_reached_goal (lift/mdp/terminations.py:26, object-to-goal distance < 0.02 m) - DEFINED BUT NOT wired into env TerminationsCfg; wired only by source/standalone/workflows/robomimic/collect_demonstrations.py:82 as demo success label; env terminations = time_out + object root_height_below_minimum(-0.05); rewards object_ee_distance/object_is_lifted(0.02)/object_goal_distance (lift_env_cfg.py:147-159)

receipt
orbit-lift-needle-psmredisaacorbit-surgical1(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: object = Props/Surgical_needle/needle_sdf.usd (SDF collision for needle threading-style contact)

Success function: same object_reached_goal term (lift family); needle object; env terminations = time_out + object_dropping

receipt
orbit-handover-block-dual-psmredisaacorbit-surgical2(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: handover/mdp/__init__.py re-exports base lab mdp only (no task-specific mdp); paper mentions handover as key dual-arm demo but env is skeleton at HEAD

Success function: (NOT IMPLEMENTED at this HEAD - gap) RewardsCfg marked TODO with only action_rate_l2 penalty (handover_env_cfg.py:167-170); TerminationsCfg = time_out + object_dropping only; no handover-specific success term anywhere under handover/

receipt
orbit-handover-needle-dual-psmredisaacorbit-surgical2(not found - gap)no
imports green under bench/gate/adapters/orbit_compat.py shim (or...

Gate cause: imports green under bench/gate/adapters/orbit_compat.py shim (orbit-r3: all 9 task packages import + PSMReachEnvCfg constructs CPU-only); env still red because gym.make needs SimulationApp(kit)+GPU + USD assets; port map = bench/logs/orbit-port-map.json

Notes: object = Props/Surgical_needle/needle_sdf.usd

Success function: (NOT IMPLEMENTED at this HEAD - gap, same skeleton as block handover)

receipt
surrol-needle-reachgreenpybulletsurrol11/10no
block_gripper=True, has_object=False; tip-position reaching task

Notes: block_gripper=True, has_object=False; tip-position reaching task

Success function: PsmEnv._is_success: goal_distance(achieved_goal, desired_goal) < distance_threshold (=DISTANCE_THRESHOLD*SCALING); sparse reward = success-1 (surrol/tasks/psm_env.py:229-233, 90)

receipt
surrol-gauze-retrievegreenpybulletsurrol12/10no
has_object=True (grasped via contact constraint); pick up gauze...

Notes: has_object=True (grasped via contact constraint); pick up gauze and reach goal

Success function: PsmEnv._is_success: goal_distance(achieved_goal, desired_goal) < distance_threshold; achieved_goal = gauze position (surrol/tasks/psm_env.py:229-233)

receipt
surrol-needle-pickgreenpybulletsurrol12/10no
has_object=True; needle grasping task (needle-passing precursor)

Notes: has_object=True; needle grasping task (needle-passing precursor)

Success function: PsmEnv._is_success: goal_distance(achieved_goal, desired_goal) < distance_threshold; achieved_goal = needle pose (surrol/tasks/psm_env.py:229-233)

receipt
surrol-peg-transfergreenpybulletsurrol12/10no
red block on peg board must reach target peg

Notes: red block on peg board must reach target peg

Success function: PegTransfer._is_success: (xy goal_distance < 5e-3*SCALING) AND (|dz| < 4e-3*SCALING) (surrol/tasks/peg_transfer.py:64-70)

receipt
surrol-needle-regraspgreenpybulletsurrol21/10no
bimanual needle hand-off between PSM1 and PSM2; ACTION_MODE='pit...

Notes: bimanual needle hand-off between PSM1 and PSM2; ACTION_MODE='pitch'

Success function: inherits PsmsEnv/PsmEnv._is_success (goal_distance < distance_threshold) plus scripted hand-off waypoints; no dedicated _is_success override in needle_regrasp_bimanual.py (uses PsmEnv:229-233)

receipt
surrol-bipeg-transfergreenpybulletsurrol21/10no
bimanual peg transfer, desired_goal = first peg pose

Notes: bimanual peg transfer, desired_goal = first peg pose

Success function: BiPegTransfer._is_success: (xy goal_distance < 5e-3*SCALING) AND (|dz| < 4e-3*SCALING) (surrol/tasks/peg_transfer_bimanual.py:77-83)

receipt
surrol-ecm-reachgreenpybulletsurrol10/10no
ECM tip reaching

Notes: ECM tip reaching

Success function: EcmEnv._is_success: goal_distance(achieved_goal, desired_goal) < distance_threshold (surrol/tasks/ecm_env.py:153-157)

receipt
surrol-misorientgreenpybulletsurrol10/10no
endoscope goal pose with misorientation penalty

Notes: endoscope goal pose with misorientation penalty

Success function: EcmEnv._is_success with DISTANCE_THRESHOLD=0.01; misorientation-aware variant (surrol/tasks/ecm_env.py:153-157, ecm_misorient.py:22)

receipt
surrol-static-trackgreenpybulletsurrol11/10no
static tissue-point tracking with endoscope; goal=[0,0,0] | gate...

Notes: static tissue-point tracking with endoscope; goal=[0,0,0] | gate oracle caveat: upstream _is_success misorientation term is |wz-wz|==0 (ecm_static_track.py:86 always-true), so success reduces to the 2d centroid distance -- green records upstream oracle as-is

Success function: StaticTrack._is_success: (2d goal_distance < distance_threshold) AND (misorientation < misorientation_threshold) (surrol/tasks/ecm_static_track.py:83-91)

receipt
surrol-active-trackredpybulletsurrol1(not found - gap)no
nondeterministic state hash across fresh processes (reset+steps...

Gate cause: nondeterministic state hash across fresh processes (reset+steps hashes differ): upstream Trajectory(workspace, seed=None) in _env_setup draws np.random.seed(None) from OS entropy so the target path is unreproducible (surrol/utils/utils.py:105-157, utils.py:120 np.random.seed(self._seed)=None); reproduced: two fresh children gave traj.pts[0]=[-0.0511,0.2968] vs [0.0339,0.1568]. Env constructs and runs fine otherwise (hz=206.8, oracle/control OK); not an adapter defect -- would green with a seeded Trajectory upstream patch.

Notes: active tracking of a moving cube on a random Trajectory; camera required

Success function: NOT goal-env success: dense shaped reward compute_reward = 1 - (d/2 + |wz|*0.1); early-stop done when target centroid leaves camera view (surrol/tasks/ecm_active_track.py:30-46)

receipt
hecaton-chole-01-expose-retractto_buildmujocohecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm fundus retraction + camera on the hepatocystic triangle

Success function: gallbladder_retracted

—
hecaton-chole-02-hc-triangle-dissectto_buildmujocohecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm hepatocystic triangle dissection with held counter-traction

Success function: cvs_triangle_cleared

—
hecaton-chole-03-cystic-plate-releaseto_buildmujocohecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm release of the lower-third gallbladder attachments (cystic plate)

Success function: cvs_plate_exposed

—
hecaton-chole-04-cvs-doublet-viewto_buildmujocohecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm Doublet View capture and two-and-only-two confirmation

Success function: doublet_view_captured + cvs_two_structures

—
hecaton-chole-05-clip-duct-tripletto_buildmujocohecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm triple clip application on the cystic duct after the CVS gate

Success function: clip_encloses_target

—
hecaton-chole-06-divide-duct-between-clipsto_buildmujocohecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm division of the cystic duct between clip 2 and clip 3

Success function: cut_between_clips

—
hecaton-chole-07-clip-artery-tripletto_buildmujocohecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm triple clip application on the cystic artery

Success function: clip_encloses_target

—
hecaton-chole-08-divide-arteryto_buildmujocohecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm division of the cystic artery with the critical-structure invariant live

Success function: cut_between_clips + no_critical_injury

—
hecaton-chole-09-instrument-handoverto_buildmujocohecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm clip-applier to scissors exchange between the duct clip and the duct cut

Success function: handover_continuity_zero_freefall

—
hecaton-chole-10-ioc-guardedto_buildmujocohecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm intraoperative cholangiogram on the unclear-anatomy guard

Success function: ioc_visualized

—
hecaton-chole-11-bailout-withdrawto_buildmujocohecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm bailout: recognise the zone of significant risk and withdraw all arms

Success function: bailout_decision_recorded + bailout_action_taken

—
hecaton-appy-01-mesoappendix-baseto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm mesoappendix division and appendiceal base transection

Success function: mesoappendix_divided + appendiceal_stump_sealed

—
hecaton-cbd-01-choledochotomy-scope-closureto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm choledochotomy, choledochoscopy and sutured closure

Success function: stone_count_zero + leak_test_negative

—
hecaton-ralp-01-dvc-bladder-neckto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm dorsal-venous-complex suture-ligation and bladder-neck division

Success function: dvc_controlled + bladder_neck_opened

—
hecaton-pneph-01-tumor-resection-renorrhaphyto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm clamped tumor resection with two-layer renorrhaphy

Success function: margin_negative + renorrhaphy_dry

—
hecaton-vats-01-hilar-stapled-divisionto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm hilar dissection with stapled pulmonary vein and arterial division

Success function: hilar_vessels_controlled + bronchus_stump_sealed

—
hecaton-colectomy-01-cme-pedicleto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm CME mesocolic dissection and pedicle control

Success function: smv_plane_exposed + pedicle_controlled

—
hecaton-tlh-01-uterine-artery-colpotomyto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm uterine-artery skeletonisation, colpotomy and vaginal-cuff closure

Success function: uterine_artery_isolated + cuff_closed

—
hecaton-evar-01-main-body-gateto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm EVAR main-body deployment and contralateral gate cannulation

Success function: proximal_seal_below_renal + gate_cannulated

—
hecaton-handover-01-peg-needleto_buildisaachecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm peg/needle handover drill (source, receiver, camera)

Success function: handover_object_continuity

—
hecaton-cell-05-liver-retractionto_buildwarphecaton-multiarm5(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Five-arm right-hepatectomy retraction and parenchymal transection cell

Success function: parenchyma_transected_on_plane + bile_leak_sealed

—
hecaton-cell-06-esophagectomy-conduitto_buildwarphecaton-multiarm6(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Six-arm thoracoscopic esophagectomy mobilisation and conduit-delivery cell

Success function: esophagus_mobilized_to_carina + azygos_controlled + nodes_harvested

—
hecaton-cell-08-multiquadrant-traumato_buildwarphecaton-multiarm8(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Eight-arm multi-quadrant trauma survey plus small-bowel resection cell

Success function: survey_complete + anastomosis_patent + arm_arm_collision_zero

—
hecaton-chole-12-acute-decompress-lyseto_buildmujocohecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm acute-cholecystitis decompression, adhesiolysis and guarded clip-divide

Success function: gallbladder_decompressed + adhesions_cleared_bowel_intact

—
hecaton-chole-13-subtotal-fenestrateto_buildmujocohecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm fenestrating subtotal cholecystectomy with mucosal ablation and drain

Success function: fenestration_remnant_patent + mucosa_ablated

—
hecaton-chole-14-subtotal-reconstituteto_buildmujocohecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm reconstituting subtotal cholecystectomy with leak-tested remnant closure

Success function: remnant_closed_leak_free

—
hecaton-chole-15-cholect50-tripletto_buildmujocohecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm CholecT50 triplet sequence (retract, clip x2, cut) on the calot scene

Success function: triplet_sequence_complete

—
hecaton-tevar-01-stent-sealto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm TEVAR landing-zone deployment and completion-angiogram seal check

Success function: proximal_seal_in_zone + no_branch_miscoverage

—
hecaton-fempop-01-stent-runoffto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm femoropopliteal true-lumen crossing, stent deployment and runoff check

Success function: true_lumen_crossed + stent_covers_lesion

—
hecaton-stroke-01-clot-retrievalto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm stent-retriever deployment with balloon-guide aspiration and TICI grading

Success function: clot_captured + tici_2b_3

—
hecaton-lcolectomy-01-flexure-pedicleto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm left-hemicolectomy flexure takedown, pedicle ligation and anastomosis

Success function: splenic_flexure_dropped + pedicle_ligated

—
hecaton-sigmoid-01-ima-anastomosisto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm sigmoid colectomy IMA pedicle division with air-leak-tested anastomosis

Success function: ima_pedicle_divided + anastomosis_air_tight

—
hecaton-tme-01-holy-planeto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm TME holy-plane dissection with margin-guarded rectal transection

Success function: holy_plane_dissected + distal_margin_met

—
hecaton-hartmann-01-stump-stomato_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm emergency Hartmann: purulence control, stapled stump and colostomy maturation

Success function: stump_stapled_below_phlegmon + stoma_matured

—
hecaton-tcolectomy-01-four-quadrantto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm total colectomy: both flexures, bilateral pedicles and ileorectal anastomosis

Success function: flexures_free_capsule_intact + anastomosis_tension_free

—
hecaton-ileoce-01-crohn-resectto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm ileocecectomy for Crohn disease with margin-guarded stapled anastomosis

Success function: margins_in_soft_bowel + anastomosis_patent

—
hecaton-rectopexy-01-mesh-fixationto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm ventral rectopexy mesh fixation with rectum under cephalad traction

Success function: mesh_distal_fixated + promontory_fixated

—
hecaton-nissen-01-crus-wrapto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm Nissen fundoplication: crural closure and 360-degree floppy wrap over a bougie

Success function: crura_closed_bougie_slips + floppy_wrap_formed

—
hecaton-heller-01-myotomy-dorto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm Heller myotomy with mucosal-bulge check and Dor fundoplication coverage

Success function: myotomy_mucosa_bulges + dor_cover_intact

—
hecaton-sleeve-01-staple-lineto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm sleeve gastrectomy serial stapling over a bougie with leak test

Success function: staple_line_intact + leak_test_negative

—
hecaton-rygb-01-pouch-limbsto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm Roux-en-Y gastric bypass: pouch, gastrojejunostomy and Petersen closure

Success function: gj_patent_leak_free + mesenteric_defects_closed

—
hecaton-dpct-01-retropancreatic-stapleto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm distal pancreatectomy: retropancreatic tunnel, stapled transection and stump drain

Success function: vein_surface_exposed + transection_complete

—
hecaton-splenectomy-01-hilum-stapleto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm splenectomy: artery ligation, short gastrics and stapled hilar division

Success function: hilum_divided_two_firings + pancreatic_tail_intact

—
hecaton-tapp-01-mesh-coverageto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm TAPP hernia repair: sac reduction, mesh coverage and danger-triangle-safe fixation

Success function: mesh_flat_overlap_3cm + fixation_safe

—
hecaton-adhesiolysis-01-band-transitionto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm adhesiolysis for SBO: transition-point release and band division under counter-traction

Success function: bands_divided + transition_released

—
hecaton-graham-01-omental-patchto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm Graham omental patch: three-suture closure of the perforation over a vascularized flap

Success function: patch_seals_perforation

—
hecaton-sch-01-corpus-amputationto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm supracervical hysterectomy: uterine artery branches, amputation and contained morcellation

Success function: corpus_detached_stump_cauterized + morcellation_contained

—
hecaton-myomect-01-enucleationto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm laparoscopic myomectomy: traction enucleation and multilayer closure

Success function: fibroid_enucleated_cavity_intact + multilayer_closed

—
hecaton-ovcyst-01-enucleationto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm ovarian cystectomy: traction/counter-traction enucleation with cortex preservation

Success function: cyst_wall_stripped + cortex_preserved

—
hecaton-sacropexy-01-y-meshto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm robotic sacrocolpopexy: Y-mesh fixation and retroperitonealization

Success function: y_mesh_anchored + mesh_retroperitonealized

—
hecaton-die-01-nodule-excisionto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm deep endometriosis excision: ureterolysis, en-bloc nodule removal and rectal integrity test

Success function: nodule_excised_enbloc + rectum_intact

—
hecaton-plnd-01-obturator-packetto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm pelvic lymphadenectomy: external-iliac and obturator packets en bloc

Success function: packets_removed_enbloc + obturator_nerve_intact

—
hecaton-vats-02-lower-lobectomyto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm VATS lower lobectomy: fissure, stapled hilar structures and bronchus below middle-lobe takeoff

Success function: bronchus_stapled_distal_to_takeoff + vessels_divided

—
hecaton-vwedge-01-staple-marginto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm VATS wedge resection: 1 cm margin staple line with underwater leak test

Success function: margin_1cm_met + staple_line_air_tight

—
hecaton-blebec-01-pleurodesisto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm VATS blebectomy with stapled resection and apical pleural abrasion

Success function: bleb_resected_healthy_tissue + pleurodesis_coverage_80pct

—
hecaton-pwin-01-windowto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm VATS pericardial window: 3x3 cm excision anterior to the phrenic nerve

Success function: window_3cm_created + phrenic_nerve_intact

—
hecaton-thymec-01-enblocto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm VATS thymectomy: both horns, venous tributaries and contralateral phrenic boundary

Success function: enbloc_resection_complete + phrenic_bilateral_intact

—
hecaton-ebus-01-tbna-stationsto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm EBUS-TBNA: Doppler-guarded systematic nodal sampling in N3-to-N1 order

Success function: doppler_checked_every_station + passes_3_per_station

—
hecaton-rneph-01-hilum-clampto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm robotic radical nephrectomy: hilar skeletonization, artery-first division and intact bagging

Success function: artery_first_then_vein + specimen_bagged_intact

—
hecaton-dneph-01-graft-handoffto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm donor nephrectomy: flush origin stapling and warm-ischemia-bounded graft handoff

Success function: origins_stapled_flush + warm_ischemia_minimized

—
hecaton-pyeloplasty-01-upj-anastomosisto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm dismembered pyeloplasty: spatulated UPJ anastomosis over a JJ stent

Success function: anastomosis_watertight + jj_stent_placed

—
hecaton-cystec-01-conduit-stomato_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm robotic radical cystectomy: ureteral division, Bricker anastomosis and stoma maturation

Success function: ureteroileal_anastomosed + stoma_viable

—
hecaton-nureter-01-bladder-cuffto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm nephroureterectomy: en-bloc bladder-cuff excision with two-layer watertight closure

Success function: cuff_1cm_enbloc + bladder_closure_watertight

—
hecaton-adrenal-01-vein-controlto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm adrenalectomy: early main-vein control and intact 360-degree gland mobilization

Success function: main_vein_controlled + gland_intact_extracted

—
hecaton-ureimpl-01-tunnel-anastomosisto_buildwarphecaton-multiarm4(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Four-arm ureteral reimplantation: submucosal tunnel, mucosal anastomosis and fill leak test

Success function: tunnel_anti_reflux + leak_test_negative

—
hecaton-peg-01-bumper-seatto_buildwarphecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-agent PEG: endoscopic-guided transabdominal puncture with bumper seating

Success function: safe_puncture_no_intervening_organs + bumper_seated

—
hecaton-tcrm-01-loop-resectionto_buildwarphecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-agent TCRM: chip-by-chip loop resection with fluid-deficit safety bound

Success function: resection_complete_depth_respected + fluid_deficit_safe

—
hecaton-tamis-01-fullthicknessto_buildwarphecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-agent TAMIS: full-thickness excision on a 1 cm marked ring with transverse closure

Success function: fullthickness_excision_margin_1cm + defect_closed

—
hecaton-fls-01-peg-transferto_buildwarphecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm FLS peg transfer: 12 post-to-post transfers with zero free-fall handoffs

Success function: peg_transfers_complete_no_freefall

—
hecaton-fls-02-pattern-cutto_buildwarphecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm FLS pattern cut: annulus tracking under tension with deviation penalty

Success function: cut_path_in_annulus_95pct

—
hecaton-fls-03-intracorporeal-knotto_buildwarphecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm FLS intracorporeal square knot inside the 112 s proficiency target

Success function: square_knot_secured_no_slip

—
hecaton-jigsaw-01-knot-tyingto_buildwarphecaton-multiarm2(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Two-arm JIGSAWS knot tying: opposing throws with zero-migration cinch, 5 repetitions

Success function: knot_square_migration_zero

—
hecaton-ecam-01-navigationto_buildwarphecaton-multiarm3(not found - gap)no
to_build: no env gate run yet (W2 env factory builds it)

Gate cause: to_build: no env gate run yet (W2 env factory builds it)

Notes: Three-arm ECM camera navigation: servo the view on moving tips with safe retreat

Success function: target_tracked_centered_90pct

—
factory-lapcholestan-p0-preoperative-preparagreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: momentary_pause_logged AND cvs_two_structures

receipt
factory-lapcholestan-p1-access-and-exposureredmujocofactory-v14(not found - gap)no
zai/glm-5.3-flash: event Laparoscopic view from the camera port...

Gate cause: zai/glm-5.3-flash: event Laparoscopic view from the camera port showing the insufflated abdomen with gallbladder and liver edge in frame not visible

Success function: oracle.success: gallbladder_retracted AND momentary_pause_logged AND doublet_view_captured

receipt
factory-lapcholestan-p2-critical-view-of-safgreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: gallbladder_retracted AND cvs_triangle_cleared AND cvs_plate_exposed AND cvs_two_structures AND doublet_view_captured AND momentary_pause_logged

receipt
factory-lapcholestan-p3-clip-and-divide-cystredmujocofactory-v14(not found - gap)no
zai/glm-5.3-flash: event The hepatocystic triangle is cleared wi...

Gate cause: zai/glm-5.3-flash: event The hepatocystic triangle is cleared with the cystic duct and cystic artery as the only two structures entering the gallbladder, clips not yet applied not visible

Success function: oracle.success: gallbladder_retracted AND cvs_plate_exposed AND cvs_two_structures AND doublet_view_captured AND momentary_pause_logged AND clip_encloses_target AND cut_between_clips

receipt
factory-lapcholestan-p4-gallbladder-dissectigreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: gallbladder_retracted AND cvs_plate_exposed AND cvs_triangle_cleared AND cvs_two_structures AND doublet_view_captured

receipt
factory-lapcholestan-p5-bailout-branchesgreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: momentary_pause_logged AND cvs_two_structures

receipt
factory-lapcholestan-p6-specimen-and-documenredmujocofactory-v14(not found - gap)no
zai/glm-5.3-flash: event The resected gallbladder specimen is he...

Gate cause: zai/glm-5.3-flash: event The resected gallbladder specimen is held oriented for the camera with an orientation/label marking visible, alongside the captured anterior view of the hepatocystic triangle documenting the critical view of safety. not visible

Success function: oracle.success: doublet_view_captured

receipt
factory-cholect50cli-p0-triplet-chain-on-helredmujocofactory-v12(not found - gap)no
zai/glm-5.3-flash: event tube_under_tension not visible

Gate cause: zai/glm-5.3-flash: event tube_under_tension not visible

Success function: oracle.success: gallbladder_retracted AND cvs_two_structures AND clip_encloses_target AND cut_between_clips AND doublet_view_captured

receipt
factory-lapcholeacut-p0-preoperative-resuscigreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: momentary_pause_logged AND cvs_two_structures AND NOT cvs_not_achievable

receipt
factory-lapcholeacut-p1-severity-assessmentgreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: cvs_two_structures AND gallbladder_retracted AND momentary_pause_logged AND cvs_plate_exposed

receipt
factory-lapcholeacut-p2-difficult-triangle-dredmujocofactory-v14(not found - gap)no
zai/glm-5.3-flash: event Inflamed hepatocystic triangle visible...

Gate cause: zai/glm-5.3-flash: event Inflamed hepatocystic triangle visible with cystic duct and artery being cleared of edematous tissue while suction keeps the field dry not visible

Success function: oracle.success: gallbladder_retracted AND cvs_triangle_cleared AND cvs_plate_exposed AND doublet_view_captured AND cvs_two_structures AND ioc_visualized AND momentary_pause_logged AND clip_encloses_target AND cut_between_clips

receipt
factory-lapcholeacut-p3-division-and-removalredmujocofactory-v14(not found - gap)no
zai/glm-5.3-flash: realism 2 < 8 on ev_clips_on_cystic_duct

Gate cause: zai/glm-5.3-flash: realism 2 < 8 on ev_clips_on_cystic_duct

Success function: oracle.success: gallbladder_retracted AND cvs_plate_exposed AND cvs_two_structures AND doublet_view_captured AND momentary_pause_logged AND clip_encloses_target AND cut_between_clips

receipt
factory-lapcholeacut-p4-closuregreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: doublet_view_captured AND cvs_two_structures AND momentary_pause_logged AND bailout_action_taken

receipt
factory-lapcholeacut-p5-culture-and-follow-ugreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: cvs_two_structures AND momentary_pause_logged

receipt
factory-subtotalchol-p2-efenestratinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: gallbladder_retracted AND doublet_view_captured AND cvs_plate_exposed AND cvs_two_structures AND bailout_action_taken

receipt
factory-subtotalchol-p3-efenestratinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: doublet_view_captured AND cvs_two_structures AND bailout_action_taken

receipt
factory-subtotalchol-p4-efenestratinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: doublet_view_captured AND cvs_plate_exposed AND cvs_two_structures AND ioc_visualized

receipt
factory-subtotalchol-p1-ereconstitutinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: momentary_pause_logged AND bailout_action_taken

receipt
factory-subtotalchol-p2-ereconstitutinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: cvs_plate_exposed AND momentary_pause_logged AND cvs_two_structures

receipt
factory-subtotalchol-p3-ereconstitutinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: cvs_two_structures AND ioc_visualized AND momentary_pause_logged AND bailout_action_taken

receipt
factory-subtotalchol-p4-ereconstitutinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: doublet_view_captured AND momentary_pause_logged

receipt
factory-subtotalchol-p0-efenestratingredmujocofactory-v14(not found - gap)no
zai/glm-5.3-flash: event Team pause displayed with documented ba...

Gate cause: zai/glm-5.3-flash: event Team pause displayed with documented bailout plan and consent for subtotal cholecystectomy with possible drain, before any incision not visible

Success function: oracle.success: momentary_pause_logged AND bailout_decision_recorded

receipt
factory-subtotalchol-p1-efenestratinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: momentary_pause_logged AND cvs_two_structures AND gallbladder_retracted AND cvs_plate_exposed

receipt
factory-subtotalchol-p0-ereconstitutinggreenmujocofactory-v14(not found - gap)no
details

Success function: oracle.success: gallbladder_retracted AND momentary_pause_logged AND doublet_view_captured AND cvs_two_structures

receipt