401 lines
18 KiB
JSON
401 lines
18 KiB
JSON
{
|
|
"schema_version": "2.0",
|
|
"library_kind": "generalized_cad_experience",
|
|
"induction_mode": "replay_validated_designir_with_deterministic_publication",
|
|
"status": "active_for_surfaceir",
|
|
"policy": {
|
|
"instance_parameters_allowed": false,
|
|
"absolute_coordinates_allowed": false,
|
|
"single_case_promotion_allowed": false,
|
|
"teacher_geometry_allowed": false,
|
|
"llm_semantic_review_required": true,
|
|
"draft_evidence_verified": true,
|
|
"positive_heldout_ab_required": true,
|
|
"router_consumable": false,
|
|
"surfaceir_consumable": true,
|
|
"minimum_support": 3
|
|
},
|
|
"corpus_summary": {
|
|
"accepted_case_count": 1000,
|
|
"duplicate_case_count": 0,
|
|
"rejected_case_count": 0,
|
|
"family_count": 11
|
|
},
|
|
"experience_summary": {
|
|
"llm_proposal_count": 13,
|
|
"promoted_experience_count": 12,
|
|
"candidate_experience_count": 1
|
|
},
|
|
"experiences": [
|
|
{
|
|
"id": "failure_repair.surface_boundary.prefer_exact_3d",
|
|
"kind": "failure_repair",
|
|
"scope": [
|
|
"surfaceir_reconstruction"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"trimmed_surface",
|
|
"boundary_curve_network"
|
|
]
|
|
},
|
|
"guidance": "Build trimmed-face wires from their exact three-dimensional boundary curves. Retain parametric-space curves for periodic branch and seam repair instead of selecting the first stored branch for every occurrence.",
|
|
"check": "Require the rebuilt solid, face, edge and vertex counts to match before accepting the boundary strategy.",
|
|
"support": 100,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_heldout_ab",
|
|
"heldout_pair_count": 100,
|
|
"baseline_geometry_pass_count": 17,
|
|
"treatment_geometry_pass_count": 95,
|
|
"improved_pair_count": 78,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.78
|
|
},
|
|
"consumer_policy": "enabled_by_default_in_surfaceir_pipeline"
|
|
},
|
|
{
|
|
"id": "failure_repair.periodic_torus.rectangular_uv_patch",
|
|
"kind": "failure_repair",
|
|
"scope": [
|
|
"surfaceir_reconstruction"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"toroidal_surface",
|
|
"single_outer_wire",
|
|
"isoparametric_line_boundary"
|
|
]
|
|
},
|
|
"guidance": "Rebuild a singly bounded toroidal face whose parametric boundary consists only of isoparametric lines directly from its stored parameter bounds. Preserve curve-wire reconstruction for non-rectangular toroidal trims.",
|
|
"check": "Require the toroidal patch topology, volume, center of mass and bounding box to match the teacher before accepting the repair.",
|
|
"support": 999,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_heldout_ab",
|
|
"heldout_pair_count": 999,
|
|
"baseline_geometry_pass_count": 900,
|
|
"treatment_geometry_pass_count": 963,
|
|
"improved_pair_count": 63,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.063063
|
|
},
|
|
"consumer_policy": "enabled_by_default_in_surfaceir_pipeline"
|
|
},
|
|
{
|
|
"id": "edit_strategy.semantic_cylindrical_cut.enlarge_diameter",
|
|
"kind": "edit_strategy",
|
|
"scope": [
|
|
"surfaceir_semantic_editing"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"internal_cylindrical_face",
|
|
"canonical_hole_or_bore_axis",
|
|
"positive_diameter_increase"
|
|
]
|
|
},
|
|
"guidance": "Represent a positive hole or bore diameter edit as one deduplicated cylindrical cut per canonical axis and axial span. Rebuild the source-independent SurfaceIR first, then apply the declared cuts; keep every non-target semantic parameter unchanged.",
|
|
"check": "Require source independence, a valid solid count, the requested radius on every declared axis, decreasing volume, no added material, and unchanged non-target parameter values.",
|
|
"support": 41,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "independent_heldout_capability_ab",
|
|
"heldout_pair_count": 41,
|
|
"baseline_annotation_only_edit_pass_count": 0,
|
|
"treatment_edit_pass_count": 41,
|
|
"improved_pair_count": 41,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 1.0
|
|
},
|
|
"consumer_policy": "enabled_for_positive_hole_and_bore_diameter_edits"
|
|
},
|
|
{
|
|
"id": "failure_repair.semantic_edit.boundary_strategy_fallback",
|
|
"kind": "failure_repair",
|
|
"scope": [
|
|
"surfaceir_semantic_editing"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"semantic_cylindrical_cut",
|
|
"invalid_or_missing_target_after_primary_rebuild"
|
|
]
|
|
},
|
|
"guidance": "Validate the preferred analytic UV boundary strategy first, then try exact three-dimensional boundaries and the remaining registered boundary strategies in isolation. Select the first result that preserves solid count, remains valid, realizes every target axis and changes volume in the declared direction.",
|
|
"check": "Record every attempted strategy and accept a fallback only when deterministic edit checks pass; never accept an empty shell or zero-solid result.",
|
|
"support": 41,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_heldout_ab",
|
|
"heldout_pair_count": 41,
|
|
"primary_strategy_edit_pass_count": 35,
|
|
"fallback_policy_edit_pass_count": 41,
|
|
"improved_pair_count": 6,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.146341
|
|
},
|
|
"consumer_policy": "enabled_by_default_for_semantic_edit_acceptance"
|
|
},
|
|
{
|
|
"id": "failure_repair.surface_topology.bind_face_pcurves_and_group_shells",
|
|
"kind": "failure_repair",
|
|
"scope": [
|
|
"surfaceir_reconstruction"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"shared_topology_edge",
|
|
"stored_face_pcurve",
|
|
"periodic_or_trimmed_surface"
|
|
]
|
|
},
|
|
"guidance": "Restore every shared edge from its exact three-dimensional curve and bind each stored parametric curve to the corresponding reconstructed face surface. Preserve both parametric branches for seam edges, then assemble all reconstructed shells under their declared DesignIR solid instead of emitting one solid per shell.",
|
|
"check": "Validate the pcurve-bound reconstruction against the teacher and retain the prior exact-boundary strategy for any regression. Require matching solid, face, edge and vertex counts plus volume, center, bounds and symmetric-difference acceptance before fixing the selected strategy in the source-independent DesignIR.",
|
|
"support": 996,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_full_corpus_ab_with_validated_fallback",
|
|
"heldout_pair_count": 1000,
|
|
"baseline_geometry_pass_count": 970,
|
|
"treatment_geometry_pass_count": 996,
|
|
"improved_pair_count": 26,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.026
|
|
},
|
|
"consumer_policy": "enabled_as_teacher_validated_surfaceir_strategy"
|
|
},
|
|
{
|
|
"id": "failure_repair.surface_topology.preserve_vertex_tolerance",
|
|
"kind": "failure_repair",
|
|
"scope": [
|
|
"surfaceir_reconstruction"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"shared_topology_vertex",
|
|
"edge_endpoint_near_curve_within_vertex_tolerance"
|
|
]
|
|
},
|
|
"guidance": "Preserve each DesignIR vertex tolerance independently when constructing shared edges. Update the edge tolerance on the edge itself and never overwrite a shared vertex tolerance with the tolerance of a later incident edge.",
|
|
"check": "Run the pcurve-bound strategy and the exact-boundary fallback as a paired teacher-side validation. Fix the selected strategy in DesignIR only when solid, face, edge and vertex counts, volume, center, bounds and symmetric difference all pass.",
|
|
"support": 1000,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_full_corpus_ab_with_validated_fallback",
|
|
"heldout_pair_count": 1000,
|
|
"baseline_geometry_pass_count": 996,
|
|
"treatment_geometry_pass_count": 1000,
|
|
"improved_pair_count": 4,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.004
|
|
},
|
|
"consumer_policy": "enabled_by_default_in_surfaceir_edge_construction"
|
|
},
|
|
{
|
|
"id": "edit_strategy.semantic_edit.preserve_validated_geometry_strategy",
|
|
"kind": "edit_strategy",
|
|
"scope": [
|
|
"surfaceir_semantic_editing"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"source_independent_designir",
|
|
"teacher_validated_boundary_strategy",
|
|
"declared_semantic_edit_operation"
|
|
]
|
|
},
|
|
"guidance": "Keep the boundary strategy already validated for the unedited DesignIR as the first semantic-edit reconstruction candidate. Then try the registered pcurve-bound, exact-boundary and analytic fallbacks; do not replace the validated strategy unconditionally with an older global default.",
|
|
"check": "Accept the edited model only when the requested target cylinders are observed, solid count and validity are preserved, volume changes in the declared direction, non-target parameters remain unchanged and the edited JSON contains no teacher reference.",
|
|
"support": 843,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_full_corpus_capability_ab",
|
|
"heldout_pair_count": 1000,
|
|
"baseline_edit_pass_count": 800,
|
|
"treatment_edit_pass_count": 826,
|
|
"improved_pair_count": 26,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.026
|
|
},
|
|
"consumer_policy": "enabled_by_default_for_semantic_edit_reconstruction"
|
|
},
|
|
{
|
|
"id": "edit_strategy.semantic_parameter.search_validated_safe_range",
|
|
"kind": "edit_strategy",
|
|
"scope": [
|
|
"surfaceir_semantic_editing"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"executable_semantic_parameter",
|
|
"requested_edit_breaks_topology_or_validity"
|
|
]
|
|
},
|
|
"guidance": "Treat editability as a validated interval rather than a single unrestricted value. If the requested positive perturbation fails, test descending meaningful factors and retain the largest value that passes the complete edit contract; record that bound instead of declaring the parameter globally non-editable.",
|
|
"check": "Every candidate bound must generate an edited STEP and pass target observation, solid validity and count, declared volume direction, non-target stability and source-independence checks.",
|
|
"support": 843,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_full_corpus_capability_ab",
|
|
"heldout_pair_count": 1000,
|
|
"baseline_edit_pass_count": 826,
|
|
"treatment_edit_pass_count": 835,
|
|
"improved_pair_count": 9,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.009
|
|
},
|
|
"consumer_policy": "enabled_for_semantic_edit_range_validation"
|
|
},
|
|
{
|
|
"id": "failure_repair.semantic_edit.merge_duplicate_cylindrical_targets",
|
|
"kind": "failure_repair",
|
|
"scope": [
|
|
"surfaceir_semantic_editing"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"multiple_target_faces",
|
|
"coincident_cylinder_axis_anchor_and_axial_interval"
|
|
]
|
|
},
|
|
"guidance": "Merge target faces that describe the same physical cylindrical cut by comparing canonical axis, spatial anchor and absolute axial interval within model tolerance. Execute one cut, retain all source face identifiers for traceability, and validate one physical target instead of counting duplicate B-Rep faces as separate holes.",
|
|
"check": "The merged operation must preserve the requested radius, solid count and validity while passing the same source-independence and non-target guards as an unmerged edit.",
|
|
"support": 11,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_failure_cluster_ab",
|
|
"heldout_pair_count": 11,
|
|
"baseline_edit_pass_count": 9,
|
|
"treatment_edit_pass_count": 11,
|
|
"improved_pair_count": 2,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.181818
|
|
},
|
|
"consumer_policy": "enabled_by_default_for_cylindrical_edit_binding"
|
|
},
|
|
{
|
|
"id": "edit_strategy.semantic_parameter.source_independent_overall_scale",
|
|
"kind": "edit_strategy",
|
|
"scope": [
|
|
"surfaceir_semantic_editing"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"source_independent_designir",
|
|
"geometry_present",
|
|
"semantic_feature_binding_may_be_unavailable"
|
|
]
|
|
},
|
|
"guidance": "Expose a dimensionless overall_scale parameter about a deterministic datum derived from the independent SurfaceIR bounds. Compile it as a uniform transform of the rebuilt shape, never as a teacher STEP or embedded B-Rep dependency. Treat this as a minimum editability fallback, not as evidence that feature-specific parameters such as thickness, spacing or count were recovered.",
|
|
"check": "Require valid solids, preserved solid/face/edge counts, volume scaling by the factor cubed, transformed center and bounds within tolerance, unchanged non-target parameter values and a source-independent edited JSON. Record vertex-count normalization after STEP serialization as a diagnostic rather than rejecting otherwise equivalent topology.",
|
|
"support": 996,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_full_corpus_capability_ab",
|
|
"heldout_pair_count": 996,
|
|
"baseline_any_validated_edit_count": 842,
|
|
"treatment_any_validated_edit_count": 996,
|
|
"improved_pair_count": 154,
|
|
"regressed_pair_count": 0,
|
|
"pass_rate_delta": 0.154618,
|
|
"standalone_scale_acceptance_count": 996,
|
|
"standalone_scale_rejection_count": 0
|
|
},
|
|
"consumer_policy": "enabled_as_fallback_for_geometry_bearing_surfaceir"
|
|
},
|
|
{
|
|
"id": "edit_strategy.semantic_parameter.primary_axis_affine_dimensions",
|
|
"kind": "edit_strategy",
|
|
"scope": [
|
|
"surfaceir_semantic_editing"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"primary_external_cylinder",
|
|
"source_independent_designir",
|
|
"no_validated_feature_specific_edit"
|
|
]
|
|
},
|
|
"guidance": "Bind outer_diameter to a radial affinity about the inferred primary cylinder axis, and bind body_length or plate_thickness to an axial affinity about the target cylinder midpoint. Preserve the orthogonal dimension, expose the operation explicitly in DesignIR, and treat it as a canonical whole-body dimension edit rather than recovered source history.",
|
|
"check": "Rebuild without the teacher, apply the declared axis-affine transform, write and reread STEP, independently remeasure the target face boundary along or around the declared axis, and require the requested dimension, valid solids, stable solid/face/edge counts, unchanged non-target parameter values, and normalized expected volume, center and bounds.",
|
|
"support": 103,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_applicable_corpus_capability_ab",
|
|
"heldout_outer_diameter_pair_count": 103,
|
|
"heldout_outer_diameter_pass_count": 103,
|
|
"heldout_body_length_pair_count": 70,
|
|
"heldout_body_length_pass_count": 70,
|
|
"heldout_plate_thickness_pair_count": 33,
|
|
"heldout_plate_thickness_pass_count": 33,
|
|
"baseline_any_feature_specific_edit_count": 842,
|
|
"treatment_any_feature_specific_edit_count": 942,
|
|
"improved_case_count": 100,
|
|
"regressed_case_count": 0,
|
|
"pass_rate_delta": 0.100402
|
|
},
|
|
"consumer_policy": "enabled_for_primary_cylindrical_parts_without_a_validated_local_feature_edit"
|
|
},
|
|
{
|
|
"id": "edit_strategy.semantic_parameter.canonical_directional_envelope",
|
|
"kind": "edit_strategy",
|
|
"scope": [
|
|
"surfaceir_semantic_editing"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"geometry_present",
|
|
"no_validated_named_edit",
|
|
"nonzero_global_axis_extent"
|
|
]
|
|
},
|
|
"guidance": "Expose nonzero global-axis bounds as overall_size_x, overall_size_y and overall_size_z about a deterministic bounds-center datum. Compile one requested dimension as an axis affinity that leaves the other two global coordinates unchanged. Label these as canonical envelope dimensions, never as recovered sketch constraints or local feature intent.",
|
|
"check": "Write and reread the independently rebuilt STEP, remeasure the complete vertex bounds along the requested axis, require the requested extent, valid geometry, stable solid/face/edge counts, unchanged non-target parameter values, and normalized expected volume, center and bounds.",
|
|
"support": 56,
|
|
"confidence": 1.0,
|
|
"validation": {
|
|
"kind": "paired_applicable_corpus_capability_ab",
|
|
"heldout_x_pair_count": 56,
|
|
"heldout_x_pass_count": 56,
|
|
"heldout_y_pair_count": 56,
|
|
"heldout_y_pass_count": 56,
|
|
"heldout_z_pair_count": 55,
|
|
"heldout_z_pass_count": 55,
|
|
"baseline_any_validated_named_edit_count": 942,
|
|
"treatment_any_validated_named_edit_count": 996,
|
|
"improved_case_count": 54,
|
|
"regressed_case_count": 0,
|
|
"pass_rate_delta": 0.054217
|
|
},
|
|
"consumer_policy": "enabled_for_geometry_without_a_more_specific_validated_parameter"
|
|
}
|
|
],
|
|
"candidate_experiences": [
|
|
{
|
|
"id": "failure_repair.surface_topology.preserve_free_shell_documents",
|
|
"kind": "failure_repair",
|
|
"scope": [
|
|
"surfaceir_reconstruction"
|
|
],
|
|
"when": {
|
|
"features": [
|
|
"step_document_without_solid",
|
|
"top_level_open_shell"
|
|
]
|
|
},
|
|
"support": 3,
|
|
"required_heldout_pair_count": 10,
|
|
"completed_heldout_pair_count": 3,
|
|
"remaining_heldout_pair_count": 7,
|
|
"promotion_state": "candidate",
|
|
"measured_result": {
|
|
"baseline_independent_rebuild_count": 0,
|
|
"treatment_independent_rebuild_count": 3,
|
|
"regressed_pair_count": 0
|
|
},
|
|
"consumer_policy": "visible_for_review_but_not_promoted_as_generalized_experience"
|
|
}
|
|
]
|
|
}
|