{
  "experiment": "A37 deletion-closure topology repair",
  "protocol": {
    "source": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a36_conflict_face_removal/analysis.json",
    "selection_uses_gt": false,
    "retrospective_validation_uses_gt": false,
    "reference_for_fidelity": "A35 watertight repair mesh, not GT",
    "operators": [
      "A36 deleted control",
      "trimesh fill_holes",
      "largest component + fill_holes",
      "voxel fill + marching cubes pitch=0.025",
      "convex hull topology upper bound"
    ],
    "question": "Can local conflict-face deletion be made usable by post-hoc closure repair?"
  },
  "case_rows": [
    {
      "case_id": "gso_002_input4",
      "reference_mesh": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/mesh_repair_v6/hybrid_protocol4_limit10/gso_002_input4/mesh_watertight.obj",
      "deleted_mesh": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a36_conflict_face_removal/gso_002_input4/mesh_conflict_removed.obj",
      "removed_face_ratio": 0.1971782431052094,
      "candidate_rows": [
        {
          "method": "a36_deleted",
          "label": "A36 deleted control",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_002_input4/mesh_a36_deleted.obj",
          "stats": {
            "vertices": 97079,
            "faces": 188631,
            "watertight": false,
            "winding_consistent": true,
            "boundary_edges": 5895,
            "nonmanifold_edges": 0,
            "components": 60,
            "largest_component_face_ratio": 0.8868001547995823,
            "euler_number": -184
          },
          "ref_chamfer_mean": 0.009253222648032161,
          "cand_to_ref": 0.0076390940898353205,
          "ref_to_cand": 0.010867351206229,
          "face_ratio_vs_reference": 0.8028217568947906,
          "boundary_delta_vs_deleted": 0,
          "component_delta_vs_deleted": 0
        },
        {
          "method": "fill_holes",
          "label": "trimesh fill_holes",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_002_input4/mesh_fill_holes.obj",
          "stats": {
            "vertices": 97079,
            "faces": 188781,
            "watertight": false,
            "winding_consistent": true,
            "boundary_edges": 5507,
            "nonmanifold_edges": 19,
            "components": 67,
            "largest_component_face_ratio": 0.8862120658328964,
            "euler_number": -51
          },
          "ref_chamfer_mean": 0.009042958452533932,
          "cand_to_ref": 0.007522271223993694,
          "ref_to_cand": 0.010563645681074171,
          "face_ratio_vs_reference": 0.8034601634320735,
          "boundary_delta_vs_deleted": -388,
          "component_delta_vs_deleted": 7
        },
        {
          "method": "largest_fill",
          "label": "largest component + fill_holes",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_002_input4/mesh_largest_fill.obj",
          "stats": {
            "vertices": 85758,
            "faces": 167278,
            "watertight": false,
            "winding_consistent": true,
            "boundary_edges": 4434,
            "nonmanifold_edges": 1,
            "components": 2,
            "largest_component_face_ratio": 0.9999880438551394,
            "euler_number": -97
          },
          "ref_chamfer_mean": 0.01463543446590474,
          "cand_to_ref": 0.007699779641032682,
          "ref_to_cand": 0.021571089290776797,
          "face_ratio_vs_reference": 0.7119424582907729,
          "boundary_delta_vs_deleted": -1461,
          "component_delta_vs_deleted": -58
        },
        {
          "method": "voxel_close_p025",
          "label": "voxel fill + marching cubes, pitch=0.025",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_002_input4/mesh_voxel_close_p025.obj",
          "stats": {
            "vertices": 13874,
            "faces": 27936,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 2,
            "largest_component_face_ratio": 0.9340635738831615,
            "euler_number": -94
          },
          "ref_chamfer_mean": 0.016778922959193344,
          "cand_to_ref": 0.017300769658928888,
          "ref_to_cand": 0.016257076259457805,
          "face_ratio_vs_reference": 0.11889683350357508,
          "boundary_delta_vs_deleted": -5895,
          "component_delta_vs_deleted": -58
        },
        {
          "method": "convex_hull_control",
          "label": "convex hull topology upper bound",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_002_input4/mesh_convex_hull_control.obj",
          "stats": {
            "vertices": 629,
            "faces": 1254,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 1,
            "largest_component_face_ratio": 1.0,
            "euler_number": 2
          },
          "ref_chamfer_mean": 0.043369752195119536,
          "cand_to_ref": 0.04358171134503416,
          "ref_to_cand": 0.04315779304520491,
          "face_ratio_vs_reference": 0.0053370786516853935,
          "boundary_delta_vs_deleted": -5895,
          "component_delta_vs_deleted": -59
        }
      ],
      "best_topology_method": "voxel_close_p025",
      "best_fidelity_method": "fill_holes"
    },
    {
      "case_id": "gso_008_input4",
      "reference_mesh": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/mesh_repair_v6/hybrid_protocol4_limit10/gso_008_input4/mesh_watertight.obj",
      "deleted_mesh": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a36_conflict_face_removal/gso_008_input4/mesh_conflict_removed.obj",
      "removed_face_ratio": 0.6947948898180422,
      "candidate_rows": [
        {
          "method": "a36_deleted",
          "label": "A36 deleted control",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_008_input4/mesh_a36_deleted.obj",
          "stats": {
            "vertices": 131585,
            "faces": 252708,
            "watertight": false,
            "winding_consistent": true,
            "boundary_edges": 10508,
            "nonmanifold_edges": 0,
            "components": 131,
            "largest_component_face_ratio": 0.4597638381056397,
            "euler_number": -23
          },
          "ref_chamfer_mean": 0.01774410463748941,
          "cand_to_ref": 0.003601160366986936,
          "ref_to_cand": 0.031887048907991884,
          "face_ratio_vs_reference": 0.30520511018195784,
          "boundary_delta_vs_deleted": 0,
          "component_delta_vs_deleted": 0
        },
        {
          "method": "fill_holes",
          "label": "trimesh fill_holes",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_008_input4/mesh_fill_holes.obj",
          "stats": {
            "vertices": 131585,
            "faces": 252841,
            "watertight": false,
            "winding_consistent": true,
            "boundary_edges": 10146,
            "nonmanifold_edges": 10,
            "components": 129,
            "largest_component_face_ratio": 0.45952199208198036,
            "euler_number": 98
          },
          "ref_chamfer_mean": 0.018008755536156926,
          "cand_to_ref": 0.003629677662831603,
          "ref_to_cand": 0.03238783340948225,
          "face_ratio_vs_reference": 0.3053657393652611,
          "boundary_delta_vs_deleted": -362,
          "component_delta_vs_deleted": -2
        },
        {
          "method": "largest_fill",
          "label": "largest component + fill_holes",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_008_input4/mesh_largest_fill.obj",
          "stats": {
            "vertices": 58762,
            "faces": 116186,
            "watertight": false,
            "winding_consistent": true,
            "boundary_edges": 1346,
            "nonmanifold_edges": 0,
            "components": 1,
            "largest_component_face_ratio": 1.0,
            "euler_number": -4
          },
          "ref_chamfer_mean": 0.110239448228459,
          "cand_to_ref": 0.0036386033699720697,
          "ref_to_cand": 0.21684029308694594,
          "face_ratio_vs_reference": 0.1403222728667116,
          "boundary_delta_vs_deleted": -9162,
          "component_delta_vs_deleted": -130
        },
        {
          "method": "voxel_close_p025",
          "label": "voxel fill + marching cubes, pitch=0.025",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_008_input4/mesh_voxel_close_p025.obj",
          "stats": {
            "vertices": 1586,
            "faces": 3144,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 10,
            "largest_component_face_ratio": 0.4713740458015267,
            "euler_number": 14
          },
          "ref_chamfer_mean": 0.01975513024058314,
          "cand_to_ref": 0.013217650711084907,
          "ref_to_cand": 0.026292609770081368,
          "face_ratio_vs_reference": 0.0037971289647026427,
          "boundary_delta_vs_deleted": -10508,
          "component_delta_vs_deleted": -121
        },
        {
          "method": "convex_hull_control",
          "label": "convex hull topology upper bound",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a37_deletion_closure_repair/gso_008_input4/mesh_convex_hull_control.obj",
          "stats": {
            "vertices": 1366,
            "faces": 2728,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 1,
            "largest_component_face_ratio": 1.0,
            "euler_number": 2
          },
          "ref_chamfer_mean": 0.029129419419501833,
          "cand_to_ref": 0.045204524545270824,
          "ref_to_cand": 0.013054314293732838,
          "face_ratio_vs_reference": 0.0032947098650473313,
          "boundary_delta_vs_deleted": -10508,
          "component_delta_vs_deleted": -130
        }
      ],
      "best_topology_method": "voxel_close_p025",
      "best_fidelity_method": "a36_deleted"
    }
  ],
  "assets": {
    "gso_002_input4": {
      "closure_projection": "trellis2_vggt_assets/a37/gso_002_input4_closure_projection.png"
    },
    "gso_008_input4": {
      "closure_projection": "trellis2_vggt_assets/a37/gso_008_input4_closure_projection.png"
    }
  },
  "aggregate": {
    "cases": 2,
    "methods": {
      "a36_deleted": {
        "cases": 2,
        "watertight_rate": 0.0,
        "mean_boundary_edges": 8201.5,
        "mean_components": 95.5,
        "mean_faces": 220669.5,
        "mean_face_ratio_vs_reference": 0.5540134335383742,
        "mean_ref_chamfer": 0.013498663642760785,
        "mean_boundary_delta_vs_deleted": 0,
        "mean_component_delta_vs_deleted": 0
      },
      "convex_hull_control": {
        "cases": 2,
        "watertight_rate": 1.0,
        "mean_boundary_edges": 0,
        "mean_components": 1,
        "mean_faces": 1991,
        "mean_face_ratio_vs_reference": 0.004315894258366362,
        "mean_ref_chamfer": 0.036249585807310684,
        "mean_boundary_delta_vs_deleted": -8201.5,
        "mean_component_delta_vs_deleted": -94.5
      },
      "fill_holes": {
        "cases": 2,
        "watertight_rate": 0.0,
        "mean_boundary_edges": 7826.5,
        "mean_components": 98,
        "mean_faces": 220811,
        "mean_face_ratio_vs_reference": 0.5544129513986673,
        "mean_ref_chamfer": 0.013525856994345428,
        "mean_boundary_delta_vs_deleted": -375,
        "mean_component_delta_vs_deleted": 2.5
      },
      "largest_fill": {
        "cases": 2,
        "watertight_rate": 0.0,
        "mean_boundary_edges": 2890,
        "mean_components": 1.5,
        "mean_faces": 141732,
        "mean_face_ratio_vs_reference": 0.42613236557874223,
        "mean_ref_chamfer": 0.06243744134718187,
        "mean_boundary_delta_vs_deleted": -5311.5,
        "mean_component_delta_vs_deleted": -94
      },
      "voxel_close_p025": {
        "cases": 2,
        "watertight_rate": 1.0,
        "mean_boundary_edges": 0,
        "mean_components": 6,
        "mean_faces": 15540,
        "mean_face_ratio_vs_reference": 0.06134698123413886,
        "mean_ref_chamfer": 0.018267026599888242,
        "mean_boundary_delta_vs_deleted": -8201.5,
        "mean_component_delta_vs_deleted": -89.5
      }
    },
    "any_watertight_rate": 1.0,
    "voxel_close_watertight_rate": 1.0,
    "fill_holes_watertight_rate": 0.0,
    "largest_fill_watertight_rate": 0.0
  },
  "conclusion": {
    "status": "mixed_mechanistic",
    "summary": "Classical fill_holes cannot reliably close the large irregular openings created by conflict-face deletion. Voxel closure can restore a closed surface in some cases, but changes surface fidelity and face budget; therefore A36-style surgery should become generation-time observable-state guidance or patch replacement, not blind deletion plus repair."
  }
}