{
  "run_id": "pact_phase1b_ot_eval_20260521",
  "timestamp": "2026-05-21T20:25:26+00:00",
  "sampler_policy": "PAct official defaults; this script does not pass --ss_steps, --slat_steps, --ss_cfg_strength, or --slat_cfg_strength.",
  "indices": [
    29,
    60,
    62,
    74,
    91
  ],
  "dataset_validation": {
    "dataset_root": "/data/250010098/PAct-Transporter/datasets/pact_eval100_2_1_coverage_20260521",
    "num_records": 100,
    "unique_sample_ids": 100,
    "by_source": {
      "ArtVIP": 25,
      "GAPartNet": 25,
      "GRScenes": 25,
      "PartNetMobility": 25
    },
    "by_category": {
      "Clock": 4,
      "Dispenser": 4,
      "architectural_fixtures": 11,
      "electronics": 5,
      "household_fixtures": 13,
      "household_items": 6,
      "large_furniture": 4,
      "major_appliances": 22,
      "small_appliances": 16,
      "small_furniture": 9,
      "storage": 6
    },
    "by_problem_tag": {
      "cross_source_domain_gap": 75,
      "hard_motion": 74,
      "internal_or_occluded_part_risk": 48,
      "known_quality_or_conversion_issue": 40,
      "many_parts": 56,
      "mixed_joint_types": 37,
      "non_pm_generalization": 75,
      "part_decomposition": 100,
      "prismatic_motion": 46,
      "revolute_motion": 91,
      "single_view_conditioning": 100,
      "thin_structure": 9,
      "unseen_category": 15
    },
    "parsed_sdf_count": 100,
    "preview_count": 100,
    "issues": [],
    "ok": true
  },
  "sample_summaries": [
    {
      "sample_name": "029_GAPartNet_storage_storage_100671",
      "benchmark_index": 29,
      "sample_id": "GAPartNet/storage/100671",
      "source_dataset": "GAPartNet",
      "category": "storage",
      "object_id": "storage/100671",
      "gt_sdf": "/data/share/ud4scenesmith/scenesmith_unified_articulated_v0.4_sourcefaithful_scenesmith_format_20260507/artvip_sdf/storage/100671/100671.sdf",
      "num_parts": 2,
      "movable_parts": 1,
      "part_names": [
        "link_0",
        "link_1"
      ],
      "view": {
        "phi_deg": 75.0,
        "theta_deg": 90.0,
        "radius": 3.294571685791016,
        "score": 1031976,
        "visible_movable": 1,
        "total_pixels": 3496
      },
      "visible_pixels": {
        "1": 46088,
        "2": 10990
      },
      "processed_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/029_GAPartNet_storage_storage_100671/029_GAPartNet_storage_storage_100671_synthetic_processed.png",
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/029_GAPartNet_storage_storage_100671/029_GAPartNet_storage_storage_100671_synthetic_partcolor_debug.png",
      "texture_render": {
        "visual_meshes": 26,
        "texture_like_meshes": 26,
        "status": "textured_visual_render"
      },
      "mask_exr": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/029_GAPartNet_storage_storage_100671/029_GAPartNet_storage_storage_100671_synthetic_mask.exr",
      "mask_preview": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/029_GAPartNet_storage_storage_100671/029_GAPartNet_storage_storage_100671_synthetic_mask_segments_3.png",
      "reference_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/029_GAPartNet_storage_storage_100671/reference_object.json"
    },
    {
      "sample_name": "060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135",
      "benchmark_index": 60,
      "sample_id": "PartNetMobility/architectural_fixtures/3135",
      "source_dataset": "PartNetMobility",
      "category": "architectural_fixtures",
      "object_id": "architectural_fixtures/3135",
      "gt_sdf": "/data/share/ud4scenesmith/scenesmith_unified_articulated_v0.4_sourcefaithful_scenesmith_format_20260507/artvip_sdf/architectural_fixtures/3135/3135.sdf",
      "num_parts": 2,
      "movable_parts": 1,
      "part_names": [
        "link_0",
        "link_1"
      ],
      "view": {
        "phi_deg": 55.0,
        "theta_deg": 45.0,
        "radius": 3.2346199035644534,
        "score": 1013429,
        "visible_movable": 1,
        "total_pixels": 3229
      },
      "visible_pixels": {
        "1": 16785,
        "2": 36127
      },
      "processed_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_processed.png",
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_partcolor_debug.png",
      "texture_render": {
        "visual_meshes": 10,
        "texture_like_meshes": 7,
        "status": "textured_visual_render"
      },
      "mask_exr": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_mask.exr",
      "mask_preview": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_mask_segments_3.png",
      "reference_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/reference_object.json"
    },
    {
      "sample_name": "062_PartNetMobility_small_appliances_small_appliances_1436",
      "benchmark_index": 62,
      "sample_id": "PartNetMobility/small_appliances/1436",
      "source_dataset": "PartNetMobility",
      "category": "small_appliances",
      "object_id": "small_appliances/1436",
      "gt_sdf": "/data/share/ud4scenesmith/scenesmith_unified_articulated_v0.4_sourcefaithful_scenesmith_format_20260507/artvip_sdf/small_appliances/1436/1436.sdf",
      "num_parts": 2,
      "movable_parts": 1,
      "part_names": [
        "link_0",
        "link_1"
      ],
      "view": {
        "phi_deg": 75.0,
        "theta_deg": -90.0,
        "radius": 4.170550918579102,
        "score": 1006120,
        "visible_movable": 1,
        "total_pixels": 990
      },
      "visible_pixels": {
        "1": 8370,
        "2": 7883
      },
      "processed_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/062_PartNetMobility_small_appliances_small_appliances_1436/062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_processed.png",
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/062_PartNetMobility_small_appliances_small_appliances_1436/062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_partcolor_debug.png",
      "texture_render": {
        "visual_meshes": 24,
        "texture_like_meshes": 9,
        "status": "textured_visual_render"
      },
      "mask_exr": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/062_PartNetMobility_small_appliances_small_appliances_1436/062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_mask.exr",
      "mask_preview": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/062_PartNetMobility_small_appliances_small_appliances_1436/062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_mask_segments_3.png",
      "reference_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/062_PartNetMobility_small_appliances_small_appliances_1436/reference_object.json"
    },
    {
      "sample_name": "074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712",
      "benchmark_index": 74,
      "sample_id": "GRScenes/architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
      "source_dataset": "GRScenes",
      "category": "architectural_fixtures",
      "object_id": "architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
      "gt_sdf": "/data/share/ud4scenesmith/scenesmith_unified_articulated_v0.4_sourcefaithful_scenesmith_format_20260507/artvip_sdf/architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712/grscenes_door_dd95b8cef2d3_d60712.sdf",
      "num_parts": 2,
      "movable_parts": 1,
      "part_names": [
        "group_9a5a4074_7c69_437c",
        "group_static"
      ],
      "view": {
        "phi_deg": 55.0,
        "theta_deg": 90.0,
        "radius": 3.755168151855469,
        "score": 1018762,
        "visible_movable": 1,
        "total_pixels": 2482
      },
      "visible_pixels": {
        "1": 26640,
        "2": 14054
      },
      "processed_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_processed.png",
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_partcolor_debug.png",
      "texture_render": {
        "visual_meshes": 35,
        "texture_like_meshes": 1,
        "status": "textured_visual_render"
      },
      "mask_exr": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_mask.exr",
      "mask_preview": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_mask_segments_3.png",
      "reference_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/reference_object.json"
    },
    {
      "sample_name": "091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
      "benchmark_index": 91,
      "sample_id": "ArtVIP/small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
      "source_dataset": "ArtVIP",
      "category": "small_furniture",
      "object_id": "small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
      "gt_sdf": "/data/share/ud4scenesmith/scenesmith_unified_articulated_v0.4_sourcefaithful_scenesmith_format_20260507/artvip_sdf/small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1.sdf",
      "num_parts": 2,
      "movable_parts": 1,
      "part_names": [
        "door",
        "e_olderdalen_bedside_tab"
      ],
      "view": {
        "phi_deg": 75.0,
        "theta_deg": 90.0,
        "radius": 1.96883544921875,
        "score": 1009898,
        "visible_movable": 1,
        "total_pixels": 2578
      },
      "visible_pixels": {
        "1": 11737,
        "2": 30464
      },
      "processed_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_processed.png",
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_partcolor_debug.png",
      "texture_render": {
        "visual_meshes": 5,
        "texture_like_meshes": 5,
        "status": "textured_visual_render"
      },
      "mask_exr": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_mask.exr",
      "mask_preview": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_mask_segments_3.png",
      "reference_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/pact_inputs/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/reference_object.json"
    }
  ],
  "run_status": [
    {
      "variant": "official_pact",
      "ok": true,
      "runtime_seconds": 0.0,
      "tail": "skipped-existing"
    },
    {
      "variant": "ot_first",
      "ok": true,
      "runtime_seconds": 0.0,
      "tail": "skipped-existing"
    },
    {
      "variant": "mask_prior",
      "ok": true,
      "runtime_seconds": 0.0,
      "tail": "skipped-existing"
    },
    {
      "variant": "rgb_edge",
      "ok": true,
      "runtime_seconds": 0.0,
      "tail": "skipped-existing"
    },
    {
      "variant": "virtual_patch",
      "ok": true,
      "runtime_seconds": 0.0,
      "tail": "skipped-existing"
    },
    {
      "variant": "firstthird_edge",
      "ok": true,
      "runtime_seconds": 0.0,
      "tail": "skipped-existing"
    }
  ],
  "variant_results": [
    {
      "variant": {
        "name": "official_pact",
        "label": "Official PAct",
        "kind": "official",
        "note": "Released PAct cache, no OT wrapper."
      },
      "records": [
        {
          "sample_name": "029_GAPartNet_storage_storage_100671",
          "benchmark_index": 29,
          "sample_id": "GAPartNet/storage/100671",
          "source_dataset": "GAPartNet",
          "category": "storage",
          "object_id": "storage/100671",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "official_pact",
          "variant_label": "Official PAct",
          "variant_note": "Released PAct cache, no OT wrapper.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/official_pact/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/029_GAPartNet_storage_storage_100671@029_GAPartNet_storage_storage_100671_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.6816283773036368,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.3183716226963632,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.6200810198795191,
                  "limit_error": 65.2794842005373,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 68.16283773036368,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 42.34150069426795,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/official_pact/029_GAPartNet_storage_storage_100671.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/source_textured.glb",
            "gt_parts_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/gt_parts.glb",
            "pact_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/official_pact/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从单视图输入和2D part mask中重建出几何形状完整的存储箱，并且part分解（箱体和盖子）与GT parts数量一致（GT parts=2）。\n2.  **关节类型和运动可行性缺失：** 尽管GT movable=1，但PAct的joint_f1为0.000，表明它未能识别或生成任何关节，因此无法实现盖子的可动性。\n3.  **对2D分割的依赖性可能导致运动信息丢失：** 2D part mask清晰地将盖子和箱体分开，但这种分离本身并未编码运动信息。PAct未能从这种静态分割中推断出盖子应有的铰链运动，这可能暴露出其在从2D信息推断3D运动学方面的局限性。\n4.  **PAct score与实际运动能力不符：** PAct weighted_score为42.34，但关节F1分数为0，这表明该评分可能过度侧重于几何和part分解，而未能充分反映运动学能力的缺失。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从单视图输入和2D part mask中重建出几何形状完整的存储箱，并且part分解（箱体和盖子）与GT parts数量一致（GT parts=2）。\n2.  **关节类型和运动可行性缺失：** 尽管GT movable=1，但PAct的joint_f1为0.000，表明它未能识别或生成任何关节，因此无法实现盖子的可动性。\n3.  **对2D分割的依赖性可能导致运动信息丢失：** 2D part mask清晰地将盖子和箱体分开，但这种分离本身并未编码运动信息。PAct未能从这种静态分割中推断出盖子应有的铰链运动，这可能暴露出其在从2D信息推断3D运动学方面的局限性。\n4.  **PAct score与实际运动能力不符：** PAct weighted_score为42.34，但关节F1分数为0，这表明该评分可能过度侧重于几何和part分解，而未能充分反映运动学能力的缺失。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 413,
                "candidatesTokenCount": 268,
                "totalTokenCount": 681,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 155
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "QGoPaouXJJKEz7IP3urOsQs"
            }
          }
        },
        {
          "sample_name": "060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135",
          "benchmark_index": 60,
          "sample_id": "PartNetMobility/architectural_fixtures/3135",
          "source_dataset": "PartNetMobility",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/3135",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "official_pact",
          "variant_label": "Official PAct",
          "variant_note": "Released PAct cache, no OT wrapper.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/official_pact/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135@060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7157083320890107,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.28429166791098925,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.5589249837234098,
                  "limit_error": 64.0605309764531,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 71.57083320890108,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 42.879605243510696,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/official_pact/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/source_textured.glb",
            "gt_parts_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/gt_parts.glb",
            "pact_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/official_pact/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评：\n\n1.  **几何完整性与Part分解问题：** PAct生成的2D part mask（右图）与原始输入（左图）的几何形状存在显著差异。原始输入是一个带有多个隔间的盒子，其中一个盖子是可移动的。然而，2D mask将整个盒子简化为一个大的蓝色矩形，而可移动的盖子被简化为一个红色的矩形。这导致了严重的几何失真和不准确的part分解。\n2.  **关节数量/类型与运动可行性：** 尽管`part_count_mae=0`表明PAct正确识别了2个part，但`joint_f1=0.000`明确指出PAct未能识别出任何关节。这意味着PAct无法理解这两个part之间的铰链关系，从而无法生成可行的运动。\n3.  **对2D分割的依赖暴露：** PAct的输出严重依赖于2D part mask的质量。由于2D mask未能准确捕捉原始物体的复杂几何结构和part边界，PAct无法从这个简化的表示中推断出正确的3D铰链结构和运动。这暴露了PAct对高质量2D分割输入的敏感性。\n4.  **整体性能不佳：** PAct的加权分数仅为42.88，结合`joint_f1=0.000`，表明PAct在这个样本上生成三维铰链物体的效果非常差，未能成功识别和建模其铰链特性。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评：\n\n1.  **几何完整性与Part分解问题：** PAct生成的2D part mask（右图）与原始输入（左图）的几何形状存在显著差异。原始输入是一个带有多个隔间的盒子，其中一个盖子是可移动的。然而，2D mask将整个盒子简化为一个大的蓝色矩形，而可移动的盖子被简化为一个红色的矩形。这导致了严重的几何失真和不准确的part分解。\n2.  **关节数量/类型与运动可行性：** 尽管`part_count_mae=0`表明PAct正确识别了2个part，但`joint_f1=0.000`明确指出PAct未能识别出任何关节。这意味着PAct无法理解这两个part之间的铰链关系，从而无法生成可行的运动。\n3.  **对2D分割的依赖暴露：** PAct的输出严重依赖于2D part mask的质量。由于2D mask未能准确捕捉原始物体的复杂几何结构和part边界，PAct无法从这个简化的表示中推断出正确的3D铰链结构和运动。这暴露了PAct对高质量2D分割输入的敏感性。\n4.  **整体性能不佳：** PAct的加权分数仅为42.88，结合`joint_f1=0.000`，表明PAct在这个样本上生成三维铰链物体的效果非常差，未能成功识别和建模其铰链特性。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 336,
                "totalTokenCount": 755,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "RWoPav2GMtLrz7IPpJjdgAs"
            }
          }
        },
        {
          "sample_name": "062_PartNetMobility_small_appliances_small_appliances_1436",
          "benchmark_index": 62,
          "sample_id": "PartNetMobility/small_appliances/1436",
          "source_dataset": "PartNetMobility",
          "category": "small_appliances",
          "object_id": "small_appliances/1436",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "official_pact",
          "variant_label": "Official PAct",
          "variant_note": "Released PAct cache, no OT wrapper.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/official_pact/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/062_PartNetMobility_small_appliances_small_appliances_1436@062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.5295892197044006,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.3436775561017207,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 53.28725686866789,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.47041078029559935,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 0.0,
                  "origin_error": 0.3436775561017207,
                  "limit_error": 53.28725686866789,
                  "accepted": true
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 52.958921970440066,
            "part_decomposition": 100.0,
            "kinematics": 100.0,
            "motion_consistency": 100.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 82.04614557428002,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/official_pact/062_PartNetMobility_small_appliances_small_appliances_1436.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/source_textured.glb",
            "gt_parts_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/gt_parts.glb",
            "pact_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/official_pact/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地将风扇叶片和中心主体分解为两个部分，与GT parts数量一致，且几何形状保持完整。\n2.  **关节数量/类型与运动可行性准确：** PAct正确识别出1个可动部件，推测为风扇叶片与主体的旋转关节，符合实际风扇的运动机制。\n3.  **对2D分割的依赖性：** 2D part mask清晰地将风扇叶片和中心主体分开，PAct的输出与此2D分割高度一致，表明其在很大程度上依赖于高质量的2D分割输入。\n4.  **潜在的泛化挑战：** 尽管在此样本上表现优秀，但如果2D分割质量不佳或部件边界模糊，PAct的性能可能会受到影响，这暴露了其对输入质量的敏感性。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地将风扇叶片和中心主体分解为两个部分，与GT parts数量一致，且几何形状保持完整。\n2.  **关节数量/类型与运动可行性准确：** PAct正确识别出1个可动部件，推测为风扇叶片与主体的旋转关节，符合实际风扇的运动机制。\n3.  **对2D分割的依赖性：** 2D part mask清晰地将风扇叶片和中心主体分开，PAct的输出与此2D分割高度一致，表明其在很大程度上依赖于高质量的2D分割输入。\n4.  **潜在的泛化挑战：** 尽管在此样本上表现优秀，但如果2D分割质量不佳或部件边界模糊，PAct的性能可能会受到影响，这暴露了其对输入质量的敏感性。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 215,
                "totalTokenCount": 634,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "SmoPaoX1ItGHz7IPpMDLCA"
            }
          }
        },
        {
          "sample_name": "074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712",
          "benchmark_index": 74,
          "sample_id": "GRScenes/architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "source_dataset": "GRScenes",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "official_pact",
          "variant_label": "Official PAct",
          "variant_note": "Released PAct cache, no OT wrapper.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/official_pact/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712@074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.5333157639183982,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.4666842360816018,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.9196996503663034,
                  "limit_error": 65.0900540649494,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 53.33157639183982,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 39.999722588185236,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/official_pact/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/source_textured.glb",
            "gt_parts_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/gt_parts.glb",
            "pact_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/official_pact/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **Part分解准确，但几何完整性受限：** PAct正确地将门分解为两个部分（门扇和门框），与GT parts数量一致（part_count_mae=0）。然而，从2D mask来看，门框的底部几何形状似乎不完整或不规则，可能影响最终3D模型的几何完整性。\n2.  **关节识别和运动可行性存在问题：** joint_f1=0.000表明PAct未能正确识别出任何关节，这意味着它可能无法生成具有可动性的3D模型，与GT movable=1相悖。这严重影响了生成铰链物体的核心目标。\n3.  **对2D分割的依赖性暴露：** 2D part mask中门框底部的不规则形状（例如，右下角似乎有缺失或不平整）直接反映了2D分割的局限性，并可能导致生成的3D模型在该区域的几何缺陷。\n4.  **门把手等细节未被识别为独立部件：** 尽管门把手是门的一个重要可动部件，但2D mask中并未将其单独分割出来，这表明PAct可能无法将其识别为独立部件或可动部件，进一步限制了运动可行性。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **Part分解准确，但几何完整性受限：** PAct正确地将门分解为两个部分（门扇和门框），与GT parts数量一致（part_count_mae=0）。然而，从2D mask来看，门框的底部几何形状似乎不完整或不规则，可能影响最终3D模型的几何完整性。\n2.  **关节识别和运动可行性存在问题：** joint_f1=0.000表明PAct未能正确识别出任何关节，这意味着它可能无法生成具有可动性的3D模型，与GT movable=1相悖。这严重影响了生成铰链物体的核心目标。\n3.  **对2D分割的依赖性暴露：** 2D part mask中门框底部的不规则形状（例如，右下角似乎有缺失或不平整）直接反映了2D分割的局限性，并可能导致生成的3D模型在该区域的几何缺陷。\n4.  **门把手等细节未被识别为独立部件：** 尽管门把手是门的一个重要可动部件，但2D mask中并未将其单独分割出来，这表明PAct可能无法将其识别为独立部件或可动部件，进一步限制了运动可行性。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 291,
                "totalTokenCount": 723,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "TWoPaujgM7Gcz7IPqOHK4QE"
            }
          }
        },
        {
          "sample_name": "091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "benchmark_index": 91,
          "sample_id": "ArtVIP/small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "source_dataset": "ArtVIP",
          "category": "small_furniture",
          "object_id": "small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "official_pact",
          "variant_label": "Official PAct",
          "variant_note": "Released PAct cache, no OT wrapper.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/official_pact/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1@091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.8166015392950534,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.1833984607049466,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.6674637469840766,
                  "limit_error": 95.92506854136917,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 81.66015392950534,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 44.47265588360611,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/official_pact/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/source_textured.glb",
            "gt_parts_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/gt_parts.glb",
            "pact_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/official_pact/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上表现的简短测评和问题发现：\n\n1.  **几何完整性差，part分解不合理：** 生成的三维模型几何形状严重扭曲，与原始图像中的床头柜差异巨大。part分解虽然数量正确（GT parts=2，part_count_mae=0），但分解方式不合理，一个part是扭曲的主体，另一个part是悬浮的方块，与实际物体结构不符。\n2.  **关节信息缺失，运动不可行：** joint_f1=0.000表明PAct未能识别出任何关节，导致无法判断运动类型和可行性。在GT中有一个可动部件，但PAct未能捕捉到这一关键信息。\n3.  **对2D分割的依赖性暴露：** 生成的3D模型形状和part分解似乎直接受到了2D part mask的强烈影响，特别是蓝色部分和红色部分在3D中也呈现出类似的块状和不规则边缘，这表明模型可能过度依赖2D分割信息，未能很好地推断出合理的3D几何和结构。\n4.  **PAct score较低，反映整体性能不佳：** PAct weighted_score=44.47，相对较低，印证了上述几何、part分解和关节识别方面的不足，表明PAct在该样本上生成三维铰链物体的效果不理想。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上表现的简短测评和问题发现：\n\n1.  **几何完整性差，part分解不合理：** 生成的三维模型几何形状严重扭曲，与原始图像中的床头柜差异巨大。part分解虽然数量正确（GT parts=2，part_count_mae=0），但分解方式不合理，一个part是扭曲的主体，另一个part是悬浮的方块，与实际物体结构不符。\n2.  **关节信息缺失，运动不可行：** joint_f1=0.000表明PAct未能识别出任何关节，导致无法判断运动类型和可行性。在GT中有一个可动部件，但PAct未能捕捉到这一关键信息。\n3.  **对2D分割的依赖性暴露：** 生成的3D模型形状和part分解似乎直接受到了2D part mask的强烈影响，特别是蓝色部分和红色部分在3D中也呈现出类似的块状和不规则边缘，这表明模型可能过度依赖2D分割信息，未能很好地推断出合理的3D几何和结构。\n4.  **PAct score较低，反映整体性能不佳：** PAct weighted_score=44.47，相对较低，印证了上述几何、part分解和关节识别方面的不足，表明PAct在该样本上生成三维铰链物体的效果不理想。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 305,
                "totalTokenCount": 737,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "UWoPaqjlJfHoz7IP5NvmgQM"
            }
          }
        }
      ],
      "aggregate": {
        "mean_weighted_score": 50.34792599677,
        "mean_joint_f1": 0.2,
        "mean_part_count_mae": 0.0,
        "success_rate": 1.0
      },
      "diagnostics": null
    },
    {
      "variant": {
        "name": "ot_first",
        "label": "OT first",
        "kind": "ot",
        "ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_ot_first/ckpts/model_step0000060.pt",
        "wrapper": [
          "--ot-block-selector",
          "first",
          "--ot-sinkhorn-iters",
          "10"
        ],
        "note": "One Stage1 cross-attention block with OT routing."
      },
      "records": [
        {
          "sample_name": "029_GAPartNet_storage_storage_100671",
          "benchmark_index": 29,
          "sample_id": "GAPartNet/storage/100671",
          "source_dataset": "GAPartNet",
          "category": "storage",
          "object_id": "storage/100671",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "ot_first",
          "variant_label": "OT first",
          "variant_note": "One Stage1 cross-attention block with OT routing.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/ot_first/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/029_GAPartNet_storage_storage_100671@029_GAPartNet_storage_storage_100671_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.682114390338842,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.317885609661158,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.6201573483939512,
                  "limit_error": 65.21767084604511,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 68.2114390338842,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 42.34917458429751,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/ot_first/029_GAPartNet_storage_storage_100671.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/source_textured.glb",
            "gt_parts_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/gt_parts.glb",
            "pact_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/ot_first/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** 生成的三维物体在几何上与输入图像一致，且part分解（两个部分）与GT parts数量匹配。\n2.  **关节识别失败：** `joint_f1=0.000` 表明模型未能识别出任何关节，尽管GT movable为1，这严重影响了运动可行性。\n3.  **运动可行性缺失：** 由于未识别出关节，该模型无法实现任何运动，与实际的存储箱盖子可移动的特性不符。\n4.  **对2D分割的依赖性：** 尽管part分解正确，但未能推断出part之间的铰链关系，这可能表明模型在从2D分割信息中提取3D关节语义方面存在局限性。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** 生成的三维物体在几何上与输入图像一致，且part分解（两个部分）与GT parts数量匹配。\n2.  **关节识别失败：** `joint_f1=0.000` 表明模型未能识别出任何关节，尽管GT movable为1，这严重影响了运动可行性。\n3.  **运动可行性缺失：** 由于未识别出关节，该模型无法实现任何运动，与实际的存储箱盖子可移动的特性不符。\n4.  **对2D分割的依赖性：** 尽管part分解正确，但未能推断出part之间的铰链关系，这可能表明模型在从2D分割信息中提取3D关节语义方面存在局限性。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 413,
                "candidatesTokenCount": 191,
                "totalTokenCount": 604,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 155
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "VWoPap_KL4DRz7IP5Y_t6Ag"
            }
          }
        },
        {
          "sample_name": "060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135",
          "benchmark_index": 60,
          "sample_id": "PartNetMobility/architectural_fixtures/3135",
          "source_dataset": "PartNetMobility",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/3135",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "ot_first",
          "variant_label": "OT first",
          "variant_note": "One Stage1 cross-attention block with OT routing.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/ot_first/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135@060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7157722150839031,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.2842277849160969,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.5632797232662299,
                  "limit_error": 61.259005860486305,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 71.57722150839031,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 42.880613922377414,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/ot_first/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/source_textured.glb",
            "gt_parts_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/gt_parts.glb",
            "pact_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/ot_first/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解问题：** PAct生成的2D part mask（右图）与原始输入（左图）在几何形状和part分解上存在显著差异。原始输入是一个带有多个独立小格子的木质托盘，其中一个格子是可移动的。然而，PAct的mask将其简化为两个大的、不规则的几何体，完全丢失了原始物体的细节和结构。\n2.  **关节数量/类型与运动可行性缺失：** 尽管GT显示有1个可移动部件，但PAct的`joint_f1`为0.000，表明它未能识别出任何关节或可移动部件。其简化的2D mask也无法支持原始物体中存在的铰链运动。\n3.  **对2D分割的依赖暴露：** PAct的输出似乎过于依赖2D分割的简化表示，导致其无法从单视图输入中推断出复杂的三维结构和潜在的运动机制。2D mask的粗糙度直接影响了后续的三维重建和关节识别。\n4.  **Part计数准确但无意义：** `part_count_mae=0`表明PAct正确识别了2个部件（与GT一致），但考虑到其对部件形状和分解的严重简化，这个准确性在功能上是无意义的，因为它未能捕捉到部件的实际语义和运动潜力。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解问题：** PAct生成的2D part mask（右图）与原始输入（左图）在几何形状和part分解上存在显著差异。原始输入是一个带有多个独立小格子的木质托盘，其中一个格子是可移动的。然而，PAct的mask将其简化为两个大的、不规则的几何体，完全丢失了原始物体的细节和结构。\n2.  **关节数量/类型与运动可行性缺失：** 尽管GT显示有1个可移动部件，但PAct的`joint_f1`为0.000，表明它未能识别出任何关节或可移动部件。其简化的2D mask也无法支持原始物体中存在的铰链运动。\n3.  **对2D分割的依赖暴露：** PAct的输出似乎过于依赖2D分割的简化表示，导致其无法从单视图输入中推断出复杂的三维结构和潜在的运动机制。2D mask的粗糙度直接影响了后续的三维重建和关节识别。\n4.  **Part计数准确但无意义：** `part_count_mae=0`表明PAct正确识别了2个部件（与GT一致），但考虑到其对部件形状和分解的严重简化，这个准确性在功能上是无意义的，因为它未能捕捉到部件的实际语义和运动潜力。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 319,
                "totalTokenCount": 738,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "WGoPatGxHLGcz7IPqOHK4QE"
            }
          }
        },
        {
          "sample_name": "062_PartNetMobility_small_appliances_small_appliances_1436",
          "benchmark_index": 62,
          "sample_id": "PartNetMobility/small_appliances/1436",
          "source_dataset": "PartNetMobility",
          "category": "small_appliances",
          "object_id": "small_appliances/1436",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "ot_first",
          "variant_label": "OT first",
          "variant_note": "One Stage1 cross-attention block with OT routing.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/ot_first/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/062_PartNetMobility_small_appliances_small_appliances_1436@062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.5562803955925684,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.44371960440743163,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 1.0,
                  "axis_error_deg": 29.802249340476283,
                  "origin_error": 0.0,
                  "limit_error": 3.2465559934452077,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 55.628039559256834,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 40.36232203567213,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/ot_first/062_PartNetMobility_small_appliances_small_appliances_1436.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/source_textured.glb",
            "gt_parts_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/gt_parts.glb",
            "pact_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/ot_first/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct生成的几何体与输入图像基本一致，但Part分解存在问题。GT有2个Part（主体和可动部分），但PAct将所有叶片视为一个Part，且未识别出可动性。\n2.  **关节数量/类型与运动可行性：** PAct的`joint_f1=0.000`表明模型未能识别出任何关节，因此无法推断出运动可行性。这与GT中存在一个可动部件（风扇叶片）的情况不符。\n3.  **对2D分割的依赖：** 2D part mask将中心圆盘和四个叶片分别标记为不同的颜色，暗示了它们是不同的部件。然而，PAct未能正确利用这些信息来推断出叶片的可动性，反而将它们视为一个整体。\n4.  **潜在问题：** 模型可能在处理多个相同或相似部件（如风扇叶片）的独立可动性时存在困难，或者未能将2D分割的语义信息（不同颜色代表不同部件）有效地映射到3D关节的推断上。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct生成的几何体与输入图像基本一致，但Part分解存在问题。GT有2个Part（主体和可动部分），但PAct将所有叶片视为一个Part，且未识别出可动性。\n2.  **关节数量/类型与运动可行性：** PAct的`joint_f1=0.000`表明模型未能识别出任何关节，因此无法推断出运动可行性。这与GT中存在一个可动部件（风扇叶片）的情况不符。\n3.  **对2D分割的依赖：** 2D part mask将中心圆盘和四个叶片分别标记为不同的颜色，暗示了它们是不同的部件。然而，PAct未能正确利用这些信息来推断出叶片的可动性，反而将它们视为一个整体。\n4.  **潜在问题：** 模型可能在处理多个相同或相似部件（如风扇叶片）的独立可动性时存在困难，或者未能将2D分割的语义信息（不同颜色代表不同部件）有效地映射到3D关节的推断上。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 267,
                "totalTokenCount": 686,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "W2oPatzqKLrgz7IPvtaK4Aw"
            }
          }
        },
        {
          "sample_name": "074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712",
          "benchmark_index": 74,
          "sample_id": "GRScenes/architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "source_dataset": "GRScenes",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "ot_first",
          "variant_label": "OT first",
          "variant_note": "One Stage1 cross-attention block with OT routing.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/ot_first/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712@074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.5423082683010136,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.45769173169898636,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.8876403875747217,
                  "limit_error": 62.08031514283025,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 54.230826830101364,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 40.14170949948969,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/ot_first/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/source_textured.glb",
            "gt_parts_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/gt_parts.glb",
            "pact_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/ot_first/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地将门分解为两个部分（门框和门板），与GT parts数量一致（part_count_mae=0），且几何形状保持完整。\n2.  **关节识别失败：** joint_f1=0.000表明PAct未能识别出任何关节，这意味着它无法推断出门板是可移动的，也无法确定其铰链类型和位置。\n3.  **运动可行性缺失：** 由于未能识别关节，模型无法生成具有运动可行性的三维铰链物体。\n4.  **对2D分割的依赖未完全体现：** 尽管2D part mask提供了清晰的门框和门板分割，PAct仍未能利用此信息推断出铰链关系，这可能表明其在从2D分割到3D关节推理的环节存在不足。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地将门分解为两个部分（门框和门板），与GT parts数量一致（part_count_mae=0），且几何形状保持完整。\n2.  **关节识别失败：** joint_f1=0.000表明PAct未能识别出任何关节，这意味着它无法推断出门板是可移动的，也无法确定其铰链类型和位置。\n3.  **运动可行性缺失：** 由于未能识别关节，模型无法生成具有运动可行性的三维铰链物体。\n4.  **对2D分割的依赖未完全体现：** 尽管2D part mask提供了清晰的门框和门板分割，PAct仍未能利用此信息推断出铰链关系，这可能表明其在从2D分割到3D关节推理的环节存在不足。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 210,
                "totalTokenCount": 642,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "X2oPaq2ME_WJz7IPnIq4sAI"
            }
          }
        },
        {
          "sample_name": "091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "benchmark_index": 91,
          "sample_id": "ArtVIP/small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "source_dataset": "ArtVIP",
          "category": "small_furniture",
          "object_id": "small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "ot_first",
          "variant_label": "OT first",
          "variant_note": "One Stage1 cross-attention block with OT routing.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/ot_first/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1@091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.8154719402725599,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.18452805972744013,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.6661007378381951,
                  "limit_error": 84.97222582896683,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 81.54719402725598,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 44.45482010956673,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/ot_first/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/source_textured.glb",
            "gt_parts_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/gt_parts.glb",
            "pact_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/ot_first/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性差，part分解不准确：** 生成的三维模型几何形状扭曲，与原始图像差异大，特别是床头柜主体部分。part分解虽然数量正确（GT parts=2），但分解出的两个part在几何上不合理，无法对应实际物体部件。\n2.  **关节信息缺失，运动不可行：** joint_f1=0.000表明PAct未能识别或生成任何关节。这导致模型无法表现出GT中指示的1个可动部件的运动能力，运动可行性为零。\n3.  **对2D分割的依赖性暴露：** 生成的三维模型在形状上似乎直接受到2D part mask的强烈影响，尤其是蓝色部分呈现出与mask相似的扁平、不规则的轮廓，缺乏三维深度和结构。\n4.  **PAct score较低，性能不佳：** PAct weighted_score=44.45，表明PAct在该样本上的整体表现不佳，未能有效生成高质量的三维铰链物体。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性差，part分解不准确：** 生成的三维模型几何形状扭曲，与原始图像差异大，特别是床头柜主体部分。part分解虽然数量正确（GT parts=2），但分解出的两个part在几何上不合理，无法对应实际物体部件。\n2.  **关节信息缺失，运动不可行：** joint_f1=0.000表明PAct未能识别或生成任何关节。这导致模型无法表现出GT中指示的1个可动部件的运动能力，运动可行性为零。\n3.  **对2D分割的依赖性暴露：** 生成的三维模型在形状上似乎直接受到2D part mask的强烈影响，尤其是蓝色部分呈现出与mask相似的扁平、不规则的轮廓，缺乏三维深度和结构。\n4.  **PAct score较低，性能不佳：** PAct weighted_score=44.45，表明PAct在该样本上的整体表现不佳，未能有效生成高质量的三维铰链物体。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 245,
                "totalTokenCount": 677,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "YmoPauyWJpKEz7IP3urOsQs"
            }
          }
        }
      ],
      "aggregate": {
        "mean_weighted_score": 42.03772803028069,
        "mean_joint_f1": 0.0,
        "mean_part_count_mae": 0.0,
        "success_rate": 1.0
      },
      "diagnostics": {
        "wrapper_args": {
          "pact_root": "/data/250010098/PAct",
          "ot_stage1_ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_ot_first/ckpts/model_step0000060.pt",
          "ot_block_selector": "first",
          "ot_sinkhorn_iters": 10,
          "ot_epsilon": 0.1,
          "ot_gate_lambda": 2.5,
          "ot_gate_floor": 0.02,
          "ot_mask_prior_beta": 0.0,
          "ot_edge_lambda": 0.0,
          "ot_edge_gamma": 8.0,
          "ot_edge_source": "mask",
          "ot_virtual_tokens": 0,
          "ot_virtual_mass": 0.0,
          "ot_detach_plan": false,
          "ot_diagnostics_path": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/ot_first/ot_diagnostics.json"
        },
        "pipelines": [
          {
            "ot_modules_active": 1.0,
            "ot_edge_delta": 0.0,
            "ot_edge_gamma": 8.0,
            "ot_edge_lambda": 0.0,
            "ot_edge_source_rgb": 0.0,
            "ot_gate_max": 1.0,
            "ot_gate_mean": 0.9912109375,
            "ot_gate_min": 0.982421875,
            "ot_mask_prior_beta": 0.0,
            "ot_plan_mass": 1.0,
            "ot_virtual_mass": 0.0,
            "ot_virtual_tokens": 0.0
          }
        ]
      }
    },
    {
      "variant": {
        "name": "mask_prior",
        "label": "Mask prior",
        "kind": "ot",
        "ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_mask_prior/ckpts/model_step0000060.pt",
        "wrapper": [
          "--ot-block-selector",
          "first",
          "--ot-sinkhorn-iters",
          "10",
          "--ot-mask-prior-beta",
          "0.2"
        ],
        "note": "2D mask labels as a soft OT cost prior."
      },
      "records": [
        {
          "sample_name": "029_GAPartNet_storage_storage_100671",
          "benchmark_index": 29,
          "sample_id": "GAPartNet/storage/100671",
          "source_dataset": "GAPartNet",
          "category": "storage",
          "object_id": "storage/100671",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "mask_prior",
          "variant_label": "Mask prior",
          "variant_note": "2D mask labels as a soft OT cost prior.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/mask_prior/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/029_GAPartNet_storage_storage_100671@029_GAPartNet_storage_storage_100671_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.684208370775989,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.31579162922401105,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.6000247728616891,
                  "limit_error": 32.137175011694524,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 68.42083707759889,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 42.38223743330509,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/mask_prior/029_GAPartNet_storage_storage_100671.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/source_textured.glb",
            "gt_parts_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/gt_parts.glb",
            "pact_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/mask_prior/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对 PAct 在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与 Part 分解良好：** 生成的三维模型在视觉上与输入图像一致，且部件分解（盖子和主体）与2D part mask完全匹配，GT parts=2，PAct part_count_mae=0，表现出色。\n2.  **关节识别与运动可行性存在问题：** PAct 未能识别出任何关节（joint_f1=0.000），尽管GT movable=1，表明该物体应有一个可移动部件。这导致运动可行性为零。\n3.  **对2D分割的依赖性：** 模型严格遵循2D part mask进行部件分割，但未能从几何结构推断出部件间的铰链关系，这暴露出其对2D分割的依赖，而缺乏对三维结构和功能性的理解。\n4.  **PAct score偏低：** 尽管部件计数准确，但由于未能识别关节，PAct weighted_score仅为42.38，远低于理想值，表明在理解物体铰链特性方面存在显著不足。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对 PAct 在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与 Part 分解良好：** 生成的三维模型在视觉上与输入图像一致，且部件分解（盖子和主体）与2D part mask完全匹配，GT parts=2，PAct part_count_mae=0，表现出色。\n2.  **关节识别与运动可行性存在问题：** PAct 未能识别出任何关节（joint_f1=0.000），尽管GT movable=1，表明该物体应有一个可移动部件。这导致运动可行性为零。\n3.  **对2D分割的依赖性：** 模型严格遵循2D part mask进行部件分割，但未能从几何结构推断出部件间的铰链关系，这暴露出其对2D分割的依赖，而缺乏对三维结构和功能性的理解。\n4.  **PAct score偏低：** 尽管部件计数准确，但由于未能识别关节，PAct weighted_score仅为42.38，远低于理想值，表明在理解物体铰链特性方面存在显著不足。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 413,
                "candidatesTokenCount": 250,
                "totalTokenCount": 663,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 155
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "ZWoPaoayKoDRz7IP5Y_t6Ag"
            }
          }
        },
        {
          "sample_name": "060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135",
          "benchmark_index": 60,
          "sample_id": "PartNetMobility/architectural_fixtures/3135",
          "source_dataset": "PartNetMobility",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/3135",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "mask_prior",
          "variant_label": "Mask prior",
          "variant_note": "2D mask labels as a soft OT cost prior.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/mask_prior/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135@060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7295181753497114,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.2704818246502886,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 1.0,
                  "axis_error_deg": 89.60348219256623,
                  "origin_error": 0.0,
                  "limit_error": 1.9877029220249987,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 72.95181753497114,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 43.0976554002586,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/mask_prior/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/source_textured.glb",
            "gt_parts_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/gt_parts.glb",
            "pact_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/mask_prior/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解不准确：** PAct生成的2D part mask（右图）与原始输入（左图）的几何形状和part分解存在显著差异。原始输入是一个带有多个可移动盖子的盒子，而PAct的mask仅识别出两个矩形part，且其中一个part的形状与原始输入中的任何一个盖子都不完全匹配。\n2.  **关节数量/类型与运动可行性缺失：** GT显示有2个part和1个可移动部件，但PAct的joint_f1为0.000，表明未能识别出任何关节。这意味着模型无法推断出该物体具有可移动部件，也无法识别出其运动类型（例如，平移或旋转）。\n3.  **对2D分割的依赖导致信息丢失：** PAct的输出严重依赖于2D part mask，但这个mask未能准确捕捉原始输入中所有独立的、可移动的部件。原始输入中至少有三个独立的盖子，但mask只显示了两个大块，且其中一个盖子被错误地表示为与盒子主体相连。\n4.  **模型未能理解复杂结构：** 对于这种包含多个相似但独立的铰链部件的物体，PAct未能有效理解其结构和功能，导致part分解、关节识别和运动可行性评估均失败。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解不准确：** PAct生成的2D part mask（右图）与原始输入（左图）的几何形状和part分解存在显著差异。原始输入是一个带有多个可移动盖子的盒子，而PAct的mask仅识别出两个矩形part，且其中一个part的形状与原始输入中的任何一个盖子都不完全匹配。\n2.  **关节数量/类型与运动可行性缺失：** GT显示有2个part和1个可移动部件，但PAct的joint_f1为0.000，表明未能识别出任何关节。这意味着模型无法推断出该物体具有可移动部件，也无法识别出其运动类型（例如，平移或旋转）。\n3.  **对2D分割的依赖导致信息丢失：** PAct的输出严重依赖于2D part mask，但这个mask未能准确捕捉原始输入中所有独立的、可移动的部件。原始输入中至少有三个独立的盖子，但mask只显示了两个大块，且其中一个盖子被错误地表示为与盒子主体相连。\n4.  **模型未能理解复杂结构：** 对于这种包含多个相似但独立的铰链部件的物体，PAct未能有效理解其结构和功能，导致part分解、关节识别和运动可行性评估均失败。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 307,
                "totalTokenCount": 726,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "amoParGZGN6Iz7IP55Os2As"
            }
          }
        },
        {
          "sample_name": "062_PartNetMobility_small_appliances_small_appliances_1436",
          "benchmark_index": 62,
          "sample_id": "PartNetMobility/small_appliances/1436",
          "source_dataset": "PartNetMobility",
          "category": "small_appliances",
          "object_id": "small_appliances/1436",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "mask_prior",
          "variant_label": "Mask prior",
          "variant_note": "2D mask labels as a soft OT cost prior.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/mask_prior/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/062_PartNetMobility_small_appliances_small_appliances_1436@062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.5978071300603878,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.40219286993961223,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 1.0,
                  "axis_error_deg": 64.80782703725319,
                  "origin_error": 0.0,
                  "limit_error": 3.3379070480540296,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 59.78071300603878,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 41.01800731674297,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/mask_prior/062_PartNetMobility_small_appliances_small_appliances_1436.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/source_textured.glb",
            "gt_parts_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/gt_parts.glb",
            "pact_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/mask_prior/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对 PAct 在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与 Part 分解：** PAct 成功地将物体分解为两个部分（中心圆盘和四个叶片），与 GT parts 数量一致 (part_count_mae=0)。几何形状也基本完整，与输入图像吻合。\n2.  **关节数量/类型与运动可行性：** PAct 未能识别出任何关节 (joint_f1=0.000)，这表明它未能理解该物体（风扇叶片）的可动性，尽管 GT movable=1。\n3.  **对 2D 分割的依赖：** 模型的输出似乎直接反映了 2D part mask 的分割结果，但未能从这些分割中推断出 3D 关节信息和运动属性。\n4.  **PAct score 较低：** 41.02 的加权分数相对较低，主要原因可能是未能识别出任何关节，这严重影响了运动可行性评估。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对 PAct 在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与 Part 分解：** PAct 成功地将物体分解为两个部分（中心圆盘和四个叶片），与 GT parts 数量一致 (part_count_mae=0)。几何形状也基本完整，与输入图像吻合。\n2.  **关节数量/类型与运动可行性：** PAct 未能识别出任何关节 (joint_f1=0.000)，这表明它未能理解该物体（风扇叶片）的可动性，尽管 GT movable=1。\n3.  **对 2D 分割的依赖：** 模型的输出似乎直接反映了 2D part mask 的分割结果，但未能从这些分割中推断出 3D 关节信息和运动属性。\n4.  **PAct score 较低：** 41.02 的加权分数相对较低，主要原因可能是未能识别出任何关节，这严重影响了运动可行性评估。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 227,
                "totalTokenCount": 646,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "bmoPau2dAaesz7IPxdi0mQo"
            }
          }
        },
        {
          "sample_name": "074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712",
          "benchmark_index": 74,
          "sample_id": "GRScenes/architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "source_dataset": "GRScenes",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "mask_prior",
          "variant_label": "Mask prior",
          "variant_note": "2D mask labels as a soft OT cost prior.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/mask_prior/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712@074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.6436175816882084,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.3563824183117916,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 1.0097565064092713,
                  "limit_error": 81.16983464356268,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 64.36175816882084,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 41.74133023718224,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/mask_prior/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/source_textured.glb",
            "gt_parts_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/gt_parts.glb",
            "pact_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/mask_prior/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **Part分解准确，但关节识别失败：** `part_count_mae=0` 表明PAct正确识别了2个部件（门框和门扇），与GT一致。然而，`joint_f1=0.000` 严重表明模型未能识别出任何关节，导致无法生成可动的铰链物体。\n2.  **运动可行性缺失：** 由于未能识别关节，模型无法赋予门扇正确的铰链运动能力，这直接影响了生成三维铰链物体的核心目标。\n3.  **几何完整性可能受限：** 尽管2D part mask看起来合理，但缺乏关节信息意味着生成的3D模型可能只是两个独立的静态部件，而非一个功能完整的门。\n4.  **对2D分割的依赖性：** 2D part mask清晰地将门框和门扇分开，PAct成功利用了这一信息进行part分解。然而，模型似乎未能从2D输入中推断出这些部件之间的铰链关系，这暴露了其在从2D信息中理解复杂关节类型方面的局限性。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **Part分解准确，但关节识别失败：** `part_count_mae=0` 表明PAct正确识别了2个部件（门框和门扇），与GT一致。然而，`joint_f1=0.000` 严重表明模型未能识别出任何关节，导致无法生成可动的铰链物体。\n2.  **运动可行性缺失：** 由于未能识别关节，模型无法赋予门扇正确的铰链运动能力，这直接影响了生成三维铰链物体的核心目标。\n3.  **几何完整性可能受限：** 尽管2D part mask看起来合理，但缺乏关节信息意味着生成的3D模型可能只是两个独立的静态部件，而非一个功能完整的门。\n4.  **对2D分割的依赖性：** 2D part mask清晰地将门框和门扇分开，PAct成功利用了这一信息进行part分解。然而，模型似乎未能从2D输入中推断出这些部件之间的铰链关系，这暴露了其在从2D信息中理解复杂关节类型方面的局限性。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 257,
                "totalTokenCount": 689,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "cmoPaqPzD6Thz7IP2dCDQQ"
            }
          }
        },
        {
          "sample_name": "091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "benchmark_index": 91,
          "sample_id": "ArtVIP/small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "source_dataset": "ArtVIP",
          "category": "small_furniture",
          "object_id": "small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "mask_prior",
          "variant_label": "Mask prior",
          "variant_note": "2D mask labels as a soft OT cost prior.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/mask_prior/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1@091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7949710799594829,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.2050289200405171,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.30623511973105944,
                  "limit_error": 38.42558987537888,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 79.49710799594828,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 44.13112231514973,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/mask_prior/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/source_textured.glb",
            "gt_parts_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/gt_parts.glb",
            "pact_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/mask_prior/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性差，对2D分割依赖明显：** 生成的三维模型几何形状扭曲，特别是主体部分，与原始物体差异巨大。这强烈暴露出对2D分割的依赖，模型似乎只是将2D mask拉伸成3D，而没有理解物体的真实几何结构。\n2.  **Part分解与GT一致，但运动可行性存疑：** `part_count_mae=0` 表明part数量与GT一致 (2个)，但由于几何形状的严重扭曲，即使分解正确，其运动可行性也极低，无法模拟抽屉的正常滑动。\n3.  **关节识别完全失败：** `joint_f1=0.000` 表明模型未能识别出任何正确的关节，这与GT中存在一个可移动部件（抽屉）相矛盾。\n4.  **PAct score低，反映整体性能不佳：** 44.13的PAct weighted_score较低，综合反映了模型在几何、part分解和关节识别方面的不足。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性差，对2D分割依赖明显：** 生成的三维模型几何形状扭曲，特别是主体部分，与原始物体差异巨大。这强烈暴露出对2D分割的依赖，模型似乎只是将2D mask拉伸成3D，而没有理解物体的真实几何结构。\n2.  **Part分解与GT一致，但运动可行性存疑：** `part_count_mae=0` 表明part数量与GT一致 (2个)，但由于几何形状的严重扭曲，即使分解正确，其运动可行性也极低，无法模拟抽屉的正常滑动。\n3.  **关节识别完全失败：** `joint_f1=0.000` 表明模型未能识别出任何正确的关节，这与GT中存在一个可移动部件（抽屉）相矛盾。\n4.  **PAct score低，反映整体性能不佳：** 44.13的PAct weighted_score较低，综合反映了模型在几何、part分解和关节识别方面的不足。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 247,
                "totalTokenCount": 679,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "dmoPaqPzMOnpz7IPyvuy8Ao"
            }
          }
        }
      ],
      "aggregate": {
        "mean_weighted_score": 42.47407054052773,
        "mean_joint_f1": 0.0,
        "mean_part_count_mae": 0.0,
        "success_rate": 1.0
      },
      "diagnostics": {
        "wrapper_args": {
          "pact_root": "/data/250010098/PAct",
          "ot_stage1_ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_mask_prior/ckpts/model_step0000060.pt",
          "ot_block_selector": "first",
          "ot_sinkhorn_iters": 10,
          "ot_epsilon": 0.1,
          "ot_gate_lambda": 2.5,
          "ot_gate_floor": 0.02,
          "ot_mask_prior_beta": 0.2,
          "ot_edge_lambda": 0.0,
          "ot_edge_gamma": 8.0,
          "ot_edge_source": "mask",
          "ot_virtual_tokens": 0,
          "ot_virtual_mass": 0.0,
          "ot_detach_plan": false,
          "ot_diagnostics_path": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/mask_prior/ot_diagnostics.json"
        },
        "pipelines": [
          {
            "ot_modules_active": 1.0,
            "ot_edge_delta": 0.0,
            "ot_edge_gamma": 8.0,
            "ot_edge_lambda": 0.0,
            "ot_edge_source_rgb": 0.0,
            "ot_gate_max": 1.0,
            "ot_gate_mean": 0.35107421875,
            "ot_gate_min": 0.02374267578125,
            "ot_mask_prior_beta": 0.2,
            "ot_plan_mass": 1.0,
            "ot_virtual_mass": 0.0,
            "ot_virtual_tokens": 0.0
          }
        ]
      }
    },
    {
      "variant": {
        "name": "rgb_edge",
        "label": "RGB edge",
        "kind": "ot",
        "ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_rgb_edge/ckpts/model_step0000060.pt",
        "wrapper": [
          "--ot-block-selector",
          "first",
          "--ot-sinkhorn-iters",
          "10",
          "--ot-mask-prior-beta",
          "0.2",
          "--ot-edge-source",
          "rgb",
          "--ot-edge-lambda",
          "0.4"
        ],
        "note": "Mask prior plus RGB-edge regularized OT cost."
      },
      "records": [
        {
          "sample_name": "029_GAPartNet_storage_storage_100671",
          "benchmark_index": 29,
          "sample_id": "GAPartNet/storage/100671",
          "source_dataset": "GAPartNet",
          "category": "storage",
          "object_id": "storage/100671",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "rgb_edge",
          "variant_label": "RGB edge",
          "variant_note": "Mask prior plus RGB-edge regularized OT cost.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/rgb_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/029_GAPartNet_storage_storage_100671@029_GAPartNet_storage_storage_100671_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.6843932345934258,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.3156067654065742,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.6003453749483763,
                  "limit_error": 33.257042336523625,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 68.43932345934259,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 42.38515633568567,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/rgb_edge/029_GAPartNet_storage_storage_100671.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/source_textured.glb",
            "gt_parts_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/gt_parts.glb",
            "pact_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/rgb_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct生成的3D模型在几何上与2D输入图像高度一致，并且成功地将物体分解为两个部分（GT parts=2，part_count_mae=0），与真实情况相符。\n2.  **关节识别与运动可行性存在问题：** 尽管物体被正确分解，但PAct未能识别出任何关节（joint_f1=0.000），导致无法推断出部件的运动可行性（GT movable=1）。这表明模型在理解部件间的连接关系和潜在运动方面存在不足。\n3.  **对2D分割的依赖性：** PAct的输出似乎直接反映了2D part mask的分割结果，但未能从这些2D信息中进一步推断出3D的铰链结构和运动属性，这可能暴露出其对2D输入的过度依赖而缺乏深层3D理解。\n4.  **PAct score较低：** 42.39的加权分数相对较低，主要原因可能在于未能识别出关节，这严重影响了模型的整体性能评估。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct生成的3D模型在几何上与2D输入图像高度一致，并且成功地将物体分解为两个部分（GT parts=2，part_count_mae=0），与真实情况相符。\n2.  **关节识别与运动可行性存在问题：** 尽管物体被正确分解，但PAct未能识别出任何关节（joint_f1=0.000），导致无法推断出部件的运动可行性（GT movable=1）。这表明模型在理解部件间的连接关系和潜在运动方面存在不足。\n3.  **对2D分割的依赖性：** PAct的输出似乎直接反映了2D part mask的分割结果，但未能从这些2D信息中进一步推断出3D的铰链结构和运动属性，这可能暴露出其对2D输入的过度依赖而缺乏深层3D理解。\n4.  **PAct score较低：** 42.39的加权分数相对较低，主要原因可能在于未能识别出关节，这严重影响了模型的整体性能评估。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 413,
                "candidatesTokenCount": 262,
                "totalTokenCount": 675,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 155
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "e2oPav20C-LVz7IP_YOAyA0"
            }
          }
        },
        {
          "sample_name": "060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135",
          "benchmark_index": 60,
          "sample_id": "PartNetMobility/architectural_fixtures/3135",
          "source_dataset": "PartNetMobility",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/3135",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "rgb_edge",
          "variant_label": "RGB edge",
          "variant_note": "Mask prior plus RGB-edge regularized OT cost.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/rgb_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135@060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7298299948546215,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.2701700051453785,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 1.0,
                  "axis_error_deg": 89.03723982915002,
                  "origin_error": 0.0,
                  "limit_error": 1.9503500322487688,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 72.98299948546216,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 43.102578866125604,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/rgb_edge/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/source_textured.glb",
            "gt_parts_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/gt_parts.glb",
            "pact_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/rgb_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解不准确：** PAct生成的2D part mask（右图）与原始输入（左图）的几何形状和part分解存在显著差异。原始输入是一个带有多个可移动盖子的盒子，而PAct的mask只识别出两个简单的矩形part，且其中一个part的形状与原始输入中的任何一个盖子都不匹配。\n2.  **关节数量/类型识别失败：** GT显示有2个part和1个可移动关节，但PAct的joint_f1为0.000，表明它完全未能识别出任何关节，也未能正确识别出可移动的part。\n3.  **运动可行性缺失：** 由于未能识别出正确的part分解和关节，PAct无法为这个物体生成任何有意义的运动。\n4.  **对2D分割的依赖导致误导：** PAct似乎过度依赖其生成的2D part mask，而这个mask本身就与原始物体的真实结构相去甚远。这暴露了模型在从单视图输入理解复杂几何和功能结构方面的局限性，特别是在2D分割结果不准确时，会直接导致后续3D生成和关节识别的失败。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解不准确：** PAct生成的2D part mask（右图）与原始输入（左图）的几何形状和part分解存在显著差异。原始输入是一个带有多个可移动盖子的盒子，而PAct的mask只识别出两个简单的矩形part，且其中一个part的形状与原始输入中的任何一个盖子都不匹配。\n2.  **关节数量/类型识别失败：** GT显示有2个part和1个可移动关节，但PAct的joint_f1为0.000，表明它完全未能识别出任何关节，也未能正确识别出可移动的part。\n3.  **运动可行性缺失：** 由于未能识别出正确的part分解和关节，PAct无法为这个物体生成任何有意义的运动。\n4.  **对2D分割的依赖导致误导：** PAct似乎过度依赖其生成的2D part mask，而这个mask本身就与原始物体的真实结构相去甚远。这暴露了模型在从单视图输入理解复杂几何和功能结构方面的局限性，特别是在2D分割结果不准确时，会直接导致后续3D生成和关节识别的失败。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 280,
                "totalTokenCount": 699,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "fWoPapPIOpGGz7IP1vbn2Ak"
            }
          }
        },
        {
          "sample_name": "062_PartNetMobility_small_appliances_small_appliances_1436",
          "benchmark_index": 62,
          "sample_id": "PartNetMobility/small_appliances/1436",
          "source_dataset": "PartNetMobility",
          "category": "small_appliances",
          "object_id": "small_appliances/1436",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "rgb_edge",
          "variant_label": "RGB edge",
          "variant_note": "Mask prior plus RGB-edge regularized OT cost.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/rgb_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/062_PartNetMobility_small_appliances_small_appliances_1436@062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.598237627533662,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.40176237246633795,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 1.0,
                  "axis_error_deg": 59.45485230957446,
                  "origin_error": 0.0,
                  "limit_error": 3.312092887349417,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 59.8237627533662,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 41.024804645268354,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/rgb_edge/062_PartNetMobility_small_appliances_small_appliances_1436.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/source_textured.glb",
            "gt_parts_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/gt_parts.glb",
            "pact_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/rgb_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct成功地将物体分解为两个部分（中心圆盘和四个叶片），与GT parts数量一致（part_count_mae=0）。几何形状与输入图像基本吻合。\n2.  **关节数量/类型与运动可行性：** PAct未能识别出任何关节（joint_f1=0.000），这表明它没有正确理解该物体（风扇叶片）的可动性。GT显示有一个可动部分，但PAct未能捕捉到这一点。\n3.  **对2D分割的依赖：** PAct的输出似乎直接反映了2D part mask的分割结果，将中心部分和叶片视为独立部件。然而，它未能从这些2D信息中推断出3D的铰链关系和运动属性。\n4.  **主要问题：** 最大的问题在于PAct完全无法识别出铰链关节，导致运动可行性为零，这严重影响了其生成“三维铰链物体”的能力。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct成功地将物体分解为两个部分（中心圆盘和四个叶片），与GT parts数量一致（part_count_mae=0）。几何形状与输入图像基本吻合。\n2.  **关节数量/类型与运动可行性：** PAct未能识别出任何关节（joint_f1=0.000），这表明它没有正确理解该物体（风扇叶片）的可动性。GT显示有一个可动部分，但PAct未能捕捉到这一点。\n3.  **对2D分割的依赖：** PAct的输出似乎直接反映了2D part mask的分割结果，将中心部分和叶片视为独立部件。然而，它未能从这些2D信息中推断出3D的铰链关系和运动属性。\n4.  **主要问题：** 最大的问题在于PAct完全无法识别出铰链关节，导致运动可行性为零，这严重影响了其生成“三维铰链物体”的能力。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 244,
                "totalTokenCount": 663,
                "cachedContentTokenCount": 213,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "cacheTokensDetails": [
                  {
                    "modality": "IMAGE",
                    "tokenCount": 131
                  },
                  {
                    "modality": "TEXT",
                    "tokenCount": 82
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "gGoPauSTOaesz7IPxdi0mQo"
            }
          }
        },
        {
          "sample_name": "074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712",
          "benchmark_index": 74,
          "sample_id": "GRScenes/architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "source_dataset": "GRScenes",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "rgb_edge",
          "variant_label": "RGB edge",
          "variant_note": "Mask prior plus RGB-edge regularized OT cost.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/rgb_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712@074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.6448594259626658,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.35514057403733423,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.9978376452971283,
                  "limit_error": 77.02650883789862,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 64.48594259626658,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 41.76093830467367,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/rgb_edge/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/source_textured.glb",
            "gt_parts_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/gt_parts.glb",
            "pact_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/rgb_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解尚可，但关节识别存在严重问题。** PAct正确识别了2个部件（part_count_mae=0），但joint_f1为0.000，表明未能识别出任何正确的关节，这严重影响了运动可行性。\n2.  **运动可行性缺失。** 由于未能识别出铰链关节，模型无法生成具有正确运动行为的三维门，这与“铰链物体”的任务目标相悖。\n3.  **对2D分割的依赖性暴露。** 2D part mask将门框和门板清晰地分开，模型也成功地将它们识别为两个部件。然而，仅凭2D分割无法推断出铰链关节的位置和类型，这表明PAct在从2D信息推断3D关节方面存在局限性。\n4.  **PAct score较低（41.8）。** 较低的得分进一步印证了模型在理解物体铰链特性方面的不足，尤其是在关节识别上的失败是主要原因。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解尚可，但关节识别存在严重问题。** PAct正确识别了2个部件（part_count_mae=0），但joint_f1为0.000，表明未能识别出任何正确的关节，这严重影响了运动可行性。\n2.  **运动可行性缺失。** 由于未能识别出铰链关节，模型无法生成具有正确运动行为的三维门，这与“铰链物体”的任务目标相悖。\n3.  **对2D分割的依赖性暴露。** 2D part mask将门框和门板清晰地分开，模型也成功地将它们识别为两个部件。然而，仅凭2D分割无法推断出铰链关节的位置和类型，这表明PAct在从2D信息推断3D关节方面存在局限性。\n4.  **PAct score较低（41.8）。** 较低的得分进一步印证了模型在理解物体铰链特性方面的不足，尤其是在关节识别上的失败是主要原因。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 247,
                "totalTokenCount": 679,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "hGoPao-qHP-Cz7IP87ueYQ"
            }
          }
        },
        {
          "sample_name": "091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "benchmark_index": 91,
          "sample_id": "ArtVIP/small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "source_dataset": "ArtVIP",
          "category": "small_furniture",
          "object_id": "small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "rgb_edge",
          "variant_label": "RGB edge",
          "variant_note": "Mask prior plus RGB-edge regularized OT cost.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/rgb_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1@091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.796645093679432,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.20335490632056796,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.3719852941982097,
                  "limit_error": 31.067599610486305,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 79.6645093679432,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 44.15755411072787,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/rgb_edge/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/source_textured.glb",
            "gt_parts_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/gt_parts.glb",
            "pact_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/rgb_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性差，对2D分割依赖明显：** 生成的三维模型几何形状扭曲，特别是床头柜主体部分呈现不规则的锥形，且底部有明显的拉伸，这与2D part mask中不规则的蓝色区域形状高度相关，暴露出对2D分割的过度依赖。\n2.  **Part分解不准确：** 虽然part数量与GT一致（2个），但分解出的part与实际物体结构不符。抽屉被识别为一个独立的part（红色），但床头柜主体（蓝色）包含了柜体和四条腿，这不符合实际的部件分解。\n3.  **关节数量/类型错误，运动不可行：** joint_f1为0.000表明未识别出任何正确的关节。GT显示有一个可移动部件，通常是抽屉。然而，PAct生成的模型中，抽屉（红色部分）与主体（蓝色部分）之间没有明确的铰链连接，且由于几何形状的扭曲，即使有连接，其运动可行性也极低。\n4.  **整体PAct score较低：** 44.16的加权分数反映了模型在几何、part分解和关节识别方面的综合表现不佳。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性差，对2D分割依赖明显：** 生成的三维模型几何形状扭曲，特别是床头柜主体部分呈现不规则的锥形，且底部有明显的拉伸，这与2D part mask中不规则的蓝色区域形状高度相关，暴露出对2D分割的过度依赖。\n2.  **Part分解不准确：** 虽然part数量与GT一致（2个），但分解出的part与实际物体结构不符。抽屉被识别为一个独立的part（红色），但床头柜主体（蓝色）包含了柜体和四条腿，这不符合实际的部件分解。\n3.  **关节数量/类型错误，运动不可行：** joint_f1为0.000表明未识别出任何正确的关节。GT显示有一个可移动部件，通常是抽屉。然而，PAct生成的模型中，抽屉（红色部分）与主体（蓝色部分）之间没有明确的铰链连接，且由于几何形状的扭曲，即使有连接，其运动可行性也极低。\n4.  **整体PAct score较低：** 44.16的加权分数反映了模型在几何、part分解和关节识别方面的综合表现不佳。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 286,
                "totalTokenCount": 718,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "h2oParW6KOLVz7IP_YOAyA0"
            }
          }
        }
      ],
      "aggregate": {
        "mean_weighted_score": 42.48620645249623,
        "mean_joint_f1": 0.0,
        "mean_part_count_mae": 0.0,
        "success_rate": 1.0
      },
      "diagnostics": {
        "wrapper_args": {
          "pact_root": "/data/250010098/PAct",
          "ot_stage1_ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_rgb_edge/ckpts/model_step0000060.pt",
          "ot_block_selector": "first",
          "ot_sinkhorn_iters": 10,
          "ot_epsilon": 0.1,
          "ot_gate_lambda": 2.5,
          "ot_gate_floor": 0.02,
          "ot_mask_prior_beta": 0.2,
          "ot_edge_lambda": 0.4,
          "ot_edge_gamma": 8.0,
          "ot_edge_source": "rgb",
          "ot_virtual_tokens": 0,
          "ot_virtual_mass": 0.0,
          "ot_detach_plan": false,
          "ot_diagnostics_path": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/rgb_edge/ot_diagnostics.json"
        },
        "pipelines": [
          {
            "ot_modules_active": 1.0,
            "ot_edge_delta": 0.0017859344370663166,
            "ot_edge_gamma": 8.0,
            "ot_edge_lambda": 0.4,
            "ot_edge_source_rgb": 1.0,
            "ot_gate_max": 1.0,
            "ot_gate_mean": 0.35107421875,
            "ot_gate_min": 0.02374267578125,
            "ot_mask_prior_beta": 0.2,
            "ot_plan_mass": 1.0,
            "ot_virtual_mass": 0.0,
            "ot_virtual_tokens": 0.0
          }
        ]
      }
    },
    {
      "variant": {
        "name": "virtual_patch",
        "label": "Virtual patch",
        "kind": "ot",
        "ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_virtual_patch/ckpts/model_step0000060.pt",
        "wrapper": [
          "--ot-block-selector",
          "first",
          "--ot-sinkhorn-iters",
          "10",
          "--ot-mask-prior-beta",
          "0.2",
          "--ot-edge-source",
          "rgb",
          "--ot-edge-lambda",
          "0.4",
          "--ot-virtual-tokens",
          "1",
          "--ot-virtual-mass",
          "0.05"
        ],
        "note": "RGB-edge route plus one virtual image token."
      },
      "records": [
        {
          "sample_name": "029_GAPartNet_storage_storage_100671",
          "benchmark_index": 29,
          "sample_id": "GAPartNet/storage/100671",
          "source_dataset": "GAPartNet",
          "category": "storage",
          "object_id": "storage/100671",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "virtual_patch",
          "variant_label": "Virtual patch",
          "variant_note": "RGB-edge route plus one virtual image token.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/virtual_patch/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/029_GAPartNet_storage_storage_100671@029_GAPartNet_storage_storage_100671_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.6838499593717708,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.31615004062822916,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.5994838437867884,
                  "limit_error": 31.00900309091816,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 68.38499593717708,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 42.37657830587007,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/virtual_patch/029_GAPartNet_storage_storage_100671.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/source_textured.glb",
            "gt_parts_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/gt_parts.glb",
            "pact_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/virtual_patch/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从单视图输入生成了具有良好几何形状的存储箱，并且part分解与2D mask一致，将箱体和盖子正确分离。\n2.  **关节识别与运动可行性存在问题：** 尽管GT显示有1个可移动部件，但PAct的`joint_f1`为0.000，表明未能识别出任何关节或关节类型不正确，导致运动可行性无法评估。\n3.  **对2D分割的依赖性可能导致关节信息缺失：** PAct似乎过度依赖2D part mask进行部件分割，但2D mask本身不包含关节信息，这可能是导致`joint_f1`为零的原因。模型需要更强的能力来推断部件间的连接关系和关节类型。\n4.  **PAct score与实际效果不符：** PAct weighted_score为42.38，但关键的关节识别（`joint_f1=0.000`）失败，这表明该分数可能未能充分反映模型在铰链物体生成方面的核心能力。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从单视图输入生成了具有良好几何形状的存储箱，并且part分解与2D mask一致，将箱体和盖子正确分离。\n2.  **关节识别与运动可行性存在问题：** 尽管GT显示有1个可移动部件，但PAct的`joint_f1`为0.000，表明未能识别出任何关节或关节类型不正确，导致运动可行性无法评估。\n3.  **对2D分割的依赖性可能导致关节信息缺失：** PAct似乎过度依赖2D part mask进行部件分割，但2D mask本身不包含关节信息，这可能是导致`joint_f1`为零的原因。模型需要更强的能力来推断部件间的连接关系和关节类型。\n4.  **PAct score与实际效果不符：** PAct weighted_score为42.38，但关键的关节识别（`joint_f1=0.000`）失败，这表明该分数可能未能充分反映模型在铰链物体生成方面的核心能力。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 413,
                "candidatesTokenCount": 264,
                "totalTokenCount": 677,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 155
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "imoPavCJNaThz7IP2dCDQQ"
            }
          }
        },
        {
          "sample_name": "060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135",
          "benchmark_index": 60,
          "sample_id": "PartNetMobility/architectural_fixtures/3135",
          "source_dataset": "PartNetMobility",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/3135",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "virtual_patch",
          "variant_label": "Virtual patch",
          "variant_note": "RGB-edge route plus one virtual image token.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/virtual_patch/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135@060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7295049867646604,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.27049501323533964,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 1.0,
                  "axis_error_deg": 89.94056386915388,
                  "origin_error": 0.0,
                  "limit_error": 1.9663434783604479,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 72.95049867646604,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 43.09744715944201,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/virtual_patch/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/source_textured.glb",
            "gt_parts_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/gt_parts.glb",
            "pact_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/virtual_patch/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解问题：** PAct生成的2D part mask（右图）与原始输入（左图）在几何形状和part分解上存在显著差异。原始输入是一个带有多个可移动小方块的托盘，而PAct的mask仅识别出两个part，且形状与实际物体不符。\n2.  **关节数量/类型与运动可行性：** PAct的`joint_f1=0.000`表明模型未能识别出任何正确的关节。考虑到原始物体有多个可移动部件，PAct未能捕捉到其铰链特性，导致运动可行性评估失败。\n3.  **对2D分割的依赖暴露：** PAct的输出严重依赖于其生成的2D part mask。由于2D mask未能准确地分割出原始物体的所有可动部件，导致后续的三维铰链物体生成也无法正确反映原始物体的结构和运动能力。\n4.  **Part计数不准确：** 尽管`part_count_mae=0`，但这是因为GT parts=2，而PAct也识别出2个part。然而，PAct识别的这两个part与GT的实际part（多个小方块和托盘）在语义和几何上完全不匹配，这表明MAE指标在此处具有误导性。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解问题：** PAct生成的2D part mask（右图）与原始输入（左图）在几何形状和part分解上存在显著差异。原始输入是一个带有多个可移动小方块的托盘，而PAct的mask仅识别出两个part，且形状与实际物体不符。\n2.  **关节数量/类型与运动可行性：** PAct的`joint_f1=0.000`表明模型未能识别出任何正确的关节。考虑到原始物体有多个可移动部件，PAct未能捕捉到其铰链特性，导致运动可行性评估失败。\n3.  **对2D分割的依赖暴露：** PAct的输出严重依赖于其生成的2D part mask。由于2D mask未能准确地分割出原始物体的所有可动部件，导致后续的三维铰链物体生成也无法正确反映原始物体的结构和运动能力。\n4.  **Part计数不准确：** 尽管`part_count_mae=0`，但这是因为GT parts=2，而PAct也识别出2个part。然而，PAct识别的这两个part与GT的实际part（多个小方块和托盘）在语义和几何上完全不匹配，这表明MAE指标在此处具有误导性。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 305,
                "totalTokenCount": 724,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "jWoPatuYOLWtz7IPiLzP6Qo"
            }
          }
        },
        {
          "sample_name": "062_PartNetMobility_small_appliances_small_appliances_1436",
          "benchmark_index": 62,
          "sample_id": "PartNetMobility/small_appliances/1436",
          "source_dataset": "PartNetMobility",
          "category": "small_appliances",
          "object_id": "small_appliances/1436",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "virtual_patch",
          "variant_label": "Virtual patch",
          "variant_note": "RGB-edge route plus one virtual image token.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/virtual_patch/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/062_PartNetMobility_small_appliances_small_appliances_1436@062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.5988309651038247,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.4011690348961753,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 1.0,
                  "axis_error_deg": 59.836172800988344,
                  "origin_error": 0.0,
                  "limit_error": 3.32517154712229,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 59.88309651038247,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 41.03417313321828,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/virtual_patch/062_PartNetMobility_small_appliances_small_appliances_1436.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/source_textured.glb",
            "gt_parts_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/gt_parts.glb",
            "pact_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/virtual_patch/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从2D输入重建了风扇的3D几何形状，并且part分解与2D mask高度一致，将风扇叶片和中心部分正确分离。\n2.  **关节识别失败：** `joint_f1=0.000` 表明PAct未能识别出任何关节，尽管GT显示有一个可动部件。这导致运动可行性无法评估。\n3.  **对2D分割的依赖性暴露：** PAct的输出与2D part mask的颜色和形状直接对应，这强烈暗示了模型对2D分割结果的直接依赖，而非从3D几何或语义中独立推断part。\n4.  **运动可行性缺失：** 由于未识别出关节，模型无法提供任何关于风扇叶片旋转的运动信息，这限制了其在铰链物体生成方面的实用性。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从2D输入重建了风扇的3D几何形状，并且part分解与2D mask高度一致，将风扇叶片和中心部分正确分离。\n2.  **关节识别失败：** `joint_f1=0.000` 表明PAct未能识别出任何关节，尽管GT显示有一个可动部件。这导致运动可行性无法评估。\n3.  **对2D分割的依赖性暴露：** PAct的输出与2D part mask的颜色和形状直接对应，这强烈暗示了模型对2D分割结果的直接依赖，而非从3D几何或语义中独立推断part。\n4.  **运动可行性缺失：** 由于未识别出关节，模型无法提供任何关于风扇叶片旋转的运动信息，这限制了其在铰链物体生成方面的实用性。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 218,
                "totalTokenCount": 637,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "kWoPapGMF5Ptz7IPsZPXyAc"
            }
          }
        },
        {
          "sample_name": "074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712",
          "benchmark_index": 74,
          "sample_id": "GRScenes/architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "source_dataset": "GRScenes",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "virtual_patch",
          "variant_label": "Virtual patch",
          "variant_note": "RGB-edge route plus one virtual image token.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/virtual_patch/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712@074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.650777583835877,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.349222416164123,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 1.014569121664528,
                  "limit_error": 75.38390782471502,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 65.0777583835877,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 41.85438290267174,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/virtual_patch/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/source_textured.glb",
            "gt_parts_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/gt_parts.glb",
            "pact_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/virtual_patch/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct成功地将门分解为两个部分（门框和门扇），与GT parts数量一致。几何形状在2D mask中看起来合理，但无法判断3D几何的完整性。\n2.  **关节数量/类型与运动可行性：** `joint_f1=0.000` 表明PAct未能识别出任何正确的关节，这严重影响了运动可行性。对于一扇门，应该有一个可动的铰链关节。\n3.  **对2D分割的依赖：** 2D part mask清晰地将门框和门扇分开，这可能帮助PAct在part分解上取得成功。然而，未能识别关节表明模型可能过度依赖2D分割进行几何分解，但缺乏对物体功能和运动学原理的理解。\n4.  **关键问题：** PAct未能识别出门的铰链关节，导致无法实现门的开合运动，这是生成三维铰链物体时最核心的功能缺陷。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct成功地将门分解为两个部分（门框和门扇），与GT parts数量一致。几何形状在2D mask中看起来合理，但无法判断3D几何的完整性。\n2.  **关节数量/类型与运动可行性：** `joint_f1=0.000` 表明PAct未能识别出任何正确的关节，这严重影响了运动可行性。对于一扇门，应该有一个可动的铰链关节。\n3.  **对2D分割的依赖：** 2D part mask清晰地将门框和门扇分开，这可能帮助PAct在part分解上取得成功。然而，未能识别关节表明模型可能过度依赖2D分割进行几何分解，但缺乏对物体功能和运动学原理的理解。\n4.  **关键问题：** PAct未能识别出门的铰链关节，导致无法实现门的开合运动，这是生成三维铰链物体时最核心的功能缺陷。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 240,
                "totalTokenCount": 672,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "lGoPao8TkYbPsg_w9ufYCQ"
            }
          }
        },
        {
          "sample_name": "091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "benchmark_index": 91,
          "sample_id": "ArtVIP/small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "source_dataset": "ArtVIP",
          "category": "small_furniture",
          "object_id": "small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "virtual_patch",
          "variant_label": "Virtual patch",
          "variant_note": "RGB-edge route plus one virtual image token.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/virtual_patch/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1@091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7973343538916574,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.2026656461083426,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.3672466437433355,
                  "limit_error": 26.466870621838844,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 79.73343538916573,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 44.168437166710376,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/virtual_patch/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/source_textured.glb",
            "gt_parts_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/gt_parts.glb",
            "pact_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/virtual_patch/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性差，part分解不合理：** 生成的三维模型几何形状严重扭曲，与原始图像中的床头柜形态差异巨大。part分解也完全错误，将抽屉部分生成为一个独立的、与主体分离的方块，且主体部分也变形严重。\n2.  **关节数量/类型错误，运动不可行：** GT显示有1个可动部件，但PAct生成的模型中，抽屉（红色部分）与主体（蓝色部分）完全分离，没有表现出任何关节连接，因此无法实现抽屉的滑动等运动，运动可行性为零。joint_f1=0.000也证实了这一点。\n3.  **严重依赖2D分割，但未能有效利用：** 尽管提供了2D part mask，模型似乎只是将2D mask的颜色区域简单地“拉伸”成3D形状，而没有理解物体本身的结构和部件之间的关系。例如，抽屉被生成为一个独立的方块，而不是嵌入主体内部。\n4.  **模型生成结果与GT信息严重不符：** GT parts=2，GT movable=1，但PAct生成的模型虽然在part数量上与GT一致（part_count_mae=0），但在part的几何形状、分解合理性以及关节的识别和生成上都完全失败，导致PAct weighted_score仅为44.17，表现极差。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性差，part分解不合理：** 生成的三维模型几何形状严重扭曲，与原始图像中的床头柜形态差异巨大。part分解也完全错误，将抽屉部分生成为一个独立的、与主体分离的方块，且主体部分也变形严重。\n2.  **关节数量/类型错误，运动不可行：** GT显示有1个可动部件，但PAct生成的模型中，抽屉（红色部分）与主体（蓝色部分）完全分离，没有表现出任何关节连接，因此无法实现抽屉的滑动等运动，运动可行性为零。joint_f1=0.000也证实了这一点。\n3.  **严重依赖2D分割，但未能有效利用：** 尽管提供了2D part mask，模型似乎只是将2D mask的颜色区域简单地“拉伸”成3D形状，而没有理解物体本身的结构和部件之间的关系。例如，抽屉被生成为一个独立的方块，而不是嵌入主体内部。\n4.  **模型生成结果与GT信息严重不符：** GT parts=2，GT movable=1，但PAct生成的模型虽然在part数量上与GT一致（part_count_mae=0），但在part的几何形状、分解合理性以及关节的识别和生成上都完全失败，导致PAct weighted_score仅为44.17，表现极差。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 325,
                "totalTokenCount": 757,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "l2oPavrsGtbVz7IPzPzb0A0"
            }
          }
        }
      ],
      "aggregate": {
        "mean_weighted_score": 42.506203733582495,
        "mean_joint_f1": 0.0,
        "mean_part_count_mae": 0.0,
        "success_rate": 1.0
      },
      "diagnostics": {
        "wrapper_args": {
          "pact_root": "/data/250010098/PAct",
          "ot_stage1_ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_virtual_patch/ckpts/model_step0000060.pt",
          "ot_block_selector": "first",
          "ot_sinkhorn_iters": 10,
          "ot_epsilon": 0.1,
          "ot_gate_lambda": 2.5,
          "ot_gate_floor": 0.02,
          "ot_mask_prior_beta": 0.2,
          "ot_edge_lambda": 0.4,
          "ot_edge_gamma": 8.0,
          "ot_edge_source": "rgb",
          "ot_virtual_tokens": 1,
          "ot_virtual_mass": 0.05,
          "ot_detach_plan": false,
          "ot_diagnostics_path": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/virtual_patch/ot_diagnostics.json"
        },
        "pipelines": [
          {
            "ot_modules_active": 1.0,
            "ot_edge_delta": 0.0017846489790827036,
            "ot_edge_gamma": 8.0,
            "ot_edge_lambda": 0.4,
            "ot_edge_source_rgb": 1.0,
            "ot_gate_max": 1.0,
            "ot_gate_mean": 0.35107421875,
            "ot_gate_min": 0.0238800048828125,
            "ot_mask_prior_beta": 0.2,
            "ot_plan_mass": 1.0,
            "ot_virtual_mass": 0.04998779296875,
            "ot_virtual_tokens": 1.0
          }
        ]
      }
    },
    {
      "variant": {
        "name": "firstthird_edge",
        "label": "First-third edge",
        "kind": "ot",
        "ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_firstthird_edge/ckpts/model_step0000020.pt",
        "wrapper": [
          "--ot-block-selector",
          "first-third",
          "--ot-sinkhorn-iters",
          "10",
          "--ot-mask-prior-beta",
          "0.2",
          "--ot-edge-lambda",
          "0.4"
        ],
        "note": "Wider OT injection over the first third of Stage1 blocks."
      },
      "records": [
        {
          "sample_name": "029_GAPartNet_storage_storage_100671",
          "benchmark_index": 29,
          "sample_id": "GAPartNet/storage/100671",
          "source_dataset": "GAPartNet",
          "category": "storage",
          "object_id": "storage/100671",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "firstthird_edge",
          "variant_label": "First-third edge",
          "variant_note": "Wider OT injection over the first third of Stage1 blocks.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/firstthird_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/029_GAPartNet_storage_storage_100671@029_GAPartNet_storage_storage_100671_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7407241577521066,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.25927584224789335,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.5862058181819634,
                  "limit_error": 26.783832955420113,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 74.07241577521066,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 43.274591964506946,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/firstthird_edge/029_GAPartNet_storage_storage_100671.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/source_textured.glb",
            "gt_parts_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/gt_parts.glb",
            "pact_glb": "viewer_assets/029_GAPartNet_storage_storage_100671/firstthird_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从单视图输入生成了具有合理几何形状的存储箱，并且part分解与2D part mask一致，将箱体和盖子正确分离。\n2.  **关节信息缺失：** `joint_f1=0.000` 表明模型未能识别或生成任何关节信息，尽管GT显示有一个可移动部件。这严重影响了运动可行性。\n3.  **运动可行性差：** 由于缺乏关节信息，无法判断部件的运动可行性。理论上，盖子应该可以打开或滑动，但模型没有提供这种能力。\n4.  **对2D分割的依赖：** 模型的输出与2D part mask高度一致，这可能表明它在很大程度上依赖于2D分割来确定部件边界，而不是从3D几何或语义信息中推断关节。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从单视图输入生成了具有合理几何形状的存储箱，并且part分解与2D part mask一致，将箱体和盖子正确分离。\n2.  **关节信息缺失：** `joint_f1=0.000` 表明模型未能识别或生成任何关节信息，尽管GT显示有一个可移动部件。这严重影响了运动可行性。\n3.  **运动可行性差：** 由于缺乏关节信息，无法判断部件的运动可行性。理论上，盖子应该可以打开或滑动，但模型没有提供这种能力。\n4.  **对2D分割的依赖：** 模型的输出与2D part mask高度一致，这可能表明它在很大程度上依赖于2D分割来确定部件边界，而不是从3D几何或语义信息中推断关节。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 413,
                "candidatesTokenCount": 211,
                "totalTokenCount": 624,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 155
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "mmoPapqQNdGHz7IPpMDLCA"
            }
          }
        },
        {
          "sample_name": "060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135",
          "benchmark_index": 60,
          "sample_id": "PartNetMobility/architectural_fixtures/3135",
          "source_dataset": "PartNetMobility",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/3135",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "firstthird_edge",
          "variant_label": "First-third edge",
          "variant_note": "Wider OT injection over the first third of Stage1 blocks.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/firstthird_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135@060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7652688090531808,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.23473119094681916,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.6805469063232019,
                  "limit_error": 70.05665142933395,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 76.52688090531808,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 43.66213909031338,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/firstthird_edge/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/source_textured.glb",
            "gt_parts_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/gt_parts.glb",
            "pact_glb": "viewer_assets/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/firstthird_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解问题：** PAct生成的2D part mask（右图）将原始输入（左图）中一个包含四个小隔间的整体结构，错误地分解为一个大的蓝色底座和一个红色的可移动部件。这与原始物体实际的几何结构和功能不符，原始物体似乎是一个带有多个可移动盖子的盒子，而非一个单一的可移动方块。\n2.  **关节数量/类型与运动可行性：** 尽管GT parts=2，GT movable=1，PAct的part_count_mae=0，表明它识别出了2个部件。然而，joint_f1=0.000，这强烈暗示PAct未能正确识别出任何关节或其类型。根据2D part mask，它可能只识别出一个可移动的红色方块，但其运动方式（例如，是滑动还是铰链）并未被正确推断或表示。\n3.  **对2D分割的依赖暴露：** PAct的输出似乎过于依赖2D part mask的简单分割。2D mask将整个外部框架和三个固定的小隔间视为一个整体（蓝色部分），而将一个倾斜的盖子视为另一个独立的可移动部分（红色部分）。这种粗粒度的2D分割直接导致了3D分解的错误，未能捕捉到原始物体中更精细的part结构和多个潜在的铰链或滑动机制。\n4.  **PAct score较低的根本原因：** 43.66的PAct weighted_score相对较低，主要原因在于joint_f1为0.000，表明关节识别完全失败。即使part_count_mae为0，但错误的part分解和关节识别使得生成的3D铰链物体模型在功能上与原始物体大相径庭。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解问题：** PAct生成的2D part mask（右图）将原始输入（左图）中一个包含四个小隔间的整体结构，错误地分解为一个大的蓝色底座和一个红色的可移动部件。这与原始物体实际的几何结构和功能不符，原始物体似乎是一个带有多个可移动盖子的盒子，而非一个单一的可移动方块。\n2.  **关节数量/类型与运动可行性：** 尽管GT parts=2，GT movable=1，PAct的part_count_mae=0，表明它识别出了2个部件。然而，joint_f1=0.000，这强烈暗示PAct未能正确识别出任何关节或其类型。根据2D part mask，它可能只识别出一个可移动的红色方块，但其运动方式（例如，是滑动还是铰链）并未被正确推断或表示。\n3.  **对2D分割的依赖暴露：** PAct的输出似乎过于依赖2D part mask的简单分割。2D mask将整个外部框架和三个固定的小隔间视为一个整体（蓝色部分），而将一个倾斜的盖子视为另一个独立的可移动部分（红色部分）。这种粗粒度的2D分割直接导致了3D分解的错误，未能捕捉到原始物体中更精细的part结构和多个潜在的铰链或滑动机制。\n4.  **PAct score较低的根本原因：** 43.66的PAct weighted_score相对较低，主要原因在于joint_f1为0.000，表明关节识别完全失败。即使part_count_mae为0，但错误的part分解和关节识别使得生成的3D铰链物体模型在功能上与原始物体大相径庭。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 406,
                "totalTokenCount": 825,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "nWoPatWQM_rrz7IP_K7c-Qw"
            }
          }
        },
        {
          "sample_name": "062_PartNetMobility_small_appliances_small_appliances_1436",
          "benchmark_index": 62,
          "sample_id": "PartNetMobility/small_appliances/1436",
          "source_dataset": "PartNetMobility",
          "category": "small_appliances",
          "object_id": "small_appliances/1436",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "firstthird_edge",
          "variant_label": "First-third edge",
          "variant_note": "Wider OT injection over the first third of Stage1 blocks.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/firstthird_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/062_PartNetMobility_small_appliances_small_appliances_1436@062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.5599039949741933,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.5312269324532186,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 48.33688608009367,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.4400960050258067,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 0.0,
                  "origin_error": 0.5312269324532186,
                  "limit_error": 48.33688608009367,
                  "accepted": true
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 55.99039949741933,
            "part_decomposition": 100.0,
            "kinematics": 100.0,
            "motion_consistency": 100.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 82.52479992064517,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/firstthird_edge/062_PartNetMobility_small_appliances_small_appliances_1436.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/source_textured.glb",
            "gt_parts_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/gt_parts.glb",
            "pact_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/firstthird_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从2D输入生成了3D风扇模型，几何形状完整，并且Part分解与GT一致（GT parts=2，PAct part_count_mae=0）。\n2.  **关节识别准确，运动可行性高：** PAct正确识别了1个可动关节（GT movable=1，joint_f1=1.000），表明其对铰链结构的理解和运动可行性预测能力较强。\n3.  **对2D分割的依赖性未明显暴露：** 在此样本中，PAct似乎很好地利用了2D part mask信息，没有出现因2D分割不准确而导致的3D几何或分解问题。\n4.  **潜在的Part合并问题：** 尽管Part数量正确，但从2D mask来看，风扇叶片被视为一个整体（红色部分），而中心轴是另一个Part（蓝色部分）。如果实际风扇的每个叶片都是独立可动的，PAct可能将多个独立Part合并为一个，这可能限制了更精细的运动分析。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从2D输入生成了3D风扇模型，几何形状完整，并且Part分解与GT一致（GT parts=2，PAct part_count_mae=0）。\n2.  **关节识别准确，运动可行性高：** PAct正确识别了1个可动关节（GT movable=1，joint_f1=1.000），表明其对铰链结构的理解和运动可行性预测能力较强。\n3.  **对2D分割的依赖性未明显暴露：** 在此样本中，PAct似乎很好地利用了2D part mask信息，没有出现因2D分割不准确而导致的3D几何或分解问题。\n4.  **潜在的Part合并问题：** 尽管Part数量正确，但从2D mask来看，风扇叶片被视为一个整体（红色部分），而中心轴是另一个Part（蓝色部分）。如果实际风扇的每个叶片都是独立可动的，PAct可能将多个独立Part合并为一个，这可能限制了更精细的运动分析。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 419,
                "candidatesTokenCount": 262,
                "totalTokenCount": 681,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 161
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "omoPateMAunpz7IPyvuy8Ao"
            }
          }
        },
        {
          "sample_name": "074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712",
          "benchmark_index": 74,
          "sample_id": "GRScenes/architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "source_dataset": "GRScenes",
          "category": "architectural_fixtures",
          "object_id": "architectural_fixtures/grscenes_door_dd95b8cef2d3_d60712",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "firstthird_edge",
          "variant_label": "First-third edge",
          "variant_note": "Wider OT injection over the first third of Stage1 blocks.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/firstthird_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712@074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.6657917140227231,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.3342082859772769,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 1.0634269100909015,
                  "limit_error": 40.8329510986408,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 66.57917140227231,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 42.09144811614826,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/firstthird_edge/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/source_textured.glb",
            "gt_parts_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/gt_parts.glb",
            "pact_glb": "viewer_assets/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712/firstthird_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地将门分解为两个部分（门扇和门框），与GT parts数量一致（GT parts=2, part_count_mae=0），且几何形状保持完整。\n2.  **关节识别失败：** PAct未能识别出任何关节（joint_f1=0.000），这意味着它没有正确地预测出门扇是可动的，也未能识别出门扇与门框之间的铰链关节。\n3.  **运动可行性缺失：** 由于未能识别关节，PAct无法赋予门扇正确的运动能力，导致运动可行性为零。\n4.  **对2D分割的依赖可能导致关节信息丢失：** 2D part mask清晰地将门扇和门框分开，但没有提供关于它们之间连接方式或可动性的信息。PAct可能过度依赖这种静态的2D分割，而未能从单视图输入中推断出3D铰链关节的动态属性。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地将门分解为两个部分（门扇和门框），与GT parts数量一致（GT parts=2, part_count_mae=0），且几何形状保持完整。\n2.  **关节识别失败：** PAct未能识别出任何关节（joint_f1=0.000），这意味着它没有正确地预测出门扇是可动的，也未能识别出门扇与门框之间的铰链关节。\n3.  **运动可行性缺失：** 由于未能识别关节，PAct无法赋予门扇正确的运动能力，导致运动可行性为零。\n4.  **对2D分割的依赖可能导致关节信息丢失：** 2D part mask清晰地将门扇和门框分开，但没有提供关于它们之间连接方式或可动性的信息。PAct可能过度依赖这种静态的2D分割，而未能从单视图输入中推断出3D铰链关节的动态属性。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 237,
                "totalTokenCount": 669,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "pWoPap7YB5Ptz7IPsZPXyAc"
            }
          }
        },
        {
          "sample_name": "091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "benchmark_index": 91,
          "sample_id": "ArtVIP/small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "source_dataset": "ArtVIP",
          "category": "small_furniture",
          "object_id": "small_furniture/OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1",
          "num_parts": 2,
          "movable_parts": 1,
          "variant": "firstthird_edge",
          "variant_label": "First-third edge",
          "variant_note": "Wider OT injection over the first third of Stage1 blocks.",
          "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/firstthird_edge/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1@091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1_synthetic_processed.@ng/object.json",
          "pact_exploded_png": null,
          "metric_groups": {
            "pipeline_availability": {
              "inference_success": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "object_json_valid": {
                "value": 1,
                "status": "measured",
                "note": ""
              },
              "glb_export_success": {
                "value": 0,
                "status": "not_provided",
                "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
              },
              "part_asset_completeness": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "runtime_seconds": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "peak_gpu_memory_mb": {
                "value": null,
                "status": "not_provided",
                "note": "Not sampled in this run."
              },
              "reproducible_seed_match": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "geometry": {
              "chamfer_l2": {
                "value": null,
                "status": "not_provided",
                "note": "PLY-level Chamfer hook present; omitted in smoke run for speed."
              },
              "fscore_tau_0_01": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "normal_consistency": {
                "value": null,
                "status": "not_provided",
                "note": "Requires dense surface sampling."
              },
              "scale_consistency": {
                "value": 0.7744370774312417,
                "status": "measured",
                "note": ""
              },
              "mesh_manifold_sanity": {
                "value": null,
                "status": "not_provided",
                "note": "Requires mesh repair/manifold pass."
              },
              "texture_or_material_coverage": {
                "value": 0.0,
                "status": "not_provided",
                "note": "PAct smoke export is untextured PLY."
              }
            },
            "part_decomposition": {
              "part_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "part_count_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "part_segmentation_miou_if_masks_available": {
                "value": null,
                "status": "requires_gt",
                "note": "2D mask GT is conditioning input; not a predicted mask output."
              },
              "semantic_part_accuracy": {
                "value": null,
                "status": "not_provided",
                "note": "PAct output names are not semantic labels in this export."
              },
              "parent_child_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "tree_edit_distance": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "orphan_duplicate_part_rate": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              }
            },
            "kinematics": {
              "joint_count_mae": {
                "value": 0,
                "status": "measured",
                "note": ""
              },
              "joint_precision": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_recall": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_f1": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_type_accuracy": {
                "value": 1.0,
                "status": "measured",
                "note": ""
              },
              "axis_angular_error_deg": {
                "value": 90.0,
                "status": "measured",
                "note": ""
              },
              "origin_distance_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "joint_limit_error": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "kinematic_tree_validity": {
                "value": 1,
                "status": "measured",
                "note": ""
              }
            },
            "motion_consistency": {
              "detachment_distance": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "self_collision_rate": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              },
              "closed_state_assembly_error": {
                "value": 0.22556292256875832,
                "status": "measured",
                "note": ""
              },
              "open_state_plausibility": {
                "value": 0.0,
                "status": "measured",
                "note": ""
              },
              "trajectory_smoothness": {
                "value": null,
                "status": "requires_simulation",
                "note": ""
              }
            },
            "ot_routing_diagnostics": {
              "ot_modules_active": {
                "value": 0,
                "status": "not_applicable",
                "note": "Raw PAct baseline; no OT module."
              },
              "ot_gate_mean": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_plan_marginal_error": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_assignment_entropy": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_edge_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_prior_beta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_mask_dropout_delta": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "ot_virtual_mass": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              },
              "part_patch_compactness": {
                "value": null,
                "status": "not_applicable",
                "note": ""
              }
            },
            "robustness_breakdown": {
              "macro_score_by_source_dataset": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; see report.aggregate.by_source."
              },
              "macro_score_by_category": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "macro_score_by_problem_tag": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "worst_10pct_score": {
                "value": null,
                "status": "not_applicable",
                "note": "Aggregate-only metric; sample count is 5."
              },
              "failure_cluster_count": {
                "value": null,
                "status": "not_provided",
                "note": "Requires larger batch clustering."
              }
            },
            "debug": {
              "pred_part_count": 2,
              "gt_part_count": 2,
              "pred_joint_count": 1,
              "gt_joint_count": 1,
              "matches": [
                {
                  "type_mismatch": 0.0,
                  "axis_error_deg": 90.0,
                  "origin_error": 0.7199353638219971,
                  "limit_error": 78.54318682750198,
                  "accepted": false
                }
              ],
              "pred_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              },
              "ref_tree": {
                "root_count": 1,
                "duplicate_ids": 0,
                "dangling_parent_count": 0,
                "cycle_node_count": 0,
                "valid": 1
              }
            }
          },
          "group_scores": {
            "pipeline_availability": 100.0,
            "geometry": 77.44370774312416,
            "part_decomposition": 100.0,
            "kinematics": 0.0,
            "motion_consistency": 0.0,
            "ot_routing_diagnostics": 0.0
          },
          "weighted_score": 43.806901222598555,
          "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variant_cards/firstthird_edge/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1.png",
          "interactive_3d": {
            "source_textured_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/source_textured.glb",
            "gt_parts_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/gt_parts.glb",
            "pact_glb": "viewer_assets/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1/firstthird_edge/pact_parts.glb"
          },
          "vlm": {
            "ok": true,
            "model": "gemini-2.5-flash",
            "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性差，part分解不合理：** 生成的三维模型几何形状严重扭曲，与原始图像的床头柜形态差异巨大。Part分解虽然数量与GT一致（2个），但分解方式不合理，一个part是扭曲的主体，另一个part是悬浮的方块，与实际的抽屉或可动部件不符。\n2.  **关节信息缺失，运动不可行：** `joint_f1=0.000` 表明PAct未能识别或生成任何关节，导致模型无法进行任何有意义的运动。这与GT中存在一个可动部件（抽屉）相悖。\n3.  **对2D分割的依赖性暴露：** 生成的三维模型在形状上似乎受到了2D part mask的强烈影响，尤其是蓝色部分呈现出类似2D mask的轮廓，但缺乏深度和三维结构。红色部分也只是一个简单的方块，未能重建出抽屉的复杂几何。\n4.  **整体PAct score较低：** 43.81的加权分数表明PAct在此样本上的表现不佳，未能有效生成具有合理几何、part分解和运动能力的3D铰链物体。",
            "raw": {
              "candidates": [
                {
                  "content": {
                    "parts": [
                      {
                        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性差，part分解不合理：** 生成的三维模型几何形状严重扭曲，与原始图像的床头柜形态差异巨大。Part分解虽然数量与GT一致（2个），但分解方式不合理，一个part是扭曲的主体，另一个part是悬浮的方块，与实际的抽屉或可动部件不符。\n2.  **关节信息缺失，运动不可行：** `joint_f1=0.000` 表明PAct未能识别或生成任何关节，导致模型无法进行任何有意义的运动。这与GT中存在一个可动部件（抽屉）相悖。\n3.  **对2D分割的依赖性暴露：** 生成的三维模型在形状上似乎受到了2D part mask的强烈影响，尤其是蓝色部分呈现出类似2D mask的轮廓，但缺乏深度和三维结构。红色部分也只是一个简单的方块，未能重建出抽屉的复杂几何。\n4.  **整体PAct score较低：** 43.81的加权分数表明PAct在此样本上的表现不佳，未能有效生成具有合理几何、part分解和运动能力的3D铰链物体。"
                      }
                    ],
                    "role": "model"
                  },
                  "finishReason": "STOP",
                  "index": 0
                }
              ],
              "usageMetadata": {
                "promptTokenCount": 432,
                "candidatesTokenCount": 282,
                "totalTokenCount": 714,
                "promptTokensDetails": [
                  {
                    "modality": "TEXT",
                    "tokenCount": 174
                  },
                  {
                    "modality": "IMAGE",
                    "tokenCount": 258
                  }
                ],
                "serviceTier": "standard"
              },
              "modelVersion": "gemini-2.5-flash",
              "responseId": "qGoPavuJFqeFz7IPvsO8qQs"
            }
          }
        }
      ],
      "aggregate": {
        "mean_weighted_score": 51.07197606284247,
        "mean_joint_f1": 0.2,
        "mean_part_count_mae": 0.0,
        "success_rate": 1.0
      },
      "diagnostics": {
        "wrapper_args": {
          "pact_root": "/data/250010098/PAct",
          "ot_stage1_ckpt": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_ot_matrix_official_20260521_full_stage1_firstthird_edge/ckpts/model_step0000020.pt",
          "ot_block_selector": "first-third",
          "ot_sinkhorn_iters": 10,
          "ot_epsilon": 0.1,
          "ot_gate_lambda": 2.5,
          "ot_gate_floor": 0.02,
          "ot_mask_prior_beta": 0.2,
          "ot_edge_lambda": 0.4,
          "ot_edge_gamma": 8.0,
          "ot_edge_source": "mask",
          "ot_virtual_tokens": 0,
          "ot_virtual_mass": 0.0,
          "ot_detach_plan": false,
          "ot_diagnostics_path": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_phase1b_ot_eval_20260521/variants/firstthird_edge/ot_diagnostics.json"
        },
        "pipelines": [
          {
            "ot_modules_active": 8.0,
            "ot_edge_delta": 0.0019547163392417133,
            "ot_edge_gamma": 8.0,
            "ot_edge_lambda": 0.39999999999999997,
            "ot_edge_source_rgb": 0.0,
            "ot_gate_max": 1.0,
            "ot_gate_mean": 0.34814453125,
            "ot_gate_min": 0.02347564697265625,
            "ot_mask_prior_beta": 0.19999999999999998,
            "ot_plan_mass": 1.0,
            "ot_virtual_mass": 0.0,
            "ot_virtual_tokens": 0.0
          }
        ]
      }
    }
  ]
}
