{
  "experiment": "A41 visible-lock UDF completion",
  "protocol": {
    "source": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a40_local_implicit_completion/analysis.json",
    "selection_uses_gt": false,
    "retrospective_validation_uses_gt": false,
    "method": "variable-radius UDF: smaller radius for visible-kept surface, larger radius for replacement patch, boundary anchors for connection",
    "variants": [
      "lock_r020_patch035_b028",
      "lock_r015_patch035_b026",
      "lock_r018_patch030_b024"
    ],
    "limitation": "Variable-radius UDF is still unsigned; it tests visible-lock feasibility but can create shell-like geometry."
  },
  "case_rows": [
    {
      "case_id": "gso_002_input4",
      "source": "trellis2_raw",
      "a40_best_variant": "udf_pitch025_r035",
      "a40_best_stats": {
        "vertices": 14696,
        "faces": 29420,
        "watertight": true,
        "winding_consistent": true,
        "boundary_edges": 0,
        "nonmanifold_edges": 0,
        "components": 1,
        "largest_component_face_ratio": 1.0,
        "euler_number": -14
      },
      "a40_best_visible_p95": 0.0422316588149083,
      "variant_rows": [
        {
          "variant": "lock_r020_patch035_b028",
          "source": "trellis2_raw",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a41_visible_lock_udf_completion/gso_002_input4/mesh_lock_r020_patch035_b028_trellis2_raw.obj",
          "stats": {
            "vertices": 14918,
            "faces": 29860,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 5,
            "largest_component_face_ratio": 0.9986604152712659,
            "euler_number": -12
          },
          "surface_proxy_chamfer_vs_repair": 0.027296014343159182,
          "visible_kept_to_candidate_mean": 0.026197879579231635,
          "visible_kept_to_candidate_p95": 0.037083776237979926,
          "patch_to_candidate_mean": 0.03681006658607631,
          "patch_to_candidate_p95": 0.041967742187833605,
          "boundary_delta_vs_a40_best": 0,
          "component_delta_vs_a40_best": 4,
          "nonmanifold_delta_vs_a40_best": 0,
          "visible_p95_delta_vs_a40_best": -0.005147882576928373,
          "metadata": {
            "pitch": 0.025,
            "kept_radius": 0.02,
            "patch_radius": 0.035,
            "boundary_radius": 0.028,
            "kept_points": 32000,
            "patch_points": 24000,
            "boundary_points": 17755
          }
        },
        {
          "variant": "lock_r015_patch035_b026",
          "source": "trellis2_raw",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a41_visible_lock_udf_completion/gso_002_input4/mesh_lock_r015_patch035_b026_trellis2_raw.obj",
          "stats": {
            "vertices": 15097,
            "faces": 30282,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 6,
            "largest_component_face_ratio": 0.9972260748959778,
            "euler_number": -44
          },
          "surface_proxy_chamfer_vs_repair": 0.02465803341111311,
          "visible_kept_to_candidate_mean": 0.02313992674872495,
          "visible_kept_to_candidate_p95": 0.03647307203076723,
          "patch_to_candidate_mean": 0.036601551723767514,
          "patch_to_candidate_p95": 0.04150592688828051,
          "boundary_delta_vs_a40_best": 0,
          "component_delta_vs_a40_best": 5,
          "nonmanifold_delta_vs_a40_best": 0,
          "visible_p95_delta_vs_a40_best": -0.005758586784141068,
          "metadata": {
            "pitch": 0.025,
            "kept_radius": 0.015,
            "patch_radius": 0.035,
            "boundary_radius": 0.026,
            "kept_points": 32000,
            "patch_points": 24000,
            "boundary_points": 17755
          }
        },
        {
          "variant": "lock_r018_patch030_b024",
          "source": "trellis2_raw",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a41_visible_lock_udf_completion/gso_002_input4/mesh_lock_r018_patch030_b024_trellis2_raw.obj",
          "stats": {
            "vertices": 23384,
            "faces": 46788,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 9,
            "largest_component_face_ratio": 0.9969222877660938,
            "euler_number": -10
          },
          "surface_proxy_chamfer_vs_repair": 0.02427958270087274,
          "visible_kept_to_candidate_mean": 0.02326159183022225,
          "visible_kept_to_candidate_p95": 0.03281945860143199,
          "patch_to_candidate_mean": 0.03206445327093598,
          "patch_to_candidate_p95": 0.03720919547629133,
          "boundary_delta_vs_a40_best": 0,
          "component_delta_vs_a40_best": 8,
          "nonmanifold_delta_vs_a40_best": 0,
          "visible_p95_delta_vs_a40_best": -0.009412200213476309,
          "metadata": {
            "pitch": 0.02,
            "kept_radius": 0.018,
            "patch_radius": 0.03,
            "boundary_radius": 0.024,
            "kept_points": 32000,
            "patch_points": 24000,
            "boundary_points": 17755
          }
        }
      ],
      "best_topology_variant": "lock_r020_patch035_b028",
      "best_visible_fidelity_variant": "lock_r018_patch030_b024"
    },
    {
      "case_id": "gso_008_input4",
      "source": "trellis2_raw",
      "a40_best_variant": "udf_pitch025_r035",
      "a40_best_stats": {
        "vertices": 3600,
        "faces": 7212,
        "watertight": true,
        "winding_consistent": true,
        "boundary_edges": 0,
        "nonmanifold_edges": 0,
        "components": 1,
        "largest_component_face_ratio": 1.0,
        "euler_number": -6
      },
      "a40_best_visible_p95": 0.040759287866625055,
      "variant_rows": [
        {
          "variant": "lock_r020_patch035_b028",
          "source": "trellis2_raw",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a41_visible_lock_udf_completion/gso_008_input4/mesh_lock_r020_patch035_b028_trellis2_raw.obj",
          "stats": {
            "vertices": 3448,
            "faces": 6904,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 1,
            "largest_component_face_ratio": 1.0,
            "euler_number": -4
          },
          "surface_proxy_chamfer_vs_repair": 0.03167160297724396,
          "visible_kept_to_candidate_mean": 0.026963222779371812,
          "visible_kept_to_candidate_p95": 0.036288731583547416,
          "patch_to_candidate_mean": 0.03521013271762796,
          "patch_to_candidate_p95": 0.03785759643641045,
          "boundary_delta_vs_a40_best": 0,
          "component_delta_vs_a40_best": 0,
          "nonmanifold_delta_vs_a40_best": 0,
          "visible_p95_delta_vs_a40_best": -0.004470556283077638,
          "metadata": {
            "pitch": 0.025,
            "kept_radius": 0.02,
            "patch_radius": 0.035,
            "boundary_radius": 0.028,
            "kept_points": 32000,
            "patch_points": 24000,
            "boundary_points": 22387
          }
        },
        {
          "variant": "lock_r015_patch035_b026",
          "source": "trellis2_raw",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a41_visible_lock_udf_completion/gso_008_input4/mesh_lock_r015_patch035_b026_trellis2_raw.obj",
          "stats": {
            "vertices": 3424,
            "faces": 6848,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 2,
            "largest_component_face_ratio": 0.9836448598130841,
            "euler_number": 0
          },
          "surface_proxy_chamfer_vs_repair": 0.031184647165823316,
          "visible_kept_to_candidate_mean": 0.02510798361209344,
          "visible_kept_to_candidate_p95": 0.03600883736241814,
          "patch_to_candidate_mean": 0.0351974136141683,
          "patch_to_candidate_p95": 0.03780444712792974,
          "boundary_delta_vs_a40_best": 0,
          "component_delta_vs_a40_best": 1,
          "nonmanifold_delta_vs_a40_best": 0,
          "visible_p95_delta_vs_a40_best": -0.004750450504206916,
          "metadata": {
            "pitch": 0.025,
            "kept_radius": 0.015,
            "patch_radius": 0.035,
            "boundary_radius": 0.026,
            "kept_points": 32000,
            "patch_points": 24000,
            "boundary_points": 22387
          }
        },
        {
          "variant": "lock_r018_patch030_b024",
          "source": "trellis2_raw",
          "output_obj": "/home/jiachen/TRELLIS/experiments/nonorthogonal_gpt_orthoview/outputs/data_survey/vggt_spatial_adapter/support_guidance_a41_visible_lock_udf_completion/gso_008_input4/mesh_lock_r018_patch030_b024_trellis2_raw.obj",
          "stats": {
            "vertices": 5214,
            "faces": 10428,
            "watertight": true,
            "winding_consistent": true,
            "boundary_edges": 0,
            "nonmanifold_edges": 0,
            "components": 2,
            "largest_component_face_ratio": 0.9854238588415803,
            "euler_number": 0
          },
          "surface_proxy_chamfer_vs_repair": 0.02745417368397128,
          "visible_kept_to_candidate_mean": 0.023299350685198204,
          "visible_kept_to_candidate_p95": 0.03139033450966395,
          "patch_to_candidate_mean": 0.030368145074974536,
          "patch_to_candidate_p95": 0.03265685805026071,
          "boundary_delta_vs_a40_best": 0,
          "component_delta_vs_a40_best": 1,
          "nonmanifold_delta_vs_a40_best": 0,
          "visible_p95_delta_vs_a40_best": -0.009368953356961106,
          "metadata": {
            "pitch": 0.02,
            "kept_radius": 0.018,
            "patch_radius": 0.03,
            "boundary_radius": 0.024,
            "kept_points": 32000,
            "patch_points": 24000,
            "boundary_points": 22387
          }
        }
      ],
      "best_topology_variant": "lock_r020_patch035_b028",
      "best_visible_fidelity_variant": "lock_r018_patch030_b024"
    }
  ],
  "assets": {
    "gso_002_input4": {
      "visible_lock_projection": "trellis2_vggt_assets/a41/gso_002_input4_visible_lock_projection.png"
    },
    "gso_008_input4": {
      "visible_lock_projection": "trellis2_vggt_assets/a41/gso_008_input4_visible_lock_projection.png"
    }
  },
  "aggregate": {
    "cases": 2,
    "variants": {
      "lock_r015_patch035_b026": {
        "cases": 2,
        "watertight_rate": 1.0,
        "mean_boundary_edges": 0,
        "mean_components": 4,
        "mean_nonmanifold_edges": 0,
        "mean_faces": 18565,
        "mean_surface_proxy_chamfer": 0.027921340288468214,
        "mean_visible_kept_p95": 0.036240954696592685,
        "mean_patch_p95": 0.03965518700810512,
        "mean_visible_p95_delta_vs_a40_best": -0.005254518644173992,
        "mean_boundary_delta_vs_a40_best": 0,
        "mean_component_delta_vs_a40_best": 3,
        "mean_nonmanifold_delta_vs_a40_best": 0
      },
      "lock_r018_patch030_b024": {
        "cases": 2,
        "watertight_rate": 1.0,
        "mean_boundary_edges": 0,
        "mean_components": 5.5,
        "mean_nonmanifold_edges": 0,
        "mean_faces": 28608,
        "mean_surface_proxy_chamfer": 0.025866878192422012,
        "mean_visible_kept_p95": 0.03210489655554797,
        "mean_patch_p95": 0.03493302676327602,
        "mean_visible_p95_delta_vs_a40_best": -0.009390576785218707,
        "mean_boundary_delta_vs_a40_best": 0,
        "mean_component_delta_vs_a40_best": 4.5,
        "mean_nonmanifold_delta_vs_a40_best": 0
      },
      "lock_r020_patch035_b028": {
        "cases": 2,
        "watertight_rate": 1.0,
        "mean_boundary_edges": 0,
        "mean_components": 3,
        "mean_nonmanifold_edges": 0,
        "mean_faces": 18382,
        "mean_surface_proxy_chamfer": 0.02948380866020157,
        "mean_visible_kept_p95": 0.036686253910763675,
        "mean_patch_p95": 0.03991266931212203,
        "mean_visible_p95_delta_vs_a40_best": -0.004809219430003005,
        "mean_boundary_delta_vs_a40_best": 0,
        "mean_component_delta_vs_a40_best": 2,
        "mean_nonmanifold_delta_vs_a40_best": 0
      }
    },
    "best_topology_counts": {
      "lock_r015_patch035_b026": 0,
      "lock_r018_patch030_b024": 0,
      "lock_r020_patch035_b028": 2
    },
    "best_visible_fidelity_counts": {
      "lock_r015_patch035_b026": 0,
      "lock_r018_patch030_b024": 2,
      "lock_r020_patch035_b028": 0
    }
  },
  "conclusion": {
    "status": "mixed_negative_for_unsigned_lock",
    "summary": "Variable-radius visible locking reduces visible drift for some configurations, but it can lose watertightness or increase components because unsigned shells disconnect. This confirms that the next meaningful step is true signed/local SDF completion or generation-time locking, not more UDF radius tuning."
  }
}