@@ -719,27 +719,6 @@ def evaluate_precheck_consistency(
719719 errs : List [Dict [str , str ]] = []
720720
721721 counts = get_gear_counts (gears )
722- total_contact = len (mesh_boxes ) + len (mismesh_boxes )
723- gear_count = len (gears )
724-
725- expected_contact , ok = expected_contact_boxes_from_gear_count (gear_count )
726-
727- if (not ok ) or (expected_contact is None ):
728- errs .append ({
729- "code" : "E_PRECHECK_COUNT_RULE_FAIL" ,
730- "message" : (
731- f"Precheck failed: detected gear_count={ gear_count } , which does not fit "
732- f"the expected contact rule."
733- ),
734- })
735- elif total_contact != expected_contact :
736- errs .append ({
737- "code" : "E_PRECHECK_COUNT_RULE_FAIL" ,
738- "message" : (
739- f"Precheck failed: mesh+mismesh={ total_contact } , expected={ expected_contact } "
740- f"for gear_count={ gear_count } ."
741- ),
742- })
743722
744723 if counts ["biggear" ] != counts ["smallgear" ]:
745724 errs .append ({
@@ -847,6 +826,7 @@ def evaluate_parts_inventory(
847826# =========================
848827def evaluate_gear_inventory_step (
849828 gears : List [Dict [str , Any ]],
829+ mesh_boxes : List [Tuple [float , float , float , float ]],
850830 mismesh_boxes : List [Tuple [float , float , float , float ]],
851831) -> Tuple [List [Dict [str , str ]], Dict [str , int ]]:
852832 errs : List [Dict [str , str ]] = []
@@ -859,6 +839,18 @@ def evaluate_gear_inventory_step(
859839 })
860840 return errs , counts
861841
842+ total_contact = len (mesh_boxes ) + len (mismesh_boxes )
843+ gear_count = len (gears )
844+ expected_contact , ok = expected_contact_boxes_from_gear_count (gear_count )
845+ if (not ok ) or (expected_contact is None ) or (total_contact != expected_contact ):
846+ errs .append ({
847+ "code" : "E_GEAR_CONTACT_INCONSISTENT" ,
848+ "message" : (
849+ f"Gear inventory consistency check failed: mesh+mismesh={ total_contact } , "
850+ f"expected={ expected_contact } for gear_count={ gear_count } ."
851+ ),
852+ })
853+
862854 if len (mismesh_boxes ) > 0 :
863855 errs .append ({
864856 "code" : "E_MESH_MISMATCH" ,
@@ -2286,6 +2278,7 @@ def _need_shafts() -> bool:
22862278 if task == TASK_GEAR_INV :
22872279 errors , counts = evaluate_gear_inventory_step (
22882280 gears = gears ,
2281+ mesh_boxes = mesh_boxes ,
22892282 mismesh_boxes = mismesh_boxes ,
22902283 )
22912284
0 commit comments