{
  "surface_graph": "data_processed/graphs/graph_6000.npz",
  "requested_node_budget": 6000,
  "actual_node_count": 5925,
  "triangle_count": 11999,
  "training_inference_viewer_outputs": "same prepared graph_6000 with 5,925 actual nodes",
  "node_density_is_risk_feature": false,
  "normal_baseline": "same GNN/seed/epochs/loss/process/threshold; excludes curvature, analytic curvature, boundary/ridge and face dihedral",
  "dihedral_face_definition": "acos(clamp(dot(two adjacent face normals), -1,1)); undefined on boundary/nonmanifold",
  "changed_cad": "A new CAD can execute with variable node count/topology, but this experiment fixes the ~6k preparation rule: independently simplify each new CAD with the same rule; node indices never correspond across designs; output is direct per-new-CAD-node. Generalization is unmeasured with one CAD/two runs. Use multi-design training, CAD-family held-out splits and OOD uncertainty before interpreting cross-design output.",
  "features": {
    "normal_baseline": {
      "node": [
        "pos_norm_x",
        "pos_norm_y",
        "pos_norm_z",
        "normal_x",
        "normal_y",
        "normal_z",
        "vertex_area_mm2",
        "mean_incident_angle_rad",
        "topological_degree"
      ],
      "edge": [
        "length_mm",
        "direction_x",
        "direction_y",
        "direction_z",
        "normal_dot"
      ]
    },
    "dihedral_aware": {
      "node": [
        "pos_norm_x",
        "pos_norm_y",
        "pos_norm_z",
        "normal_x",
        "normal_y",
        "normal_z",
        "vertex_area_mm2",
        "mean_incident_angle_rad",
        "mean_curvature_abs_1_per_mm",
        "gaussian_curvature_abs_1_per_mm2",
        "boundary_node",
        "feature_node",
        "topological_degree",
        "analytic_k1_abs_1_per_mm",
        "analytic_k2_abs_1_per_mm",
        "analytic_gaussian_signed_1_per_mm2",
        "cad_k1_signed_1_per_mm",
        "cad_k2_signed_1_per_mm",
        "cad_mean_H_signed_1_per_mm",
        "cad_gaussian_K_1_per_mm2",
        "cad_curvedness_1_per_mm",
        "cad_shape_index"
      ],
      "edge": [
        "length_mm",
        "direction_x",
        "direction_y",
        "direction_z",
        "normal_dot",
        "dihedral_rad",
        "boundary_edge",
        "feature_edge"
      ]
    }
  }
}