From 9bc3b127451d8f2936c5e6017c0c86a4e48e7374 Mon Sep 17 00:00:00 2001 From: Antoine Date: Tue, 17 Feb 2026 18:24:41 +0000 Subject: [PATCH] fix: handle v2 typed segments in outer_boundary field directly NX extractor outputs typed segments in 'outer_boundary' (not 'outer_boundary_typed'). Normalize now detects dict segments and promotes them correctly. --- tools/adaptive-isogrid/src/brain/geometry_schema.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/adaptive-isogrid/src/brain/geometry_schema.py b/tools/adaptive-isogrid/src/brain/geometry_schema.py index 908370d7..40a279f0 100644 --- a/tools/adaptive-isogrid/src/brain/geometry_schema.py +++ b/tools/adaptive-isogrid/src/brain/geometry_schema.py @@ -270,8 +270,17 @@ def normalize_geometry_schema(geometry: Dict[str, Any]) -> Dict[str, Any]: return out out = deepcopy(geometry) + + # v2: outer_boundary contains typed segment dicts, or outer_boundary_typed exists + raw_outer = out.get("outer_boundary", []) typed_outer = out.get("outer_boundary_typed", []) + + # Detect if outer_boundary itself contains typed segments (v2 extraction output) + if raw_outer and isinstance(raw_outer[0], dict) and "type" in raw_outer[0]: + typed_outer = raw_outer # outer_boundary IS the typed segments + if typed_outer: + out["outer_boundary_typed"] = typed_outer out["outer_boundary"] = _typed_segments_to_polyline_v2(typed_outer) inner_boundaries = out.get("inner_boundaries", [])