{
  "run_id": "pact_eval100_pm_easycase_probe_20260521",
  "title": "PAct Eval100 PartNetMobility easy-case probe",
  "portal_summary": "Manual probe over low-part-count PartNetMobility samples with VLM QA and interactive 3D previews.",
  "portal_tags": [
    "PAct",
    "Eval100",
    "easy-cases",
    "metrics"
  ],
  "timestamp": "2026-05-21T17:30:18+00:00",
  "selection_policy": "manual benchmark_index selection: 50, 58, 62, 66, 67, 77, 82, 89",
  "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": "050_PartNetMobility_Clock_Clock_6641",
      "benchmark_index": 50,
      "sample_id": "PartNetMobility/Clock/6641",
      "source_dataset": "PartNetMobility",
      "category": "Clock",
      "object_id": "Clock/6641",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 6,
        "texture_like_meshes": 4,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_inputs/050_PartNetMobility_Clock_Clock_6641/050_PartNetMobility_Clock_Clock_6641_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/050_PartNetMobility_Clock_Clock_6641@050_PartNetMobility_Clock_Clock_6641_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": 14.901646375656128,
            "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.5468537379667018,
            "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.5,
            "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.4531462620332982,
            "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": 1,
          "gt_part_count": 2,
          "pred_joint_count": 0,
          "gt_joint_count": 1,
          "matches": [],
          "pred_tree": {
            "root_count": 1,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 1
          },
          "ref_tree": {
            "root_count": 1,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 1
          }
        }
      },
      "group_scores": {
        "pipeline_availability": 100.0,
        "geometry": 54.68537379667018,
        "part_decomposition": 50.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 29.687164283684762,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/vlm_cards/050_PartNetMobility_Clock_Clock_6641.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在给定样本上表现的简短测评和问题发现：\n\n1.  **几何完整性差，Part分解不准确：** 生成的三维模型几何结构不完整，存在明显的缺失部分（例如，时钟的背面和侧面缺失），且与原始输入形状差异较大。Part分解也存在问题，GT有2个part，但PAct的part_count_mae=1，说明它只识别出了1个part，未能正确分解。\n2.  **关节识别完全失败，运动不可行：** joint_f1=0.000表明PAct未能识别出任何关节，导致无法推断出任何可行的运动。这与GT movable=1相悖，说明模型完全无法理解物体的铰链特性。\n3.  **对2D分割的依赖性暴露：** 2D part mask显示只有一个大的蓝色区域，这可能直接导致PAct将整个物体视为一个单一的part，从而无法进行进一步的part分解和关节识别。这暴露了模型对2D分割输入的强依赖性，如果2D分割不准确或过于简化，3D生成结果也会受到严重影响。\n4.  **PAct score较低，反映整体性能不佳：** PAct weighted_score=29.69，相对较低，进一步印证了模型在该样本上在几何、part分解和关节识别方面的综合性能不佳。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在给定样本上表现的简短测评和问题发现：\n\n1.  **几何完整性差，Part分解不准确：** 生成的三维模型几何结构不完整，存在明显的缺失部分（例如，时钟的背面和侧面缺失），且与原始输入形状差异较大。Part分解也存在问题，GT有2个part，但PAct的part_count_mae=1，说明它只识别出了1个part，未能正确分解。\n2.  **关节识别完全失败，运动不可行：** joint_f1=0.000表明PAct未能识别出任何关节，导致无法推断出任何可行的运动。这与GT movable=1相悖，说明模型完全无法理解物体的铰链特性。\n3.  **对2D分割的依赖性暴露：** 2D part mask显示只有一个大的蓝色区域，这可能直接导致PAct将整个物体视为一个单一的part，从而无法进行进一步的part分解和关节识别。这暴露了模型对2D分割输入的强依赖性，如果2D分割不准确或过于简化，3D生成结果也会受到严重影响。\n4.  **PAct score较低，反映整体性能不佳：** PAct weighted_score=29.69，相对较低，进一步印证了模型在该样本上在几何、part分解和关节识别方面的综合性能不佳。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 413,
            "candidatesTokenCount": 305,
            "totalTokenCount": 718,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 155
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "bkEPaonOBKmfz7IPjdyl6Q0"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/050_PartNetMobility_Clock_Clock_6641/source_textured.glb",
        "gt_parts_glb": "viewer_assets/050_PartNetMobility_Clock_Clock_6641/gt_parts.glb",
        "pact_glb": "viewer_assets/050_PartNetMobility_Clock_Clock_6641/pact_parts.glb"
      }
    },
    {
      "sample_name": "058_PartNetMobility_small_appliances_small_appliances_3483",
      "benchmark_index": 58,
      "sample_id": "PartNetMobility/small_appliances/3483",
      "source_dataset": "PartNetMobility",
      "category": "small_appliances",
      "object_id": "small_appliances/3483",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 46,
        "texture_like_meshes": 0,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_inputs/058_PartNetMobility_small_appliances_small_appliances_3483/058_PartNetMobility_small_appliances_small_appliances_3483_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/058_PartNetMobility_small_appliances_small_appliances_3483@058_PartNetMobility_small_appliances_small_appliances_3483_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": 14.901646375656128,
            "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.6132554244474869,
            "status": "measured",
            "note": ""
          },
          "mesh_manifold_sanity": {
            "value": null,
            "status": "not_provided",
            "note": "Requires mesh repair/manifold pass."
          },
          "texture_or_material_coverage": {
            "value": 0.0,
            "status": "not_provided",
            "note": "PAct smoke export is untextured PLY."
          }
        },
        "part_decomposition": {
          "part_count_mae": {
            "value": 0,
            "status": "measured",
            "note": ""
          },
          "part_count_accuracy": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "part_segmentation_miou_if_masks_available": {
            "value": null,
            "status": "requires_gt",
            "note": "2D mask GT is conditioning input; not a predicted mask output."
          },
          "semantic_part_accuracy": {
            "value": null,
            "status": "not_provided",
            "note": "PAct output names are not semantic labels in this export."
          },
          "parent_child_accuracy": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "tree_edit_distance": {
            "value": 0,
            "status": "measured",
            "note": ""
          },
          "orphan_duplicate_part_rate": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          }
        },
        "kinematics": {
          "joint_count_mae": {
            "value": 0,
            "status": "measured",
            "note": ""
          },
          "joint_precision": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          },
          "joint_recall": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          },
          "joint_f1": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          },
          "joint_type_accuracy": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          },
          "axis_angular_error_deg": {
            "value": 90.0,
            "status": "measured",
            "note": ""
          },
          "origin_distance_error": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          },
          "joint_limit_error": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          },
          "kinematic_tree_validity": {
            "value": 1,
            "status": "measured",
            "note": ""
          }
        },
        "motion_consistency": {
          "detachment_distance": {
            "value": null,
            "status": "requires_simulation",
            "note": ""
          },
          "collision_rate": {
            "value": null,
            "status": "requires_simulation",
            "note": ""
          },
          "self_collision_rate": {
            "value": null,
            "status": "requires_simulation",
            "note": ""
          },
          "closed_state_assembly_error": {
            "value": 0.38674457555251307,
            "status": "measured",
            "note": ""
          },
          "open_state_plausibility": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          },
          "trajectory_smoothness": {
            "value": null,
            "status": "requires_simulation",
            "note": ""
          }
        },
        "ot_routing_diagnostics": {
          "ot_modules_active": {
            "value": 0,
            "status": "not_applicable",
            "note": "Raw PAct baseline; no OT module."
          },
          "ot_gate_mean": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_plan_marginal_error": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_assignment_entropy": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_edge_delta": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_mask_prior_beta": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_mask_dropout_delta": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_virtual_mass": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "part_patch_compactness": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          }
        },
        "robustness_breakdown": {
          "macro_score_by_source_dataset": {
            "value": null,
            "status": "not_applicable",
            "note": "Aggregate-only metric; see report.aggregate.by_source."
          },
          "macro_score_by_category": {
            "value": null,
            "status": "not_applicable",
            "note": "Aggregate-only metric; sample count is 5."
          },
          "macro_score_by_problem_tag": {
            "value": null,
            "status": "not_applicable",
            "note": "Aggregate-only metric; sample count is 5."
          },
          "worst_10pct_score": {
            "value": null,
            "status": "not_applicable",
            "note": "Aggregate-only metric; sample count is 5."
          },
          "failure_cluster_count": {
            "value": null,
            "status": "not_provided",
            "note": "Requires larger batch clustering."
          }
        },
        "debug": {
          "pred_part_count": 2,
          "gt_part_count": 2,
          "pred_joint_count": 1,
          "gt_joint_count": 1,
          "matches": [
            {
              "type_mismatch": 1.0,
              "axis_error_deg": 90.0,
              "origin_error": 0.6068174651920257,
              "limit_error": 71.8715087890625,
              "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": 61.32554244474869,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 41.261927754434005,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/vlm_cards/058_PartNetMobility_small_appliances_small_appliances_3483.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在样本3483上的简短测评和问题发现：\n\n1.  **几何完整性良好，但Part分解不准确：** PAct生成的几何形状与输入模型高度一致，但未能正确识别出GT中可移动的部件（GT movable=1），而是将整个物体视为一个整体（2D mask显示只有一个蓝色大块和一个小红色块）。\n2.  **关节数量/类型识别失败：** PAct的joint_f1为0.000，表明它完全未能识别出任何关节，也因此无法推断出关节类型。这直接导致了运动可行性评估的失败。\n3.  **对2D分割的依赖性暴露：** 2D part mask仅将顶部的小把手（红色）与主体（蓝色）分开，而GT parts=2且GT movable=1，暗示主体内部应有可移动部件（例如烤面包机的槽）。PAct的输出似乎过于依赖这个粗粒度的2D分割，未能进行更深层次的语义理解和部件分解。\n4.  **运动可行性无法评估：** 由于未能识别出可移动部件和关节，PAct无法为该物体生成任何有意义的运动。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在样本3483上的简短测评和问题发现：\n\n1.  **几何完整性良好，但Part分解不准确：** PAct生成的几何形状与输入模型高度一致，但未能正确识别出GT中可移动的部件（GT movable=1），而是将整个物体视为一个整体（2D mask显示只有一个蓝色大块和一个小红色块）。\n2.  **关节数量/类型识别失败：** PAct的joint_f1为0.000，表明它完全未能识别出任何关节，也因此无法推断出关节类型。这直接导致了运动可行性评估的失败。\n3.  **对2D分割的依赖性暴露：** 2D part mask仅将顶部的小把手（红色）与主体（蓝色）分开，而GT parts=2且GT movable=1，暗示主体内部应有可移动部件（例如烤面包机的槽）。PAct的输出似乎过于依赖这个粗粒度的2D分割，未能进行更深层次的语义理解和部件分解。\n4.  **运动可行性无法评估：** 由于未能识别出可移动部件和关节，PAct无法为该物体生成任何有意义的运动。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 419,
            "candidatesTokenCount": 264,
            "totalTokenCount": 683,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 161
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "c0EPasH7AcGez7IP0bqnqA8"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/058_PartNetMobility_small_appliances_small_appliances_3483/source_textured.glb",
        "gt_parts_glb": "viewer_assets/058_PartNetMobility_small_appliances_small_appliances_3483/gt_parts.glb",
        "pact_glb": "viewer_assets/058_PartNetMobility_small_appliances_small_appliances_3483/pact_parts.glb"
      }
    },
    {
      "sample_name": "062_PartNetMobility_small_appliances_small_appliances_1436",
      "benchmark_index": 62,
      "sample_id": "PartNetMobility/small_appliances/1436",
      "source_dataset": "PartNetMobility",
      "category": "small_appliances",
      "object_id": "small_appliances/1436",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 24,
        "texture_like_meshes": 9,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_inputs/062_PartNetMobility_small_appliances_small_appliances_1436/062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/062_PartNetMobility_small_appliances_small_appliances_1436@062_PartNetMobility_small_appliances_small_appliances_1436_synthetic_processed.@ng/object.json",
      "pact_exploded_png": null,
      "metric_groups": {
        "pipeline_availability": {
          "inference_success": {
            "value": 1,
            "status": "measured",
            "note": ""
          },
          "object_json_valid": {
            "value": 1,
            "status": "measured",
            "note": ""
          },
          "glb_export_success": {
            "value": 0,
            "status": "not_provided",
            "note": "This smoke run exports articulated object JSON/PLY, not textured GLB."
          },
          "part_asset_completeness": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "runtime_seconds": {
            "value": 14.901646375656128,
            "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.5295761761871765,
            "status": "measured",
            "note": ""
          },
          "mesh_manifold_sanity": {
            "value": null,
            "status": "not_provided",
            "note": "Requires mesh repair/manifold pass."
          },
          "texture_or_material_coverage": {
            "value": 0.0,
            "status": "not_provided",
            "note": "PAct smoke export is untextured PLY."
          }
        },
        "part_decomposition": {
          "part_count_mae": {
            "value": 0,
            "status": "measured",
            "note": ""
          },
          "part_count_accuracy": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "part_segmentation_miou_if_masks_available": {
            "value": null,
            "status": "requires_gt",
            "note": "2D mask GT is conditioning input; not a predicted mask output."
          },
          "semantic_part_accuracy": {
            "value": null,
            "status": "not_provided",
            "note": "PAct output names are not semantic labels in this export."
          },
          "parent_child_accuracy": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "tree_edit_distance": {
            "value": 0,
            "status": "measured",
            "note": ""
          },
          "orphan_duplicate_part_rate": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          }
        },
        "kinematics": {
          "joint_count_mae": {
            "value": 0,
            "status": "measured",
            "note": ""
          },
          "joint_precision": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "joint_recall": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "joint_f1": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "joint_type_accuracy": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "axis_angular_error_deg": {
            "value": 0.0,
            "status": "measured",
            "note": ""
          },
          "origin_distance_error": {
            "value": 0.3437495308430837,
            "status": "measured",
            "note": ""
          },
          "joint_limit_error": {
            "value": 53.354826601333905,
            "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.47042382381282355,
            "status": "measured",
            "note": ""
          },
          "open_state_plausibility": {
            "value": 1.0,
            "status": "measured",
            "note": ""
          },
          "trajectory_smoothness": {
            "value": null,
            "status": "requires_simulation",
            "note": ""
          }
        },
        "ot_routing_diagnostics": {
          "ot_modules_active": {
            "value": 0,
            "status": "not_applicable",
            "note": "Raw PAct baseline; no OT module."
          },
          "ot_gate_mean": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_plan_marginal_error": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_assignment_entropy": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_edge_delta": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_mask_prior_beta": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_mask_dropout_delta": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "ot_virtual_mass": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          },
          "part_patch_compactness": {
            "value": null,
            "status": "not_applicable",
            "note": ""
          }
        },
        "robustness_breakdown": {
          "macro_score_by_source_dataset": {
            "value": null,
            "status": "not_applicable",
            "note": "Aggregate-only metric; see report.aggregate.by_source."
          },
          "macro_score_by_category": {
            "value": null,
            "status": "not_applicable",
            "note": "Aggregate-only metric; sample count is 5."
          },
          "macro_score_by_problem_tag": {
            "value": null,
            "status": "not_applicable",
            "note": "Aggregate-only metric; sample count is 5."
          },
          "worst_10pct_score": {
            "value": null,
            "status": "not_applicable",
            "note": "Aggregate-only metric; sample count is 5."
          },
          "failure_cluster_count": {
            "value": null,
            "status": "not_provided",
            "note": "Requires larger batch clustering."
          }
        },
        "debug": {
          "pred_part_count": 2,
          "gt_part_count": 2,
          "pred_joint_count": 1,
          "gt_joint_count": 1,
          "matches": [
            {
              "type_mismatch": 0.0,
              "axis_error_deg": 0.0,
              "origin_error": 0.3437495308430837,
              "limit_error": 53.354826601333905,
              "accepted": true
            }
          ],
          "pred_tree": {
            "root_count": 1,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 1
          },
          "ref_tree": {
            "root_count": 1,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 1
          }
        }
      },
      "group_scores": {
        "pipeline_availability": 100.0,
        "geometry": 52.95761761871765,
        "part_decomposition": 100.0,
        "kinematics": 100.0,
        "motion_consistency": 100.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 82.04593962400804,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/vlm_cards/062_PartNetMobility_small_appliances_small_appliances_1436.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "PAct 在此样本上表现良好，与GT数据高度一致。\n\n1.  **几何完整性与Part分解：** PAct成功地将物体分解为两个部分（中心圆盘和四个叶片），与GT parts=2一致。几何形状也与输入图像高度匹配。\n2.  **关节数量/类型与运动可行性：** PAct识别出1个可动关节，与GT movable=1一致。考虑到这是一个风扇叶片结构，很可能是一个旋转关节，运动可行性高。\n3.  **对2D分割的依赖：** PAct的输出与2D part mask高度一致，表明它能有效利用2D分割信息进行3D重建和part分解。\n4.  **潜在问题：** 图像中风扇叶片似乎是连接在一起的，但2D mask将它们视为一个整体（红色部分）。如果GT将每个叶片视为一个单独的part，那么PAct的part分解可能不够细致。然而，根据提供的GT parts=2，PAct的分解是正确的。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "PAct 在此样本上表现良好，与GT数据高度一致。\n\n1.  **几何完整性与Part分解：** PAct成功地将物体分解为两个部分（中心圆盘和四个叶片），与GT parts=2一致。几何形状也与输入图像高度匹配。\n2.  **关节数量/类型与运动可行性：** PAct识别出1个可动关节，与GT movable=1一致。考虑到这是一个风扇叶片结构，很可能是一个旋转关节，运动可行性高。\n3.  **对2D分割的依赖：** PAct的输出与2D part mask高度一致，表明它能有效利用2D分割信息进行3D重建和part分解。\n4.  **潜在问题：** 图像中风扇叶片似乎是连接在一起的，但2D mask将它们视为一个整体（红色部分）。如果GT将每个叶片视为一个单独的part，那么PAct的part分解可能不够细致。然而，根据提供的GT parts=2，PAct的分解是正确的。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 419,
            "candidatesTokenCount": 230,
            "totalTokenCount": 649,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 161
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "dkEPat6mNtGHz7IPpMDLCA"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/source_textured.glb",
        "gt_parts_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/gt_parts.glb",
        "pact_glb": "viewer_assets/062_PartNetMobility_small_appliances_small_appliances_1436/pact_parts.glb"
      }
    },
    {
      "sample_name": "066_PartNetMobility_household_fixtures_household_fixtures_871",
      "benchmark_index": 66,
      "sample_id": "PartNetMobility/household_fixtures/871",
      "source_dataset": "PartNetMobility",
      "category": "household_fixtures",
      "object_id": "household_fixtures/871",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 5,
        "texture_like_meshes": 0,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_inputs/066_PartNetMobility_household_fixtures_household_fixtures_871/066_PartNetMobility_household_fixtures_household_fixtures_871_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/066_PartNetMobility_household_fixtures_household_fixtures_871@066_PartNetMobility_household_fixtures_household_fixtures_871_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": 14.901646375656128,
            "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.5278162570010345,
            "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": 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": 0,
            "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.4721837429989655,
            "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.5901943181006489,
              "limit_error": 14.176057187728594,
              "accepted": false
            }
          ],
          "pred_tree": {
            "root_count": 2,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 0
          },
          "ref_tree": {
            "root_count": 1,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 1
          }
        }
      },
      "group_scores": {
        "pipeline_availability": 100.0,
        "geometry": 52.781625700103454,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 39.912888268437385,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/vlm_cards/066_PartNetMobility_household_fixtures_household_fixtures_871.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct生成的几何体与输入图像基本一致，part分解数量（2个）也与GT相符。然而，从2D mask看，红色部分（盖子上的小矩形）被识别为一个独立的part，这与实际物体（通常盖子是一个整体）不符，可能导致不自然的part分解。\n2.  **关节数量/类型与运动可行性：** PAct的joint_f1为0.000，表明未能识别出任何关节，也未能识别出可动部件（GT movable=1）。这直接导致运动可行性为零，无法模拟物体（如垃圾桶盖）的铰链运动。\n3.  **对2D分割的依赖：** PAct似乎过度依赖2D part mask的局部特征。2D mask中将盖子上的小矩形独立分割出来，PAct也将其视为一个独立part，但实际物体中这通常是盖子的一部分，而非独立可动部件。这暴露了模型对2D分割的强依赖性，且未能结合物体常识进行更合理的3D结构和运动推断。\n4.  **整体性能：** PAct的weighted_score仅为39.91，且未能识别任何关节，表明其在理解物体铰链结构和运动能力方面表现不佳。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct生成的几何体与输入图像基本一致，part分解数量（2个）也与GT相符。然而，从2D mask看，红色部分（盖子上的小矩形）被识别为一个独立的part，这与实际物体（通常盖子是一个整体）不符，可能导致不自然的part分解。\n2.  **关节数量/类型与运动可行性：** PAct的joint_f1为0.000，表明未能识别出任何关节，也未能识别出可动部件（GT movable=1）。这直接导致运动可行性为零，无法模拟物体（如垃圾桶盖）的铰链运动。\n3.  **对2D分割的依赖：** PAct似乎过度依赖2D part mask的局部特征。2D mask中将盖子上的小矩形独立分割出来，PAct也将其视为一个独立part，但实际物体中这通常是盖子的一部分，而非独立可动部件。这暴露了模型对2D分割的强依赖性，且未能结合物体常识进行更合理的3D结构和运动推断。\n4.  **整体性能：** PAct的weighted_score仅为39.91，且未能识别任何关节，表明其在理解物体铰链结构和运动能力方面表现不佳。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 416,
            "candidatesTokenCount": 310,
            "totalTokenCount": 726,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 158
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "ekEPav6AHoDRz7IP5o_t6Ag"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/066_PartNetMobility_household_fixtures_household_fixtures_871/source_textured.glb",
        "gt_parts_glb": "viewer_assets/066_PartNetMobility_household_fixtures_household_fixtures_871/gt_parts.glb",
        "pact_glb": "viewer_assets/066_PartNetMobility_household_fixtures_household_fixtures_871/pact_parts.glb"
      }
    },
    {
      "sample_name": "067_PartNetMobility_household_fixtures_household_fixtures_915",
      "benchmark_index": 67,
      "sample_id": "PartNetMobility/household_fixtures/915",
      "source_dataset": "PartNetMobility",
      "category": "household_fixtures",
      "object_id": "household_fixtures/915",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 11,
        "texture_like_meshes": 2,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_inputs/067_PartNetMobility_household_fixtures_household_fixtures_915/067_PartNetMobility_household_fixtures_household_fixtures_915_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/067_PartNetMobility_household_fixtures_household_fixtures_915@067_PartNetMobility_household_fixtures_household_fixtures_915_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": 14.901646375656128,
            "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.604920551819454,
            "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.39507944818054597,
            "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": 88.51979708892979,
              "origin_error": 0.3018219058890781,
              "limit_error": 359.63557525218357,
              "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.4920551819454,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 41.13032450241243,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/vlm_cards/067_PartNetMobility_household_fixtures_household_fixtures_915.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性良好，Part分解准确：** PAct成功地从单视图输入和2D mask中重建了插座的几何形状，并且part分解（底座和开关）与GT parts=2一致。\n2.  **关节数量/类型识别失败：** PAct的joint_f1为0.000，表明它未能识别出开关的可动性或正确的关节类型（GT movable=1）。\n3.  **运动可行性缺失：** 由于未能识别关节，模型无法为开关生成可行的运动。\n4.  **对2D分割的依赖性未完全体现：** 尽管2D part mask提供了明确的part边界，但模型未能将此信息转化为可动的关节，这可能表明其在从静态分割推断动态关节方面的局限性。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在该样本上的简短测评和问题发现：\n\n1.  **几何完整性良好，Part分解准确：** PAct成功地从单视图输入和2D mask中重建了插座的几何形状，并且part分解（底座和开关）与GT parts=2一致。\n2.  **关节数量/类型识别失败：** PAct的joint_f1为0.000，表明它未能识别出开关的可动性或正确的关节类型（GT movable=1）。\n3.  **运动可行性缺失：** 由于未能识别关节，模型无法为开关生成可行的运动。\n4.  **对2D分割的依赖性未完全体现：** 尽管2D part mask提供了明确的part边界，但模型未能将此信息转化为可动的关节，这可能表明其在从静态分割推断动态关节方面的局限性。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 416,
            "candidatesTokenCount": 194,
            "totalTokenCount": 610,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 158
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "f0EPasTyBPHoz7IP5NvmgQM"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/067_PartNetMobility_household_fixtures_household_fixtures_915/source_textured.glb",
        "gt_parts_glb": "viewer_assets/067_PartNetMobility_household_fixtures_household_fixtures_915/gt_parts.glb",
        "pact_glb": "viewer_assets/067_PartNetMobility_household_fixtures_household_fixtures_915/pact_parts.glb"
      }
    },
    {
      "sample_name": "077_PartNetMobility_small_appliances_small_appliances_1450",
      "benchmark_index": 77,
      "sample_id": "PartNetMobility/small_appliances/1450",
      "source_dataset": "PartNetMobility",
      "category": "small_appliances",
      "object_id": "small_appliances/1450",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 14,
        "texture_like_meshes": 0,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_inputs/077_PartNetMobility_small_appliances_small_appliances_1450/077_PartNetMobility_small_appliances_small_appliances_1450_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/077_PartNetMobility_small_appliances_small_appliances_1450@077_PartNetMobility_small_appliances_small_appliances_1450_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": 14.901646375656128,
            "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.6677455169018812,
            "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.3322544830981188,
            "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.6575915599347089,
              "limit_error": 66.91012063819915,
              "accepted": false
            }
          ],
          "pred_tree": {
            "root_count": 1,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 1
          },
          "ref_tree": {
            "root_count": 1,
            "duplicate_ids": 0,
            "dangling_parent_count": 0,
            "cycle_node_count": 0,
            "valid": 1
          }
        }
      },
      "group_scores": {
        "pipeline_availability": 100.0,
        "geometry": 66.77455169018812,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 42.12229763529286,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/vlm_cards/077_PartNetMobility_small_appliances_small_appliances_1450.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct生成的3D模型在几何上与输入图像高度一致，且Part分解与2D mask完全匹配，成功将风扇叶片和外壳分离。\n2.  **关节数量/类型与运动可行性：** PAct未能识别出风扇叶片的可动性（joint_f1=0.000），表明其未能正确推断出旋转关节，导致运动可行性为零。\n3.  **对2D分割的依赖：** PAct的Part分解完全依赖于2D part mask，这在几何上是准确的，但未能从2D信息中进一步推断出部件间的铰链关系和运动属性。\n4.  **潜在问题：** 尽管part_count_mae=0，但未能识别出可动部件是主要缺陷，这限制了模型在生成可动3D物体方面的实用性。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在给定样本上的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct生成的3D模型在几何上与输入图像高度一致，且Part分解与2D mask完全匹配，成功将风扇叶片和外壳分离。\n2.  **关节数量/类型与运动可行性：** PAct未能识别出风扇叶片的可动性（joint_f1=0.000），表明其未能正确推断出旋转关节，导致运动可行性为零。\n3.  **对2D分割的依赖：** PAct的Part分解完全依赖于2D part mask，这在几何上是准确的，但未能从2D信息中进一步推断出部件间的铰链关系和运动属性。\n4.  **潜在问题：** 尽管part_count_mae=0，但未能识别出可动部件是主要缺陷，这限制了模型在生成可动3D物体方面的实用性。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 419,
            "candidatesTokenCount": 219,
            "totalTokenCount": 638,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 161
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "gkEPar7oNaesz7IPxdi0mQo"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/077_PartNetMobility_small_appliances_small_appliances_1450/source_textured.glb",
        "gt_parts_glb": "viewer_assets/077_PartNetMobility_small_appliances_small_appliances_1450/gt_parts.glb",
        "pact_glb": "viewer_assets/077_PartNetMobility_small_appliances_small_appliances_1450/pact_parts.glb"
      }
    },
    {
      "sample_name": "082_PartNetMobility_household_fixtures_household_fixtures_914",
      "benchmark_index": 82,
      "sample_id": "PartNetMobility/household_fixtures/914",
      "source_dataset": "PartNetMobility",
      "category": "household_fixtures",
      "object_id": "household_fixtures/914",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 216,
        "texture_like_meshes": 0,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_inputs/082_PartNetMobility_household_fixtures_household_fixtures_914/082_PartNetMobility_household_fixtures_household_fixtures_914_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/082_PartNetMobility_household_fixtures_household_fixtures_914@082_PartNetMobility_household_fixtures_household_fixtures_914_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": 14.901646375656128,
            "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.6380798192854266,
            "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.36192018071457344,
            "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.756761982242,
              "origin_error": 0.43100563300486866,
              "limit_error": 359.7556539047208,
              "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": 63.80798192854266,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 41.65389188345411,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/vlm_cards/082_PartNetMobility_household_fixtures_household_fixtures_914.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对 PAct 在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与 Part 分解：** PAct 似乎成功地根据 2D part mask 将物体分解为两个部分，与 GT parts 数量一致 (part_count_mae=0)。几何形状也基本保持完整。\n2.  **关节数量/类型与运动可行性：** PAct 未能识别出任何关节 (joint_f1=0.000)，这表明它未能预测出物体的可动性，尽管 GT 显示有一个可动部件。这严重影响了运动可行性。\n3.  **对 2D 分割的依赖：** PAct 严格遵循了 2D part mask 进行分割，但未能从几何结构中推断出潜在的铰链关系。这可能暴露出它对 2D 分割的过度依赖，而缺乏对 3D 结构和功能关系的理解。\n4.  **PAct score 较低：** 41.65 的 weighted_score 相对较低，主要原因可能是未能识别出关节，导致 joint_f1 为 0。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对 PAct 在该样本上的简短测评和问题发现：\n\n1.  **几何完整性与 Part 分解：** PAct 似乎成功地根据 2D part mask 将物体分解为两个部分，与 GT parts 数量一致 (part_count_mae=0)。几何形状也基本保持完整。\n2.  **关节数量/类型与运动可行性：** PAct 未能识别出任何关节 (joint_f1=0.000)，这表明它未能预测出物体的可动性，尽管 GT 显示有一个可动部件。这严重影响了运动可行性。\n3.  **对 2D 分割的依赖：** PAct 严格遵循了 2D part mask 进行分割，但未能从几何结构中推断出潜在的铰链关系。这可能暴露出它对 2D 分割的过度依赖，而缺乏对 3D 结构和功能关系的理解。\n4.  **PAct score 较低：** 41.65 的 weighted_score 相对较低，主要原因可能是未能识别出关节，导致 joint_f1 为 0。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 416,
            "candidatesTokenCount": 248,
            "totalTokenCount": 664,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 158
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "hkEPas6DE9GHz7IPpMDLCA"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/082_PartNetMobility_household_fixtures_household_fixtures_914/source_textured.glb",
        "gt_parts_glb": "viewer_assets/082_PartNetMobility_household_fixtures_household_fixtures_914/gt_parts.glb",
        "pact_glb": "viewer_assets/082_PartNetMobility_household_fixtures_household_fixtures_914/pact_parts.glb"
      }
    },
    {
      "sample_name": "089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543",
      "benchmark_index": 89,
      "sample_id": "PartNetMobility/major_appliances/PartNetMobility_12543",
      "source_dataset": "PartNetMobility",
      "category": "major_appliances",
      "object_id": "major_appliances/PartNetMobility_12543",
      "num_parts": 2,
      "movable_parts": 1,
      "texture_render": {
        "visual_meshes": 13,
        "texture_like_meshes": 6,
        "status": "textured_visual_render"
      },
      "partcolor_debug_png": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_inputs/089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543/089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543_synthetic_partcolor_debug.png",
      "pact_object_json": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/pact_outputs/seed42_slatcfg7.0_sscfg7.0_sssteps25_slatsteps25_artioutmean_feature_regression_steps/exported_arti_objects/089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543@089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543_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": 14.901646375656128,
            "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.7448992539879123,
            "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.25510074601208765,
            "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.5174011183546401,
              "limit_error": 83.3313706676152,
              "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.48992539879123,
        "part_decomposition": 100.0,
        "kinematics": 0.0,
        "motion_consistency": 0.0,
        "ot_routing_diagnostics": 0.0
      },
      "weighted_score": 43.34051453665124,
      "vlm_card": "/data/250010098/PAct-Transporter/reports/20260513_pact_transporter_exploration/runs/pact_eval100_pm_easycase_probe_20260521/vlm_cards/089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543.png",
      "vlm": {
        "ok": true,
        "model": "gemini-2.5-flash",
        "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct成功地将物体分解为两个部分（与GT parts=2一致），并且几何形状大致完整，但手柄部分在PAct input中显得模糊且与主体融合，未被识别为独立部件。\n2.  **关节数量/类型与运动可行性：** PAct的joint_f1为0.000，表明未能识别出任何关节，因此无法推断运动可行性。GT movable=1，说明存在一个可动部件，但PAct未能捕捉到。\n3.  **对2D分割的依赖：** 2D part mask清晰地将顶部（红色）和底部（蓝色）分开，PAct的part分解与此2D分割高度一致。然而，2D mask未能区分手柄，这可能导致PAct也未能将其识别为独立部件或可动部件。\n4.  **潜在问题：** PAct似乎过度依赖2D part mask进行部件分解，而未能从3D几何信息中推断出更精细的部件（如手柄）或关节信息，导致运动可行性评估失败。",
        "raw": {
          "candidates": [
            {
              "content": {
                "parts": [
                  {
                    "text": "以下是对PAct在该样本上表现的简短测评和问题发现：\n\n1.  **几何完整性与Part分解：** PAct成功地将物体分解为两个部分（与GT parts=2一致），并且几何形状大致完整，但手柄部分在PAct input中显得模糊且与主体融合，未被识别为独立部件。\n2.  **关节数量/类型与运动可行性：** PAct的joint_f1为0.000，表明未能识别出任何关节，因此无法推断运动可行性。GT movable=1，说明存在一个可动部件，但PAct未能捕捉到。\n3.  **对2D分割的依赖：** 2D part mask清晰地将顶部（红色）和底部（蓝色）分开，PAct的part分解与此2D分割高度一致。然而，2D mask未能区分手柄，这可能导致PAct也未能将其识别为独立部件或可动部件。\n4.  **潜在问题：** PAct似乎过度依赖2D part mask进行部件分解，而未能从3D几何信息中推断出更精细的部件（如手柄）或关节信息，导致运动可行性评估失败。"
                  }
                ],
                "role": "model"
              },
              "finishReason": "STOP",
              "index": 0
            }
          ],
          "usageMetadata": {
            "promptTokenCount": 425,
            "candidatesTokenCount": 265,
            "totalTokenCount": 690,
            "promptTokensDetails": [
              {
                "modality": "TEXT",
                "tokenCount": 167
              },
              {
                "modality": "IMAGE",
                "tokenCount": 258
              }
            ],
            "serviceTier": "standard"
          },
          "modelVersion": "gemini-2.5-flash",
          "responseId": "ikEPas7UJ-2Hz7IPvr-b-A4"
        }
      },
      "interactive_3d": {
        "source_textured_glb": "viewer_assets/089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543/source_textured.glb",
        "gt_parts_glb": "viewer_assets/089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543/gt_parts.glb",
        "pact_glb": "viewer_assets/089_PartNetMobility_major_appliances_major_appliances_PartNetMobility_12543/pact_parts.glb"
      }
    }
  ],
  "aggregate": {
    "mean_weighted_score": 45.14436856104685,
    "by_source": {
      "PartNetMobility": 45.14436856104685
    },
    "mean_joint_f1": 0.125,
    "mean_part_count_mae": 0.125
  }
}
