{
  "run_id": "pact_eval100_easycase_probe_20260521",
  "title": "PAct Eval100 easy-case probe: cabinets, doors, drawers",
  "portal_summary": "Manual easy-case probe over simple cabinets, doors, drawers, and one PM fixture-like sample with VLM QA and interactive 3D previews.",
  "portal_tags": [
    "PAct",
    "Eval100",
    "easy-cases",
    "metrics"
  ],
  "timestamp": "2026-05-21T17:27:05+00:00",
  "selection_policy": "manual benchmark_index selection: 25, 29, 42, 74, 80, 91, 95, 60",
  "seed": 20260521,
  "pact_steps": "PAct defaults (ss_steps=25, slat_steps=25)",
  "pact_output_overrides": {
    "export_textured_glb": false,
    "fast_output": false
  },
  "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_records": [
    {
      "sample_name": "025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992",
      "benchmark_index": 25,
      "sample_id": "GRScenes/large_furniture/grscenes_cabinet_5f26d9d3c405_a11992",
      "source_dataset": "GRScenes",
      "category": "large_furniture",
      "object_id": "large_furniture/grscenes_cabinet_5f26d9d3c405_a11992",
      "num_parts": 2,
      "movable_parts": 0,
      "texture_render": {
        "visual_meshes": 22,
        "texture_like_meshes": 20,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_inputs/025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992/025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992@025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992_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": 16.070023000240326,
            "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.46881688070368843,
            "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": 0.0,
            "status": "measured",
            "note": ""
          },
          "tree_edit_distance": {
            "value": 1,
            "status": "measured",
            "note": ""
          },
          "orphan_duplicate_part_rate": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          }
        },
        "kinematics": {
          "joint_count_mae": {
            "value": 1,
            "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.5311831192963116,
            "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": 0,
          "matches": [],
          "pred_tree": {
            "root_count": 1,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 1
          },
          "ref_tree": {
            "root_count": 2,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 0
          }
        }
      },
      "group_scores": {
        "pipeline_availability": 100.0,
        "geometry": 46.881688070368845,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 38.98131916900561,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/vlm_cards/025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct成功地将物体分解为2个part，与GT parts数量一致（part_count_mae=0）。从2D mask看，分解是基于水平分割的，这与输入图像中物体下方的两条细线（可能代表抽屉或门缝）相符。\n2.  **关节数量/类型与运动可行性：** GT movable为0，表明该物体在真实情况下是不可动的。然而，PAct的joint_f1为0.000，这可能意味着PAct未能识别出任何关节，或者错误地识别了关节。考虑到GT是不可动的，未能识别出关节是符合预期的。\n3.  **对2D分割的依赖：** PAct的part分解与2D part mask高度一致，表明模型强烈依赖2D分割信息来定义部件。这种依赖性在处理不可动物体时可能不是问题，但对于复杂的可动物体，如果2D分割无法准确反映3D部件和关节，可能会导致生成的三维铰链物体不准确。\n4.  **PActscore较低：** PAct weighted_score为38.98，相对较低，这可能反映了在其他未直接展示的指标（如几何精度、关节位置/轴线精度等）上存在不足，即使part数量匹配。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct成功地将物体分解为2个part，与GT parts数量一致（part_count_mae=0）。从2D mask看，分解是基于水平分割的，这与输入图像中物体下方的两条细线（可能代表抽屉或门缝）相符。\n2.  **关节数量/类型与运动可行性：** GT movable为0，表明该物体在真实情况下是不可动的。然而，PAct的joint_f1为0.000，这可能意味着PAct未能识别出任何关节，或者错误地识别了关节。考虑到GT是不可动的，未能识别出关节是符合预期的。\n3.  **对2D分割的依赖：** PAct的part分解与2D part mask高度一致，表明模型强烈依赖2D分割信息来定义部件。这种依赖性在处理不可动物体时可能不是问题，但对于复杂的可动物体，如果2D分割无法准确反映3D部件和关节，可能会导致生成的三维铰链物体不准确。\n4.  **PActscore较低：** PAct weighted_score为38.98，相对较低，这可能反映了在其他未直接展示的指标（如几何精度、关节位置/轴线精度等）上存在不足，即使part数量匹配。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 433,
            "candidatesTokenCount": 311,
            "totalTokenCount": 744,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 175
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "RUEPasmJPKThz7IP2dCDQQ"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992/source_textured.glb",
        "gt_parts_glb": "viewer_assets/025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992/gt_parts.glb",
        "pact_glb": "viewer_assets/025_GRScenes_large_furniture_large_furniture_grscenes_cabinet_5f26d9d3c405_a11992/pact_parts.glb"
      }
    },
    {
      "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,
      "texture_render": {
        "visual_meshes": 26,
        "texture_like_meshes": 26,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_inputs/029_GAPartNet_storage_storage_100671/029_GAPartNet_storage_storage_100671_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/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": 16.070023000240326,
            "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.682195273642833,
            "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.31780472635716694,
            "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.6198490669152915,
              "limit_error": 65.01169245249042,
              "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.21952736428331,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 42.35045168909737,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/vlm_cards/029_GAPartNet_storage_storage_100671.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从2D part mask中重建出具有两个部件的3D物体，几何形状与输入图像高度一致，且部件分解与GT parts数量（2个）匹配。\n2.  **关节识别与运动可行性存在问题：** `joint_f1=0.000` 表明模型未能识别出任何关节，因此无法推断出盖子的可移动性，尽管GT movable为1。这导致运动可行性评估失败。\n3.  **对2D分割的依赖性可能导致运动信息缺失：** 尽管2D mask清晰地分离了盖子和主体，但PAct未能从这种分离中推断出盖子是可移动的部件。这可能揭示了模型在从静态2D分割中理解3D关节和运动关系方面的局限性。\n4.  **PAct score较低，主要受关节识别影响：** 42.35的加权分数相对较低，很可能主要归因于未能识别出关节，因为part count MAE为0，表明部件分解是准确的。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地从2D part mask中重建出具有两个部件的3D物体，几何形状与输入图像高度一致，且部件分解与GT parts数量（2个）匹配。\n2.  **关节识别与运动可行性存在问题：** `joint_f1=0.000` 表明模型未能识别出任何关节，因此无法推断出盖子的可移动性，尽管GT movable为1。这导致运动可行性评估失败。\n3.  **对2D分割的依赖性可能导致运动信息缺失：** 尽管2D mask清晰地分离了盖子和主体，但PAct未能从这种分离中推断出盖子是可移动的部件。这可能揭示了模型在从静态2D分割中理解3D关节和运动关系方面的局限性。\n4.  **PAct score较低，主要受关节识别影响：** 42.35的加权分数相对较低，很可能主要归因于未能识别出关节，因为part count MAE为0，表明部件分解是准确的。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 413,
            "candidatesTokenCount": 265,
            "totalTokenCount": 678,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 155
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "S0EPat2SBsrUz7IPk6PMwAg"
        }
      },
      "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/pact_parts.glb"
      }
    },
    {
      "sample_name": "042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83",
      "benchmark_index": 42,
      "sample_id": "GRScenes/small_furniture/grscenes_nightstand_1cc49bc9d06e_ea6f83",
      "source_dataset": "GRScenes",
      "category": "small_furniture",
      "object_id": "small_furniture/grscenes_nightstand_1cc49bc9d06e_ea6f83",
      "num_parts": 3,
      "movable_parts": 2,
      "texture_render": {
        "visual_meshes": 10,
        "texture_like_meshes": 7,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_inputs/042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83/042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83@042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83_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": 16.070023000240326,
            "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.582256845968697,
            "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": 1,
            "status": "measured",
            "note": ""
          },
          "part_count_accuracy": {
            "value": 0.6666666666666667,
            "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": 1,
            "status": "measured",
            "note": ""
          },
          "orphan_duplicate_part_rate": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          }
        },
        "kinematics": {
          "joint_count_mae": {
            "value": 1,
            "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.417743154031303,
            "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": 3,
          "pred_joint_count": 1,
          "gt_joint_count": 2,
          "matches": [
            {
              "type_mismatch": 1.0,
              "axis_error_deg": 89.99999803884896,
              "origin_error": 0.5342976749234275,
              "limit_error": 53.3075065612793,
              "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": 58.2256845968697,
        "part_decomposition": 66.66666666666667,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 33.754932655646094,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/vlm_cards/042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **Part 分解不准确且依赖2D分割：** PAct将抽屉把手所在的整个顶部表面分割为两个可动部件（蓝色和绿色），而忽略了把手本身，这与实际的抽屉结构不符。这强烈暴露出对2D分割的依赖，因为2D mask直接将顶部表面分为两块。\n2.  **几何完整性与运动可行性差：** 实际的床头柜抽屉应是可拉出的，但PAct的分割方式（将顶部表面分为两块）无法实现合理的抽拉运动。GT parts=3，GT movable=2，但PAct的part_count_mae=1，joint_f1=0.000，表明其在关节识别和可动部件数量上存在严重偏差。\n3.  **关节数量/类型识别失败：** joint_f1为0.000，说明PAct完全未能识别出正确的关节或其类型。模型将两个表面块视为可动部件，但没有为它们分配任何有意义的关节类型（如滑动关节）。\n4.  **对复杂内部结构理解不足：** 尽管输入是单视图，但模型未能从视觉线索（如把手）推断出抽屉的内部结构和其作为可动部件的属性，而是简单地将可见的2D分割映射到3D。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **Part 分解不准确且依赖2D分割：** PAct将抽屉把手所在的整个顶部表面分割为两个可动部件（蓝色和绿色），而忽略了把手本身，这与实际的抽屉结构不符。这强烈暴露出对2D分割的依赖，因为2D mask直接将顶部表面分为两块。\n2.  **几何完整性与运动可行性差：** 实际的床头柜抽屉应是可拉出的，但PAct的分割方式（将顶部表面分为两块）无法实现合理的抽拉运动。GT parts=3，GT movable=2，但PAct的part_count_mae=1，joint_f1=0.000，表明其在关节识别和可动部件数量上存在严重偏差。\n3.  **关节数量/类型识别失败：** joint_f1为0.000，说明PAct完全未能识别出正确的关节或其类型。模型将两个表面块视为可动部件，但没有为它们分配任何有意义的关节类型（如滑动关节）。\n4.  **对复杂内部结构理解不足：** 尽管输入是单视图，但模型未能从视觉线索（如把手）推断出抽屉的内部结构和其作为可动部件的属性，而是简单地将可见的2D分割映射到3D。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 431,
            "candidatesTokenCount": 317,
            "totalTokenCount": 748,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 173
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "TkEPavj2L72Gz7IPp7vSgQs"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83/source_textured.glb",
        "gt_parts_glb": "viewer_assets/042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83/gt_parts.glb",
        "pact_glb": "viewer_assets/042_GRScenes_small_furniture_small_furniture_grscenes_nightstand_1cc49bc9d06e_ea6f83/pact_parts.glb"
      }
    },
    {
      "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,
      "texture_render": {
        "visual_meshes": 35,
        "texture_like_meshes": 1,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_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",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/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": 16.070023000240326,
            "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.5336867478087773,
            "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.46631325219122266,
            "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.9159480325826842,
              "limit_error": 64.47554448242987,
              "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.36867478087773,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 40.005580228559644,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/vlm_cards/074_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_dd95b8cef2d3_d60712.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **Part分解准确，但几何完整性受限：** PAct正确识别出2个部件（门框和门扇），与GT一致（part_count_mae=0）。然而，从2D mask看，门把手等细节未被分割出来，可能导致3D几何模型缺乏这些细节。\n2.  **关节识别完全失败：** joint_f1为0.000表明PAct未能识别出任何关节，或识别出的关节与GT完全不匹配。这直接影响了运动可行性。\n3.  **运动可行性存疑：** 由于关节识别失败，即使几何分解正确，也无法保证生成的三维模型具有正确的铰链运动能力。\n4.  **对2D分割的依赖性暴露：** 2D part mask中门把手等关键铰链部件未被独立分割，这可能直接导致PAct无法推断出正确的关节位置和类型，暴露出模型对输入2D分割质量的强依赖。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **Part分解准确，但几何完整性受限：** PAct正确识别出2个部件（门框和门扇），与GT一致（part_count_mae=0）。然而，从2D mask看，门把手等细节未被分割出来，可能导致3D几何模型缺乏这些细节。\n2.  **关节识别完全失败：** joint_f1为0.000表明PAct未能识别出任何关节，或识别出的关节与GT完全不匹配。这直接影响了运动可行性。\n3.  **运动可行性存疑：** 由于关节识别失败，即使几何分解正确，也无法保证生成的三维模型具有正确的铰链运动能力。\n4.  **对2D分割的依赖性暴露：** 2D part mask中门把手等关键铰链部件未被独立分割，这可能直接导致PAct无法推断出正确的关节位置和类型，暴露出模型对输入2D分割质量的强依赖。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 432,
            "candidatesTokenCount": 235,
            "totalTokenCount": 667,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 174
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "VEEPapb8BePRz7IP-rHXoQ0"
        }
      },
      "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/pact_parts.glb"
      }
    },
    {
      "sample_name": "080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72",
      "benchmark_index": 80,
      "sample_id": "GRScenes/architectural_fixtures/grscenes_door_2209ec70e075_01aa72",
      "source_dataset": "GRScenes",
      "category": "architectural_fixtures",
      "object_id": "architectural_fixtures/grscenes_door_2209ec70e075_01aa72",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 27,
        "texture_like_meshes": 1,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_inputs/080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72/080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72@080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72_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": 16.070023000240326,
            "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.6003331668717676,
            "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.39966683312823237,
            "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.9781635955294574,
              "limit_error": 39.658038586417796,
              "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": 60.033316687176765,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 41.0578921085016,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/vlm_cards/080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72.png",
      "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.  **对2D分割的依赖性暴露：** 尽管2D part mask清晰地将门扇和门框分开，但PAct未能利用此信息来推断它们之间的铰链关系，这可能表明其关节推理模块对2D分割的依赖性不足或存在缺陷。\n4.  **PAct score较低：** 41.06的加权分数相对较低，主要原因在于未能识别关节，这严重影响了整体性能。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性良好，part分解准确：** PAct成功地将门分解为两个部分（门扇和门框），与GT parts数量一致（part_count_mae=0），几何形状也保持完整。\n2.  **关节识别和运动可行性存在严重问题：** joint_f1=0.000表明PAct未能识别出任何关节，因此无法推断出门的铰链运动，导致运动可行性为零。\n3.  **对2D分割的依赖性暴露：** 尽管2D part mask清晰地将门扇和门框分开，但PAct未能利用此信息来推断它们之间的铰链关系，这可能表明其关节推理模块对2D分割的依赖性不足或存在缺陷。\n4.  **PAct score较低：** 41.06的加权分数相对较低，主要原因在于未能识别关节，这严重影响了整体性能。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 433,
            "candidatesTokenCount": 223,
            "totalTokenCount": 656,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 175
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "V0EPavSlMqPgz7IP9dSpCA"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72/source_textured.glb",
        "gt_parts_glb": "viewer_assets/080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72/gt_parts.glb",
        "pact_glb": "viewer_assets/080_GRScenes_architectural_fixtures_architectural_fixtures_grscenes_door_2209ec70e075_01aa72/pact_parts.glb"
      }
    },
    {
      "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,
      "texture_render": {
        "visual_meshes": 5,
        "texture_like_meshes": 5,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_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",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/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": 16.070023000240326,
            "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.8167864469472015,
            "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.18321355305279852,
            "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.6674628496970642,
              "limit_error": 96.59315173228714,
              "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.67864469472015,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 44.47557547811371,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/vlm_cards/091_ArtVIP_small_furniture_small_furniture_OLDERDALEN_bedside_table_grey_green_pine_47x43cm_1.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性差，Part分解不合理：** 生成的三维模型几何形状扭曲，与原始图像差异大。Part分解虽然数量正确（GT parts=2，PAct part_count_mae=0），但蓝色部分包含了桌子主体和部分腿，红色部分是一个独立的方块，与实际的抽屉结构不符。\n2.  **关节信息缺失，运动不可行：** joint_f1=0.000 表明模型未能识别出任何关节。这意味着即使part分解正确，也无法实现抽屉的滑动等运动，导致运动可行性为零。\n3.  **对2D分割的依赖性暴露：** 生成的三维模型在几何上似乎直接从2D part mask的形状进行拉伸或挤压，导致了不自然的几何形状（例如蓝色部分下方的“滴落”状结构），这强烈暴露出对2D分割的直接依赖，而缺乏对三维结构和物理合理性的理解。\n4.  **PAct score较低：** 44.48的加权分数表明整体性能不佳，这与几何扭曲、关节识别失败等问题一致。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性差，Part分解不合理：** 生成的三维模型几何形状扭曲，与原始图像差异大。Part分解虽然数量正确（GT parts=2，PAct part_count_mae=0），但蓝色部分包含了桌子主体和部分腿，红色部分是一个独立的方块，与实际的抽屉结构不符。\n2.  **关节信息缺失，运动不可行：** joint_f1=0.000 表明模型未能识别出任何关节。这意味着即使part分解正确，也无法实现抽屉的滑动等运动，导致运动可行性为零。\n3.  **对2D分割的依赖性暴露：** 生成的三维模型在几何上似乎直接从2D part mask的形状进行拉伸或挤压，导致了不自然的几何形状（例如蓝色部分下方的“滴落”状结构），这强烈暴露出对2D分割的直接依赖，而缺乏对三维结构和物理合理性的理解。\n4.  **PAct score较低：** 44.48的加权分数表明整体性能不佳，这与几何扭曲、关节识别失败等问题一致。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 432,
            "candidatesTokenCount": 270,
            "totalTokenCount": 702,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 174
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "W0EPauTfB7Wtz7IPiLzP6Qo"
        }
      },
      "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/pact_parts.glb"
      }
    },
    {
      "sample_name": "095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm",
      "benchmark_index": 95,
      "sample_id": "ArtVIP/small_furniture/GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm",
      "source_dataset": "ArtVIP",
      "category": "small_furniture",
      "object_id": "small_furniture/GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 5,
        "texture_like_meshes": 5,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_inputs/095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm/095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm@095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm_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": 16.070023000240326,
            "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.7490295275264187,
            "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.2509704724735813,
            "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": 89.42747097529772,
              "origin_error": 0.6055582321278931,
              "limit_error": 0.6716182827949524,
              "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.90295275264187,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 43.40572938199608,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/vlm_cards/095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm.png",
      "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显示有一个可移动部件。这表明模型在理解部件间的运动关系方面存在不足。\n3.  **运动可行性缺失：** 由于未能识别关节，PAct无法为抽屉生成可行的运动，这直接影响了生成三维铰链物体的核心目标。\n4.  **对2D分割的依赖可能导致关节缺失：** 2D part mask清晰地将抽屉和柜体分开，但并未直接编码关节信息。PAct可能过度依赖2D分割的静态边界，而未能从单视图输入中推断出潜在的运动机制。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解良好：** PAct成功地将床头柜分解为两个部分（柜体和抽屉），与GT parts数量一致（part_count_mae=0），且几何形状保持完整。\n2.  **关节识别失败：** PAct未能识别出抽屉的可移动关节（joint_f1=0.000），尽管GT显示有一个可移动部件。这表明模型在理解部件间的运动关系方面存在不足。\n3.  **运动可行性缺失：** 由于未能识别关节，PAct无法为抽屉生成可行的运动，这直接影响了生成三维铰链物体的核心目标。\n4.  **对2D分割的依赖可能导致关节缺失：** 2D part mask清晰地将抽屉和柜体分开，但并未直接编码关节信息。PAct可能过度依赖2D分割的静态边界，而未能从单视图输入中推断出潜在的运动机制。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 441,
            "candidatesTokenCount": 228,
            "totalTokenCount": 669,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 183
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "X0EPavSSD5Ptz7IPopPXyAc"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm/source_textured.glb",
        "gt_parts_glb": "viewer_assets/095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm/gt_parts.glb",
        "pact_glb": "viewer_assets/095_ArtVIP_small_furniture_small_furniture_GULLABERG_Bedside_table_with_1_drawe_with_shelf_white_53x43x69cm/pact_parts.glb"
      }
    },
    {
      "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,
      "texture_render": {
        "visual_meshes": 10,
        "texture_like_meshes": 7,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/pact_inputs/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/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": 16.070023000240326,
            "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.715903770670618,
            "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.28409622932938206,
            "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.5634717135442822,
              "limit_error": 60.68411190907029,
              "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.5903770670618,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 42.88269111585186,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_easycase_probe_20260521/vlm_cards/060_PartNetMobility_architectural_fixtures_architectural_fixtures_3135.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对 PAct 在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与 Part 分解：** PAct 生成的 3D 几何形状与 2D part mask 吻合，但与原始输入图像相比，丢失了内部的多个小隔板细节，只保留了外部框架和一个可移动的盖子。这表明模型可能过度简化了复杂结构。\n2.  **关节数量/类型与运动可行性：** 尽管 `part_count_mae=0` 表明 part 数量与 GT 相同，但 `joint_f1=0.000` 严重偏低，说明模型未能正确识别或生成任何关节。这导致了运动可行性为零，与 GT 中存在一个可移动部件（`GT movable=1`）不符。\n3.  **对 2D 分割的依赖：** PAct 的输出（2D part mask）直接反映了对输入图像的简化理解，即只识别出两个主要部分。这强烈暴露出模型对 2D 分割结果的依赖，当 2D 分割未能捕捉到所有细微结构时，3D 生成也会相应地缺失这些细节和潜在的关节。\n4.  **整体性能：** PAct 的 `weighted_score=42.88` 较低，主要受 `joint_f1` 为零的拖累。模型在识别部件数量上表现良好，但在理解部件之间的铰链关系和生成可动关节方面存在严重缺陷。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对 PAct 在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与 Part 分解：** PAct 生成的 3D 几何形状与 2D part mask 吻合，但与原始输入图像相比，丢失了内部的多个小隔板细节，只保留了外部框架和一个可移动的盖子。这表明模型可能过度简化了复杂结构。\n2.  **关节数量/类型与运动可行性：** 尽管 `part_count_mae=0` 表明 part 数量与 GT 相同，但 `joint_f1=0.000` 严重偏低，说明模型未能正确识别或生成任何关节。这导致了运动可行性为零，与 GT 中存在一个可移动部件（`GT movable=1`）不符。\n3.  **对 2D 分割的依赖：** PAct 的输出（2D part mask）直接反映了对输入图像的简化理解，即只识别出两个主要部分。这强烈暴露出模型对 2D 分割结果的依赖，当 2D 分割未能捕捉到所有细微结构时，3D 生成也会相应地缺失这些细节和潜在的关节。\n4.  **整体性能：** PAct 的 `weighted_score=42.88` 较低，主要受 `joint_f1` 为零的拖累。模型在识别部件数量上表现良好，但在理解部件之间的铰链关系和生成可动关节方面存在严重缺陷。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 419,
            "candidatesTokenCount": 333,
            "totalTokenCount": 752,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 161
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "YkEPaoy2LqPgz7IP9dSpCA"
        }
      },
      "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/pact_parts.glb"
      }
    }
  ],
  "aggregate": {
    "mean_weighted_score": 40.864271478346495,
    "by_source": {
      "ArtVIP": 43.9406524300549,
      "GAPartNet": 42.35045168909737,
      "GRScenes": 38.44993104042823,
      "PartNetMobility": 42.88269111585186
    },
    "mean_joint_f1": 0.0,
    "mean_part_count_mae": 0.125
  }
}
