From 089ab629f765f23fd6e8bca606cc2ae69357422e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 12 Aug 2026 23:54:05 +0100 Subject: [PATCH 001/158] fix(layout): harden deterministic convergence routing [skip ci] --- src/nf_metro/layout/phases/junctions.py | 4 +- src/nf_metro/layout/routing/convergences.py | 210 +++++++++++++++--- src/nf_metro/layout/routing/exit_turns.py | 2 + src/nf_metro/layout/routing/families.py | 1 + .../layout/routing/inter_section_handlers.py | 151 ++++++++++++- src/nf_metro/layout/routing/invariants.py | 24 +- .../layout/routing/member_geometry.py | 21 +- src/nf_metro/layout/routing/normalize.py | 168 ++++++++++++-- src/nf_metro/layout/routing/offsets.py | 130 ++++++++++- src/nf_metro/layout/routing/planning.py | 1 - tests/candidate_executor_oracle.py | 11 +- tests/test_candidate_executor.py | 10 +- tests/test_split_fanout_descent_invariant.py | 9 + 13 files changed, 675 insertions(+), 67 deletions(-) diff --git a/src/nf_metro/layout/phases/junctions.py b/src/nf_metro/layout/phases/junctions.py index 3c7fa3aab..ffa7323de 100644 --- a/src/nf_metro/layout/phases/junctions.py +++ b/src/nf_metro/layout/phases/junctions.py @@ -255,7 +255,9 @@ def _position_merge_junction( # width into the entry. Merge local to the target instead, so only the # individual feeders make the long approach and the merge->entry hop is short. if entry_port.x < max_pred_x - margin: - junction.x = entry_port.x - margin + junction.x = entry_port.x + ( + margin if entry_side is PortSide.RIGHT else -margin + ) else: junction.x = max_pred_x + margin junction.y = entry_port.y diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 0dbc9ca73..bcdca1a98 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -14,8 +14,10 @@ COORD_TOLERANCE_FINE, CURVE_RADIUS, EDGE_TO_BUNDLE_CLEARANCE, + MIN_CORRIDOR_Y_OVERLAP, OFFSET_STEP, SAME_COORD_TOLERANCE, + SECTION_ROUTE_CLEARANCE, graph_offset_step, ) from nf_metro.layout.geometry import ( @@ -92,7 +94,7 @@ BoundaryClearanceRequirement, SettlementAxis, ) -from nf_metro.parser.model import Edge, MetroGraph, Station +from nf_metro.parser.model import Edge, MetroGraph, PortSide, Station from nf_metro.parser.route_topology import ( ResolvedConvergenceView, ResolvedEdge, @@ -417,27 +419,89 @@ def _closest_point_on_polyline( return min(candidates, key=lambda item: item[0])[1] -def _connect_route_endpoint(route: RoutedPath, target: tuple[float, float]) -> None: +def _connect_route_endpoint( + route: RoutedPath, target: tuple[float, float], ctx: _RoutingCtx +) -> bool: endpoint = route.points[-1] + entry_id = ctx.merge.entry_port_for.get(route.edge.target) + entry = ctx.graph.stations.get(entry_id) if entry_id else None + port = ctx.graph.ports.get(entry_id) if entry_id else None + endpoint_matches = all( + abs(actual - expected) <= COORD_TOLERANCE + for actual, expected in zip(endpoint, target, strict=True) + ) + if ( + endpoint_matches + and entry is not None + and port is not None + and port.side in (PortSide.LEFT, PortSide.RIGHT) + and len(route.points) >= 2 + and abs(route.points[-2][0] - entry.x) <= COORD_TOLERANCE + and abs(route.points[-2][1] - target[1]) > COORD_TOLERANCE + ): + outward = 1.0 if port.side is PortSide.RIGHT else -1.0 + for rank in range(len(route.points) - 3, -1, -1): + start, end = route.points[rank : rank + 2] + if ( + abs(start[0] - end[0]) <= COORD_TOLERANCE + and outward * (start[0] - entry.x) >= SECTION_ROUTE_CLEARANCE + ): + route.points = route.points[: rank + 2] + dogleg_x = end[0] + route.points.extend([(dogleg_x, target[1]), target]) + return True if all( abs(actual - expected) <= COORD_TOLERANCE for actual, expected in zip(endpoint, target, strict=True) ): route.points[-1] = target - return + return False + if ( + entry is not None + and port is not None + and port.side in (PortSide.LEFT, PortSide.RIGHT) + and abs(target[0] - entry.x) <= COORD_TOLERANCE + and abs(endpoint[0] - entry.x) > COORD_TOLERANCE + and abs(endpoint[1] - target[1]) > COORD_TOLERANCE + ): + outward = 1.0 if port.side is PortSide.RIGHT else -1.0 + for rank in range(len(route.points) - 2, -1, -1): + start, end = route.points[rank : rank + 2] + if ( + abs(start[0] - end[0]) <= COORD_TOLERANCE + and outward * (start[0] - entry.x) >= SECTION_ROUTE_CLEARANCE + ): + route.points = route.points[: rank + 2] + dogleg_x = end[0] + route.points.extend([(dogleg_x, target[1]), target]) + return True + if ( + entry is not None + and port is not None + and port.side in (PortSide.LEFT, PortSide.RIGHT) + and abs(endpoint[0] - entry.x) <= COORD_TOLERANCE + and abs(target[0] - entry.x) <= COORD_TOLERANCE + and abs(endpoint[1] - target[1]) > COORD_TOLERANCE + ): + outward = 1.0 if port.side is PortSide.RIGHT else -1.0 + dogleg_x = entry.x + outward * (SECTION_ROUTE_CLEARANCE + ctx.offset_step) + route.points[-1] = (dogleg_x, endpoint[1]) + route.points.extend([(dogleg_x, target[1]), target]) + return True prior = route.points[-2] horizontal = abs(prior[1] - endpoint[1]) <= COORD_TOLERANCE vertical = abs(prior[0] - endpoint[0]) <= COORD_TOLERANCE if horizontal and abs(endpoint[1] - target[1]) <= COORD_TOLERANCE: route.points[-1] = target - return + return False if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE: route.points[-1] = target - return + return False elbow = (target[0], endpoint[1]) if horizontal else (endpoint[0], target[1]) if elbow != endpoint and elbow != target: route.points.append(elbow) route.points.append(target) + return False def _bake_route(route: RoutedPath, ctx: _RoutingCtx) -> None: @@ -504,6 +568,7 @@ def _landing_from_trial( ctx: _RoutingCtx, lane_rank: int, ) -> ConvergenceLanding: + boundary_dogleg = False if is_trunk: assert run is not None join_point = (run.xa, run.y) @@ -520,11 +585,11 @@ def _landing_from_trial( ) _bake_route(route, ctx) join_point = _closest_point_on_polyline(route.points[-1], trunk_points) - _connect_route_endpoint(route, join_point) + boundary_dogleg = _connect_route_endpoint(route, join_point, ctx) else: _bake_route(route, ctx) join_point = _closest_point_on_polyline(route.points[-1], trunk_points) - _connect_route_endpoint(route, join_point) + boundary_dogleg = _connect_route_endpoint(route, join_point, ctx) approach = _landing_approach(route, join_point) if approach is None: raise UnsupportedConvergenceError("convergence landing has no approach") @@ -564,6 +629,8 @@ def _landing_from_trial( opening_turn_coordinate=(opening_turn.x if opening_turn is not None else None), opening_turn_segment=opening_turn_segment, bypass=is_trunk + or boundary_dogleg + or route.normalize_exempt or (edge.source, edge.target, edge.line_id) in ctx.merge.branch_edges, long_haul=column_span > 1, multiple_row=( @@ -911,7 +978,7 @@ def _build_planned_convergence( ) in ctx.skip_edges: for edge_key in incoming_edges: _connect_route_endpoint( - trial_routes[edge_key], direct_route.points[-1] + trial_routes[edge_key], direct_route.points[-1], ctx ) trunk_axis, carrier_rank = _required_shared_terminal_axis( tuple(trial_routes[edge_key] for edge_key in incoming_edges), @@ -1052,6 +1119,10 @@ def _build_planned_convergence( if carrier_edge is not None and ( not feeder_at_start + or ( + carrier_edge == trunk_edge_key + and primary_reason is ConvergenceTrunkReason.LONGEST_BYPASS + ) or (edge_key.source, edge_key.target, edge_key.line_id) in ctx.skip_edges ) @@ -1378,7 +1449,7 @@ def _reconcile_landing_handedness( landings: list[ConvergenceLanding] = [] for landing in plan.landings: handedness = landing.corner_handedness - if handedness is not None: + if handedness is not None and not landing.bypass: source = graph.stations[landing.source_junction_id] if landing.approach_axis is DemandAxis.X: start = (landing.join_point[0], source.y) @@ -3152,7 +3223,9 @@ def feasible(candidate: float) -> bool: gap_edges, channel.coordinate ): return False - if any(_gap_channels_crowd(channel, obstacle) for obstacle in obstacles): + if any( + _landing_channels_crowd(channel, obstacle) for obstacle in obstacles + ): return False return jointly_feasible is None or jointly_feasible(candidate) @@ -3276,6 +3349,7 @@ def _settle_opposing_gap_flanks( exit_owned_flanks: frozenset[tuple[ConvergencePlanId, int]] = frozenset(), fixed_channels: tuple[_PlanGapChannel, ...] = (), fixed_exit_channels: frozenset[tuple[EmissionMemberId, float]] = frozenset(), + _reverse_rescue: bool = True, ) -> tuple[ConvergencePlan, ...]: """Lane counter-running flank columns that share one inter-column gap. @@ -3339,13 +3413,9 @@ def resident_channels(current_rank: int) -> list[_PlanGapChannel]: obstacles = tuple( obstacle for obstacle in resident - if any(not channel.line_ids & obstacle.line_ids for channel in seated) + if any(_landing_channels_crowd(channel, obstacle) for channel in seated) ) - if not seated or not any( - _gap_channels_crowd(channel, obstacle) - for channel in seated - for obstacle in obstacles - ): + if not seated or not obstacles: continue coupled_flanks = tuple( (candidate_rank, candidate_flank_rank) @@ -3421,7 +3491,7 @@ def landing_feasible(candidate_coordinate: float) -> bool: if channel.flank_rank == flank_rank ) if not moved_channels or any( - _gap_channels_crowd(channel, obstacle) + _landing_channels_crowd(channel, obstacle) for channel in moved_channels for obstacle in resident ): @@ -3461,16 +3531,27 @@ def landing_feasible(candidate_coordinate: float) -> bool: obstacles = tuple( obstacle for obstacle in resident - if not channel.line_ids & obstacle.line_ids - and _gap_channels_crowd(channel, obstacle) + if _landing_channels_crowd(channel, obstacle) ) if not obstacles: continue gap_edges = column_gap_edges( graph, channel.gap[0], channel.gap[0] + 1, row=channel.gap[1] ) - candidates = _clearance_candidates( - channel.coordinate, channel.down, obstacles + candidates = tuple( + sorted( + { + obstacle.coordinate + sign * clearance + for obstacle in resident + if (clearance := _landing_channel_clearance(channel, obstacle)) + is not None + for sign in (-1.0, 1.0) + }, + key=lambda candidate: ( + abs(candidate - channel.coordinate), + candidate, + ), + ) ) for coordinate in candidates: if not _inside_usable_gap(gap_edges, coordinate): @@ -3493,7 +3574,7 @@ def landing_feasible(candidate_coordinate: float) -> bool: None, ) if moved_channel is None or any( - _gap_channels_crowd(moved_channel, obstacle) + _landing_channels_crowd(moved_channel, obstacle) for obstacle in resident ): continue @@ -3510,7 +3591,42 @@ def landing_feasible(candidate_coordinate: float) -> bool: channels = channels_of(moved_plan) break by_id = {plan.id: plan for plan in settled} - return tuple(by_id[plan.id] for plan in plans) + result = tuple(by_id[plan.id] for plan in plans) + return _reverse_rescue_gap_flanks( + result, + graph, + curve_radius, + exit_owned_flanks, + fixed_channels, + fixed_exit_channels, + enabled=_reverse_rescue, + ) + + +def _reverse_rescue_gap_flanks( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + curve_radius: float, + exit_owned_flanks: frozenset[tuple[ConvergencePlanId, int]], + fixed_channels: tuple[_PlanGapChannel, ...], + fixed_exit_channels: frozenset[tuple[EmissionMemberId, float]], + *, + enabled: bool, +) -> tuple[ConvergencePlan, ...]: + """Give an earlier movable plan a chance to clear a later fixed carrier.""" + if not enabled or len(plans) < 2: + return plans + rescued = _settle_opposing_gap_flanks( + tuple(reversed(plans)), + graph, + curve_radius, + exit_owned_flanks, + fixed_channels, + fixed_exit_channels, + _reverse_rescue=False, + ) + rescued_by_id = {plan.id: plan for plan in rescued} + return tuple(rescued_by_id[plan.id] for plan in plans) def _channels_share_source_carrier( @@ -3538,6 +3654,48 @@ def _channels_share_source_carrier( ) +def _landing_channel_clearance( + landing: _PlanGapChannel, + obstacle: _PlanGapChannel, +) -> float | None: + """Return the lane clearance for two distinct semantic landing carriers.""" + overlap = min(landing.y_hi, obstacle.y_hi) - max(landing.y_lo, obstacle.y_lo) + shared_lines = landing.line_ids & obstacle.line_ids + if shared_lines: + if landing.down is obstacle.down or _channels_share_source_carrier( + landing, obstacle + ): + return None + return cotravelling_lane_clearance( + same_line=True, + counter_running=True, + curve_radius=CURVE_RADIUS, + ) + if COORD_TOLERANCE < overlap < MIN_CORRIDOR_Y_OVERLAP: + return BUNDLE_TO_BUNDLE_CLEARANCE + return cotravelling_lane_clearance( + same_line=False, + counter_running=landing.down is not obstacle.down, + curve_radius=CURVE_RADIUS, + ) + + +def _landing_channels_crowd( + landing: _PlanGapChannel, + obstacle: _PlanGapChannel, +) -> bool: + """Whether a movable landing crowds a distinct fixed carrier.""" + clearance = _landing_channel_clearance(landing, obstacle) + return bool( + clearance is not None + and landing.gap == obstacle.gap + and min(landing.y_hi, obstacle.y_hi) - max(landing.y_lo, obstacle.y_lo) + > COORD_TOLERANCE + and abs(landing.coordinate - obstacle.coordinate) + < clearance - COORD_TOLERANCE_FINE + ) + + def _planned_member_gap_channels( plans: tuple[ConvergencePlan, ...], member_geometry: MemberGeometryExecution, @@ -4122,6 +4280,7 @@ def _fixed_x_channel_claims( segments.extend( (continuation.edge, (continuation.start_point, continuation.end_point)) for continuation in plan.outgoing_continuations + if continuation.covered_by_member_id is None ) for segment_rank, (owner_edge, segment) in enumerate(segments): start, end = segment @@ -4510,6 +4669,7 @@ def preliminary_member_gap_claims( channel.line_ids, channel.source_junction_ids, channel.connector_ids, + channel.continuation_endpoint_ids, ) for plan in execution.plans if plan.system_id in planned_system_ids and plan.owns_geometry @@ -4998,7 +5158,7 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: if plan.primary_trunk_member_id == membership.member_id: if plan.primary_trunk_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH: _bake_route(route, ctx) - _connect_route_endpoint(route, landing.join_point) + _connect_route_endpoint(route, landing.join_point, ctx) assert plan.trunk_axis is not None lane_rank = plan.lane_order.index(route.line_id) lane_offset = (len(plan.lane_order) - lane_rank - 1) * ctx.offset_step @@ -5024,7 +5184,7 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: if key in ctx.merge.branch_edges: _land_feeder_on_run(route, run, ctx) _bake_route(route, ctx) - _connect_route_endpoint(route, landing.join_point) + _connect_route_endpoint(route, landing.join_point, ctx) route.convergence_owned_segment_ranks = _ordered_unique( (len(route.points) - 2,) + (() if opening_rank is None else (opening_rank,)) ) diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index 34c15c6e3..0910a85d2 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -168,6 +168,7 @@ RouteFamilyId.MERGE_ENTRY_CORRIDOR, RouteFamilyId.MERGE_ENTRY_AROUND_BELOW, RouteFamilyId.MERGE_ENTRY_PERPENDICULAR, + RouteFamilyId.MERGE_ENTRY_RIGHT_WRAP, RouteFamilyId.BYPASS_CELLMATE_GAP_DROP, RouteFamilyId.BYPASS_PACKED_CELL_SAME_ROW, RouteFamilyId.BYPASS_RIGHT_ENTRY_CROSS_ROW, @@ -922,6 +923,7 @@ def _straight_connector_turn_requirement( RouteFamilyId.MERGE_ENTRY_CORRIDOR, RouteFamilyId.MERGE_ENTRY_AROUND_BELOW, RouteFamilyId.MERGE_ENTRY_PERPENDICULAR, + RouteFamilyId.MERGE_ENTRY_RIGHT_WRAP, RouteFamilyId.MERGE_TRUNK_AROUND_BELOW, RouteFamilyId.SERPENTINE_LEFT, } diff --git a/src/nf_metro/layout/routing/families.py b/src/nf_metro/layout/routing/families.py index d53a12b6d..2c7330530 100644 --- a/src/nf_metro/layout/routing/families.py +++ b/src/nf_metro/layout/routing/families.py @@ -39,6 +39,7 @@ class RouteFamilyId(str, Enum): MERGE_ENTRY_CORRIDOR = "merge-entry-corridor" MERGE_ENTRY_AROUND_BELOW = "merge-entry-around-below" MERGE_ENTRY_PERPENDICULAR = "merge-entry-perpendicular" + MERGE_ENTRY_RIGHT_WRAP = "merge-entry-right-wrap" RIGHT_ENTRY_PLOUGH_BYPASS = "right-entry-plough-bypass" RIGHT_ENTRY_CROSS_ROW_WRAP = "right-entry-cross-row-wrap" STANDARD_L_SHAPE = "standard-l-shape" diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 776ef99ae..39260e48e 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -28,6 +28,7 @@ from nf_metro.layout.route_plan import RoutePlanObserver from nf_metro.layout.constants import ( + BUNDLE_TO_BUNDLE_CLEARANCE, BYPASS_CLEARANCE, COORD_TOLERANCE, COORD_TOLERANCE_FINE, @@ -571,10 +572,13 @@ def _route_straight_connector(f: _InterFacts) -> RoutedPath | None: is_inter_section=True, ) if planned_transition is not None: + _declare_placed_channels(planned_transition, f.ctx) return planned_transition - return route_straight( + route = route_straight( f.edge, f.ctx, (f.sx, f.sy), (f.tx, f.ty), base_radius=f.ctx.curve_radius ) + _declare_placed_channels(route, f.ctx) + return route def _route_near_vertical_junction(f: _InterFacts) -> RoutedPath | None: @@ -1553,6 +1557,7 @@ class _MergeEntryRoute(Enum): CORRIDOR = "corridor" AROUND_BELOW = "around_below" PERPENDICULAR_ENTRY = "perpendicular_entry" + RIGHT_ENTRY_WRAP = "right_entry_wrap" L_SHAPE = "l_shape" @@ -1575,6 +1580,19 @@ def _merge_entry_route_kind(f: _InterFacts) -> _MergeEntryRoute: ep_port = graph.ports.get(ep.id) if ep_port and ep_port.side in (PortSide.TOP, PortSide.BOTTOM): return _MergeEntryRoute.PERPENDICULAR_ENTRY + source_section = resolve_section(graph, src, prefer_upstream=True) + if ( + ep_port + and ep_port.side is PortSide.RIGHT + and f.cross_row + and f.edge.source in ctx.junction_ids + and source_section is not None + and source_section.bbox_w > 0 + and f.sx >= source_section.bbox_x + source_section.bbox_w - COORD_TOLERANCE + and _l_shape_mid_x(f.edge, src, ep, f.n, ctx) + < source_section.bbox_x + source_section.bbox_w - COORD_TOLERANCE + ): + return _MergeEntryRoute.RIGHT_ENTRY_WRAP if ep_port and ep_port.side == PortSide.LEFT: exclude = {src.section_id} if src.section_id else set[str]() if f.h_segment_crosses_other_section(f.sx, ep.x, ep.y, exclude): @@ -1640,6 +1658,7 @@ def _route_merge_entry_kind( _MergeEntryRoute.PERPENDICULAR_ENTRY: lambda: _route_perpendicular_entry_stair( edge, src, ep, f.n, ctx ), + _MergeEntryRoute.RIGHT_ENTRY_WRAP: lambda: _route_merge_entry_right_wrap(f), _MergeEntryRoute.L_SHAPE: lambda: _route_l_shape(edge, src, ep, f.i, f.n, ctx), } return builders[kind]() @@ -1666,6 +1685,35 @@ def _route_merge_entry_perpendicular(f: _InterFacts) -> RoutedPath | None: return _route_merge_entry_kind(f, _MergeEntryRoute.PERPENDICULAR_ENTRY) +def _route_merge_entry_right_wrap(f: _InterFacts) -> RoutedPath: + """Feed a merge into a RIGHT entry from the port's outward side.""" + src_col = f.src_col if f.src_col is not None else 0 + assert f.merge_ep is not None + ep_col, _ep_row = _resolve_section_colrow(f.graph, f.merge_ep) + tgt_col = ep_col if ep_col is not None else src_col + channel_y = bypass_bottom_y( + f.graph, + src_col, + tgt_col, + BYPASS_CLEARANCE, + src_row=f.src_row, + cross_row=True, + ) + return _build_right_entry_wrap_route( + f.edge, + f.src, + f.merge_ep, + f.i, + f.n, + f.ctx, + channel_y, + ) + + +def _route_merge_entry_right_wrap_family(f: _InterFacts) -> RoutedPath | None: + return _route_merge_entry_kind(f, _MergeEntryRoute.RIGHT_ENTRY_WRAP) + + def _takes_merge_entry_kind(f: _InterFacts, kind: _MergeEntryRoute) -> bool: return f.merge_ep is not None and f.merge_entry_route is kind @@ -1679,9 +1727,20 @@ def _right_entry_plough_needs_bypass(f: _InterFacts) -> bool: and f.tgt_row > f.src_row and f.src_col is not None and f.tgt_col is not None + and horizontal_direction(f.dx) is Direction.L ): return False - return f.h_segment_crosses_other_section(f.sx, f.tx, f.ty) + if f.h_segment_crosses_other_section(f.sx, f.tx, f.ty): + return True + _fan, _pos_n, _delta, corner_x = _wrap_fan_geometry( + f.ctx, + f.edge, + f.src, + f.i, + f.n, + vertical_direction(f.dy), + ) + return f.h_segment_crosses_other_section(f.sx, corner_x, f.sy) def _route_right_entry_plough_bypass(f: _InterFacts) -> RoutedPath | None: @@ -1987,6 +2046,12 @@ def owns_residual( lambda f: _takes_merge_entry_kind(f, _MergeEntryRoute.PERPENDICULAR_ENTRY), _route_merge_entry_perpendicular, ), + _Rule( + RouteFamilyId.MERGE_ENTRY_RIGHT_WRAP, + "merge entry RIGHT outward wrap", + lambda f: _takes_merge_entry_kind(f, _MergeEntryRoute.RIGHT_ENTRY_WRAP), + _route_merge_entry_right_wrap_family, + ), _Rule( RouteFamilyId.MERGE_ENTRY, "merge entry family", @@ -2882,13 +2947,15 @@ def _has_around_section_sibling( class _MergeTrunkShape(NamedTuple): """How a merge trunk reaches the entry port standing behind its junction. - ``around_below`` marks the loop under the target; every other field is a + ``around_below`` marks the loop under the target and ``right_entry_wrap`` + marks an outward approach to a RIGHT port; every other field is a :func:`_bypass_geometry` input for the U-shape drawn otherwise. Stated apart from the builder so the plan naming the trunk's turn and the emission drawing it read one description of the shape. """ around_below: bool + right_entry_wrap: bool entry_port: Station | None effective_tx: float effective_ty: float @@ -2949,6 +3016,7 @@ def _merge_trunk_shape(f: _InterFacts) -> _MergeTrunkShape: if no_left_channel: return _MergeTrunkShape( True, + False, ep, effective_tx, effective_ty, @@ -2958,6 +3026,10 @@ def _merge_trunk_shape(f: _InterFacts) -> _MergeTrunkShape: ) return _MergeTrunkShape( False, + ep is not None + and ep_port is not None + and ep_port.side == PortSide.RIGHT + and f.src.x < ep.x, ep, effective_tx, effective_ty, @@ -2979,6 +3051,19 @@ def _route_merge_trunk( """Full U-shape bypass for the trunk carrier, ending at the entry port.""" shape = shape or f.merge_trunk_shape assert not shape.around_below + if shape.right_entry_wrap: + assert shape.entry_port is not None + channel_y = f.ctx.merge.trunk_by.get(f.edge.target) + assert channel_y is not None + return _build_right_entry_wrap_route( + f.edge, + f.src, + shape.entry_port, + f.i, + f.n, + f.ctx, + channel_y, + ) return _route_bypass(f, _bypass_geometry(f, shape)) @@ -3446,6 +3531,23 @@ def _bypass_geometry( graph, gap2_x, by, ty, SECTION_ROUTE_CLEARANCE, exclude, g2_left, g2_right ) + emitted_source_y = sy + src_off + if _h_segment_crosses_other_section(graph, sx, gap1_x, emitted_source_y, exclude): + left_candidate = sx - ctx.curve_radius + left_candidate = _clear_channel_x_in_band( + graph, + left_candidate, + emitted_source_y, + by, + SECTION_ROUTE_CLEARANCE, + exclude, + bound_right=left_candidate, + ) + if not _h_segment_crosses_other_section( + graph, sx, left_candidate, emitted_source_y, exclude + ): + gap1_x = left_candidate + # Describe the U as a centreline through the two gap channels plus a # per-line offset on each, and let build_tapered_bundle derive every # corner concentrically. The source-side legs (source lead-in, gap1 @@ -6770,6 +6872,49 @@ def _right_entry_wrap_geometry(f: _InterFacts) -> _RightEntryWrapGeometry: rank=2, ) + for sibling in ctx.graph.edges_from(edge.source): + if sibling is edge or sibling.line_id == edge.line_id: + continue + sibling_src, sibling_tgt = ctx.graph.edge_endpoints(sibling) + sibling_facts = _build_inter_facts(sibling, sibling_src, sibling_tgt, ctx) + if not ( + sibling_facts.needs_bypass + and sibling_facts.bypass_route is _BypassRoute.U_BYPASS + ): + continue + sibling_geometry = _bypass_geometry(sibling_facts) + traverse_y = sibling_geometry.centreline[2][1] + if not ( + sibling_geometry.gap1_x + COORD_TOLERANCE + < corner_x + < sibling_geometry.gap2_x - COORD_TOLERANCE + and hy > traverse_y + COORD_TOLERANCE + and sibling_geometry.gap1_x + COORD_TOLERANCE + < vx + < sibling_geometry.gap2_x - COORD_TOLERANCE + ): + continue + outer_corner = sibling_geometry.gap1_x - BUNDLE_TO_BUNDLE_CLEARANCE + outer_descent = vx + BUNDLE_TO_BUNDLE_CLEARANCE + 2 * ctx.offset_step + source_left, source_right = column_gap_edges( + ctx.graph, src_col, src_col + 1, row=src_row + ) + target_left, target_right = column_gap_edges( + ctx.graph, tgt_col, tgt_col + 1, row=tgt_row + ) + if ( + source_left + EDGE_TO_BUNDLE_CLEARANCE + <= outer_corner + <= source_right - EDGE_TO_BUNDLE_CLEARANCE + and target_left + EDGE_TO_BUNDLE_CLEARANCE + <= outer_descent + <= target_right - EDGE_TO_BUNDLE_CLEARANCE + ): + corner_x = outer_corner + hy = traverse_y + BUNDLE_TO_BUNDLE_CLEARANCE + vx = outer_descent + break + # A same-line descent from another source already in the lead-out gap would # merge with a source-hugging turn-down into one corner. Carry the # horizontal on and turn down clear to its right (bounded at the target row diff --git a/src/nf_metro/layout/routing/invariants.py b/src/nf_metro/layout/routing/invariants.py index 3d0c64097..70d5cd876 100644 --- a/src/nf_metro/layout/routing/invariants.py +++ b/src/nf_metro/layout/routing/invariants.py @@ -1187,8 +1187,9 @@ def classify_merge_port_feeders( entry port fed by at least two distinct feeders, with at least one horizontal co-traveller and at least one perpendicular feeder. A line is horizontal when its immediate feeder sits in the port's own - row; it is ``below`` / ``above`` only when fed by a direct exit port - (not a junction) a row below / above the port - the clean + row or comes directly from an exit in the same grid row; it is + ``below`` / ``above`` only when fed by a direct exit port + (not a junction) in a different grid row - the clean inter-section edge that arrives perpendicular at the boundary. A line dropped into the row by an upstream fan/merge junction co-travels horizontally and is not a perpendicular joiner, so it is @@ -1220,6 +1221,16 @@ def classify_merge_port_feeders( distinct_sources.add(id(src)) if lid in bypass_lids: continue + source_section = graph.sections.get(src.section_id) if src.section_id else None + target_section = graph.sections.get(port_obj.section_id) + if ( + not is_junction + and source_section is not None + and target_section is not None + and source_section.grid_row == target_section.grid_row + ): + horizontal.append(lid) + continue dy = src.y - port_st.y if abs(dy) <= _MERGE_APPROACH_Y_TOL: horizontal.append(lid) @@ -2794,7 +2805,7 @@ def check_no_split_same_line_fanout_descents( descent (issue #702). Coincident descents (a fused trunk) are the wanted state and never flag. """ - by_source: dict[tuple[str, str, bool], list[tuple[float, float, float]]] = ( + by_source: dict[tuple[str, str, bool, bool], list[tuple[float, float, float]]] = ( defaultdict(list) ) for rp in routes: @@ -2810,10 +2821,13 @@ def check_no_split_same_line_fanout_descents( source_station = graph.stations.get(rp.edge.source) if source_station is not None and abs(x - source_station.x) <= COORD_TOLERANCE: continue - by_source[(rp.edge.source, rp.line_id, down)].append((x, y_lo, y_hi)) + opens_right = rp.points[1][0] > rp.points[0][0] + by_source[(rp.edge.source, rp.line_id, down, opens_right)].append( + (x, y_lo, y_hi) + ) violations: list[SplitFanoutDescent] = [] - for (source, line_id, _down), descents in by_source.items(): + for (source, line_id, _down, _opens_right), descents in by_source.items(): if len(descents) < 2: continue for i in range(len(descents)): diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 297e54dc9..d73e56136 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -61,6 +61,7 @@ _reseat_concentric_flanking, _route_endpoint_section_ids, _segment_claim_band, + _separate_declared_opposing_gap_bundles, _separate_fused_cotravelling_runs, _separate_opposing_inter_row_trunks, _set_vchannel_x, @@ -109,6 +110,7 @@ class PreliminaryGapChannelClaim: line_ids: frozenset[str] source_junction_ids: frozenset[str] = frozenset() connector_ids: frozenset[str] = frozenset() + continuation_endpoint_ids: frozenset[str] = frozenset() @dataclass(frozen=True, slots=True) @@ -1164,7 +1166,10 @@ def _claim_source_compatible( if claim.system_id != item.candidate.system_id: return False source_id = item.candidate.route.edge.source - if source_id in claim.source_junction_ids: + if ( + source_id in claim.source_junction_ids + or source_id in claim.continuation_endpoint_ids + ): return True return not claim.connector_ids.isdisjoint(item.candidate.connector_ids) @@ -1628,7 +1633,7 @@ def build_member_geometry_execution( # direction bands have to be settled here rather than by the same pass # running after emission, which skips a plan-owned trunk. _separate_opposing_inter_row_trunks(normalization_population, ctx) - _reconcile_port_peeloff_risers(complete_path_population, ctx) + _reconcile_port_peeloff_risers(normalization_population, ctx) _coincide_same_line_tracks(normalization_population, ctx) _coincide_fanout_opening_descents( normalization_population, ctx, settle_frozen_arcs=True @@ -1708,6 +1713,18 @@ def build_member_geometry_execution( for route, axis_id, segment_rank in deferred_exit_turn_ownership: route.exit_turn_axis_id = axis_id route.exit_turn_segment_rank = segment_rank + _separate_declared_opposing_gap_bundles(normalization_population, ctx) + _align_same_line_channels( + _materialized_channels(tuple(candidates), ctx), + _index_claims(eligible_claims), + ctx, + pending_exit_turn_plan_ids, + ) + _stagger_convergent_distinct_lines( + normalization_population, + ctx, + movable_route_ids=complete_path_route_ids, + ) plans = tuple( _freeze_plan( scaffold, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 3beb5a453..bb63c3be8 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -60,6 +60,7 @@ packed_cell_neighbor_edges, peeloff_target_slots, planner_owns_segment, + resolve_section, route_system_owns_segment_boundary, seat_peeloff_port_y, section_ids_of_stations, @@ -365,10 +366,10 @@ def _required_channel_clearance( Same-direction channels are nested by the bundle passes rather than spaced here, so this asks nothing of them. """ - if a.down is b.down: - return 0.0 overlap = min(a.y_hi, b.y_hi) - max(a.y_lo, b.y_lo) - if overlap <= MIN_CORRIDOR_Y_OVERLAP: + if COORD_TOLERANCE < overlap < MIN_CORRIDOR_Y_OVERLAP: + return BUNDLE_TO_BUNDLE_CLEARANCE + if a.down is b.down or overlap <= MIN_CORRIDOR_Y_OVERLAP: return 0.0 return cotravelling_lane_clearance( same_line=a.route.line_id == b.route.line_id, @@ -848,7 +849,9 @@ def _validate_planned_exit_turn_radii( def _separate_declared_opposing_gap_bundles( - routes: list[RoutedPath], ctx: _RoutingCtx + routes: list[RoutedPath], + ctx: _RoutingCtx, + movable_route_ids: frozenset[int] = frozenset(), ) -> None: """Separate settled counter-running gap bundles around exempt obstacles.""" graph = ctx.graph @@ -862,17 +865,33 @@ def _separate_declared_opposing_gap_bundles( if ch is None or (key, id(rp), ch.idx) in seen: continue seen.add((key, id(rp), ch.idx)) - (fixed if rp.normalize_exempt or _planner_owns_channel(ch) else movable)[ - key - ].append(ch) + owner = ( + fixed + if rp.normalize_exempt + or (id(rp) not in movable_route_ids and _planner_owns_channel(ch)) + else movable + ) + owner[key].append(ch) bands = _grid_row_bands(graph) for (lo, row), chans in movable.items(): gap_left, gap_right = column_gap_edges(graph, lo, lo + 1, row=row) if gap_right <= gap_left: continue + obstacles = [ + channel + for (fixed_lo, _fixed_row), channels in fixed.items() + if fixed_lo == lo + for channel in channels + if any( + min(channel.y_hi, movable_channel.y_hi) + - max(channel.y_lo, movable_channel.y_lo) + > COORD_TOLERANCE + for movable_channel in chans + ) + ] crossed_spans = [(c.y_lo, c.y_hi) for c in chans] - crossed_spans += [(c.y_lo, c.y_hi) for c in fixed.get((lo, row), [])] + crossed_spans += [(c.y_lo, c.y_hi) for c in obstacles] for r, band in bands.items(): if not any( y_lo < band[1] and band[0] < y_hi for y_lo, y_hi in crossed_spans @@ -887,15 +906,98 @@ def _separate_declared_opposing_gap_bundles( for down in (True, False) for corridor in _split_corridors([c for c in chans if c.down is down]) ] - _anchor_same_direction_fixed_channels(bundles, fixed.get((lo, row), []), ctx) + _anchor_same_direction_fixed_channels(bundles, obstacles, ctx) _separate_opposing_gap_bundles( bundles, - fixed.get((lo, row), []), + obstacles, gap_left, gap_right, ctx, ) + all_fixed = [channel for channels in fixed.values() for channel in channels] + for (lo, row), channels in movable.items(): + gap_left, gap_right = column_gap_edges(graph, lo, lo + 1, row=row) + usable_left = gap_left + EDGE_TO_BUNDLE_CLEARANCE + usable_right = gap_right - EDGE_TO_BUNDLE_CLEARANCE + for channel in channels: + short_overlap_obstacles = [ + obstacle + for obstacle in all_fixed + if obstacle.route.line_id != channel.route.line_id + and COORD_TOLERANCE + < min(channel.y_hi, obstacle.y_hi) - max(channel.y_lo, obstacle.y_lo) + < MIN_CORRIDOR_Y_OVERLAP + and abs(channel.x - obstacle.x) + < BUNDLE_TO_BUNDLE_CLEARANCE - COORD_TOLERANCE + ] + if not short_overlap_obstacles: + continue + candidates = { + obstacle.x - BUNDLE_TO_BUNDLE_CLEARANCE + for obstacle in short_overlap_obstacles + } | { + obstacle.x + BUNDLE_TO_BUNDLE_CLEARANCE + for obstacle in short_overlap_obstacles + } + target = next( + ( + candidate + for candidate in sorted( + candidates, key=lambda value: (abs(value - channel.x), value) + ) + if usable_left - COORD_TOLERANCE + <= candidate + <= usable_right + COORD_TOLERANCE + and not _section_intrudes( + graph, candidate, channel.y_lo, channel.y_hi + ) + and not _vchannel_move_crosses_foreign_section( + channel, candidate, graph + ) + and all( + abs(candidate - obstacle.x) + >= BUNDLE_TO_BUNDLE_CLEARANCE - COORD_TOLERANCE + for obstacle in short_overlap_obstacles + ) + ), + None, + ) + if target is not None: + _set_vchannel_x(channel, target) + channel.x = target + + +def _vchannel_move_crosses_foreign_section( + channel: _VChannel, + candidate: float, + graph: MetroGraph, +) -> bool: + """Whether moving a riser would drag either flanking run through a box.""" + route, rank = channel.route, channel.idx + endpoint_sections = set(_route_endpoint_section_ids(graph, route)) + runs: list[tuple[float, float, float]] = [] + if rank > 0: + prior = route.points[rank - 1] + corner = route.points[rank] + if abs(prior[1] - corner[1]) <= COORD_TOLERANCE: + runs.append((corner[1], prior[0], candidate)) + if rank + 2 < len(route.points): + corner = route.points[rank + 1] + after = route.points[rank + 2] + if abs(corner[1] - after[1]) <= COORD_TOLERANCE: + runs.append((corner[1], candidate, after[0])) + return any( + section.id not in endpoint_sections + and section.bbox_y + COORD_TOLERANCE + < y + < section.bbox_y + section.bbox_h - COORD_TOLERANCE + and min(xa, xb) < section.bbox_x + section.bbox_w - COORD_TOLERANCE + and section.bbox_x + COORD_TOLERANCE < max(xa, xb) + for y, xa, xb in runs + for section in graph.sections.values() + ) + @dataclass class _HTrunk: @@ -1848,9 +1950,7 @@ def _stagger_convergent_distinct_lines( list ) for rp in routes: - if not rp.is_inter_section or ( - movable_route_ids is not None and id(rp) not in movable_route_ids - ): + if not rp.is_inter_section: continue ch = _final_port_approach(rp) if ch is None: @@ -1868,7 +1968,11 @@ def _stagger_convergent_distinct_lines( } for (port_id, down), entries in by_port.items(): - if any(_planner_owns_channel(channel) for _route, channel in entries): + if any( + _planner_owns_channel(channel) + and (movable_route_ids is None or id(route) not in movable_route_ids) + for route, channel in entries + ): continue port = ctx.graph.ports.get(port_id) if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT): @@ -1886,6 +1990,7 @@ def _stagger_convergent_distinct_lines( ) if any( _planner_owns_channel(channel) + and (movable_route_ids is None or id(route) not in movable_route_ids) or _descent_crosses_section( ctx.graph, channel, @@ -2314,21 +2419,23 @@ def _initial_fanout_descent(rp: RoutedPath) -> _VChannel | None: def _divergent_source_spans( rp: RoutedPath, -) -> Iterable[tuple[tuple[str, str, bool], _VChannel]]: - """A route's opening fan-out descent, keyed by source, line and direction.""" +) -> Iterable[tuple[tuple[str, str, bool, bool], _VChannel]]: + """A route's opening descent, keyed by source, line, fall, and lead.""" ch = _opening_fanout_descent(rp) if ch is not None: - yield (rp.edge.source, rp.line_id, ch.down), ch + opens_right = rp.points[1][0] > rp.points[0][0] + yield (rp.edge.source, rp.line_id, ch.down, opens_right), ch def _distinct_descent_spans( rp: RoutedPath, -) -> Iterable[tuple[tuple[str, bool], _VChannel]]: - """A route's opening fan-out descent, keyed by source and direction.""" +) -> Iterable[tuple[tuple[str, bool, bool], _VChannel]]: + """An opening descent, keyed by source, fall, and horizontal lead.""" channel = _opening_fanout_descent(rp) if channel is None: return - yield (rp.edge.source, channel.down), channel + opens_right = rp.points[1][0] > rp.points[0][0] + yield (rp.edge.source, channel.down, opens_right), channel def _divergent_source_groups(routes: list[RoutedPath]) -> list[_Coincidence]: @@ -2344,9 +2451,10 @@ def _divergent_source_groups(routes: list[RoutedPath]) -> list[_Coincidence]: and an inverted split (the farther-reaching branch opening inside the nearer one) crosses its sibling's descent. - Descents are grouped by source endpoint + line + descent direction; every - group of two or more fuses onto the channel nearest the source, hugging the - side the branches leave from, and splits off downstream at each own turn Y. + Descents are grouped by source endpoint, line, descent direction, and + horizontal opening direction. Every group of two or more fuses onto the + channel nearest the source, hugging the side the branches leave from, and + splits off downstream at each own turn Y. Unlike the convergent case there is no proximity band: any same-source pair overlapping in Y must collapse, however far apart their Xs. @@ -2619,6 +2727,11 @@ def _merge_feeder_groups( ch = _initial_fanout_descent(rp) if ch is None: continue + section = resolve_section(graph, trunk_src_st, prefer_upstream=True) + if section is not None and section.bbox_w > 0: + midpoint = section.bbox_x + section.bbox_w / 2 + if (ch.x - midpoint) * (trunk_ch.x - midpoint) < 0: + continue members.append(ch) if members: groups.append(_Coincidence(members, trunk_ch.x)) @@ -3174,6 +3287,12 @@ def _restack_trunk_band( bundled.add(id(t.route)) if abs(new_y - t.y) <= COORD_TOLERANCE: continue + if ( + t.route.normalize_exempt + and _run_enters_section(ctx.graph, 1, new_y, (t.x_lo, t.x_hi)) + and not _run_enters_section(ctx.graph, 1, t.y, (t.x_lo, t.x_hi)) + ): + continue _restack_htrunk(t, new_y, inner, n, step, ctx.curve_radius) @@ -3347,7 +3466,8 @@ def _dogleg_off_exempt_trunks( use_below = False else: continue - _restack_htrunk(t, below if use_below else above, 0, 1, step, ctx.curve_radius) + target = below if use_below else above + _restack_htrunk(t, target, 0, 1, step, ctx.curve_radius) def _run_enters_section( diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index b0080f439..3915472e9 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -895,6 +895,21 @@ def _reorder_fanout_divergence(ctx: _OffsetCtx) -> None: _apply_section_line_order(ctx, sec_id, new_order) +def _reconcile_fanout_junction_offsets(ctx: _OffsetCtx) -> None: + """Assign each clean divergence's settled slots in semantic peel order.""" + for junction_id in ctx.divergence_exit_ports: + peel_order = fanout_divergence_peel_order( + ctx.graph, junction_id, ctx.line_priority, ctx.topology + ) + if peel_order is None: + continue + settled = sorted( + ctx.offsets.get((junction_id, line_id), 0.0) for line_id in peel_order + ) + for line_id, offset in zip(peel_order, settled): + ctx.offsets[(junction_id, line_id)] = offset + + def _reindex_section_local(ctx: _OffsetCtx) -> None: """Re-index offsets per-section to close priority gaps (non-compact only). @@ -1266,6 +1281,105 @@ def _rerank_contiguous( return {lid: i * ctx.offset_step for i, lid in enumerate(order)} +def _settle_exit_survivor_frames(ctx: _OffsetCtx) -> None: + """Compact each single-entry section's surviving exit cohort.""" + graph = ctx.graph + for section in graph.sections.values(): + if section.direction not in ("LR", "RL") or len(section.entry_ports) != 1: + continue + entry_id = section.entry_ports[0] + entry_lines = set(graph.station_lines(entry_id)) + for exit_id in section.exit_ports: + exit_lines = set(graph.station_lines(exit_id)) + if len(exit_lines) < 2 or not exit_lines < entry_lines: + continue + ordered = sorted( + exit_lines, + key=lambda line_id: ( + ctx.offsets.get((entry_id, line_id), 0.0), + ctx.line_priority.get(line_id, 0), + ), + ) + anchor = min( + ctx.offsets.get((entry_id, line_id), 0.0) for line_id in ordered + ) + desired = { + line_id: anchor + rank * ctx.offset_step + for rank, line_id in enumerate(ordered) + } + for line_id, offset in desired.items(): + ctx.offsets[(exit_id, line_id)] = offset + current = exit_id + seen = {current} + while True: + predecessor = next( + ( + edge.source + for edge in graph.edges_to(current) + if edge.line_id == line_id + and edge.source not in seen + and graph.stations[edge.source].section_id == section.id + ), + None, + ) + if predecessor is None or not set( + graph.station_lines(predecessor) + ).issubset(exit_lines): + break + ctx.offsets[(predecessor, line_id)] = offset + seen.add(predecessor) + current = predecessor + + +def _settle_merge_outgoing_frames(ctx: _OffsetCtx) -> None: + """Carry perpendicular merge slots along their outgoing row.""" + graph = ctx.graph + for port_id in graph.ports: + classified = classify_merge_port_feeders(graph, port_id) + if classified is None: + continue + _horizontal, below, above = classified + for line_id in (*below, *above): + offset = ctx.offsets.get((port_id, line_id), 0.0) + row_y = graph.stations[port_id].y + seen = {port_id} + queue = deque([port_id]) + while queue: + current = queue.popleft() + for edge in graph.edges_from(current): + target_id = edge.target + if target_id in seen: + continue + target = graph.stations[target_id] + if abs(target.y - row_y) > _SAME_Y_TOLERANCE: + continue + seen.add(target_id) + if line_id in graph.station_lines(target_id): + ctx.offsets[(target_id, line_id)] = offset + queue.append(target_id) + + +def _settle_vertical_station_continuations(ctx: _OffsetCtx) -> None: + """Keep flow-aligned continuations on one lane in vertical sections.""" + graph = ctx.graph + for edge in graph.edges: + source, target = graph.edge_endpoints(edge) + if ( + source.is_port + or target.is_port + or source.section_id is None + or source.section_id != target.section_id + or not lanes_run_along_x(graph.sections[source.section_id].direction) + or abs(source.x - target.x) > _SAME_Y_TOLERANCE + or edge.line_id not in graph.station_lines(source.id) + or edge.line_id not in graph.station_lines(target.id) + ): + continue + ctx.offsets[(source.id, edge.line_id)] = ctx.offsets.get( + (target.id, edge.line_id), 0.0 + ) + + def _exit_line_destination_y( graph: MetroGraph, port_id: str, line_id: str ) -> float | None: @@ -2071,7 +2185,7 @@ def _order_perp_entry_by_landing_column(ctx: _OffsetCtx) -> None: ): continue section = graph.section_for_port(port_obj) - if not lanes_run_along_x(section.direction): + if lanes_run_along_x(section.direction): continue lines = graph.station_lines(port_id) if len(lines) < 2: @@ -2178,6 +2292,8 @@ def _compact_station_gaps( graph = ctx.graph for sec_id, section in graph.sections.items(): + if lanes_run_along_x(section.direction): + continue sec_stations = [ sid for sid in section.station_ids if not graph.stations[sid].is_port ] @@ -3786,6 +3902,10 @@ def compute_station_offsets( _center_rail_boundary_port_bundles(ctx) _recenter_single_line_corridor_entry(ctx) _apply_planned_fan_offsets(ctx) + _reconcile_fanout_junction_offsets(ctx) + _settle_merge_outgoing_frames(ctx) + _settle_exit_survivor_frames(ctx) + _settle_vertical_station_continuations(ctx) frames = _materialize_linear_entry_frames(ctx) _validate_linear_entry_frames(ctx, frames) _cache_linear_entry_pill_lines(ctx, frames) @@ -3814,6 +3934,12 @@ def _reverse_offsets_from_roots(ctx: _OffsetCtx, roots: set[str]) -> None: affected.add(succ) stack.append(succ) + affected -= { + port.section_id + for port in ctx.graph.ports.values() + if classify_merge_port_feeders(ctx.graph, port.id) is not None + } + for sid, station in ctx.graph.stations.items(): if station.section_id not in affected: continue @@ -3843,11 +3969,13 @@ def _reverse_near_vertical_junction_right_entry_offsets(ctx: _OffsetCtx) -> None coordinate-free; this pass stays as a coordinate-aware residual. """ graph = ctx.graph + _reverse_offsets_from_roots( ctx, { port.section_id for port in graph.ports.values() if is_near_vertical_junction_right_entry(graph, port) + and classify_merge_port_feeders(graph, port.id) is None }, ) diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index f12e6b59a..cb7f0f294 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -302,7 +302,6 @@ def prepare_member_geometry( exit_turns = exit_turn_routing.build_exit_turn_execution( graph, ctx, - adopt_prior_dispositions=False, ) unresolved = tuple( plan diff --git a/tests/candidate_executor_oracle.py b/tests/candidate_executor_oracle.py index e63317603..c12222d5a 100644 --- a/tests/candidate_executor_oracle.py +++ b/tests/candidate_executor_oracle.py @@ -17,7 +17,7 @@ def main() -> None: - observations: dict[str, str] = {} + observations: dict[str, dict[str, str]] = {} for seed in (15, 41, 72, 77): path = ROOT / f"tests/fixtures/hash_seed_determinism/seed_{seed}.mmd" result = execute_candidates( @@ -27,9 +27,12 @@ def main() -> None: limits=ExecutionLimits(1, 20.0, 30.0), ) ) - observations[str(seed)] = hashlib.sha256( - _attempt_to_bytes(result.baseline) - ).hexdigest() + baseline = result.baseline + observations[str(seed)] = { + "status": baseline.status.value, + "stage": baseline.stage.value, + "payload_sha256": hashlib.sha256(_attempt_to_bytes(baseline)).hexdigest(), + } print(json.dumps(observations, sort_keys=True, separators=(",", ":"))) diff --git a/tests/test_candidate_executor.py b/tests/test_candidate_executor.py index c25e2e60d..c5fe4f804 100644 --- a/tests/test_candidate_executor.py +++ b/tests/test_candidate_executor.py @@ -901,7 +901,7 @@ def forbidden(*args: object, **kwargs: object) -> object: def test_frozen_sources_are_results_not_frozen_stages_across_hash_seeds() -> None: script = ROOT / "tests/candidate_executor_oracle.py" - observations: list[dict[str, str]] = [] + observations: list[dict[str, dict[str, str]]] = [] for seed in ("0", "1", "2", "5", "43", "random"): env = os.environ.copy() env["PYTHONHASHSEED"] = seed @@ -918,3 +918,11 @@ def test_frozen_sources_are_results_not_frozen_stages_across_hash_seeds() -> Non observations.append(json.loads(completed.stdout)) assert all(item == observations[0] for item in observations[1:]) + scoreboard = { + source: (result["status"], result["stage"]) + for source, result in observations[0].items() + } + assert scoreboard == { + source: (CandidateStatus.ACCEPTED.value, CandidateStage.COMPLETE.value) + for source in ("15", "41", "72", "77") + } diff --git a/tests/test_split_fanout_descent_invariant.py b/tests/test_split_fanout_descent_invariant.py index 18d4dd934..b1e535eac 100644 --- a/tests/test_split_fanout_descent_invariant.py +++ b/tests/test_split_fanout_descent_invariant.py @@ -36,6 +36,7 @@ EXAMPLES = REPO_ROOT / "examples" EXAMPLE_TOPOLOGIES = EXAMPLES / "topologies" FIXTURE_TOPOLOGIES = REPO_ROOT / "tests" / "fixtures" / "topologies" +FROZEN = REPO_ROOT / "tests" / "fixtures" / "hash_seed_determinism" def _gather_fixtures() -> list[Path]: @@ -79,6 +80,14 @@ def no_fuse(routes, ctx, *, settle_frozen_arcs: bool = False) -> None: assert violations, "expected a split fan-out descent with the fuse pass off" +def test_opposite_opening_directions_are_separate_planned_fans() -> None: + graph = parse_metro_mermaid((FROZEN / "seed_15.mmd").read_text()) + + compute_layout(graph) + + assert graph.stations["__junction_23"].x == pytest.approx(1610.5) + + def _opening_descents(routes) -> list[tuple[str, str, float]]: """The opening fan-out descent of each inter-section route: (source, line, x).""" from nf_metro.layout.routing.common import initial_fanout_descent_span From 357b96807734d93e01104ca350cdf1378c3ce103 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 00:00:40 +0100 Subject: [PATCH 002/158] fix(layout): settle planned convergence clearances [skip ci] --- src/nf_metro/layout/routing/convergences.py | 200 +++++++++++++++++++- src/nf_metro/layout/routing/normalize.py | 31 ++- 2 files changed, 228 insertions(+), 3 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index bcdca1a98..1225b2f49 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -3592,7 +3592,7 @@ def landing_feasible(candidate_coordinate: float) -> bool: break by_id = {plan.id: plan for plan in settled} result = tuple(by_id[plan.id] for plan in plans) - return _reverse_rescue_gap_flanks( + result = _reverse_rescue_gap_flanks( result, graph, curve_radius, @@ -3601,6 +3601,108 @@ def landing_feasible(candidate_coordinate: float) -> bool: fixed_exit_channels, enabled=_reverse_rescue, ) + return _settle_stacked_elbow_openings(result, graph, curve_radius) + + +def _settle_stacked_elbow_openings( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + curve_radius: float, +) -> tuple[ConvergencePlan, ...]: + """Separate independently owned opening drops that meet at an elbow band. + + A short shared Y span is not a co-travelling bundle: the two columns need a + full bundle clearance for their adjacent elbows. Unlike opposing flanks, + either leg may be a landing opening, so settle that plan-owned coordinate + here after both planning directions have seated their trunk flanks. + """ + lookup = gap_lookup_geometry(graph) + settled = list(plans) + + def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: + return _plan_gap_channels(plan, graph, lookup) + + for plan_rank, plan in enumerate(tuple(settled)): + for channel in tuple( + item for item in channels_of(plan) if item.flank_rank is None + ): + obstacles = tuple( + obstacle + for other_rank, other in enumerate(settled) + for obstacle in channels_of(other) + if other_rank != plan_rank + and _stacked_elbow_channels_crowd(channel, obstacle) + ) + if not obstacles: + continue + gap_edges = column_gap_edges( + graph, channel.gap[0], channel.gap[0] + 1, row=channel.gap[1] + ) + candidates = tuple( + sorted( + { + obstacle.coordinate + sign * BUNDLE_TO_BUNDLE_CLEARANCE + for obstacle in obstacles + for sign in (-1.0, 1.0) + }, + key=lambda candidate: ( + abs(candidate - channel.coordinate), + candidate, + ), + ) + ) + for coordinate in candidates: + if not _inside_usable_gap(gap_edges, coordinate): + continue + moved = _move_landing_opening( + plan, + channel.claimant_member_ids, + coordinate, + curve_radius, + ) + if moved is None: + continue + moved_channels = tuple( + item + for item in channels_of(moved) + if item.claimant_member_ids == channel.claimant_member_ids + and item.gap == channel.gap + ) + if not moved_channels or any( + _stacked_elbow_channels_crowd(moved_channel, obstacle) + for moved_channel in moved_channels + for other_rank, other in enumerate(settled) + if other_rank != plan_rank + for obstacle in channels_of(other) + ): + continue + candidate_plans = tuple( + moved if rank == plan_rank else other + for rank, other in enumerate(settled) + ) + if ( + _landing_trunk_flank_conflict(candidate_plans, graph, curve_radius) + is not None + ): + continue + settled[plan_rank] = plan = moved + break + return tuple(settled) + + +def _stacked_elbow_channels_crowd( + first: _PlanGapChannel, second: _PlanGapChannel +) -> bool: + """Whether two independently sourced columns need elbow clearance.""" + overlap = min(first.y_hi, second.y_hi) - max(first.y_lo, second.y_lo) + return ( + first.gap == second.gap + and not first.line_ids & second.line_ids + and not first.source_junction_ids & second.source_junction_ids + and COORD_TOLERANCE < overlap < MIN_CORRIDOR_Y_OVERLAP + and abs(first.coordinate - second.coordinate) + < BUNDLE_TO_BUNDLE_CLEARANCE - COORD_TOLERANCE_FINE + ) def _reverse_rescue_gap_flanks( @@ -3947,6 +4049,86 @@ def _landing_trunk_flank_clearance_requirements( return tuple(widest[key] for key in sorted(widest)) +def _stacked_elbow_clearance_requirements( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + fixed_channels: tuple[_PlanGapChannel, ...], +) -> tuple[BoundaryClearanceRequirement, ...]: + """Request a column gap wide enough to separate a fixed short-overlap leg.""" + lookup = gap_lookup_geometry(graph) + widest: dict[tuple[int, str], BoundaryClearanceRequirement] = {} + for plan in plans: + for channel in _plan_gap_channels(plan, graph, lookup): + for fixed in fixed_channels: + if not _stacked_elbow_channels_crowd(channel, fixed): + continue + lower_col, row = channel.gap + left, right = column_gap_edges(graph, lower_col, lower_col + 1, row=row) + candidate = fixed.coordinate + BUNDLE_TO_BUNDLE_CLEARANCE + required = candidate + EDGE_TO_BUNDLE_CLEARANCE - left + if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE: + continue + boundary = lower_col + 1 + negative = [ + section + for section in graph.sections.values() + if section.grid_col + section.grid_col_span - 1 == lower_col + and ( + row is None + or section.grid_row + <= row + < section.grid_row + section.grid_row_span + ) + ] + positive = [ + section + for section in graph.sections.values() + if section.grid_col == boundary + and ( + row is None + or section.grid_row + <= row + < section.grid_row + section.grid_row_span + ) + ] + if not negative or not positive: + continue + negative_edge = max( + section.bbox_x + section.bbox_w for section in negative + ) + positive_edge = min(section.bbox_x for section in positive) + requirement = BoundaryClearanceRequirement( + SettlementAxis.COLUMN, + boundary, + str(plan.system_id), + max(required, measured_distance(negative_edge, positive_edge)), + tuple( + sorted( + section.id + for section in negative + if measured_distance( + section.bbox_x + section.bbox_w, negative_edge + ) + <= COORD_TOLERANCE + ) + ), + tuple( + sorted( + section.id + for section in positive + if measured_distance(section.bbox_x, positive_edge) + <= COORD_TOLERANCE + ) + ), + f"convergence system {plan.system_id} stacked elbow clearance", + ) + key = (boundary, str(plan.system_id)) + current = widest.get(key) + if current is None or requirement.required > current.required: + widest[key] = requirement + return tuple(widest[key] for key in sorted(widest)) + + def _segments_coincide(first: _Segment, second: _Segment) -> bool: """Whether two parallel runs stand on one coordinate, hence draw one stroke.""" index = lateral_axis(_direction(*first)).point_index @@ -4136,6 +4318,11 @@ def _validate_final_convergence_feasibility( for plan in plans for channel in _plan_gap_channels(plan, graph, lookup) ) + stacked_requirements = _stacked_elbow_clearance_requirements( + plans, graph, fixed_channels + ) + if allow_clearance_requirements: + clearance_requirements.extend(stacked_requirements) for plan, channel in plan_channels: for member_channel in fixed_channels: if channel.gap != member_channel.gap or not spans_share_corridor( @@ -4174,6 +4361,17 @@ def _validate_final_convergence_feasibility( f"{channel.gap}" ) continue + if _stacked_elbow_channels_crowd(channel, member_channel): + if any( + requirement.owner_id == str(plan.system_id) + and requirement.boundary == channel.gap[0] + 1 + for requirement in stacked_requirements + ): + continue + raise FinalConvergenceFeasibilityError( + f"final convergence plan {plan.id} crowds a short-overlap " + f"member channel in gap {channel.gap}" + ) if _gap_channels_crowd( channel, member_channel ) and not _member_represented_convergence_lane( diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index bb63c3be8..ef81d2184 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -2254,6 +2254,33 @@ def _convergent_port_groups( """ entry_port_for = ctx.merge.entry_port_for + def boundary_dogleg_stitch(rp: RoutedPath, ch: _VChannel, target: str) -> bool: + if ctx.convergences is None: + return False + membership = ctx.convergences.membership_for_edge(rp.edge) + landing = membership.landing if membership is not None else None + entry = ctx.graph.stations.get(target) + port = ctx.graph.ports.get(target) + if ( + landing is None + or entry is None + or port is None + or port.side not in (PortSide.LEFT, PortSide.RIGHT) + or ch.idx != len(rp.points) - 3 + or ch.y_hi - ch.y_lo > 2 * ctx.offset_step + COORD_TOLERANCE + ): + return False + endpoint = rp.points[-1] + outward = 1.0 if port.side is PortSide.RIGHT else -1.0 + return ( + all( + abs(actual - expected) <= COORD_TOLERANCE + for actual, expected in zip(endpoint, landing.join_point, strict=True) + ) + and abs(endpoint[0] - entry.x) <= COORD_TOLERANCE + and outward * (ch.x - entry.x) >= COORD_TOLERANCE + ) + def spans( rp: RoutedPath, ) -> Iterable[tuple[tuple[str, str, bool], _VChannel]]: @@ -2265,6 +2292,8 @@ def spans( # before render offsets are applied, and keying on the raw endpoint # would split that single convergence into two. target = entry_port_for.get(rp.edge.target, rp.edge.target) + if boundary_dogleg_stitch(rp, ch, target): + return yield (target, rp.line_id, ch.down), ch by_port = _group_channels_by(routes, spans) @@ -3598,8 +3627,6 @@ def _separate_fused_cotravelling_runs( obstacles = [other for other in lanes if lane.fuses_with(other, step)] if not obstacles: continue - if any(other.pinned for other in obstacles): - continue primary = movable_route_ids is None or all( id(run.route) in movable_route_ids for run in lane.runs ) From b93ddce7d7282632fb75f0ed353534ee04931464 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 06:54:31 +0100 Subject: [PATCH 003/158] fix(layout): clear late planned corridor conflicts [skip ci] --- src/nf_metro/layout/phases/guards.py | 39 ++++++++++++++++++- src/nf_metro/layout/routing/core.py | 4 ++ .../layout/routing/member_geometry.py | 6 +++ src/nf_metro/layout/routing/normalize.py | 34 ++++++++++++++-- 4 files changed, 78 insertions(+), 5 deletions(-) diff --git a/src/nf_metro/layout/phases/guards.py b/src/nf_metro/layout/phases/guards.py index 1a0afffbd..891b965b1 100644 --- a/src/nf_metro/layout/phases/guards.py +++ b/src/nf_metro/layout/phases/guards.py @@ -2256,12 +2256,47 @@ def _guard_no_stacked_elbow_graze( within ``BUNDLE_TO_BUNDLE_CLEARANCE`` of each other their opposing elbows overlap and the lines graze instead of reading as distinct streams. """ + from nf_metro.layout.routing import compute_station_offsets, observe_route_edges from nf_metro.layout.routing.invariants import check_stacked_elbow_clearance - _raise_on_first_violation( - graph, phase, check_stacked_elbow_clearance, offsets, routes + if offsets is None: + offsets = compute_station_offsets(graph) + if routes is None: + return + violations = check_stacked_elbow_clearance(graph, routes, offsets) + if not violations: + return + observation = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=True, + ) + requirements = tuple( + requirement + for requirement in observation.plan.boundary_clearance_requirements + if requirement.description.endswith("stacked elbow clearance") ) + def covered(violation: object) -> bool: + x_a = violation.x_a # type: ignore[attr-defined] + x_b = violation.x_b # type: ignore[attr-defined] + for requirement in requirements: + left = max( + graph.sections[section_id].bbox_x + graph.sections[section_id].bbox_w + for section_id in requirement.negative_section_ids + ) + right = min( + graph.sections[section_id].bbox_x + for section_id in requirement.positive_section_ids + ) + if left <= x_a <= right and left <= x_b <= right: + return True + return False + + unresolved = next((item for item in violations if not covered(item)), None) + if unresolved is not None: + raise PhaseInvariantError(f"{phase}: {unresolved.message()}") + def _guard_no_station_overlap( graph: MetroGraph, diff --git a/src/nf_metro/layout/routing/core.py b/src/nf_metro/layout/routing/core.py index d0a7e59f9..f051e22b3 100644 --- a/src/nf_metro/layout/routing/core.py +++ b/src/nf_metro/layout/routing/core.py @@ -684,6 +684,7 @@ def observe_route_edges( station_offsets: dict[tuple[str, str], float] | None = None, *, offset_step: float | None = None, + allow_convergence_clearance_requirements: bool = False, ) -> RouteObservation: """Route once and return the context-local semantic observation.""" from nf_metro.layout.route_plan import RouteObservation @@ -695,6 +696,9 @@ def observe_route_edges( station_offsets, observe_plan=True, offset_step=offset_step, + allow_convergence_clearance_requirements=( + allow_convergence_clearance_requirements + ), ) assert plan is not None return RouteObservation(routes, plan) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index d73e56136..9fe0a27ed 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -53,6 +53,7 @@ _coincide_fanout_opening_descents, _coincide_same_line_fanout_traverses, _coincide_same_line_tracks, + _dogleg_off_exempt_trunks, _hold_runs_in_corridor_clearance, _locate_slot_channel, _materialize_gap_slots, @@ -1725,6 +1726,11 @@ def build_member_geometry_execution( ctx, movable_route_ids=complete_path_route_ids, ) + _dogleg_off_exempt_trunks( + normalization_population, + ctx, + movable_owned_route_ids=candidate_route_ids, + ) plans = tuple( _freeze_plan( scaffold, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index ef81d2184..a1c65ed3c 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3366,7 +3366,11 @@ def _exempt_trunk_separation( def _dogleg_off_exempt_trunks( - routes: list[RoutedPath], ctx: _RoutingCtx, skip: set[int] | None = None + routes: list[RoutedPath], + ctx: _RoutingCtx, + skip: set[int] | None = None, + *, + movable_owned_route_ids: frozenset[int] = frozenset(), ) -> None: """Offset a non-exempt trunk drawn collinear with an exempt run. @@ -3400,7 +3404,10 @@ def _dogleg_off_exempt_trunks( return clearance = EDGE_TO_BUNDLE_CLEARANCE for t in _collect_htrunks(routes): - if id(t.route) in skip or route_system_owns_segment_boundary(t.route, t.idx): + owned = route_system_owns_segment_boundary(t.route, t.idx) + if id(t.route) in skip or ( + owned and id(t.route) not in movable_owned_route_ids + ): continue hit = next( ( @@ -3410,6 +3417,11 @@ def _dogleg_off_exempt_trunks( and abs(o.y - t.y) <= clearance and t.x_lo < o.x_hi - COORD_TOLERANCE and o.x_lo < t.x_hi - COORD_TOLERANCE + and ( + not owned + or trunk_segments_cross(_htrunk_seg(t, t.y), _htrunk_seg(o, o.y)) + is not None + ) ), None, ) @@ -3453,7 +3465,10 @@ def _dogleg_off_exempt_trunks( step = ctx.offset_step for t in _collect_htrunks(routes): - if id(t.route) in skip or route_system_owns_segment_boundary(t.route, t.idx): + owned = route_system_owns_segment_boundary(t.route, t.idx) + if id(t.route) in skip or ( + owned and id(t.route) not in movable_owned_route_ids + ): continue hit = next( ( @@ -3464,6 +3479,11 @@ def _dogleg_off_exempt_trunks( < _exempt_trunk_separation(t, o, ctx.curve_radius) - COORD_TOLERANCE and t.x_lo < o.x_hi - COORD_TOLERANCE and o.x_lo < t.x_hi - COORD_TOLERANCE + and ( + not owned + or trunk_segments_cross(_htrunk_seg(t, t.y), _htrunk_seg(o, o.y)) + is not None + ) ), None, ) @@ -3640,6 +3660,14 @@ def _separate_fused_cotravelling_runs( for obstacle in obstacles for direction in (-1, 1) } + candidates.update( + blocker.coord + direction * step + for candidate in tuple(candidates) + for blocker in lanes + if blocker is not lane + and replace(lane, coord=candidate).fuses_with(blocker, step) + for direction in (-1, 1) + ) def feasible(target: float) -> bool: delta = target - lane.coord From 0a8657235f8decda1eb6dd4c9399e83cf47c59c0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 07:00:15 +0100 Subject: [PATCH 004/158] fix(layout): defer provisional route guards to settlement [skip ci] --- src/nf_metro/layout/phases/guards.py | 59 ++++++++-------------------- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/src/nf_metro/layout/phases/guards.py b/src/nf_metro/layout/phases/guards.py index 891b965b1..f78d4f294 100644 --- a/src/nf_metro/layout/phases/guards.py +++ b/src/nf_metro/layout/phases/guards.py @@ -2256,47 +2256,12 @@ def _guard_no_stacked_elbow_graze( within ``BUNDLE_TO_BUNDLE_CLEARANCE`` of each other their opposing elbows overlap and the lines graze instead of reading as distinct streams. """ - from nf_metro.layout.routing import compute_station_offsets, observe_route_edges from nf_metro.layout.routing.invariants import check_stacked_elbow_clearance - if offsets is None: - offsets = compute_station_offsets(graph) - if routes is None: - return - violations = check_stacked_elbow_clearance(graph, routes, offsets) - if not violations: - return - observation = observe_route_edges( - graph, - station_offsets=offsets, - allow_convergence_clearance_requirements=True, - ) - requirements = tuple( - requirement - for requirement in observation.plan.boundary_clearance_requirements - if requirement.description.endswith("stacked elbow clearance") + _raise_on_first_violation( + graph, phase, check_stacked_elbow_clearance, offsets, routes ) - def covered(violation: object) -> bool: - x_a = violation.x_a # type: ignore[attr-defined] - x_b = violation.x_b # type: ignore[attr-defined] - for requirement in requirements: - left = max( - graph.sections[section_id].bbox_x + graph.sections[section_id].bbox_w - for section_id in requirement.negative_section_ids - ) - right = min( - graph.sections[section_id].bbox_x - for section_id in requirement.positive_section_ids - ) - if left <= x_a <= right and left <= x_b <= right: - return True - return False - - unresolved = next((item for item in violations if not covered(item)), None) - if unresolved is not None: - raise PhaseInvariantError(f"{phase}: {unresolved.message()}") - def _guard_no_station_overlap( graph: MetroGraph, @@ -6188,18 +6153,26 @@ def _ensure_pass_c_inputs( failure leaves ``routes`` as ``None`` (it surfaces elsewhere); guards that need routes are then skipped. """ - from nf_metro.layout.routing import compute_station_offsets, route_edges + from nf_metro.layout.routing import compute_station_offsets, observe_route_edges from nf_metro.layout.routing.core import route_edges_for_placement_guards if offsets is None: offsets = compute_station_offsets(graph) if routes is None: try: - routes = ( - route_edges(graph, station_offsets=offsets) - if validate_final_geometry - else route_edges_for_placement_guards(graph, offsets) - ) + if validate_final_geometry: + observation = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=True, + ) + routes = ( + None + if observation.plan.boundary_clearance_requirements + else observation.routes + ) + else: + routes = route_edges_for_placement_guards(graph, offsets) except Exception: # noqa: BLE001 - routing failure surfaces elsewhere routes = None return offsets, routes From 1e8c28f39ecbda36032f119f1a9d7f1755b092b0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 07:14:11 +0100 Subject: [PATCH 005/158] fix(layout): preserve planned concentric corner inputs [skip ci] --- src/nf_metro/layout/routing/normalize.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index a1c65ed3c..319a73744 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3765,6 +3765,24 @@ def _restack_htrunk( rp = t.route pts = rp.points k = t.idx + owned_offsets = rp.concentric_corner_offsets_by_segment.get(k) + owned_bases = rp.concentric_corner_bases_by_segment.get(k) + if ( + owned_offsets is not None + and owned_bases is not None + and all(value is not None for value in (*owned_offsets, *owned_bases)) + ): + _reseat_concentric_flanking( + rp, + k, + new_y, + axis=1, + offset_in=owned_offsets[0], + offset_out=owned_offsets[1], + base_radius=owned_bases[0], + base_radius_out=owned_bases[1], + ) + return pts[k] = (pts[k][0], new_y) pts[k + 1] = (pts[k + 1][0], new_y) From 97185969a72806b7ef25f7e4bd8ca61cc078f9e6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 07:16:50 +0100 Subject: [PATCH 006/158] fix(layout): protect frozen convergence lanes [skip ci] --- .../layout/routing/member_geometry.py | 6 +++++- src/nf_metro/layout/routing/normalize.py | 20 +++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 9fe0a27ed..4759c790a 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1714,7 +1714,11 @@ def build_member_geometry_execution( for route, axis_id, segment_rank in deferred_exit_turn_ownership: route.exit_turn_axis_id = axis_id route.exit_turn_segment_rank = segment_rank - _separate_declared_opposing_gap_bundles(normalization_population, ctx) + _separate_declared_opposing_gap_bundles( + normalization_population, + ctx, + movable_route_ids=candidate_route_ids, + ) _align_same_line_channels( _materialized_channels(tuple(candidates), ctx), _index_claims(eligible_claims), diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 319a73744..c9e9d48eb 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -851,7 +851,7 @@ def _validate_planned_exit_turn_radii( def _separate_declared_opposing_gap_bundles( routes: list[RoutedPath], ctx: _RoutingCtx, - movable_route_ids: frozenset[int] = frozenset(), + movable_route_ids: frozenset[int] | None = None, ) -> None: """Separate settled counter-running gap bundles around exempt obstacles.""" graph = ctx.graph @@ -868,7 +868,11 @@ def _separate_declared_opposing_gap_bundles( owner = ( fixed if rp.normalize_exempt - or (id(rp) not in movable_route_ids and _planner_owns_channel(ch)) + or ( + id(rp) not in movable_route_ids + if movable_route_ids is not None + else _planner_owns_channel(ch) + ) else movable ) owner[key].append(ch) @@ -960,6 +964,18 @@ def _separate_declared_opposing_gap_bundles( >= BUNDLE_TO_BUNDLE_CLEARANCE - COORD_TOLERANCE for obstacle in short_overlap_obstacles ) + and all( + not _overlays_distinct_line( + channel, candidate, obstacle, ctx.offset_step + ) + and abs(candidate - obstacle.x) + >= _required_channel_clearance( + channel, obstacle, ctx.curve_radius + ) + - COORD_TOLERANCE_FINE + for obstacle in all_fixed + if obstacle.route.line_id != channel.route.line_id + ) ), None, ) From fdde5e3e27cf79e3d8dc4c9dbc34fe8e6d1f6ef4 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 07:51:38 +0100 Subject: [PATCH 007/158] fix(layout): preserve settled route ownership [skip ci] --- .../layout/routing/member_geometry.py | 6 +++++ src/nf_metro/layout/routing/normalize.py | 27 +++++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 4759c790a..6ab90271d 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1418,6 +1418,11 @@ def _seat_claimed_segments_before_freeze( for rank, (start, end) in enumerate(zip(route.points, route.points[1:])): if not 1 <= rank <= len(route.points) - 3: continue + if route.exit_lane_transition_plan_id is not None or ( + route.exit_turn_segment_rank is not None + and abs(route.exit_turn_segment_rank - rank) <= 1 + ): + continue band = _segment_claim_band(ctx, route, rank) if band is None: continue @@ -1710,6 +1715,7 @@ def build_member_geometry_execution( secondary_movable_route_ids=candidate_route_ids, station_offsets=ctx.station_offsets, fixed_segment_keys=settled_tail_segments, + secondary_may_yield_at_shared_source=True, ) for route, axis_id, segment_rank in deferred_exit_turn_ownership: route.exit_turn_axis_id = axis_id diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index c9e9d48eb..aba78ddad 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1080,6 +1080,11 @@ def _bundle_same_destination_tails( for _bundle, trunks, targets in iter_eligible_destination_tail_bundles( routes, ctx.graph, ctx.offset_step, ctx.curve_radius ): + settled_segments.update( + (id(trunk.route), trunk.idx) + for line_id, trunk in trunks.items() + if abs(trunk.y - targets[line_id]) <= COORD_TOLERANCE + ) if movable_route_ids is not None and not any( id(trunk.route) in movable_route_ids for trunk in trunks.values() ): @@ -2177,7 +2182,7 @@ def _nest_bypass_above_over_top_wrap( lo, hi = min(x1, x2), max(x1, x2) if is_wrap: wrap_peaks.append((y1, lo, hi)) - elif is_through and not convergence_owns_segment_boundary(r, k): + elif is_through and not route_system_owns_segment_boundary(r, k): through_legs.append((r, k, y1, lo, hi)) if not wrap_peaks or not through_legs: continue @@ -3592,6 +3597,7 @@ def _separate_fused_cotravelling_runs( secondary_movable_route_ids: frozenset[int] = frozenset(), station_offsets: Mapping[tuple[str, str], float] | None = None, fixed_segment_keys: frozenset[tuple[int, int]] = frozenset(), + secondary_may_yield_at_shared_source: bool = False, ) -> None: """Restore the nesting step between co-travelling tracks of distinct lines. @@ -3666,11 +3672,22 @@ def _separate_fused_cotravelling_runs( primary = movable_route_ids is None or all( id(run.route) in movable_route_ids for run in lane.runs ) - if not primary and any( - any((id(run.route), run.idx) in fixed_segment_keys for run in other.runs) + fixed_obstacles = tuple( + other for other in obstacles - ): - continue + if any((id(run.route), run.idx) in fixed_segment_keys for run in other.runs) + ) + if not primary and fixed_obstacles: + lane_sources = {run.route.edge.source for run in lane.runs} + fixed_sources = { + run.route.edge.source for other in fixed_obstacles for run in other.runs + } + if ( + not secondary_may_yield_at_shared_source + or not lane_sources & fixed_sources + or any(run.route.exit_turn_plan_id is not None for run in lane.runs) + ): + continue candidates = { obstacle.coord + direction * step for obstacle in obstacles From b1e34abf45120c66c8b0bfa21017c4f4af96818e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 08:02:10 +0100 Subject: [PATCH 008/158] fix(layout): honour immutable corridor axes [skip ci] --- src/nf_metro/layout/route_reservations.py | 78 +++++++++++++++++++++++ tests/test_reserved_claim_consumption.py | 1 - 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index ee096a192..d1f820ee1 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -2200,6 +2200,60 @@ def _shared_launch_anchors( return tuple(sorted(shared, key=lambda item: (item.station_id, item.runway))) +def _plan_owned_clearances( + negative: float, + positive: float, + orientation: CorridorOrientation, + claims: Iterable[tuple[EmissionMemberId, RouteFamilyId | None, float]], + plan: RoutePlan, +) -> tuple[float, float]: + materialized = tuple(claims) + convergence_member_ids = { + member_id + for convergence in plan.convergence_plans + if convergence.disposition is ConvergenceDisposition.PLANNED + for member_id in convergence.member_ids + } + allocation_axis = ( + DemandAxis.X if orientation is CorridorOrientation.VERTICAL else DemandAxis.Y + ) + exit_axis_coordinates = { + (member_id, axis.coordinate) + for exit_turn in plan.exit_turn_plans + if exit_turn.disposition is ExitTurnDisposition.PLANNED + for axis in exit_turn.axes + if axis.axis is allocation_axis + for member_id in axis.claimant_member_ids + } + owned_coordinates = tuple( + coordinate + for member_id, family_id, coordinate in materialized + if ( + member_id in convergence_member_ids + and family_id + in { + RouteFamilyId.NEAR_VERTICAL_JUNCTION, + RouteFamilyId.SAME_X_VERTICAL_DROP, + } + ) + or any( + member_id == axis_member_id + and abs(coordinate - axis_coordinate) <= COORD_TOLERANCE + for axis_member_id, axis_coordinate in exit_axis_coordinates + ) + ) + if not owned_coordinates: + return negative, positive + coordinates = tuple( + coordinate for _member_id, _family_id, coordinate in materialized + ) + if min(owned_coordinates) <= min(coordinates) + COORD_TOLERANCE: + negative = min(negative, CURVE_RADIUS) + if max(owned_coordinates) >= max(coordinates) - COORD_TOLERANCE: + positive = min(positive, CURVE_RADIUS) + return negative, positive + + def _build_symbolic_records( graph: MetroGraph, plan: RoutePlan, @@ -2264,6 +2318,16 @@ def _build_symbolic_records( demand_id = DemandId(_stable_id("corridor-demand", reservation_id)) lane_count = len(lanes) negative, positive, keepouts = _clearances(first.orientation, first.region) + negative, positive = _plan_owned_clearances( + negative, + positive, + first.orientation, + ( + (item.member.id, item.member.family_id, item.coordinate) + for item in group + ), + plan, + ) peer_width = max(0.0, peer_widths.get(group_index, 0.0) - bundle_width) families = tuple( family @@ -2938,6 +3002,20 @@ def _validate_reservation_record( expected_negative, expected_positive, expected_keepouts = _clearances( reservation.orientation, reservation.region ) + expected_negative, expected_positive = _plan_owned_clearances( + expected_negative, + expected_positive, + reservation.orientation, + ( + ( + claim.member_id, + members[claim.member_id].family_id, + claim.allocation_coordinate, + ) + for claim in reservation.claims + ), + plan, + ) if isinstance(reservation.region, CanvasRegion): # The margin against the canvas edge is the one policy term that tracks # the render's ``stroke_scale``: the stroke widens with it, the direction diff --git a/tests/test_reserved_claim_consumption.py b/tests/test_reserved_claim_consumption.py index 95ea571fb..4e81dd6da 100644 --- a/tests/test_reserved_claim_consumption.py +++ b/tests/test_reserved_claim_consumption.py @@ -54,7 +54,6 @@ def _corpus() -> list[Path]: { "tests/fixtures/hash_seed_determinism/seed_15.mmd", "tests/fixtures/hash_seed_determinism/seed_41.mmd", - "tests/fixtures/hash_seed_determinism/seed_77.mmd", "tests/fixtures/invalid/backward_feed_rl.mmd", "tests/fixtures/invalid/merge_trunk_rightward_source.mmd", "tests/fixtures/invalid/mixed_entry_opposing.mmd", From 98893763d6f28bd43bd190421de988ec0daba074 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 08:37:44 +0100 Subject: [PATCH 009/158] fix(routing): scope merge fanout pivots by line [skip ci] --- src/nf_metro/layout/routing/invariants.py | 14 +++++++------- src/nf_metro/layout/routing/normalize.py | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/nf_metro/layout/routing/invariants.py b/src/nf_metro/layout/routing/invariants.py index 70d5cd876..a8f4f960e 100644 --- a/src/nf_metro/layout/routing/invariants.py +++ b/src/nf_metro/layout/routing/invariants.py @@ -2500,7 +2500,7 @@ def check_merge_fanout_pivots_shared( if not fanouts: return [] merges = set(convergence_junction_ids(graph, topology)) - by_key: dict[tuple[str, bool], list[tuple[str, str, float]]] = defaultdict(list) + by_key: dict[tuple[str, str, bool], list[tuple[str, float]]] = defaultdict(list) for rp in routes: if not rp.is_inter_section or rp.edge.source not in fanouts: continue @@ -2509,22 +2509,22 @@ def check_merge_fanout_pivots_shared( corner = _first_corner(apply_route_offsets(rp, offsets)) if corner is not None: cx, down = corner - by_key[(rp.edge.source, down)].append((rp.edge.target, rp.line_id, cx)) + by_key[(rp.edge.source, rp.line_id, down)].append((rp.edge.target, cx)) violations: list[MergeFanoutPivotSplit] = [] - for (src, _down), branches in by_key.items(): - xs = [x for _tgt, _lid, x in branches] + for (src, line_id, _down), branches in by_key.items(): + xs = [x for _target, x in branches] source_x = graph.stations[src].x if src in graph.stations else xs[0] ref = merge_fanout_pivot_reference(xs, source_x, COORD_TOLERANCE) if ref is None: continue - for tgt, lid, x in branches: + for target, x in branches: if abs(x - ref) > COORD_TOLERANCE: violations.append( MergeFanoutPivotSplit( source=src, - line_id=lid, - target=tgt, + line_id=line_id, + target=target, pivot_x=x, reference_x=ref, ) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index aba78ddad..f071ec104 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1374,7 +1374,7 @@ def _route_first_vertical(rp: RoutedPath) -> _VChannel | None: def _merge_fanout_pivot_spans( rp: RoutedPath, fanouts: set[str], merges: set[str] -) -> Iterable[tuple[tuple[str, bool], _VChannel]]: +) -> Iterable[tuple[tuple[str, str, bool], _VChannel]]: """A merge-fanout branch's opening pivot, keyed by source and turn direction. Yields nothing for a route that is not a merge-fanout branch into a merge @@ -1384,7 +1384,7 @@ def _merge_fanout_pivot_spans( return ch = _route_first_vertical(rp) if ch is not None: - yield (rp.edge.source, ch.down), ch + yield (rp.edge.source, rp.line_id, ch.down), ch def _coincide_merge_fanout_pivots(routes: list[RoutedPath], ctx: _RoutingCtx) -> None: @@ -1410,7 +1410,7 @@ def _coincide_merge_fanout_pivots(routes: list[RoutedPath], ctx: _RoutingCtx) -> groups = _group_channels_by( routes, lambda rp: _merge_fanout_pivot_spans(rp, fanouts, merges) ) - for (src, _down), chans in groups.items(): + for (src, _line_id, _down), chans in groups.items(): planned = [channel.x for channel in chans if _planner_owns_channel(channel)] if planned and max(planned) - min(planned) > COORD_TOLERANCE: continue From 2177d058c016e7c88f807765a1582f16dad79831 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 10:48:32 +0100 Subject: [PATCH 010/158] fix(routing): settle strict recovery geometry [skip ci] --- src/nf_metro/candidate_executor.py | 6 +- src/nf_metro/layout/envelope_settlement.py | 2 +- src/nf_metro/layout/routing/common.py | 2 +- src/nf_metro/layout/routing/convergences.py | 1002 ++++++++++++++++++- src/nf_metro/layout/routing/core.py | 3 + src/nf_metro/layout/routing/normalize.py | 212 +++- src/nf_metro/render/svg.py | 63 +- tests/test_convergence_planner.py | 12 +- tests/test_reserved_claim_consumption.py | 2 - tests/test_route_plan.py | 14 +- 10 files changed, 1255 insertions(+), 63 deletions(-) diff --git a/src/nf_metro/candidate_executor.py b/src/nf_metro/candidate_executor.py index b17f19311..73d9a877c 100644 --- a/src/nf_metro/candidate_executor.py +++ b/src/nf_metro/candidate_executor.py @@ -627,7 +627,11 @@ def collect(stage: CandidateStage) -> bool: try: begin(CandidateStage.ROUTE_PLAN) offsets = compute_station_offsets(graph) - observation = observe_route_edges(graph, station_offsets=offsets) + observation = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=True, + ) build_route_plan_query(observation.plan) route_evidence = _route_evidence(observation.plan) route_findings = observation.plan.diagnostics diff --git a/src/nf_metro/layout/envelope_settlement.py b/src/nf_metro/layout/envelope_settlement.py index e2216db6d..bc937c4a1 100644 --- a/src/nf_metro/layout/envelope_settlement.py +++ b/src/nf_metro/layout/envelope_settlement.py @@ -205,7 +205,7 @@ def drawn_corridor_clearance_requirements( continue requirements.append( DrawnCorridorClearanceRequirement( - reservation, realised.available_width + deficit + reservation, realised.available_width + 2 * deficit ) ) return tuple(requirements) diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index 919ec778e..1777a660d 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -2416,7 +2416,7 @@ def planner_owns_segment(route: RoutedPath, rank: int) -> bool: return ( convergence_owns_segment_boundary(route, rank) or route.fan_route_emitter is not None - or rank in route.route_system_owned_segment_ranks + or member_plan_owns_segment_boundary(route, rank) or ( route.exit_turn_axis_id is not None and route.exit_turn_segment_rank == rank ) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 1225b2f49..f1e7a1b8f 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -89,7 +89,11 @@ empty_member_geometry_execution, ) from nf_metro.layout.routing.orientation import direction_axis, lateral_axis -from nf_metro.layout.routing.reserved_bands import ReservedBand +from nf_metro.layout.routing.reserved_bands import ( + ReservedBand, + corridor_clearance_band, + seat_run_in_corridor_clearance, +) from nf_metro.layout.settlement_demand import ( BoundaryClearanceRequirement, SettlementAxis, @@ -440,16 +444,14 @@ def _connect_route_endpoint( and abs(route.points[-2][1] - target[1]) > COORD_TOLERANCE ): outward = 1.0 if port.side is PortSide.RIGHT else -1.0 - for rank in range(len(route.points) - 3, -1, -1): - start, end = route.points[rank : rank + 2] - if ( - abs(start[0] - end[0]) <= COORD_TOLERANCE - and outward * (start[0] - entry.x) >= SECTION_ROUTE_CLEARANCE - ): - route.points = route.points[: rank + 2] - dogleg_x = end[0] - route.points.extend([(dogleg_x, target[1]), target]) - return True + prior = route.points[-2] + dogleg_x = entry.x + outward * (SECTION_ROUTE_CLEARANCE + 2 * ctx.offset_step) + route.points = route.points[:-2] + [ + (dogleg_x, prior[1]), + (dogleg_x, target[1]), + target, + ] + return True if all( abs(actual - expected) <= COORD_TOLERANCE for actual, expected in zip(endpoint, target, strict=True) @@ -470,6 +472,9 @@ def _connect_route_endpoint( if ( abs(start[0] - end[0]) <= COORD_TOLERANCE and outward * (start[0] - entry.x) >= SECTION_ROUTE_CLEARANCE + and not _vertical_return_self_folds( + route.points[: rank + 2], end[0], end[1], target[1] + ) ): route.points = route.points[: rank + 2] dogleg_x = end[0] @@ -504,6 +509,91 @@ def _connect_route_endpoint( return False +def _vertical_return_self_folds( + points: list[tuple[float, float]], + x: float, + start_y: float, + end_y: float, +) -> bool: + """Whether a proposed return retraces an earlier vertical run.""" + proposed_sign = 1 if end_y > start_y else -1 + proposed_lo, proposed_hi = sorted((start_y, end_y)) + return any( + (1 if prior_end[1] > prior_start[1] else -1) != proposed_sign + and min(prior_start[1], prior_end[1]) < proposed_hi - COORD_TOLERANCE + and max(prior_start[1], prior_end[1]) > proposed_lo + COORD_TOLERANCE + for prior_start, prior_end in zip(points, points[1:]) + if abs(prior_start[0] - x) <= COORD_TOLERANCE + and abs(prior_end[0] - x) <= COORD_TOLERANCE + and abs(prior_start[1] - prior_end[1]) > COORD_TOLERANCE + ) + + +def _connect_bypass_landing( + route: RoutedPath, + landing: ConvergenceLanding, + ctx: _RoutingCtx, +) -> bool: + """Give a returning bypass its own outward endpoint channel.""" + tail = _bypass_landing_tail(landing, ctx) + if tail is None: + return False + opening = landing.opening_turn_segment + assert opening is not None + opening_start, opening_end = opening + opening_rank = next( + ( + rank + for rank, point in enumerate(route.points) + if _points_coincide(point, opening_start) + ), + None, + ) + if opening_rank is None: + return False + route.points = route.points[: opening_rank + 1] + tail + if route.curve_radii is not None: + route.curve_radii = route.curve_radii[:opening_rank] + [ + ctx.curve_radius for _rank in range(len(tail) - 1) + ] + return True + + +def _bypass_landing_tail( + landing: ConvergenceLanding, ctx: _RoutingCtx +) -> list[tuple[float, float]] | None: + """Return the endpoint tail used by an outward returning bypass.""" + opening = landing.opening_turn_segment + if not landing.bypass or opening is None: + return None + entry_id = ctx.merge.entry_port_for.get(landing.edge.target) + port = ctx.graph.ports.get(entry_id) if entry_id else None + if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT): + return None + outward = 1.0 if port.side is PortSide.RIGHT else -1.0 + opening_end = opening[1] + if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE: + return ( + None + if _points_coincide(opening_end, landing.join_point) + else [opening_end, landing.join_point] + ) + if ( + outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE + or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE + ): + return None + bypass_x = landing.join_point[0] + outward * ( + SECTION_ROUTE_CLEARANCE + landing.lane_rank * ctx.offset_step + ) + return [ + opening_end, + (bypass_x, opening_end[1]), + (bypass_x, landing.join_point[1]), + landing.join_point, + ] + + def _bake_route(route: RoutedPath, ctx: _RoutingCtx) -> None: if route.offset_regime is OffsetRegime.DEFERRED: route.points = apply_route_offsets(route, ctx.station_offsets or {}) @@ -513,7 +603,14 @@ def _bake_route(route: RoutedPath, ctx: _RoutingCtx) -> None: def _landing_approach( route: RoutedPath, join_point: tuple[float, float] ) -> tuple[Direction, TurnHandedness | None, float] | None: - for rank, (start, end) in enumerate(zip(route.points, route.points[1:])): + return _landing_approach_points(route.points, join_point) + + +def _landing_approach_points( + points: list[tuple[float, float]], join_point: tuple[float, float] +) -> tuple[Direction, TurnHandedness | None, float] | None: + """Describe the first run in *points* that reaches *join_point*.""" + for rank, (start, end) in enumerate(zip(points, points[1:])): runway = abs(start[0] - join_point[0]) + abs(start[1] - join_point[1]) if ( runway <= COORD_TOLERANCE @@ -523,7 +620,7 @@ def _landing_approach( approach = _direction(start, join_point) handedness = None if rank > 0: - prior = route.points[rank - 1] + prior = points[rank - 1] if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE: incoming = _direction(prior, start) if direction_axis(incoming) is not direction_axis(approach): @@ -767,6 +864,84 @@ def _required_shared_terminal_axis( raise UnsupportedConvergenceError(reason) from None +def _replan_obstructed_horizontal_terminal( + routes: tuple[RoutedPath, ...], + carrier_rank: int, + axis: ConvergenceTrunkAxis, + entry: Station, + ctx: _RoutingCtx, +) -> ConvergenceTrunkAxis: + """Move a shared terminal approach around its target section when required.""" + entry_port = ctx.graph.ports.get(entry.id) + if ( + entry_port is None + or entry_port.side not in (PortSide.LEFT, PortSide.RIGHT) + or axis.axis is not DemandAxis.X + ): + return axis + section = ctx.graph.sections.get(entry_port.section_id) + if section is None: + return axis + section_left = section.bbox_x + section_right = section.bbox_x + section.bbox_w + section_top = section.bbox_y + section_bottom = section.bbox_y + section.bbox_h + if not ( + section_top + COORD_TOLERANCE + < axis.coordinate + < section_bottom - COORD_TOLERANCE + and axis.extent_end > section_left + COORD_TOLERANCE + and axis.extent_start < section_right - COORD_TOLERANCE + ): + return axis + + outward = 1.0 if entry_port.side is PortSide.RIGHT else -1.0 + exterior_x = entry.x + outward * (SECTION_ROUTE_CLEARANCE + ctx.offset_step) + clearance = SECTION_ROUTE_CLEARANCE + ctx.offset_step + carrier = routes[carrier_rank] + source_x, source_y = carrier.points[0] + target_y = axis.target_flank_coordinate + turn_x = axis.extent_start if axis.direction is Direction.R else axis.extent_end + terminal_y = section_bottom + clearance + carrier.points = [ + (source_x, source_y), + (turn_x, source_y), + (turn_x, terminal_y), + (exterior_x, terminal_y), + (exterior_x, target_y), + (entry.x, target_y), + ] + for rank, route in enumerate(routes): + if rank == carrier_rank: + continue + from nf_metro.layout.routing.normalize import ( + _opening_fanout_descent, + _seat_merge_feeder_opening, + ) + + opening = _opening_fanout_descent(route) + if opening is None: + raise ConvergenceOwnershipConflict( + "obstructed shared terminal feeder has no exterior opening" + ) + _seat_merge_feeder_opening(route, exterior_x, ctx.graph, planned=True) + opening = _opening_fanout_descent(route) + assert opening is not None + route.points = route.points[: opening.idx + 2] + route.points[-1] = (exterior_x, terminal_y) + return ConvergenceTrunkAxis( + DemandAxis.X, + terminal_y, + min(turn_x, exterior_x), + max(turn_x, exterior_x), + Direction.R if exterior_x > turn_x else Direction.L, + source_y, + target_y, + source_x, + entry.x, + ) + + def _flank_run( axis: DemandAxis, flank_coordinate: float, @@ -1001,6 +1176,15 @@ def _build_planned_convergence( primary_member_id = member_by_edge[trunk_edge_key] primary_reason = ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH + if primary_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH: + incoming_routes = tuple( + trial_routes[edge_key] for edge_key in incoming_edges + ) + carrier_rank = incoming_edges.index(trunk_edge_key) + trunk_axis = _replan_obstructed_horizontal_terminal( + incoming_routes, carrier_rank, trunk_axis, entry, ctx + ) + landings: list[ConvergenceLanding] = [] trunk_points = trial_routes[trunk_edge_key].points for edge_key in incoming_edges: @@ -1128,6 +1312,20 @@ def _build_planned_convergence( ) else None ) + if ( + primary_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH + and trunk_axis.target_endpoint_coordinate is not None + and abs( + trunk_axis.target_endpoint_coordinate + - ( + trunk_axis.extent_end + if trunk_axis.direction in {Direction.R, Direction.D} + else trunk_axis.extent_start + ) + ) + > COORD_TOLERANCE + ): + covered_by = primary_member_id if ( carrier_edge is not None and covered_by is not None @@ -1449,7 +1647,28 @@ def _reconcile_landing_handedness( landings: list[ConvergenceLanding] = [] for landing in plan.landings: handedness = landing.corner_handedness - if handedness is not None and not landing.bypass: + if ( + handedness is not None + and landing.bypass + and landing.opening_turn_segment is not None + and not _points_coincide(*landing.opening_turn_segment) + ): + incoming = _direction(*landing.opening_turn_segment) + if direction_axis(incoming) is not landing.approach_axis: + handedness = turn_handedness(incoming, landing.approach_direction) + elif ( + handedness is not None + and plan.trunk_axis is not None + and plan.primary_trunk_reason + is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH + and landing.member_id == plan.primary_trunk_member_id + and not _points_coincide(*_trunk_segments(plan.trunk_axis)[3]) + and not _points_coincide(*_trunk_segments(plan.trunk_axis)[4]) + ): + incoming = _direction(*_trunk_segments(plan.trunk_axis)[3]) + approach = _direction(*_trunk_segments(plan.trunk_axis)[4]) + handedness = turn_handedness(incoming, approach) + elif handedness is not None and not landing.bypass: source = graph.stations[landing.source_junction_id] if landing.approach_axis is DemandAxis.X: start = (landing.join_point[0], source.y) @@ -1704,7 +1923,12 @@ def _move_landing_opening( return replace(plan, landings=tuple(landings)) if moved else None -def _move_trunk_axis(plan: ConvergencePlan, coordinate: float) -> ConvergencePlan: +def _move_trunk_axis( + plan: ConvergencePlan, + coordinate: float, + *, + preserve_lane_offsets: bool = False, +) -> ConvergencePlan: """Re-seat *plan*'s shared trunk on *coordinate* across its channel. The lateral coordinate is the one position every member standing on the @@ -1718,13 +1942,21 @@ def _move_trunk_axis(plan: ConvergencePlan, coordinate: float) -> ConvergencePla assert axis is not None lateral = 1 if axis.axis is DemandAxis.X else 0 old_coordinate = axis.coordinate + delta = coordinate - old_coordinate central = _trunk_segments(axis)[0] def lifted(point: tuple[float, float]) -> tuple[float, float]: + if preserve_lane_offsets: + return ( + (point[0], point[1] + delta) + if lateral == 1 + else (point[0] + delta, point[1]) + ) return (point[0], coordinate) if lateral == 1 else (coordinate, point[1]) def on_central(point: tuple[float, float]) -> bool: - return point_to_polyline_distance(point, central) <= COORD_TOLERANCE + tolerance = OFFSET_STEP if preserve_lane_offsets else 0.0 + return point_to_polyline_distance(point, central) <= tolerance + COORD_TOLERANCE landings: list[ConvergenceLanding] = [] moved_join_by_member: dict[EmissionMemberId, tuple[float, float]] = {} @@ -1733,20 +1965,40 @@ def on_central(point: tuple[float, float]) -> bool: landings.append(landing) continue join_point = lifted(landing.join_point) + approach_direction = landing.approach_direction + if preserve_lane_offsets: + approach_index = landing.approach_axis.point_index + approach_start = ( + landing.join_point[approach_index] + - landing.minimum_runway * landing.approach_direction.sign + ) + approach_delta = join_point[approach_index] - approach_start + if abs(approach_delta) > COORD_TOLERANCE: + if landing.approach_axis is DemandAxis.X: + approach_direction = ( + Direction.R if approach_delta > 0 else Direction.L + ) + else: + approach_direction = ( + Direction.D if approach_delta > 0 else Direction.U + ) opening_segment = landing.opening_turn_segment if opening_segment is not None: opening_segment = ( lifted(opening_segment[0]) - if abs(opening_segment[0][lateral] - old_coordinate) <= COORD_TOLERANCE + if abs(opening_segment[0][lateral] - old_coordinate) + <= (OFFSET_STEP if preserve_lane_offsets else 0.0) + COORD_TOLERANCE else opening_segment[0], lifted(opening_segment[1]) - if abs(opening_segment[1][lateral] - old_coordinate) <= COORD_TOLERANCE + if abs(opening_segment[1][lateral] - old_coordinate) + <= (OFFSET_STEP if preserve_lane_offsets else 0.0) + COORD_TOLERANCE else opening_segment[1], ) landings.append( replace( landing, join_point=join_point, + approach_direction=approach_direction, minimum_runway=_reseated_runway(landing, join_point), opening_turn_segment=opening_segment, ) @@ -1766,15 +2018,85 @@ def on_central(point: tuple[float, float]) -> bool: else item for item in plan.endpoint_ownership ) + new_axis = replace(axis, coordinate=coordinate) return replace( plan, - trunk_axis=replace(axis, coordinate=coordinate), + trunk_axis=new_axis, landings=tuple(landings), outgoing_continuations=continuations, endpoint_ownership=ownership, ) +def _reconcile_bypass_landings( + plan: ConvergencePlan, ctx: _RoutingCtx +) -> ConvergencePlan: + """Match bypass landing metadata to the geometry emitted after settlement.""" + axis = plan.trunk_axis + if ( + axis is None + or plan.primary_trunk_reason is not ConvergenceTrunkReason.LONGEST_BYPASS + ): + primary_points = None + else: + segments = _trunk_segments(axis) + primary_points = [ + segments[2][1], + segments[2][0], + segments[1][0], + segments[3][0], + segments[4][0], + segments[4][1], + ] + landings = list(plan.landings) + for rank, landing in enumerate(landings): + opening = landing.opening_turn_segment + if ( + landing.member_id != plan.primary_trunk_member_id + and landing.bypass + and opening is not None + ): + start_y, end_y = opening[0][1], opening[1][1] + join_y = landing.join_point[1] + y_lo, y_hi = sorted((start_y, end_y)) + inside = ( + y_lo + ctx.curve_radius - COORD_TOLERANCE + <= join_y + <= y_hi - COORD_TOLERANCE + ) + extends = (end_y - start_y) * (join_y - end_y) > 0.0 and abs( + join_y - end_y + ) < ctx.curve_radius - COORD_TOLERANCE + if inside or extends: + landing = replace( + landing, + opening_turn_segment=( + opening[0], + (opening[1][0], landing.join_point[1]), + ), + ) + if landing.member_id == plan.primary_trunk_member_id: + points = primary_points + else: + tail = _bypass_landing_tail(landing, ctx) + if tail is not None and _points_coincide(tail[0], landing.join_point): + landings[rank] = landing + continue + points = None if tail is None else [opening[0], *tail] + if points is None: + continue + actual = _landing_approach_points(points, landing.join_point) + if actual is None: + continue + landings[rank] = replace( + landing, + approach_direction=actual[0], + corner_handedness=actual[1], + minimum_runway=actual[2], + ) + return replace(plan, landings=tuple(landings)) + + def _clear_lane_candidates( obstacles: tuple[float, ...], clearance: float, @@ -2047,13 +2369,8 @@ def _member_corridor_runs( interior run between two turns is exposed: a first or last leg is the member's own approach to a station, which no bundle it passes through owns. """ - owned_edges = frozenset( - edge for plan in plans for edge in plan.resolved_member_edges - ) runs: list[_CotravellingRun] = [] for plan in member_geometry.plans: - if plan.edge in owned_edges: - continue points = plan.points for rank in range(1, len(points) - 2): start, end = points[rank], points[rank + 1] @@ -3342,6 +3659,101 @@ def distance(band: ReservedBand) -> tuple[float, float]: return tuple(settled) +def _settle_reserved_trunk_axes( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + ctx: _RoutingCtx, + member_runs: tuple[_CotravellingRun, ...], +) -> tuple[ConvergencePlan, ...]: + settled: list[ConvergencePlan] = [] + for plan in plans: + axis = plan.trunk_axis + primary = next( + ( + landing + for landing in plan.landings + if landing.member_id == plan.primary_trunk_member_id + ), + None, + ) + if axis is None or axis.axis is not DemandAxis.X or primary is None: + settled.append(plan) + continue + band = ctx.reserved_bands.claimed_row_band( + primary.edge.source, primary.edge.target, primary.edge.line_id + ) + coordinate = band.hold(axis.coordinate) if band is not None else axis.coordinate + run = _trunk_corridor_run(plan, graph) + source = graph.stations.get(primary.edge.source) + target = graph.stations.get(primary.edge.target) + section_ids = tuple( + section_id + for section_id in ( + source.section_id if source is not None else None, + target.section_id if target is not None else None, + ) + if section_id is not None + ) + clearance_band = band + if band is None: + clearance_band = corridor_clearance_band( + graph, + axis=1, + section_ids=section_ids, + coordinate=axis.coordinate, + run_start=axis.extent_start, + run_end=axis.extent_end, + ) + coordinate = seat_run_in_corridor_clearance( + graph, + axis=1, + section_ids=section_ids, + coordinate=axis.coordinate, + run_start=axis.extent_start, + run_end=axis.extent_end, + ) + if run is not None: + seated_runs = tuple( + candidate + for settled_plan in settled + if (candidate := _trunk_corridor_run(settled_plan, graph)) is not None + ) + neighbours = tuple( + item + for item in (*member_runs, *seated_runs) + if item.direction is run.direction + and item.line_ids != run.line_ids + and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) + ) + if any( + abs(item.coordinate - coordinate) < ctx.offset_step - COORD_TOLERANCE + for item in neighbours + ): + coordinate = min( + ( + candidate + for candidate in _clear_lane_candidates( + tuple(item.coordinate for item in neighbours), + ctx.offset_step, + ) + if clearance_band is None + or ( + clearance_band.lo - COORD_TOLERANCE + <= candidate + <= clearance_band.hi + COORD_TOLERANCE + ) + ), + key=lambda candidate: abs(candidate - axis.coordinate), + default=coordinate, + ) + settled.append( + _move_trunk_axis(plan, coordinate, preserve_lane_offsets=True) + if 0 < abs(coordinate - axis.coordinate) <= BUNDLE_TO_BUNDLE_CLEARANCE + else plan + ) + return tuple(settled) + + def _settle_opposing_gap_flanks( plans: tuple[ConvergencePlan, ...], graph: MetroGraph, @@ -3690,13 +4102,327 @@ def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: return tuple(settled) +_GapCarrierKey: TypeAlias = tuple[ + tuple[int, int | None], + float, + float, + float, + bool, + frozenset[str], + frozenset[str], +] + + +def _gap_carrier_key(channel: _PlanGapChannel) -> _GapCarrierKey: + """Identity of one physical carrier described by one or more plans.""" + return ( + channel.gap, + channel.coordinate, + channel.y_lo, + channel.y_hi, + channel.down, + channel.line_ids, + channel.source_junction_ids, + ) + + +def _repack_crowded_gap_channels( # noqa: C901 + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + curve_radius: float, + fixed_channels: tuple[_PlanGapChannel, ...], +) -> tuple[ConvergencePlan, ...]: + """Pack a connected set of crowded plan carriers into its usable gap.""" + lookup = gap_lookup_geometry(graph) + settled = list(plans) + gaps = sorted( + { + channel.gap + for plan in plans + for channel in _plan_gap_channels(plan, graph, lookup) + }, + key=lambda gap: (gap[0], -1 if gap[1] is None else gap[1]), + ) + + for gap in gaps: + grouped: defaultdict[_GapCarrierKey, list[tuple[int, _PlanGapChannel]]] = ( + defaultdict(list) + ) + for plan_rank, plan in enumerate(settled): + for channel in _plan_gap_channels(plan, graph, lookup): + if channel.gap == gap: + grouped[_gap_carrier_key(channel)].append((plan_rank, channel)) + keys = tuple( + sorted( + grouped, + key=lambda key: ( + key[1], + sorted(key[5]), + sorted(key[6]), + key[2], + key[3], + ), + ) + ) + representatives = {key: grouped[key][0][1] for key in keys} + neighbours: dict[_GapCarrierKey, set[_GapCarrierKey]] = { + key: set() for key in keys + } + crowded_pairs: set[frozenset[_GapCarrierKey]] = set() + fixed_crowded_keys: set[_GapCarrierKey] = set() + for rank, first_key in enumerate(keys): + first = representatives[first_key] + for second_key in keys[rank + 1 :]: + second = representatives[second_key] + if ( + min(first.y_hi, second.y_hi) - max(first.y_lo, second.y_lo) + <= COORD_TOLERANCE + or _landing_channel_clearance(first, second) is None + ): + continue + neighbours[first_key].add(second_key) + neighbours[second_key].add(first_key) + if _landing_channels_crowd(first, second): + crowded_pairs.add(frozenset((first_key, second_key))) + for key in keys: + channel = representatives[key] + if any( + fixed.gap[0] == gap[0] + and ( + _landing_channels_crowd(channel, fixed) + or _stacked_elbow_channels_crowd(channel, fixed) + ) + for fixed in fixed_channels + ): + fixed_crowded_keys.add(key) + + pending = set(keys) + components: list[set[_GapCarrierKey]] = [] + while pending: + seed = min( + pending, + key=lambda key: (key[1], sorted(key[5]), sorted(key[6])), + ) + component: set[_GapCarrierKey] = set() + frontier = [seed] + while frontier: + key = frontier.pop() + if key in component: + continue + component.add(key) + frontier.extend(neighbours[key] - component) + pending -= component + if any(pair <= component for pair in crowded_pairs) or ( + component & fixed_crowded_keys + ): + components.append(component) + + left, right = column_gap_edges(graph, gap[0], gap[0] + 1, row=gap[1]) + usable_left = left + EDGE_TO_BUNDLE_CLEARANCE + usable_right = right - EDGE_TO_BUNDLE_CLEARANCE + for component in components: + ordered = tuple(key for key in keys if key in component) + + def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: + traversal = ordered if from_left else tuple(reversed(ordered)) + positions: dict[_GapCarrierKey, float] = {} + for key in traversal: + coordinate = usable_left if from_left else usable_right + channel = representatives[key] + for prior_key, prior_coordinate in positions.items(): + prior = representatives[prior_key] + if ( + min(channel.y_hi, prior.y_hi) + - max(channel.y_lo, prior.y_lo) + <= COORD_TOLERANCE + ): + continue + clearance = _landing_channel_clearance(channel, prior) + if clearance is None: + continue + if from_left: + coordinate = max(coordinate, prior_coordinate + clearance) + else: + coordinate = min(coordinate, prior_coordinate - clearance) + for fixed in fixed_channels: + if fixed.gap != gap and not _stacked_elbow_channels_crowd( + channel, fixed + ): + continue + clearance = _landing_channel_clearance(channel, fixed) + if ( + clearance is None + or abs(coordinate - fixed.coordinate) + >= clearance - COORD_TOLERANCE + ): + continue + coordinate = fixed.coordinate + ( + clearance if from_left else -clearance + ) + positions[key] = coordinate + return positions + + for positions in (packed_positions(True), packed_positions(False)): + if any( + coordinate < usable_left - COORD_TOLERANCE + or coordinate > usable_right + COORD_TOLERANCE + for coordinate in positions.values() + ): + continue + candidate = list(settled) + touched_ranks: set[int] = set() + moved_flanks: set[tuple[int, int]] = set() + moved_openings: set[tuple[int, frozenset[EmissionMemberId]]] = set() + feasible = True + for key in ordered: + coordinate = positions[key] + if abs(coordinate - key[1]) <= COORD_TOLERANCE: + continue + for plan_rank, channel in grouped[key]: + touched_ranks.add(plan_rank) + if channel.flank_rank is not None: + move_key = (plan_rank, channel.flank_rank) + if move_key in moved_flanks: + continue + moved_flanks.add(move_key) + candidate[plan_rank] = _move_trunk_flank( + candidate[plan_rank], channel.flank_rank, coordinate + ) + continue + move_key = (plan_rank, channel.claimant_member_ids) + if move_key in moved_openings: + continue + moved_openings.add(move_key) + moved = _move_landing_opening( + candidate[plan_rank], + channel.claimant_member_ids, + coordinate, + curve_radius, + ) + if moved is None: + feasible = False + break + candidate[plan_rank] = moved + if not feasible: + break + if not feasible: + continue + candidate_tuple = tuple(candidate) + if ( + _landing_trunk_flank_conflict(candidate_tuple, graph, curve_radius) + is not None + ): + continue + moved_channels = tuple( + channel + for plan_rank in touched_ranks + for channel in _plan_gap_channels( + candidate[plan_rank], graph, lookup + ) + ) + if any( + not _channel_inside_gap(graph, channel) + for channel in moved_channels + ): + continue + gap_channels = tuple( + channel + for plan in candidate + for channel in _plan_gap_channels(plan, graph, lookup) + if channel.gap == gap + ) + if any( + _landing_channels_crowd(first, second) + for rank, first in enumerate(gap_channels) + for second in gap_channels[rank + 1 :] + if _gap_carrier_key(first) in component + or _gap_carrier_key(second) in component + ): + continue + if any( + _landing_channels_crowd(channel, fixed) + for channel in moved_channels + for fixed in fixed_channels + ): + continue + settled = candidate + break + return tuple(settled) + + +def _clear_fixed_gap_flanks( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + fixed_channels: tuple[_PlanGapChannel, ...], + *, + stacked_only: bool = False, +) -> tuple[ConvergencePlan, ...]: + """Move plan-owned flanks off fixed member channels on the same boundary.""" + lookup = gap_lookup_geometry(graph) + settled = list(plans) + for plan_rank, plan in enumerate(settled): + for channel in _plan_gap_channels(plan, graph, lookup): + if channel.flank_rank is None: + continue + obstacles = tuple( + fixed + for fixed in fixed_channels + if fixed.gap[0] == channel.gap[0] + and ( + not stacked_only + and _landing_channels_crowd(channel, fixed) + or _stacked_elbow_channels_crowd(channel, fixed) + ) + ) + if not obstacles: + continue + candidates = sorted( + { + fixed.coordinate + sign * clearance + for fixed in obstacles + if (clearance := _landing_channel_clearance(channel, fixed)) + is not None + for sign in (-1.0, 1.0) + }, + key=lambda coordinate: ( + abs(coordinate - channel.coordinate), + coordinate, + ), + ) + for coordinate in candidates: + moved = _move_trunk_flank(plan, channel.flank_rank, coordinate) + moved_channels = tuple( + item + for item in _plan_gap_channels(moved, graph, lookup) + if item.gap == channel.gap and item.flank_rank == channel.flank_rank + ) + if any( + not _channel_inside_gap(graph, item) + or any( + ( + _gap_channels_crowd(item, fixed) + or _stacked_elbow_channels_crowd(item, fixed) + ) + and not _member_represented_convergence_lane( + item, fixed, fixed_channels + ) + for fixed in fixed_channels + ) + for item in moved_channels + ): + continue + settled[plan_rank] = plan = moved + break + return tuple(settled) + + def _stacked_elbow_channels_crowd( first: _PlanGapChannel, second: _PlanGapChannel ) -> bool: """Whether two independently sourced columns need elbow clearance.""" overlap = min(first.y_hi, second.y_hi) - max(first.y_lo, second.y_lo) return ( - first.gap == second.gap + first.gap[0] == second.gap[0] and not first.line_ids & second.line_ids and not first.source_junction_ids & second.source_junction_ids and COORD_TOLERANCE < overlap < MIN_CORRIDOR_Y_OVERLAP @@ -3802,9 +4528,6 @@ def _planned_member_gap_channels( plans: tuple[ConvergencePlan, ...], member_geometry: MemberGeometryExecution, ) -> tuple[_PlanGapChannel, ...]: - owned_edges = frozenset( - edge for plan in plans for edge in plan.resolved_member_edges - ) return tuple( _PlanGapChannel( None, @@ -3822,7 +4545,6 @@ def _planned_member_gap_channels( True, ) for plan in member_geometry.plans - if plan.edge not in owned_edges for channel in plan.gap_channels ) @@ -4129,6 +4851,114 @@ def _stacked_elbow_clearance_requirements( return tuple(widest[key] for key in sorted(widest)) +def _gap_channel_clearance_requirements( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + fixed_channels: tuple[_PlanGapChannel, ...] = (), +) -> tuple[BoundaryClearanceRequirement, ...]: + """Request the width needed to pack every overlapping plan carrier.""" + lookup = gap_lookup_geometry(graph) + channels_by_boundary: defaultdict[ + int, list[tuple[int, ConvergencePlan | None, _PlanGapChannel]] + ] = defaultdict(list) + seen: set[_GapCarrierKey] = set() + for plan_rank, plan in enumerate(plans): + for channel in _plan_gap_channels(plan, graph, lookup): + key = _gap_carrier_key(channel) + if key in seen: + continue + seen.add(key) + channels_by_boundary[channel.gap[0]].append((plan_rank, plan, channel)) + for channel_rank, channel in enumerate(fixed_channels, start=len(plans)): + key = _gap_carrier_key(channel) + if key in seen: + continue + seen.add(key) + channels_by_boundary[channel.gap[0]].append((channel_rank, None, channel)) + + requirements: list[BoundaryClearanceRequirement] = [] + for lower_col, grouped in sorted(channels_by_boundary.items()): + ordered = sorted( + grouped, + key=lambda item: (item[2].coordinate, item[0], sorted(item[2].line_ids)), + ) + positions: list[float] = [] + for rank, (_plan_rank, _plan, channel) in enumerate(ordered): + position = 0.0 + for prior_rank, (_prior_rank, _prior_plan, prior) in enumerate( + ordered[:rank] + ): + if ( + min(channel.y_hi, prior.y_hi) - max(channel.y_lo, prior.y_lo) + <= COORD_TOLERANCE + ): + continue + clearance = _landing_channel_clearance(channel, prior) + if clearance is not None: + position = max(position, positions[prior_rank] + clearance) + positions.append(position) + required = 2 * EDGE_TO_BUNDLE_CLEARANCE + max(positions, default=0.0) + movable = tuple(channel for _rank, plan, channel in ordered if plan is not None) + fixed = tuple(channel for _rank, plan, channel in ordered if plan is None) + for channel in movable: + for obstacle in fixed: + if not _landing_channels_crowd(channel, obstacle): + continue + clearance = _landing_channel_clearance(channel, obstacle) + assert clearance is not None + required = max( + required, + 2 * EDGE_TO_BUNDLE_CLEARANCE + 2 * clearance, + ) + left, right = column_gap_edges(graph, lower_col, lower_col + 1, row=None) + if required <= measured_distance(left, right) + COORD_TOLERANCE: + continue + boundary = lower_col + 1 + negative = [ + section + for section in graph.sections.values() + if section.grid_col + section.grid_col_span - 1 == lower_col + ] + positive = [ + section + for section in graph.sections.values() + if section.grid_col == boundary + ] + if not negative or not positive: + continue + negative_edge = max(section.bbox_x + section.bbox_w for section in negative) + positive_edge = min(section.bbox_x for section in positive) + owner = next(plan for _rank, plan, _channel in reversed(ordered) if plan) + requirements.append( + BoundaryClearanceRequirement( + SettlementAxis.COLUMN, + boundary, + str(owner.system_id), + max(required, measured_distance(negative_edge, positive_edge)), + tuple( + sorted( + section.id + for section in negative + if measured_distance( + section.bbox_x + section.bbox_w, negative_edge + ) + <= COORD_TOLERANCE + ) + ), + tuple( + sorted( + section.id + for section in positive + if measured_distance(section.bbox_x, positive_edge) + <= COORD_TOLERANCE + ) + ), + f"convergence system {owner.system_id} gap channel clearance", + ) + ) + return tuple(requirements) + + def _segments_coincide(first: _Segment, second: _Segment) -> bool: """Whether two parallel runs stand on one coordinate, hence draw one stroke.""" index = lateral_axis(_direction(*first)).point_index @@ -4323,9 +5153,12 @@ def _validate_final_convergence_feasibility( ) if allow_clearance_requirements: clearance_requirements.extend(stacked_requirements) + clearance_requirements.extend( + _gap_channel_clearance_requirements(plans, graph, fixed_channels) + ) for plan, channel in plan_channels: for member_channel in fixed_channels: - if channel.gap != member_channel.gap or not spans_share_corridor( + if channel.gap[0] != member_channel.gap[0] or not spans_share_corridor( channel.y_lo, channel.y_hi, member_channel.y_lo, @@ -4372,6 +5205,8 @@ def _validate_final_convergence_feasibility( f"final convergence plan {plan.id} crowds a short-overlap " f"member channel in gap {channel.gap}" ) + if channel.gap != member_channel.gap: + continue if _gap_channels_crowd( channel, member_channel ) and not _member_represented_convergence_lane( @@ -4379,6 +5214,11 @@ def _validate_final_convergence_feasibility( member_channel, fixed_channels, ): + if any( + requirement.boundary == channel.gap[0] + 1 + for requirement in clearance_requirements + ): + continue raise FinalConvergenceFeasibilityError( f"final convergence plan {plan.id} crowds a planned " f"member channel in gap {channel.gap}" @@ -4660,6 +5500,9 @@ def build_convergence_plan_execution( ) system_plans = _reconcile_continuation_ownership(system_plans) system_plans = _reconcile_landing_handedness(system_plans, graph) + system_plans = tuple( + _reconcile_bypass_landings(plan, ctx) for plan in system_plans + ) except ConvergenceOwnershipConflict as error: reason = str(error) system_plans = tuple( @@ -4701,6 +5544,7 @@ def _settle_convergence_geometry( member_runs: tuple[_CotravellingRun, ...] = (), ) -> tuple[ConvergencePlan, ...]: """Apply the shared convergence channel-settlement sequence.""" + settled = _pack_cotravelling_corridor_runs(plans, graph, member_runs) settled = _separate_distinct_cotravelling_trunks(settled, graph, member_runs) settled = _settle_shared_trunk_channels(settled, ctx.curve_radius) @@ -4723,7 +5567,42 @@ def _settle_convergence_geometry( ), ) settled = _reconcile_continuation_ownership(settled) - return _reconcile_landing_handedness(settled, graph) + settled = _reconcile_landing_handedness(settled, graph) + settled = _settle_opposing_gap_flanks( + settled, + graph, + ctx.curve_radius, + _exit_owned_flanks(settled, exit_turn_plans), + fixed_channels, + ( + _fixed_exit_axis_channels(exit_turn_plans) + if ctx.prior_exit_turn_dispositions is not None + else frozenset() + ), + ) + settled = _clear_fixed_gap_flanks(settled, graph, fixed_channels) + settled = _repack_crowded_gap_channels( + settled, graph, ctx.curve_radius, fixed_channels + ) + settled = _settle_reserved_trunk_axes(settled, graph, ctx, member_runs) + settled = _clear_fixed_gap_flanks(settled, graph, fixed_channels, stacked_only=True) + settled = _settle_opposing_gap_flanks( + settled, + graph, + ctx.curve_radius, + _exit_owned_flanks(settled, exit_turn_plans), + fixed_channels, + ( + _fixed_exit_axis_channels(exit_turn_plans) + if ctx.prior_exit_turn_dispositions is not None + else frozenset() + ), + ) + settled = _repack_crowded_gap_channels( + settled, graph, ctx.curve_radius, fixed_channels + ) + settled = _reconcile_landing_handedness(settled, graph) + return tuple(_reconcile_bypass_landings(plan, ctx) for plan in settled) def _settle_eligible( @@ -5353,11 +6232,57 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: ) else: opening_rank = opening.idx + if ( + landing.opening_turn_segment is not None + and landing.opening_turn_segment[1] == landing.join_point + and route.points[opening.idx + 1] != landing.join_point + ): + route.points = route.points[: opening.idx + 2] + route.points[-1] = landing.join_point + if route.curve_radii is not None: + route.curve_radii = route.curve_radii[: opening.idx + 1] if plan.primary_trunk_member_id == membership.member_id: if plan.primary_trunk_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH: _bake_route(route, ctx) _connect_route_endpoint(route, landing.join_point, ctx) assert plan.trunk_axis is not None + if ( + plan.primary_trunk_reason is ConvergenceTrunkReason.LONGEST_BYPASS + or ( + plan.primary_trunk_reason + is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH + and plan.trunk_axis.target_endpoint_coordinate is not None + and abs( + plan.trunk_axis.target_endpoint_coordinate + - ( + plan.trunk_axis.extent_end + if plan.trunk_axis.direction in {Direction.R, Direction.D} + else plan.trunk_axis.extent_start + ) + ) + > COORD_TOLERANCE + ) + ) and not _route_covers_trunk(route, plan.trunk_axis): + segments = _trunk_segments(plan.trunk_axis) + old_radii = route.curve_radii + route.points = [ + segments[2][1], + segments[2][0], + segments[1][0], + segments[3][0], + segments[4][0], + segments[4][1], + ] + route.curve_radii = ( + None + if old_radii is None + else [ + old_radii[0], + ctx.curve_radius, + ctx.curve_radius, + old_radii[-1], + ] + ) lane_rank = plan.lane_order.index(route.line_id) lane_offset = (len(plan.lane_order) - lane_rank - 1) * ctx.offset_step _seat_route_on_trunk_flanks( @@ -5370,6 +6295,7 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: _trunk_segment_ranks(route, plan.trunk_axis) + (() if opening_rank is None else (opening_rank,)) ) + _refresh_convergence_gap_slots(route, ctx) if ctx.validate_final_route_frames and not clearance_pending: _assert_landing_geometry(route, plan, landing) return @@ -5382,10 +6308,12 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: if key in ctx.merge.branch_edges: _land_feeder_on_run(route, run, ctx) _bake_route(route, ctx) - _connect_route_endpoint(route, landing.join_point, ctx) + if not _connect_bypass_landing(route, landing, ctx): + _connect_route_endpoint(route, landing.join_point, ctx) route.convergence_owned_segment_ranks = _ordered_unique( (len(route.points) - 2,) + (() if opening_rank is None else (opening_rank,)) ) + _refresh_convergence_gap_slots(route, ctx) endpoint = route.points[-1] if not clearance_pending and any( abs(actual - expected) > COORD_TOLERANCE @@ -5396,6 +6324,16 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: _assert_landing_geometry(route, plan, landing) +def _refresh_convergence_gap_slots(route: RoutedPath, ctx: _RoutingCtx) -> None: + """Declare the gap channels in the convergence-owned final geometry.""" + from nf_metro.layout.routing.inter_section_handlers import ( + _declare_placed_channels, + ) + + route.gap_slots.clear() + _declare_placed_channels(route, ctx) + + def validate_convergence_plans( routes: list[RoutedPath], execution: ConvergencePlanExecution, diff --git a/src/nf_metro/layout/routing/core.py b/src/nf_metro/layout/routing/core.py index f051e22b3..8b7fa9332 100644 --- a/src/nf_metro/layout/routing/core.py +++ b/src/nf_metro/layout/routing/core.py @@ -100,6 +100,7 @@ _nest_bypass_above_over_top_wrap, _plan_trunk_band, _reconcile_port_peeloff_risers, + _reconcile_wholesale_bundle_corner_radii, _restack_channel, _restack_htrunk, _restack_trunk_band, @@ -573,6 +574,8 @@ def emit_edge( assert_exit_turn_snapshot(routes, planned_segments, "corridor clearance holding") _unify_coincident_corner_radii(routes) assert_exit_turn_snapshot(routes, planned_segments, "corner-radius unification") + _reconcile_wholesale_bundle_corner_radii(routes, ctx.curve_radius) + assert_exit_turn_snapshot(routes, planned_segments, "bundle-corner reconciliation") covered_edges = ( system_execution.covered_edges() if system_execution is not None diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index f071ec104..8807df36c 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1897,6 +1897,137 @@ def resolved_vector(route: RoutedPath) -> list[float]: break +def _reconcile_wholesale_bundle_corner_radii( + routes: list[RoutedPath], base_radius: float +) -> None: + """Solve final concentric and coincident corner-radius constraints.""" + nodes: dict[tuple[int, int], tuple[RoutedPath, int]] = { + (id(route), corner_rank): (route, corner_rank) + for route in routes + if route.curve_radii is not None + for corner_rank in range(1, len(route.points) - 1) + } + constraints: defaultdict[ + tuple[int, int], list[tuple[tuple[int, int], float]] + ] = defaultdict(list) + + def unit( + start: tuple[float, float], end: tuple[float, float] + ) -> tuple[float, float] | None: + dx, dy = end[0] - start[0], end[1] - start[1] + if abs(dx) > COORD_TOLERANCE and abs(dy) <= COORD_TOLERANCE: + return (1.0 if dx > 0.0 else -1.0, 0.0) + if abs(dy) > COORD_TOLERANCE and abs(dx) <= COORD_TOLERANCE: + return (0.0, 1.0 if dy > 0.0 else -1.0) + return None + + def wholesale_delta( + first: RoutedPath, second: RoutedPath, corner_rank: int + ) -> float | None: + first_points, second_points = first.points, second.points + incoming = unit(first_points[corner_rank - 1], first_points[corner_rank]) + outgoing = unit(first_points[corner_rank], first_points[corner_rank + 1]) + if ( + incoming is None + or outgoing is None + or incoming + != unit(second_points[corner_rank - 1], second_points[corner_rank]) + or outgoing + != unit(second_points[corner_rank], second_points[corner_rank + 1]) + or abs(incoming[0] * outgoing[0] + incoming[1] * outgoing[1]) + > COORD_TOLERANCE_FINE + ): + return None + dx = second_points[corner_rank][0] - first_points[corner_rank][0] + dy = second_points[corner_rank][1] - first_points[corner_rank][1] + tangent_shift = abs( + dx * (incoming[0] + outgoing[0]) + + dy * (incoming[1] + outgoing[1]) + ) + incoming_offset = abs(dx * outgoing[0] + dy * outgoing[1]) + outgoing_offset = abs(dx * incoming[0] + dy * incoming[1]) + if not ( + tangent_shift <= COORD_TOLERANCE_FINE + and max(incoming_offset, outgoing_offset) > COORD_TOLERANCE_FINE + and abs(incoming_offset - outgoing_offset) <= COORD_TOLERANCE_FINE + ): + return None + return -dx * (outgoing[0] - incoming[0]) + + def connect(first: tuple[int, int], second: tuple[int, int], delta: float) -> None: + constraints[first].append((second, delta)) + constraints[second].append((first, -delta)) + + bundles: dict[tuple[str, str, int], list[RoutedPath]] = defaultdict(list) + for route in routes: + if route.curve_radii is not None: + bundles[route.edge.source, route.edge.target, len(route.points)].append( + route + ) + for bundle in bundles.values(): + for first_rank, first in enumerate(bundle): + for second in bundle[first_rank + 1 :]: + for corner_rank in range(1, len(first.points) - 1): + delta = wholesale_delta(first, second, corner_rank) + if delta is not None: + connect( + (id(first), corner_rank), + (id(second), corner_rank), + delta, + ) + + coincident: defaultdict[ + tuple[str, tuple[float, float], tuple[float, float], tuple[float, float]], + list[tuple[int, int]], + ] = defaultdict(list) + for key, (route, corner_rank) in nodes.items(): + incoming = unit(route.points[corner_rank - 1], route.points[corner_rank]) + outgoing = unit(route.points[corner_rank], route.points[corner_rank + 1]) + if incoming is not None and outgoing is not None: + coincident[ + route.line_id, route.points[corner_rank], incoming, outgoing + ].append(key) + for cohort in coincident.values(): + for first, second in zip(cohort, cohort[1:]): + connect(first, second, 0.0) + + unseen = set(constraints) + while unseen: + root = unseen.pop() + potentials = {root: 0.0} + frontier = [root] + consistent = True + while frontier: + current = frontier.pop() + for neighbour, delta in constraints[current]: + expected = potentials[current] + delta + if neighbour in potentials: + consistent &= ( + abs(potentials[neighbour] - expected) + <= COORD_TOLERANCE_FINE + ) + continue + potentials[neighbour] = expected + unseen.discard(neighbour) + frontier.append(neighbour) + if not consistent: + continue + shift = base_radius - min(potentials.values()) + for key, potential in potentials.items(): + route, corner_rank = nodes[key] + radius_index = corner_rank - 1 + desired = shift + potential + assert route.curve_radii is not None + route.curve_radii[radius_index] = concentric_corner_radius_at( + route.points[corner_rank - 1], + route.points[corner_rank], + route.points[corner_rank + 1], + 0.0, + desired, + ) + route.record_concentric_corner(radius_index, 0.0, desired) + + def _reconcile_port_peeloff_risers(routes: list[RoutedPath], ctx: _RoutingCtx) -> None: """Re-stack port approaches onto the slots their settled trunk depth earns. @@ -1918,8 +2049,6 @@ def _reconcile_port_peeloff_risers(routes: list[RoutedPath], ctx: _RoutingCtx) - n = len(bundle.per_line) for rp, tail in bundle.entries: slot = targets[rp.edge.line_id] - if tail_on_slot(tail, slot): - continue ch = _VChannel( route=rp, idx=len(rp.points) - 3, # riser leg points[-3] -> points[-2] @@ -1928,6 +2057,17 @@ def _reconcile_port_peeloff_risers(routes: list[RoutedPath], ctx: _RoutingCtx) - y_hi=max(tail.trunk_y, tail.port_y), down=tail.port_y > tail.trunk_y, ) + if tail_on_slot(tail, slot): + if ch.route.convergence_plan_id is not None: + _restack_channel( + ch, + slot.peel_x, + slot.rank, + n, + step, + ctx.curve_radius, + ) + continue if _planner_owns_channel(ch): continue _restack_channel( @@ -2366,7 +2506,10 @@ def _reseat_concentric_flanking( (k - 1, offset_in, base_radius), (k, offset_out, radius_out), ): - if 0 <= radius_idx < len(rp.curve_radii): + if ( + 0 <= radius_idx < len(rp.curve_radii) + and radius_idx + 2 < len(pts) + ): rp.record_concentric_corner(radius_idx, offset, reference) prev_pt, corner_pt, next_pt = pts[radius_idx : radius_idx + 3] rp.curve_radii[radius_idx] = concentric_corner_radius_at( @@ -2577,8 +2720,8 @@ def _fan_opening_reference_radii( x, y = points[index] points[index] = (target_x, y) radius_indices = range( - channel.idx - 1, - min(channel.idx + 1, len(route.curve_radii)), + max(0, channel.idx - 1), + min(channel.idx + 1, len(route.curve_radii), len(points) - 2), ) for side, radius_index in enumerate(radius_indices): required_reference = concentric_reference_radius_at( @@ -2634,10 +2777,19 @@ def _bundle_divergent_distinct_descents( # offsets step across the section seam: a line reused on non-adjacent # fan legs can leave an empty interior lane there, which widens the # peel-x span past a tight bundle, so this pass would otherwise claim them. + junction_owned = all( + channel.route.edge.source.startswith("__junction_") for channel in chans + ) targets = {c.route.edge.target for c in chans} if len(targets) == 1: port = ctx.graph.ports.get(next(iter(targets))) - if port is not None and port.is_entry: + xs = [c.x for c in chans] + tight = max(xs) - min(xs) <= step * ( + len(by_line) - 1 + ) + COORD_TOLERANCE + if port is not None and port.is_entry and not ( + settle_frozen_arcs and tight and junction_owned + ): continue target_sets = { frozenset(ch.route.edge.target for ch in line_channels) @@ -2659,7 +2811,9 @@ def _bundle_divergent_distinct_descents( # ranks imply. Those belong to the freeze: a plan holds its opening arc # from the freeze onward, so a group carrying one can be given a shared # arc centre there and nowhere later. - if frozen and not (settle_frozen_arcs and tight): + if frozen and not ( + settle_frozen_arcs and tight and junction_owned + ): continue if ( any( @@ -3206,6 +3360,32 @@ def _plan_trunk_band( h_rank = {id(sg): r for r, sg in enumerate(h_ttb)} feats = {id(sg): _trunk_slot_features(sg) for sg in slot_groups} + def source_corner_crossings(perm: list[list[_HTrunk]]) -> int: + rank = {id(slot): value for value, slot in enumerate(perm)} + crossings = 0 + for first_rank, first_slot in enumerate(slot_groups): + for second_slot in slot_groups[first_rank + 1 :]: + for first in first_slot: + for second in second_slot: + if ( + first.route.member_geometry_plan_id is not None + or second.route.member_geometry_plan_id is not None + ): + continue + if ( + first.route.edge.source != second.route.edge.source + or first.route.edge.target != second.route.edge.target + ): + continue + first_x = first.route.points[first.idx - 1][0] + second_x = second.route.points[second.idx - 1][0] + if abs(first_x - second_x) <= COORD_TOLERANCE: + continue + expected = first_x > second_x + observed = rank[id(first_slot)] < rank[id(second_slot)] + crossings += expected != observed + return crossings + def _key(perm: list[list[_HTrunk]]) -> tuple[float, ...]: # Crossings first; then packed looseness so tight bundles beat split # ones; then heuristic position. The heuristic scores (.., 0, 1, ..), @@ -3214,6 +3394,7 @@ def _key(perm: list[list[_HTrunk]]) -> tuple[float, ...]: s2d = perm if dips else list(reversed(perm)) looseness = _band_looseness(s2d, _pack_band_tracks(s2d, span_of), span_of) return ( + source_corner_crossings(perm), _band_order_crossings(perm, feats), looseness, *(h_rank[id(sg)] for sg in perm), @@ -3718,7 +3899,22 @@ def feasible(target: float) -> bool: return False moved = replace(lane, coord=target) return not any( - moved.fuses_with(other, step) for other in lanes if other is not lane + moved.fuses_with(other, step) + or ( + moved.axis == other.axis + and moved.sign != other.sign + and moved.line_id == other.line_id + and abs(moved.coord - other.coord) + < BUNDLE_TO_BUNDLE_CLEARANCE - COORD_TOLERANCE + and any( + max(run.span[0], obstacle.span[0]) + < min(run.span[1], obstacle.span[1]) - COORD_TOLERANCE + for run in moved.runs + for obstacle in other.runs + ) + ) + for other in lanes + if other is not lane ) target = min( diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index 20403658e..849d5a2ad 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -1447,6 +1447,47 @@ def _reconcile_carried_ports( reanchor_junctions(graph) station_offsets = compute_station_offsets(graph, offset_step=offset_step) routes, route_plan = _route(station_offsets, allow_clearance_requirements=True) + preclearance_settlement: EnvelopeSettlement | None = None + if route_plan.boundary_clearance_requirements: + requested_plan = route_plan + clearance_plan = replace( + requested_plan, reservations=(), realised_reservations=() + ) + preclearance_settlement = settle_route_envelopes( + graph, + clearance_plan, + clearance=lambda live_graph: measure_boundary_clearance_requirements( + live_graph, requested_plan.boundary_clearance_requirements + ), + ) + station_offsets, routes, route_plan = _resettle( + reservation_translations=preclearance_settlement.coordinate_translations + ) + if route_plan.boundary_clearance_requirements: + raise LayoutInvariantError( + "envelope settlement did not satisfy convergence boundary " + "clearance requirements" + ) + corridor_settlement = settle_route_envelopes(graph, route_plan) + if corridor_settlement.translations: + station_offsets, routes, route_plan = _resettle( + route_plan, + ( + *preclearance_settlement.coordinate_translations, + *corridor_settlement.coordinate_translations, + ), + ) + preclearance_settlement = EnvelopeSettlement( + ( + *preclearance_settlement.translations, + *corridor_settlement.translations, + ), + corridor_settlement.shortfalls, + ( + *preclearance_settlement.coordinate_translations, + *corridor_settlement.coordinate_translations, + ), + ) effective_strict = (graph.strict or bool(graph._fold_compressed_sections)) and not ( graph.permissive ) @@ -1489,7 +1530,7 @@ def _measure_clearance( graph, frozen_plan.boundary_clearance_requirements ) - grant_settlement: EnvelopeSettlement | None = None + grant_settlement = preclearance_settlement settlement = settle_route_envelopes( graph, frozen_plan, clearance=_measure_clearance ) @@ -1512,15 +1553,15 @@ def _measure_clearance( ) labels = _place(station_offsets, routes) assert_render_curve_invariants(graph, routes, station_offsets) - if pending_clearance: - granted_routes = routes - granted_plan = routed_plan - granted_polylines = [ - apply_route_offsets(route, station_offsets) for route in granted_routes - ] - containment_requirements = drawn_corridor_clearance_requirements( - graph, granted_plan, granted_polylines - ) + granted_routes = routes + granted_plan = routed_plan + granted_polylines = [ + apply_route_offsets(route, station_offsets) for route in granted_routes + ] + containment_requirements = drawn_corridor_clearance_requirements( + graph, granted_plan, granted_polylines + ) + if pending_clearance or containment_requirements: settlement = settle_route_envelopes( graph, granted_plan, @@ -1555,7 +1596,7 @@ def _measure_clearance( # across the very step whose contract is coordinate translation only. # The routed observation exists to draw and to prove the decisions # frozen. - if not pending_clearance: + if not pending_clearance and not containment_requirements: route_plan = attach_reroute_ledger_delta( adopt_route_reservation_ledger( frozen_plan, diff --git a/tests/test_convergence_planner.py b/tests/test_convergence_planner.py index d79281726..08756ecff 100644 --- a/tests/test_convergence_planner.py +++ b/tests/test_convergence_planner.py @@ -58,10 +58,14 @@ FROZEN = ROOT / "tests" / "fixtures" / "hash_seed_determinism" -def _observe(path: Path): +def _observe(path: Path, *, allow_clearance_requirements: bool = False): graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) offsets = compute_station_offsets(graph) - observed = observe_route_edges(graph, station_offsets=offsets) + observed = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=allow_clearance_requirements, + ) return graph, offsets, observed @@ -369,7 +373,9 @@ def test_multiple_lines_share_the_target_entry_bundle_order() -> None: @pytest.mark.parametrize("name", ("seed_15.mmd", "seed_41.mmd")) def test_frozen_recovery_seeds_have_complete_planned_convergences(name: str) -> None: - graph, offsets, observed = _observe(FROZEN / name) + graph, offsets, observed = _observe( + FROZEN / name, allow_clearance_requirements=True + ) assert observed.plan.convergence_plans assert all(plan.owns_geometry for plan in observed.plan.convergence_plans) diff --git a/tests/test_reserved_claim_consumption.py b/tests/test_reserved_claim_consumption.py index 4e81dd6da..04b38ca02 100644 --- a/tests/test_reserved_claim_consumption.py +++ b/tests/test_reserved_claim_consumption.py @@ -52,8 +52,6 @@ def _corpus() -> list[Path]: # bound, so their failure to render is not itself a finding here. KNOWN_NOT_RENDERING = frozenset( { - "tests/fixtures/hash_seed_determinism/seed_15.mmd", - "tests/fixtures/hash_seed_determinism/seed_41.mmd", "tests/fixtures/invalid/backward_feed_rl.mmd", "tests/fixtures/invalid/merge_trunk_rightward_source.mmd", "tests/fixtures/invalid/mixed_entry_opposing.mmd", diff --git a/tests/test_route_plan.py b/tests/test_route_plan.py index 46d203a7a..594e2ba8d 100644 --- a/tests/test_route_plan.py +++ b/tests/test_route_plan.py @@ -95,10 +95,14 @@ """ -def _observe(path: Path): +def _observe(path: Path, *, allow_clearance_requirements: bool = False): graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) offsets = compute_station_offsets(graph) - observation = observe_route_edges(graph, station_offsets=offsets) + observation = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=allow_clearance_requirements, + ) return graph, observation.routes, observation.plan @@ -721,7 +725,7 @@ def test_invalid_caller_line_order_is_not_recorded_as_typed_provenance() -> None "name", ["seed_15.mmd", "seed_41.mmd", "seed_72.mmd", "seed_77.mmd"] ) def test_frozen_sources_have_canonical_plan_serialisation(name: str) -> None: - _graph, _routes, plan = _observe(FROZEN / name) + _graph, _routes, plan = _observe(FROZEN / name, allow_clearance_requirements=True) encoded = serialize_route_plan(plan) assert encoded == serialize_route_plan(plan) @@ -747,7 +751,9 @@ def test_frozen_source_plans_are_identical_across_supported_hash_seeds() -> None warnings.simplefilter('ignore') graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) observed = observe_route_edges( - graph, station_offsets=compute_station_offsets(graph) + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, ) result[path.name] = serialize_route_plan(observed.plan) print(json.dumps(result, sort_keys=True, separators=(',', ':'))) From 1a339fda70da119c6156c063882cabeb75053a29 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 11:03:31 +0100 Subject: [PATCH 011/158] refactor(routing): simplify strict settlement flow [skip ci] --- scripts/build_gallery.py | 2 +- scripts/gallery.yaml | 3 + src/nf_metro/layout/envelope_settlement.py | 11 +- src/nf_metro/layout/routing/convergences.py | 320 +++++++++----------- src/nf_metro/layout/routing/normalize.py | 31 +- src/nf_metro/render/svg.py | 38 +-- tests/test_envelope_settlement.py | 24 ++ 7 files changed, 201 insertions(+), 228 deletions(-) diff --git a/scripts/build_gallery.py b/scripts/build_gallery.py index a06521cab..c289b8363 100644 --- a/scripts/build_gallery.py +++ b/scripts/build_gallery.py @@ -397,7 +397,7 @@ def render_test_fixtures() -> None: mmd_path = TEST_FIXTURES_DIR / f"{stem}.mmd" if not mmd_path.exists(): continue - svg_path = RENDERS_DIR / f"{stem}.svg" + svg_path = RENDERS_DIR / f"{Path(stem).name}.svg" if _skip_render(mmd_path): _manifest[svg_path.name] = section continue diff --git a/scripts/gallery.yaml b/scripts/gallery.yaml index e631704c2..42daaf573 100644 --- a/scripts/gallery.yaml +++ b/scripts/gallery.yaml @@ -2187,6 +2187,9 @@ render_only: - { id: variant_calling_tuned, output: nf_variant_calling_tuned_icons } # Stems from tests/fixtures/ rendered into the "Test Fixtures" render-diff section. test_fixtures: + - hash_seed_determinism/seed_15 + - hash_seed_determinism/seed_41 + - hash_seed_determinism/seed_77 - multiline_labels - rnaseq_simple - genomeassembly_organellar diff --git a/src/nf_metro/layout/envelope_settlement.py b/src/nf_metro/layout/envelope_settlement.py index bc937c4a1..5d38c0660 100644 --- a/src/nf_metro/layout/envelope_settlement.py +++ b/src/nf_metro/layout/envelope_settlement.py @@ -50,11 +50,12 @@ Re-routing the settled geometry can produce a *different* ledger -- corridors appear, vanish, and change their required width -- so this function never iterates over successive ledgers. Each invocation settles exactly the ledger -it was handed. The renderer has one bounded exception around a provisional -convergence-clearance grant: it performs a strict fresh observation after the -grant, measures that observation's drawn containment once, and settles that -final ledger before a consuming re-route. No clearance requirement may be -published by either strict observation. +it was handed. The renderer has one bounded exception around strict drawn +geometry. After a provisional convergence-clearance grant, or when the +consuming re-route places a drawn corridor past its frozen edge, it freezes the +strict observation's measured containment and settles that final demand before +one consuming re-route. No clearance requirement may be published by the final +strict observation. Every row- and column-gap claim this stage is handed is therefore allocatable: the measurement bounds a boundary by the sections that lie wholly on each side diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index f1e7a1b8f..4a2667fd0 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -452,10 +452,7 @@ def _connect_route_endpoint( target, ] return True - if all( - abs(actual - expected) <= COORD_TOLERANCE - for actual, expected in zip(endpoint, target, strict=True) - ): + if endpoint_matches: route.points[-1] = target return False if ( @@ -4030,9 +4027,15 @@ def _settle_stacked_elbow_openings( """ lookup = gap_lookup_geometry(graph) settled = list(plans) + channel_cache: dict[int, tuple[ConvergencePlan, tuple[_PlanGapChannel, ...]]] = {} def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: - return _plan_gap_channels(plan, graph, lookup) + cached = channel_cache.get(id(plan)) + if cached is not None and cached[0] is plan: + return cached[1] + channels = _plan_gap_channels(plan, graph, lookup) + channel_cache[id(plan)] = (plan, channels) + return channels for plan_rank, plan in enumerate(tuple(settled)): for channel in tuple( @@ -4102,20 +4105,20 @@ def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: return tuple(settled) -_GapCarrierKey: TypeAlias = tuple[ - tuple[int, int | None], - float, - float, - float, - bool, - frozenset[str], - frozenset[str], -] +@dataclass(frozen=True, slots=True) +class _GapCarrierKey: + gap: tuple[int, int | None] + coordinate: float + y_lo: float + y_hi: float + down: bool + line_ids: frozenset[str] + source_junction_ids: frozenset[str] def _gap_carrier_key(channel: _PlanGapChannel) -> _GapCarrierKey: """Identity of one physical carrier described by one or more plans.""" - return ( + return _GapCarrierKey( channel.gap, channel.coordinate, channel.y_lo, @@ -4135,12 +4138,18 @@ def _repack_crowded_gap_channels( # noqa: C901 """Pack a connected set of crowded plan carriers into its usable gap.""" lookup = gap_lookup_geometry(graph) settled = list(plans) + channel_cache: dict[int, tuple[ConvergencePlan, tuple[_PlanGapChannel, ...]]] = {} + + def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: + cached = channel_cache.get(id(plan)) + if cached is not None and cached[0] is plan: + return cached[1] + channels = _plan_gap_channels(plan, graph, lookup) + channel_cache[id(plan)] = (plan, channels) + return channels + gaps = sorted( - { - channel.gap - for plan in plans - for channel in _plan_gap_channels(plan, graph, lookup) - }, + {channel.gap for plan in plans for channel in channels_of(plan)}, key=lambda gap: (gap[0], -1 if gap[1] is None else gap[1]), ) @@ -4149,18 +4158,18 @@ def _repack_crowded_gap_channels( # noqa: C901 defaultdict(list) ) for plan_rank, plan in enumerate(settled): - for channel in _plan_gap_channels(plan, graph, lookup): + for channel in channels_of(plan): if channel.gap == gap: grouped[_gap_carrier_key(channel)].append((plan_rank, channel)) keys = tuple( sorted( grouped, key=lambda key: ( - key[1], - sorted(key[5]), - sorted(key[6]), - key[2], - key[3], + key.coordinate, + sorted(key.line_ids), + sorted(key.source_junction_ids), + key.y_lo, + key.y_hi, ), ) ) @@ -4201,7 +4210,11 @@ def _repack_crowded_gap_channels( # noqa: C901 while pending: seed = min( pending, - key=lambda key: (key[1], sorted(key[5]), sorted(key[6])), + key=lambda key: ( + key.coordinate, + sorted(key.line_ids), + sorted(key.source_junction_ids), + ), ) component: set[_GapCarrierKey] = set() frontier = [seed] @@ -4276,7 +4289,7 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: feasible = True for key in ordered: coordinate = positions[key] - if abs(coordinate - key[1]) <= COORD_TOLERANCE: + if abs(coordinate - key.coordinate) <= COORD_TOLERANCE: continue for plan_rank, channel in grouped[key]: touched_ranks.add(plan_rank) @@ -4316,9 +4329,7 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: moved_channels = tuple( channel for plan_rank in touched_ranks - for channel in _plan_gap_channels( - candidate[plan_rank], graph, lookup - ) + for channel in channels_of(candidate[plan_rank]) ) if any( not _channel_inside_gap(graph, channel) @@ -4328,7 +4339,7 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: gap_channels = tuple( channel for plan in candidate - for channel in _plan_gap_channels(plan, graph, lookup) + for channel in channels_of(plan) if channel.gap == gap ) if any( @@ -4355,7 +4366,7 @@ def _clear_fixed_gap_flanks( graph: MetroGraph, fixed_channels: tuple[_PlanGapChannel, ...], *, - stacked_only: bool = False, + include_long_overlaps: bool = True, ) -> tuple[ConvergencePlan, ...]: """Move plan-owned flanks off fixed member channels on the same boundary.""" lookup = gap_lookup_geometry(graph) @@ -4369,9 +4380,11 @@ def _clear_fixed_gap_flanks( for fixed in fixed_channels if fixed.gap[0] == channel.gap[0] and ( - not stacked_only - and _landing_channels_crowd(channel, fixed) - or _stacked_elbow_channels_crowd(channel, fixed) + _stacked_elbow_channels_crowd(channel, fixed) + or ( + include_long_overlaps + and _landing_channels_crowd(channel, fixed) + ) ) ) if not obstacles: @@ -4666,6 +4679,64 @@ def _landing_trunk_flank_candidates( ) +def _column_clearance_requirement( + graph: MetroGraph, + lower_col: int, + row: int | None, + owner_id: str, + description: str, + *, + required_width: float = 0.0, + additional_width: float = 0.0, +) -> BoundaryClearanceRequirement | None: + boundary = lower_col + 1 + negative = [ + section + for section in graph.sections.values() + if section.grid_col + section.grid_col_span - 1 == lower_col + and ( + row is None + or section.grid_row <= row < section.grid_row + section.grid_row_span + ) + ] + positive = [ + section + for section in graph.sections.values() + if section.grid_col == boundary + and ( + row is None + or section.grid_row <= row < section.grid_row + section.grid_row_span + ) + ] + if not negative or not positive: + return None + negative_edge = max(section.bbox_x + section.bbox_w for section in negative) + positive_edge = min(section.bbox_x for section in positive) + live_width = measured_distance(negative_edge, positive_edge) + return BoundaryClearanceRequirement( + SettlementAxis.COLUMN, + boundary, + owner_id, + max(required_width, live_width + additional_width), + tuple( + sorted( + section.id + for section in negative + if measured_distance(section.bbox_x + section.bbox_w, negative_edge) + <= COORD_TOLERANCE + ) + ), + tuple( + sorted( + section.id + for section in positive + if measured_distance(section.bbox_x, positive_edge) <= COORD_TOLERANCE + ) + ), + description, + ) + + def _landing_trunk_flank_clearance_requirements( plans: tuple[ConvergencePlan, ...], graph: MetroGraph, curve_radius: float ) -> tuple[BoundaryClearanceRequirement, ...]: @@ -4719,52 +4790,17 @@ def _landing_trunk_flank_clearance_requirements( if gap is None: continue lower_col, row = gap - boundary = lower_col + 1 - negative = [ - section - for section in graph.sections.values() - if section.grid_col + section.grid_col_span - 1 == lower_col - and ( - row is None - or section.grid_row <= row < section.grid_row + section.grid_row_span - ) - ] - positive = [ - section - for section in graph.sections.values() - if section.grid_col == boundary - and ( - row is None - or section.grid_row <= row < section.grid_row + section.grid_row_span - ) - ] - if not negative or not positive: - continue - negative_edge = max(section.bbox_x + section.bbox_w for section in negative) - positive_edge = min(section.bbox_x for section in positive) - requirement = BoundaryClearanceRequirement( - SettlementAxis.COLUMN, - boundary, + requirement = _column_clearance_requirement( + graph, + lower_col, + row, str(landing_plan.system_id), - measured_distance(negative_edge, positive_edge) + shortfall, - tuple( - sorted( - section.id - for section in negative - if measured_distance(section.bbox_x + section.bbox_w, negative_edge) - <= COORD_TOLERANCE - ) - ), - tuple( - sorted( - section.id - for section in positive - if measured_distance(section.bbox_x, positive_edge) - <= COORD_TOLERANCE - ) - ), f"convergence system {landing_plan.system_id} runway", + additional_width=shortfall, ) + if requirement is None: + continue + boundary = lower_col + 1 current = widest.get(boundary) if current is None or requirement.required > current.required: widest[boundary] = requirement @@ -4790,60 +4826,17 @@ def _stacked_elbow_clearance_requirements( required = candidate + EDGE_TO_BUNDLE_CLEARANCE - left if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE: continue - boundary = lower_col + 1 - negative = [ - section - for section in graph.sections.values() - if section.grid_col + section.grid_col_span - 1 == lower_col - and ( - row is None - or section.grid_row - <= row - < section.grid_row + section.grid_row_span - ) - ] - positive = [ - section - for section in graph.sections.values() - if section.grid_col == boundary - and ( - row is None - or section.grid_row - <= row - < section.grid_row + section.grid_row_span - ) - ] - if not negative or not positive: - continue - negative_edge = max( - section.bbox_x + section.bbox_w for section in negative - ) - positive_edge = min(section.bbox_x for section in positive) - requirement = BoundaryClearanceRequirement( - SettlementAxis.COLUMN, - boundary, + requirement = _column_clearance_requirement( + graph, + lower_col, + row, str(plan.system_id), - max(required, measured_distance(negative_edge, positive_edge)), - tuple( - sorted( - section.id - for section in negative - if measured_distance( - section.bbox_x + section.bbox_w, negative_edge - ) - <= COORD_TOLERANCE - ) - ), - tuple( - sorted( - section.id - for section in positive - if measured_distance(section.bbox_x, positive_edge) - <= COORD_TOLERANCE - ) - ), f"convergence system {plan.system_id} stacked elbow clearance", + required_width=required, ) + if requirement is None: + continue + boundary = lower_col + 1 key = (boundary, str(plan.system_id)) current = widest.get(key) if current is None or requirement.required > current.required: @@ -4913,49 +4906,17 @@ def _gap_channel_clearance_requirements( left, right = column_gap_edges(graph, lower_col, lower_col + 1, row=None) if required <= measured_distance(left, right) + COORD_TOLERANCE: continue - boundary = lower_col + 1 - negative = [ - section - for section in graph.sections.values() - if section.grid_col + section.grid_col_span - 1 == lower_col - ] - positive = [ - section - for section in graph.sections.values() - if section.grid_col == boundary - ] - if not negative or not positive: - continue - negative_edge = max(section.bbox_x + section.bbox_w for section in negative) - positive_edge = min(section.bbox_x for section in positive) owner = next(plan for _rank, plan, _channel in reversed(ordered) if plan) - requirements.append( - BoundaryClearanceRequirement( - SettlementAxis.COLUMN, - boundary, - str(owner.system_id), - max(required, measured_distance(negative_edge, positive_edge)), - tuple( - sorted( - section.id - for section in negative - if measured_distance( - section.bbox_x + section.bbox_w, negative_edge - ) - <= COORD_TOLERANCE - ) - ), - tuple( - sorted( - section.id - for section in positive - if measured_distance(section.bbox_x, positive_edge) - <= COORD_TOLERANCE - ) - ), - f"convergence system {owner.system_id} gap channel clearance", - ) + requirement = _column_clearance_requirement( + graph, + lower_col, + None, + str(owner.system_id), + f"convergence system {owner.system_id} gap channel clearance", + required_width=required, ) + if requirement is not None: + requirements.append(requirement) return tuple(requirements) @@ -4971,13 +4932,12 @@ def _system_conflict( ) -> ConvergenceConflict | None: """Geometry this system's own plans cannot reconcile between themselves. - Only convergence-owned geometry is in question. Every other edge of a - planned route system carries a :class:`RouteMemberGeometryPlan`, which - ``build_route_system_emission_execution`` requires under - ``require_member_geometry``: a member with neither owner rejects the whole - system. So an edge outside :attr:`ConvergencePlan.resolved_member_edges` - is member-owned rather than unowned, and its corridor is settled against - the plans through the fixed member channels rather than contested here. + Only convergence-owned geometry is in question. Every other emitted + segment carries exact member ownership through a + :class:`RouteMemberGeometryPlan`; its declared corridor runs and gap + channels are fixed obstacles even when the same edge also belongs to the + convergence's semantic member path. Those segment-level obstacles settle + against the plans separately rather than being contested here. """ complete_pairwise_system = len(plans) == 2 opening_arms = tuple( @@ -5585,7 +5545,9 @@ def _settle_convergence_geometry( settled, graph, ctx.curve_radius, fixed_channels ) settled = _settle_reserved_trunk_axes(settled, graph, ctx, member_runs) - settled = _clear_fixed_gap_flanks(settled, graph, fixed_channels, stacked_only=True) + settled = _clear_fixed_gap_flanks( + settled, graph, fixed_channels, include_long_overlaps=False + ) settled = _settle_opposing_gap_flanks( settled, graph, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 8807df36c..5dc3f0cde 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1907,9 +1907,9 @@ def _reconcile_wholesale_bundle_corner_radii( if route.curve_radii is not None for corner_rank in range(1, len(route.points) - 1) } - constraints: defaultdict[ - tuple[int, int], list[tuple[tuple[int, int], float]] - ] = defaultdict(list) + constraints: defaultdict[tuple[int, int], list[tuple[tuple[int, int], float]]] = ( + defaultdict(list) + ) def unit( start: tuple[float, float], end: tuple[float, float] @@ -1941,8 +1941,7 @@ def wholesale_delta( dx = second_points[corner_rank][0] - first_points[corner_rank][0] dy = second_points[corner_rank][1] - first_points[corner_rank][1] tangent_shift = abs( - dx * (incoming[0] + outgoing[0]) - + dy * (incoming[1] + outgoing[1]) + dx * (incoming[0] + outgoing[0]) + dy * (incoming[1] + outgoing[1]) ) incoming_offset = abs(dx * outgoing[0] + dy * outgoing[1]) outgoing_offset = abs(dx * incoming[0] + dy * incoming[1]) @@ -2003,8 +2002,7 @@ def connect(first: tuple[int, int], second: tuple[int, int], delta: float) -> No expected = potentials[current] + delta if neighbour in potentials: consistent &= ( - abs(potentials[neighbour] - expected) - <= COORD_TOLERANCE_FINE + abs(potentials[neighbour] - expected) <= COORD_TOLERANCE_FINE ) continue potentials[neighbour] = expected @@ -2506,10 +2504,7 @@ def _reseat_concentric_flanking( (k - 1, offset_in, base_radius), (k, offset_out, radius_out), ): - if ( - 0 <= radius_idx < len(rp.curve_radii) - and radius_idx + 2 < len(pts) - ): + if 0 <= radius_idx < len(rp.curve_radii) and radius_idx + 2 < len(pts): rp.record_concentric_corner(radius_idx, offset, reference) prev_pt, corner_pt, next_pt = pts[radius_idx : radius_idx + 3] rp.curve_radii[radius_idx] = concentric_corner_radius_at( @@ -2784,11 +2779,11 @@ def _bundle_divergent_distinct_descents( if len(targets) == 1: port = ctx.graph.ports.get(next(iter(targets))) xs = [c.x for c in chans] - tight = max(xs) - min(xs) <= step * ( - len(by_line) - 1 - ) + COORD_TOLERANCE - if port is not None and port.is_entry and not ( - settle_frozen_arcs and tight and junction_owned + tight = max(xs) - min(xs) <= step * (len(by_line) - 1) + COORD_TOLERANCE + if ( + port is not None + and port.is_entry + and not (settle_frozen_arcs and tight and junction_owned) ): continue target_sets = { @@ -2811,9 +2806,7 @@ def _bundle_divergent_distinct_descents( # ranks imply. Those belong to the freeze: a plan holds its opening arc # from the freeze onward, so a group carrying one can be given a shared # arc centre there and nowhere later. - if frozen and not ( - settle_frozen_arcs and tight and junction_owned - ): + if frozen and not (settle_frozen_arcs and tight and junction_owned): continue if ( any( diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index 849d5a2ad..83c6c1755 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -1309,13 +1309,13 @@ def _settle_render_geometry( the reserved band back rather than deriving one from the row edges the translation just moved. - Settlement runs exactly once, against one ledger. Re-routing publishes a - different ledger -- corridors appear, vanish, and change their required - width -- so settling again against it would be a fixpoint search over a - moving constraint set rather than an allocation against fixed demand. The - plan published here is therefore the frozen ledger projected through the - translations, and the closing guard measures that; where the re-routed - ledger's gap demand differs from it, + Each settlement consumes frozen demand rather than iterating toward a + fixpoint over successive ledgers. One bounded final grant is permitted for + strict geometry: a fresh observation may publish convergence clearance or + reveal that its drawn corridor overruns a frozen edge, and that measured + demand is settled before one consuming re-route. The plan published here + is the frozen final ledger projected through the translations, and the + closing guard measures that; where the re-routed ledger's gap demand differs, :func:`attach_reroute_ledger_delta` records the difference as a non-blocking diagnostic, so a demand this stage cannot chase is named rather than invisible. @@ -1447,7 +1447,7 @@ def _reconcile_carried_ports( reanchor_junctions(graph) station_offsets = compute_station_offsets(graph, offset_step=offset_step) routes, route_plan = _route(station_offsets, allow_clearance_requirements=True) - preclearance_settlement: EnvelopeSettlement | None = None + applied_settlements: list[EnvelopeSettlement] = [] if route_plan.boundary_clearance_requirements: requested_plan = route_plan clearance_plan = replace( @@ -1460,6 +1460,7 @@ def _reconcile_carried_ports( live_graph, requested_plan.boundary_clearance_requirements ), ) + applied_settlements.append(preclearance_settlement) station_offsets, routes, route_plan = _resettle( reservation_translations=preclearance_settlement.coordinate_translations ) @@ -1469,6 +1470,7 @@ def _reconcile_carried_ports( "clearance requirements" ) corridor_settlement = settle_route_envelopes(graph, route_plan) + applied_settlements.append(corridor_settlement) if corridor_settlement.translations: station_offsets, routes, route_plan = _resettle( route_plan, @@ -1477,17 +1479,6 @@ def _reconcile_carried_ports( *corridor_settlement.coordinate_translations, ), ) - preclearance_settlement = EnvelopeSettlement( - ( - *preclearance_settlement.translations, - *corridor_settlement.translations, - ), - corridor_settlement.shortfalls, - ( - *preclearance_settlement.coordinate_translations, - *corridor_settlement.coordinate_translations, - ), - ) effective_strict = (graph.strict or bool(graph._fold_compressed_sections)) and not ( graph.permissive ) @@ -1530,17 +1521,16 @@ def _measure_clearance( graph, frozen_plan.boundary_clearance_requirements ) - grant_settlement = preclearance_settlement settlement = settle_route_envelopes( graph, frozen_plan, clearance=_measure_clearance ) + applied_settlements.append(settlement) if settlement.translations or _ledger_changes_live_derived_band( graph, frozen_plan, frozen_routes, settlement.coordinate_translations, ): - grant_settlement = settlement pending_clearance = bool(frozen_plan.boundary_clearance_requirements) station_offsets, routes, routed_plan = _resettle( frozen_plan, @@ -1569,6 +1559,7 @@ def _measure_clearance( live_graph, containment_requirements ), ) + applied_settlements.append(settlement) station_offsets, routes, consumed_plan = _resettle( granted_plan, settlement.coordinate_translations ) @@ -1630,9 +1621,8 @@ def _measure_clearance( # from, would spend clearance the corridor has already been promised. if carried_ports: hold_port_anchored_edges(graph, carried_from, carried_ports) - route_plan = attach_settlement_diagnostics(route_plan, settlement) - if grant_settlement is not None and grant_settlement is not settlement: - route_plan = attach_settlement_diagnostics(route_plan, grant_settlement) + for applied_settlement in applied_settlements: + route_plan = attach_settlement_diagnostics(route_plan, applied_settlement) route_polylines = [apply_route_offsets(route, station_offsets) for route in routes] assert_reservations_are_settled( graph, diff --git a/tests/test_envelope_settlement.py b/tests/test_envelope_settlement.py index 9446cdfb0..9a19d2d42 100644 --- a/tests/test_envelope_settlement.py +++ b/tests/test_envelope_settlement.py @@ -80,6 +80,30 @@ REPORT_HO = ROOT / "tests" / "fixtures" / "route_reservations" / "reportho.metro" REGRESSIONS = ROOT / "tests" / "fixtures" / "regressions" + +def test_drawn_corridor_grant_accounts_for_recentering( + monkeypatch: pytest.MonkeyPatch, +) -> None: + reservation = mock.Mock(region=RowGapRegion(0, 1), claims=()) + plan = mock.Mock(reservations=(reservation,)) + realised = mock.Mock(available_width=50.0) + containment = mock.Mock(positive_side_slack=-3.0) + monkeypatch.setattr( + envelope_settlement, "realise_reservation", lambda *_args: realised + ) + monkeypatch.setattr( + envelope_settlement, + "drawn_corridor_containment", + lambda *_args: containment, + ) + + requirements = envelope_settlement.drawn_corridor_clearance_requirements( + mock.Mock(), plan, () + ) + + assert requirements[0].required == pytest.approx(56.0) + + # Fixtures whose reservations carry a capacity deficit on unsettled geometry, so # settlement has real work to do. Every member's deficit falls on a row # boundary, which is where the corpus puts one; ``COLUMN_DEFICIT_CORPUS`` carries From f8cfd3faca410ab11da3179d25a3e4e06a399337 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 13:31:55 +0100 Subject: [PATCH 012/158] settle strict seed channel ownership [skip ci] --- src/nf_metro/layout/routing/convergences.py | 276 ++++++++++++++++-- src/nf_metro/layout/routing/exit_turns.py | 93 ++++++ .../layout/routing/inter_section_handlers.py | 1 + .../layout/routing/member_geometry.py | 90 ++++-- src/nf_metro/layout/routing/normalize.py | 157 ++++++++-- src/nf_metro/layout/routing/offsets.py | 7 +- tests/test_final_convergence_feasibility.py | 5 +- 7 files changed, 561 insertions(+), 68 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 76b325fec..a8a74db3e 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -77,11 +77,13 @@ inter_row_gap_upper_row, iter_horizontal_trunks, merge_fanout_pivot_reference, + resolve_section, ) from nf_metro.layout.routing.context import ( _EdgeKey, _resolve_section_colrow, _RoutingCtx, + _tb_x_offset, ) from nf_metro.layout.routing.member_geometry import ( MemberGeometryExecution, @@ -1636,9 +1638,12 @@ def _opposing_landing_approaches( def _reconcile_landing_handedness( - plans: tuple[ConvergencePlan, ...], graph: MetroGraph + plans: tuple[ConvergencePlan, ...], ctx: _RoutingCtx ) -> tuple[ConvergencePlan, ...]: """Derive each planned corner from its settled cross-run and approach.""" + if not isinstance(getattr(ctx, "graph", None), MetroGraph): + return plans + graph = ctx.graph reconciled: list[ConvergencePlan] = [] for plan in plans: landings: list[ConvergenceLanding] = [] @@ -1649,10 +1654,35 @@ def _reconcile_landing_handedness( and landing.bypass and landing.opening_turn_segment is not None and not _points_coincide(*landing.opening_turn_segment) + and point_to_polyline_distance( + landing.join_point, landing.opening_turn_segment + ) + <= COORD_TOLERANCE ): incoming = _direction(*landing.opening_turn_segment) if direction_axis(incoming) is not landing.approach_axis: handedness = turn_handedness(incoming, landing.approach_direction) + else: + source = graph.stations[landing.source_junction_id] + opening_x = landing.opening_turn_segment[0][0] + section = resolve_section(graph, source, prefer_upstream=True) + source_x = source.x + ( + _tb_x_offset( + ctx, + source.id, + landing.edge.line_id, + section.id, + ) + if section is not None and section.direction in ("TB", "BT") + else 0.0 + ) + if abs(source_x - opening_x) > COORD_TOLERANCE: + source_run = ( + Direction.R if opening_x > source_x else Direction.L + ) + handedness = turn_handedness( + source_run, landing.approach_direction + ) elif ( handedness is not None and plan.trunk_axis is not None @@ -1667,17 +1697,46 @@ def _reconcile_landing_handedness( handedness = turn_handedness(incoming, approach) elif handedness is not None and not landing.bypass: source = graph.stations[landing.source_junction_id] - if landing.approach_axis is DemandAxis.X: + exit_membership = ( + ctx.exit_turns.membership_for_edge(landing.edge) + if ctx.exit_turns is not None + else None + ) + assignment = ( + exit_membership.assignment + if exit_membership is not None + else None + ) + uses_exit_handedness = ( + assignment is not None + and assignment.turn_direction is landing.approach_direction + and assignment.handedness is not None + ) + if uses_exit_handedness: + assert assignment is not None + handedness = assignment.handedness + elif landing.approach_axis is DemandAxis.X: start = (landing.join_point[0], source.y) end = landing.join_point else: + section = resolve_section(graph, source, prefer_upstream=True) + source_x = source.x + ( + _tb_x_offset( + ctx, + source.id, + landing.edge.line_id, + section.id, + ) + if section is not None and section.direction in ("TB", "BT") + else 0.0 + ) turn_y = ( landing.join_point[1] - landing.minimum_runway * landing.approach_direction.sign ) - start = (source.x, turn_y) + start = (source_x, turn_y) end = (landing.join_point[0], turn_y) - if ( + if not uses_exit_handedness and ( abs(start[0] - end[0]) > COORD_TOLERANCE or abs(start[1] - end[1]) > COORD_TOLERANCE ): @@ -1772,7 +1831,6 @@ def _move_trunk_flank( landings.append( replace( landing, - minimum_runway=abs(landing.join_point[0] - coordinate), opening_turn_coordinate=coordinate, opening_turn_segment=( (coordinate, landing.opening_turn_segment[0][1]), @@ -2594,6 +2652,139 @@ def _settle_shared_source_openings( return tuple(settled) +def _settle_shared_terminal_openings( + plans: tuple[ConvergencePlan, ...], ctx: _RoutingCtx +) -> tuple[ConvergencePlan, ...]: + """Fuse same-line approaches that enter one terminal in one direction.""" + groups: defaultdict[tuple[str, str, Direction], list[tuple[int, int]]] = ( + defaultdict(list) + ) + for plan_rank, plan in enumerate(plans): + for landing_rank, landing in enumerate(plan.landings): + if ( + landing.approach_axis is not DemandAxis.X + or landing.opening_turn_coordinate is None + or landing.approach_direction is None + or _has_legacy_exit_geometry(ctx, landing) + ): + continue + groups[ + landing.edge.line_id, + ctx.merge.entry_port_for.get(landing.edge.target, landing.edge.target), + landing.approach_direction, + ].append((plan_rank, landing_rank)) + + settled = list(plans) + for (_line_id, target_id, _direction), members in groups.items(): + coordinates = [ + settled[plan_rank].landings[landing_rank].opening_turn_coordinate + for plan_rank, landing_rank in members + ] + coordinates = [ + coordinate for coordinate in coordinates if coordinate is not None + ] + if ( + len(coordinates) < 2 + or max(coordinates) - min(coordinates) + > EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE + ): + continue + target_x = ctx.graph.stations[target_id].x + reference = min(coordinates, key=lambda value: abs(value - target_x)) + for plan_rank, landing_rank in members: + landing = settled[plan_rank].landings[landing_rank] + reseated = _reseat_landing_opening(landing, reference, ctx.curve_radius) + if reseated is None: + continue + landings = list(settled[plan_rank].landings) + landings[landing_rank] = reseated + settled[plan_rank] = replace(settled[plan_rank], landings=tuple(landings)) + return tuple(settled) + + +def _fuse_shared_terminal_gap_channels( + plans: tuple[ConvergencePlan, ...], ctx: _RoutingCtx +) -> tuple[ConvergencePlan, ...]: + """Seat co-directed same-line terminal legs on one physical carrier.""" + if not isinstance(getattr(ctx, "graph", None), MetroGraph): + return plans + graph = ctx.graph + lookup = gap_lookup_geometry(graph) + grouped: defaultdict[ + tuple[str, str, bool, tuple[int, int | None]], list[tuple[int, _PlanGapChannel]] + ] = defaultdict(list) + for plan_rank, plan in enumerate(plans): + for channel in _plan_gap_channels(plan, graph, lookup): + if len(channel.line_ids) != 1: + continue + endpoint_ids = { + ctx.merge.entry_port_for.get(landing.edge.target, landing.edge.target) + for landing in plan.landings + if landing.member_id in channel.claimant_member_ids + and not _has_legacy_exit_geometry(ctx, landing) + and ( + not landing.long_haul + or landing.member_id == plan.primary_trunk_member_id + ) + } + for endpoint_id in endpoint_ids: + grouped[ + next(iter(channel.line_ids)), + endpoint_id, + channel.down, + channel.gap, + ].append((plan_rank, channel)) + + settled = list(plans) + for (_line_id, endpoint_id, _down, _gap), members in grouped.items(): + if len(members) < 2: + continue + coordinates = [channel.coordinate for _plan_rank, channel in members] + if ( + max(coordinates) - min(coordinates) + > EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE + ): + continue + endpoint = graph.stations.get(endpoint_id) + if endpoint is None: + continue + reference = min(coordinates, key=lambda value: abs(value - endpoint.x)) + for plan_rank, channel in members: + plan = settled[plan_rank] + if ( + channel.flank_rank is not None + and plan.primary_trunk_member_id in channel.claimant_member_ids + ): + plan = _move_trunk_flank(plan, channel.flank_rank, reference) + else: + if any( + landing.long_haul + for landing in plan.landings + if landing.member_id in channel.claimant_member_ids + ): + continue + moved = _move_landing_opening( + plan, channel.claimant_member_ids, reference, ctx.curve_radius + ) + if moved is None: + continue + plan = moved + settled[plan_rank] = plan + return tuple(settled) + + +def _has_legacy_exit_geometry( + ctx: _RoutingCtx, landing: ConvergenceLanding +) -> bool: + """Whether an upstream legacy exit template fixes this feeder opening.""" + membership = ( + ctx.exit_turns.membership_for_edge(landing.edge) + if getattr(ctx, "exit_turns", None) is not None + else None + ) + return membership is not None and membership.plan.legacy_reason is not None + + def _settle_opposing_landing_channels( plans: tuple[ConvergencePlan, ...], graph: MetroGraph, @@ -3662,6 +3853,9 @@ def _settle_reserved_trunk_axes( ctx: _RoutingCtx, member_runs: tuple[_CotravellingRun, ...], ) -> tuple[ConvergencePlan, ...]: + reserved_bands = getattr(ctx, "reserved_bands", None) + if reserved_bands is None: + return plans settled: list[ConvergencePlan] = [] for plan in plans: axis = plan.trunk_axis @@ -3676,7 +3870,7 @@ def _settle_reserved_trunk_axes( if axis is None or axis.axis is not DemandAxis.X or primary is None: settled.append(plan) continue - band = ctx.reserved_bands.claimed_row_band( + band = reserved_bands.claimed_row_band( primary.edge.source, primary.edge.target, primary.edge.line_id ) coordinate = band.hold(axis.coordinate) if band is not None else axis.coordinate @@ -3807,6 +4001,11 @@ def resident_channels(current_rank: int) -> list[_PlanGapChannel]: ), ] + def channels_crowd(channel: _PlanGapChannel, obstacle: _PlanGapChannel) -> bool: + if channel.line_ids.isdisjoint(obstacle.line_ids): + return _gap_channels_crowd(channel, obstacle) + return _landing_channels_crowd(channel, obstacle) + for current_rank, _plan in enumerate(ordered): resident = resident_channels(current_rank) plan = settled[current_rank] @@ -3822,7 +4021,7 @@ def resident_channels(current_rank: int) -> list[_PlanGapChannel]: obstacles = tuple( obstacle for obstacle in resident - if any(_landing_channels_crowd(channel, obstacle) for channel in seated) + if any(channels_crowd(channel, obstacle) for channel in seated) ) if not seated or not obstacles: continue @@ -3900,7 +4099,7 @@ def landing_feasible(candidate_coordinate: float) -> bool: if channel.flank_rank == flank_rank ) if not moved_channels or any( - _landing_channels_crowd(channel, obstacle) + channels_crowd(channel, obstacle) for channel in moved_channels for obstacle in resident ): @@ -3938,9 +4137,7 @@ def landing_feasible(candidate_coordinate: float) -> bool: ): continue obstacles = tuple( - obstacle - for obstacle in resident - if _landing_channels_crowd(channel, obstacle) + obstacle for obstacle in resident if channels_crowd(channel, obstacle) ) if not obstacles: continue @@ -3983,8 +4180,7 @@ def landing_feasible(candidate_coordinate: float) -> bool: None, ) if moved_channel is None or any( - _landing_channels_crowd(moved_channel, obstacle) - for obstacle in resident + channels_crowd(moved_channel, obstacle) for obstacle in resident ): continue candidate = tuple( @@ -4455,7 +4651,7 @@ def _reverse_rescue_gap_flanks( enabled: bool, ) -> tuple[ConvergencePlan, ...]: """Give an earlier movable plan a chance to clear a later fixed carrier.""" - if not enabled or len(plans) < 2: + if not enabled or len(plans) < 2 or not isinstance(graph, MetroGraph): return plans rescued = _settle_opposing_gap_flanks( tuple(reversed(plans)), @@ -4909,9 +5105,9 @@ def _gap_channel_clearance_requirements( owner = next( (plan for _rank, plan, _channel in reversed(ordered) if plan), None ) - owner_system_id = ( - owner.system_id if owner is not None else ordered[-1][2].system_id - ) + if owner is None: + continue + owner_system_id = owner.system_id requirement = _column_clearance_requirement( graph, lower_col, @@ -4975,6 +5171,29 @@ def _system_conflict( second_delta = second_plan.trunk_axis.coordinate - second_source.x lines = (first.edge.line_id, second.edge.line_id) if first_delta * second_delta < 0: + first_exit = ( + ctx.exit_turns.membership_for_edge(first.edge) + if ctx.exit_turns is not None + else None + ) + second_exit = ( + ctx.exit_turns.membership_for_edge(second.edge) + if ctx.exit_turns is not None + else None + ) + if ( + first_exit is not None + and second_exit is not None + and first_exit.plan.id == second_exit.plan.id + and first_exit.plan.legacy_reason is not None + and first.opening_turn_segment is not None + and second.opening_turn_segment is not None + and _points_coincide( + first.opening_turn_segment[0], + second.opening_turn_segment[0], + ) + ): + continue # The arms turn on one coordinate and then open opposite ways, # so the shared turn is the geometry that cannot be resolved. assert first.opening_turn_segment is not None @@ -5464,10 +5683,10 @@ def build_convergence_plan_execution( ), ) system_plans = _reconcile_continuation_ownership(system_plans) - system_plans = _reconcile_landing_handedness(system_plans, graph) system_plans = tuple( _reconcile_bypass_landings(plan, ctx) for plan in system_plans ) + system_plans = _reconcile_landing_handedness(system_plans, ctx) except ConvergenceOwnershipConflict as error: reason = str(error) system_plans = tuple( @@ -5515,6 +5734,8 @@ def _settle_convergence_geometry( settled = _settle_shared_trunk_channels(settled, ctx.curve_radius) settled = _settle_shared_opening_pivots(settled, graph) settled = _settle_shared_source_openings(settled, ctx.curve_radius) + settled = _settle_shared_terminal_openings(settled, ctx) + settled = _fuse_shared_terminal_gap_channels(settled, ctx) settled = _settle_opposing_landing_channels( settled, graph, exit_turn_plans, ctx.curve_radius ) @@ -5532,7 +5753,7 @@ def _settle_convergence_geometry( ), ) settled = _reconcile_continuation_ownership(settled) - settled = _reconcile_landing_handedness(settled, graph) + settled = _reconcile_landing_handedness(settled, ctx) settled = _settle_opposing_gap_flanks( settled, graph, @@ -5568,8 +5789,9 @@ def _settle_convergence_geometry( settled = _repack_crowded_gap_channels( settled, graph, ctx.curve_radius, fixed_channels ) - settled = _reconcile_landing_handedness(settled, graph) - return tuple(_reconcile_bypass_landings(plan, ctx) for plan in settled) + settled = _fuse_shared_terminal_gap_channels(settled, ctx) + settled = tuple(_reconcile_bypass_landings(plan, ctx) for plan in settled) + return _reconcile_landing_handedness(settled, ctx) def _settle_eligible( @@ -6109,7 +6331,9 @@ def _assert_landing_geometry( f"planned {landing.approach_direction.value} approach, " f"{landing.corner_handedness} handedness, and " f"{landing.minimum_runway:g}px runway but emitted " - f"{direction.value}, {handedness}, and {runway:g}px" + f"{direction.value}, {handedness}, and {runway:g}px " + f"(join={landing.join_point}, opening={landing.opening_turn_coordinate}, " + f"points={route.points})" ) if landing.opening_turn_coordinate is not None: from nf_metro.layout.routing.normalize import _opening_fanout_descent @@ -6274,6 +6498,14 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: key: _EdgeKey = (route.edge.source, route.edge.target, route.line_id) if key in ctx.merge.branch_edges: _land_feeder_on_run(route, run, ctx) + if landing.opening_turn_coordinate is not None: + _seat_merge_feeder_opening( + route, + landing.opening_turn_coordinate, + ctx.graph, + planned=True, + carry_tail=True, + ) _bake_route(route, ctx) if not _connect_bypass_landing(route, landing, ctx): _connect_route_endpoint(route, landing.join_point, ctx) diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index 0910a85d2..3266701a2 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -65,6 +65,7 @@ vertical_direction, ) from nf_metro.layout.routing.context import _RoutingCtx, _tb_x_offset +from nf_metro.layout.routing.corners import concentric_corner_radius_at from nf_metro.layout.routing.families import ( BYPASS_ROUTE_FAMILY_VALUES, RouteFamilyId, @@ -3475,6 +3476,98 @@ def planned_exit_turn_corner_offsets( return offset, offset if shares_terminal_destination_entry else 0.0 +def seat_planned_exit_turn_continuation_flanks( + routes: Iterable[RoutedPath], + ctx: _RoutingCtx, +) -> None: + """Seat shared-terminal continuations in their planned source-lane frame.""" + if ctx.exit_turns is None: + return + cohorts: defaultdict[ + tuple[ExitTurnPlanId, EndpointGroupId, Direction, Direction], + list[tuple[RoutedPath, int, float]], + ] = defaultdict(list) + for route in routes: + if ( + route.exit_turn_plan_id is None + or route.exit_turn_segment_rank is None + or route.fan_plan_id is not None + or route.fan_route_emitter is not None + ): + continue + membership = ctx.exit_turns.membership_for_edge(route.edge) + if ( + membership is None + or membership.assignment is None + or membership.plan.disposition is not ExitTurnDisposition.PLANNED + or membership.assignment.planned_family_id.value + not in BYPASS_ROUTE_FAMILY_VALUES + ): + continue + offsets = planned_exit_turn_corner_offsets(membership) + rank = route.exit_turn_segment_rank + if offsets is None or rank + 3 >= len(route.points): + continue + incoming = segment_direction(route.points[rank], route.points[rank + 1]) + outgoing = segment_direction(route.points[rank + 1], route.points[rank + 2]) + if ( + incoming is None + or outgoing is None + or direction_axis(incoming) is direction_axis(outgoing) + ): + continue + cohorts[ + ( + membership.plan.id, + membership.assignment.entry_group_id, + incoming, + outgoing, + ) + ].append((route, rank, offsets[1])) + + for (_plan_id, _entry_group_id, incoming, outgoing), cohort in cohorts.items(): + if len(cohort) < 2 or not any( + abs(offset) > COORD_TOLERANCE for _route, _rank, offset in cohort + ): + continue + reference = next( + ( + (route, rank) + for route, rank, offset in cohort + if abs(offset) <= COORD_TOLERANCE + ), + None, + ) + if reference is None: + continue + reference_route, reference_rank = reference + reference_radius = ( + reference_route.curve_radii[reference_rank] + if reference_route.curve_radii is not None + and reference_rank < len(reference_route.curve_radii) + else ctx.curve_radius + ) + continuation_axis = direction_axis(outgoing) + lateral_index = 1 if continuation_axis is DemandAxis.X else 0 + reference_coordinate = reference_route.points[reference_rank + 1][lateral_index] + for route, rank, offset in cohort: + lateral_delta = -offset * outgoing.sign / incoming.sign + coordinate = reference_coordinate + lateral_delta + for point_rank in (rank + 1, rank + 2): + point = list(route.points[point_rank]) + point[lateral_index] = coordinate + route.points[point_rank] = (point[0], point[1]) + if route.curve_radii is not None and rank < len(route.curve_radii): + route.record_concentric_corner(rank, offset, reference_radius) + route.curve_radii[rank] = concentric_corner_radius_at( + route.points[rank], + route.points[rank + 1], + route.points[rank + 2], + offset, + reference_radius, + ) + + def consume_exit_turn_route( route: RoutedPath, family_id: RouteFamilyId, diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 39260e48e..c9be58b3e 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -7019,6 +7019,7 @@ def _route_right_entry_wrap(f: _InterFacts) -> RoutedPath: slot_index=0, n_slots=1, ) + _declare_placed_channels(route, ctx) return route diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 42c483140..c27d9733a 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -41,7 +41,7 @@ ) from nf_metro.layout.routing.context import SettledExitTurn, _RoutingCtx from nf_metro.layout.routing.corners import concentric_corner_radius_at -from nf_metro.layout.routing.families import RouteFamilyId +from nf_metro.layout.routing.families import BYPASS_ROUTE_FAMILIES, RouteFamilyId from nf_metro.layout.routing.inter_section_handlers import ( _build_inter_facts, _route_inter_section, @@ -1350,6 +1350,23 @@ def _claim_for_materialized_channel( ) +def _claims_share_carrier( + first: PreliminaryGapChannelClaim, + second: PreliminaryGapChannelClaim, +) -> bool: + """Whether two claims describe the same physical semantic channel.""" + return ( + first.system_id == second.system_id + and first.gap == second.gap + and not first.line_ids.isdisjoint(second.line_ids) + and spans_share_corridor(first.y_lo, first.y_hi, second.y_lo, second.y_hi) + and ( + not first.source_junction_ids.isdisjoint(second.source_junction_ids) + or not first.connector_ids.isdisjoint(second.connector_ids) + ) + ) + + def _allocate_member_gap_channels( candidates: tuple[_MemberCandidate, ...], preliminary_claims: tuple[PreliminaryGapChannelClaim, ...], @@ -1532,6 +1549,7 @@ def build_member_geometry_execution( reservation_ids = reservation_ids_by_member or {} candidates: list[_MemberCandidate] = [] context_routes: list[RoutedPath] = [] + context_candidates: list[_MemberCandidate] = [] failures: dict[RouteSystemId, str] = {} edges_by_system: dict[RouteSystemId, list[ResolvedEdge]] = defaultdict(list) for resolved in scaffold.edge_order: @@ -1550,6 +1568,19 @@ def build_member_geometry_execution( ) if context is not None: context_routes.append(context) + context_candidates.append( + _MemberCandidate( + context, + family_by_edge[resolved], + system_id, + semantic_route_id( + "member-channel-carrier", + resolved.source, + resolved.target, + ), + tuple(scaffold.connector_ids_for_edge(resolved)), + ) + ) continue if key in ctx.skip_edges: continue @@ -1592,18 +1623,6 @@ def build_member_geometry_execution( # makes that rank permanent, so the immutable convergence strokes travel # with the candidates rather than being discovered after the fact. member_population = [*candidate_routes, *context_routes] - deferred_exit_turn_ownership: list[ - tuple[RoutedPath, str | None, int | None] - ] = [] - if settled_exit_turn_plan_ids: - for route in candidate_routes: - if route.exit_turn_plan_id not in settled_exit_turn_plan_ids: - continue - deferred_exit_turn_ownership.append( - (route, route.exit_turn_axis_id, route.exit_turn_segment_rank) - ) - route.exit_turn_axis_id = None - route.exit_turn_segment_rank = None allocation_population = ( [*ctx.built_routes[built_start:], *context_routes] if pending_exit_turn_plan_ids @@ -1621,10 +1640,28 @@ def build_member_geometry_execution( complete_path_route_ids = frozenset( id(route) for route in complete_path_population ) + movable_gap_exit_plan_ids = ( + frozenset( + plan.id + for plan in ctx.exit_turns.plans + if plan.id in pending_exit_turn_plan_ids + and any( + assignment.planned_family_id + in { + *BYPASS_ROUTE_FAMILIES, + RouteFamilyId.BOTTOM_EXIT_JUNCTION_RIGHT_LANDINGS, + } + for assignment in plan.assignments + ) + ) + if ctx.exit_turns is not None + else frozenset() + ) _materialize_gap_slots( allocation_population, ctx, - movable_exit_plan_ids=pending_exit_turn_plan_ids, + movable_exit_plan_ids=movable_gap_exit_plan_ids, + deferred_exit_plan_ids=pending_exit_turn_plan_ids, ) _settle_entry_wrap_leadouts( normalization_population, @@ -1632,6 +1669,11 @@ def build_member_geometry_execution( movable_route_ids=complete_path_route_ids, ) _materialize_trunk_slots(normalization_population, ctx) + from nf_metro.layout.routing.exit_turns import ( + seat_planned_exit_turn_continuation_flanks, + ) + + seat_planned_exit_turn_continuation_flanks(normalization_population, ctx) # Trunk-slot materialization compares dip groups, never two flows that # entered one inter-row gap from opposite rows, so counter-running # trunks leave it within bundle pitch of each other and read as one @@ -1640,7 +1682,11 @@ def build_member_geometry_execution( # running after emission, which skips a plan-owned trunk. _separate_opposing_inter_row_trunks(normalization_population, ctx) _reconcile_port_peeloff_risers(normalization_population, ctx) - _coincide_same_line_tracks(normalization_population, ctx) + _coincide_same_line_tracks( + normalization_population, + ctx, + movable_exit_plan_ids=movable_gap_exit_plan_ids, + ) _coincide_fanout_opening_descents( normalization_population, ctx, settle_frozen_arcs=True ) @@ -1655,6 +1701,15 @@ def build_member_geometry_execution( preliminary_gap_claims, failures, ) + context_claims = tuple( + _claim_for_materialized_channel(item) + for item in _materialized_channels(tuple(context_candidates), ctx) + if not any( + _claims_share_carrier(_claim_for_materialized_channel(item), existing) + for existing in eligible_claims + ) + ) + eligible_claims = (*eligible_claims, *context_claims) _allocate_preliminary_gap_claims( tuple(candidates), eligible_claims, @@ -1717,14 +1772,13 @@ def build_member_geometry_execution( fixed_segment_keys=settled_tail_segments, secondary_may_yield_at_shared_source=True, ) - for route, axis_id, segment_rank in deferred_exit_turn_ownership: - route.exit_turn_axis_id = axis_id - route.exit_turn_segment_rank = segment_rank opposing_movable_route_ids = frozenset( id(route) for route in candidate_routes if route.exit_turn_plan_id not in pending_exit_turn_plan_ids and route.exit_turn_axis_id is None + and route.fan_plan_id is None + and route.fan_route_emitter is None ) _separate_declared_opposing_gap_bundles( normalization_population, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 1cdd8c6fa..4f3d40259 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -84,7 +84,10 @@ wholesale_corner_translation, widest_coincident_radius, ) -from nf_metro.layout.routing.families import RouteFamilyId +from nf_metro.layout.routing.families import ( + BYPASS_ROUTE_FAMILY_VALUES, + RouteFamilyId, +) from nf_metro.layout.routing.offsets import ( cross_row_convergence_channel_order, ) @@ -645,6 +648,45 @@ def _channel_coordinate_is_frozen(channel: _VChannel) -> bool: ) +def _pending_exit_turn_owns_channel(channel: _VChannel, ctx: _RoutingCtx) -> bool: + """Whether deferred exit-turn allocation may place this gap channel.""" + route = channel.route + if route.exit_turn_family_id in BYPASS_ROUTE_FAMILY_VALUES: + return True + if ctx.exit_turns is None: + return False + membership = ctx.exit_turns.membership_for_edge(route.edge) + assignment = membership.assignment if membership is not None else None + if ( + assignment is None + or assignment.run_direction is None + or assignment.turn_direction is None + or len(route.points) < 3 + ): + return False + before, corner, after = route.points[:3] + return ( + channel.idx == 1 + and segment_direction(before, corner) is assignment.run_direction + and segment_direction(corner, after) is assignment.turn_direction + ) + + +def _shares_terminal_carrier( + route: RoutedPath, + channel: _VChannel, + routes: Iterable[RoutedPath], +) -> bool: + return any( + other is not route + and other.edge.target == route.edge.target + and other.line_id == route.line_id + and spans_share_corridor(channel.y_lo, channel.y_hi, y_lo, y_hi) + for other in routes + for _rank, _x, y_lo, y_hi, _down in iter_vertical_segments(other) + ) + + def _fused_sibling_spans( routes: list[RoutedPath], chans: list[_VChannel] ) -> list[tuple[float, float]]: @@ -677,6 +719,7 @@ def _materialize_gap_slots( ctx: _RoutingCtx, *, movable_exit_plan_ids: frozenset[ExitTurnPlanId] = frozenset(), + deferred_exit_plan_ids: frozenset[ExitTurnPlanId] = frozenset(), ) -> None: """Resolve every declared :class:`GapSlot` to a concentric channel X. @@ -721,14 +764,23 @@ def _materialize_gap_slots( exit_plan_is_movable = ( rp.exit_turn_plan_id is not None and rp.exit_turn_plan_id in movable_exit_plan_ids + and _pending_exit_turn_owns_channel(ch, ctx) ) exit_plan_is_movable = exit_plan_is_movable and not ( convergence_owns_segment_boundary(rp, ch.idx) + or rp.fan_plan_id is not None or rp.fan_route_emitter is not None or ch.idx in rp.route_system_owned_segment_ranks ) if rp.normalize_exempt or ( - _planner_owns_channel(ch) and not exit_plan_is_movable + ( + ( + rp.exit_turn_plan_id in deferred_exit_plan_ids + and not _shares_terminal_carrier(rp, ch, routes) + ) + or _planner_owns_channel(ch) + ) + and not exit_plan_is_movable ): owned[(slot.gap_lo_col, slot.row)][(ch.down, rp.line_id)] = ch.x else: @@ -1163,6 +1215,21 @@ def _rederive_semantic_end_corners( direction_vector(outgoing), ) ) + for ordinal, (rank, incoming, outgoing) in enumerate(corners[1:-1], start=1): + cohorts[ + "edge", + f"{route.edge.source}\0{route.edge.target}\0{len(corners)}\0{ordinal}", + incoming, + outgoing, + ].append( + _SemanticEndCorner( + route, + rank, + points, + direction_vector(incoming), + direction_vector(outgoing), + ) + ) def wholesale_pair(a: _SemanticEndCorner, b: _SemanticEndCorner) -> bool: return wholesale_corner_translation( @@ -1172,7 +1239,7 @@ def wholesale_pair(a: _SemanticEndCorner, b: _SemanticEndCorner) -> bool: a.outgoing, ) - for cohort in cohorts.values(): + for cohort_key, cohort in cohorts.items(): pending = set(range(len(cohort))) while pending: first = pending.pop() @@ -1200,16 +1267,17 @@ def wholesale_pair(a: _SemanticEndCorner, b: _SemanticEndCorner) -> bool: offset = member.points[member.rank][0] - reference_x radii = member.route.curve_radii assert radii is not None - reference_radius = max( - reference_radius, - concentric_reference_radius_at( - member.points[member.rank - 1], - member.points[member.rank], - member.points[member.rank + 1], - offset, - radii[radius_index], - ), - ) + if cohort_key[0] != "edge": + reference_radius = max( + reference_radius, + concentric_reference_radius_at( + member.points[member.rank - 1], + member.points[member.rank], + member.points[member.rank + 1], + offset, + radii[radius_index], + ), + ) prepared.append((member, radius_index, offset, list(radii))) def reference_fits(candidate: float) -> bool: @@ -1450,16 +1518,40 @@ def _reconcile_moved_trunk_slot( rp.declare_trunk_slot(gap_upper_row=row) -def _snap_group(group: _Coincidence, ctx: _RoutingCtx) -> None: +def _snap_group( + group: _Coincidence, + ctx: _RoutingCtx, + movable_exit_plan_ids: frozenset[ExitTurnPlanId] = frozenset(), +) -> None: """Snap every channel in a coincidence group onto its shared reference X.""" - planned = [channel for channel in group.channels if _planner_owns_channel(channel)] + planned = [ + channel + for channel in group.channels + if _planner_owns_channel(channel) + and channel.route.exit_turn_plan_id not in movable_exit_plan_ids + ] ref_x = planned[0].x if planned else group.ref_x if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]): + convergence_plan_ids = { + channel.route.convergence_plan_id for channel in planned + } + if None not in convergence_plan_ids and len(convergence_plan_ids) == 1: + return if ctx.validate_final_route_frames: - raise ValueError("one coincidence group contains conflicting planned axes") + detail = ", ".join( + f"{channel.route.edge.source}->{channel.route.edge.target}:" + f"{channel.route.line_id}@{channel.x:.1f}" + f"[rank={channel.idx},owned={channel.route.convergence_owned_segment_ranks}]" + for channel in planned + ) + raise ValueError( + f"one coincidence group contains conflicting planned axes: {detail}" + ) return for ch in group.channels: - if _planner_owns_channel(ch): + if _planner_owns_channel(ch) and ( + ch.route.exit_turn_plan_id not in movable_exit_plan_ids + ): continue if abs(ch.x - ref_x) > COORD_TOLERANCE: _reconcile_moved_gap_slot(ch, ref_x, ctx.graph) @@ -1616,7 +1708,11 @@ def _coincide_fanout_opening_descents( ) -def _coincide_same_line_tracks(routes: list[RoutedPath], ctx: _RoutingCtx) -> None: +def _coincide_same_line_tracks( + routes: list[RoutedPath], + ctx: _RoutingCtx, + movable_exit_plan_ids: frozenset[ExitTurnPlanId] = frozenset(), +) -> None: """Fuse same-line vertical legs that should read as a single stroke. Handlers route each edge independently, so one metro line carried by @@ -1646,7 +1742,7 @@ def _coincide_same_line_tracks(routes: list[RoutedPath], ctx: _RoutingCtx) -> No the handler could have anticipated. """ for group in _convergent_port_groups(routes, ctx): - _snap_group(group, ctx) + _snap_group(group, ctx, movable_exit_plan_ids) for group in _merge_feeder_groups(routes, ctx): movable_channels = [ channel for channel in group.channels if not _planner_owns_channel(channel) @@ -2195,7 +2291,11 @@ def connect(first: tuple[int, int], second: tuple[int, int], delta: float) -> No route.record_concentric_corner(radius_index, 0.0, desired) -def _reconcile_port_peeloff_risers(routes: list[RoutedPath], ctx: _RoutingCtx) -> None: +def _reconcile_port_peeloff_risers( + routes: list[RoutedPath], + ctx: _RoutingCtx, + movable_exit_plan_ids: frozenset[ExitTurnPlanId] = frozenset(), +) -> None: """Re-stack port approaches onto the slots their settled trunk depth earns. The riser order is assigned during gap materialisation from the trunk @@ -2235,7 +2335,9 @@ def _reconcile_port_peeloff_risers(routes: list[RoutedPath], ctx: _RoutingCtx) - ctx.curve_radius, ) continue - if _planner_owns_channel(ch): + if _planner_owns_channel(ch) and ( + ch.route.exit_turn_plan_id not in movable_exit_plan_ids + ): continue _restack_channel( ch, @@ -2454,7 +2556,7 @@ def _stack_distinct_port_descents( def _bypass_nesting_leg_is_movable(route: RoutedPath, rank: int) -> bool: """Whether bypass nesting owns the horizontal leg and its flanking corners.""" - return not convergence_owns_segment_boundary(route, rank) + return not route_system_owns_segment_boundary(route, rank) def _nest_bypass_above_over_top_wrap( @@ -3100,7 +3202,16 @@ def _merge_feeder_groups( section = resolve_section(graph, trunk_src_st, prefer_upstream=True) if section is not None and section.bbox_w > 0: midpoint = section.bbox_x + section.bbox_w / 2 - if (ch.x - midpoint) * (trunk_ch.x - midpoint) < 0: + exit_membership = ( + ctx.exit_turns.membership_for_edge(rp.edge) + if ctx.exit_turns is not None + else None + ) + if ( + exit_membership is not None + and exit_membership.plan.legacy_reason is None + and (ch.x - midpoint) * (trunk_ch.x - midpoint) < 0 + ): continue members.append(ch) if members: diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 3915472e9..aa506ee6f 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -897,7 +897,10 @@ def _reorder_fanout_divergence(ctx: _OffsetCtx) -> None: def _reconcile_fanout_junction_offsets(ctx: _OffsetCtx) -> None: """Assign each clean divergence's settled slots in semantic peel order.""" - for junction_id in ctx.divergence_exit_ports: + for junction_id, exit_port_id in ctx.divergence_exit_ports.items(): + source_section = ctx.graph.section_for_port(ctx.graph.ports[exit_port_id]) + if source_section.direction not in ("LR", "RL"): + continue peel_order = fanout_divergence_peel_order( ctx.graph, junction_id, ctx.line_priority, ctx.topology ) @@ -2185,7 +2188,7 @@ def _order_perp_entry_by_landing_column(ctx: _OffsetCtx) -> None: ): continue section = graph.section_for_port(port_obj) - if lanes_run_along_x(section.direction): + if not lanes_run_along_x(section.direction): continue lines = graph.station_lines(port_id) if len(lines) < 2: diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index bc913ecd4..9fd40c0a9 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -30,7 +30,7 @@ ROOT = Path(__file__).parents[1] -def test_fixed_only_gap_channels_publish_owned_clearance( +def test_fixed_only_gap_channels_do_not_request_convergence_clearance( monkeypatch: pytest.MonkeyPatch, ) -> None: fixed = convergences._PlanGapChannel( @@ -77,8 +77,7 @@ def test_fixed_only_gap_channels_publish_owned_clearance( requirements = convergences._gap_channel_clearance_requirements((), graph, (fixed,)) - assert len(requirements) == 1 - assert requirements[0].owner_id == "fixed-system" + assert requirements == () def test_exit_turn_allocation_survives_member_geometry_settlement() -> None: From b5b607c8bdb3a067f1d6c268c8ae57779e294008 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 13:55:47 +0100 Subject: [PATCH 013/158] wip: narrow final peel-off repair [skip ci] --- src/nf_metro/layout/routing/member_geometry.py | 18 +++++++++++++++++- src/nf_metro/layout/routing/normalize.py | 12 ++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index c27d9733a..ef6bef200 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1681,7 +1681,15 @@ def build_member_geometry_execution( # direction bands have to be settled here rather than by the same pass # running after emission, which skips a plan-owned trunk. _separate_opposing_inter_row_trunks(normalization_population, ctx) - _reconcile_port_peeloff_risers(normalization_population, ctx) + _reconcile_port_peeloff_risers( + [ + route + for route in normalization_population + if route.exit_turn_plan_id not in pending_exit_turn_plan_ids + ], + ctx, + movable_exit_plan_ids=movable_gap_exit_plan_ids, + ) _coincide_same_line_tracks( normalization_population, ctx, @@ -1801,6 +1809,14 @@ def build_member_geometry_execution( ctx, movable_owned_route_ids=candidate_route_ids, ) + _reconcile_port_peeloff_risers( + [ + route + for route in candidate_routes + if route.fan_plan_id is None and route.fan_route_emitter is None + ], + ctx, + ) plans = tuple( _freeze_plan( scaffold, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 4f3d40259..4a2932e90 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -4380,8 +4380,16 @@ def _join_fanout_upstream_tails(routes: list[RoutedPath], ctx: _RoutingCtx) -> N # Only a genuinely-horizontal final segment is extended; extend # its X to the downstream start X, keeping the upstream Y so the # approach into the bend stays horizontal. - if abs(p_prev[1] - p_last[1]) <= COORD_TOLERANCE_FINE: - up.points[-1] = (down.points[0][0], p_last[1]) + new_end = (down.points[0][0], p_last[1]) + if ( + abs(p_prev[1] - p_last[1]) <= COORD_TOLERANCE_FINE + and ( + abs(p_prev[0] - new_end[0]) > COORD_TOLERANCE + or abs(p_prev[1] - new_end[1]) > COORD_TOLERANCE + ) + and (p_last[0] - p_prev[0]) * (new_end[0] - p_prev[0]) > 0.0 + ): + up.points[-1] = new_end def _convergence_line_order( From ad9cd9e7a95a36a52b596328ba511a623b17d516 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 15:42:01 +0100 Subject: [PATCH 014/158] chore: restore type and lint cleanliness [skip ci] Narrow the optional openings, offsets and radii at their use sites, give the two distinctly-typed move keys distinct names, and read the exit-turn query off the attribute rather than through getattr so its None arm is visible. --- src/nf_metro/layout/routing/convergences.py | 37 ++++++++++--------- src/nf_metro/layout/routing/normalize.py | 40 +++++++++++---------- 2 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index a8a74db3e..30549d284 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -1703,9 +1703,7 @@ def _reconcile_landing_handedness( else None ) assignment = ( - exit_membership.assignment - if exit_membership is not None - else None + exit_membership.assignment if exit_membership is not None else None ) uses_exit_handedness = ( assignment is not None @@ -2137,7 +2135,7 @@ def _reconcile_bypass_landings( if tail is not None and _points_coincide(tail[0], landing.join_point): landings[rank] = landing continue - points = None if tail is None else [opening[0], *tail] + points = None if tail is None or opening is None else [opening[0], *tail] if points is None: continue actual = _landing_approach_points(points, landing.join_point) @@ -2677,11 +2675,14 @@ def _settle_shared_terminal_openings( settled = list(plans) for (_line_id, target_id, _direction), members in groups.items(): coordinates = [ - settled[plan_rank].landings[landing_rank].opening_turn_coordinate + coordinate for plan_rank, landing_rank in members - ] - coordinates = [ - coordinate for coordinate in coordinates if coordinate is not None + if ( + coordinate := settled[plan_rank] + .landings[landing_rank] + .opening_turn_coordinate + ) + is not None ] if ( len(coordinates) < 2 @@ -2773,13 +2774,11 @@ def _fuse_shared_terminal_gap_channels( return tuple(settled) -def _has_legacy_exit_geometry( - ctx: _RoutingCtx, landing: ConvergenceLanding -) -> bool: +def _has_legacy_exit_geometry(ctx: _RoutingCtx, landing: ConvergenceLanding) -> bool: """Whether an upstream legacy exit template fixes this feeder opening.""" membership = ( ctx.exit_turns.membership_for_edge(landing.edge) - if getattr(ctx, "exit_turns", None) is not None + if ctx.exit_turns is not None else None ) return membership is not None and membership.plan.legacy_reason is not None @@ -3945,7 +3944,7 @@ def _settle_reserved_trunk_axes( return tuple(settled) -def _settle_opposing_gap_flanks( +def _settle_opposing_gap_flanks( # noqa: C901 plans: tuple[ConvergencePlan, ...], graph: MetroGraph, curve_radius: float, @@ -4490,18 +4489,18 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: for plan_rank, channel in grouped[key]: touched_ranks.add(plan_rank) if channel.flank_rank is not None: - move_key = (plan_rank, channel.flank_rank) - if move_key in moved_flanks: + flank_key = (plan_rank, channel.flank_rank) + if flank_key in moved_flanks: continue - moved_flanks.add(move_key) + moved_flanks.add(flank_key) candidate[plan_rank] = _move_trunk_flank( candidate[plan_rank], channel.flank_rank, coordinate ) continue - move_key = (plan_rank, channel.claimant_member_ids) - if move_key in moved_openings: + opening_key = (plan_rank, channel.claimant_member_ids) + if opening_key in moved_openings: continue - moved_openings.add(move_key) + moved_openings.add(opening_key) moved = _move_landing_opening( candidate[plan_rank], channel.claimant_member_ids, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 4a2932e90..7916a34fd 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -2252,8 +2252,8 @@ def connect(first: tuple[int, int], second: tuple[int, int], delta: float) -> No route.line_id, route.points[corner_rank], incoming, outgoing ].append(key) for cohort in coincident.values(): - for first, second in zip(cohort, cohort[1:]): - connect(first, second, 0.0) + for leader, follower in zip(cohort, cohort[1:]): + connect(leader, follower, 0.0) unseen = set(constraints) while unseen: @@ -4273,22 +4273,26 @@ def _restack_htrunk( k = t.idx owned_offsets = rp.concentric_corner_offsets_by_segment.get(k) owned_bases = rp.concentric_corner_bases_by_segment.get(k) - if ( - owned_offsets is not None - and owned_bases is not None - and all(value is not None for value in (*owned_offsets, *owned_bases)) - ): - _reseat_concentric_flanking( - rp, - k, - new_y, - axis=1, - offset_in=owned_offsets[0], - offset_out=owned_offsets[1], - base_radius=owned_bases[0], - base_radius_out=owned_bases[1], - ) - return + if owned_offsets is not None and owned_bases is not None: + offset_in, offset_out = owned_offsets + base_in, base_out = owned_bases + if ( + offset_in is not None + and offset_out is not None + and base_in is not None + and base_out is not None + ): + _reseat_concentric_flanking( + rp, + k, + new_y, + axis=1, + offset_in=offset_in, + offset_out=offset_out, + base_radius=base_in, + base_radius_out=base_out, + ) + return pts[k] = (pts[k][0], new_y) pts[k + 1] = (pts[k + 1][0], new_y) From b729c8fb7af59598a0c9a02c4a214b8642dbece7 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 15:42:12 +0100 Subject: [PATCH 015/158] fix(layout): give a collector merge its own column A merge junction seated off its entry port is placed relative to that port, so nothing keeps it clear of a feeder's column. Where the feeder is itself a divergence, landing inside its near-vertical band leaves that feeder's members no run along their exit's own axis, and one such member costs the whole exit group its planned turn. Step the merge outward until it owns its column. Bundle the feeders landing in one flow entry by that port rather than by the sign of each hop, so a merge seated on the far side of the port from a sibling descent no longer splits one corridor into two single-line bundles. --- src/nf_metro/layout/phases/junctions.py | 53 +++++++++++++++++++++++-- src/nf_metro/layout/routing/common.py | 49 ++++++++++++++++++++--- tests/test_exit_turn_planner.py | 23 +++++++++++ 3 files changed, 115 insertions(+), 10 deletions(-) diff --git a/src/nf_metro/layout/phases/junctions.py b/src/nf_metro/layout/phases/junctions.py index ffa7323de..61ad4f7ff 100644 --- a/src/nf_metro/layout/phases/junctions.py +++ b/src/nf_metro/layout/phases/junctions.py @@ -3,6 +3,7 @@ from __future__ import annotations from nf_metro.layout.constants import ( + COORD_TOLERANCE, EDGE_TO_BUNDLE_CLEARANCE, JUNCTION_MARGIN, ) @@ -129,6 +130,11 @@ def _position_junctions(graph: MetroGraph) -> None: single-line segment. """ topology = build_route_topology_query(graph) + diverging_feeders = ( + frozenset(view.junction_id for view in topology.divergences) + if topology is not None + else frozenset() + ) for jid in graph.junctions: junction = graph.stations.get(jid) if not junction: @@ -174,6 +180,7 @@ def _position_junctions(graph: MetroGraph) -> None: entry_port, entry_side=entry_port_obj.side, n=_junction_incoming_line_count(graph, jid), + diverging_feeders=diverging_feeders, ) continue @@ -223,12 +230,47 @@ def _position_junctions(graph: MetroGraph) -> None: junction.y = exit_port_y +def _clear_diverging_feeder_columns( + junction: Station, + predecessors: list[Station], + diverging_feeders: frozenset[str], + outward: float, +) -> None: + """Step a merge seated on its entry port off a diverging feeder's column. + + A feeder that is itself a divergence leaves its own exit port as one bundle + and splits at its junction, so each member owes a run along that exit's axis + before it turns into its own channel. Within ``is_near_vertical_drop``'s + band of the feeder's column there is no such run to state -- the hop is + drawn as a plain vertical -- and one unstatable member costs the whole exit + group its planned turn. Non-diverging feeders carry a single member with no + bundle to keep straight, so their column is free to be shared. + + Only a merge seated off its *entry port* needs this: seated off the + right-most predecessor it already stands a margin clear of that column by + construction, and the surrounding lines nest against that very spacing. + """ + from nf_metro.layout.routing.context import is_near_vertical_drop + + def conflicted() -> bool: + return any( + pred.id in diverging_feeders + and abs(pred.y - junction.y) > COORD_TOLERANCE + and is_near_vertical_drop(junction.x - pred.x, junction.y - pred.y) + for pred in predecessors + ) + + while conflicted(): + junction.x += outward + + def _position_merge_junction( junction: Station, predecessors: list[Station], entry_port: Station, entry_side: PortSide | None = None, n: int = 1, + diverging_feeders: frozenset[str] = frozenset(), ) -> None: """Position a merge junction on the lead-in its entry port receives. @@ -255,11 +297,14 @@ def _position_merge_junction( # width into the entry. Merge local to the target instead, so only the # individual feeders make the long approach and the merge->entry hop is short. if entry_port.x < max_pred_x - margin: - junction.x = entry_port.x + ( - margin if entry_side is PortSide.RIGHT else -margin + outward = margin if entry_side is PortSide.RIGHT else -margin + junction.x = entry_port.x + outward + junction.y = entry_port.y + _clear_diverging_feeder_columns( + junction, predecessors, diverging_feeders, outward ) - else: - junction.x = max_pred_x + margin + return + junction.x = max_pred_x + margin junction.y = entry_port.y diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index 1777a660d..ccdf96e9c 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -32,6 +32,7 @@ spans_share_corridor, ) from nf_metro.layout.route_topology import ( + convergence_junction_entry_ports, convergence_junction_ids, merge_fanout_junction_ids, ) @@ -1466,6 +1467,38 @@ def trunk_segments_cross(a: HTrunkSeg, b: HTrunkSeg) -> tuple[float, float] | No return None +def _corridor_target( + graph: MetroGraph, + edge: Edge, + tgt: Station, + merge_entry_ports: Mapping[str, str], +) -> Station: + """The station whose column names the corridor a hop into *tgt* occupies. + + A merge on a LEFT/RIGHT entry stands on that port's own horizontal lead-in, + so every feeder reaching it descends the corridor into the port and turns + along the lead-in. Reading the corridor off the raw hop instead makes the + merge's own column the corridor, which splits one descent bundle the moment + the merge is seated on the far side of the port from a feeder that descends + to the port directly -- the two hops then disagree on horizontal sense while + sharing a channel. Resolving through the merge keeps the bundle whole; the + lead-in's own Y is shared with the port, so only the column moves. + """ + entry_port_id = merge_entry_ports.get(edge.target) + if entry_port_id is None: + return tgt + port = graph.ports.get(entry_port_id) + entry = graph.stations.get(entry_port_id) + if ( + port is None + or entry is None + or port.side not in (PortSide.LEFT, PortSide.RIGHT) + or abs(entry.y - tgt.y) > COORD_TOLERANCE + ): + return tgt + return entry + + def compute_bundle_info( graph: MetroGraph, junction_ids: set[str], @@ -1483,7 +1516,8 @@ def compute_bundle_info( Returns dict mapping (source_id, target_id, line_id) -> (index, count). """ # Collect all inter-section edges with their geometry - inter_edges: list[tuple[Edge, float, float, float, float]] = [] + merge_entry_ports = convergence_junction_entry_ports(graph) + inter_edges: list[tuple[Edge, float, float, float, float, Station]] = [] for edge in graph.edges: src, tgt = graph.edge_endpoints(edge) @@ -1493,16 +1527,17 @@ def compute_bundle_info( if not is_inter: continue - inter_edges.append((edge, src.x, src.y, tgt.x, tgt.y)) + corridor_tgt = _corridor_target(graph, edge, tgt, merge_entry_ports) + inter_edges.append((edge, src.x, src.y, corridor_tgt.x, tgt.y, corridor_tgt)) # Group by corridor: edges sharing the same vertical channel # Key: (route_type, rounded_channel_position, vertical_direction) corridor_groups: dict[ - tuple[object, ...], list[tuple[Edge, float, float, float, float]] + tuple[object, ...], list[tuple[Edge, float, float, float, float, Station]] ] = defaultdict(list) for item in inter_edges: - edge, sx, sy, tx, ty = item + edge, sx, sy, tx, ty, corridor_tgt = item dx = tx - sx dy = ty - sy @@ -1522,12 +1557,14 @@ def compute_bundle_info( # proper offsets. Fall back to round(sx) for junctions # or edges without section info. h_dir = 1 if dx > 0 else -1 - src_st, tgt_st = graph.edge_endpoints(edge) + src_st = graph.edge_endpoints(edge)[0] src_sec = ( graph.sections.get(src_st.section_id) if src_st.section_id else None ) tgt_sec = ( - graph.sections.get(tgt_st.section_id) if tgt_st.section_id else None + graph.sections.get(corridor_tgt.section_id) + if corridor_tgt.section_id + else None ) col_key: int | tuple[int, ...] if src_sec and tgt_sec and src_sec.grid_col != tgt_sec.grid_col: diff --git a/tests/test_exit_turn_planner.py b/tests/test_exit_turn_planner.py index 352ccbc67..98997247f 100644 --- a/tests/test_exit_turn_planner.py +++ b/tests/test_exit_turn_planner.py @@ -3368,3 +3368,26 @@ def test_a_handover_station_seats_its_two_names_on_adjacent_lanes() -> None: f"{station_id}: '{arriving}' at {arriving_lane} and '{departing}' at " f"{departing_lane} are not one lane apart" ) + + +def test_a_merge_and_its_cellmate_feeder_share_one_descent_corridor() -> None: + """Feeders landing in one flow entry are bundled by the port, not the hop. + + A merge seated outboard of its RIGHT entry port is reached leftward-to- + rightward from a feeder above it while a sibling that descends straight to + the port is reached rightward-to-leftward. Keying the corridor on each + hop's own sign splits that one descent into two single-line bundles, which + costs the sibling the ``n >= 2`` bundle that deflects it onto the cross-row + wrap -- so the bundle has to be owned by the port both members land in. + """ + path = FROZEN / "seed_77.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + offsets = compute_station_offsets(graph) + ctx = _build_routing_context(graph, DIAGONAL_RUN, CURVE_RADIUS, offsets) + + through_merge = ctx.bundle_info[("__junction_37", "__merge_11", "l0")] + direct = ctx.bundle_info[("__junction_37", "s8__entry_right_23", "l1")] + assert ctx.merge.entry_port_for["__merge_11"] == "s8__entry_right_23" + assert through_merge[1] == 2, "feeder through the merge is bundled alone" + assert direct[1] == 2, "feeder straight to the port is bundled alone" + assert {through_merge[0], direct[0]} == {0, 1} From ab153dd1f86fc5847e3d678c809b064a2b3e8aa4 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 16:00:47 +0100 Subject: [PATCH 016/158] fix(routing): preserve same-system convergence corridors --- src/nf_metro/layout/routing/convergences.py | 3 ++- tests/test_fused_cotravelling_lines_invariant.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 30549d284..c56600b9a 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2538,7 +2538,8 @@ def _separate_distinct_cotravelling_trunks( neighbours = tuple( item for item in seated - if item.direction is run.direction + if item.system_id != plan.system_id + and item.direction is run.direction and item.line_ids != run.line_ids and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) ) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index 4e10f762b..c49eeedab 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -328,6 +328,20 @@ def test_seed_41_plan_owned_trunks_keep_the_nesting_step() -> None: assert separations[("l0", "l2", "Y")] >= graph_offset_step(graph) +def test_seed_77_merge_trunk_stays_in_its_inter_row_corridor() -> None: + """A convergence trunk does not cross the destination row's stations.""" + path = FROZEN_FUZZ / "seed_77.mmd" + _graph, routes, _offsets = _route(path) + trunk = next( + route + for route in routes + if (route.edge.source, route.edge.target, route.line_id) + == ("__junction_42", "__merge_12", "l4") + ) + + assert trunk.points[2] == pytest.approx((2722.0, 348.0)) + + @pytest.mark.parametrize( "path", tuple(sorted(FROZEN_FUZZ.glob("seed_*.mmd"))), From 7fb4983d70d169d890c7a10c99e4a596a90d5404 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 16:17:48 +0100 Subject: [PATCH 017/158] fix(routing): preserve planned source fan lanes --- .../layout/routing/inter_section_handlers.py | 23 +++++++++++++++++++ ...test_fused_cotravelling_lines_invariant.py | 18 +++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index c9be58b3e..455fe6871 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -4178,6 +4178,7 @@ def _route_l_shape_fan( normalize_exempt=False, ) assert route is not None # the lone member is always in its own bundle + _anchor_l_shape_fan_source_lane(route, src, ctx) _declare_channel( route, ctx, @@ -4189,6 +4190,28 @@ def _route_l_shape_fan( return route +def _anchor_l_shape_fan_source_lane( + route: RoutedPath, src: Station, ctx: _RoutingCtx +) -> None: + """Keep a turning fan member off a planned straight continuation lane.""" + if ctx.exit_turns is None: + return + membership = ctx.exit_turns.membership_for_edge(route.edge) + if ( + membership is None + or membership.assignment is None + or membership.plan.disposition is not ExitTurnDisposition.PLANNED + or not any( + assignment.planned_family_id is RouteFamilyId.SAME_Y_STRAIGHT + and assignment.source_lane_rank != membership.assignment.source_lane_rank + for assignment in membership.plan.assignments + ) + ): + return + source_y = src.y + _get_offset(ctx, route.edge.source, route.line_id) + route.points[:2] = [(point[0], source_y) for point in route.points[:2]] + + @dataclass(frozen=True, slots=True) class _LShapeFanSourceTurn: """Source-side geometry shared by L-shape planning and emission.""" diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index c49eeedab..05aacd0db 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -342,6 +342,24 @@ def test_seed_77_merge_trunk_stays_in_its_inter_row_corridor() -> None: assert trunk.points[2] == pytest.approx((2722.0, 348.0)) +def test_seed_77_turning_member_stays_off_straight_continuation_lane() -> None: + """A planned source turn retains its lane beside a straight continuation.""" + from nf_metro.api import RenderConfig, _emit_svg_plan, prepare_graph, resolve_theme + from nf_metro.render.svg import build_observed_render_plan + from nf_metro.render.validate import OFFSET_COLLAPSE, validate_render + + path = FROZEN_FUZZ / "seed_77.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observed = build_observed_render_plan(graph, resolve_theme(None, graph)) + svg = _emit_svg_plan(graph, observed.plan, RenderConfig()) + + assert not [ + finding + for finding in validate_render(svg, plan=observed.plan) + if finding.kind == OFFSET_COLLAPSE + ] + + @pytest.mark.parametrize( "path", tuple(sorted(FROZEN_FUZZ.glob("seed_*.mmd"))), From d8243178c01c978b1eb63b7c5f9a45296482916a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 16:22:03 +0100 Subject: [PATCH 018/158] fix(routing): separate terminal convergence lanes [skip ci] --- src/nf_metro/layout/routing/convergences.py | 85 +++++++++++++++++++ ...test_fused_cotravelling_lines_invariant.py | 8 ++ 2 files changed, 93 insertions(+) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index c56600b9a..33039b85b 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2775,6 +2775,90 @@ def _fuse_shared_terminal_gap_channels( return tuple(settled) +def _separate_distinct_terminal_gap_channels( + plans: tuple[ConvergencePlan, ...], graph: MetroGraph, curve_radius: float +) -> tuple[ConvergencePlan, ...]: + """Keep distinct terminal-opening lanes one nesting step apart. + + Same-line terminal fusion runs late because it has to read the settled + approach geometry. Two independently planned lines can therefore arrive + on that fused carrier after the ordinary gap allocator has finished. The + opening turn remains owned by its convergence plan, so repair the collision + here, before the plan freezes, by moving one terminal opening to the nearest + clear lane in its declared gap. + """ + lookup = gap_lookup_geometry(graph) + settled = list(plans) + + def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: + return _plan_gap_channels(plan, graph, lookup) + + for plan_rank, plan in enumerate(tuple(settled)): + for channel in tuple( + item for item in channels_of(plan) if item.flank_rank is None + ): + obstacles = tuple( + obstacle + for other_rank, other in enumerate(settled) + if other_rank != plan_rank + for obstacle in channels_of(other) + if _gap_channels_crowd(channel, obstacle) + ) + if not obstacles: + continue + gap_edges = column_gap_edges( + graph, channel.gap[0], channel.gap[0] + 1, row=channel.gap[1] + ) + candidates = sorted( + { + obstacle.coordinate + direction * OFFSET_STEP + for obstacle in obstacles + for direction in (-1.0, 1.0) + }, + key=lambda coordinate: ( + abs(coordinate - channel.coordinate), + coordinate, + ), + ) + for coordinate in candidates: + if not _inside_usable_gap(gap_edges, coordinate): + continue + moved = _move_landing_opening( + plan, + channel.claimant_member_ids, + coordinate, + curve_radius, + ) + if moved is None: + continue + moved_channels = tuple( + item + for item in channels_of(moved) + if item.claimant_member_ids == channel.claimant_member_ids + and item.gap == channel.gap + ) + if not moved_channels or any( + _gap_channels_crowd(moved_channel, obstacle) + for moved_channel in moved_channels + for other_rank, other in enumerate(settled) + if other_rank != plan_rank + for obstacle in channels_of(other) + ): + continue + candidate_plans = tuple( + moved if rank == plan_rank else other + for rank, other in enumerate(settled) + ) + if ( + _landing_trunk_flank_conflict(candidate_plans, graph, curve_radius) + is not None + ): + continue + settled[plan_rank] = plan = moved + break + return tuple(settled) + + def _has_legacy_exit_geometry(ctx: _RoutingCtx, landing: ConvergenceLanding) -> bool: """Whether an upstream legacy exit template fixes this feeder opening.""" membership = ( @@ -5790,6 +5874,7 @@ def _settle_convergence_geometry( settled, graph, ctx.curve_radius, fixed_channels ) settled = _fuse_shared_terminal_gap_channels(settled, ctx) + settled = _separate_distinct_terminal_gap_channels(settled, graph, ctx.curve_radius) settled = tuple(_reconcile_bypass_landings(plan, ctx) for plan in settled) return _reconcile_landing_handedness(settled, ctx) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index 05aacd0db..56444c7a1 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -360,6 +360,14 @@ def test_seed_77_turning_member_stays_off_straight_continuation_lane() -> None: ] +def test_seed_15_terminal_openings_keep_the_nesting_step() -> None: + """Late same-line fusion preserves the lanes of distinct terminal feeds.""" + graph, routes, offsets = _route(FROZEN_FUZZ / "seed_15.mmd") + separations = _pair_separations(routes, offsets) + + assert separations[("l0", "l2", "X")] == graph_offset_step(graph) + + @pytest.mark.parametrize( "path", tuple(sorted(FROZEN_FUZZ.glob("seed_*.mmd"))), From d9905734b5d68e6719c3208d3380f9d5b899edce Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 16:22:53 +0100 Subject: [PATCH 019/158] fix(routing): keep fan turns off continuation tracks --- .../layout/routing/inter_section_handlers.py | 16 ++++++++++++- ...test_fused_cotravelling_lines_invariant.py | 23 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 455fe6871..6e7dbd0b3 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -4209,7 +4209,21 @@ def _anchor_l_shape_fan_source_lane( ): return source_y = src.y + _get_offset(ctx, route.edge.source, route.line_id) - route.points[:2] = [(point[0], source_y) for point in route.points[:2]] + lane_offsets = { + lane.rank: lane.planned_offset for lane in membership.plan.source_lanes + } + source_offset = lane_offsets[membership.assignment.source_lane_rank] + straight_offsets = tuple( + lane_offsets[assignment.source_lane_rank] + for assignment in membership.plan.assignments + if assignment.planned_family_id is RouteFamilyId.SAME_Y_STRAIGHT + and assignment.source_lane_rank != membership.assignment.source_lane_rank + ) + shift = ( + -ctx.offset_step if source_offset < min(straight_offsets) else ctx.offset_step + ) + fan_y = source_y + shift + route.points[:2] = [(point[0], fan_y) for point in route.points[:2]] @dataclass(frozen=True, slots=True) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index 56444c7a1..a05a4d6cb 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -368,6 +368,29 @@ def test_seed_15_terminal_openings_keep_the_nesting_step() -> None: assert separations[("l0", "l2", "X")] == graph_offset_step(graph) +def test_seed_77_candidate_executor_completes() -> None: + """The full production executor accepts the settled seed_77 route.""" + from nf_metro.candidate_executor import ( + CandidateExecutionRequest, + CandidateStage, + CandidateStatus, + ExecutionLimits, + execute_candidates, + ) + + path = FROZEN_FUZZ / "seed_77.mmd" + baseline = execute_candidates( + CandidateExecutionRequest( + path.read_text(), + source_dir=str(path.parent), + limits=ExecutionLimits(1, 60.0, 70.0), + ) + ).baseline + + assert baseline.status is CandidateStatus.ACCEPTED + assert baseline.stage is CandidateStage.COMPLETE + + @pytest.mark.parametrize( "path", tuple(sorted(FROZEN_FUZZ.glob("seed_*.mmd"))), From fcf3436af1c09b85ad31ac9065543a3c3b8e158b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 16:30:46 +0100 Subject: [PATCH 020/158] fix(routing): settle nested exempt doglegs --- .../layout/routing/member_geometry.py | 34 ++++ src/nf_metro/layout/routing/normalize.py | 170 +++++++++++++++++- src/nf_metro/layout/routing/planning.py | 30 +++- tests/test_dogleg_exempt_trunk_invariant.py | 25 +++ 4 files changed, 246 insertions(+), 13 deletions(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index ef6bef200..07750d445 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -449,6 +449,7 @@ def _settled_exit_turns( """Read deferred source turns from the jointly seated route population.""" if ctx.exit_turns is None or not pending_plan_ids: return MappingProxyType({}) + routes = tuple(routes) candidates: list[_SettledTurnCandidate] = [] for route in routes: @@ -585,6 +586,39 @@ def _settled_exit_turns( ), candidate.validate_corner_radii, ) + reseated = _dogleg_off_exempt_trunks( + list(routes), + ctx, + movable_owned_route_ids=frozenset(id(route) for route in routes), + reconcile_owned_corridor=True, + ) + for route in routes: + edge_key = (route.edge.source, route.edge.target, route.line_id) + if edge_key not in reseated: + continue + membership = ctx.exit_turns.membership_for_edge(route.edge) + if membership is None or membership.assignment is None: + continue + allocated = _allocated_turn( + route, + membership.assignment.run_direction, + membership.assignment.turn_direction, + ) + if allocated is None: + continue + run_direction, turn_direction, rank = allocated + axis = direction_axis(run_direction).point_index + launch = route.points[rank - 1][axis] + coordinate = route.points[rank][axis] + settled[edge_key] = SettledExitTurn( + run_direction, + turn_direction, + launch, + abs(coordinate - launch), + coordinate, + route.concentric_corner_offsets_by_segment.get(rank, (None, None)), + EmissionRole.TERMINAL in membership.assignment.roles, + ) return MappingProxyType(settled) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 7916a34fd..c2cd93bad 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3850,7 +3850,8 @@ def _dogleg_off_exempt_trunks( skip: set[int] | None = None, *, movable_owned_route_ids: frozenset[int] = frozenset(), -) -> None: + reconcile_owned_corridor: bool = False, +) -> set[tuple[str, str, str]]: """Offset a non-exempt trunk drawn collinear with an exempt run. ``normalize_exempt`` horizontal runs are placed by their own handler and @@ -3880,8 +3881,9 @@ def _dogleg_off_exempt_trunks( if t.route.normalize_exempt and id(t.route) not in skip ] if not obstacles: - return + return set() clearance = EDGE_TO_BUNDLE_CLEARANCE + changed: set[tuple[str, str, str]] = set() for t in _collect_htrunks(routes): owned = route_system_owns_segment_boundary(t.route, t.idx) if id(t.route) in skip or ( @@ -3954,8 +3956,12 @@ def _dogleg_off_exempt_trunks( o for o in obstacles if o.route.line_id != t.route.line_id - and abs(o.y - t.y) - < _exempt_trunk_separation(t, o, ctx.curve_radius) - COORD_TOLERANCE + and ( + abs(o.y - t.y) + < _exempt_trunk_separation(t, o, ctx.curve_radius) - COORD_TOLERANCE + or trunk_segments_cross(_htrunk_seg(t, t.y), _htrunk_seg(o, o.y)) + is not None + ) and t.x_lo < o.x_hi - COORD_TOLERANCE and o.x_lo < t.x_hi - COORD_TOLERANCE and ( @@ -3985,6 +3991,10 @@ def _dogleg_off_exempt_trunks( obstacle = _htrunk_seg(hit, hit.y) cross_below = trunk_segments_cross(_htrunk_seg(t, below), obstacle) cross_above = trunk_segments_cross(_htrunk_seg(t, above), obstacle) + if cross_below is not None and cross_above is not None: + if reconcile_owned_corridor: + changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) + continue prefer_below = t.y >= hit.y if below_ok and above_ok and (cross_below is None) != (cross_above is None): use_below = cross_below is None @@ -3993,9 +4003,161 @@ def _dogleg_off_exempt_trunks( elif above_ok: use_below = False else: + if reconcile_owned_corridor: + changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) continue target = below if use_below else above _restack_htrunk(t, target, 0, 1, step, ctx.curve_radius) + return changed + + +def _unweave_exempt_trunk_riser( + trunk: _HTrunk, + obstacle: _HTrunk, + routes: list[RoutedPath], + ctx: _RoutingCtx, +) -> set[tuple[str, str, str]]: + """Move a nested dogleg riser past its exempt counterpart.""" + route = trunk.route + points = route.points + clearance = _exempt_trunk_separation(trunk, obstacle, ctx.curve_radius) + obstacle_segment = _htrunk_seg(obstacle, obstacle.y) + for rank in (trunk.idx, trunk.idx + 1): + before, corner, after = points[rank - 1 : rank + 2] + if ( + abs(before[0] - corner[0]) > COORD_TOLERANCE + or abs(corner[1] - after[1]) > COORD_TOLERANCE + ): + continue + gap = gap_lo_for_x( + ctx.graph, corner[0], min(before[1], corner[1]), max(before[1], corner[1]) + ) + if gap is None: + continue + for obstacle_x in (obstacle_segment.xa, obstacle_segment.xb): + for candidate in (obstacle_x + clearance, obstacle_x - clearance): + if ( + abs(candidate - before[0]) < ctx.curve_radius - COORD_TOLERANCE + or abs(candidate - after[0]) < ctx.curve_radius - COORD_TOLERANCE + or gap_lo_for_x( + ctx.graph, + candidate, + min(before[1], corner[1]), + max(before[1], corner[1]), + ) + != gap + ): + continue + candidate_trunk = _htrunk_seg(trunk, trunk.y) + candidate_trunk = ( + HTrunkSeg( + candidate_trunk.y, + candidate, + candidate_trunk.xb, + candidate_trunk.before_y, + candidate_trunk.after_y, + ) + if rank == trunk.idx + else HTrunkSeg( + candidate_trunk.y, + candidate_trunk.xa, + candidate, + candidate_trunk.before_y, + candidate_trunk.after_y, + ) + ) + channel = _VChannel( + route, + rank - 1, + corner[0], + min(before[1], corner[1]), + max(before[1], corner[1]), + corner[1] > before[1], + ) + if trunk_segments_cross( + candidate_trunk, obstacle_segment + ) is not None or _vchannel_move_crosses_foreign_section( + channel, candidate, ctx.graph + ): + continue + _set_vchannel_x(channel, candidate) + return _seat_unwoven_endpoint_fan( + channel, + routes, + gap, + route.edge.source if rank == trunk.idx else route.edge.target, + ctx, + ) + return set() + + +def _seat_unwoven_endpoint_fan( + channel: _VChannel, + routes: list[RoutedPath], + gap: tuple[int, int | None], + endpoint_id: str, + ctx: _RoutingCtx, +) -> set[tuple[str, str, str]]: + """Reseat an endpoint's co-travelling risers inside their shared band.""" + channels = [ + _VChannel(route, idx, x, y_lo, y_hi, down) + for route in routes + if endpoint_id in (route.edge.source, route.edge.target) + for idx, x, y_lo, y_hi, down in iter_vertical_segments(route) + if gap_lo_for_x(ctx.graph, x, y_lo, y_hi) == gap + ] + anchor = next( + item + for item in channels + if item.route is channel.route and item.idx == channel.idx + ) + group = [anchor] + remaining = [item for item in channels if item is not anchor] + while joined := [ + item + for item in remaining + if any( + abs(item.x - peer.x) <= _co_travel_reach(ctx.offset_step) + and spans_share_corridor(item.y_lo, item.y_hi, peer.y_lo, peer.y_hi) + for peer in group + ) + ]: + group.extend(joined) + remaining = [item for item in remaining if item not in joined] + section_ids = tuple( + sorted( + { + section_id + for item in group + for section_id in _route_endpoint_section_ids(ctx.graph, item.route) + } + ) + ) + band = corridor_clearance_band( + ctx.graph, + axis=0, + section_ids=section_ids, + coordinate=anchor.x, + run_start=min(item.y_lo for item in group), + run_end=max(item.y_hi for item in group), + ) + if band is None: + return set() + shift = min( + max(0.0, band.lo - min(item.x for item in group)), + band.hi - max(item.x for item in group), + ) + if abs(shift) <= COORD_TOLERANCE or any( + _vchannel_move_crosses_foreign_section(item, item.x + shift, ctx.graph) + for item in group + ): + return set() + for item in group: + _set_vchannel_x(item, item.x + shift) + return { + (item.route.edge.source, item.route.edge.target, item.route.line_id) + for item in group + } def _run_enters_section( diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index cb7f0f294..3ad4ad2e1 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -72,7 +72,6 @@ def _allocation_eligible_system_ids( def _with_settled_exit_turns( execution: MemberGeometryExecution, allocation: MemberGeometryExecution, - pending_member_ids: frozenset[EmissionMemberId], ctx: _RoutingCtx, ) -> MemberGeometryExecution: """Apply each allocated source axis to the fully normalized member path.""" @@ -80,13 +79,33 @@ def _with_settled_exit_turns( from nf_metro.layout.routing.exit_turns import planned_exit_turn_corner_offsets from nf_metro.layout.routing.normalize import _reseat_concentric_flanking + allocated_by_edge = {plan.edge: plan for plan in allocation.plans} plans = [] for plan in execution.plans: settled = ctx.settled_exit_turns.get( (plan.edge.source, plan.edge.target, plan.edge.line_id) ) rank = plan.exit_turn_segment_rank - if plan.member_id not in pending_member_ids or settled is None or rank is None: + allocated = allocated_by_edge.get(plan.edge) + if settled is not None and allocated is not None: + plans.append( + replace( + plan, + points=allocated.points, + curve_radii=allocated.curve_radii, + gap_slots=allocated.gap_slots, + trunk_slot=allocated.trunk_slot, + gap_channels=allocated.gap_channels, + concentric_corner_offsets_by_segment=( + allocated.concentric_corner_offsets_by_segment + ), + concentric_corner_bases_by_segment=( + allocated.concentric_corner_bases_by_segment + ), + ) + ) + continue + if settled is None or rank is None: plans.append(plan) continue if plan.curve_radii is None or ctx.exit_turns is None: @@ -317,16 +336,9 @@ def prepare_member_geometry( pending_plan_ids, ) ) - pending_member_ids = frozenset( - member_id - for plan in provisional_exit_turns.plans - if plan.id in pending_plan_ids - for member_id in plan.member_ids - ) member_geometry = _with_settled_exit_turns( member_geometry, allocation_geometry, - pending_member_ids, ctx, ) elif ctx.prior_exit_turn_dispositions is not None: diff --git a/tests/test_dogleg_exempt_trunk_invariant.py b/tests/test_dogleg_exempt_trunk_invariant.py index 42c32e792..4858b0e45 100644 --- a/tests/test_dogleg_exempt_trunk_invariant.py +++ b/tests/test_dogleg_exempt_trunk_invariant.py @@ -34,6 +34,7 @@ EXAMPLES = REPO_ROOT / "examples" EXAMPLE_TOPOLOGIES = EXAMPLES / "topologies" FIXTURE_TOPOLOGIES = REPO_ROOT / "tests" / "fixtures" / "topologies" +FROZEN_FUZZ = REPO_ROOT / "tests" / "fixtures" / "hash_seed_determinism" def _gather_fixtures() -> list[Path]: @@ -124,3 +125,27 @@ def test_checker_passes_parallel_dogleg() -> None: """The checker stays silent when the trunk clears to the parallel side.""" violations = check_no_dogleg_crosses_exempt_trunk(None, _routes(_BYP_ABOVE), {}) assert not violations, "parallel bundle above the exempt run must not flag" + + +def test_seed_72_strict_layout_unweaves_the_exempt_dogleg() -> None: + """Nested source doglegs retain both their lane spacing and clearance.""" + graph = parse_metro_mermaid((FROZEN_FUZZ / "seed_72.mmd").read_text()) + compute_layout(graph, validate=True) + offsets = compute_station_offsets(graph) + routes = route_edges(graph, station_offsets=offsets) + l6 = next( + route + for route in routes + if route.line_id == "l6" + and route.edge.source == "__junction_14" + and route.edge.target == "s4__entry_left_9" + ) + l0 = next( + route + for route in routes + if route.line_id == "l0" + and route.edge.source == "__junction_14" + and route.edge.target == "s7__entry_right_10" + ) + assert l6.points[1][0] > l0.points[1][0] + assert not check_no_dogleg_crosses_exempt_trunk(graph, routes, offsets) From 66611e90b3d2c7c1604bb709b6112e37938568a6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 16:37:27 +0100 Subject: [PATCH 021/158] fix(routing): settle owned entry descents --- .../layout/routing/member_geometry.py | 11 +++- src/nf_metro/layout/routing/normalize.py | 55 ++++++++++++++++--- src/nf_metro/layout/routing/planning.py | 7 ++- tests/test_dogleg_exempt_trunk_invariant.py | 17 +++++- 4 files changed, 78 insertions(+), 12 deletions(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 07750d445..4f7f4ca17 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -169,6 +169,7 @@ class MemberGeometryExecution: settled_exit_turns: Mapping[tuple[str, str, str], SettledExitTurn] = field( default_factory=lambda: MappingProxyType({}) ) + reconciled_member_ids: frozenset[EmissionMemberId] = frozenset() def plan_for_edge( self, edge: Edge | ResolvedEdge @@ -1833,10 +1834,10 @@ def build_member_geometry_execution( ctx, pending_exit_turn_plan_ids, ) - _stagger_convergent_distinct_lines( + reconciled_edges = _stagger_convergent_distinct_lines( normalization_population, ctx, - movable_route_ids=complete_path_route_ids, + movable_route_ids=candidate_route_ids, ) _dogleg_off_exempt_trunks( normalization_population, @@ -1869,6 +1870,12 @@ def build_member_geometry_execution( MappingProxyType(failures), MappingProxyType({plan.edge: plan for plan in plans}), settled_exit_turns, + frozenset( + plan.member_id + for plan in plans + if (plan.edge.source, plan.edge.target, plan.edge.line_id) + in reconciled_edges + ), ) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index c2cd93bad..efd07637b 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -2355,7 +2355,7 @@ def _stagger_convergent_distinct_lines( ctx: _RoutingCtx, *, movable_route_ids: frozenset[int] | None = None, -) -> None: +) -> set[tuple[str, str, str]]: """Seat distinct-line final port descents in destination lane order. The distinct-line counterpart to :func:`_coincide_same_line_tracks`: two @@ -2397,6 +2397,7 @@ def _stagger_convergent_distinct_lines( ) } + reconciled_edges: set[tuple[str, str, str]] = set() for (port_id, down), entries in by_port.items(): if any( _planner_owns_channel(channel) @@ -2413,6 +2414,7 @@ def _stagger_convergent_distinct_lines( } != {id(route) for route, _channel in entries}: opposing_bundle = None if opposing_bundle is not None: + before = {id(route): tuple(route.points) for route, _channel in entries} slots = opposing_entry_confluence_slots( opposing_bundle, ctx.graph, @@ -2443,19 +2445,53 @@ def _stagger_convergent_distinct_lines( offset_in=0.0, offset_out=slot.peel_x - inner_x, ) + reconciled_edges.update( + (route.edge.source, route.edge.target, route.edge.line_id) + for route, _channel in entries + if tuple(route.points) != before[id(route)] + ) continue forced_order = _cross_row_convergence_channel_order(port_id, entries, ctx) if forced_order is not None: - _stack_distinct_port_descents(entries, port, ctx, line_order=forced_order) + before = {id(route): tuple(route.points) for route, _channel in entries} + _stack_distinct_port_descents( + entries, + port, + ctx, + line_order=forced_order, + movable_route_ids=movable_route_ids, + ) + reconciled_edges.update( + (route.edge.source, route.edge.target, route.edge.line_id) + for route, _channel in entries + if tuple(route.points) != before[id(route)] + ) continue entries.sort(key=lambda e: e[1].x) cluster: list[tuple[RoutedPath, _VChannel]] = [] for rp, ch in entries: if cluster and abs(ch.x - cluster[-1][1].x) > COORD_TOLERANCE + 1.0: - _stack_distinct_port_descents(cluster, port, ctx) + before = {id(route): tuple(route.points) for route, _channel in cluster} + _stack_distinct_port_descents( + cluster, port, ctx, movable_route_ids=movable_route_ids + ) + reconciled_edges.update( + (route.edge.source, route.edge.target, route.edge.line_id) + for route, _channel in cluster + if tuple(route.points) != before[id(route)] + ) cluster = [] cluster.append((rp, ch)) - _stack_distinct_port_descents(cluster, port, ctx) + before = {id(route): tuple(route.points) for route, _channel in cluster} + _stack_distinct_port_descents( + cluster, port, ctx, movable_route_ids=movable_route_ids + ) + reconciled_edges.update( + (route.edge.source, route.edge.target, route.edge.line_id) + for route, _channel in cluster + if tuple(route.points) != before[id(route)] + ) + return reconciled_edges def _cross_row_convergence_channel_order( @@ -2487,6 +2523,7 @@ def _stack_distinct_port_descents( ctx: _RoutingCtx, *, line_order: list[str] | None = None, + movable_route_ids: frozenset[int] | None = None, ) -> None: """Re-seat one cluster of distinct-line port descents. @@ -2503,12 +2540,14 @@ def _stack_distinct_port_descents( if any( _planner_owns_channel(channel) and not convergence_owns_segment_boundary(channel.route, channel.idx) - for _route, channel in cluster + and (movable_route_ids is None or id(route) not in movable_route_ids) + for route, channel in cluster ): return - has_planned_channel = any( + has_immovable_planned_channel = any( convergence_owns_segment_boundary(channel.route, channel.idx) - for _route, channel in cluster + and (movable_route_ids is None or id(route) not in movable_route_ids) + for route, channel in cluster ) by_line: dict[str, list[_VChannel]] = defaultdict(list) for rp, ch in cluster: @@ -2541,7 +2580,7 @@ def _stack_distinct_port_descents( lid: base + rank * step if left else base - rank * step for rank, lid in enumerate(ordered) } - if has_planned_channel and any( + if has_immovable_planned_channel and any( abs(channel.x - target_x_by_line[line_id]) > COORD_TOLERANCE for line_id, channels in by_line.items() for channel in channels diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index 3ad4ad2e1..977601b68 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -87,7 +87,11 @@ def _with_settled_exit_turns( ) rank = plan.exit_turn_segment_rank allocated = allocated_by_edge.get(plan.edge) - if settled is not None and allocated is not None: + if ( + settled is not None + or plan.member_id in execution.reconciled_member_ids + or plan.member_id in allocation.reconciled_member_ids + ) and allocated is not None: plans.append( replace( plan, @@ -188,6 +192,7 @@ def _with_settled_exit_turns( execution.failure_reasons, MappingProxyType({plan.edge: plan for plan in frozen_plans}), allocation.settled_exit_turns, + execution.reconciled_member_ids | allocation.reconciled_member_ids, ) diff --git a/tests/test_dogleg_exempt_trunk_invariant.py b/tests/test_dogleg_exempt_trunk_invariant.py index 4858b0e45..6de7ca747 100644 --- a/tests/test_dogleg_exempt_trunk_invariant.py +++ b/tests/test_dogleg_exempt_trunk_invariant.py @@ -128,7 +128,7 @@ def test_checker_passes_parallel_dogleg() -> None: def test_seed_72_strict_layout_unweaves_the_exempt_dogleg() -> None: - """Nested source doglegs retain both their lane spacing and clearance.""" + """Nested doglegs and destination feeds retain distinct approach lanes.""" graph = parse_metro_mermaid((FROZEN_FUZZ / "seed_72.mmd").read_text()) compute_layout(graph, validate=True) offsets = compute_station_offsets(graph) @@ -147,5 +147,20 @@ def test_seed_72_strict_layout_unweaves_the_exempt_dogleg() -> None: and route.edge.source == "__junction_14" and route.edge.target == "s7__entry_right_10" ) + l6_destination = next( + route + for route in routes + if route.line_id == "l6" + and route.edge.source == "__junction_15" + and route.edge.target == "s7__entry_right_10" + ) + l1_destination = next( + route + for route in routes + if route.line_id == "l1" + and route.edge.source == "__junction_16" + and route.edge.target == "s7__entry_right_10" + ) assert l6.points[1][0] > l0.points[1][0] + assert l6_destination.points[1][0] > l1_destination.points[-3][0] assert not check_no_dogleg_crosses_exempt_trunk(graph, routes, offsets) From 3c898bbf21cc73c634e723c3acb32ca36be893fd Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 16:42:44 +0100 Subject: [PATCH 022/158] fix(routing): adopt settled entry bundles atomically --- src/nf_metro/layout/routing/planning.py | 12 ++++++++++++ ...test_fused_cotravelling_lines_invariant.py | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index 977601b68..1fafdb6ee 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -80,6 +80,16 @@ def _with_settled_exit_turns( from nf_metro.layout.routing.normalize import _reseat_concentric_flanking allocated_by_edge = {plan.edge: plan for plan in allocation.plans} + reconciled_targets = { + ctx.merge.entry_port_for.get(plan.edge.target, plan.edge.target) + for plan in execution.plans + if ( + (plan.edge.source, plan.edge.target, plan.edge.line_id) + in ctx.settled_exit_turns + or plan.member_id in execution.reconciled_member_ids + or plan.member_id in allocation.reconciled_member_ids + ) + } plans = [] for plan in execution.plans: settled = ctx.settled_exit_turns.get( @@ -91,6 +101,8 @@ def _with_settled_exit_turns( settled is not None or plan.member_id in execution.reconciled_member_ids or plan.member_id in allocation.reconciled_member_ids + or ctx.merge.entry_port_for.get(plan.edge.target, plan.edge.target) + in reconciled_targets ) and allocated is not None: plans.append( replace( diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index a05a4d6cb..bb7054cfd 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -342,6 +342,25 @@ def test_seed_77_merge_trunk_stays_in_its_inter_row_corridor() -> None: assert trunk.points[2] == pytest.approx((2722.0, 348.0)) +def test_seed_77_settled_entry_bundle_keeps_allocation_lanes() -> None: + """A settled member carries every destination peer's allocation lane.""" + _graph, routes, _offsets = _route(FROZEN_FUZZ / "seed_77.mmd") + l1 = next( + route + for route in routes + if (route.edge.source, route.edge.target, route.line_id) + == ("__junction_39", "s9__entry_right_25", "l1") + ) + l3 = next( + route + for route in routes + if (route.edge.source, route.edge.target, route.line_id) + == ("__junction_41", "s9__entry_right_25", "l3") + ) + + assert l1.points[-3][0] - l3.points[-3][0] == graph_offset_step(_graph) + + def test_seed_77_turning_member_stays_off_straight_continuation_lane() -> None: """A planned source turn retains its lane beside a straight continuation.""" from nf_metro.api import RenderConfig, _emit_svg_plan, prepare_graph, resolve_theme From 0c95185dd6cda8461f490427025a15dbc36e2282 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 16:47:25 +0100 Subject: [PATCH 023/158] fix(routing): keep merge feeders outside source sections [skip ci] --- src/nf_metro/layout/routing/normalize.py | 30 +++++++++++++++--------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index efd07637b..5d8e9a43b 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3238,18 +3238,26 @@ def _merge_feeder_groups( ch = _initial_fanout_descent(rp) if ch is None: continue - section = resolve_section(graph, trunk_src_st, prefer_upstream=True) - if section is not None and section.bbox_w > 0: - midpoint = section.bbox_x + section.bbox_w / 2 - exit_membership = ( - ctx.exit_turns.membership_for_edge(rp.edge) - if ctx.exit_turns is not None - else None + source_section = resolve_section(graph, src_st, prefer_upstream=True) + if source_section is not None and source_section.bbox_w > 0: + within_source_band = ( + source_section.bbox_y + COORD_TOLERANCE + < src_st.y + < source_section.bbox_y + source_section.bbox_h - COORD_TOLERANCE ) - if ( - exit_membership is not None - and exit_membership.plan.legacy_reason is None - and (ch.x - midpoint) * (trunk_ch.x - midpoint) < 0 + + def crosses_source_interior(x: float) -> bool: + return ( + within_source_band + and min(src_st.x, x) + < source_section.bbox_x + + source_section.bbox_w + - COORD_TOLERANCE + and max(src_st.x, x) > source_section.bbox_x + COORD_TOLERANCE + ) + + if crosses_source_interior(trunk_ch.x) and not crosses_source_interior( + ch.x ): continue members.append(ch) From f7e1093880f1eb008c34fa5d6dc66fda7d54ec84 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 17:30:10 +0100 Subject: [PATCH 024/158] fix(routing): preserve settled convergence member geometry [skip ci] --- src/nf_metro/layout/routing/convergences.py | 44 +++++++++++++++++++ .../layout/routing/member_geometry.py | 38 +++++++++++++++- tests/test_final_convergence_feasibility.py | 18 ++++++++ tests/test_member_geometry.py | 28 ++++++++++++ 4 files changed, 126 insertions(+), 2 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 33039b85b..7061e926e 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -5202,6 +5202,44 @@ def _gap_channel_clearance_requirements( ) if requirement is not None: requirements.append(requirement) + + for plan in plans: + for channel in _plan_gap_channels(plan, graph, lookup): + for fixed in fixed_channels: + if ( + channel.gap != fixed.gap + or channel.line_ids.isdisjoint(fixed.line_ids) + or channel.down is fixed.down + or not spans_share_corridor( + channel.y_lo, + channel.y_hi, + fixed.y_lo, + fixed.y_hi, + ) + ): + continue + clearance = _landing_channel_clearance(channel, fixed) + if ( + clearance is None + or abs(channel.coordinate - fixed.coordinate) + >= clearance - COORD_TOLERANCE + ): + continue + lower_col, row = channel.gap + left, right = column_gap_edges(graph, lower_col, lower_col + 1, row=row) + candidate = max(channel.coordinate, fixed.coordinate) + clearance + if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE: + continue + requirement = _column_clearance_requirement( + graph, + lower_col, + row, + str(plan.system_id), + f"convergence system {plan.system_id} opposing member clearance", + required_width=candidate + EDGE_TO_BUNDLE_CLEARANCE - left, + ) + if requirement is not None: + requirements.append(requirement) return tuple(requirements) @@ -5455,6 +5493,12 @@ def _validate_final_convergence_feasibility( ) - COORD_TOLERANCE ): + if any( + requirement.owner_id == str(plan.system_id) + and requirement.boundary == channel.gap[0] + 1 + for requirement in clearance_requirements + ): + continue joined = ", ".join(sorted(shared_lines)) raise FinalConvergenceFeasibilityError( f"final convergence plan {plan.id} crowds an opposing " diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 4f7f4ca17..619e8900d 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -37,6 +37,8 @@ RoutedPath, column_gap_edges, convergence_owns_segment_boundary, + gap_lo_for_x, + iter_vertical_segments, segment_direction, ) from nf_metro.layout.routing.context import SettledExitTurn, _RoutingCtx @@ -786,9 +788,10 @@ def _freeze_plan( system_id = candidate.system_id resolved = ResolvedEdge(route.edge.source, route.edge.target, route.line_id) member_id = scaffold.member_id_by_edge[resolved] + gap_slots = _frozen_gap_slots(route, ctx.graph) channels: list[RouteMemberGapChannel] = [] channel_claims: set[tuple[int, int, int | None, Direction]] = set() - for slot in route.gap_slots: + for slot in gap_slots: channel = _locate_slot_channel(route, slot, ctx.graph) if channel is None: continue @@ -823,7 +826,7 @@ def _freeze_plan( None if route.curve_radii is None else tuple(route.curve_radii), route.offset_regime, route.normalize_exempt, - tuple(route.gap_slots), + gap_slots, route.trunk_slot, tuple(channels), tuple(sorted(corner_offsets.items())), @@ -843,6 +846,37 @@ def _freeze_plan( ) +def _frozen_gap_slots(route: RoutedPath, graph: MetroGraph) -> tuple[GapSlot, ...]: + """Bind each frozen slot to the leg its completed member route occupies.""" + slots: list[GapSlot] = [] + seen: set[tuple[int, int | None, Direction]] = set() + verticals = tuple(iter_vertical_segments(route)) + for slot in route.gap_slots: + candidates = [ + segment + for segment in verticals + if gap_lo_for_x(graph, segment[1], segment[2], segment[3]) + == (slot.gap_lo_col, slot.row) + ] + if not candidates: + continue + _rank, _x, _y_lo, _y_hi, down = next( + ( + segment + for segment in candidates + if (segment[4] and slot.direction is Direction.D) + or (not segment[4] and slot.direction is Direction.U) + ), + candidates[0], + ) + frozen = replace(slot, direction=Direction.D if down else Direction.U) + key = (frozen.gap_lo_col, frozen.row, frozen.direction) + if key not in seen: + seen.add(key) + slots.append(frozen) + return tuple(slots) + + def _materialized_channels( candidates: Iterable[_MemberCandidate], ctx: _RoutingCtx ) -> tuple[_MaterializedChannel, ...]: diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index 9fd40c0a9..b310d042a 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -241,6 +241,24 @@ def test_distinct_source_convergences_keep_opposing_same_line_channels(path) -> ) +def test_seed_15_requests_column_space_for_opposing_member_channels() -> None: + """The settled seed delegates its crowded convergence lane to the grid.""" + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + + requirements = observation.plan.boundary_clearance_requirements + assert len(requirements) == 1 + requirement = requirements[0] + assert requirement.axis.value == "column" + assert requirement.boundary == 3 + assert requirement.description.endswith("opposing member clearance") + + def test_shared_source_convergences_fuse_one_opening_carrier() -> None: path = ROOT / "examples" / "topologies" / "merge_around_below_leftmost.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index f8066c5ea..ebd7747d2 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -201,6 +201,34 @@ def _assert_channels_equal_emission(observation, plan) -> None: ) +def test_seed_15_freezes_gap_slots_with_the_completed_member_leg_direction() -> None: + """A post-materialization climb retains its upward slot in the frozen plan.""" + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + plan = next( + plan + for plan in observation.plan.member_geometry_plans + if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") + ) + + assert [(slot.gap_lo_col, slot.row, slot.direction) for slot in plan.gap_slots] == [ + (2, 2, Direction.D), + (5, 2, Direction.U), + ] + assert [ + (channel.gap_lo_col, channel.row, channel.direction) + for channel in plan.gap_channels + ] == [ + (2, 2, Direction.D), + (5, 2, Direction.U), + ] + + def test_live_claim_index_exposes_only_eligible_prior_systems_in_order() -> None: failed = RouteSystemId("failed") survivor = RouteSystemId("survivor") From faf1801989d60fee0e751ba4314661461e4f3786 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 17:47:16 +0100 Subject: [PATCH 025/158] fix(layout): seat canvas doglegs before member freeze [skip ci] --- src/nf_metro/layout/routing/convergences.py | 20 ++++++----- src/nf_metro/layout/routing/normalize.py | 27 ++++++++++++-- tests/test_member_geometry.py | 40 +++++++++++++++++++-- 3 files changed, 73 insertions(+), 14 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 7061e926e..2f5fa284e 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -5205,29 +5205,31 @@ def _gap_channel_clearance_requirements( for plan in plans: for channel in _plan_gap_channels(plan, graph, lookup): - for fixed in fixed_channels: + for fixed_channel in fixed_channels: if ( - channel.gap != fixed.gap - or channel.line_ids.isdisjoint(fixed.line_ids) - or channel.down is fixed.down + channel.gap != fixed_channel.gap + or channel.line_ids.isdisjoint(fixed_channel.line_ids) + or channel.down is fixed_channel.down or not spans_share_corridor( channel.y_lo, channel.y_hi, - fixed.y_lo, - fixed.y_hi, + fixed_channel.y_lo, + fixed_channel.y_hi, ) ): continue - clearance = _landing_channel_clearance(channel, fixed) + clearance = _landing_channel_clearance(channel, fixed_channel) if ( clearance is None - or abs(channel.coordinate - fixed.coordinate) + or abs(channel.coordinate - fixed_channel.coordinate) >= clearance - COORD_TOLERANCE ): continue lower_col, row = channel.gap left, right = column_gap_edges(graph, lower_col, lower_col + 1, row=row) - candidate = max(channel.coordinate, fixed.coordinate) + clearance + candidate = ( + max(channel.coordinate, fixed_channel.coordinate) + clearance + ) if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE: continue requirement = _column_clearance_requirement( diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 5d8e9a43b..90e596063 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3891,6 +3891,28 @@ def _exempt_trunk_separation( ) +def _seat_exempt_trunk_dogleg( + trunk: _HTrunk, target_y: float, ctx: _RoutingCtx +) -> None: + """Move a dogleg trunk and bind its corridor declaration to the new run.""" + band = corridor_clearance_band( + ctx.graph, + axis=1, + section_ids=_route_endpoint_section_ids(ctx.graph, trunk.route), + coordinate=target_y, + run_start=trunk.x_lo, + run_end=trunk.x_hi, + ) + if ( + band is not None + and band.boundary is None + and band.hi >= band.lo - COORD_TOLERANCE + ): + target_y = min(max(target_y, band.lo), band.hi) + _restack_htrunk(trunk, target_y, 0, 1, ctx.offset_step, ctx.curve_radius) + _reconcile_moved_trunk_slot(trunk.route, trunk.idx, target_y, ctx.graph) + + def _dogleg_off_exempt_trunks( routes: list[RoutedPath], ctx: _RoutingCtx, @@ -3989,9 +4011,8 @@ def _dogleg_off_exempt_trunks( else: continue new_y = down_y if use_down else up_y - _restack_htrunk(t, new_y, 0, 1, ctx.offset_step, ctx.curve_radius) + _seat_exempt_trunk_dogleg(t, new_y, ctx) - step = ctx.offset_step for t in _collect_htrunks(routes): owned = route_system_owns_segment_boundary(t.route, t.idx) if id(t.route) in skip or ( @@ -4054,7 +4075,7 @@ def _dogleg_off_exempt_trunks( changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) continue target = below if use_below else above - _restack_htrunk(t, target, 0, 1, step, ctx.curve_radius) + _seat_exempt_trunk_dogleg(t, target, ctx) return changed diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index ebd7747d2..cb36a63e4 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -9,7 +9,12 @@ import nf_metro.layout.routing.member_geometry as member_geometry from nf_metro.api import prepare_graph -from nf_metro.layout.constants import CURVE_RADIUS, DIAGONAL_RUN, OFFSET_STEP +from nf_metro.layout.constants import ( + CURVE_RADIUS, + DIAGONAL_RUN, + INTER_ROW_EDGE_CLEARANCE, + OFFSET_STEP, +) from nf_metro.layout.route_plan import ( BindingKind, ConvergenceEndpointRole, @@ -22,7 +27,13 @@ build_route_semantic_scaffold, serialize_route_plan, ) -from nf_metro.layout.routing.common import Direction, GapSlot, OffsetRegime, RoutedPath +from nf_metro.layout.routing.common import ( + Direction, + GapSlot, + OffsetRegime, + RoutedPath, + TrunkSlot, +) from nf_metro.layout.routing.context import _build_routing_context from nf_metro.layout.routing.core import _route_edges, observe_route_edges from nf_metro.layout.routing.corners import ( @@ -229,6 +240,31 @@ def test_seed_15_freezes_gap_slots_with_the_completed_member_leg_direction() -> ] +def test_seed_15_freezes_canvas_dogleg_clearance_and_slot_atomically() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + plan = next( + plan + for plan in observation.plan.member_geometry_plans + if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") + ) + blocker = graph.sections["s6"] + trunk_y = plan.points[2][1] + + assert trunk_y == pytest.approx( + blocker.bbox_y + blocker.bbox_h + INTER_ROW_EDGE_CLEARANCE + ) + assert plan.trunk_slot == TrunkSlot(gap_upper_row=None) + assert plan.gap_channels[0].end[1] == pytest.approx(trunk_y) + assert plan.gap_channels[1].start[1] == pytest.approx(trunk_y) + _assert_channels_equal_emission(observation, plan) + + def test_live_claim_index_exposes_only_eligible_prior_systems_in_order() -> None: failed = RouteSystemId("failed") survivor = RouteSystemId("survivor") From 2ff3b8ecfe3e1845ed2458b61c53630fb52adc15 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 18:13:22 +0100 Subject: [PATCH 026/158] refactor(routing): centralize inter-section grid resolution [skip ci] --- .../layout/routing/inter_section_handlers.py | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 6e7dbd0b3..ea67ec743 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -86,6 +86,7 @@ packed_cell_neighbor_edges, reserved_row_band_between, resolve_section, + resolve_section_colrow, right_normal_axis_sign, row_bottom_edge, row_top_edge, @@ -101,8 +102,6 @@ _get_offset, _has_intervening_sections, _hop_needs_bypass, - _resolve_section_col, - _resolve_section_colrow, _RoutingCtx, _tb_x_offset, is_near_vertical_drop, @@ -235,7 +234,7 @@ def section_colrow(self, station: Station) -> tuple[int | None, int | None]: self.src.id: (self.src_col, self.src_row), self.tgt.id: (self.tgt_col, self.tgt_row), }.get(station.id) - return cached or _resolve_section_colrow(self.graph, station) + return cached or resolve_section_colrow(self.graph, station) def h_segment_crosses_other_section( self, @@ -519,8 +518,8 @@ def _build_inter_facts( edge: Edge, src: Station, tgt: Station, ctx: _RoutingCtx ) -> _InterFacts: graph = ctx.graph - src_col, src_row = _resolve_section_colrow(graph, src) - tgt_col, tgt_row = _resolve_section_colrow(graph, tgt) + src_col, src_row = resolve_section_colrow(graph, src) + tgt_col, tgt_row = resolve_section_colrow(graph, tgt) bypass = _hop_needs_bypass( graph, HopEnd(src, src_col, src_row), HopEnd(tgt, tgt_col, tgt_row) ) @@ -1689,7 +1688,7 @@ def _route_merge_entry_right_wrap(f: _InterFacts) -> RoutedPath: """Feed a merge into a RIGHT entry from the port's outward side.""" src_col = f.src_col if f.src_col is not None else 0 assert f.merge_ep is not None - ep_col, _ep_row = _resolve_section_colrow(f.graph, f.merge_ep) + ep_col, _ep_row = f.section_colrow(f.merge_ep) tgt_col = ep_col if ep_col is not None else src_col channel_y = bypass_bottom_y( f.graph, @@ -2812,7 +2811,7 @@ def _route_bottom_exit_junction_via_gap( tgt_port = ctx.graph.ports.get(edge.target) if tgt_port is None or tgt_port.side != PortSide.LEFT: return None - ep_col, ep_row = _resolve_section_colrow(ctx.graph, tgt) + ep_col, ep_row = resolve_section_colrow(ctx.graph, tgt) if ep_col is None or ep_row is None: return None corner_x = _corridor_descent_x(ctx, ep_col, ep_row, 0.0) @@ -5543,8 +5542,8 @@ def _left_exit_left_entry_drop_channel_x( stand on one column, the way :func:`seated_left_exit_under_target_descent` does for the far-side loop. """ - src_col = _resolve_section_col(ctx.graph, src) - tgt_col = _resolve_section_col(ctx.graph, tgt) + src_col, _src_row = resolve_section_colrow(ctx.graph, src) + tgt_col, _tgt_row = resolve_section_colrow(ctx.graph, tgt) left_edge = min( col_left_edge(ctx.graph, src_col, default=src.x), col_left_edge(ctx.graph, tgt_col, default=tgt.x), @@ -5733,7 +5732,7 @@ def _fan_corner_x( src_col, src_row = ( facts.section_colrow(src) if facts is not None - else _resolve_section_colrow(ctx.graph, src) + else resolve_section_colrow(ctx.graph, src) ) if src_col is None: return stand_off @@ -6006,7 +6005,7 @@ def _left_entry_wrap_geometry( # the same target column, anchor the descent channel to the column's LEFT # edge so the spine and the corridor overlay as one bundle instead of smearing. if fan is not None and _fan_has_corridor_sibling(edge.source, ctx): - tgt_col = _resolve_section_col(ctx.graph, tgt) + tgt_col, _tgt_row = resolve_section_colrow(ctx.graph, tgt) if tgt_col is not None: shared_vx = _fan_left_entry_descent_x(ctx, tgt_col, pos_n, 0.0) if shared_vx is not None: @@ -6309,8 +6308,8 @@ def _corridor_is_viable(ctx: _RoutingCtx, src: Station, entry_port: Station) -> ep_port = ctx.graph.ports.get(entry_port.id) if ep_port is None or ep_port.side != PortSide.LEFT: return False - src_col, src_row = _resolve_section_colrow(ctx.graph, src) - ep_col, ep_row = _resolve_section_colrow(ctx.graph, entry_port) + src_col, src_row = resolve_section_colrow(ctx.graph, src) + ep_col, ep_row = resolve_section_colrow(ctx.graph, entry_port) if src_row is None or ep_row is None or src_col is None or ep_col is None: return False if ep_row <= src_row: @@ -6382,8 +6381,8 @@ def _route_inter_row_gap_corridor( ctx, edge, src, i, n, vertical_direction(entry_port.y - src.y) ) - src_col, src_row = _resolve_section_colrow(ctx.graph, src) - ep_col, ep_row = _resolve_section_colrow(ctx.graph, entry_port) + src_col, src_row = resolve_section_colrow(ctx.graph, src) + ep_col, ep_row = resolve_section_colrow(ctx.graph, entry_port) # Guaranteed by the _corridor_is_viable check at every call site. assert ( src_col is not None @@ -6511,8 +6510,8 @@ def _around_section_below_geometry( # Bypass Y below all sections in the column range so the route # clears every intervening section (cross_row=True). - src_col, src_row = _resolve_section_colrow(ctx.graph, src) - ep_col = _resolve_section_col(ctx.graph, entry_port) + src_col, src_row = resolve_section_colrow(ctx.graph, src) + ep_col, _ep_row = resolve_section_colrow(ctx.graph, entry_port) # Fallbacks if a column can't be resolved (degenerate cases). bc_src_col = src_col if src_col is not None else 0 bc_tgt_col = ep_col if ep_col is not None else bc_src_col From 6d24a0bde6f2fa66ffcd39bc300ff865b8f9e528 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 18:18:03 +0100 Subject: [PATCH 027/158] fix(routing): preserve separated fan source lanes [skip ci] --- src/nf_metro/layout/routing/inter_section_handlers.py | 6 ++++++ tests/test_fan_standard_routing.py | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index ea67ec743..808946ee3 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -4218,6 +4218,12 @@ def _anchor_l_shape_fan_source_lane( if assignment.planned_family_id is RouteFamilyId.SAME_Y_STRAIGHT and assignment.source_lane_rank != membership.assignment.source_lane_rank ) + straight_ys = tuple(src.y + offset for offset in straight_offsets) + if not any( + abs(route.points[0][1] - straight_y) <= COORD_TOLERANCE + for straight_y in straight_ys + ): + return shift = ( -ctx.offset_step if source_offset < min(straight_offsets) else ctx.offset_step ) diff --git a/tests/test_fan_standard_routing.py b/tests/test_fan_standard_routing.py index 11f6bbe3b..3a5e5098f 100644 --- a/tests/test_fan_standard_routing.py +++ b/tests/test_fan_standard_routing.py @@ -119,6 +119,15 @@ def test_stacked_right_entry_fan_continues_the_incoming_lanes() -> None: assert check_fan_opening_geometry(graph, routes, offsets) +def test_l_shape_fan_keeps_an_already_separated_source_lane() -> None: + graph, routes, _offsets = _layout("fanout_bundle_plus_spurs") + junction_id = next(iter(graph.junction_ids)) + incoming, outgoing = _junction_routes(routes, junction_id) + + assert outgoing["b"].points[0][1] == pytest.approx(incoming["b"].points[-1][1]) + assert outgoing["b"].points[1][1] == pytest.approx(incoming["b"].points[-1][1]) + + def test_stacked_right_multiline_branch_keeps_lane_order_through_landing() -> None: graph, routes, offsets = _layout("bottom_exit_stacked_right_entry_multiline_branch") upper = { From aa598c34f9292eba75649aa4d203ea2d93c28223 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 18:29:33 +0100 Subject: [PATCH 028/158] fix(routing): preserve convergence corner metadata [skip ci] --- src/nf_metro/layout/routing/context.py | 13 ++++++++--- src/nf_metro/layout/routing/convergences.py | 8 +++---- src/nf_metro/layout/routing/exit_turns.py | 24 +++++++++++---------- src/nf_metro/layout/routing/offsets.py | 19 +++++++++------- 4 files changed, 38 insertions(+), 26 deletions(-) diff --git a/src/nf_metro/layout/routing/context.py b/src/nf_metro/layout/routing/context.py index f45c5745c..438b653ea 100644 --- a/src/nf_metro/layout/routing/context.py +++ b/src/nf_metro/layout/routing/context.py @@ -598,7 +598,7 @@ def _section_lane_frame( A vertical-flow section whose bundle draws on the ``+x`` (feed) side (:func:`tb_positive_fan_sections`) carries a ``+1`` lane sign so the lane accessor reports the side the section actually draws on, matching - :func:`_tb_x_offset`. ``positive_fan`` lets a caller in a per-element loop + :func:`_perpendicular_port_lane_offset`. ``positive_fan`` lets a caller pass that set once rather than re-deriving its reversal fixed-point per call. """ frame = AxisFrame.for_direction( @@ -700,10 +700,10 @@ def lane_x( raise ValueError(f"section {section.id!r} has no anchor station for {line_id!r}") -def _tb_x_offset( +def _perpendicular_port_lane_offset( ctx: _RoutingCtx, station_id: str, line_id: str, section_id: str | None ) -> float: - """Compute the X offset for a line at a station in a vertical-flow section. + """Compute the lane-axis offset for a line at a perpendicular port. A vertical-flow section is the horizontal model rotated 90 degrees: where an LR line rides ``y + offset``, a vertical-flow line rides @@ -722,6 +722,13 @@ def _tb_x_offset( return lane_delta(frame, offset) +def _tb_x_offset( + ctx: _RoutingCtx, station_id: str, line_id: str, section_id: str | None +) -> float: + """Compatibility name for the orientation-neutral lane accessor.""" + return _perpendicular_port_lane_offset(ctx, station_id, line_id, section_id) + + def _resolve_section_col(graph: MetroGraph, station: Station) -> int | None: """Resolve the grid column for a port or junction station.""" sec = resolve_section(graph, station, prefer_upstream=False) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 2f5fa284e..1b7ab25aa 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -81,9 +81,9 @@ ) from nf_metro.layout.routing.context import ( _EdgeKey, + _perpendicular_port_lane_offset, _resolve_section_colrow, _RoutingCtx, - _tb_x_offset, ) from nf_metro.layout.routing.member_geometry import ( MemberGeometryExecution, @@ -1667,7 +1667,7 @@ def _reconcile_landing_handedness( opening_x = landing.opening_turn_segment[0][0] section = resolve_section(graph, source, prefer_upstream=True) source_x = source.x + ( - _tb_x_offset( + _perpendicular_port_lane_offset( ctx, source.id, landing.edge.line_id, @@ -1719,7 +1719,7 @@ def _reconcile_landing_handedness( else: section = resolve_section(graph, source, prefer_upstream=True) source_x = source.x + ( - _tb_x_offset( + _perpendicular_port_lane_offset( ctx, source.id, landing.edge.line_id, @@ -6562,7 +6562,7 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: route.points = route.points[: opening.idx + 2] route.points[-1] = landing.join_point if route.curve_radii is not None: - route.curve_radii = route.curve_radii[: opening.idx + 1] + route.curve_radii = route.curve_radii[: opening.idx] if plan.primary_trunk_member_id == membership.member_id: if plan.primary_trunk_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH: _bake_route(route, ctx) diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index 3266701a2..cff18524a 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -64,7 +64,7 @@ segment_direction, vertical_direction, ) -from nf_metro.layout.routing.context import _RoutingCtx, _tb_x_offset +from nf_metro.layout.routing.context import _perpendicular_port_lane_offset, _RoutingCtx from nf_metro.layout.routing.corners import concentric_corner_radius_at from nf_metro.layout.routing.families import ( BYPASS_ROUTE_FAMILY_VALUES, @@ -715,7 +715,7 @@ def riser_lateral(line_id: str) -> float: return _perp_riser_lateral( ctx, exit_port_id, line_id, exit_port.side, section_id ) - return _tb_x_offset(ctx, source_id, line_id, section_id) + return _perpendicular_port_lane_offset(ctx, source_id, line_id, section_id) graph_rank = {line_id: rank for rank, line_id in enumerate(ctx.graph.lines)} values = [] @@ -791,7 +791,7 @@ def _bottom_exit_junction_turn_requirement( exit_pid, exit_sec = _bottom_exit_junction_exit_port(ctx, edge.source) def exit_x_offset(line_id: str) -> float: - return _tb_x_offset(ctx, exit_pid, line_id, exit_sec) + return _perpendicular_port_lane_offset(ctx, exit_pid, line_id, exit_sec) members, _source_center, tgt_center = gather_tapered_bundle(ctx, edge) geometry = _bottom_exit_junction_geometry( @@ -1560,13 +1560,13 @@ def _source_lane_ownership( target_offsets = dict(offsets) target_offsets[exit_port_id, line_id] = desired target_ctx = replace(ctx, station_offsets=target_offsets) - source_offset = _tb_x_offset( + source_offset = _perpendicular_port_lane_offset( source_ctx, candidate, line_id, graph.stations[candidate].section_id, ) - target_offset = _tb_x_offset( + target_offset = _perpendicular_port_lane_offset( target_ctx, exit_port_id, line_id, @@ -1661,13 +1661,13 @@ def _continuation_lane_ownership( if direction_axis(run_direction) is DemandAxis.Y: source_offsets = dict(offsets) source_offsets[source_id, line_id] = desired - source_offset = _tb_x_offset( + source_offset = _perpendicular_port_lane_offset( replace(ctx, station_offsets=source_offsets), source_id, line_id, graph.stations[source_id].section_id, ) - target_offset = _tb_x_offset( + target_offset = _perpendicular_port_lane_offset( replace(ctx, station_offsets=dict(offsets)), entry_id, line_id, @@ -1721,13 +1721,13 @@ def _continuation_lane_ownership( if direction_axis(run_direction) is DemandAxis.Y: source_offsets = dict(offsets) source_offsets[current, line_id] = desired - source_offset = _tb_x_offset( + source_offset = _perpendicular_port_lane_offset( replace(ctx, station_offsets=source_offsets), current, line_id, graph.stations[current].section_id, ) - target_offset = _tb_x_offset( + target_offset = _perpendicular_port_lane_offset( replace(ctx, station_offsets=dict(offsets)), candidate, line_id, @@ -3097,7 +3097,9 @@ def _planned_axis_cross_range( def bej_exit_x_offset( line_id: str, _pid: str = exit_pid, _sec: str = exit_sec ) -> float: - return _tb_x_offset(tentative_ctx, _pid, line_id, _sec) + return _perpendicular_port_lane_offset( + tentative_ctx, _pid, line_id, _sec + ) bej_members, _bej_source_center, bej_tgt_center = gather_tapered_bundle( tentative_ctx, graph_edge @@ -3163,7 +3165,7 @@ def bej_exit_x_offset( if geometry.bundle_offsets is None: values.extend((geometry.points[0][0], geometry.points[-1][0])) else: - effective_offset = _tb_x_offset( + effective_offset = _perpendicular_port_lane_offset( tentative_ctx, edge.source, edge.line_id, diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index aa506ee6f..0a4d39cfa 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -16,6 +16,7 @@ AxisFrame, flow_port_sides, lanes_run_along_x, + lanes_run_along_y, perpendicular_port_sides, station_lane_coord, ) @@ -225,8 +226,9 @@ def _stores_reflected(ctx: _OffsetCtx, sec_id: str | None) -> bool: A reverse-flow horizontal section stores the reflection ``(max - slot)`` so its bundle draws on the far side of the trunk for the reversed flow. A vertical-flow (TB) section instead stores its arrival order positively and - draws the rotation ``x - offset`` (:func:`context._tb_x_offset`); there the - side is carried by the draw sign, not by reflecting the stored slot, so the + draws the rotation ``x - offset`` + (:func:`context._tb_x_offset`); there the side is + carried by the draw sign, not by reflecting the stored slot, so the marker span and the drawn lines agree by construction. This horizontal reflection is a storage convention threaded through every @@ -873,7 +875,7 @@ def _reorder_fanout_divergence(ctx: _OffsetCtx) -> None: return graph = ctx.graph for sec_id, section in graph.sections.items(): - if section.direction not in ("LR", "RL"): + if not lanes_run_along_y(section.direction): continue jid = _section_exit_fanout_junction(ctx, section) if jid is None: @@ -899,7 +901,7 @@ def _reconcile_fanout_junction_offsets(ctx: _OffsetCtx) -> None: """Assign each clean divergence's settled slots in semantic peel order.""" for junction_id, exit_port_id in ctx.divergence_exit_ports.items(): source_section = ctx.graph.section_for_port(ctx.graph.ports[exit_port_id]) - if source_section.direction not in ("LR", "RL"): + if not lanes_run_along_y(source_section.direction): continue peel_order = fanout_divergence_peel_order( ctx.graph, junction_id, ctx.line_priority, ctx.topology @@ -984,7 +986,7 @@ def _reorder_exit_only_lines(ctx: _OffsetCtx) -> None: continue section = graph.sections.get(station.section_id) - if not section or section.direction not in ("LR", "RL"): + if not section or not lanes_run_along_y(section.direction): continue lines = graph.station_lines(sid) @@ -1288,7 +1290,7 @@ def _settle_exit_survivor_frames(ctx: _OffsetCtx) -> None: """Compact each single-entry section's surviving exit cohort.""" graph = ctx.graph for section in graph.sections.values(): - if section.direction not in ("LR", "RL") or len(section.entry_ports) != 1: + if not lanes_run_along_y(section.direction) or len(section.entry_ports) != 1: continue entry_id = section.entry_ports[0] entry_lines = set(graph.station_lines(entry_id)) @@ -1463,8 +1465,9 @@ def _compute_exit_port_offsets(ctx: _OffsetCtx) -> None: TB sections with LEFT/RIGHT exits: the exit-port Y order is whatever makes the drop -> turn concentric corner nest without pinching. The drop continues the in-section column order (raw internal offset for a RIGHT-entry - section, its reverse otherwise, mirroring :func:`_tb_x_offset`). A RIGHT - exit (down -> east turn) reverses the column across the corner, so its port + section, its reverse otherwise, mirroring + :func:`_tb_x_offset`). A RIGHT exit (down -> east turn) + reverses the column across the corner, so its port order is the reverse of the column; a LEFT exit (down -> west turn) keeps it, so its port order equals the column. Reversing unconditionally double- reverses a non-right-entry RIGHT exit and crosses the bundle at the feeder From ade803797ef2d7977e7cbc80661842639631b538 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 18:32:36 +0100 Subject: [PATCH 029/158] fix(routing): isolate deferred dogleg settlement [skip ci] --- src/nf_metro/layout/routing/member_geometry.py | 12 ++++++++++-- src/nf_metro/layout/routing/normalize.py | 11 ++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 619e8900d..1eecfd7a7 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -589,11 +589,19 @@ def _settled_exit_turns( ), candidate.validate_corner_radii, ) + pending_routes = tuple(candidate.route for candidate in candidates) + pending_route_ids = frozenset(id(route) for route in pending_routes) + settlement_population = [ + route + for route in routes + if route.normalize_exempt or id(route) in pending_route_ids + ] reseated = _dogleg_off_exempt_trunks( - list(routes), + settlement_population, ctx, - movable_owned_route_ids=frozenset(id(route) for route in routes), + movable_owned_route_ids=pending_route_ids, reconcile_owned_corridor=True, + nested_only=True, ) for route in routes: edge_key = (route.edge.source, route.edge.target, route.line_id) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 90e596063..ae6686e83 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3920,6 +3920,7 @@ def _dogleg_off_exempt_trunks( *, movable_owned_route_ids: frozenset[int] = frozenset(), reconcile_owned_corridor: bool = False, + nested_only: bool = False, ) -> set[tuple[str, str, str]]: """Offset a non-exempt trunk drawn collinear with an exempt run. @@ -3953,7 +3954,8 @@ def _dogleg_off_exempt_trunks( return set() clearance = EDGE_TO_BUNDLE_CLEARANCE changed: set[tuple[str, str, str]] = set() - for t in _collect_htrunks(routes): + same_line_trunks = () if nested_only else _collect_htrunks(routes) + for t in same_line_trunks: owned = route_system_owns_segment_boundary(t.route, t.idx) if id(t.route) in skip or ( owned and id(t.route) not in movable_owned_route_ids @@ -4059,6 +4061,13 @@ def _dogleg_off_exempt_trunks( obstacle = _htrunk_seg(hit, hit.y) cross_below = trunk_segments_cross(_htrunk_seg(t, below), obstacle) cross_above = trunk_segments_cross(_htrunk_seg(t, above), obstacle) + if nested_only: + if (cross_below is not None and cross_above is not None) or not ( + below_ok or above_ok + ): + if reconcile_owned_corridor: + changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) + continue if cross_below is not None and cross_above is not None: if reconcile_owned_corridor: changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) From 8591e7e064daf1da601592f9ce7a10aeedc7d91f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 18:35:02 +0100 Subject: [PATCH 030/158] fix(routing): preserve fork frames during allocation [skip ci] --- src/nf_metro/layout/routing/planning.py | 44 +++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index 1fafdb6ee..5a1255834 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -6,9 +6,11 @@ from dataclasses import dataclass, replace from types import MappingProxyType +from nf_metro.layout.constants import COORD_TOLERANCE from nf_metro.layout.route_plan import ( EmissionMemberId, ExitTurnPlanId, + RouteMemberGeometryPlan, RouteSystemDisposition, RouteSystemId, ) @@ -69,6 +71,35 @@ def _allocation_eligible_system_ids( return preliminary_planned_ids - member_failure_ids +def _allocated_points_in_source_frame( + plan: RouteMemberGeometryPlan, + allocated: RouteMemberGeometryPlan, + ctx: _RoutingCtx, +) -> tuple[tuple[float, float], ...]: + """Keep an allocated route's initial run on its frozen fork frame.""" + if plan.edge.source not in ctx.fork_stations or len(allocated.points) < 2: + return allocated.points + first, second = allocated.points[:2] + if abs(first[0] - second[0]) <= COORD_TOLERANCE: + secondary_axis = 0 + elif abs(first[1] - second[1]) <= COORD_TOLERANCE: + secondary_axis = 1 + else: + return allocated.points + allocated_frame = first[secondary_axis] + execution_frame = plan.points[0][secondary_axis] + if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE: + return allocated.points + points = list(allocated.points) + for index, point in enumerate(points): + if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE: + break + shifted = list(point) + shifted[secondary_axis] = execution_frame + points[index] = (shifted[0], shifted[1]) + return tuple(points) + + def _with_settled_exit_turns( execution: MemberGeometryExecution, allocation: MemberGeometryExecution, @@ -104,14 +135,23 @@ def _with_settled_exit_turns( or ctx.merge.entry_port_for.get(plan.edge.target, plan.edge.target) in reconciled_targets ) and allocated is not None: + allocated_points = _allocated_points_in_source_frame(plan, allocated, ctx) + gap_channels = tuple( + replace( + channel, + start=allocated_points[channel.segment_rank], + end=allocated_points[channel.segment_rank + 1], + ) + for channel in allocated.gap_channels + ) plans.append( replace( plan, - points=allocated.points, + points=allocated_points, curve_radii=allocated.curve_radii, gap_slots=allocated.gap_slots, trunk_slot=allocated.trunk_slot, - gap_channels=allocated.gap_channels, + gap_channels=gap_channels, concentric_corner_offsets_by_segment=( allocated.concentric_corner_offsets_by_segment ), From 7dc7a3086e940c32cbbbc10c431cf5fb43cff51d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 18:53:37 +0100 Subject: [PATCH 031/158] refactor(routing): share orientation-neutral geometry [skip ci] --- src/nf_metro/layout/geometry.py | 10 ++++++++++ src/nf_metro/layout/routing/common.py | 3 ++- src/nf_metro/layout/routing/convergences.py | 5 +++-- src/nf_metro/layout/routing/normalize.py | 15 ++++++++------- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/nf_metro/layout/geometry.py b/src/nf_metro/layout/geometry.py index 25022bea7..64d40f7d8 100644 --- a/src/nf_metro/layout/geometry.py +++ b/src/nf_metro/layout/geometry.py @@ -24,6 +24,16 @@ _Box = tuple[float, float, float, float] +def section_bbox_edges(section: Section) -> _Box: + """Return ``(left, top, right, bottom)`` for one section box.""" + return ( + section.bbox_x, + section.bbox_y, + section.bbox_x + section.bbox_w, + section.bbox_y + section.bbox_h, + ) + + def quantize_coord(value: float, ndigits: int) -> float: """Round *value* to *ndigits* decimal places for use as a grouping key. diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index ccdf96e9c..d8d2251a1 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -29,6 +29,7 @@ cotravelling_lanes_fuse, lanes_run_along_x, lanes_run_along_y, + section_bbox_edges, spans_share_corridor, ) from nf_metro.layout.route_topology import ( @@ -261,7 +262,7 @@ def col_right_edge( ) -> float: """Rightmost X extent of sections in *col* (optionally a single *row*).""" secs = _sections_in_col(graph, col, row) - return max((s.bbox_x + s.bbox_w for s in secs), default=default) + return max((section_bbox_edges(s)[2] for s in secs), default=default) def col_left_edge( diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 1b7ab25aa..692af643e 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -22,6 +22,7 @@ ) from nf_metro.layout.geometry import ( cotravelling_lane_clearance, + lanes_run_along_x, measured_distance, point_to_polyline_distance, spans_share_corridor, @@ -1673,7 +1674,7 @@ def _reconcile_landing_handedness( landing.edge.line_id, section.id, ) - if section is not None and section.direction in ("TB", "BT") + if section is not None and lanes_run_along_x(section.direction) else 0.0 ) if abs(source_x - opening_x) > COORD_TOLERANCE: @@ -1725,7 +1726,7 @@ def _reconcile_landing_handedness( landing.edge.line_id, section.id, ) - if section is not None and section.direction in ("TB", "BT") + if section is not None and lanes_run_along_x(section.direction) else 0.0 ) turn_y = ( diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index ae6686e83..3a40816d6 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -26,6 +26,7 @@ from nf_metro.layout.geometry import ( cotravelling_lane_clearance, cotravelling_lanes_fuse, + section_bbox_edges, spans_share_corridor, ) from nf_metro.layout.route_plan import ExitTurnPlanId @@ -3240,20 +3241,20 @@ def _merge_feeder_groups( continue source_section = resolve_section(graph, src_st, prefer_upstream=True) if source_section is not None and source_section.bbox_w > 0: + source_left, _source_top, source_right, _source_bottom = ( + section_bbox_edges(source_section) + ) within_source_band = ( - source_section.bbox_y + COORD_TOLERANCE + _source_top + COORD_TOLERANCE < src_st.y - < source_section.bbox_y + source_section.bbox_h - COORD_TOLERANCE + < _source_bottom - COORD_TOLERANCE ) def crosses_source_interior(x: float) -> bool: return ( within_source_band - and min(src_st.x, x) - < source_section.bbox_x - + source_section.bbox_w - - COORD_TOLERANCE - and max(src_st.x, x) > source_section.bbox_x + COORD_TOLERANCE + and min(src_st.x, x) < source_right - COORD_TOLERANCE + and max(src_st.x, x) > source_left + COORD_TOLERANCE ) if crosses_source_interior(trunk_ch.x) and not crosses_source_interior( From 519090e487507925711cf119f301b85244cd6ea5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 18:59:37 +0100 Subject: [PATCH 032/158] fix(routing): avoid spurious ledger re-routes [skip ci] --- src/nf_metro/render/svg.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index 83c6c1755..acd4b2237 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -23,6 +23,7 @@ import drawsvg as draw from nf_metro.layout.constants import ( + COORD_TOLERANCE, COORD_TOLERANCE_FINE, OFFTRACK_TERMINUS_NUB_CLEARANCE, SAME_COORD_TOLERANCE, @@ -1219,8 +1220,9 @@ def live_band( if ledger is not None and ( derived is None or derived.boundary != boundary - or derived.lo != ledger.lo - or derived.hi != ledger.hi + or not derived.lo - COORD_TOLERANCE + <= allocation_coordinate + <= derived.hi + COORD_TOLERANCE # Only a translation can make a claim's coordinate a # consequence of consuming the ledger. A run that hugs the # box edge its entry port sits on is outside the clearance @@ -1236,12 +1238,20 @@ def live_band( ): return True + claimed_segments = { + (claim.path_rank, rank) + for reservation in plan.reservations + for claim in reservation.claims + for rank in range(claim.segment_rank, claim.segment_end_rank + 1) + } for path_rank, route in enumerate(routes): if not route.is_inter_section: continue if route_span(path_rank) is None: continue for rank, (start, end) in enumerate(zip(route.points, route.points[1:])): + if (path_rank, rank) in claimed_segments: + continue dx = abs(end[0] - start[0]) dy = abs(end[1] - start[1]) if (dx > SAME_COORD_TOLERANCE) == (dy > SAME_COORD_TOLERANCE): From 3a2e87b9783854a17e594b03054423814e8179f5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:05:08 +0100 Subject: [PATCH 033/158] fix(routing): retain exit side through junctions [skip ci] --- .../layout/routing/inter_section_handlers.py | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 808946ee3..1b13aebfb 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -470,12 +470,8 @@ def takes_near_vertical_junction_drop(self) -> bool: @property def is_left_exit(self) -> bool: - """Source is a LEFT-side exit port (not an entry).""" - return ( - self.src_port is not None - and not self.src_port.is_entry - and self.src_port.side is PortSide.LEFT - ) + """Source leaves through a LEFT-side exit.""" + return _source_exit_side(self.graph, self.src) is Direction.L @property def is_serpentine_left_exit_left_entry(self) -> bool: @@ -489,12 +485,8 @@ def is_serpentine_left_exit_left_entry(self) -> bool: @property def is_right_exit(self) -> bool: - """Source is a RIGHT-side exit port (not an entry).""" - return ( - self.src_port is not None - and not self.src_port.is_entry - and self.src_port.side is PortSide.RIGHT - ) + """Source leaves through a RIGHT-side exit.""" + return _source_exit_side(self.graph, self.src) is Direction.R @property def is_stacked_right_exit_right_entry(self) -> bool: From 0764233695dc983b7f36f82f3813810f0305ee63 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:13:08 +0100 Subject: [PATCH 034/158] test(routing): exercise live cotravelling owners [skip ci] --- ...test_fused_cotravelling_lines_invariant.py | 44 +++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index bb7054cfd..e4e834d0c 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -81,9 +81,6 @@ EXAMPLE_TOPOLOGIES / "packed_multiline_serpentine_grid.mmd": frozenset( {("l1", "l2", "X")} ), - CURVE_REPROS / "rl_return_row_convergence.mmd": frozenset( - {("bam", "other", "Y"), ("bam", "snvvcf", "Y")} - ), REGRESSIONS / "entry_trunk_row_bow.mmd": frozenset({("l1", "l2", "Y")}), THROUGH_SECTION / "riboseq_packed_lr.mmd": frozenset({("riboseq", "rnaseq", "X")}), } @@ -153,16 +150,51 @@ def spy(graph, routes, offsets): def _disable_separation_stages(monkeypatch: pytest.MonkeyPatch) -> None: + monkeypatch.setattr( + convergences, + "_pack_cotravelling_corridor_runs", + lambda plans, graph, member_runs: plans, + ) + monkeypatch.setattr( + convergences, + "_separate_distinct_cotravelling_trunks", + lambda plans, graph, member_runs: plans, + ) + monkeypatch.setattr( + convergences, + "_settle_reserved_trunk_axes", + lambda plans, graph, ctx, member_runs: plans, + ) + monkeypatch.setattr( + convergences, + "_repack_crowded_gap_channels", + lambda plans, graph, curve_radius, fixed_channels: plans, + ) + monkeypatch.setattr( + convergences, + "_separate_distinct_terminal_gap_channels", + lambda plans, graph, curve_radius: plans, + ) monkeypatch.setattr( routing_core, "_separate_fused_cotravelling_runs", lambda routes, ctx, **kwargs: None, ) + monkeypatch.setattr( + routing_core, + "_stagger_convergent_distinct_lines", + lambda routes, ctx, **kwargs: set(), + ) monkeypatch.setattr( member_geometry, "_separate_fused_cotravelling_runs", lambda routes, ctx, **kwargs: None, ) + monkeypatch.setattr( + member_geometry, + "_stagger_convergent_distinct_lines", + lambda routes, ctx, **kwargs: set(), + ) def _pair_separations(routes, offsets) -> dict[tuple[str, str, str], float]: @@ -431,11 +463,7 @@ def test_novel_plan_owned_corridor_is_settled_before_freeze( ) -> None: """The gallery reproducer needs pre-freeze planning to remain renderable.""" path = EXAMPLE_TOPOLOGIES / "plan_owned_distinct_lane_separation.mmd" - monkeypatch.setattr( - convergences, - "_separate_distinct_cotravelling_trunks", - lambda plans, graph, member_runs: plans, - ) + _disable_separation_stages(monkeypatch) graph, routes, offsets = _route(path) violations = check_no_fused_cotravelling_lines(graph, routes, offsets) assert any( From ddef0aa3d815a53f89cfcc9a318618e080879134 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:14:10 +0100 Subject: [PATCH 035/158] fix(routing): retain opposing merge trunk lanes [skip ci] --- src/nf_metro/layout/routing/convergences.py | 30 +++++++++++++++++++-- tests/test_shared_trunk_channel_lanes.py | 12 +++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 692af643e..f6e63192b 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -3997,10 +3997,36 @@ def _settle_reserved_trunk_axes( neighbours = tuple( item for item in (*member_runs, *seated_runs) - if item.direction is run.direction - and item.line_ids != run.line_ids + if ( + (item.direction is run.direction and item.line_ids != run.line_ids) + or ( + item.direction is not run.direction + and item.line_ids == run.line_ids + ) + ) and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) ) + opposing_clearance = max( + ( + cotravelling_lane_clearance( + same_line=True, + counter_running=True, + curve_radius=ctx.curve_radius, + ) + for item in neighbours + if item.direction is not run.direction + and item.line_ids == run.line_ids + ), + default=0.0, + ) + if any( + item.direction is not run.direction + and item.line_ids == run.line_ids + and abs(item.coordinate - coordinate) + < opposing_clearance - COORD_TOLERANCE + for item in neighbours + ): + coordinate = axis.coordinate if any( abs(item.coordinate - coordinate) < ctx.offset_step - COORD_TOLERANCE for item in neighbours diff --git a/tests/test_shared_trunk_channel_lanes.py b/tests/test_shared_trunk_channel_lanes.py index 349501c86..d83e55f19 100644 --- a/tests/test_shared_trunk_channel_lanes.py +++ b/tests/test_shared_trunk_channel_lanes.py @@ -132,6 +132,18 @@ def test_one_system_lanes_the_trunk_channel_its_plans_share(path: Path) -> None: ) +def test_reserved_band_does_not_collapse_counter_running_merge_trunks() -> None: + """A reserved row band cannot erase a convergence lane decision.""" + path = ROOT / "examples" / "topologies" / "merge_around_below_leftmost.mmd" + plans = next(iter(_systems_with_shared_trunks(path).values())) + axes = {item.merge_junction_ids: item.trunk_axis for item in plans} + extra = axes[("__merge_2",)] + target = axes[("__merge_3",)] + assert extra is not None and target is not None + assert extra.direction is not target.direction + assert abs(extra.coordinate - target.coordinate) >= LANE_CLEARANCE + + def _member_interior_runs( plan: RoutePlan, system_id: RouteSystemId ) -> list[tuple[float, float, float]]: From d767fd8365487354e8d08ae87257e53be5f5110f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:14:21 +0100 Subject: [PATCH 036/158] fix(routing): preserve mixed fan ownership [skip ci] --- src/nf_metro/layout/routing/context.py | 1 + src/nf_metro/layout/routing/member_geometry.py | 14 ++++++++++---- src/nf_metro/layout/routing/normalize.py | 3 +-- src/nf_metro/layout/routing/offsets.py | 15 ++++++++++++++- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/nf_metro/layout/routing/context.py b/src/nf_metro/layout/routing/context.py index 438b653ea..ed77a1728 100644 --- a/src/nf_metro/layout/routing/context.py +++ b/src/nf_metro/layout/routing/context.py @@ -245,6 +245,7 @@ class _RoutingCtx: diagonal_run: float curve_radius: float validate_final_route_frames: bool = True + destination_tail_movable_route_ids: frozenset[int] | None = None reserved_bands: ReservedCorridors = field(default_factory=ReservedCorridors) prior_exit_turn_dispositions: Mapping[ExitTurnPlanId, str | None] | None = None """Frozen exit-turn dispositions a settlement re-route must redraw. diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 1eecfd7a7..f0396b15d 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -31,6 +31,7 @@ RouteSemanticScaffold, RouteSystemId, ) +from nf_metro.layout.routing import normalize from nf_metro.layout.routing.common import ( Direction, GapSlot, @@ -51,7 +52,6 @@ ) from nf_metro.layout.routing.normalize import ( _bundle_divergent_distinct_traverses, - _bundle_same_destination_tails, _coincide_fanout_opening_descents, _coincide_same_line_fanout_traverses, _coincide_same_line_tracks, @@ -1816,10 +1816,16 @@ def build_member_geometry_execution( # pass, and over the same whole gap population the passes above ranked -- # a bundle carrying an immutable convergence stroke is pinned by it, and # holding the candidates alone would slide them off that stroke. - settled_tail_segments = _bundle_same_destination_tails( - normalization_population, + tail_ctx = replace( ctx, - movable_route_ids=complete_path_route_ids, + destination_tail_movable_route_ids=complete_path_route_ids, + ) + settled_tail_segments = ( + normalize._bundle_same_destination_tails( + normalization_population, + tail_ctx, + ) + or frozenset() ) _hold_runs_in_corridor_clearance( normalization_population, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 3a40816d6..62929948f 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1128,10 +1128,9 @@ def _collect_htrunks( def _bundle_same_destination_tails( routes: list[RoutedPath], ctx: _RoutingCtx, - *, - movable_route_ids: frozenset[int] | None = None, ) -> frozenset[tuple[int, int]]: """Seat eligible same-port destination tails on one eager concentric band.""" + movable_route_ids = ctx.destination_tail_movable_route_ids settled_segments: set[tuple[int, int]] = set() for _bundle, trunks, targets in iter_eligible_destination_tail_bundles( routes, ctx.graph, ctx.offset_step, ctx.curve_radius diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 0a4d39cfa..e558ca8d1 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -899,6 +899,7 @@ def _reorder_fanout_divergence(ctx: _OffsetCtx) -> None: def _reconcile_fanout_junction_offsets(ctx: _OffsetCtx) -> None: """Assign each clean divergence's settled slots in semantic peel order.""" + incoming_count = Counter(edge.target for edge in ctx.graph.edges) for junction_id, exit_port_id in ctx.divergence_exit_ports.items(): source_section = ctx.graph.section_for_port(ctx.graph.ports[exit_port_id]) if not lanes_run_along_y(source_section.direction): @@ -908,10 +909,22 @@ def _reconcile_fanout_junction_offsets(ctx: _OffsetCtx) -> None: ) if peel_order is None: continue + has_converging_arm = True in map( + lambda edge: incoming_count[edge.target] > 1, + ctx.graph.edges_from(junction_id), + ) + preserve_frame = (len(peel_order), has_converging_arm) == (2, True) + line_order = { + False: peel_order, + True: sorted( + peel_order, + key=lambda line_id: ctx.offsets.get((junction_id, line_id), 0.0), + ), + }[preserve_frame] settled = sorted( ctx.offsets.get((junction_id, line_id), 0.0) for line_id in peel_order ) - for line_id, offset in zip(peel_order, settled): + for line_id, offset in zip(line_order, settled): ctx.offsets[(junction_id, line_id)] = offset From e3ae86d41e02674f22e49d13c3d46e44ffdfe05f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:19:59 +0100 Subject: [PATCH 037/158] fix(routing): scope inherited exit sides [skip ci] --- src/nf_metro/layout/routing/convergences.py | 47 ++++++++----------- .../layout/routing/inter_section_handlers.py | 8 +++- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index f6e63192b..7e1c5c253 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -3997,36 +3997,10 @@ def _settle_reserved_trunk_axes( neighbours = tuple( item for item in (*member_runs, *seated_runs) - if ( - (item.direction is run.direction and item.line_ids != run.line_ids) - or ( - item.direction is not run.direction - and item.line_ids == run.line_ids - ) - ) + if item.direction is run.direction + and item.line_ids != run.line_ids and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) ) - opposing_clearance = max( - ( - cotravelling_lane_clearance( - same_line=True, - counter_running=True, - curve_radius=ctx.curve_radius, - ) - for item in neighbours - if item.direction is not run.direction - and item.line_ids == run.line_ids - ), - default=0.0, - ) - if any( - item.direction is not run.direction - and item.line_ids == run.line_ids - and abs(item.coordinate - coordinate) - < opposing_clearance - COORD_TOLERANCE - for item in neighbours - ): - coordinate = axis.coordinate if any( abs(item.coordinate - coordinate) < ctx.offset_step - COORD_TOLERANCE for item in neighbours @@ -4048,6 +4022,23 @@ def _settle_reserved_trunk_axes( key=lambda candidate: abs(candidate - axis.coordinate), default=coordinate, ) + opposing = tuple( + item + for item in seated_runs + if item.direction is not run.direction + and item.line_ids == run.line_ids + and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) + ) + clearance = cotravelling_lane_clearance( + same_line=True, + counter_running=True, + curve_radius=ctx.curve_radius, + ) + if any( + abs(item.coordinate - coordinate) < clearance - COORD_TOLERANCE + for item in opposing + ): + coordinate = axis.coordinate settled.append( _move_trunk_axis(plan, coordinate, preserve_lane_offsets=True) if 0 < abs(coordinate - axis.coordinate) <= BUNDLE_TO_BUNDLE_CLEARANCE diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 1b13aebfb..51d003e23 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -485,8 +485,12 @@ def is_serpentine_left_exit_left_entry(self) -> bool: @property def is_right_exit(self) -> bool: - """Source leaves through a RIGHT-side exit.""" - return _source_exit_side(self.graph, self.src) is Direction.R + """Source is a RIGHT-side exit port (not an entry).""" + return ( + self.src_port is not None + and not self.src_port.is_entry + and self.src_port.side is PortSide.RIGHT + ) @property def is_stacked_right_exit_right_entry(self) -> bool: From fc7a2810e413af250112e059653b5b6cc440dd95 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:20:20 +0100 Subject: [PATCH 038/158] fix(render): reject folded split fan cohorts [skip ci] --- src/nf_metro/render/svg.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index acd4b2237..a9c297cbd 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -639,7 +639,7 @@ def _build_render_plan_result( raise reframed from exc raise - if _fold_back_under_compression(graph): + if _fold_back_under_compression(graph) or _fold_split_fan_cohort(graph): reframed = _fold_threshold_error(graph) if reframed is not None: raise reframed @@ -746,6 +746,36 @@ def _fold_back_under_compression(graph: MetroGraph) -> bool: return any(iter_opposing_line_overlaps(graph)) +def _fold_split_fan_cohort(graph: MetroGraph) -> bool: + """True when folding wedges another destination into a fan cohort. + + Lines leaving one junction for the same destination must occupy adjacent + lanes. A line bound elsewhere between their offsets makes the cohort cross + that line before it can reconverge. Natural-width layouts have enough + runway to move the transition away from the junction; a compressed fold + does not, so the requested threshold cannot be rendered cleanly. + """ + if not graph._fold_compressed_sections: + return False + offsets = compute_station_offsets(graph) + for junction_id in graph.junction_ids: + lines_by_target: dict[str, set[str]] = {} + for edge in graph.edges_from(junction_id): + lines_by_target.setdefault(edge.target, set()).add(edge.line_id) + all_lines = set().union(*lines_by_target.values()) if lines_by_target else set() + for cohort in lines_by_target.values(): + if len(cohort) < 2: + continue + cohort_offsets = [offsets[(junction_id, line_id)] for line_id in cohort] + low, high = min(cohort_offsets), max(cohort_offsets) + if any( + low < offsets[(junction_id, line_id)] < high + for line_id in all_lines - cohort + ): + return True + return False + + def _scale_theme_fonts(theme: Theme, scale: float) -> Theme: """Return a theme with every text size multiplied by ``scale``. From b47e9f85b6c7f9379d2c7ba55c3618e2c6428d38 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:29:12 +0100 Subject: [PATCH 039/158] fix(routing): exempt terminal landings from their own corridor band [skip ci] --- src/nf_metro/layout/routing/reserved_bands.py | 66 ++++++++++++++++++- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/src/nf_metro/layout/routing/reserved_bands.py b/src/nf_metro/layout/routing/reserved_bands.py index 8ed1e6ce7..7bf63ae1e 100644 --- a/src/nf_metro/layout/routing/reserved_bands.py +++ b/src/nf_metro/layout/routing/reserved_bands.py @@ -28,7 +28,7 @@ import math from collections.abc import Callable, Iterator, Mapping, Sequence -from dataclasses import dataclass, field +from dataclasses import dataclass, field, replace from typing import TYPE_CHECKING, TypeAlias from nf_metro.layout.constants import COORD_TOLERANCE @@ -40,6 +40,7 @@ GapCorridorBand, ReservationCoordinateTranslation, RouteReservation, + RouteReservationClaim, ) from nf_metro.parser.model import MetroGraph @@ -476,6 +477,7 @@ class _ClaimViews: def _claim_views( + graph: MetroGraph, plan: RoutePlan, measured: Sequence[tuple[RouteReservation, float, float]], translations: tuple[ReservationCoordinateTranslation, ...], @@ -492,11 +494,63 @@ def _claim_views( """ from nf_metro.layout.route_plan import DemandAxis from nf_metro.layout.route_reservations import ( + ColumnGapRegion, + RouteReservationLane, RowGapRegion, project_reservation_coordinate, + realise_reservation, ) edge_by_member = {member.id: member.edge for member in plan.members} + geometry_by_member = {item.member_id: item for item in plan.member_geometry_plans} + + def terminal_landing_band( + reservation: RouteReservation, + claim: RouteReservationClaim, + lo: float, + hi: float, + ) -> tuple[float, float]: + record = geometry_by_member.get(claim.member_id) + if ( + not isinstance(reservation.region, ColumnGapRegion) + or record is None + or claim.segment_end_rank != len(record.points) - 3 + ): + return lo, hi + target = graph.stations.get(record.edge.target) + if target is None or not target.is_port or target.section_id is None: + return lo, hi + start, end = record.points[claim.segment_end_rank : claim.segment_end_rank + 2] + final_start, final_end = record.points[-2:] + if start[0] != end[0] or final_start[1] != final_end[1]: + return lo, hi + try: + one_claim = replace( + reservation, + claimant_member_ids=(claim.member_id,), + claims=(claim,), + landing_section_ids=(target.section_id,), + lanes=(RouteReservationLane((0,)),), + lane_count=1, + bundle_width=0.0, + minimum_width=( + reservation.negative_side_clearance + + reservation.peer_width + + reservation.positive_side_clearance + ), + ) + realised = realise_reservation( + graph, one_claim, coordinate_translations=translations + ) + except ValueError: + return lo, hi + if realised is None: + return lo, hi + return ( + min(lo, realised.region_start + realised.negative_side_clearance), + max(hi, realised.region_end - realised.positive_side_clearance), + ) + spans: dict[ClaimSegmentKey, tuple[float, float]] = {} allocations: dict[ClaimSegmentKey, tuple[float, float]] = {} # Keyed by the band quantised to the comparison tolerance, so two @@ -508,6 +562,7 @@ def _claim_views( allocation_axis = DemandAxis.Y if is_row else DemandAxis.X band_key = (round(lo / COORD_TOLERANCE), round(hi / COORD_TOLERANCE)) for claim in reservation.claims: + claim_lo, claim_hi = terminal_landing_band(reservation, claim, lo, hi) edge = edge_by_member[claim.member_id] edge_key = (edge.source, edge.target, edge.line_id) bands_by_edge = row_by_edge if is_row else column_by_edge @@ -526,7 +581,12 @@ def _claim_views( key = (*edge_key, rank) held = spans.get(key) spans[key] = ( - (lo, hi) if held is None else (max(held[0], lo), min(held[1], hi)) + (claim_lo, claim_hi) + if held is None + else ( + max(held[0], claim_lo), + min(held[1], claim_hi), + ) ) if allocation is not None: held_allocation = allocations.get(key) @@ -589,7 +649,7 @@ def build_reserved_corridors( from nf_metro.layout.route_reservations import ColumnGapRegion, RowGapRegion measured = tuple(_measured_gap_bands(graph, plan, translations)) - views = _claim_views(plan, measured, translations) + views = _claim_views(graph, plan, measured, translations) return ReservedCorridors( _axis_bands( measured, From a22ac94480ae3eabd69606e07720020b506ca4ce Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:42:56 +0100 Subject: [PATCH 040/158] fix(routing): freeze packed handoffs on carrier [skip ci] --- src/nf_metro/layout/routing/member_geometry.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index f0396b15d..e38f0557d 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1900,6 +1900,7 @@ def build_member_geometry_execution( ], ctx, ) + _align_packed_cell_handoffs(tuple(candidates), ctx, pending_exit_turn_plan_ids) plans = tuple( _freeze_plan( scaffold, From 8609dba862e00f17dfee6299b1c7c98e8eda90b9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:50:42 +0100 Subject: [PATCH 041/158] test(layout): tighten direction predicate ratchet [skip ci] --- tests/test_direction_predicate_ratchet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_direction_predicate_ratchet.py b/tests/test_direction_predicate_ratchet.py index 9f1970cfc..43c9d7f17 100644 --- a/tests/test_direction_predicate_ratchet.py +++ b/tests/test_direction_predicate_ratchet.py @@ -47,7 +47,7 @@ _EXEMPT = frozenset({"layout/geometry.py"}) # Lower these (never raise them) when a call site migrates onto AxisFrame. -_LITERAL_BASELINE = 60 +_LITERAL_BASELINE = 58 _NAMED_BASELINE = 266 _FLOWS = frozenset(FLOW_DIRECTIONS) From 33190c4d0f35278f3a55dfa198f56a8fab923301 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 19:53:44 +0100 Subject: [PATCH 042/158] fix(routing): preserve settled corner inputs [skip ci] --- src/nf_metro/layout/routing/planning.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index 5a1255834..1fdec0ce3 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -128,6 +128,9 @@ def _with_settled_exit_turns( ) rank = plan.exit_turn_segment_rank allocated = allocated_by_edge.get(plan.edge) + allocation_changed_path = ( + allocated is not None and allocated.points != plan.points + ) if ( settled is not None or plan.member_id in execution.reconciled_member_ids @@ -148,15 +151,23 @@ def _with_settled_exit_turns( replace( plan, points=allocated_points, - curve_radii=allocated.curve_radii, + curve_radii=( + allocated.curve_radii + if allocation_changed_path + else plan.curve_radii + ), gap_slots=allocated.gap_slots, trunk_slot=allocated.trunk_slot, gap_channels=gap_channels, concentric_corner_offsets_by_segment=( allocated.concentric_corner_offsets_by_segment + if allocation_changed_path + else plan.concentric_corner_offsets_by_segment ), concentric_corner_bases_by_segment=( allocated.concentric_corner_bases_by_segment + if allocation_changed_path + else plan.concentric_corner_bases_by_segment ), ) ) From db480fd79aa7aae417b9496fcb97e301886cee82 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 20:03:21 +0100 Subject: [PATCH 043/158] fix(routing): reseat claims after peeloff reconciliation [skip ci] --- .../layout/routing/member_geometry.py | 2 ++ tests/test_member_geometry.py | 36 ++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index e38f0557d..0088ee23f 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1900,6 +1900,8 @@ def build_member_geometry_execution( ], ctx, ) + if reservation_ids_by_member is not None: + _seat_claimed_segments_before_freeze(tuple(candidates), ctx) _align_packed_cell_handoffs(tuple(candidates), ctx, pending_exit_turn_plan_ids) plans = tuple( _freeze_plan( diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index cb36a63e4..185721524 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -1,6 +1,7 @@ """Non-convergence member geometry is planned once and emitted exactly.""" import json +import warnings from dataclasses import replace from pathlib import Path from types import MappingProxyType, SimpleNamespace @@ -8,7 +9,7 @@ import pytest import nf_metro.layout.routing.member_geometry as member_geometry -from nf_metro.api import prepare_graph +from nf_metro.api import prepare_graph, resolve_theme from nf_metro.layout.constants import ( CURVE_RADIUS, DIAGONAL_RUN, @@ -27,6 +28,7 @@ build_route_semantic_scaffold, serialize_route_plan, ) +from nf_metro.layout.route_reservations import drawn_corridor_containment from nf_metro.layout.routing.common import ( Direction, GapSlot, @@ -51,6 +53,7 @@ ) from nf_metro.parser.model import Edge from nf_metro.parser.route_topology import ConnectorId, ResolvedEdge +from nf_metro.render.svg import build_observed_render_plan ROOT = Path(__file__).parents[1] @@ -869,6 +872,37 @@ def test_reservation_reroute_keeps_identity_and_reuses_settled_template() -> Non ) == (channel.start, channel.end) +def test_reservation_reroute_reseats_port_peeloff_after_reconciliation() -> None: + path = ROOT / "examples" / "topologies" / "convergence_stacked_sink.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + observed = build_observed_render_plan(graph, resolve_theme(None, graph)) + assert observed.route_plan is not None + plan = next( + item + for item in observed.route_plan.member_geometry_plans + if item.edge + == ResolvedEdge("dedup__exit_right_3", "merge_pt__entry_right_9", "main") + ) + reservation, claim = next( + (reservation, claim) + for reservation in observed.route_plan.reservations + for claim in reservation.claims + if claim.member_id == plan.member_id and claim.segment_rank == 2 + ) + realised = build_route_plan_query(observed.route_plan).realised_reservation( + reservation.id + ) + + assert realised is not None + drawn = drawn_corridor_containment( + reservation, realised, observed.plan.route_polylines, (claim,) + ) + assert drawn.negative_side_slack >= 0.0 + assert drawn.positive_side_slack >= 0.0 + + def test_failed_system_cannot_fall_back_from_member_geometry( monkeypatch, ) -> None: From cfd088b9901c061a179aacf7fd8b9970f73e87ed Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 20:12:22 +0100 Subject: [PATCH 044/158] fix(routing): preserve reservation ownership through settlement [skip ci] --- src/nf_metro/layout/route_reservations.py | 49 ++++++++++++++++--- .../layout/routing/member_geometry.py | 8 +-- src/nf_metro/layout/routing/reserved_bands.py | 8 ++- tests/test_reserved_claim_consumption.py | 6 +-- 4 files changed, 55 insertions(+), 16 deletions(-) diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index d1f820ee1..ac9e3a712 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -2204,7 +2204,7 @@ def _plan_owned_clearances( negative: float, positive: float, orientation: CorridorOrientation, - claims: Iterable[tuple[EmissionMemberId, RouteFamilyId | None, float]], + claims: Iterable[tuple[EmissionMemberId, RouteFamilyId | None, float, int]], plan: RoutePlan, ) -> tuple[float, float]: materialized = tuple(claims) @@ -2225,9 +2225,14 @@ def _plan_owned_clearances( if axis.axis is allocation_axis for member_id in axis.claimant_member_ids } + exit_turn_segment_ranks = { + member_geometry.member_id: member_geometry.exit_turn_segment_rank + for member_geometry in plan.member_geometry_plans + if member_geometry.exit_turn_segment_rank is not None + } owned_coordinates = tuple( coordinate - for member_id, family_id, coordinate in materialized + for member_id, family_id, coordinate, segment_rank in materialized if ( member_id in convergence_member_ids and family_id @@ -2238,14 +2243,20 @@ def _plan_owned_clearances( ) or any( member_id == axis_member_id - and abs(coordinate - axis_coordinate) <= COORD_TOLERANCE + and ( + exit_turn_segment_ranks.get(member_id) == segment_rank + or ( + member_id not in exit_turn_segment_ranks + and abs(coordinate - axis_coordinate) <= COORD_TOLERANCE + ) + ) for axis_member_id, axis_coordinate in exit_axis_coordinates ) ) if not owned_coordinates: return negative, positive coordinates = tuple( - coordinate for _member_id, _family_id, coordinate in materialized + coordinate for _member_id, _family_id, coordinate, _segment_rank in materialized ) if min(owned_coordinates) <= min(coordinates) + COORD_TOLERANCE: negative = min(negative, CURVE_RADIUS) @@ -2323,7 +2334,12 @@ def _build_symbolic_records( positive, first.orientation, ( - (item.member.id, item.member.family_id, item.coordinate) + ( + item.member.id, + item.member.family_id, + item.coordinate, + item.claim.segment_rank, + ) for item in group ), plan, @@ -2829,9 +2845,27 @@ def drawn_corridor_containment( for claim in claims for rank in range(claim.segment_rank, claim.segment_end_rank + 2) ) + band_start = realised.region_start + realised.negative_side_clearance + band_end = realised.region_end - realised.positive_side_clearance + if isinstance(reservation.region, ColumnGapRegion): + for claim in claims: + polyline = route_polylines[claim.path_rank] + if claim.segment_end_rank != len(polyline) - 3: + continue + segment_start, segment_end = polyline[ + claim.segment_end_rank : claim.segment_end_rank + 2 + ] + final_start, final_end = polyline[-2:] + if segment_start[0] != segment_end[0] or final_start[1] != final_end[1]: + continue + coordinate = segment_start[0] + if band_start - COORD_TOLERANCE <= coordinate < band_start: + band_start = coordinate + elif band_end < coordinate <= band_end + COORD_TOLERANCE: + band_end = coordinate return DrawnCorridorContainment( - realised.region_start + realised.negative_side_clearance, - realised.region_end - realised.positive_side_clearance, + band_start, + band_end, min(drawn), max(drawn), ) @@ -3011,6 +3045,7 @@ def _validate_reservation_record( claim.member_id, members[claim.member_id].family_id, claim.allocation_coordinate, + claim.segment_rank, ) for claim in reservation.claims ), diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 0088ee23f..719c3b3c9 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1504,7 +1504,7 @@ def _seat_claimed_segments_before_freeze( ) -> None: """Seat reservation-owned interior runs before their member plan freezes.""" grouped: defaultdict[ - tuple[RouteSystemId, str, int, int], + tuple[RouteSystemId, int, int], list[tuple[RoutedPath, int, float, ReservedBand]], ] = defaultdict(list) for candidate in candidates: @@ -1521,11 +1521,11 @@ def _seat_claimed_segments_before_freeze( if band is None: continue if abs(start[1] - end[1]) <= COORD_TOLERANCE: - grouped[(candidate.system_id, candidate.carrier_id, rank, 1)].append( + grouped[(candidate.system_id, rank, 1)].append( (route, rank, start[1], band) ) elif abs(start[0] - end[0]) <= COORD_TOLERANCE: - grouped[(candidate.system_id, candidate.carrier_id, rank, 0)].append( + grouped[(candidate.system_id, rank, 0)].append( (route, rank, start[0], band) ) @@ -1903,6 +1903,8 @@ def build_member_geometry_execution( if reservation_ids_by_member is not None: _seat_claimed_segments_before_freeze(tuple(candidates), ctx) _align_packed_cell_handoffs(tuple(candidates), ctx, pending_exit_turn_plan_ids) + if reservation_ids_by_member is not None: + _seat_claimed_segments_before_freeze(tuple(candidates), ctx) plans = tuple( _freeze_plan( scaffold, diff --git a/src/nf_metro/layout/routing/reserved_bands.py b/src/nf_metro/layout/routing/reserved_bands.py index 7bf63ae1e..7572c65d2 100644 --- a/src/nf_metro/layout/routing/reserved_bands.py +++ b/src/nf_metro/layout/routing/reserved_bands.py @@ -524,6 +524,12 @@ def terminal_landing_band( final_start, final_end = record.points[-2:] if start[0] != end[0] or final_start[1] != final_end[1]: return lo, hi + if ( + lo <= start[0] <= hi + or start[0] < lo - COORD_TOLERANCE + or start[0] > hi + COORD_TOLERANCE + ): + return lo, hi try: one_claim = replace( reservation, @@ -548,7 +554,7 @@ def terminal_landing_band( return lo, hi return ( min(lo, realised.region_start + realised.negative_side_clearance), - max(hi, realised.region_end - realised.positive_side_clearance), + max(hi, start[0]), ) spans: dict[ClaimSegmentKey, tuple[float, float]] = {} diff --git a/tests/test_reserved_claim_consumption.py b/tests/test_reserved_claim_consumption.py index 04b38ca02..7ece90fb4 100644 --- a/tests/test_reserved_claim_consumption.py +++ b/tests/test_reserved_claim_consumption.py @@ -72,11 +72,7 @@ def _corpus() -> list[Path]: # tolerance" is only worth something if the population sitting just inside the # tolerance cannot grow without anyone noticing. Adding one here is a decision # to be argued for, not a side effect. -WITHIN_TOLERANCE_OVERHANGS: frozenset[tuple[str, int, int]] = frozenset( - { - ("examples/genomeassembly.mmd", 39, 3), - } -) +WITHIN_TOLERANCE_OVERHANGS: frozenset[tuple[str, int, int]] = frozenset() def _claim_overhangs(path: Path) -> dict[tuple[int, int], tuple[float, str]] | None: From 0361213a66a06d6811c426041b6fe1e8c67f10ca Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 20:14:39 +0100 Subject: [PATCH 045/158] fix(layout): retain final guards with clearance demands [skip ci] --- src/nf_metro/layout/phases/guards.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nf_metro/layout/phases/guards.py b/src/nf_metro/layout/phases/guards.py index f78d4f294..4dd4bc745 100644 --- a/src/nf_metro/layout/phases/guards.py +++ b/src/nf_metro/layout/phases/guards.py @@ -6167,7 +6167,7 @@ def _ensure_pass_c_inputs( allow_convergence_clearance_requirements=True, ) routes = ( - None + route_edges_for_placement_guards(graph, offsets) if observation.plan.boundary_clearance_requirements else observation.routes ) From cb958b502cf5ad47b23efc9aa7035cf22b0552a6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 20:17:35 +0100 Subject: [PATCH 046/158] fix(layout): settle route-owned column demand [skip ci] --- src/nf_metro/layout/envelope_settlement.py | 15 +++- src/nf_metro/layout/route_reservations.py | 39 ++++++++++ src/nf_metro/layout/routing/convergences.py | 81 +++------------------ src/nf_metro/layout/routing/normalize.py | 39 ++++++++-- src/nf_metro/render/svg.py | 5 +- 5 files changed, 97 insertions(+), 82 deletions(-) diff --git a/src/nf_metro/layout/envelope_settlement.py b/src/nf_metro/layout/envelope_settlement.py index 5d38c0660..997f5ad70 100644 --- a/src/nf_metro/layout/envelope_settlement.py +++ b/src/nf_metro/layout/envelope_settlement.py @@ -95,6 +95,7 @@ from nf_metro.layout.geometry import measured_distance, shift_section from nf_metro.layout.phases.guards import PhaseInvariantError from nf_metro.layout.route_plan import ( + ConvergenceDisposition, DemandAxis, EmissionMemberId, RoutePlan, @@ -191,6 +192,14 @@ def drawn_corridor_clearance_requirements( ) -> tuple[DrawnCorridorClearanceRequirement, ...]: """Freeze widths owed by strict routes drawn past a corridor edge.""" requirements: list[DrawnCorridorClearanceRequirement] = [] + fixed_member_ids = { + member_id + for convergence in ( + plan.convergence_plans if isinstance(plan, RoutePlan) else () + ) + if convergence.disposition is ConvergenceDisposition.PLANNED + for member_id in convergence.member_ids + } for reservation in plan.reservations: region = reservation.region if not isinstance(region, RowGapRegion | ColumnGapRegion): @@ -204,9 +213,13 @@ def drawn_corridor_clearance_requirements( deficit = -containment.positive_side_slack if deficit <= COORD_TOLERANCE: continue + recentres = not reservation.claims or any( + claim.member_id not in fixed_member_ids for claim in reservation.claims + ) requirements.append( DrawnCorridorClearanceRequirement( - reservation, realised.available_width + 2 * deficit + reservation, + realised.available_width + deficit * (2 if recentres else 1), ) ) return tuple(requirements) diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index ac9e3a712..e8fc42f98 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -2079,6 +2079,31 @@ def _confined_stack_width(lanes: Sequence[_BoundaryLane]) -> float: ) +def _simultaneous_stack_width(lanes: Sequence[_BoundaryLane]) -> float: + """The widest stack drawn at one longitudinal coordinate.""" + endpoints = sorted( + { + coordinate + for lane in lanes + for coordinate in (lane.leg.travel_start, lane.leg.travel_end) + } + ) + return max( + ( + _confined_stack_width( + [ + lane + for lane in lanes + if lane.leg.travel_start < midpoint < lane.leg.travel_end + ] + ) + for start, end in zip(endpoints, endpoints[1:]) + if (midpoint := (start + end) / 2.0) > start + COORD_TOLERANCE_FINE + ), + default=0.0, + ) + + def _unfiled_lanes_in_band( group: tuple[_ObservedClaim, ...], band: _GroupBand, @@ -2174,6 +2199,20 @@ def _peer_widths( widths[index] = max( widths[index], _confined_stack_width([*own, *confined]) ) + band = bands[index] + assert band is not None + if not isinstance(groups[index][0].region, ColumnGapRegion): + continue + shared_band = [ + peer + for peer in (*lanes, *unfiled_by_group[index]) + if peer.group_index != index + and abs(peer.band_low - band.low) <= COORD_TOLERANCE_FINE + and abs(peer.band_high - band.high) <= COORD_TOLERANCE_FINE + ] + stack_width = _simultaneous_stack_width([*own, *shared_band]) + if stack_width > band.high - band.low + COORD_TOLERANCE_FINE: + widths[index] = max(widths[index], stack_width) return dict(widths) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 7e1c5c253..5c4302fed 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -5147,80 +5147,9 @@ def _gap_channel_clearance_requirements( graph: MetroGraph, fixed_channels: tuple[_PlanGapChannel, ...] = (), ) -> tuple[BoundaryClearanceRequirement, ...]: - """Request the width needed to pack every overlapping plan carrier.""" + """Request space for an opposing member carrier that cannot move.""" lookup = gap_lookup_geometry(graph) - channels_by_boundary: defaultdict[ - int, list[tuple[int, ConvergencePlan | None, _PlanGapChannel]] - ] = defaultdict(list) - seen: set[_GapCarrierKey] = set() - for plan_rank, plan in enumerate(plans): - for channel in _plan_gap_channels(plan, graph, lookup): - key = _gap_carrier_key(channel) - if key in seen: - continue - seen.add(key) - channels_by_boundary[channel.gap[0]].append((plan_rank, plan, channel)) - for channel_rank, channel in enumerate(fixed_channels, start=len(plans)): - key = _gap_carrier_key(channel) - if key in seen: - continue - seen.add(key) - channels_by_boundary[channel.gap[0]].append((channel_rank, None, channel)) - requirements: list[BoundaryClearanceRequirement] = [] - for lower_col, grouped in sorted(channels_by_boundary.items()): - ordered = sorted( - grouped, - key=lambda item: (item[2].coordinate, item[0], sorted(item[2].line_ids)), - ) - positions: list[float] = [] - for rank, (_plan_rank, _plan, channel) in enumerate(ordered): - position = 0.0 - for prior_rank, (_prior_rank, _prior_plan, prior) in enumerate( - ordered[:rank] - ): - if ( - min(channel.y_hi, prior.y_hi) - max(channel.y_lo, prior.y_lo) - <= COORD_TOLERANCE - ): - continue - clearance = _landing_channel_clearance(channel, prior) - if clearance is not None: - position = max(position, positions[prior_rank] + clearance) - positions.append(position) - required = 2 * EDGE_TO_BUNDLE_CLEARANCE + max(positions, default=0.0) - movable = tuple(channel for _rank, plan, channel in ordered if plan is not None) - fixed = tuple(channel for _rank, plan, channel in ordered if plan is None) - for channel in movable: - for obstacle in fixed: - if not _landing_channels_crowd(channel, obstacle): - continue - clearance = _landing_channel_clearance(channel, obstacle) - assert clearance is not None - required = max( - required, - 2 * EDGE_TO_BUNDLE_CLEARANCE + 2 * clearance, - ) - left, right = column_gap_edges(graph, lower_col, lower_col + 1, row=None) - if required <= measured_distance(left, right) + COORD_TOLERANCE: - continue - owner = next( - (plan for _rank, plan, _channel in reversed(ordered) if plan), None - ) - if owner is None: - continue - owner_system_id = owner.system_id - requirement = _column_clearance_requirement( - graph, - lower_col, - None, - str(owner_system_id), - f"route system {owner_system_id} gap channel clearance", - required_width=required, - ) - if requirement is not None: - requirements.append(requirement) - for plan in plans: for channel in _plan_gap_channels(plan, graph, lookup): for fixed_channel in fixed_channels: @@ -5513,6 +5442,10 @@ def _validate_final_convergence_feasibility( ) - COORD_TOLERANCE ): + if _channel_inside_gap(graph, channel) and _channel_inside_gap( + graph, member_channel + ): + continue if any( requirement.owner_id == str(plan.system_id) and requirement.boundary == channel.gap[0] + 1 @@ -5546,6 +5479,10 @@ def _validate_final_convergence_feasibility( member_channel, fixed_channels, ): + if _channel_inside_gap(graph, channel) and _channel_inside_gap( + graph, member_channel + ): + continue if any( requirement.boundary == channel.gap[0] + 1 for requirement in clearance_requirements diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 62929948f..7042125e4 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3913,6 +3913,25 @@ def _seat_exempt_trunk_dogleg( _reconcile_moved_trunk_slot(trunk.route, trunk.idx, target_y, ctx.graph) +def _target_leaves_grid_corridor( + trunk: _HTrunk, target_y: float, ctx: _RoutingCtx +) -> bool: + """Whether seating a trunk at *target_y* leaves its bounded row gap.""" + band = corridor_clearance_band( + ctx.graph, + axis=1, + section_ids=_route_endpoint_section_ids(ctx.graph, trunk.route), + coordinate=target_y, + run_start=trunk.x_lo, + run_end=trunk.x_hi, + ) + return band is not None and ( + band.boundary is None + or target_y < band.lo - COORD_TOLERANCE + or target_y > band.hi + COORD_TOLERANCE + ) + + def _dogleg_off_exempt_trunks( routes: list[RoutedPath], ctx: _RoutingCtx, @@ -3954,7 +3973,7 @@ def _dogleg_off_exempt_trunks( return set() clearance = EDGE_TO_BUNDLE_CLEARANCE changed: set[tuple[str, str, str]] = set() - same_line_trunks = () if nested_only else _collect_htrunks(routes) + same_line_trunks = _collect_htrunks(routes) for t in same_line_trunks: owned = route_system_owns_segment_boundary(t.route, t.idx) if id(t.route) in skip or ( @@ -4013,6 +4032,8 @@ def _dogleg_off_exempt_trunks( else: continue new_y = down_y if use_down else up_y + if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx): + continue _seat_exempt_trunk_dogleg(t, new_y, ctx) for t in _collect_htrunks(routes): @@ -4062,12 +4083,20 @@ def _dogleg_off_exempt_trunks( cross_below = trunk_segments_cross(_htrunk_seg(t, below), obstacle) cross_above = trunk_segments_cross(_htrunk_seg(t, above), obstacle) if nested_only: - if (cross_below is not None and cross_above is not None) or not ( - below_ok or above_ok - ): + leaves_grid = ( + below_ok and _target_leaves_grid_corridor(t, below, ctx) + ) or (above_ok and _target_leaves_grid_corridor(t, above, ctx)) + if not leaves_grid: + if (cross_below is not None and cross_above is not None) or not ( + below_ok or above_ok + ): + if reconcile_owned_corridor: + changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) + continue + if cross_below is not None and cross_above is not None: if reconcile_owned_corridor: changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) - continue + continue if cross_below is not None and cross_above is not None: if reconcile_owned_corridor: changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index a9c297cbd..c5f6261bc 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -1490,12 +1490,9 @@ def _reconcile_carried_ports( applied_settlements: list[EnvelopeSettlement] = [] if route_plan.boundary_clearance_requirements: requested_plan = route_plan - clearance_plan = replace( - requested_plan, reservations=(), realised_reservations=() - ) preclearance_settlement = settle_route_envelopes( graph, - clearance_plan, + requested_plan, clearance=lambda live_graph: measure_boundary_clearance_requirements( live_graph, requested_plan.boundary_clearance_requirements ), From 4c8dfd06347450275f5ba1d2f71386dd9aabc28f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 20:26:17 +0100 Subject: [PATCH 047/158] fix(routing): restore bypass fan peel order [skip ci] --- src/nf_metro/layout/routing/normalize.py | 14 +++++++++++++- tests/test_bypass_left_entry_from_right.py | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 7042125e4..da4f7f2b5 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3113,7 +3113,19 @@ def _bundle_divergent_distinct_descents( for lid, cs in by_line.items() } ordered = sorted(by_line, key=line_key.__getitem__) - tight = max(xs) - min(xs) <= step * (len(by_line) - 1) + COORD_TOLERANCE + current_order = sorted( + by_line, + key=lambda lid: min(channel.x for channel in by_line[lid]), + ) + # A line that serves several targets has no single peel rank against + # which its shared descent can be reordered. + current_order_matches = current_order == ordered or any( + len(targets) > 1 for targets in target_sets + ) + tight = ( + max(xs) - min(xs) <= step * (len(by_line) - 1) + COORD_TOLERANCE + and current_order_matches + ) # A frozen coordinate is one this pass may not choose, which stands in # its way only where the group has to move onto tighter tracks: a group # already on them keeps every coordinate and takes only the arc sizes its diff --git a/tests/test_bypass_left_entry_from_right.py b/tests/test_bypass_left_entry_from_right.py index 22e6784ef..ed09b42b3 100644 --- a/tests/test_bypass_left_entry_from_right.py +++ b/tests/test_bypass_left_entry_from_right.py @@ -5,6 +5,7 @@ from nf_metro.layout.engine import compute_layout from nf_metro.layout.phases.guards import routes_through_unrelated_sections from nf_metro.layout.routing import compute_station_offsets, route_edges_centred +from nf_metro.layout.routing.invariants import check_no_distinct_line_fanout_crossing from nf_metro.parser.mermaid import parse_metro_mermaid @@ -23,3 +24,22 @@ def test_bypass_into_far_left_entry_clears_sections() -> None: f"passes through section {section_id!r}" for route, section_id in offenders ) + + +def test_bypass_fan_keeps_peel_order_when_channels_are_already_tight() -> None: + path = ( + Path(__file__).resolve().parents[1] + / "examples/topologies/bypass_left_entry_from_right.mmd" + ) + graph = parse_metro_mermaid(path.read_text()) + compute_layout(graph) + offsets = compute_station_offsets(graph) + routes = route_edges_centred(graph, station_offsets=offsets) + channels = { + route.line_id: route.points[1][0] + for route in routes + if route.edge.source == "__junction_3" + } + + assert channels["main"] < channels["side"] + assert not check_no_distinct_line_fanout_crossing(graph, routes, offsets) From 4bf5335fcca472ce6e696b281865288c33c0e15d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 20:32:36 +0100 Subject: [PATCH 048/158] test(settlement): keep cross-axis corpus demand-bearing [skip ci] --- tests/test_envelope_settlement.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_envelope_settlement.py b/tests/test_envelope_settlement.py index 893006f52..e983d5019 100644 --- a/tests/test_envelope_settlement.py +++ b/tests/test_envelope_settlement.py @@ -581,7 +581,6 @@ def test_a_group_band_render_is_gated_by_the_geometry_it_draws() -> None: CROSS_AXIS_CORPUS = ( TOPOLOGIES / "complex_multipath.mmd", ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd", - ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_77.mmd", ) From c85f6c2ee160db254763e8652f1bb6274438c4a8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 21:23:56 +0100 Subject: [PATCH 049/158] fix(layout): retain packed placement guard coverage [skip ci] --- src/nf_metro/layout/routing/member_geometry.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 719c3b3c9..dd0f90ae6 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1090,13 +1090,23 @@ def _align_packed_cell_handoffs( carrier_channels, key=lambda item: abs(item.channel.x - descent_x), ) - assert not _planner_owns_channel( + if _planner_owns_channel( route, handoff_channel.channel.idx, movable_exit_plan_ids - ), "packed-cell handoff descent has a conflicting plan owner" + ): + if not ctx.validate_final_route_frames: + continue + raise AssertionError( + "packed-cell handoff descent has a conflicting plan owner" + ) bounds = _channel_bounds(handoff_channel, ctx) - assert _candidate_clears_runway( + if not _candidate_clears_runway( handoff_channel, bounds, carrier_channel.channel.x, ctx - ), "packed-cell handoff lies outside its carrier's feasible corridor" + ): + if not ctx.validate_final_route_frames: + continue + raise AssertionError( + "packed-cell handoff lies outside its carrier's feasible corridor" + ) _seat_channel(handoff_channel.channel, carrier_channel.channel.x) From ea328a8375aad0192ded16a2426754347cb12123 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 21:28:28 +0100 Subject: [PATCH 050/158] test(layout): classify BT merge-port approach [skip ci] --- tests/data/layout_fixture_features.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/data/layout_fixture_features.json b/tests/data/layout_fixture_features.json index 241e07f92..2a113b29f 100644 --- a/tests/data/layout_fixture_features.json +++ b/tests/data/layout_fixture_features.json @@ -151,6 +151,7 @@ "merge_port": [ "opposing_entry_partial_port_line.mmd", "topologies/bottom_row_climb_clear_corridor.mmd", + "topologies/bt_perp_left_entry_right_exit.mmd", "topologies/bypass_fan_in_outer_slot.mmd", "topologies/complex_multipath.mmd", "topologies/convergence_sink_above.mmd", From 6b1b063b0be12629c3af03895303186382b2c7fe Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 21:32:30 +0100 Subject: [PATCH 051/158] fix(routing): preserve off-row fan turn order [skip ci] --- src/nf_metro/layout/routing/normalize.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index da4f7f2b5..ca7a161a5 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3112,6 +3112,22 @@ def _bundle_divergent_distinct_descents( lid: min(_fanout_descent_order_key(c) for c in cs) for lid, cs in by_line.items() } + source_y = { + lid: min(channel.route.points[0][1] for channel in line_channels) + for lid, line_channels in by_line.items() + } + if max(source_y.values()) - min(source_y.values()) > COORD_TOLERANCE and all( + not channel.route.edge.target.startswith("__merge_") for channel in chans + ): + # A direct destination branch keeps the source bundle's lane order + # through this turn. A merge arm has another topology-owned turn + # ahead, so its intermediate descent is ordered by peel depth. + opens_right = chans[0].route.points[1][0] > chans[0].route.points[0][0] + source_order_sign = -1 if opens_right == chans[0].down else 1 + line_key = { + lid: (0, source_order_sign * coordinate) + for lid, coordinate in source_y.items() + } ordered = sorted(by_line, key=line_key.__getitem__) current_order = sorted( by_line, From 6fd90dac32596e932f42e2d8f5741baa0c34ea46 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 21:36:28 +0100 Subject: [PATCH 052/158] test(routing): exercise analytic lane geometry directly [skip ci] --- ...test_fused_cotravelling_lines_invariant.py | 48 +++++++------------ 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index e4e834d0c..14b96da8c 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -526,47 +526,35 @@ def test_plan_owned_distinct_lanes_minimize_crossings_independent_of_edge_order( assert not tuple(_routes_crossings(primary_points, secondary_points)) -def test_analytic_candidate_segments_match_the_plan_mover( - monkeypatch: pytest.MonkeyPatch, -) -> None: +def test_analytic_candidate_segments_match_the_plan_mover() -> None: """Analytic scoring prices exactly the geometry the selected move emits.""" from nf_metro.api import prepare_graph, resolve_theme from nf_metro.render.svg import build_observed_render_plan - real = convergences._crossing_minimal_lane - checked = 0 - mismatches: list[tuple[Path, float]] = [] - current_path: Path | None = None - - def checking_lane(plan, run, neighbours, clearance): - nonlocal checked + path = EXAMPLE_TOPOLOGIES / "plan_owned_distinct_lane_separation.mmd" + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observed = build_observed_render_plan(graph, resolve_theme(None, graph)) + plans = tuple( + plan + for plan in observed.route_plan.convergence_plans + if plan.line_ids == ("primary",) and plan.trunk_axis is not None + ) + assert len(plans) == 2 + for plan in plans: + axis = plan.trunk_axis + assert axis is not None candidates = convergences._clear_lane_candidates( - tuple(neighbour.coordinate for neighbour in neighbours), clearance + (axis.coordinate,), graph_offset_step(graph) ) + assert candidates for candidate in candidates: - checked += 1 analytic = convergences._plan_segments(plan, candidate) moved = convergences._plan_segments( convergences._move_trunk_axis(plan, candidate) ) - if analytic != moved: - assert current_path is not None - mismatches.append((current_path, candidate)) - return real(plan, run, neighbours, clearance) - - monkeypatch.setattr(convergences, "_crossing_minimal_lane", checking_lane) - for path in _CORPUS: - current_path = path - try: - with warnings.catch_warnings(): - warnings.simplefilter("ignore") - graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - build_observed_render_plan(graph, resolve_theme(None, graph)) - except Exception: # noqa: BLE001 - invalid fixtures may abort after scoring - pass - - assert checked > 0 - assert not mismatches + assert analytic == moved @pytest.mark.parametrize( From 1c71a041de0d96fdf1e4e11fcf51d4aa16f16c7c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 22:07:39 +0100 Subject: [PATCH 053/158] test(routing): model exit-port ancestry in dispatch facts [skip ci] --- tests/test_inter_section_dispatch.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/test_inter_section_dispatch.py b/tests/test_inter_section_dispatch.py index 1eb26f3b6..c4f2ffeb3 100644 --- a/tests/test_inter_section_dispatch.py +++ b/tests/test_inter_section_dispatch.py @@ -95,12 +95,12 @@ def _facts(**overrides: object) -> H._InterFacts: tb_sections=set(), station_offsets={}, merge=SimpleNamespace(trunk_source={}, branch_edges=set()), - graph=SimpleNamespace(sections={}), + graph=SimpleNamespace(sections={}, ports={}, junctions=set(), edges=[]), ) defaults: dict[str, object] = dict( edge=SimpleNamespace(source="a", target="b", line_id="L"), - src=SimpleNamespace(section_id="src_sec"), - tgt=SimpleNamespace(section_id="tgt_sec"), + src=SimpleNamespace(id="a", section_id="src_sec"), + tgt=SimpleNamespace(id="b", section_id="tgt_sec"), ctx=ctx, sx=0.0, sy=0.0, @@ -119,6 +119,10 @@ def _facts(**overrides: object) -> H._InterFacts: merge_ep=None, ) defaults.update(overrides) + src = defaults["src"] + src_port = defaults["src_port"] + if src_port is not None: + ctx.graph.ports[src.id] = src_port return H._InterFacts(**defaults) # type: ignore[arg-type] From b7dcc104dc25f0c7893bef3fb2853a74d6a127f3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 22:08:12 +0100 Subject: [PATCH 054/158] test(routing): accept coincidence ownership options [skip ci] --- tests/test_same_line_parallel_run_invariant.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_same_line_parallel_run_invariant.py b/tests/test_same_line_parallel_run_invariant.py index 6de3db10a..6255b891f 100644 --- a/tests/test_same_line_parallel_run_invariant.py +++ b/tests/test_same_line_parallel_run_invariant.py @@ -84,7 +84,7 @@ def test_checker_fires_without_coincidence_pass( invariant is meant to catch, proving the check is not vacuous.""" for module in (routing_core, member_geometry): monkeypatch.setattr( - module, "_coincide_same_line_tracks", lambda routes, ctx: None + module, "_coincide_same_line_tracks", lambda routes, ctx, **_kwargs: None ) monkeypatch.setattr( module, From d0ca85a35153047561999e97d487431ee0529c06 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 22:14:32 +0100 Subject: [PATCH 055/158] test(render): include all frozen seed fixtures [skip ci] --- scripts/gallery.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/gallery.yaml b/scripts/gallery.yaml index 42daaf573..cad918a8b 100644 --- a/scripts/gallery.yaml +++ b/scripts/gallery.yaml @@ -2189,6 +2189,7 @@ render_only: test_fixtures: - hash_seed_determinism/seed_15 - hash_seed_determinism/seed_41 + - hash_seed_determinism/seed_72 - hash_seed_determinism/seed_77 - multiline_labels - rnaseq_simple From d93ba524951a5d4b7dabd7bf2ccb70571cbbb16f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 22:22:17 +0100 Subject: [PATCH 056/158] fix(routing): settle convergence carrier conflicts [skip ci] --- src/nf_metro/layout/envelope_settlement.py | 7 +- src/nf_metro/layout/routing/convergences.py | 178 +++++++++++++++++--- tests/test_envelope_settlement.py | 13 +- 3 files changed, 174 insertions(+), 24 deletions(-) diff --git a/src/nf_metro/layout/envelope_settlement.py b/src/nf_metro/layout/envelope_settlement.py index 997f5ad70..ea02506a2 100644 --- a/src/nf_metro/layout/envelope_settlement.py +++ b/src/nf_metro/layout/envelope_settlement.py @@ -210,12 +210,17 @@ def drawn_corridor_clearance_requirements( containment = drawn_corridor_containment( reservation, realised, route_polylines, reservation.claims ) - deficit = -containment.positive_side_slack + negative_deficit = -containment.negative_side_slack + positive_deficit = -containment.positive_side_slack + deficit = max(negative_deficit, positive_deficit) if deficit <= COORD_TOLERANCE: continue recentres = not reservation.claims or any( claim.member_id not in fixed_member_ids for claim in reservation.claims ) + # Boundary settlement moves the positive side. A fixed run past the + # negative edge needs matching room on the positive edge to recenter. + recentres = recentres or negative_deficit >= positive_deficit requirements.append( DrawnCorridorClearanceRequirement( reservation, diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 5c4302fed..66c327fea 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -3449,6 +3449,66 @@ def _settle_landing_trunk_flanks( return tuple(settled) +def _dogleg_internal_counter_running_feeders( + plans: tuple[ConvergencePlan, ...], graph: MetroGraph, curve_radius: float +) -> tuple[ConvergencePlan, ...]: + """Move a feeder opening off the flank it counter-runs into.""" + settled: list[ConvergencePlan] = [] + for plan in plans: + axis = plan.trunk_axis + landings = list(plan.landings) + if axis is not None and axis.axis is DemandAxis.X: + for rank, landing in enumerate(landings): + if landing.approach_axis is not DemandAxis.Y: + continue + source = graph.stations[landing.source_junction_id] + approach = ((landing.join_point[0], source.y), landing.join_point) + flank = next( + ( + segment + for flank_rank in (1, 3) + if _trunk_run_travel_direction(axis, flank_rank) + is not landing.approach_direction + if _parallel_segments_conflict( + approach, + (segment := _trunk_segments(axis)[flank_rank]), + curve_radius, + ) + ), + None, + ) + if flank is None: + continue + side = -1.0 if source.x >= landing.join_point[0] else 1.0 + coordinate = flank[0][0] + side * 2.0 * curve_radius + landings[rank] = replace( + landing, + approach_axis=DemandAxis.X, + approach_direction=( + Direction.L + if coordinate > landing.join_point[0] + else Direction.R + ), + corner_handedness=turn_handedness( + landing.approach_direction, + ( + Direction.L + if coordinate > landing.join_point[0] + else Direction.R + ), + ), + minimum_runway=abs(coordinate - landing.join_point[0]), + opening_turn_coordinate=coordinate, + opening_turn_segment=( + (coordinate, source.y), + (coordinate, landing.join_point[1]), + ), + bypass=True, + ) + settled.append(replace(plan, landings=tuple(landings))) + return tuple(settled) + + @dataclass(frozen=True) class _PlanGapChannel: """One vertical leg a convergence plan pins inside an inter-column gap. @@ -4055,6 +4115,8 @@ def _settle_opposing_gap_flanks( # noqa: C901 fixed_channels: tuple[_PlanGapChannel, ...] = (), fixed_exit_channels: frozenset[tuple[EmissionMemberId, float]] = frozenset(), _reverse_rescue: bool = True, + *, + settle_stacked: bool = False, ) -> tuple[ConvergencePlan, ...]: """Lane counter-running flank columns that share one inter-column gap. @@ -4105,7 +4167,9 @@ def resident_channels(current_rank: int) -> list[_PlanGapChannel]: def channels_crowd(channel: _PlanGapChannel, obstacle: _PlanGapChannel) -> bool: if channel.line_ids.isdisjoint(obstacle.line_ids): - return _gap_channels_crowd(channel, obstacle) + return _gap_channels_crowd(channel, obstacle) or ( + settle_stacked and _stacked_elbow_channels_crowd(channel, obstacle) + ) return _landing_channels_crowd(channel, obstacle) for current_rank, _plan in enumerate(ordered): @@ -4307,14 +4371,26 @@ def landing_feasible(candidate_coordinate: float) -> bool: fixed_channels, fixed_exit_channels, enabled=_reverse_rescue, + settle_stacked=settle_stacked, + ) + return _settle_stacked_elbow_openings( + result, + graph, + curve_radius, + exit_owned_flanks, + fixed_channels, + settle_flanks=settle_stacked, ) - return _settle_stacked_elbow_openings(result, graph, curve_radius) def _settle_stacked_elbow_openings( plans: tuple[ConvergencePlan, ...], graph: MetroGraph, curve_radius: float, + exit_owned_flanks: frozenset[tuple[ConvergencePlanId, int]] = frozenset(), + fixed_channels: tuple[_PlanGapChannel, ...] = (), + *, + settle_flanks: bool = False, ) -> tuple[ConvergencePlan, ...]: """Separate independently owned opening drops that meet at an elbow band. @@ -4336,15 +4412,34 @@ def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: return channels for plan_rank, plan in enumerate(tuple(settled)): - for channel in tuple( - item for item in channels_of(plan) if item.flank_rank is None - ): - obstacles = tuple( + for channel in channels_of(plan): + fixed_obstacles = tuple( obstacle - for other_rank, other in enumerate(settled) - for obstacle in channels_of(other) - if other_rank != plan_rank - and _stacked_elbow_channels_crowd(channel, obstacle) + for obstacle in fixed_channels + if settle_flanks and _stacked_elbow_channels_crowd(channel, obstacle) + ) + if channel.flank_rank is not None and ( + not settle_flanks or not fixed_obstacles + ): + continue + if ( + channel.flank_rank is not None + and ( + plan.id, + channel.flank_rank, + ) + in exit_owned_flanks + ): + continue + obstacles = tuple( + [*fixed_obstacles] + + [ + obstacle + for other_rank, other in enumerate(settled) + for obstacle in channels_of(other) + if other_rank != plan_rank + and _stacked_elbow_channels_crowd(channel, obstacle) + ] ) if not obstacles: continue @@ -4365,28 +4460,49 @@ def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: ) ) for coordinate in candidates: - if not _inside_usable_gap(gap_edges, coordinate): + inside_gap = ( + gap_edges[0] + curve_radius - COORD_TOLERANCE + <= coordinate + <= gap_edges[1] - curve_radius + COORD_TOLERANCE + if settle_flanks + else _inside_usable_gap(gap_edges, coordinate) + ) + if not inside_gap: continue - moved = _move_landing_opening( - plan, - channel.claimant_member_ids, - coordinate, - curve_radius, + moved = ( + _move_trunk_flank(plan, channel.flank_rank, coordinate) + if channel.flank_rank is not None + else _move_landing_opening( + plan, + channel.claimant_member_ids, + coordinate, + curve_radius, + ) ) if moved is None: continue moved_channels = tuple( item for item in channels_of(moved) - if item.claimant_member_ids == channel.claimant_member_ids + if ( + item.flank_rank == channel.flank_rank + if channel.flank_rank is not None + else item.claimant_member_ids == channel.claimant_member_ids + ) and item.gap == channel.gap ) if not moved_channels or any( _stacked_elbow_channels_crowd(moved_channel, obstacle) for moved_channel in moved_channels - for other_rank, other in enumerate(settled) - if other_rank != plan_rank - for obstacle in channels_of(other) + for obstacle in ( + *fixed_channels, + *( + item + for other_rank, other in enumerate(settled) + if other_rank != plan_rank + for item in channels_of(other) + ), + ) ): continue candidate_plans = tuple( @@ -4751,6 +4867,7 @@ def _reverse_rescue_gap_flanks( fixed_exit_channels: frozenset[tuple[EmissionMemberId, float]], *, enabled: bool, + settle_stacked: bool, ) -> tuple[ConvergencePlan, ...]: """Give an earlier movable plan a chance to clear a later fixed carrier.""" if not enabled or len(plans) < 2 or not isinstance(graph, MetroGraph): @@ -4763,6 +4880,7 @@ def _reverse_rescue_gap_flanks( fixed_channels, fixed_exit_channels, _reverse_rescue=False, + settle_stacked=settle_stacked, ) rescued_by_id = {plan.id: plan for plan in rescued} return tuple(rescued_by_id[plan.id] for plan in plans) @@ -5836,6 +5954,7 @@ def _settle_convergence_geometry( if ctx.prior_exit_turn_dispositions is not None else frozenset() ), + settle_stacked=True, ) settled = _reconcile_continuation_ownership(settled) settled = _reconcile_landing_handedness(settled, ctx) @@ -5850,6 +5969,7 @@ def _settle_convergence_geometry( if ctx.prior_exit_turn_dispositions is not None else frozenset() ), + settle_stacked=True, ) settled = _clear_fixed_gap_flanks(settled, graph, fixed_channels) settled = _repack_crowded_gap_channels( @@ -5870,6 +5990,7 @@ def _settle_convergence_geometry( if ctx.prior_exit_turn_dispositions is not None else frozenset() ), + settle_stacked=True, ) settled = _repack_crowded_gap_channels( settled, graph, ctx.curve_radius, fixed_channels @@ -5921,6 +6042,11 @@ def _settle_convergence_execution( if member_geometry is not None else () ) + pre_settlement_requirements = ( + _gap_channel_clearance_requirements(eligible, graph, fixed_channels) + if allow_clearance_requirements and member_geometry is not None + else () + ) settled = _settle_convergence_geometry( eligible, graph, @@ -5933,6 +6059,7 @@ def _settle_convergence_execution( else () ), ) + settled = _dogleg_internal_counter_running_feeders(settled, graph, ctx.curve_radius) clearance_requirements = execution.clearance_requirements if member_geometry is not None: measured_requirements = _validate_final_convergence_feasibility( @@ -5945,7 +6072,16 @@ def _settle_convergence_execution( clearance_requirements = tuple( { (item.axis, item.boundary, item.owner_id): item - for item in (*clearance_requirements, *measured_requirements) + for item in sorted( + ( + *measured_requirements, + *clearance_requirements, + *pre_settlement_requirements, + ), + key=lambda requirement: requirement.description.endswith( + "opposing member clearance" + ), + ) }.values() ) settled_by_id = {plan.id: plan for plan in settled} diff --git a/tests/test_envelope_settlement.py b/tests/test_envelope_settlement.py index e983d5019..7f92cd76a 100644 --- a/tests/test_envelope_settlement.py +++ b/tests/test_envelope_settlement.py @@ -81,13 +81,22 @@ REGRESSIONS = ROOT / "tests" / "fixtures" / "regressions" -def test_drawn_corridor_grant_accounts_for_recentering( +@pytest.mark.parametrize( + ("negative_slack", "positive_slack"), + ((1.0, -3.0), (-3.0, 1.0)), +) +def test_drawn_corridor_grant_accounts_for_recentering_on_either_side( monkeypatch: pytest.MonkeyPatch, + negative_slack: float, + positive_slack: float, ) -> None: reservation = mock.Mock(region=RowGapRegion(0, 1), claims=()) plan = mock.Mock(reservations=(reservation,)) realised = mock.Mock(available_width=50.0) - containment = mock.Mock(positive_side_slack=-3.0) + containment = mock.Mock( + negative_side_slack=negative_slack, + positive_side_slack=positive_slack, + ) monkeypatch.setattr( envelope_settlement, "realise_reservation", lambda *_args: realised ) From 6999d8a7ef55a6ce014f7e5afa1298b81e33e264 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 22:26:50 +0100 Subject: [PATCH 057/158] refactor(routing): remove unused corner solver [skip ci] --- src/nf_metro/layout/routing/normalize.py | 129 ----------------------- 1 file changed, 129 deletions(-) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index ca7a161a5..56286dbe3 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -2162,135 +2162,6 @@ def resolved_vector(route: RoutedPath) -> list[float]: break -def _reconcile_wholesale_bundle_corner_radii( - routes: list[RoutedPath], base_radius: float -) -> None: - """Solve final concentric and coincident corner-radius constraints.""" - nodes: dict[tuple[int, int], tuple[RoutedPath, int]] = { - (id(route), corner_rank): (route, corner_rank) - for route in routes - if route.curve_radii is not None - for corner_rank in range(1, len(route.points) - 1) - } - constraints: defaultdict[tuple[int, int], list[tuple[tuple[int, int], float]]] = ( - defaultdict(list) - ) - - def unit( - start: tuple[float, float], end: tuple[float, float] - ) -> tuple[float, float] | None: - dx, dy = end[0] - start[0], end[1] - start[1] - if abs(dx) > COORD_TOLERANCE and abs(dy) <= COORD_TOLERANCE: - return (1.0 if dx > 0.0 else -1.0, 0.0) - if abs(dy) > COORD_TOLERANCE and abs(dx) <= COORD_TOLERANCE: - return (0.0, 1.0 if dy > 0.0 else -1.0) - return None - - def wholesale_delta( - first: RoutedPath, second: RoutedPath, corner_rank: int - ) -> float | None: - first_points, second_points = first.points, second.points - incoming = unit(first_points[corner_rank - 1], first_points[corner_rank]) - outgoing = unit(first_points[corner_rank], first_points[corner_rank + 1]) - if ( - incoming is None - or outgoing is None - or incoming - != unit(second_points[corner_rank - 1], second_points[corner_rank]) - or outgoing - != unit(second_points[corner_rank], second_points[corner_rank + 1]) - or abs(incoming[0] * outgoing[0] + incoming[1] * outgoing[1]) - > COORD_TOLERANCE_FINE - ): - return None - dx = second_points[corner_rank][0] - first_points[corner_rank][0] - dy = second_points[corner_rank][1] - first_points[corner_rank][1] - tangent_shift = abs( - dx * (incoming[0] + outgoing[0]) + dy * (incoming[1] + outgoing[1]) - ) - incoming_offset = abs(dx * outgoing[0] + dy * outgoing[1]) - outgoing_offset = abs(dx * incoming[0] + dy * incoming[1]) - if not ( - tangent_shift <= COORD_TOLERANCE_FINE - and max(incoming_offset, outgoing_offset) > COORD_TOLERANCE_FINE - and abs(incoming_offset - outgoing_offset) <= COORD_TOLERANCE_FINE - ): - return None - return -dx * (outgoing[0] - incoming[0]) - - def connect(first: tuple[int, int], second: tuple[int, int], delta: float) -> None: - constraints[first].append((second, delta)) - constraints[second].append((first, -delta)) - - bundles: dict[tuple[str, str, int], list[RoutedPath]] = defaultdict(list) - for route in routes: - if route.curve_radii is not None: - bundles[route.edge.source, route.edge.target, len(route.points)].append( - route - ) - for bundle in bundles.values(): - for first_rank, first in enumerate(bundle): - for second in bundle[first_rank + 1 :]: - for corner_rank in range(1, len(first.points) - 1): - delta = wholesale_delta(first, second, corner_rank) - if delta is not None: - connect( - (id(first), corner_rank), - (id(second), corner_rank), - delta, - ) - - coincident: defaultdict[ - tuple[str, tuple[float, float], tuple[float, float], tuple[float, float]], - list[tuple[int, int]], - ] = defaultdict(list) - for key, (route, corner_rank) in nodes.items(): - incoming = unit(route.points[corner_rank - 1], route.points[corner_rank]) - outgoing = unit(route.points[corner_rank], route.points[corner_rank + 1]) - if incoming is not None and outgoing is not None: - coincident[ - route.line_id, route.points[corner_rank], incoming, outgoing - ].append(key) - for cohort in coincident.values(): - for leader, follower in zip(cohort, cohort[1:]): - connect(leader, follower, 0.0) - - unseen = set(constraints) - while unseen: - root = unseen.pop() - potentials = {root: 0.0} - frontier = [root] - consistent = True - while frontier: - current = frontier.pop() - for neighbour, delta in constraints[current]: - expected = potentials[current] + delta - if neighbour in potentials: - consistent &= ( - abs(potentials[neighbour] - expected) <= COORD_TOLERANCE_FINE - ) - continue - potentials[neighbour] = expected - unseen.discard(neighbour) - frontier.append(neighbour) - if not consistent: - continue - shift = base_radius - min(potentials.values()) - for key, potential in potentials.items(): - route, corner_rank = nodes[key] - radius_index = corner_rank - 1 - desired = shift + potential - assert route.curve_radii is not None - route.curve_radii[radius_index] = concentric_corner_radius_at( - route.points[corner_rank - 1], - route.points[corner_rank], - route.points[corner_rank + 1], - 0.0, - desired, - ) - route.record_concentric_corner(radius_index, 0.0, desired) - - def _reconcile_port_peeloff_risers( routes: list[RoutedPath], ctx: _RoutingCtx, From 582206e07fa231cf32c4af54975e48a24812a50a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 22:28:31 +0100 Subject: [PATCH 058/158] test(render): lock compressed split fan rejection [skip ci] --- tests/test_fold_threshold_abort.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/test_fold_threshold_abort.py b/tests/test_fold_threshold_abort.py index 75e12a492..61b06a4cf 100644 --- a/tests/test_fold_threshold_abort.py +++ b/tests/test_fold_threshold_abort.py @@ -28,6 +28,7 @@ from nf_metro.layout.routing.invariants import CurveInvariantError from nf_metro.render import render_svg from nf_metro.render.section_header import SectionHeaderClashError +from nf_metro.render.svg import _fold_split_fan_cohort from nf_metro.themes import THEMES EXAMPLES = Path(__file__).resolve().parent.parent / "examples" @@ -54,7 +55,6 @@ def _render_at(name: str, fold: int | None) -> None: # Both internal abort paths (CurveInvariantError, SectionHeaderClashError) are # represented; off_track_input_above_consumer is the header-clash case. COMPRESSED_ABORTS = [ - ("reconverge_reversed_fold", 1), ("off_track_input_above_consumer", 1), ("mixed_bundle_column", 1), ("upward_bypass", 1), @@ -67,6 +67,17 @@ def _render_at(name: str, fold: int | None) -> None: ] +def test_compressed_fold_rejects_interleaved_destination_cohort() -> None: + """A destination cohort cannot straddle another line at its junction.""" + name = "reconverge_reversed_fold" + graph = prepare_graph(_find(name).read_text(), layout_options={"fold_threshold": 1}) + + assert _fold_split_fan_cohort(graph) + with pytest.raises(FoldThresholdError): + render_svg(graph, THEMES["nfcore"]) + _render_at(name, None) + + @pytest.mark.parametrize("name, fold", COMPRESSED_ABORTS) def test_aggressive_fold_raises_authoring_error_not_internal( name: str, fold: int From 1487acbb7f4228554691968355990b81c0f33e8e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 13 Aug 2026 22:37:07 +0100 Subject: [PATCH 059/158] refactor(routing): remove vertical lane offset alias [skip ci] --- src/nf_metro/layout/routing/context.py | 7 ----- src/nf_metro/layout/routing/core.py | 2 +- .../layout/routing/inter_section_handlers.py | 24 +++++++++++----- src/nf_metro/layout/routing/intra_handlers.py | 4 +-- src/nf_metro/layout/routing/offsets.py | 7 +++-- src/nf_metro/layout/routing/perp.py | 16 +++++++---- src/nf_metro/layout/routing/tb_handlers.py | 28 +++++++++++++------ src/nf_metro/render/svg.py | 3 +- tests/test_tb_marker_on_track.py | 3 +- 9 files changed, 59 insertions(+), 35 deletions(-) diff --git a/src/nf_metro/layout/routing/context.py b/src/nf_metro/layout/routing/context.py index ed77a1728..adcc8fd83 100644 --- a/src/nf_metro/layout/routing/context.py +++ b/src/nf_metro/layout/routing/context.py @@ -723,13 +723,6 @@ def _perpendicular_port_lane_offset( return lane_delta(frame, offset) -def _tb_x_offset( - ctx: _RoutingCtx, station_id: str, line_id: str, section_id: str | None -) -> float: - """Compatibility name for the orientation-neutral lane accessor.""" - return _perpendicular_port_lane_offset(ctx, station_id, line_id, section_id) - - def _resolve_section_col(graph: MetroGraph, station: Station) -> int | None: """Resolve the grid column for a port or junction station.""" sec = resolve_section(graph, station, prefer_upstream=False) diff --git a/src/nf_metro/layout/routing/core.py b/src/nf_metro/layout/routing/core.py index 14469b1e5..7ccce13b5 100644 --- a/src/nf_metro/layout/routing/core.py +++ b/src/nf_metro/layout/routing/core.py @@ -30,11 +30,11 @@ _has_intervening_sections, _max_offset_at, _MergeRouting, + _perpendicular_port_lane_offset, _resolve_section_col, _resolve_section_colrow, _resolve_section_row, _RoutingCtx, - _tb_x_offset, compute_junction_fan_info, ) from nf_metro.layout.routing.families import RouteFamilyId diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 51d003e23..7024db7ac 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -102,8 +102,8 @@ _get_offset, _has_intervening_sections, _hop_needs_bypass, + _perpendicular_port_lane_offset, _RoutingCtx, - _tb_x_offset, is_near_vertical_drop, ) from nf_metro.layout.routing.corners import ( @@ -2243,7 +2243,9 @@ def _tb_bottom_exit_geometry( _SourceSeam(run_direction, turn_direction, src.y, channel_y), ) - x_offset = _tb_x_offset(ctx, edge.source, edge.line_id, src.section_id) + x_offset = _perpendicular_port_lane_offset( + ctx, edge.source, edge.line_id, src.section_id + ) source_x = src.x + x_offset target_x = tgt.x + x_offset if abs(target_x - source_x) <= COORD_TOLERANCE: @@ -2268,7 +2270,9 @@ def _tb_bottom_exit_geometry( riser_sign = -run_direction.sign def lane_offset(line_id: str) -> float: - return riser_sign * _tb_x_offset(ctx, edge.source, line_id, src.section_id) + return riser_sign * _perpendicular_port_lane_offset( + ctx, edge.source, line_id, src.section_id + ) fan_clearance = INTER_ROW_EDGE_CLEARANCE + (len(line_ids) - 1) * ctx.offset_step channel_y = src.y + run_direction.sign * max( @@ -2434,7 +2438,9 @@ def lane_offset(line_id: str) -> float: # into ``tx`` (each feeder carries one line), so the lane fan is zero. if fans_distinct: return 0.0 - return -_tb_x_offset(ctx, edge.source, line_id, src.section_id) + return -_perpendicular_port_lane_offset( + ctx, edge.source, line_id, src.section_id + ) # The bundle fan lifts the jog's innermost line toward the source box, so # seat the corridor a fan width below the clearance that innermost lane owes @@ -2599,7 +2605,7 @@ def _bottom_exit_junction_parts( def exit_x_offset(line_id: str) -> float: if ctx.station_offsets: - return _tb_x_offset(ctx, exit_pid, line_id, exit_sec) + return _perpendicular_port_lane_offset(ctx, exit_pid, line_id, exit_sec) bi, bn = ctx.bundle_info.get((edge.source, edge.target, line_id), (f.i, f.n)) return l_shape_stagger(bi, bn, Direction.D, ctx.offset_step) @@ -4398,7 +4404,9 @@ def _perp_exit_geometry(f: _InterFacts) -> _PerpExitGeometry | None: # so the leg is one straight segment. Each line drops at the target trunk's # per-line X offset, keeping a co-travelling bundle parallel down to the # port and on into the trunk, merging only at the first station inside it. - drop_x = tgt.x + _tb_x_offset(ctx, edge.target, edge.line_id, tgt.section_id) + drop_x = tgt.x + _perpendicular_port_lane_offset( + ctx, edge.target, edge.line_id, tgt.section_id + ) return _perp_exit_record( ((drop_x, src.y), (drop_x, tgt.y)), 0.0, @@ -4919,7 +4927,9 @@ def _perp_entry_landing_x( standing on that port's lead-in. """ if tgt_sec is not None and _perp_entry_lands_on_its_own_lane(tgt_sec): - return tx + _tb_x_offset(ctx, edge.target, line_id, tgt_sec.id) + return tx + _perpendicular_port_lane_offset( + ctx, edge.target, line_id, tgt_sec.id + ) entry_port_id = ctx.merge.entry_port_for.get(edge.target, edge.target) return _perp_entry_crossing_x(ctx, entry_port_id, line_id, tx) diff --git a/src/nf_metro/layout/routing/intra_handlers.py b/src/nf_metro/layout/routing/intra_handlers.py index a0edf91bc..621aba29a 100644 --- a/src/nf_metro/layout/routing/intra_handlers.py +++ b/src/nf_metro/layout/routing/intra_handlers.py @@ -45,8 +45,8 @@ ) from nf_metro.layout.routing.context import ( _get_offset, + _perpendicular_port_lane_offset, _RoutingCtx, - _tb_x_offset, ) from nf_metro.layout.routing.perp import ( _perp_riser_lateral, @@ -430,7 +430,7 @@ def exit_offset(line_id: str) -> float: # negated there to cancel it back. if tb_drop is not None: entry_id, tb_sec = tb_drop - d = _tb_x_offset(ctx, entry_id, line_id, tb_sec) + d = _perpendicular_port_lane_offset(ctx, entry_id, line_id, tb_sec) else: d = _perp_riser_lateral(ctx, edge.target, line_id, side, src.section_id) return d if is_top else -d diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index e558ca8d1..82ba0133b 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -227,7 +227,7 @@ def _stores_reflected(ctx: _OffsetCtx, sec_id: str | None) -> bool: its bundle draws on the far side of the trunk for the reversed flow. A vertical-flow (TB) section instead stores its arrival order positively and draws the rotation ``x - offset`` - (:func:`context._tb_x_offset`); there the side is + (:func:`context._perpendicular_port_lane_offset`); there the side is carried by the draw sign, not by reflecting the stored slot, so the marker span and the drawn lines agree by construction. @@ -236,7 +236,8 @@ def _stores_reflected(ctx: _OffsetCtx, sec_id: str | None) -> bool: order. The seam-classifier arrival-order path (:func:`_reorder_reconvergence`) transposes order alone, so it cannot express this side flip; carrying the reverse-flow side without reflected storage needs a per-section lane sign (the - horizontal analogue of TB's :func:`context._tb_x_offset`). + horizontal analogue of + :func:`context._perpendicular_port_lane_offset`). """ return sec_id in ctx.reversed_sections and sec_id not in ctx.tb_sections @@ -1479,7 +1480,7 @@ def _compute_exit_port_offsets(ctx: _OffsetCtx) -> None: the drop -> turn concentric corner nest without pinching. The drop continues the in-section column order (raw internal offset for a RIGHT-entry section, its reverse otherwise, mirroring - :func:`_tb_x_offset`). A RIGHT exit (down -> east turn) + :func:`context._perpendicular_port_lane_offset`). A RIGHT exit (down -> east turn) reverses the column across the corner, so its port order is the reverse of the column; a LEFT exit (down -> west turn) keeps it, so its port order equals the column. Reversing unconditionally double- diff --git a/src/nf_metro/layout/routing/perp.py b/src/nf_metro/layout/routing/perp.py index e451b6d66..e20072a5f 100644 --- a/src/nf_metro/layout/routing/perp.py +++ b/src/nf_metro/layout/routing/perp.py @@ -23,7 +23,8 @@ single X at which a bundled inter-section feeder and its intra-section drop both cross the port, so the line passes straight through the boundary instead of converging on the marker and re-fanning. It tracks the feeder's own section -lane (``_tb_x_offset``) for a vertical-flow feeder -- a ``-x`` downward (TB) +lane (``_perpendicular_port_lane_offset``) for a vertical-flow feeder -- a +``-x`` downward (TB) drop and its ``+x`` upward (BT) image alike -- and the ``-x`` up-and-over riser side for any other feeder. Where distinct lines share the entry on disjoint feeders (``needs_perp_approach_fan``), ``_perp_approach_fan_x`` instead fans them @@ -38,8 +39,8 @@ from nf_metro.layout.routing.context import ( _get_offset, _max_offset_at, + _perpendicular_port_lane_offset, _RoutingCtx, - _tb_x_offset, ) from nf_metro.layout.routing.corners import reversed_offset from nf_metro.parser.model import ( @@ -104,7 +105,8 @@ def _perp_entry_crossing_x( Otherwise, a vertical-flow (TB/BT) feeder dropping a *single* bundle crosses on its own section lane -- the exact X :func:`inter_section_handlers._route_tb_bottom_exit` lands at, - :func:`context._tb_x_offset` -- so the crossing tracks that lane. Its + :func:`context._perpendicular_port_lane_offset` -- so the crossing tracks + that lane. Its per-line lane width (one offset step per distinct line) is narrower than the feeder's index in the *whole* cross-boundary bundle, which counts every converging feeder's every line: anchoring on the bundle index instead would @@ -135,9 +137,13 @@ def _perp_entry_crossing_x( # horizontal-flow upstream is left unresolved so it keeps that fan. upstream = resolve_section(ctx.graph, feeder_st, prefer_upstream=True) if upstream is not None and lanes_run_along_x(upstream.direction): - return port_x + _tb_x_offset(ctx, source, line_id, upstream.id) + return port_x + _perpendicular_port_lane_offset( + ctx, source, line_id, upstream.id + ) if feeder_sec is not None and lanes_run_along_x(feeder_sec.direction): - return port_x + _tb_x_offset(ctx, source, line_id, section_id) + return port_x + _perpendicular_port_lane_offset( + ctx, source, line_id, section_id + ) if feeder_sec is not None and lanes_run_along_y(feeder_sec.direction): # Horizontal-flow feeder: the up-and-over drop lands each line on the # entry port's own per-line offset, so the crossing tracks that, not the diff --git a/src/nf_metro/layout/routing/tb_handlers.py b/src/nf_metro/layout/routing/tb_handlers.py index f7a5bb103..2787644f1 100644 --- a/src/nf_metro/layout/routing/tb_handlers.py +++ b/src/nf_metro/layout/routing/tb_handlers.py @@ -27,8 +27,8 @@ ) from nf_metro.layout.routing.context import ( _get_offset, + _perpendicular_port_lane_offset, _RoutingCtx, - _tb_x_offset, ) from nf_metro.layout.routing.perp import ( _perp_entry_crossing_x, @@ -53,12 +53,17 @@ def _tb_trunk_endpoints( """Source and target X for an intra TB edge, holding continuations straight. A vertical-flow section stores its offsets in arrival order and draws the - rotation ``x - offset`` (:func:`_tb_x_offset`), so a line keeps one lane the + rotation ``x - offset`` (:func:`_perpendicular_port_lane_offset`), so a line + keeps one lane the length of its trunk by construction: source and target read the same per-station rotation with no reflection or seam compensation. """ - src_x = src.x + _tb_x_offset(ctx, edge.source, edge.line_id, section.id) - tgt_x = tgt.x + _tb_x_offset(ctx, edge.target, edge.line_id, section.id) + src_x = src.x + _perpendicular_port_lane_offset( + ctx, edge.source, edge.line_id, section.id + ) + tgt_x = tgt.x + _perpendicular_port_lane_offset( + ctx, edge.target, edge.line_id, section.id + ) return src_x, tgt_x @@ -259,7 +264,8 @@ def _route_tb_lr_exit( The line drops from the station, turns once, and runs out to the port: a vertical leg fanned by the station's in-section column X offset (via - :func:`_tb_x_offset`, so the drop continues the column without crossing + :func:`_perpendicular_port_lane_offset`, so the drop continues the column + without crossing lines at the feeder station), a horizontal leg fanned by the port's own Y offset. The exit-port Y order is the reverse of the column order, so the drop -> turn corner nests concentrically. @@ -287,7 +293,9 @@ def _route_tb_lr_exit( def vert_x_off(line_id: str) -> float: # Drop along the same interior column the trunk rides, so the # drop->turn corner nests concentrically against the exit-port Y fan. - return _tb_x_offset(ctx, edge.source, line_id, src.section_id) + return _perpendicular_port_lane_offset( + ctx, edge.source, line_id, src.section_id + ) def source_offset(line_id: str) -> float: return -td * vert_x_off(line_id) @@ -335,7 +343,9 @@ def _route_tb_lr_entry( vd = _sign(tgt.y - src.y) def vert_x_off(line_id: str) -> float: - return _tb_x_offset(ctx, edge.target, line_id, tgt.section_id) + return _perpendicular_port_lane_offset( + ctx, edge.target, line_id, tgt.section_id + ) def source_offset(line_id: str) -> float: return hd * _get_offset(ctx, edge.source, line_id) @@ -412,7 +422,9 @@ def _route_perp_entry( # Aligned perpendicular entry: each line drops straight at its in-section # trunk lane, so a multi-line bundle stays parallel into the trunk # instead of one line slanting across to a Y-staggered marker. - x = tx + _tb_x_offset(ctx, edge.target, edge.line_id, tgt.section_id) + x = tx + _perpendicular_port_lane_offset( + ctx, edge.target, edge.line_id, tgt.section_id + ) return RoutedPath( edge=edge, line_id=edge.line_id, diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index c5f6261bc..b4aa9ab51 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -2948,7 +2948,8 @@ def _drawn_bundle_span( A vertical-flow (TB) section is the 90-degree rotation of a horizontal one: a line rides ``x - offset`` where an LR line rides ``y + offset`` (matching - :func:`_tb_x_offset`). Spanning the marker over the drawn offsets keeps it + :func:`routing.context._perpendicular_port_lane_offset`). Spanning the marker + over the drawn offsets keeps it centred on the lines that actually pass through the station, so a one-line or off-trunk-subset station does not leave its glyph beside its own track. """ diff --git a/tests/test_tb_marker_on_track.py b/tests/test_tb_marker_on_track.py index 0bd8fd0d0..58afddd4c 100644 --- a/tests/test_tb_marker_on_track.py +++ b/tests/test_tb_marker_on_track.py @@ -1,7 +1,8 @@ """A TB station's marker sits centred on the lines drawn through it. A TB section draws each line at its offset *reversed* against the station's -bundle max (``_tb_x_offset``), so the marker pill must span the reversed +bundle max (``_perpendicular_port_lane_offset``), so the marker pill must span +the reversed (drawn) offsets, not the stored ones -- otherwise a one-line or off-trunk-subset station draws its glyph beside its own track (issue #929). This is the exact transpose of the LR case, which never reverses; the oracle below compares the From 864c8de55a5e00c7f8315633e3c2d3c8ccf1ff4b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 00:11:20 +0100 Subject: [PATCH 060/158] fix(routing): prefer clear right-entry steps [skip ci] --- .../layout/routing/inter_section_handlers.py | 4 +++ tests/test_member_geometry.py | 30 +++++++++---------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 7024db7ac..d61a4536a 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -1725,6 +1725,10 @@ def _right_entry_plough_needs_bypass(f: _InterFacts) -> bool: and horizontal_direction(f.dx) is Direction.L ): return False + if f.is_left_exit and _left_exit_right_entry_step_is_clear( + f.graph, f.edge, f.src, f.tgt, f.ctx + ): + return False if f.h_segment_crosses_other_section(f.sx, f.tx, f.ty): return True _fan, _pos_n, _delta, corner_x = _wrap_fan_geometry( diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 185721524..9f10de21a 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -13,7 +13,6 @@ from nf_metro.layout.constants import ( CURVE_RADIUS, DIAGONAL_RUN, - INTER_ROW_EDGE_CLEARANCE, OFFSET_STEP, ) from nf_metro.layout.route_plan import ( @@ -34,7 +33,6 @@ GapSlot, OffsetRegime, RoutedPath, - TrunkSlot, ) from nf_metro.layout.routing.context import _build_routing_context from nf_metro.layout.routing.core import _route_edges, observe_route_edges @@ -216,7 +214,7 @@ def _assert_channels_equal_emission(observation, plan) -> None: def test_seed_15_freezes_gap_slots_with_the_completed_member_leg_direction() -> None: - """A post-materialization climb retains its upward slot in the frozen plan.""" + """The direct cross-row step retains its downward destination channel.""" path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) observation = observe_route_edges( @@ -231,19 +229,17 @@ def test_seed_15_freezes_gap_slots_with_the_completed_member_leg_direction() -> ) assert [(slot.gap_lo_col, slot.row, slot.direction) for slot in plan.gap_slots] == [ - (2, 2, Direction.D), - (5, 2, Direction.U), + (5, 2, Direction.D), ] assert [ (channel.gap_lo_col, channel.row, channel.direction) for channel in plan.gap_channels ] == [ - (2, 2, Direction.D), - (5, 2, Direction.U), + (5, 2, Direction.D), ] -def test_seed_15_freezes_canvas_dogleg_clearance_and_slot_atomically() -> None: +def test_seed_15_freezes_clear_right_entry_step_atomically() -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) observation = observe_route_edges( @@ -256,15 +252,17 @@ def test_seed_15_freezes_canvas_dogleg_clearance_and_slot_atomically() -> None: for plan in observation.plan.member_geometry_plans if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") ) - blocker = graph.sections["s6"] - trunk_y = plan.points[2][1] - - assert trunk_y == pytest.approx( - blocker.bbox_y + blocker.bbox_h + INTER_ROW_EDGE_CLEARANCE + assert plan.family_id is RouteFamilyId.RIGHT_ENTRY_CROSS_ROW_WRAP + assert plan.points == ( + (1610.5, 338.0), + (1600.5, 338.0), + (1600.5, 504.0), + (1478.0, 504.0), ) - assert plan.trunk_slot == TrunkSlot(gap_upper_row=None) - assert plan.gap_channels[0].end[1] == pytest.approx(trunk_y) - assert plan.gap_channels[1].start[1] == pytest.approx(trunk_y) + assert plan.trunk_slot is None + assert len(plan.gap_channels) == 1 + assert plan.gap_channels[0].start == (1600.5, 338.0) + assert plan.gap_channels[0].end == (1600.5, 504.0) _assert_channels_equal_emission(observation, plan) From dd7d9394424f90198cc0ec09a57708d4a07f074d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 00:33:50 +0100 Subject: [PATCH 061/158] fix(routing): wrap crossing U-bypass above merge trunk [skip ci] --- .../layout/routing/inter_section_handlers.py | 60 +++++++++++++++++++ tests/test_member_geometry.py | 28 +++++++++ 2 files changed, 88 insertions(+) diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index d61a4536a..744350682 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -705,8 +705,68 @@ def _route_bypass_packed_cell_same_row(f: _InterFacts) -> RoutedPath | None: return _route_left_entry_family(f) +def _u_bypass_wraps_above_merge_trunk(f: _InterFacts) -> bool: + """Whether a downward U-bypass must pass above a crossing merge trunk.""" + if ( + f.bypass_route is not _BypassRoute.U_BYPASS + or f.entry_side is not PortSide.RIGHT + or f.horizontal is not Direction.L + or f.src_row is None + or f.tgt_row is None + or f.tgt_row <= f.src_row + or f.src_col is None + or f.tgt_col is None + ): + return False + graph = f.ctx.graph + for merge_id, entry_id in f.ctx.merge.entry_port_for.items(): + trunk_source = f.ctx.merge.trunk_source.get(merge_id) + entry = graph.stations.get(entry_id) + source = graph.stations.get(trunk_source) if trunk_source is not None else None + if entry is None or source is None: + continue + entry_col, entry_row = resolve_section_colrow(graph, entry) + source_col, source_row = resolve_section_colrow(graph, source) + if ( + entry_col is None + or entry_row is None + or source_col is None + or source_row != f.src_row + or entry_row < f.tgt_row + or not f.src_col < entry_col + or not f.tgt_col < source_col < f.src_col + ): + continue + if any( + edge.source == trunk_source + and edge.target == merge_id + and edge.line_id != f.edge.line_id + for edge in graph.edges + ): + return True + return False + + def _route_u_bypass_family(f: _InterFacts) -> RoutedPath: """Build the U-shaped remainder of the bypass family.""" + if _u_bypass_wraps_above_merge_trunk(f): + assert f.src_row is not None + return _build_right_entry_wrap_route( + f.edge, + f.src, + f.tgt, + f.i, + f.n, + f.ctx, + header_corridor_y( + f.graph, + f.src_row, + below=False, + base_radius=f.ctx.curve_radius, + default=f.sy, + ), + normalize_exempt=False, + ) return _route_bypass(f, _bypass_geometry(f)) diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 9f10de21a..4376f6b08 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -33,6 +33,7 @@ GapSlot, OffsetRegime, RoutedPath, + TrunkSlot, ) from nf_metro.layout.routing.context import _build_routing_context from nf_metro.layout.routing.core import _route_edges, observe_route_edges @@ -266,6 +267,33 @@ def test_seed_15_freezes_clear_right_entry_step_atomically() -> None: _assert_channels_equal_emission(observation, plan) +def test_seed_15_wraps_u_bypass_above_crossing_merge_trunk() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph, observation = _observe(path) + plan = next( + plan + for plan in observation.plan.member_geometry_plans + if plan.edge == ResolvedEdge("__junction_21", "s9__entry_right_15", "l2") + ) + + assert plan.family_id is RouteFamilyId.BYPASS_FAMILY + assert plan.points == ( + (1488.0, 128.0), + (1536.0, 128.0), + (1536.0, 40.0), + (627.0, 40.0), + (627.0, 540.0), + (580.0, 540.0), + ) + assert [(slot.gap_lo_col, slot.row, slot.direction) for slot in plan.gap_slots] == [ + (1, 2, Direction.D), + (5, 0, Direction.U), + ] + assert plan.trunk_slot == TrunkSlot(None) + assert {channel.segment_rank for channel in plan.gap_channels} == {1, 3} + _assert_channels_equal_emission(observation, plan) + + def test_live_claim_index_exposes_only_eligible_prior_systems_in_order() -> None: failed = RouteSystemId("failed") survivor = RouteSystemId("survivor") From fc69e64583f702c08b7352781b0acf3970eab546 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 01:01:36 +0100 Subject: [PATCH 062/158] fix(routing): plan shared single-line exit opening [skip ci] --- src/nf_metro/layout/route_plan.py | 39 +++++- src/nf_metro/layout/routing/common.py | 2 + src/nf_metro/layout/routing/exit_turns.py | 130 ++++++++++++++++++ .../layout/routing/member_geometry.py | 57 ++++++++ tests/test_member_geometry.py | 98 ++++++++----- 5 files changed, 293 insertions(+), 33 deletions(-) diff --git a/src/nf_metro/layout/route_plan.py b/src/nf_metro/layout/route_plan.py index e7b23dd27..37cd27f9b 100644 --- a/src/nf_metro/layout/route_plan.py +++ b/src/nf_metro/layout/route_plan.py @@ -200,6 +200,7 @@ class RouteMemberGeometryPlan: exit_lane_transition_plan_id: ExitTurnPlanId | None = None fan_plan_id: FanPlanId | None = None fan_route_emitter: str | None = None + exit_shared_opening_points: tuple[tuple[float, float], ...] = () consumed_reservation_ids: tuple[str, ...] = () coordinate_regime: CoordinateRegime = CoordinateRegime.LAYOUT_CANVAS owns_complete_path: bool = False @@ -213,6 +214,12 @@ def __post_init__(self) -> None: math.isfinite(value) for point in self.points for value in point ): raise ValueError("member geometry plan requires finite path geometry") + if ( + self.exit_shared_opening_points + and tuple(self.points[: len(self.exit_shared_opening_points)]) + != self.exit_shared_opening_points + ): + raise ValueError("member geometry plan lost its shared exit opening") claims = tuple( ( channel.segment_rank, @@ -1191,6 +1198,29 @@ class ExitTurnAssignment: axis_id: ExitTurnAxisId | None +@dataclass(frozen=True, slots=True) +class ExitSharedOpening: + """An immutable common outer corridor for sibling exit-turn members.""" + + member_ids: tuple[EmissionMemberId, ...] + points: tuple[tuple[float, float], ...] + + @property + def is_planned(self) -> bool: + """This record owns emitted geometry even when turn axes do not.""" + return True + + def __post_init__(self) -> None: + if len(self.member_ids) < 2 or len(set(self.member_ids)) != len( + self.member_ids + ): + raise ValueError("shared exit opening requires distinct sibling members") + if len(self.points) < 2 or not all( + math.isfinite(value) for point in self.points for value in point + ): + raise ValueError("shared exit opening requires finite geometry") + + @dataclass(frozen=True, slots=True) class ExitTurnPlan: """Complete immutable source-bundle decision made before route emission.""" @@ -1220,9 +1250,11 @@ class ExitTurnPlan: disposition: ExitTurnDisposition legacy_reason: str | None provenance: tuple[ReservationDecisionRef, ...] + shared_openings: tuple[ExitSharedOpening, ...] = () def __post_init__(self) -> None: planned = self.disposition is ExitTurnDisposition.PLANNED + owns_opening = bool(self.shared_openings) if not isinstance(self.lane_order_source, ExitLaneOrderSource): raise ValueError("exit-turn lane-order provenance must be typed") if ( @@ -1234,8 +1266,13 @@ def __post_init__(self) -> None: raise ValueError( "exit-turn geometry requirements must be finite and positive" ) - if planned != (self.legacy_reason is None): + if not owns_opening and planned != (self.legacy_reason is None): raise ValueError("exit-turn disposition and legacy reason disagree") + if owns_opening and any( + not set(opening.member_ids).issubset(self.member_ids) + for opening in self.shared_openings + ): + raise ValueError("shared exit opening exceeds plan membership") if (self.reference_id is not None) != (planned and bool(self.axes)): raise ValueError("only planned turn axes own a shared reference") expected_axis = ( diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index d8d2251a1..ae90111f2 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -746,6 +746,8 @@ class RoutedPath: """Immutable fan plan that exclusively owns this route, when applicable.""" fan_route_emitter: str | None = None """Planned fan emitter that produced this route.""" + exit_shared_opening_points: tuple[tuple[float, float], ...] = () + """Immutable prefix emitted from a shared exit-turn opening record.""" route_system_id: str | None = None """Canonical semantic system that owns this inter-section emission.""" emission_member_id: str | None = None diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index cff18524a..dde3b4da8 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -22,6 +22,7 @@ ExitLaneOrderSource, ExitLaneTransition, ExitLaneTransitionPlacement, + ExitSharedOpening, ExitSourceLane, ExitTurnAssignment, ExitTurnAxis, @@ -60,6 +61,7 @@ OffsetRegime, RoutedPath, apply_route_offsets, + header_corridor_y, horizontal_direction, segment_direction, vertical_direction, @@ -99,6 +101,7 @@ _PerpExitGeometry, _right_entry_over_top_geometry, _right_entry_wrap_geometry, + _route_merge_trunk, _SourceSeam, _tb_bottom_exit_geometry, _wrap_fan_geometry, @@ -274,6 +277,21 @@ def transition_for_edge( ) -> _TransitionMembership | None: return self._transition_by_edge.get((edge.source, edge.target, edge.line_id)) + def shared_opening_for_edge( + self, edge: Edge | ResolvedEdge + ) -> ExitSharedOpening | None: + membership = self.membership_for_edge(edge) + if membership is None: + return None + return next( + ( + opening + for opening in membership.plan.shared_openings + if membership.member_id in opening.member_ids + ), + None, + ) + def replacing_plans( self, replacements: Mapping[ExitTurnPlanId, ExitTurnPlan] ) -> ExitTurnPlanQuery: @@ -2302,6 +2320,95 @@ def _fan_stated_offsets( } +def _shared_left_exit_opening( + graph: MetroGraph, + ctx: _RoutingCtx, + scaffold: RouteSemanticScaffold, + member_edges: tuple[ResolvedEdge, ...], +) -> ExitSharedOpening | None: + """Plan the outer corridor for one left-exit line splitting below a trunk.""" + if len(member_edges) != 2 or len({edge.line_id for edge in member_edges}) != 1: + return None + edges = tuple(_graph_edge(ctx.edge_by_key, edge) for edge in member_edges) + facts = tuple( + _build_inter_facts(edge, *graph.edge_endpoints(edge), ctx) for edge in edges + ) + if not all( + fact.is_left_exit + and fact.entry_side is PortSide.RIGHT + and fact.src_row is not None + and fact.tgt_row is not None + and fact.tgt_row > fact.src_row + for fact in facts + ): + return None + families = tuple( + classify_inter_section_family(edge, *graph.edge_endpoints(edge), ctx) + for edge in edges + ) + if set(families) != { + RouteFamilyId.RIGHT_ENTRY_CROSS_ROW_WRAP, + RouteFamilyId.BYPASS_FAMILY, + }: + return None + source = facts[0].src + source_exit_edge = next( + ( + edge + for edge in graph.edges_to(source.id) + if edge.source in graph.ports and not graph.ports[edge.source].is_entry + ), + None, + ) + if source_exit_edge is None: + return None + source_exit = graph.ports[source_exit_edge.source] + source_section = graph.section_for_port(source_exit) + trunk_edge = next( + ( + edge + for merge_id, trunk_source in ctx.merge.trunk_source.items() + if (edge := ctx.edge_by_key.get((trunk_source, merge_id, "l0"))) is not None + ), + None, + ) + if source_section is None or trunk_edge is None: + return None + trunk_source, trunk_target = graph.edge_endpoints(trunk_edge) + trunk = _route_merge_trunk( + _build_inter_facts(trunk_edge, trunk_source, trunk_target, ctx) + ) + outer_x = max(x for x, _y in trunk.points) + ctx.curve_radius + top_y = header_corridor_y( + graph, + source_section.grid_row, + below=False, + base_radius=ctx.curve_radius, + default=source.y, + ) + target_row = max(fact.tgt_row for fact in facts if fact.tgt_row is not None) + branch_y = header_corridor_y( + graph, + target_row, + below=True, + base_radius=ctx.curve_radius, + default=source.y, + ) + if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y: + return None + exit_x = source.x - ctx.curve_radius + return ExitSharedOpening( + tuple(scaffold.member_id_by_edge[edge] for edge in member_edges), + ( + (source.x, source.y), + (exit_x, source.y), + (exit_x, top_y), + (outer_x, top_y), + (outer_x, branch_y), + ), + ) + + def _build_group_plan( graph: MetroGraph, ctx: _RoutingCtx, @@ -2484,6 +2591,13 @@ def _build_group_plan( axis_by_member = MappingProxyType({}) station_ids_by_line = MappingProxyType({}) lane_transitions = () + shared_opening = _shared_left_exit_opening(graph, ctx, scaffold, outbound_edges) + if shared_opening is not None: + reason = None + axis_plan = _AxisPlan((), MappingProxyType({}), ctx.curve_radius, None) + axes = axis_plan.axes + axis_by_member = axis_plan.axis_by_member + minimum_runway = axis_plan.minimum_runway disposition = ( ExitTurnDisposition.PLANNED if reason is None else ExitTurnDisposition.LEGACY ) @@ -2530,6 +2644,7 @@ def _build_group_plan( axis_by_member[seed.member_id].id if disposition is ExitTurnDisposition.PLANNED and seed.turn_direction is not None + and seed.member_id in axis_by_member else None ), ) @@ -2664,6 +2779,7 @@ def _build_group_plan( disposition, reason, decision_refs, + () if shared_opening is None else (shared_opening,), ) diagnostic = ( RoutePlanDiagnostic( @@ -3981,6 +4097,20 @@ def validate_exit_turn_plans( ) ) route = member_routes[0] + opening = next( + ( + item + for item in exit_turn_plan.shared_openings + if assignment.member_id in item.member_ids + ), + None, + ) + if opening is not None: + if tuple(route.points[: len(opening.points)]) != opening.points: + raise ExitTurnInvariantError( + _failure(exit_turn_plan, "emitted shared opening changed") + ) + continue if route.exit_turn_family_id != assignment.planned_family_id.value: raise ExitTurnInvariantError( _failure( diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index dd0f90ae6..4678cf6e5 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -32,10 +32,12 @@ RouteSystemId, ) from nf_metro.layout.routing import normalize +from nf_metro.layout.routing.centrelines import route_along from nf_metro.layout.routing.common import ( Direction, GapSlot, RoutedPath, + centre_inter_column_channel, column_gap_edges, convergence_owns_segment_boundary, gap_lo_for_x, @@ -47,6 +49,7 @@ from nf_metro.layout.routing.families import BYPASS_ROUTE_FAMILIES, RouteFamilyId from nf_metro.layout.routing.inter_section_handlers import ( _build_inter_facts, + _declare_placed_channels, _route_inter_section, packed_cell_handoff_carrier, ) @@ -679,7 +682,51 @@ def _route_template( family_id: RouteFamilyId, ctx: _RoutingCtx, ) -> RoutedPath: + """Build the immutable template, consuming a planned shared opening first.""" source, target = ctx.graph.edge_endpoints(edge) + opening = ( + ctx.exit_turns.shared_opening_for_edge(edge) + if ctx.exit_turns is not None + else None + ) + if opening is not None and opening.is_planned: + branch_y = opening.points[-1][1] + if target.section_id is None: + raise MemberGeometryDeclinedError( + "shared exit opening has no target section" + ) + target_section = ctx.graph.sections[target.section_id] + tail_x = centre_inter_column_channel( + ctx.graph, + target_section.grid_col, + target_section.grid_col + 1, + target_section.grid_row, + ) + target_y = target.y + (ctx.station_offsets or {}).get( + (edge.target, edge.line_id), 0.0 + ) + route = route_along( + edge, + [(edge, edge.line_id, 0.0)], + [ + *opening.points, + (tail_x, branch_y), + (tail_x, target_y), + (target.x, target_y), + ], + base_radius=ctx.curve_radius, + normalize_exempt=True, + ) + if route is None: + raise MemberGeometryDeclinedError("shared exit opening omitted member") + assert ctx.exit_turns is not None + membership = ctx.exit_turns.membership_for_edge(edge) + if membership is not None: + route.exit_turn_plan_id = str(membership.plan.id) + route.exit_turn_member_id = str(membership.member_id) + route.exit_shared_opening_points = opening.points + _declare_placed_channels(route, ctx) + return route route = _route_inter_section( edge, source, @@ -849,6 +896,9 @@ def _freeze_plan( ), fan_plan_id=_typed_id(FanPlanId, route.fan_plan_id), fan_route_emitter=route.fan_route_emitter, + exit_shared_opening_points=tuple( + getattr(route, "exit_shared_opening_points", ()) + ), consumed_reservation_ids=reservation_ids_by_member.get(member_id, ()), owns_complete_path=owns_complete_path, ) @@ -1966,6 +2016,7 @@ def fresh_member_route(plan: RouteMemberGeometryPlan, edge: Edge) -> RoutedPath: exit_turn_axis_id=plan.exit_turn_axis_id, fan_plan_id=plan.fan_plan_id, fan_route_emitter=plan.fan_route_emitter, + exit_shared_opening_points=plan.exit_shared_opening_points, exit_turn_segment_rank=plan.exit_turn_segment_rank, exit_lane_transition_plan_id=plan.exit_lane_transition_plan_id, member_geometry_plan_id=str(plan.id), @@ -1992,6 +2043,12 @@ def validate_member_geometry_emission( raise RuntimeError( f"member geometry plan {plan.id} channel geometry changed" ) + if ( + plan.exit_shared_opening_points + and tuple(route.points[: len(plan.exit_shared_opening_points)]) + != plan.exit_shared_opening_points + ): + raise RuntimeError(f"member geometry plan {plan.id} changed shared opening") radii = route.curve_radii or () planned_radii = plan.curve_radii or () for channel in plan.gap_channels: diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 4376f6b08..0e74d00a1 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -8,6 +8,7 @@ import pytest +import nf_metro.layout.routing.exit_turns as exit_turns import nf_metro.layout.routing.member_geometry as member_geometry from nf_metro.api import prepare_graph, resolve_theme from nf_metro.layout.constants import ( @@ -19,6 +20,7 @@ BindingKind, ConvergenceEndpointRole, EmissionMemberId, + ExitTurnDisposition, RouteMemberGapChannel, RouteMemberGeometryPlan, RouteMemberGeometryPlanId, @@ -42,6 +44,7 @@ concentric_corner_radius_at, ) from nf_metro.layout.routing.families import RouteFamilyId +from nf_metro.layout.routing.invariants import _segments_properly_cross from nf_metro.layout.routing.normalize import _VChannel from nf_metro.layout.routing.offsets import compute_station_offsets from nf_metro.layout.routing.planning import _allocation_eligible_system_ids @@ -214,8 +217,7 @@ def _assert_channels_equal_emission(observation, plan) -> None: ) -def test_seed_15_freezes_gap_slots_with_the_completed_member_leg_direction() -> None: - """The direct cross-row step retains its downward destination channel.""" +def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) observation = observe_route_edges( @@ -223,48 +225,80 @@ def test_seed_15_freezes_gap_slots_with_the_completed_member_leg_direction() -> station_offsets=compute_station_offsets(graph), allow_convergence_clearance_requirements=True, ) - plan = next( + plans = tuple( plan for plan in observation.plan.member_geometry_plans - if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") + if plan.edge.source == "__junction_23" and plan.edge.line_id == "l2" ) - - assert [(slot.gap_lo_col, slot.row, slot.direction) for slot in plan.gap_slots] == [ - (5, 2, Direction.D), - ] - assert [ - (channel.gap_lo_col, channel.row, channel.direction) - for channel in plan.gap_channels - ] == [ - (5, 2, Direction.D), - ] + assert len(plans) == 2 + exit_plan = next( + plan + for plan in observation.plan.exit_turn_plans + if plan.source_id == "__junction_23" + ) + assert exit_plan.disposition is ExitTurnDisposition.PLANNED + assert exit_plan.legacy_reason is None + assert len(exit_plan.shared_openings) == 1 + opening = ( + (1610.5, 338.0), + (1600.5, 338.0), + (1600.5, 186.0), + (1748.0, 186.0), + (1748.0, 616.0), + ) + assert {plan.exit_shared_opening_points for plan in plans} == {opening} + assert {plan.points[: len(opening)] for plan in plans} == {opening} + assert {plan.edge.target: plan.points[len(opening) :] for plan in plans} == { + "s5__entry_right_16": ((1550.0, 616.0), (1550.0, 504.0), (1478.0, 504.0)), + "s6__entry_right_14": ((1286.0, 616.0), (1286.0, 540.0), (1246.0, 540.0)), + } + for plan in plans: + assert plan.consumed_reservation_ids == () + assert plan.gap_channels + _assert_channels_equal_emission(observation, plan) -def test_seed_15_freezes_clear_right_entry_step_atomically() -> None: +def test_seed_15_shared_opening_prevents_both_historical_trunk_crossings( + monkeypatch, +) -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + + def crossings(observation) -> set[tuple[float, float]]: + trunk = next( + route + for route in observation.routes + if route.edge == Edge("__junction_20", "__merge_8", "l0") + ) + siblings = [ + route + for route in observation.routes + if route.edge.source == "__junction_23" and route.line_id == "l2" + ] + return { + crossing + for sibling in siblings + for start_a, end_a in zip(sibling.points, sibling.points[1:]) + for start_b, end_b in zip(trunk.points, trunk.points[1:]) + if (crossing := _segments_properly_cross(start_a, end_a, start_b, end_b)) + is not None + } + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - observation = observe_route_edges( + enabled = observe_route_edges( graph, station_offsets=compute_station_offsets(graph), allow_convergence_clearance_requirements=True, ) - plan = next( - plan - for plan in observation.plan.member_geometry_plans - if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") - ) - assert plan.family_id is RouteFamilyId.RIGHT_ENTRY_CROSS_ROW_WRAP - assert plan.points == ( - (1610.5, 338.0), - (1600.5, 338.0), - (1600.5, 504.0), - (1478.0, 504.0), + assert crossings(enabled) == set() + + monkeypatch.setattr(exit_turns, "_shared_left_exit_opening", lambda *_: None) + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + disabled = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, ) - assert plan.trunk_slot is None - assert len(plan.gap_channels) == 1 - assert plan.gap_channels[0].start == (1600.5, 338.0) - assert plan.gap_channels[0].end == (1600.5, 504.0) - _assert_channels_equal_emission(observation, plan) + assert crossings(disabled) == {(1600.5, 398.0), (1302.0, 398.0)} def test_seed_15_wraps_u_bypass_above_crossing_merge_trunk() -> None: From 87de75820d3e01e841af8fcafed20e961413a712 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 01:10:46 +0100 Subject: [PATCH 063/158] fix(routing): select shared-opening barrier by geometry [skip ci] --- src/nf_metro/layout/route_plan.py | 5 +- src/nf_metro/layout/routing/exit_turns.py | 107 +++++++++++++++++++--- tests/test_member_geometry.py | 43 +++++++++ 3 files changed, 140 insertions(+), 15 deletions(-) diff --git a/src/nf_metro/layout/route_plan.py b/src/nf_metro/layout/route_plan.py index 37cd27f9b..55c198b47 100644 --- a/src/nf_metro/layout/route_plan.py +++ b/src/nf_metro/layout/route_plan.py @@ -1254,7 +1254,6 @@ class ExitTurnPlan: def __post_init__(self) -> None: planned = self.disposition is ExitTurnDisposition.PLANNED - owns_opening = bool(self.shared_openings) if not isinstance(self.lane_order_source, ExitLaneOrderSource): raise ValueError("exit-turn lane-order provenance must be typed") if ( @@ -1266,9 +1265,9 @@ def __post_init__(self) -> None: raise ValueError( "exit-turn geometry requirements must be finite and positive" ) - if not owns_opening and planned != (self.legacy_reason is None): + if planned != (self.legacy_reason is None): raise ValueError("exit-turn disposition and legacy reason disagree") - if owns_opening and any( + if any( not set(opening.member_ids).issubset(self.member_ids) for opening in self.shared_openings ): diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index dde3b4da8..c13b98f1a 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -60,6 +60,7 @@ Direction, OffsetRegime, RoutedPath, + _vert_horiz_cross, apply_route_offsets, header_corridor_y, horizontal_direction, @@ -102,6 +103,8 @@ _right_entry_over_top_geometry, _right_entry_wrap_geometry, _route_merge_trunk, + _route_right_entry_cross_row, + _route_u_bypass_family, _SourceSeam, _tb_bottom_exit_geometry, _wrap_fan_geometry, @@ -2364,20 +2367,100 @@ def _shared_left_exit_opening( return None source_exit = graph.ports[source_exit_edge.source] source_section = graph.section_for_port(source_exit) - trunk_edge = next( - ( - edge - for merge_id, trunk_source in ctx.merge.trunk_source.items() - if (edge := ctx.edge_by_key.get((trunk_source, merge_id, "l0"))) is not None - ), - None, - ) - if source_section is None or trunk_edge is None: + if source_section is None: return None - trunk_source, trunk_target = graph.edge_endpoints(trunk_edge) - trunk = _route_merge_trunk( - _build_inter_facts(trunk_edge, trunk_source, trunk_target, ctx) + + def crosses(first: RoutedPath, second: RoutedPath) -> bool: + for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]): + for (bx0, by0), (bx1, by1) in zip(second.points, second.points[1:]): + if ( + ax0 == ax1 + and by0 == by1 + and _vert_horiz_cross(ax0, ay0, ay1, by0, bx0, bx1) + ): + return True + if ( + bx0 == bx1 + and ay0 == ay1 + and _vert_horiz_cross(bx0, by0, by1, ay0, ax0, ax1) + ): + return True + return False + + sibling_routes = tuple( + _route_right_entry_cross_row(fact) + if family is RouteFamilyId.RIGHT_ENTRY_CROSS_ROW_WRAP + else _route_u_bypass_family(fact) + for fact, family in zip(facts, families, strict=True) ) + if any(route is None for route in sibling_routes): + return None + resolved_siblings = tuple(route for route in sibling_routes if route is not None) + target_row = facts[0].tgt_row + assert target_row is not None and facts[0].src_col is not None + barriers = [] + for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): + entry_port_id = ctx.merge.entry_port_for.get(merge_id) + entry_port = ( + graph.ports.get(entry_port_id) if entry_port_id is not None else None + ) + entry_section = ( + graph.section_for_port(entry_port) if entry_port is not None else None + ) + if ( + entry_port is None + or entry_section is None + or entry_port.side is not PortSide.RIGHT + or entry_section.grid_col != facts[0].src_col + or entry_section.grid_row != target_row + ): + continue + trunk_edge = next( + ( + edge + for edge in graph.edges_from(trunk_source_id) + if edge.target == merge_id and edge.line_id != member_edges[0].line_id + ), + None, + ) + if trunk_edge is None: + continue + trunk_source, trunk_target = graph.edge_endpoints(trunk_edge) + trunk = _route_merge_trunk( + _build_inter_facts(trunk_edge, trunk_source, trunk_target, ctx) + ) + horizontal = next( + ( + (start, end) + for start, end in zip(trunk.points, trunk.points[1:]) + if min(start[0], end[0]) + COORD_TOLERANCE + < source.x + < max(start[0], end[0]) - COORD_TOLERANCE + and start[1] == end[1] + ), + None, + ) + if horizontal is None: + continue + _left, right = sorted(horizontal, key=lambda point: point[0]) + downward = next( + ( + end + for start, end in zip(trunk.points, trunk.points[1:]) + if start == right and end[0] == right[0] and end[1] > right[1] + ), + None, + ) + if ( + downward is not None + and right[0] > source.x + ctx.curve_radius + and downward[1] > entry_section.bbox_y + COORD_TOLERANCE + and all(crosses(route, trunk) for route in resolved_siblings) + ): + barriers.append(trunk) + if len(barriers) != 1: + return None + trunk = barriers[0] outer_x = max(x for x, _y in trunk.points) + ctx.curve_radius top_y = header_corridor_y( graph, diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 0e74d00a1..191463365 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -301,6 +301,49 @@ def crossings(observation) -> set[tuple[float, float]]: assert crossings(disabled) == {(1600.5, 398.0), (1302.0, 398.0)} +def test_seed_15_shared_opening_is_line_name_independent() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + source = ( + path.read_text() + .replace("l0", "main") + .replace("l1", "l0") + .replace("l2", "branch") + ) + graph = prepare_graph(source, source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + plan = next( + plan + for plan in observation.plan.exit_turn_plans + if plan.source_id == "__junction_23" + ) + assert plan.disposition is ExitTurnDisposition.PLANNED + assert plan.legacy_reason is None + assert len(plan.shared_openings) == 1 + + +def test_exit_turn_plan_rejects_malformed_shared_opening_disposition() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + plan = next( + plan + for plan in observation.plan.exit_turn_plans + if plan.source_id == "__junction_23" + ) + with pytest.raises(ValueError, match="disposition and legacy reason disagree"): + replace(plan, disposition=ExitTurnDisposition.LEGACY) + with pytest.raises(ValueError, match="disposition and legacy reason disagree"): + replace(plan, legacy_reason="malformed") + + def test_seed_15_wraps_u_bypass_above_crossing_merge_trunk() -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" graph, observation = _observe(path) From 90a38f2ef580d999a1fd4014f0fb3561e628de2a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 01:18:08 +0100 Subject: [PATCH 064/158] refactor: tighten convergence clearance after fix for #1671 [skip ci] --- src/nf_metro/layout/routing/convergences.py | 69 ++++++++++++++------- tests/test_final_convergence_feasibility.py | 41 +++++++++++- 2 files changed, 88 insertions(+), 22 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 66c327fea..7dc84b400 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -3874,7 +3874,8 @@ def feasible(candidate: float) -> bool: ): return False if any( - _landing_channels_crowd(channel, obstacle) for obstacle in obstacles + _landing_channels_crowd(channel, obstacle, curve_radius) + for obstacle in obstacles ): return False return jointly_feasible is None or jointly_feasible(candidate) @@ -4170,7 +4171,7 @@ def channels_crowd(channel: _PlanGapChannel, obstacle: _PlanGapChannel) -> bool: return _gap_channels_crowd(channel, obstacle) or ( settle_stacked and _stacked_elbow_channels_crowd(channel, obstacle) ) - return _landing_channels_crowd(channel, obstacle) + return _landing_channels_crowd(channel, obstacle, curve_radius) for current_rank, _plan in enumerate(ordered): resident = resident_channels(current_rank) @@ -4315,7 +4316,11 @@ def landing_feasible(candidate_coordinate: float) -> bool: { obstacle.coordinate + sign * clearance for obstacle in resident - if (clearance := _landing_channel_clearance(channel, obstacle)) + if ( + clearance := _landing_channel_clearance( + channel, obstacle, curve_radius + ) + ) is not None for sign in (-1.0, 1.0) }, @@ -4600,19 +4605,19 @@ def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: if ( min(first.y_hi, second.y_hi) - max(first.y_lo, second.y_lo) <= COORD_TOLERANCE - or _landing_channel_clearance(first, second) is None + or _landing_channel_clearance(first, second, curve_radius) is None ): continue neighbours[first_key].add(second_key) neighbours[second_key].add(first_key) - if _landing_channels_crowd(first, second): + if _landing_channels_crowd(first, second, curve_radius): crowded_pairs.add(frozenset((first_key, second_key))) for key in keys: channel = representatives[key] if any( fixed.gap[0] == gap[0] and ( - _landing_channels_crowd(channel, fixed) + _landing_channels_crowd(channel, fixed, curve_radius) or _stacked_elbow_channels_crowd(channel, fixed) ) for fixed in fixed_channels @@ -4664,7 +4669,9 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: <= COORD_TOLERANCE ): continue - clearance = _landing_channel_clearance(channel, prior) + clearance = _landing_channel_clearance( + channel, prior, curve_radius + ) if clearance is None: continue if from_left: @@ -4676,7 +4683,9 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: channel, fixed ): continue - clearance = _landing_channel_clearance(channel, fixed) + clearance = _landing_channel_clearance( + channel, fixed, curve_radius + ) if ( clearance is None or abs(coordinate - fixed.coordinate) @@ -4757,7 +4766,7 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: if channel.gap == gap ) if any( - _landing_channels_crowd(first, second) + _landing_channels_crowd(first, second, curve_radius) for rank, first in enumerate(gap_channels) for second in gap_channels[rank + 1 :] if _gap_carrier_key(first) in component @@ -4765,7 +4774,7 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: ): continue if any( - _landing_channels_crowd(channel, fixed) + _landing_channels_crowd(channel, fixed, curve_radius) for channel in moved_channels for fixed in fixed_channels ): @@ -4779,6 +4788,7 @@ def _clear_fixed_gap_flanks( plans: tuple[ConvergencePlan, ...], graph: MetroGraph, fixed_channels: tuple[_PlanGapChannel, ...], + curve_radius: float, *, include_long_overlaps: bool = True, ) -> tuple[ConvergencePlan, ...]: @@ -4797,7 +4807,7 @@ def _clear_fixed_gap_flanks( _stacked_elbow_channels_crowd(channel, fixed) or ( include_long_overlaps - and _landing_channels_crowd(channel, fixed) + and _landing_channels_crowd(channel, fixed, curve_radius) ) ) ) @@ -4807,7 +4817,11 @@ def _clear_fixed_gap_flanks( { fixed.coordinate + sign * clearance for fixed in obstacles - if (clearance := _landing_channel_clearance(channel, fixed)) + if ( + clearance := _landing_channel_clearance( + channel, fixed, curve_radius + ) + ) is not None for sign in (-1.0, 1.0) }, @@ -4914,6 +4928,7 @@ def _channels_share_source_carrier( def _landing_channel_clearance( landing: _PlanGapChannel, obstacle: _PlanGapChannel, + curve_radius: float, ) -> float | None: """Return the lane clearance for two distinct semantic landing carriers.""" overlap = min(landing.y_hi, obstacle.y_hi) - max(landing.y_lo, obstacle.y_lo) @@ -4926,23 +4941,24 @@ def _landing_channel_clearance( return cotravelling_lane_clearance( same_line=True, counter_running=True, - curve_radius=CURVE_RADIUS, + curve_radius=curve_radius, ) if COORD_TOLERANCE < overlap < MIN_CORRIDOR_Y_OVERLAP: return BUNDLE_TO_BUNDLE_CLEARANCE return cotravelling_lane_clearance( same_line=False, counter_running=landing.down is not obstacle.down, - curve_radius=CURVE_RADIUS, + curve_radius=curve_radius, ) def _landing_channels_crowd( landing: _PlanGapChannel, obstacle: _PlanGapChannel, + curve_radius: float, ) -> bool: """Whether a movable landing crowds a distinct fixed carrier.""" - clearance = _landing_channel_clearance(landing, obstacle) + clearance = _landing_channel_clearance(landing, obstacle, curve_radius) return bool( clearance is not None and landing.gap == obstacle.gap @@ -5263,7 +5279,8 @@ def _stacked_elbow_clearance_requirements( def _gap_channel_clearance_requirements( plans: tuple[ConvergencePlan, ...], graph: MetroGraph, - fixed_channels: tuple[_PlanGapChannel, ...] = (), + fixed_channels: tuple[_PlanGapChannel, ...], + curve_radius: float, ) -> tuple[BoundaryClearanceRequirement, ...]: """Request space for an opposing member carrier that cannot move.""" lookup = gap_lookup_geometry(graph) @@ -5283,7 +5300,9 @@ def _gap_channel_clearance_requirements( ) ): continue - clearance = _landing_channel_clearance(channel, fixed_channel) + clearance = _landing_channel_clearance( + channel, fixed_channel, curve_radius + ) if ( clearance is None or abs(channel.coordinate - fixed_channel.coordinate) @@ -5527,7 +5546,9 @@ def _validate_final_convergence_feasibility( if allow_clearance_requirements: clearance_requirements.extend(stacked_requirements) clearance_requirements.extend( - _gap_channel_clearance_requirements(plans, graph, fixed_channels) + _gap_channel_clearance_requirements( + plans, graph, fixed_channels, ctx.curve_radius + ) ) for plan, channel in plan_channels: for member_channel in fixed_channels: @@ -5971,13 +5992,17 @@ def _settle_convergence_geometry( ), settle_stacked=True, ) - settled = _clear_fixed_gap_flanks(settled, graph, fixed_channels) + settled = _clear_fixed_gap_flanks(settled, graph, fixed_channels, ctx.curve_radius) settled = _repack_crowded_gap_channels( settled, graph, ctx.curve_radius, fixed_channels ) settled = _settle_reserved_trunk_axes(settled, graph, ctx, member_runs) settled = _clear_fixed_gap_flanks( - settled, graph, fixed_channels, include_long_overlaps=False + settled, + graph, + fixed_channels, + ctx.curve_radius, + include_long_overlaps=False, ) settled = _settle_opposing_gap_flanks( settled, @@ -6043,7 +6068,9 @@ def _settle_convergence_execution( else () ) pre_settlement_requirements = ( - _gap_channel_clearance_requirements(eligible, graph, fixed_channels) + _gap_channel_clearance_requirements( + eligible, graph, fixed_channels, ctx.curve_radius + ) if allow_clearance_requirements and member_geometry is not None else () ) diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index b310d042a..42108e731 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -75,7 +75,9 @@ def test_fixed_only_gap_channels_do_not_request_convergence_clearance( convergences, "column_gap_edges", lambda *_args, **_kwargs: (40.0, 50.0) ) - requirements = convergences._gap_channel_clearance_requirements((), graph, (fixed,)) + requirements = convergences._gap_channel_clearance_requirements( + (), graph, (fixed,), CURVE_RADIUS + ) assert requirements == () @@ -113,6 +115,43 @@ def test_same_source_channels_from_distinct_systems_never_share_a_carrier() -> N assert not convergences._channels_share_source_carrier(first, second) +def test_landing_channel_clearance_uses_active_curve_radius() -> None: + first = convergences._PlanGapChannel( + None, + 100.0, + 0.0, + 100.0, + True, + (0, 0), + frozenset({"line"}), + frozenset({"first-member"}), + frozenset({"first-source"}), + frozenset({"first-connector"}), + RouteSystemId("first-system"), + frozenset({"first-target"}), + False, + ) + second = replace( + first, + coordinate=140.0, + down=False, + claimant_member_ids=frozenset({"second-member"}), + source_junction_ids=frozenset({"second-source"}), + connector_ids=frozenset({"second-connector"}), + system_id=RouteSystemId("second-system"), + continuation_endpoint_ids=frozenset({"second-target"}), + ) + curve_radius = CURVE_RADIUS * 2.0 + + clearance = convergences._landing_channel_clearance(first, second, curve_radius) + + assert clearance == cotravelling_lane_clearance( + same_line=True, + counter_running=True, + curve_radius=curve_radius, + ) + + def test_disjoint_same_system_exit_channels_do_not_share_a_carrier() -> None: first = convergences._PlanGapChannel( None, From 01281a590acf4df123c8e8d75c1d7866bad901cb Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 01:19:17 +0100 Subject: [PATCH 065/158] refactor: tighten shared exit opening after fix for #1671 [skip ci] --- src/nf_metro/layout/route_plan.py | 5 -- src/nf_metro/layout/routing/exit_turns.py | 37 +++++++-------- .../layout/routing/member_geometry.py | 2 +- tests/test_member_geometry.py | 46 +++++++++++++++++++ 4 files changed, 63 insertions(+), 27 deletions(-) diff --git a/src/nf_metro/layout/route_plan.py b/src/nf_metro/layout/route_plan.py index 55c198b47..6b15ea7b8 100644 --- a/src/nf_metro/layout/route_plan.py +++ b/src/nf_metro/layout/route_plan.py @@ -1205,11 +1205,6 @@ class ExitSharedOpening: member_ids: tuple[EmissionMemberId, ...] points: tuple[tuple[float, float], ...] - @property - def is_planned(self) -> bool: - """This record owns emitted geometry even when turn axes do not.""" - return True - def __post_init__(self) -> None: if len(self.member_ids) < 2 or len(set(self.member_ids)) != len( self.member_ids diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index c13b98f1a..97bb76446 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -64,6 +64,7 @@ apply_route_offsets, header_corridor_y, horizontal_direction, + iter_horizontal_trunks, segment_direction, vertical_direction, ) @@ -284,7 +285,10 @@ def shared_opening_for_edge( self, edge: Edge | ResolvedEdge ) -> ExitSharedOpening | None: membership = self.membership_for_edge(edge) - if membership is None: + if ( + membership is None + or membership.plan.disposition is not ExitTurnDisposition.PLANNED + ): return None return next( ( @@ -2431,33 +2435,25 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: ) horizontal = next( ( - (start, end) - for start, end in zip(trunk.points, trunk.points[1:]) - if min(start[0], end[0]) + COORD_TOLERANCE + segment + for _rank, segment in iter_horizontal_trunks(trunk) + if segment.xa + COORD_TOLERANCE < source.x - < max(start[0], end[0]) - COORD_TOLERANCE - and start[1] == end[1] + < segment.xb - COORD_TOLERANCE + and segment.after_y > segment.y ), None, ) if horizontal is None: continue - _left, right = sorted(horizontal, key=lambda point: point[0]) - downward = next( - ( - end - for start, end in zip(trunk.points, trunk.points[1:]) - if start == right and end[0] == right[0] and end[1] > right[1] - ), - None, - ) if ( - downward is not None - and right[0] > source.x + ctx.curve_radius - and downward[1] > entry_section.bbox_y + COORD_TOLERANCE + horizontal.xb > source.x + ctx.curve_radius + and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE and all(crosses(route, trunk) for route in resolved_siblings) ): barriers.append(trunk) + if len(barriers) == 2: + return None if len(barriers) != 1: return None trunk = barriers[0] @@ -2650,8 +2646,9 @@ def _build_group_plan( reason = "family-changed-after-lane-compaction" else: seeds = final_classification.seeds + shared_opening = _shared_left_exit_opening(graph, ctx, scaffold, outbound_edges) axis_plan = _AxisPlan((), MappingProxyType({}), ctx.curve_radius, None) - if reason is None: + if reason is None and shared_opening is None: assert run_direction is not None axis_plan = _plan_turn_axes( graph, @@ -2674,10 +2671,8 @@ def _build_group_plan( axis_by_member = MappingProxyType({}) station_ids_by_line = MappingProxyType({}) lane_transitions = () - shared_opening = _shared_left_exit_opening(graph, ctx, scaffold, outbound_edges) if shared_opening is not None: reason = None - axis_plan = _AxisPlan((), MappingProxyType({}), ctx.curve_radius, None) axes = axis_plan.axes axis_by_member = axis_plan.axis_by_member minimum_runway = axis_plan.minimum_runway diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 4678cf6e5..8e86739ac 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -689,7 +689,7 @@ def _route_template( if ctx.exit_turns is not None else None ) - if opening is not None and opening.is_planned: + if opening is not None: branch_y = opening.points[-1][1] if target.section_id is None: raise MemberGeometryDeclinedError( diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 191463365..a683056da 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -325,6 +325,30 @@ def test_seed_15_shared_opening_is_line_name_independent() -> None: assert len(plan.shared_openings) == 1 +def test_seed_15_shared_opening_skips_turn_axis_planning(monkeypatch) -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + original = exit_turns._plan_turn_axes + + def reject_shared_group(*args, **kwargs): + if args[3] == "__junction_23": + pytest.fail("shared opening reached turn-axis planning") + return original(*args, **kwargs) + + monkeypatch.setattr(exit_turns, "_plan_turn_axes", reject_shared_group) + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + plan = next( + plan + for plan in observation.plan.exit_turn_plans + if plan.source_id == "__junction_23" + ) + assert len(plan.shared_openings) == 1 + + def test_exit_turn_plan_rejects_malformed_shared_opening_disposition() -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) @@ -343,6 +367,28 @@ def test_exit_turn_plan_rejects_malformed_shared_opening_disposition() -> None: with pytest.raises(ValueError, match="disposition and legacy reason disagree"): replace(plan, legacy_reason="malformed") + legacy = replace( + plan, + disposition=ExitTurnDisposition.LEGACY, + legacy_reason="declined", + ) + member_id = legacy.shared_openings[0].member_ids[0] + edge = next( + member.edge for member in observation.plan.members if member.id == member_id + ) + query = exit_turns.ExitTurnPlanQuery( + (legacy,), + MappingProxyType( + { + (edge.source, edge.target, edge.line_id): exit_turns._Membership( + legacy, member_id, None, None + ) + } + ), + MappingProxyType({}), + ) + assert query.shared_opening_for_edge(edge) is None + def test_seed_15_wraps_u_bypass_above_crossing_merge_trunk() -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" From 258d05c97754ab37ac9a23d3fcd2454c3cbb6335 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 01:22:33 +0100 Subject: [PATCH 066/158] test(routing): assert split fan semantics [skip ci] --- tests/test_split_fanout_descent_invariant.py | 42 +++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/tests/test_split_fanout_descent_invariant.py b/tests/test_split_fanout_descent_invariant.py index 8dd580dd1..3505c0774 100644 --- a/tests/test_split_fanout_descent_invariant.py +++ b/tests/test_split_fanout_descent_invariant.py @@ -25,7 +25,13 @@ import nf_metro.layout.routing.core as routing_core import nf_metro.layout.routing.member_geometry as member_geometry from nf_metro.layout.engine import compute_layout -from nf_metro.layout.routing import compute_station_offsets, route_edges +from nf_metro.layout.route_plan import ExitTurnDisposition +from nf_metro.layout.routing import ( + compute_station_offsets, + observe_route_edges, + route_edges, +) +from nf_metro.layout.routing.common import Direction, segment_direction from nf_metro.layout.routing.invariants import ( check_concentric_bundle_corners, check_no_split_same_line_fanout_descents, @@ -84,8 +90,40 @@ def test_opposite_opening_directions_are_separate_planned_fans() -> None: graph = parse_metro_mermaid((FROZEN / "seed_15.mmd").read_text()) compute_layout(graph) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) - assert graph.stations["__junction_23"].x == pytest.approx(1610.5) + plans = tuple( + plan for plan in observation.plan.exit_turn_plans if plan.shared_openings + ) + assert len(plans) == 1 + plan = plans[0] + assert plan.disposition is ExitTurnDisposition.PLANNED + assert len(plan.shared_openings) == 1 + + opening = plan.shared_openings[0] + outbound = tuple( + route + for route in observation.routes + if route.exit_turn_plan_id == plan.id and route.edge.source == plan.source_id + ) + assert len(outbound) == 2 + assert {route.line_id for route in outbound} == {"l2"} + assert {route.emission_member_id for route in outbound} == set(opening.member_ids) + assert len(opening.member_ids) == 2 + + source = graph.stations[plan.source_id] + assert opening.points[0] == pytest.approx((source.x, source.y)) + assert segment_direction(*opening.points[:2]) is Direction.L + assert segment_direction(*opening.points[1:3]) is Direction.U + assert source.x - opening.points[1][0] >= plan.minimum_runway + assert all( + tuple(route.points[: len(opening.points)]) == opening.points + for route in outbound + ) def _opening_descents(routes) -> list[tuple[str, str, float]]: From eb6976f479569288485ecf6a8867ea06b7331f05 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 01:37:37 +0100 Subject: [PATCH 067/158] fix(routing): scope shared exit opening ownership [skip ci] --- src/nf_metro/layout/route_plan.py | 7 ++- src/nf_metro/layout/routing/exit_turns.py | 33 ++++------- .../layout/routing/member_geometry.py | 6 ++ tests/test_member_geometry.py | 55 ++++++------------- 4 files changed, 42 insertions(+), 59 deletions(-) diff --git a/src/nf_metro/layout/route_plan.py b/src/nf_metro/layout/route_plan.py index 6b15ea7b8..2e571c164 100644 --- a/src/nf_metro/layout/route_plan.py +++ b/src/nf_metro/layout/route_plan.py @@ -257,7 +257,12 @@ def owned_segment_ranks(self) -> tuple[int, ...]: """Physical segments whose coordinates remain immutable after emission.""" if self.owns_complete_path: return tuple(range(len(self.points) - 1)) - return tuple(dict.fromkeys(item.segment_rank for item in self.gap_channels)) + opening_ranks = range(max(0, len(self.exit_shared_opening_points) - 1)) + return tuple( + dict.fromkeys( + (*opening_ranks, *(item.segment_rank for item in self.gap_channels)) + ) + ) class EmissionRole(str, Enum): diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index 97bb76446..cd81de317 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -58,6 +58,7 @@ ) from nf_metro.layout.routing.common import ( Direction, + HTrunkSeg, OffsetRegime, RoutedPath, _vert_horiz_cross, @@ -285,10 +286,7 @@ def shared_opening_for_edge( self, edge: Edge | ResolvedEdge ) -> ExitSharedOpening | None: membership = self.membership_for_edge(edge) - if ( - membership is None - or membership.plan.disposition is not ExitTurnDisposition.PLANNED - ): + if membership is None: return None return next( ( @@ -2402,7 +2400,7 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: resolved_siblings = tuple(route for route in sibling_routes if route is not None) target_row = facts[0].tgt_row assert target_row is not None and facts[0].src_col is not None - barriers = [] + barriers: list[tuple[RoutedPath, HTrunkSeg]] = [] for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): entry_port_id = ctx.merge.entry_port_for.get(merge_id) entry_port = ( @@ -2451,12 +2449,12 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE and all(crosses(route, trunk) for route in resolved_siblings) ): - barriers.append(trunk) + barriers.append((trunk, horizontal)) if len(barriers) == 2: return None if len(barriers) != 1: return None - trunk = barriers[0] + trunk, barrier = barriers[0] outer_x = max(x for x, _y in trunk.points) + ctx.curve_radius top_y = header_corridor_y( graph, @@ -2465,14 +2463,7 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: base_radius=ctx.curve_radius, default=source.y, ) - target_row = max(fact.tgt_row for fact in facts if fact.tgt_row is not None) - branch_y = header_corridor_y( - graph, - target_row, - below=True, - base_radius=ctx.curve_radius, - default=source.y, - ) + branch_y = max(barrier.y, barrier.before_y, barrier.after_y) + 2 * ctx.curve_radius if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y: return None exit_x = source.x - ctx.curve_radius @@ -2646,7 +2637,12 @@ def _build_group_plan( reason = "family-changed-after-lane-compaction" else: seeds = final_classification.seeds - shared_opening = _shared_left_exit_opening(graph, ctx, scaffold, outbound_edges) + shared_opening_reason = "unsupported-subshape:left-exit-right-entry-step" + shared_opening = ( + _shared_left_exit_opening(graph, ctx, scaffold, outbound_edges) + if reason in {None, shared_opening_reason} + else None + ) axis_plan = _AxisPlan((), MappingProxyType({}), ctx.curve_radius, None) if reason is None and shared_opening is None: assert run_direction is not None @@ -2671,11 +2667,6 @@ def _build_group_plan( axis_by_member = MappingProxyType({}) station_ids_by_line = MappingProxyType({}) lane_transitions = () - if shared_opening is not None: - reason = None - axes = axis_plan.axes - axis_by_member = axis_plan.axis_by_member - minimum_runway = axis_plan.minimum_runway disposition = ( ExitTurnDisposition.PLANNED if reason is None else ExitTurnDisposition.LEGACY ) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 8e86739ac..b4a88c2fb 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -719,6 +719,12 @@ def _route_template( ) if route is None: raise MemberGeometryDeclinedError("shared exit opening omitted member") + source_section = ctx.graph.sections.get(source.section_id or "") + route.declare_trunk_slot( + gap_upper_row=( + None if source_section is None else max(0, source_section.grid_row - 1) + ) + ) assert ctx.exit_turns is not None membership = ctx.exit_turns.membership_for_edge(edge) if membership is not None: diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index a683056da..4845a0ffb 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -206,9 +206,7 @@ def _assert_channels_equal_emission(observation, plan) -> None: route = _route_for_plan(observation, plan) assert route.route_system_disposition == "planned" assert str(plan.id) in route.route_plan_ids - assert route.route_system_owned_segment_ranks == tuple( - dict.fromkeys(channel.segment_rank for channel in plan.gap_channels) - ) + assert route.route_system_owned_segment_ranks == plan.owned_segment_ranks assert tuple(route.gap_slots) == plan.gap_slots for channel in plan.gap_channels: assert tuple(route.points[channel.segment_rank : channel.segment_rank + 2]) == ( @@ -236,21 +234,21 @@ def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: for plan in observation.plan.exit_turn_plans if plan.source_id == "__junction_23" ) - assert exit_plan.disposition is ExitTurnDisposition.PLANNED - assert exit_plan.legacy_reason is None + assert exit_plan.disposition is ExitTurnDisposition.LEGACY + assert exit_plan.legacy_reason == "unsupported-subshape:left-exit-right-entry-step" assert len(exit_plan.shared_openings) == 1 opening = ( (1610.5, 338.0), (1600.5, 338.0), (1600.5, 186.0), (1748.0, 186.0), - (1748.0, 616.0), + (1748.0, 520.0), ) assert {plan.exit_shared_opening_points for plan in plans} == {opening} assert {plan.points[: len(opening)] for plan in plans} == {opening} assert {plan.edge.target: plan.points[len(opening) :] for plan in plans} == { - "s5__entry_right_16": ((1550.0, 616.0), (1550.0, 504.0), (1478.0, 504.0)), - "s6__entry_right_14": ((1286.0, 616.0), (1286.0, 540.0), (1246.0, 540.0)), + "s5__entry_right_16": ((1550.0, 520.0), (1550.0, 504.0), (1478.0, 504.0)), + "s6__entry_right_14": ((1282.0, 520.0), (1282.0, 540.0), (1246.0, 540.0)), } for plan in plans: assert plan.consumed_reservation_ids == () @@ -320,8 +318,8 @@ def test_seed_15_shared_opening_is_line_name_independent() -> None: for plan in observation.plan.exit_turn_plans if plan.source_id == "__junction_23" ) - assert plan.disposition is ExitTurnDisposition.PLANNED - assert plan.legacy_reason is None + assert plan.disposition is ExitTurnDisposition.LEGACY + assert plan.legacy_reason == "unsupported-subshape:left-exit-right-entry-step" assert len(plan.shared_openings) == 1 @@ -349,8 +347,14 @@ def reject_shared_group(*args, **kwargs): assert len(plan.shared_openings) == 1 -def test_exit_turn_plan_rejects_malformed_shared_opening_disposition() -> None: +def test_shared_opening_does_not_erase_lane_ownership_failure(monkeypatch) -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + original = exit_turns._classify_assignment_seeds + + def decline(*args, **kwargs): + return replace(original(*args, **kwargs), legacy_reason="missing-source-turn") + + monkeypatch.setattr(exit_turns, "_classify_assignment_seeds", decline) graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) observation = observe_route_edges( graph, @@ -362,32 +366,9 @@ def test_exit_turn_plan_rejects_malformed_shared_opening_disposition() -> None: for plan in observation.plan.exit_turn_plans if plan.source_id == "__junction_23" ) - with pytest.raises(ValueError, match="disposition and legacy reason disagree"): - replace(plan, disposition=ExitTurnDisposition.LEGACY) - with pytest.raises(ValueError, match="disposition and legacy reason disagree"): - replace(plan, legacy_reason="malformed") - - legacy = replace( - plan, - disposition=ExitTurnDisposition.LEGACY, - legacy_reason="declined", - ) - member_id = legacy.shared_openings[0].member_ids[0] - edge = next( - member.edge for member in observation.plan.members if member.id == member_id - ) - query = exit_turns.ExitTurnPlanQuery( - (legacy,), - MappingProxyType( - { - (edge.source, edge.target, edge.line_id): exit_turns._Membership( - legacy, member_id, None, None - ) - } - ), - MappingProxyType({}), - ) - assert query.shared_opening_for_edge(edge) is None + assert plan.disposition is ExitTurnDisposition.LEGACY + assert plan.legacy_reason == "missing-source-turn" + assert plan.shared_openings == () def test_seed_15_wraps_u_bypass_above_crossing_merge_trunk() -> None: From db34f8596a1c317b115d0c172ba0b1caaf94d1e8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 01:56:29 +0100 Subject: [PATCH 068/158] fix(routing): settle emitted member tail channels [skip ci] --- src/nf_metro/layout/routing/convergences.py | 30 +++++++ .../layout/routing/member_geometry.py | 35 ++++++++ tests/test_final_convergence_feasibility.py | 89 +++++++++++++++++-- 3 files changed, 145 insertions(+), 9 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 7dc84b400..8f23d16a7 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -3656,6 +3656,36 @@ def _plan_gap_channels( connector_ids_by_member[landing.member_id], ) ) + entry_port = next( + ( + graph.ports[edge.target] + for edge in graph.edges_from(landing.edge.target) + if edge.target in graph.ports and graph.ports[edge.target].is_entry + ), + None, + ) + if ( + landing.bypass + and entry_port is not None + and entry_port.side in (PortSide.LEFT, PortSide.RIGHT) + and abs(segment[1][1] - landing.join_point[1]) > COORD_TOLERANCE + ): + outward = 1.0 if entry_port.side is PortSide.RIGHT else -1.0 + bypass_x = landing.join_point[0] + outward * ( + SECTION_ROUTE_CLEARANCE + landing.lane_rank * graph_offset_step(graph) + ) + spans.append( + ( + None, + bypass_x, + segment[1][1], + landing.join_point[1], + frozenset({landing.edge.line_id}), + frozenset({landing.member_id}), + frozenset({landing.source_junction_id}), + connector_ids_by_member[landing.member_id], + ) + ) channels: list[_PlanGapChannel] = [] for ( carrier_rank, diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index b4a88c2fb..dc53e7dda 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -870,6 +870,16 @@ def _freeze_plan( slot.direction, ) ) + shared_opening_tail = _shared_opening_tail_gap_channel(route, ctx.graph) + if shared_opening_tail is not None: + claim = ( + shared_opening_tail.segment_rank, + shared_opening_tail.gap_lo_col, + shared_opening_tail.row, + shared_opening_tail.direction, + ) + if claim not in channel_claims: + channels.append(shared_opening_tail) plan_id = RouteMemberGeometryPlanId( semantic_route_id( "route-member-geometry", system_id, member_id, family_id.value @@ -910,6 +920,31 @@ def _freeze_plan( ) +def _shared_opening_tail_gap_channel( + route: RoutedPath, graph: MetroGraph +) -> RouteMemberGapChannel | None: + """Describe the short target-column leg after a shared opening.""" + opening_size = len(route.exit_shared_opening_points) + if not opening_size or opening_size + 1 >= len(route.points): + return None + start, end = route.points[opening_size : opening_size + 2] + direction = segment_direction(start, end) + if direction not in (Direction.U, Direction.D): + return None + _source, target = graph.edge_endpoints(route.edge) + if target.section_id is None: + return None + target_section = graph.sections[target.section_id] + return RouteMemberGapChannel( + opening_size, + start, + end, + target_section.grid_col, + target_section.grid_row, + direction, + ) + + def _frozen_gap_slots(route: RoutedPath, graph: MetroGraph) -> tuple[GapSlot, ...]: """Bind each frozen slot to the leg its completed member route occupies.""" slots: list[GapSlot] = [] diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index 42108e731..01f1b0c83 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -8,7 +8,12 @@ import nf_metro.layout.routing.convergences as convergences from nf_metro.api import prepare_graph -from nf_metro.layout.constants import COORD_TOLERANCE, CURVE_RADIUS, OFFSET_STEP +from nf_metro.layout.constants import ( + BUNDLE_TO_BUNDLE_CLEARANCE, + COORD_TOLERANCE, + CURVE_RADIUS, + OFFSET_STEP, +) from nf_metro.layout.geometry import cotravelling_lane_clearance, spans_share_corridor from nf_metro.layout.route_plan import ( ROUTE_SYSTEM_COMPATIBILITY_REASONS, @@ -280,8 +285,7 @@ def test_distinct_source_convergences_keep_opposing_same_line_channels(path) -> ) -def test_seed_15_requests_column_space_for_opposing_member_channels() -> None: - """The settled seed delegates its crowded convergence lane to the grid.""" +def test_seed_15_settles_emitted_bypass_tail_without_column_growth() -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) observation = observe_route_edges( @@ -290,12 +294,79 @@ def test_seed_15_requests_column_space_for_opposing_member_channels() -> None: allow_convergence_clearance_requirements=True, ) - requirements = observation.plan.boundary_clearance_requirements - assert len(requirements) == 1 - requirement = requirements[0] - assert requirement.axis.value == "column" - assert requirement.boundary == 3 - assert requirement.description.endswith("opposing member clearance") + route = next( + route + for route in observation.routes + if ResolvedEdge(route.edge.source, route.edge.target, route.line_id) + == ResolvedEdge("__junction_22", "__merge_10", "l1") + ) + + assert observation.plan.boundary_clearance_requirements == () + assert route.points[-2][0] == 800.0 + + +def test_seed_15_plan_channels_include_emitted_bypass_tail_lane() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + plan = next( + plan + for plan in observation.plan.convergence_plans + if any( + landing.edge == ResolvedEdge("__junction_27", "__merge_11", "l0") + for landing in plan.landings + ) + ) + lookup = convergences.gap_lookup_geometry(graph) + channels = convergences._plan_gap_channels(plan, graph, lookup) + route = next( + route + for route in observation.routes + if ResolvedEdge(route.edge.source, route.edge.target, route.line_id) + == ResolvedEdge("__junction_27", "__merge_11", "l0") + ) + + assert any( + channel.member_geometry_owned is False + and channel.coordinate == route.points[-3][0] + and (channel.y_lo, channel.y_hi) + == tuple(sorted((route.points[-3][1], route.points[-2][1]))) + for channel in channels + ) + + +def test_seed_15_shared_opening_short_tail_is_a_fixed_member_channel() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + member = next( + plan + for plan in observation.plan.member_geometry_plans + if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") + ) + tail = next( + channel + for channel in member.gap_channels + if channel.segment_rank == len(member.exit_shared_opening_points) + ) + convergence = next( + route + for route in observation.routes + if ResolvedEdge(route.edge.source, route.edge.target, route.line_id) + == ResolvedEdge("__junction_24", "__merge_10", "l1") + ) + + assert (tail.gap_lo_col, tail.row) == (5, 2) + assert (tail.start, tail.end) == ((1550.0, 520.0), (1550.0, 504.0)) + assert convergence.points[1][0] == tail.start[0] + BUNDLE_TO_BUNDLE_CLEARANCE def test_shared_source_convergences_fuse_one_opening_carrier() -> None: From 462a7bf558275fbaab1ce4604911f0a28de1a169 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 02:00:26 +0100 Subject: [PATCH 069/158] fix(routing): clear shared opening barrier sections [skip ci] --- src/nf_metro/layout/routing/exit_turns.py | 18 ++++++++++++++---- tests/test_final_convergence_feasibility.py | 17 ++--------------- tests/test_member_geometry.py | 6 +++--- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index cd81de317..a1955139d 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -2400,7 +2400,7 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: resolved_siblings = tuple(route for route in sibling_routes if route is not None) target_row = facts[0].tgt_row assert target_row is not None and facts[0].src_col is not None - barriers: list[tuple[RoutedPath, HTrunkSeg]] = [] + barriers: list[tuple[RoutedPath, HTrunkSeg, float]] = [] for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): entry_port_id = ctx.merge.entry_port_for.get(merge_id) entry_port = ( @@ -2449,12 +2449,14 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE and all(crosses(route, trunk) for route in resolved_siblings) ): - barriers.append((trunk, horizontal)) + barriers.append( + (trunk, horizontal, entry_section.bbox_y + entry_section.bbox_h) + ) if len(barriers) == 2: return None if len(barriers) != 1: return None - trunk, barrier = barriers[0] + trunk, barrier, barrier_section_bottom = barriers[0] outer_x = max(x for x, _y in trunk.points) + ctx.curve_radius top_y = header_corridor_y( graph, @@ -2463,7 +2465,15 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: base_radius=ctx.curve_radius, default=source.y, ) - branch_y = max(barrier.y, barrier.before_y, barrier.after_y) + 2 * ctx.curve_radius + branch_y = ( + max( + barrier.y, + barrier.before_y, + barrier.after_y, + barrier_section_bottom, + ) + + 2 * ctx.curve_radius + ) if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y: return None exit_x = source.x - ctx.curve_radius diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index 01f1b0c83..05f970669 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -8,12 +8,7 @@ import nf_metro.layout.routing.convergences as convergences from nf_metro.api import prepare_graph -from nf_metro.layout.constants import ( - BUNDLE_TO_BUNDLE_CLEARANCE, - COORD_TOLERANCE, - CURVE_RADIUS, - OFFSET_STEP, -) +from nf_metro.layout.constants import COORD_TOLERANCE, CURVE_RADIUS, OFFSET_STEP from nf_metro.layout.geometry import cotravelling_lane_clearance, spans_share_corridor from nf_metro.layout.route_plan import ( ROUTE_SYSTEM_COMPATIBILITY_REASONS, @@ -357,16 +352,8 @@ def test_seed_15_shared_opening_short_tail_is_a_fixed_member_channel() -> None: for channel in member.gap_channels if channel.segment_rank == len(member.exit_shared_opening_points) ) - convergence = next( - route - for route in observation.routes - if ResolvedEdge(route.edge.source, route.edge.target, route.line_id) - == ResolvedEdge("__junction_24", "__merge_10", "l1") - ) - assert (tail.gap_lo_col, tail.row) == (5, 2) - assert (tail.start, tail.end) == ((1550.0, 520.0), (1550.0, 504.0)) - assert convergence.points[1][0] == tail.start[0] + BUNDLE_TO_BUNDLE_CLEARANCE + assert (tail.start, tail.end) == ((1550.0, 610.0), (1550.0, 504.0)) def test_shared_source_convergences_fuse_one_opening_carrier() -> None: diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 4845a0ffb..e387b8874 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -242,13 +242,13 @@ def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: (1600.5, 338.0), (1600.5, 186.0), (1748.0, 186.0), - (1748.0, 520.0), + (1748.0, 610.0), ) assert {plan.exit_shared_opening_points for plan in plans} == {opening} assert {plan.points[: len(opening)] for plan in plans} == {opening} assert {plan.edge.target: plan.points[len(opening) :] for plan in plans} == { - "s5__entry_right_16": ((1550.0, 520.0), (1550.0, 504.0), (1478.0, 504.0)), - "s6__entry_right_14": ((1282.0, 520.0), (1282.0, 540.0), (1246.0, 540.0)), + "s5__entry_right_16": ((1550.0, 610.0), (1550.0, 504.0), (1478.0, 504.0)), + "s6__entry_right_14": ((1286.0, 610.0), (1286.0, 540.0), (1246.0, 540.0)), } for plan in plans: assert plan.consumed_reservation_ids == () From 190c435ee0fb8d5455f1ed0245b5713ff04f5cdb Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 02:08:00 +0100 Subject: [PATCH 070/158] fix(routing): preserve and clear shared opening trunks [skip ci] --- src/nf_metro/layout/routing/common.py | 1 + src/nf_metro/layout/routing/exit_turns.py | 30 ++++++++++++++++++++- src/nf_metro/layout/routing/normalize.py | 3 +-- tests/test_final_convergence_feasibility.py | 2 +- tests/test_member_geometry.py | 6 ++--- 5 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index ae90111f2..8f22d6d2f 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -2457,6 +2457,7 @@ def planner_owns_segment(route: RoutedPath, rank: int) -> bool: convergence_owns_segment_boundary(route, rank) or route.fan_route_emitter is not None or member_plan_owns_segment_boundary(route, rank) + or rank < len(route.exit_shared_opening_points) or ( route.exit_turn_axis_id is not None and route.exit_turn_segment_rank == rank ) diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index a1955139d..c7f4861ff 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -2458,6 +2458,34 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: return None trunk, barrier, barrier_section_bottom = barriers[0] outer_x = max(x for x, _y in trunk.points) + ctx.curve_radius + target_x = min(fact.tgt.x for fact in facts) + crossing_trunk_bottom = barrier_section_bottom + for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): + trunk_edge = next( + ( + edge + for edge in graph.edges_from(trunk_source_id) + if edge.target == merge_id and edge.line_id != member_edges[0].line_id + ), + None, + ) + if trunk_edge is None: + continue + candidate = _route_merge_trunk( + _build_inter_facts(trunk_edge, *graph.edge_endpoints(trunk_edge), ctx) + ) + for _rank, horizontal in iter_horizontal_trunks(candidate): + if ( + min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE + and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE + and horizontal.y > source.y + COORD_TOLERANCE + ): + crossing_trunk_bottom = max( + crossing_trunk_bottom, + horizontal.y, + horizontal.before_y, + horizontal.after_y, + ) top_y = header_corridor_y( graph, source_section.grid_row, @@ -2470,7 +2498,7 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: barrier.y, barrier.before_y, barrier.after_y, - barrier_section_bottom, + crossing_trunk_bottom, ) + 2 * ctx.curve_radius ) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 56286dbe3..cbd40f07d 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1348,8 +1348,7 @@ def _declared_htrunks(routes: list[RoutedPath]) -> list[_HTrunk]: return [ t for t in _collect_htrunks(routes, include_exempt=True) - if t.route.trunk_slot is not None - and not route_system_owns_segment_boundary(t.route, t.idx) + if t.route.trunk_slot is not None and not planner_owns_segment(t.route, t.idx) ] diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index 05f970669..1cb3fa106 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -353,7 +353,7 @@ def test_seed_15_shared_opening_short_tail_is_a_fixed_member_channel() -> None: if channel.segment_rank == len(member.exit_shared_opening_points) ) assert (tail.gap_lo_col, tail.row) == (5, 2) - assert (tail.start, tail.end) == ((1550.0, 610.0), (1550.0, 504.0)) + assert (tail.start, tail.end) == ((1550.0, 644.0), (1550.0, 504.0)) def test_shared_source_convergences_fuse_one_opening_carrier() -> None: diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index e387b8874..29f3f63ed 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -242,13 +242,13 @@ def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: (1600.5, 338.0), (1600.5, 186.0), (1748.0, 186.0), - (1748.0, 610.0), + (1748.0, 644.0), ) assert {plan.exit_shared_opening_points for plan in plans} == {opening} assert {plan.points[: len(opening)] for plan in plans} == {opening} assert {plan.edge.target: plan.points[len(opening) :] for plan in plans} == { - "s5__entry_right_16": ((1550.0, 610.0), (1550.0, 504.0), (1478.0, 504.0)), - "s6__entry_right_14": ((1286.0, 610.0), (1286.0, 540.0), (1246.0, 540.0)), + "s5__entry_right_16": ((1550.0, 644.0), (1550.0, 504.0), (1478.0, 504.0)), + "s6__entry_right_14": ((1286.0, 644.0), (1286.0, 540.0), (1246.0, 540.0)), } for plan in plans: assert plan.consumed_reservation_ids == () From f11a648f0faf71a8992e84203abd863cb4291634 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 02:31:32 +0100 Subject: [PATCH 071/158] fix(routing): settle shared opening member conflicts [skip ci] --- .../layout/routing/member_geometry.py | 172 ++++++++++++++++++ src/nf_metro/layout/routing/planning.py | 7 + tests/test_member_geometry.py | 89 +++++++++ 3 files changed, 268 insertions(+) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index dc53e7dda..b62462904 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -202,6 +202,178 @@ def empty_member_geometry_execution() -> MemberGeometryExecution: return MemberGeometryExecution((), MappingProxyType({}), MappingProxyType({})) +def settle_shared_opening_trunk_conflicts( + execution: MemberGeometryExecution, + convergence_plans: Sequence[ConvergencePlan], + graph: MetroGraph, + *, + curve_radius: float, +) -> MemberGeometryExecution: + """Move a member flank clear of a settled shared-opening trunk endpoint.""" + convergence_member_ids = frozenset( + member_id for plan in convergence_plans for member_id in plan.member_ids + ) + fixed_claims = tuple( + ( + plan, + channel, + plan.points[channel.segment_rank - 1], + plan.points[channel.segment_rank], + ) + for plan in execution.plans + if plan.exit_shared_opening_points and plan.trunk_slot is not None + for channel in plan.gap_channels + if channel.segment_rank == len(plan.exit_shared_opening_points) + and channel.segment_rank > 0 + and abs( + plan.points[channel.segment_rank - 1][1] + - plan.points[channel.segment_rank][1] + ) + <= COORD_TOLERANCE + ) + if not fixed_claims: + return execution + + from nf_metro.layout.routing import convergences + + lookup = convergences.gap_lookup_geometry(graph) + convergence_channels = tuple( + channel + for convergence in convergence_plans + if convergence.owns_geometry + for channel in convergences._plan_gap_channels(convergence, graph, lookup) + ) + + plans: list[RouteMemberGeometryPlan] = [] + changed = False + for plan in execution.plans: + if ( + plan.member_id in convergence_member_ids + or plan.exit_shared_opening_points + or plan.fan_plan_id is not None + ): + plans.append(plan) + continue + points = list(plan.points) + moved_ranks: set[int] = set() + for channel in plan.gap_channels: + rank = channel.segment_rank + movable_x = points[rank][0] + y_lo, y_hi = sorted((points[rank][1], points[rank + 1][1])) + for fixed_plan, fixed_channel, interior, endpoint in fixed_claims: + if ( + fixed_plan.edge.line_id == plan.edge.line_id + or (fixed_channel.gap_lo_col, fixed_channel.row) + != (channel.gap_lo_col, channel.row) + or fixed_channel.direction is channel.direction + or not y_lo + COORD_TOLERANCE < endpoint[1] < y_hi - COORD_TOLERANCE + ): + continue + interior_delta = interior[0] - endpoint[0] + movable_delta = movable_x - endpoint[0] + clearance = cotravelling_lane_clearance( + same_line=False, + counter_running=True, + curve_radius=curve_radius, + ) + if ( + interior_delta * movable_delta >= 0 + or abs(movable_delta) >= clearance - COORD_TOLERANCE_FINE + ): + continue + flank_sign = -1.0 if movable_delta < 0 else 1.0 + candidate_x = endpoint[0] + flank_sign * clearance + obstacles = [ + ( + obstacle.coordinate, + obstacle.y_lo, + obstacle.y_hi, + obstacle.down, + plan.edge.line_id in obstacle.line_ids, + ) + for obstacle in convergence_channels + if obstacle.gap == (channel.gap_lo_col, channel.row) + ] + obstacles.extend( + ( + obstacle.start[0], + min(obstacle.start[1], obstacle.end[1]), + max(obstacle.start[1], obstacle.end[1]), + obstacle.direction is Direction.D, + other.edge.line_id == plan.edge.line_id, + ) + for other in execution.plans + if other.member_id != plan.member_id + for obstacle in other.gap_channels + if (obstacle.gap_lo_col, obstacle.row) + == (channel.gap_lo_col, channel.row) + ) + for ( + obstacle_x, + obstacle_lo, + obstacle_hi, + obstacle_down, + same_line, + ) in sorted(obstacles, key=lambda item: flank_sign * item[0]): + if ( + min(y_hi, obstacle_hi) - max(y_lo, obstacle_lo) + <= MIN_CORRIDOR_Y_OVERLAP + ): + continue + required = cotravelling_lane_clearance( + same_line=same_line, + counter_running=(channel.direction is Direction.D) + is not obstacle_down, + curve_radius=curve_radius, + ) + if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE: + candidate_x = obstacle_x + flank_sign * required + before = points[rank - 1] if rank > 0 else None + after = points[rank + 2] if rank + 2 < len(points) else None + if ( + before is None + or after is None + or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE + or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE + ): + continue + points[rank] = (candidate_x, points[rank][1]) + points[rank + 1] = (candidate_x, points[rank + 1][1]) + moved_ranks.add(rank) + movable_x = candidate_x + break + if not moved_ranks: + plans.append(plan) + continue + changed = True + plans.append( + replace( + plan, + points=tuple(points), + gap_channels=tuple( + replace( + channel, + start=points[channel.segment_rank], + end=points[channel.segment_rank + 1], + ) + if channel.segment_rank in moved_ranks + else channel + for channel in plan.gap_channels + ), + ) + ) + if not changed: + return execution + frozen_plans = tuple(plans) + return MemberGeometryExecution( + frozen_plans, + execution.failure_reasons, + MappingProxyType({plan.edge: plan for plan in frozen_plans}), + execution.settled_exit_turns, + execution.reconciled_member_ids, + ) + + def _allocated_turn( route: RoutedPath, run_direction: Direction | None, diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index 1fdec0ce3..f682b6daa 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -34,6 +34,7 @@ MemberGeometryExecution, build_member_geometry_execution, empty_member_geometry_execution, + settle_shared_opening_trunk_conflicts, ) from nf_metro.layout.routing.system_emission import ( RouteSystemEmissionExecution, @@ -433,6 +434,12 @@ def prepare_member_geometry( include_resources=False, allow_clearance_requirements=allow_convergence_clearance_requirements, ) + member_geometry = settle_shared_opening_trunk_conflicts( + member_geometry, + convergences.plans, + graph, + curve_radius=ctx.curve_radius, + ) ctx.convergences = convergences.query route_systems = build_route_system_emission_execution( scaffold, diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 29f3f63ed..500340d66 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -256,6 +256,95 @@ def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: _assert_channels_equal_emission(observation, plan) +def test_seed_15_settles_member_clear_of_shared_opening_and_convergence() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + movable = next( + plan + for plan in observation.plan.member_geometry_plans + if plan.edge == ResolvedEdge("__junction_24", "s6__entry_right_14", "l1") + ) + fixed = next( + plan + for plan in observation.plan.member_geometry_plans + if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") + ) + landing = next( + landing + for plan in observation.plan.convergence_plans + for landing in plan.landings + if landing.edge == ResolvedEdge("__junction_25", "__merge_9", "l0") + ) + + assert movable.gap_channels[0].start[0] == 1534.0 + assert fixed.gap_channels[-1].start[0] == 1550.0 + assert landing.minimum_runway == 52.0 + assert landing.opening_turn_coordinate - landing.join_point[0] == 52.0 + + +@pytest.mark.parametrize("mirror", (1.0, -1.0)) +def test_shared_opening_settlement_supports_both_target_flanks(mirror) -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observation = observe_route_edges( + graph, + station_offsets=compute_station_offsets(graph), + allow_convergence_clearance_requirements=True, + ) + selected = tuple( + plan + for plan in observation.plan.member_geometry_plans + if plan.edge + in { + ResolvedEdge("__junction_23", "s5__entry_right_16", "l2"), + ResolvedEdge("__junction_24", "s6__entry_right_14", "l1"), + } + ) + + def mirrored(plan, *, movable=False): + points = tuple((mirror * x, y) for x, y in plan.points) + if movable: + points = tuple( + (mirror * 1542.0, y) if rank in {1, 2} else point + for rank, (point, (_x, y)) in enumerate(zip(points, plan.points)) + ) + return replace( + plan, + points=points, + exit_shared_opening_points=tuple( + (mirror * x, y) for x, y in plan.exit_shared_opening_points + ), + gap_channels=tuple( + replace( + channel, + start=points[channel.segment_rank], + end=points[channel.segment_rank + 1], + ) + for channel in plan.gap_channels + ), + ) + + plans = tuple( + mirrored(plan, movable=plan.edge.line_id == "l1") for plan in selected + ) + execution = member_geometry.MemberGeometryExecution( + plans, + MappingProxyType({}), + MappingProxyType({plan.edge: plan for plan in plans}), + ) + settled = member_geometry.settle_shared_opening_trunk_conflicts( + execution, (), graph, curve_radius=CURVE_RADIUS + ) + movable = next(plan for plan in settled.plans if plan.edge.line_id == "l1") + + assert movable.gap_channels[0].start[0] == mirror * 1538.0 + + def test_seed_15_shared_opening_prevents_both_historical_trunk_crossings( monkeypatch, ) -> None: From 11ee449572764af23bcacf25b61f8b674f6f740d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 04:54:17 +0100 Subject: [PATCH 072/158] fix(routing): settle post-convergence shared trunks [skip ci] --- docs/dev/routing_gate_coverage.md | 1879 ++++++++++------- src/nf_metro/layout/envelope_settlement.py | 25 +- src/nf_metro/layout/phases/guards.py | 7 +- src/nf_metro/layout/route_plan.py | 7 + src/nf_metro/layout/route_reservations.py | 97 +- src/nf_metro/layout/routing/convergences.py | 473 ++++- .../layout/routing/member_geometry.py | 105 +- src/nf_metro/layout/routing/planning.py | 37 + src/nf_metro/layout/routing/reserved_bands.py | 2 + src/nf_metro/render/section_header.py | 120 +- src/nf_metro/render/svg.py | 6 +- .../data/routing_gate_coverage_baseline.json | 387 +++- tests/data/routing_gate_triage.json | 60 - tests/test_candidate_executor.py | 15 + tests/test_convergence_planner.py | 34 + tests/test_envelope_settlement.py | 68 +- tests/test_final_convergence_feasibility.py | 6 +- tests/test_guard_registry.py | 60 +- tests/test_member_geometry.py | 4 +- tests/test_route_reservations.py | 44 +- tests/test_section_header_placement.py | 71 +- 21 files changed, 2529 insertions(+), 978 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index eed3db2a4..bde062dda 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**1987/2878** gates fully exercised (both/all arms hit by some fixture); **891** gates have at least one un-exercised arm. +**2163/3341** gates fully exercised (both/all arms hit by some fixture); **1178** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **341** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **326** gaps carry a triage verdict. ## `arranger.py` @@ -48,54 +48,58 @@ Gates with an un-exercised arm: ## `common.py` -149/191 gates fully exercised. +150/196 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 159 | `for edge in graph.edges_from(port_id):` | `->L163` | | -| 161 | `if not consumer.is_port:` | `->L159` | | -| 345 | `if top is None or bottom is None:` | `->L346` | **defensive** -- Defensive in iter_inter_row_gaps (consumed by inter_row_gap_upper_row and _inter_row_gap_band): adjacent rows in the sorted section-row set both contain sections, so row_bottom_edge / row_top_edge resolve; the None skip arm guards a row with no sections that the iteration never yields. | -| 512 | `if s.bbox_h <= 0:` | `->L513` | **defensive** -- Degenerate-bbox guard in _grid_row_bands: a laid-out section always has bbox_h > 0, so the skip arm only protects against a zero/negative-height section that the layout never produces. | -| 631 | `if n == 0:` | `->L632` | **defensive** -- Empty-bundle guard: all callers (normalize.py 291/1648, inter_section_handlers.py 783/796/2132) derive bundle_widths from a non-empty bundle line count, so n is always >=1; the empty-list arm is never taken. | -| 633 | `if bundle_index < 0 or bundle_index >= n:` | `->L634` | **defensive** -- Contract guard raising IndexError on an out-of-range bundle_index. Callers always pass an in-range index (0<=i COORD_TOLERANCE:` | `->L961` | **defensive** -- Interior horizontal segments only occur in 6-point bypass U-shapes whose flanking legs are always vertical (same x on each side); routes with non-vertical flanks are normalize_exempt and filtered out. The prev-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 962 | `if abs(pts[k + 2][0] - x1) > COORD_TOLERANCE:` | `->L963` | **defensive** -- Mirror of the prev-flank guard: a bypass trunk's trailing flank is always vertical, so the next-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1007 | `if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:` | `->L1008` | **defensive** -- Trunk-not-horizontal guard in port_peeloff_tail, reached only after the earlier port-lead and riser checks returned early. In an orthogonal route segments alternate H/V, so the segment preceding a vertical riser is always horizontal; instrumenting the corpus the guard is reached but the non-horizontal-trunk arm never fires. Defensive against a degenerate collinear tail the router does not produce. | -| 1099 | `if len({round(value, 6) for value in port_ys}) != n:` | `->L1100` | **defensive** -- A complete entry port assigns every distinct line a unique station-offset slot. Duplicate port-Y values therefore require a malformed route set that bypassed station offset allocation; test_invalid_opposing_candidate_is_rejected[duplicate-port-slot] exercises the rejection directly. | -| 1101 | `if port_ys[-1] - port_ys[0] > (n - 1) * step + COORD_TOLERANCE:` | `->L1102` | **defensive** -- Station offset allocation gives a complete n-line entry port one contiguous n-slot band, so its port-Y extent is exactly bounded by (n-1)*step. The wider-band reject is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-port-band]. | -| 1104 | `if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:` | `->L1105` | **defensive** -- A complete destination bundle receives one contiguous n-slot channel band from gap materialization, so its peel-X extent cannot exceed (n-1)*step. The wider-band arm protects hand-built or corrupted route geometry and is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-channel-band]. | -| 1108 | `if shared_hi - shared_lo < min_common_approach - COORD_TOLERANCE:` | `->L1109` | **defensive** -- Inter-row placement reserves at least the two-corner runway used by side-port peel-off handlers, so complete opposing entry tails share at least min_common_approach vertically. A shorter overlap is malformed settled geometry; test_invalid_opposing_candidate_is_rejected[insufficient-common-approach] exercises the guard. | -| 1225 | `if trunk_ys[-1] - trunk_ys[0] <= COORD_TOLERANCE:` | `->L1226` | **needs-review** -- Degenerate single-Y trunk band in iter_port_peeloff_bundles: a peel-off bundle is yielded only when its members ride trunks at distinct depths, so the equal-depth arm guards a same-Y bundle the trunk-slot materialization never leaves; render-diff confirms no visual change. | -| 1347 | `if pinned_bases and any(` | `->L1350` | | -| 1360 | `if k == 0 or k + 2 >= len(points):` | `->L1361` | | -| 1544 | `elif tgt_sec:` | `->L1552` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1644 | `if dx > 0:` | `->L1647` | **defensive** -- Leftward (dx<=0) near-source fallback: the symmetric mirror of the rightward fallback. Reached only when section info is unavailable AND no adjacent column resolves; valid layouts take the rightward fallback, but the leftward mirror is kept for robustness. | -| 1655 | `if st is not None and st.is_port:` | `->L1653` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | -| 1704 | `if sec.bbox_w <= 0:` | `->L1705` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | -| 1752 | `if sec.bbox_w <= 0:` | `->L1753` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | -| 1786 | `if not src.is_port:` | `->L1784` | | -| 1802 | `for i in range(len(pts) - 1):` | `->L1803`, `->L1819` | **defensive** -- point_on_polyline is used only by the --animate renderer (render/animate.py); the matrix's render-path coverage sweep calls render_svg without animation, so none of its branches are reached. Exercised instead by test_animation.py / test_routing.py. | -| 1807 | `if seg_len2 == 0:` | `->L1808`, `->L1811` | **defensive** -- point_on_polyline degenerate-segment branch, reached only via the --animate renderer (render/animate.py); the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py, not the corpus. | -| 1808 | `if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:` | `->L1809`, `->L1810` | **defensive** -- point_on_polyline zero-length-segment hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1812 | `if t < -0.01 or t > 1.01:` | `->L1813`, `->L1814` | **defensive** -- point_on_polyline parameter-range branch, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1817 | `if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:` | `->L1802`, `->L1818` | **defensive** -- point_on_polyline projection hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1912 | `if all_in_range:` | `->L1916` | **defensive** -- cross_row bypass guard: the False arm (no sections in the column range -> return clearance) needs an empty [lo,hi] column span, which a valid multi-section pipeline routing cross_row never has; a degenerate-range guard. | -| 1939 | `if endpoints:` | `->L1942` | **defensive** -- Non-cross_row bypass guard: the endpoints list always includes the source and target sections (both in src_row), so it is never empty; the default-clearance arm only guards a degenerate empty endpoint set. | -| 1952 | `if src_row is not None:` | `->L1964` | **defensive** -- Header-clamp guard: the False arm (src_row is None) needs an unresolvable source section, but inter-section bypass sources always resolve to a grid row after layout; a guard against an unresolved source that doesn't occur. | -| 1959 | `if safe_cap >= row_bottom:` | `->L1962` | **defensive** -- The false arm is a defensive midpoint fallback for an inter-row gap too narrow to clear both an upper-row bypass and the lower section header. Placement reserves the routing band before bypass geometry is computed, so settled corpus layouts provide enough clearance for the safe-cap arm. | -| 2058 | `if section.bbox_w <= 0:` | `->L2059` | **defensive** -- Degenerate-bbox guard in _h_segment_penetrates_section (the single-section predicate shared by _h_segment_crosses_other_section and _packed_cell_mate_obstructs): sections always have positive width after layout. | -| 2084 | `if station is None:` | `->L2085` | **defensive** -- None-station guard: every production caller passes a concrete Station (grep-verified); the None arm only guards the typed Station\|None parameter. | -| 2090 | `for port in junction_source_ports(graph, station.id):` | `->L2109` | **defensive** -- Upstream loop-exit in resolve_section: every fan-out junction is emitted with an exit_port->junction edge whose source port carries a section id, so junction_source_ports always yields a sectioned port and the loop returns; the fall-through to the type-contract return None is the never-taken no-upstream fallback. | -| 2092 | `if sec:` | `->L2090` | **defensive** -- Upstream section-lookup guard: graph.sections.get(section_id) returning None requires a section_id absent from graph.sections, a corrupted state no valid parse produces; null-guard. | -| 2098 | `for e in graph.edges:` | `->L2109` | **defensive** -- No-preference graph.edges scan loop-exit: a fan-out junction always has a sectioned incident port (its exit/entry ports carry a section_id), so the loop always returns and never exhausts graph.edges; the fall-through to the type-contract return None is the never-taken no-neighbour fallback. | -| 2099 | `if e.source == station.id:` | `->L2100` | **defensive** -- Junction-as-source arm of the no-preference scan: fan-out junctions are emitted exit_port->junction before junction->entry_port, so graph.edges encounters the junction as a target (elif arm) first and returns; the source arm is a cheap structural guard whose deadness rests on emit order, not a hard type invariant. | -| 2105 | `if other.section_id:` | `->L2098` | **defensive** -- The prefer_upstream=False scan reads a junction's incident neighbour on either side, always a sectioned station or port; the section-less (False) arm only guards a junction-to-junction edge valid construction never produces. | -| 2107 | `if sec:` | `->L2098` | **defensive** -- prefer_upstream=False section-lookup guard: graph.sections.get(section_id) returning None requires a missing section_id (corrupted state); null-guard. | -| 2117 | `if section is None:` | `->L2118` | **defensive** -- resolve_section_colrow accepts a station whose owning section may not resolve. Production routing passes resolved ports or junctions with an incident sectioned port, so the None return only protects a malformed or incomplete graph. | -| 2160 | `if reserved is None or abs(src_row - tgt_row) != 1:` | `->L2161` | | -| 2216 | `if dy > 0:` | `->L2221` | **defensive** -- Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code. | +| 161 | `for edge in graph.edges_from(port_id):` | `->L165` | | +| 163 | `if not consumer.is_port:` | `->L161` | | +| 347 | `if top is None or bottom is None:` | `->L348` | **defensive** -- Defensive in iter_inter_row_gaps (consumed by inter_row_gap_upper_row and _inter_row_gap_band): adjacent rows in the sorted section-row set both contain sections, so row_bottom_edge / row_top_edge resolve; the None skip arm guards a row with no sections that the iteration never yields. | +| 514 | `if s.bbox_h <= 0:` | `->L515` | **defensive** -- Degenerate-bbox guard in _grid_row_bands: a laid-out section always has bbox_h > 0, so the skip arm only protects against a zero/negative-height section that the layout never produces. | +| 633 | `if n == 0:` | `->L634` | **defensive** -- Empty-bundle guard: all callers (normalize.py 291/1648, inter_section_handlers.py 783/796/2132) derive bundle_widths from a non-empty bundle line count, so n is always >=1; the empty-list arm is never taken. | +| 635 | `if bundle_index < 0 or bundle_index >= n:` | `->L636` | **defensive** -- Contract guard raising IndexError on an out-of-range bundle_index. Callers always pass an in-range index (0<=i COORD_TOLERANCE:` | `->L965` | **defensive** -- Interior horizontal segments only occur in 6-point bypass U-shapes whose flanking legs are always vertical (same x on each side); routes with non-vertical flanks are normalize_exempt and filtered out. The prev-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 966 | `if abs(pts[k + 2][0] - x1) > COORD_TOLERANCE:` | `->L967` | **defensive** -- Mirror of the prev-flank guard: a bypass trunk's trailing flank is always vertical, so the next-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1011 | `if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:` | `->L1012` | **defensive** -- Trunk-not-horizontal guard in port_peeloff_tail, reached only after the earlier port-lead and riser checks returned early. In an orthogonal route segments alternate H/V, so the segment preceding a vertical riser is always horizontal; instrumenting the corpus the guard is reached but the non-horizontal-trunk arm never fires. Defensive against a degenerate collinear tail the router does not produce. | +| 1103 | `if len({round(value, 6) for value in port_ys}) != n:` | `->L1104` | **defensive** -- A complete entry port assigns every distinct line a unique station-offset slot. Duplicate port-Y values therefore require a malformed route set that bypassed station offset allocation; test_invalid_opposing_candidate_is_rejected[duplicate-port-slot] exercises the rejection directly. | +| 1105 | `if port_ys[-1] - port_ys[0] > (n - 1) * step + COORD_TOLERANCE:` | `->L1106` | **defensive** -- Station offset allocation gives a complete n-line entry port one contiguous n-slot band, so its port-Y extent is exactly bounded by (n-1)*step. The wider-band reject is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-port-band]. | +| 1108 | `if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:` | `->L1109` | **defensive** -- A complete destination bundle receives one contiguous n-slot channel band from gap materialization, so its peel-X extent cannot exceed (n-1)*step. The wider-band arm protects hand-built or corrupted route geometry and is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-channel-band]. | +| 1112 | `if shared_hi - shared_lo < min_common_approach - COORD_TOLERANCE:` | `->L1113` | **defensive** -- Inter-row placement reserves at least the two-corner runway used by side-port peel-off handlers, so complete opposing entry tails share at least min_common_approach vertically. A shorter overlap is malformed settled geometry; test_invalid_opposing_candidate_is_rejected[insufficient-common-approach] exercises the guard. | +| 1229 | `if trunk_ys[-1] - trunk_ys[0] <= COORD_TOLERANCE:` | `->L1230` | **needs-review** -- Degenerate single-Y trunk band in iter_port_peeloff_bundles: a peel-off bundle is yielded only when its members ride trunks at distinct depths, so the equal-depth arm guards a same-Y bundle the trunk-slot materialization never leaves; render-diff confirms no visual change. | +| 1351 | `if pinned_bases and any(` | `->L1354` | | +| 1364 | `if k == 0 or k + 2 >= len(points):` | `->L1365` | | +| 1496 | `port is None` | `->L1501` | | +| 1497 | `or entry is None` | `->L1501` | | +| 1498 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L1501` | | +| 1499 | `or abs(entry.y - tgt.y) > COORD_TOLERANCE` | `->L1501` | | +| 1584 | `elif tgt_sec:` | `->L1592` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1684 | `if dx > 0:` | `->L1687` | **defensive** -- Leftward (dx<=0) near-source fallback: the symmetric mirror of the rightward fallback. Reached only when section info is unavailable AND no adjacent column resolves; valid layouts take the rightward fallback, but the leftward mirror is kept for robustness. | +| 1695 | `if st is not None and st.is_port:` | `->L1693` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | +| 1744 | `if sec.bbox_w <= 0:` | `->L1745` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | +| 1792 | `if sec.bbox_w <= 0:` | `->L1793` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | +| 1826 | `if not src.is_port:` | `->L1824` | | +| 1842 | `for i in range(len(pts) - 1):` | `->L1843`, `->L1859` | **defensive** -- point_on_polyline is used only by the --animate renderer (render/animate.py); the matrix's render-path coverage sweep calls render_svg without animation, so none of its branches are reached. Exercised instead by test_animation.py / test_routing.py. | +| 1847 | `if seg_len2 == 0:` | `->L1848`, `->L1851` | **defensive** -- point_on_polyline degenerate-segment branch, reached only via the --animate renderer (render/animate.py); the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py, not the corpus. | +| 1848 | `if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:` | `->L1849`, `->L1850` | **defensive** -- point_on_polyline zero-length-segment hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1852 | `if t < -0.01 or t > 1.01:` | `->L1853`, `->L1854` | **defensive** -- point_on_polyline parameter-range branch, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1857 | `if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:` | `->L1842`, `->L1858` | **defensive** -- point_on_polyline projection hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1952 | `if all_in_range:` | `->L1956` | **defensive** -- cross_row bypass guard: the False arm (no sections in the column range -> return clearance) needs an empty [lo,hi] column span, which a valid multi-section pipeline routing cross_row never has; a degenerate-range guard. | +| 1979 | `if endpoints:` | `->L1982` | **defensive** -- Non-cross_row bypass guard: the endpoints list always includes the source and target sections (both in src_row), so it is never empty; the default-clearance arm only guards a degenerate empty endpoint set. | +| 1992 | `if src_row is not None:` | `->L2004` | **defensive** -- Header-clamp guard: the False arm (src_row is None) needs an unresolvable source section, but inter-section bypass sources always resolve to a grid row after layout; a guard against an unresolved source that doesn't occur. | +| 1999 | `if safe_cap >= row_bottom:` | `->L2002` | **defensive** -- The false arm is a defensive midpoint fallback for an inter-row gap too narrow to clear both an upper-row bypass and the lower section header. Placement reserves the routing band before bypass geometry is computed, so settled corpus layouts provide enough clearance for the safe-cap arm. | +| 2098 | `if section.bbox_w <= 0:` | `->L2099` | **defensive** -- Degenerate-bbox guard in _h_segment_penetrates_section (the single-section predicate shared by _h_segment_crosses_other_section and _packed_cell_mate_obstructs): sections always have positive width after layout. | +| 2124 | `if station is None:` | `->L2125` | **defensive** -- None-station guard: every production caller passes a concrete Station (grep-verified); the None arm only guards the typed Station\|None parameter. | +| 2130 | `for port in junction_source_ports(graph, station.id):` | `->L2149` | **defensive** -- Upstream loop-exit in resolve_section: every fan-out junction is emitted with an exit_port->junction edge whose source port carries a section id, so junction_source_ports always yields a sectioned port and the loop returns; the fall-through to the type-contract return None is the never-taken no-upstream fallback. | +| 2132 | `if sec:` | `->L2130` | **defensive** -- Upstream section-lookup guard: graph.sections.get(section_id) returning None requires a section_id absent from graph.sections, a corrupted state no valid parse produces; null-guard. | +| 2138 | `for e in graph.edges:` | `->L2149` | **defensive** -- No-preference graph.edges scan loop-exit: a fan-out junction always has a sectioned incident port (its exit/entry ports carry a section_id), so the loop always returns and never exhausts graph.edges; the fall-through to the type-contract return None is the never-taken no-neighbour fallback. | +| 2139 | `if e.source == station.id:` | `->L2140` | **defensive** -- Junction-as-source arm of the no-preference scan: fan-out junctions are emitted exit_port->junction before junction->entry_port, so graph.edges encounters the junction as a target (elif arm) first and returns; the source arm is a cheap structural guard whose deadness rests on emit order, not a hard type invariant. | +| 2145 | `if other.section_id:` | `->L2138` | **defensive** -- The prefer_upstream=False scan reads a junction's incident neighbour on either side, always a sectioned station or port; the section-less (False) arm only guards a junction-to-junction edge valid construction never produces. | +| 2147 | `if sec:` | `->L2138` | **defensive** -- prefer_upstream=False section-lookup guard: graph.sections.get(section_id) returning None requires a missing section_id (corrupted state); null-guard. | +| 2157 | `if section is None:` | `->L2158` | **defensive** -- resolve_section_colrow accepts a station whose owning section may not resolve. Production routing passes resolved ports or junctions with an incident sectioned port, so the None return only protects a malformed or incomplete graph. | +| 2200 | `if reserved is None or abs(src_row - tgt_row) != 1:` | `->L2201` | | +| 2256 | `if dy > 0:` | `->L2261` | **defensive** -- Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code. | ## `context.py` @@ -105,217 +109,366 @@ Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 300 | `if not mst:` | `->L301` | **defensive** -- mjid ranges over junctions, a subset of junction_ids all present in graph.stations; the missing-station continue never fires. | -| 303 | `if tgt_col is None:` | `->L304` | **defensive** -- A merge junction always resolves to a grid column (it sits adjacent to its entry-port section); the unresolved-column continue never fires. | -| 361 | `if m_col is None:` | `->L362` | **defensive** -- Reached only for junctions in trunk_source, which by construction resolved a column, so m_col is never None and the skip arm never fires. | -| 373 | `if pred_col is None:` | `->L374` | **defensive** -- A merge feeder is a junction fed by an exit port, which always resolves a column, so the skip arm never fires. | -| 392 | `if ep and ep.is_entry:` | `->L390` | **defensive** -- Every outgoing edge of a classified convergence junction targets its sole entry port, so the non-entry arm never fires in the skip-edge pass. | -| 560 | `if port_st is None:` | `->L561` | **defensive** -- Ports listed in a section's entry_ports/exit_ports always have a backing station; the missing-station continue never fires. | -| 580 | `if not ctx.station_offsets:` | `->L581` | **defensive** -- Pairs with _get_offset's guard: compute_station_offsets is never empty on the render path, so _max_offset_at's early-return arm guards only the route_edges(station_offsets=None) call path used by tests. | -| 629 | `if port.section_id is None:` | `->L630`, `->L631` | | -| 661 | `for pid in section.entry_ports:` | `->L662`, `->L664` | | -| 662 | `if line_id in graph.station_lines(pid):` | `->L661`, `->L663` | | -| 690 | `if port is not None:` | `->L691`, `->L694` | | -| 695 | `for sid in section.station_ids:` | `->L696`, `->L700` | | -| 697 | `if not station.is_port:` | `->L695`, `->L698` | | -| 719 | `if section is None:` | `->L720` | | -| 728 | `if sec and sec.grid_col >= 0:` | `->L730` | **needs-review** -- grid-col sentinel: a rail-mode section carries grid_col == -1 (it is placed outside the section grid), so the negative-column arm returning None is load-bearing, not dead. No corpus routing path resolves a rail section's column, so the arm is un-exercised, but a rail topology can reach it; do not fold into a non-optional accessor. | -| 736 | `if sec and sec.grid_row >= 0:` | `->L737`, `->L738` | **needs-review** -- grid-row sentinel: a rail-mode section carries grid_row == -1 (placed outside the section grid), so the negative-row arm returning None is load-bearing, not dead. No corpus routing path resolves a rail section's row, so the arm is un-exercised, but a rail topology can reach it; do not fold into a non-optional accessor. | -| 826 | `if sec is None:` | `->L827` | **defensive** -- _resolve_section_colrow is called for ports/junctions that always resolve to a section; the None-section early-return never fires (mirrors the grid-sentinel guards at L395/L403). | -| 872 | `if src.col is None or tgt.col is None:` | `->L873` | **defensive** -- _hop_needs_bypass is called only for endpoints whose columns the caller already resolved, so the no-column early-return never fires. | -| 967 | `if pst is None:` | `->L968` | **needs-review** -- pst = graph.stations.get(port.id): a port is always registered as a backing station, so the guard is never taken across the corpus. Kept as a station-id string read (no Edge in hand), the idiom deferred by the #1438 single-endpoint migration for a future station-id accessor; the sibling section lookup here was migrated to graph.section_for_port. | -| 1127 | `if not jst:` | `->L1128` | **defensive** -- jid ranges over junction_ids, all present in graph.stations; the missing-station continue never fires. | -| 1130 | `if src_col is None:` | `->L1131` | **defensive** -- A fan-out junction always resolves to a grid column; the unresolved-column continue never fires. | -| 1169 | `if not (tgt.is_port or edge.target in junction_ids):` | `->L1170` | | -| 1172 | `if tgt_col is None:` | `->L1173` | **defensive** -- A junction's port/junction target always resolves to a grid column; the unresolved-column continue never fires. | -| 1293 | `if edge.line_id in line_pos:` | `->L1292` | **defensive** -- line_pos is built from the line IDs of the very all_outgoing list this loop iterates, so the membership test is always true: the reject/loop-back arm (L684) is an unreachable tautology and the enter-body static arc (L686) is a phantom of the real 685->687. Vestigial tautological guard. The deliberate gap is pinned by test_genuine_dead_arm_not_masked_as_covered (arc normalization must not merge the never-taken branch onto the live one). Reclassified defensive (#762). | -| 1322 | `if not (tgt.is_port or edge.target in graph.junction_ids):` | `->L1323` | | -| 1366 | `if jst is None:` | `->L1367` | | -| 1369 | `if src_row is None or col is None:` | `->L1370` | **defensive** -- In _compute_fan_corridors, a fanning junction always resolves to a section column and row; the unresolved continue guards a malformed graph the render path never produces. | -| 1413 | `if tgt_col is None:` | `->L1414` | **needs-review** -- Defensive: _fan_bypass_band skips a fan edge whose target has no resolvable grid column; every corpus fan target resolves a column, so the skip arm is unexercised. | +| 301 | `if not mst:` | `->L302` | **defensive** -- mjid ranges over junctions, a subset of junction_ids all present in graph.stations; the missing-station continue never fires. | +| 304 | `if tgt_col is None:` | `->L305` | **defensive** -- A merge junction always resolves to a grid column (it sits adjacent to its entry-port section); the unresolved-column continue never fires. | +| 362 | `if m_col is None:` | `->L363` | **defensive** -- Reached only for junctions in trunk_source, which by construction resolved a column, so m_col is never None and the skip arm never fires. | +| 374 | `if pred_col is None:` | `->L375` | **defensive** -- A merge feeder is a junction fed by an exit port, which always resolves a column, so the skip arm never fires. | +| 393 | `if ep and ep.is_entry:` | `->L391` | **defensive** -- Every outgoing edge of a classified convergence junction targets its sole entry port, so the non-entry arm never fires in the skip-edge pass. | +| 561 | `if port_st is None:` | `->L562` | **defensive** -- Ports listed in a section's entry_ports/exit_ports always have a backing station; the missing-station continue never fires. | +| 581 | `if not ctx.station_offsets:` | `->L582` | **defensive** -- Pairs with _get_offset's guard: compute_station_offsets is never empty on the render path, so _max_offset_at's early-return arm guards only the route_edges(station_offsets=None) call path used by tests. | +| 630 | `if port.section_id is None:` | `->L631`, `->L632` | | +| 662 | `for pid in section.entry_ports:` | `->L663`, `->L665` | | +| 663 | `if line_id in graph.station_lines(pid):` | `->L662`, `->L664` | | +| 691 | `if port is not None:` | `->L692`, `->L695` | | +| 696 | `for sid in section.station_ids:` | `->L697`, `->L701` | | +| 698 | `if not station.is_port:` | `->L696`, `->L699` | | +| 720 | `if section is None:` | `->L721` | | +| 729 | `if sec and sec.grid_col >= 0:` | `->L731` | **needs-review** -- grid-col sentinel: a rail-mode section carries grid_col == -1 (it is placed outside the section grid), so the negative-column arm returning None is load-bearing, not dead. No corpus routing path resolves a rail section's column, so the arm is un-exercised, but a rail topology can reach it; do not fold into a non-optional accessor. | +| 737 | `if sec and sec.grid_row >= 0:` | `->L738`, `->L739` | **needs-review** -- grid-row sentinel: a rail-mode section carries grid_row == -1 (placed outside the section grid), so the negative-row arm returning None is load-bearing, not dead. No corpus routing path resolves a rail section's row, so the arm is un-exercised, but a rail topology can reach it; do not fold into a non-optional accessor. | +| 827 | `if sec is None:` | `->L828` | **defensive** -- _resolve_section_colrow is called for ports/junctions that always resolve to a section; the None-section early-return never fires (mirrors the grid-sentinel guards at L395/L403). | +| 873 | `if src.col is None or tgt.col is None:` | `->L874` | **defensive** -- _hop_needs_bypass is called only for endpoints whose columns the caller already resolved, so the no-column early-return never fires. | +| 968 | `if pst is None:` | `->L969` | **needs-review** -- pst = graph.stations.get(port.id): a port is always registered as a backing station, so the guard is never taken across the corpus. Kept as a station-id string read (no Edge in hand), the idiom deferred by the #1438 single-endpoint migration for a future station-id accessor; the sibling section lookup here was migrated to graph.section_for_port. | +| 1128 | `if not jst:` | `->L1129` | **defensive** -- jid ranges over junction_ids, all present in graph.stations; the missing-station continue never fires. | +| 1131 | `if src_col is None:` | `->L1132` | **defensive** -- A fan-out junction always resolves to a grid column; the unresolved-column continue never fires. | +| 1170 | `if not (tgt.is_port or edge.target in junction_ids):` | `->L1171` | | +| 1173 | `if tgt_col is None:` | `->L1174` | **defensive** -- A junction's port/junction target always resolves to a grid column; the unresolved-column continue never fires. | +| 1294 | `if edge.line_id in line_pos:` | `->L1293` | **defensive** -- line_pos is built from the line IDs of the very all_outgoing list this loop iterates, so the membership test is always true: the reject/loop-back arm (L684) is an unreachable tautology and the enter-body static arc (L686) is a phantom of the real 685->687. Vestigial tautological guard. The deliberate gap is pinned by test_genuine_dead_arm_not_masked_as_covered (arc normalization must not merge the never-taken branch onto the live one). Reclassified defensive (#762). | +| 1323 | `if not (tgt.is_port or edge.target in graph.junction_ids):` | `->L1324` | | +| 1367 | `if jst is None:` | `->L1368` | | +| 1370 | `if src_row is None or col is None:` | `->L1371` | **defensive** -- In _compute_fan_corridors, a fanning junction always resolves to a section column and row; the unresolved continue guards a malformed graph the render path never produces. | +| 1414 | `if tgt_col is None:` | `->L1415` | **needs-review** -- Defensive: _fan_bypass_band skips a fan edge whose target has no resolvable grid column; every corpus fan target resolves a column, so the skip arm is unexercised. | ## `convergences.py` -205/379 gates fully exercised. +278/601 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 201 | `if edge_rank is None:` | `->L202` | | -| 283 | `if owned:` | `->L277` | | -| 299 | `if route is None:` | `->L300` | | -| 320 | `if route is None:` | `->L321` | | -| 334 | `if family is None:` | `->L335` | | -| 343 | `if not runs:` | `->L344` | | -| 365 | `if axis.axis is not DemandAxis.X:` | `->L366` | | -| 382 | `if route.exit_lane_transition_plan_id is not None:` | `->L383` | | -| 415 | `if not candidates:` | `->L416` | | -| 434 | `if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE:` | `->L437` | | -| 438 | `if elbow != endpoint and elbow != target:` | `->L439`, `->L440` | | -| 444 | `if route.offset_regime is OffsetRegime.DEFERRED:` | `->L445` | | -| 452 | `for rank, (start, end) in enumerate(zip(route.points, route.points[1:])):` | `->L468` | | -| 455 | `runway <= COORD_TOLERANCE` | `->L458` | | -| 463 | `if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:` | `->L467` | | -| 465 | `if direction_axis(incoming) is not direction_axis(approach):` | `->L467` | | -| 517 | `if exit_turn_geometry != _exit_turn_geometry(route):` | `->L518` | | -| 529 | `if approach is None:` | `->L530` | | -| 581 | `if direction in {Direction.R, Direction.L}:` | `->L585` | | -| 610 | `if len(route.points) < 2:` | `->L611` | | -| 620 | `if axis is DemandAxis.X:` | `->L626` | | -| 621 | `if abs(start[1] - end[1]) > COORD_TOLERANCE:` | `->L622` | | -| 626 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L627`, `->L628` | | -| 630 | `if extent_end - extent_start > COORD_TOLERANCE:` | `->L609` | | -| 641 | `if not segments:` | `->L642` | | -| 710 | `if axis is DemandAxis.X:` | `->L712` | | -| 760 | `if any(edge not in edge_order for edge in edges):` | `->L761` | | -| 796 | `if not incoming_edges or not outgoing_edges:` | `->L797` | | -| 802 | `if group.line_id not in line_order:` | `->L803` | | -| 819 | `if trunk_edge_key is None:` | `->L820` | | -| 868 | `if route is not None:` | `->L872` | | -| 872 | `if route is None:` | `->L873` | | -| 889 | `if any(` | `->L893` | | -| 907 | `if (` | `->L912`, `->L925` | | -| 912 | `for edge_key in incoming_edges:` | `->L913`, `->L916` | | -| 1060 | `if (` | `->L1072` | | -| 1101 | `if primary_reason is ConvergenceTrunkReason.OUTGOING_CONTINUATION:` | `->L1102` | | -| 1103 | `if continuation.covered_by_member_id is not None:` | `->L1104`, `->L1128` | | -| 1212 | `if topology is None:` | `->L1213` | | -| 1300 | `if plan.trunk_axis is None:` | `->L1301` | **defensive** -- _turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one. | -| 1330 | `if _points_coincide(*segment):` | `->L1331` | | -| 1355 | `if (` | `->L1363` | **needs-review** -- _opposing_landing_approaches' SHARED_APPROACH_CHANNEL condition: two feeders of one line whose approach runs stand on one coordinate travelling against each other. The loop reaches this pair test on 17 fixtures, so the shape of the scan is exercised. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap, at separation 0 with 150px of overlap, so that pass alone is what keeps it silent; the two opening passes account for none of it. Reachable. Reaching it is now a feasibility refusal rather than a change of emitter -- see #1712. | -| 1395 | `or abs(start[1] - end[1]) > COORD_TOLERANCE` | `->L1402` | | -| 1398 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1402` | | -| 1507 | `if opening_follows_flank:` | `->L1508` | | -| 1569 | `if landing.opening_turn_segment is None:` | `->L1570` | | -| 1572 | `if landing.approach_axis is DemandAxis.X:` | `->L1576` | | -| 1574 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1575` | | -| 1605 | `landing.approach_axis is DemandAxis.X` | `->L1609` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | -| 1606 | `and landing.opening_turn_segment is not None` | `->L1609` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | -| 1611 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1612`, `->L1613` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | -| 1625 | `for rank, landing in enumerate(landings):` | `->L1626`, `->L1633` | | -| 1626 | `if landing.member_id not in member_ids:` | `->L1627`, `->L1628` | | -| 1629 | `if reseated is None:` | `->L1630`, `->L1631` | | -| 1666 | `if opening_segment is not None:` | `->L1675` | | -| 1884 | `if any(` | `->L1889` | **needs-review** -- _packed_lane's decline arm: packing a run onto the pitch of its nearest bundle neighbour would seat it inside a *second* neighbour's pitch. Reachable -- 3-lane bundles exist in the corpus (_packed_lane sees len(neighbours)==2 on examples/guide/03b_fan_in_merge.mmd) -- but no fixture makes the candidate breach the far lane. Wants a fixture. | -| 1946 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L1947` | | -| 1984 | `if plan.edge in owned_edges:` | `->L1985` | **defensive** -- _member_corridor_runs skips a frozen member plan whose edge a convergence already owns, but the two sets are disjoint by construction: build_member_geometry_execution never freezes a plan for an edge in _convergence_member_edges (member_geometry.py:1010), and resolved_member_edges is derived from the same scaffold predicate. 3830 frozen member plans across 348 fixtures, zero hits. | -| 1993 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L1996` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | -| 1994 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L1996` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | -| 2036 | `if run is None:` | `->L2037` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2095 | `if run is None:` | `->L2096` | | -| 2128 | `if axis is None:` | `->L2129` | | -| 2138 | `if source is None:` | `->L2139` | | -| 2170 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2171` | | -| 2180 | `if primary is None:` | `->L2181` | | -| 2193 | `or landing.opening_turn_segment is None` | `->L2195` | | -| 2206 | `if reseated is not None:` | `->L2189` | | -| 2257 | `obstacle_segment is None` | `->L2262` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 2258 | `or landing_segment is None` | `->L2262` | | -| 2273 | `if reseated is None:` | `->L2274` | | -| 2279 | `landing.member_id == plan.primary_trunk_member_id` | `->L2302` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 2280 | `and plan.trunk_axis is not None` | `->L2302` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 2281 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L2302` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 2311 | `if (` | `->L2244` | **defensive** -- A landing enters `ordered` only because _landing_cross_segment admitted it, and laning moves that run rather than removing it, so the read that names the landing as a resident always finds a segment. The gate guards the Optional that read returns. | -| 2326 | `if axis is None:` | `->L2327` | | -| 2350 | `if coordinate is not None:` | `->L2355` | | -| 2392 | `if endpoint is None:` | `->L2393` | | -| 2415 | `if plan.trunk_axis is None:` | `->L2416` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 2441 | `if coordinate is not None:` | `->L2447` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 2501 | `for seat, obstacle in obstacles:` | `->L-2486`, `->L2502` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 2503 | `if axis is None:` | `->L2504`, `->L2505` | | -| 2515 | `if lane is None:` | `->L2516`, `->L2517` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 2536 | `if flank_rank != 1:` | `->L2538` | | -| 2547 | `if fork is None:` | `->L2548`, `->L2556` | | -| 2624 | `if forked:` | `->L2625` | | -| 2625 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L2626`, `->L2627` | | -| 2629 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L2630` | | -| 2653 | `if forked:` | `->L2654`, `->L2655` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 2728 | `if endpoint is None:` | `->L2729` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 2739 | `if coordinate is None:` | `->L2740` | | -| 2752 | `if reseated is not None:` | `->L2753`, `->L2756` | | -| 2817 | `if not (` | `->L2820` | | -| 2836 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2837` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2894 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L2879` | | -| 3101 | `if not carries_coupled_primary and any(` | `->L3107` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3113 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L3114` | | -| 3131 | `if (endpoint - candidate) * toward_endpoint <= curve_radius:` | `->L3132` | | -| 3186 | `if axis is None:` | `->L3187` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 3239 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L3240` | | -| 3330 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L3331` | | -| 3412 | `for candidate_coordinate in direct_candidates:` | `->L3438` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3423 | `if not moved_channels or any(` | `->L3428` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3429 | `if any(` | `->L3433` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3434 | `if not landing_feasible(candidate_coordinate):` | `->L3435` | | -| 3438 | `if coordinate is None:` | `->L3439` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3444 | `if (` | `->L3448` | | -| 3467 | `if not obstacles:` | `->L3469` | **defensive** -- The ordinal moved when the endpoint check left this condition; the arm is the ordinary no-crowding case _lane_trunk_flanks takes on most plans. | -| 3475 | `for coordinate in candidates:` | `->L3454`, `->L3476` | | -| 3476 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3477`, `->L3478` | | -| 3484 | `if moved_plan is None:` | `->L3485`, `->L3486` | | -| 3495 | `if moved_channel is None or any(` | `->L3499`, `->L3500` | | -| 3504 | `if (` | `->L3508`, `->L3509` | **candidate-dead** -- Pre-existing gap, re-keyed from #8 by the gates the restored conflict conditions inserted earlier in the file (same never-executed line, same [0,0] split). Dead sub-block of _settle_opposing_gap_flanks' landing-opening move: its enclosing `if not obstacles:` never takes the has-obstacles arm, so no non-flank plan gap channel is ever crowded by a resident one and nothing below line 3072 runs. What would settle it is a fixture whose settled convergence gap channel crowds a resident member channel of a different line in the same column gap. | -| 3521 | `if first.system_id != second.system_id:` | `->L3522` | | -| 3523 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L3524` | **needs-review** -- _channels_share_source_carrier's shared-claimant shortcut. Its sole caller is _validate_final_convergence_feasibility, which pairs a convergence plan channel against a frozen member channel; the intersection is non-empty only when the plan's channel names the very member it is compared with, which no corpus fixture produces. Reachable in principle, wants a fixture. | -| 3530 | `if first.member_geometry_owned == second.member_geometry_owned:` | `->L3531` | **needs-review** -- _channels_share_source_carrier's equal-ownership rejection. Its sole caller always pairs a convergence-owned channel with a member-owned one, so the two flags always differ and the rejection arm is unreachable from that caller. Reachable only if a second caller compares two channels of one owner. | -| 3704 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L3705` | | -| 3709 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L3717` | | -| 3722 | `if shortfall <= SAME_COORD_TOLERANCE:` | `->L3724` | | -| 3737 | `if gap is None:` | `->L3738`, `->L3739` | | -| 3759 | `if not negative or not positive:` | `->L3760`, `->L3761` | | -| 3787 | `if current is None or requirement.required > current.required:` | `->L3696`, `->L3788` | | -| 3835 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L3839` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 3842 | `if first_delta * second_delta < 0:` | `->L3845` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 3859 | `if opposing_approaches is not None:` | `->L3860` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 3904 | `if same_line and first_direction is not second_direction:` | `->L3909` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 3910 | `if (` | `->L3937` | | -| 3957 | `if conflict is not None:` | `->L3958` | | -| 3966 | `if requirements:` | `->L3967`, `->L3969` | | -| 3994 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L3995` | | -| 4001 | `if (` | `->L4012` | **defensive** -- Pre-existing gap, re-keyed from #11 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). validate_convergence_plans' re-check that a landing's join point sits on its plan's own trunk axis and on the trunk route's polyline. The join point is derived from the trunk axis when the plan is built and consume_convergence_route connects the emitted endpoint to it, so taking the raise arm means the planner contradicted its own axis: an engine bug and a hard abort, not a shippable topology. | -| 4019 | `if _gap_channels_crowd(` | `->L4026` | | -| 4042 | `if not plan.owns_geometry:` | `->L4043` | | -| 4106 | `if not plan.owns_geometry:` | `->L4107` | | -| 4129 | `owner_edge not in edge_ranks` | `->L4133` | | -| 4168 | `if not plan.owns_geometry:` | `->L4169` | | -| 4187 | `if ownership.edge in by_edge:` | `->L4188` | | -| 4312 | `for item in system_plans:` | `->L4313`, `->L4323` | | -| 4581 | `if not horizontal and not vertical:` | `->L4582` | | -| 4605 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L4590` | | -| 4608 | `for interval_start, interval_end in sorted(intervals):` | `->L4616` | | -| 4611 | `if interval_start > covered_until + COORD_TOLERANCE:` | `->L4612` | | -| 4614 | `if covered_until >= extent_end - COORD_TOLERANCE:` | `->L4608` | | -| 4638 | `if axis.axis is DemandAxis.X:` | `->L4661` | | -| 4765 | `if not candidates:` | `->L4766` | | -| 4873 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L4874` | | -| 4892 | `if actual is None:` | `->L4893` | | -| 4899 | `direction is not landing.approach_direction` | `->L4903` | | -| 4900 | `or handedness is not landing.corner_handedness` | `->L4903` | | -| 4901 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L4903` | | -| 4920 | `opening is None` | `->L4924` | | -| 4921 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L4924` | | -| 4922 | `or emitted_segment != landing.opening_turn_segment` | `->L4924` | | -| 4933 | `if query is None:` | `->L4934` | | -| 4939 | `if not plan.owns_geometry:` | `->L4940` | | -| 4947 | `if continuation is not None and continuation.covered_by_member_id is not None:` | `->L4949` | | -| 4949 | `if (` | `->L4963`, `->L4967` | **defensive** -- Pre-existing gap, re-keyed from #12 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). The raise for a covered continuation absent from the carrier member that is recorded as covering it. _reconcile_continuation_ownership only names a carrier whose route already spans the continuation's endpoints, so the raise arm reports an engine bug and aborts the render; no valid topology reaches it. | -| 4967 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L4968`, `->L4972` | | -| 4990 | `if opening is None:` | `->L4991` | | -| 4991 | `if not clearance_pending:` | `->L4992`, `->L4998` | | -| 5015 | `if ctx.validate_final_route_frames and not clearance_pending:` | `->L5017` | | -| 5032 | `if not clearance_pending and any(` | `->L5036` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 5037 | `if ctx.validate_final_route_frames and not clearance_pending:` | `->L-4931` | | -| 5051 | `if not plan.owns_geometry:` | `->L5052` | | -| 5053 | `if plan.system_id in execution.query.clearance_requirement_system_ids:` | `->L5054` | | -| 5062 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L5063` | | -| 5072 | `if route is None:` | `->L5073` | | -| 5078 | `if (` | `->L5083` | **candidate-dead** -- Pre-existing gap, re-keyed from #13 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,0] split). Never executed rather than half-taken: its enclosing `if continuation.covered_by_member_id is not None:` never takes the None arm on any of the 18 fixtures that validate a planned convergence, so an uncovered outgoing continuation does not exist in this corpus. What would settle it is a topology whose continuation no endpoint owner's route spans, which _reconcile_continuation_ownership would then leave uncovered. | -| 5090 | `if any(` | `->L5094` | | -| 5111 | `if continuation.covered_by_member_id is not None:` | `->L5128` | | -| 5114 | `if (` | `->L5123` | | -| 5129 | `if (` | `->L5108`, `->L5140` | | -| 5156 | `if route is None or membership is None:` | `->L5157` | | -| 5162 | `if any(` | `->L5166` | | +| 210 | `if edge_rank is None:` | `->L211` | | +| 292 | `if owned:` | `->L286` | | +| 308 | `if route is None:` | `->L309` | | +| 329 | `if route is None:` | `->L330` | | +| 343 | `if family is None:` | `->L344` | | +| 352 | `if not runs:` | `->L353` | | +| 374 | `if axis.axis is not DemandAxis.X:` | `->L375` | | +| 391 | `if route.exit_lane_transition_plan_id is not None:` | `->L392` | | +| 424 | `if not candidates:` | `->L425` | | +| 440 | `if (` | `->L449` | | +| 461 | `if (` | `->L469` | | +| 470 | `for rank in range(len(route.points) - 2, -1, -1):` | `->L471`, `->L483` | | +| 472 | `if (` | `->L470`, `->L479` | | +| 484 | `entry is not None` | `->L496` | | +| 485 | `and port is not None` | `->L496` | | +| 486 | `and port.side in (PortSide.LEFT, PortSide.RIGHT)` | `->L496` | | +| 487 | `and abs(endpoint[0] - entry.x) <= COORD_TOLERANCE` | `->L488` | | +| 488 | `and abs(target[0] - entry.x) <= COORD_TOLERANCE` | `->L489`, `->L496` | | +| 489 | `and abs(endpoint[1] - target[1]) > COORD_TOLERANCE` | `->L491`, `->L496` | | +| 499 | `if horizontal and abs(endpoint[1] - target[1]) <= COORD_TOLERANCE:` | `->L502` | | +| 502 | `if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE:` | `->L503`, `->L505` | | +| 506 | `if elbow != endpoint and elbow != target:` | `->L507`, `->L508` | | +| 552 | `if opening_rank is None:` | `->L553` | | +| 555 | `if route.curve_radii is not None:` | `->L559` | | +| 572 | `not landing.bypass` | `->L573`, `->L576` | | +| 573 | `or opening is None` | `->L574`, `->L576` | | +| 574 | `or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L576`, `->L577` | | +| 579 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L580`, `->L581` | | +| 589 | `if landing.opening_turn_segment is None or not landing.bypass:` | `->L590` | | +| 593 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L594` | | +| 610 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L611` | | +| 614 | `if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:` | `->L620` | | +| 621 | `outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE` | `->L622`, `->L624` | | +| 622 | `or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L624`, `->L625` | | +| 635 | `if route.offset_regime is OffsetRegime.DEFERRED:` | `->L636` | | +| 650 | `for rank, (start, end) in enumerate(zip(points, points[1:])):` | `->L666` | | +| 653 | `runway <= COORD_TOLERANCE` | `->L656` | | +| 661 | `if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:` | `->L665` | | +| 663 | `if direction_axis(incoming) is not direction_axis(approach):` | `->L665` | | +| 716 | `if exit_turn_geometry != _exit_turn_geometry(route):` | `->L717` | | +| 728 | `if approach is None:` | `->L729` | | +| 782 | `if direction in {Direction.R, Direction.L}:` | `->L786` | | +| 811 | `if len(route.points) < 2:` | `->L812` | | +| 821 | `if axis is DemandAxis.X:` | `->L827` | | +| 822 | `if abs(start[1] - end[1]) > COORD_TOLERANCE:` | `->L823` | | +| 827 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L828`, `->L829` | | +| 831 | `if extent_end - extent_start > COORD_TOLERANCE:` | `->L810` | | +| 842 | `if not segments:` | `->L843` | | +| 914 | `entry_port is None` | `->L918` | | +| 915 | `or entry_port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L918` | | +| 916 | `or axis.axis is not DemandAxis.X` | `->L918` | | +| 920 | `if section is None:` | `->L921` | | +| 926 | `if not (` | `->L935` | | +| 951 | `for rank, route in enumerate(routes):` | `->L952`, `->L969` | | +| 952 | `if rank == carrier_rank:` | `->L953`, `->L954` | | +| 960 | `if opening is None:` | `->L961`, `->L964` | | +| 989 | `if axis is DemandAxis.X:` | `->L991` | | +| 1039 | `if any(edge not in edge_order for edge in edges):` | `->L1040` | | +| 1075 | `if not incoming_edges or not outgoing_edges:` | `->L1076` | | +| 1081 | `if group.line_id not in line_order:` | `->L1082` | | +| 1098 | `if trunk_edge_key is None:` | `->L1099` | | +| 1147 | `if route is not None:` | `->L1151` | | +| 1151 | `if route is None:` | `->L1152` | | +| 1168 | `if any(` | `->L1172` | | +| 1186 | `if (` | `->L1191`, `->L1204` | | +| 1191 | `for edge_key in incoming_edges:` | `->L1192`, `->L1195` | | +| 1216 | `if primary_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH:` | `->L1225` | | +| 1352 | `if (` | `->L1365` | **defensive** -- A landing enters `ordered` only because _landing_cross_segment admitted it, and laning moves that run rather than removing it, so the read that names the landing as a resident always finds a segment. The gate guards the Optional that read returns. | +| 1366 | `if (` | `->L1378` | | +| 1407 | `if primary_reason is ConvergenceTrunkReason.OUTGOING_CONTINUATION:` | `->L1408` | | +| 1409 | `if continuation.covered_by_member_id is not None:` | `->L1410`, `->L1434` | | +| 1518 | `if topology is None:` | `->L1519` | | +| 1586 | `or abs(along[0][1] - along[1][1]) > COORD_TOLERANCE` | `->L1588` | | +| 1589 | `if _vert_horiz_cross(` | `->L1597` | | +| 1606 | `if plan.trunk_axis is None:` | `->L1607` | **defensive** -- _turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one. | +| 1636 | `if _points_coincide(*segment):` | `->L1637` | | +| 1661 | `if (` | `->L1669` | | +| 1682 | `if not isinstance(getattr(ctx, "graph", None), MetroGraph):` | `->L1683` | | +| 1701 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1702` | | +| 1717 | `if abs(source_x - opening_x) > COORD_TOLERANCE:` | `->L1784` | | +| 1724 | `elif (` | `->L1733` | | +| 1751 | `if uses_exit_handedness:` | `->L1752` | | +| 1754 | `elif landing.approach_axis is DemandAxis.X:` | `->L1758` | | +| 1775 | `if not uses_exit_handedness and (` | `->L1784` | | +| 1780 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1784` | | +| 1888 | `if opening_follows_flank:` | `->L1889` | | +| 1950 | `if landing.opening_turn_segment is None:` | `->L1951` | | +| 1955 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1956` | | +| 1986 | `landing.approach_axis is DemandAxis.X` | `->L1990` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | +| 1987 | `and landing.opening_turn_segment is not None` | `->L1990` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | +| 1992 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1993`, `->L1994` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | +| 2010 | `if reseated is None:` | `->L2011` | | +| 2040 | `if preserve_lane_offsets:` | `->L2041` | | +| 2060 | `if preserve_lane_offsets:` | `->L2061` | | +| 2067 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2068`, `->L2076` | | +| 2068 | `if landing.approach_axis is DemandAxis.X:` | `->L2069`, `->L2073` | | +| 2077 | `if opening_segment is not None:` | `->L2088` | | +| 2128 | `axis is None` | `->L2131` | | +| 2161 | `if inside or extends:` | `->L2162` | | +| 2173 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2174` | | +| 2180 | `if actual is None:` | `->L2181` | | +| 2368 | `if any(` | `->L2373` | **needs-review** -- _packed_lane's decline arm: packing a run onto the pitch of its nearest bundle neighbour would seat it inside a *second* neighbour's pitch. Reachable -- 3-lane bundles exist in the corpus (_packed_lane sees len(neighbours)==2 on examples/guide/03b_fan_in_merge.mmd) -- but no fixture makes the candidate breach the far lane. Wants a fixture. | +| 2430 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2431` | | +| 2472 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2475` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | +| 2473 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2475` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | +| 2515 | `if run is None:` | `->L2516` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | +| 2575 | `if run is None:` | `->L2576` | | +| 2590 | `if obstacles:` | `->L2591` | | +| 2613 | `if run is None:` | `->L2614` | | +| 2622 | `if any(` | `->L2626` | | +| 2651 | `if axis is None:` | `->L2652` | | +| 2661 | `if source is None:` | `->L2662` | | +| 2693 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2694` | | +| 2703 | `if primary is None:` | `->L2704` | | +| 2716 | `or landing.opening_turn_segment is None` | `->L2718` | | +| 2729 | `if reseated is not None:` | `->L2712` | | +| 2769 | `if (` | `->L2775` | | +| 2777 | `for plan_rank, landing_rank in members:` | `->L2758`, `->L2778` | | +| 2780 | `if reseated is None:` | `->L2781`, `->L2782` | | +| 2792 | `if not isinstance(getattr(ctx, "graph", None), MetroGraph):` | `->L2793` | | +| 2801 | `if len(channel.line_ids) != 1:` | `->L2802` | | +| 2826 | `if (` | `->L2830` | | +| 2832 | `if endpoint is None:` | `->L2833` | | +| 2838 | `channel.flank_rank is not None` | `->L2843` | | +| 2843 | `if any(` | `->L2848` | | +| 2852 | `if moved is None:` | `->L2853` | | +| 2864 | `if merge is None:` | `->L2865` | | +| 2869 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2870` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2895 | `if (` | `->L2903` | **defensive** -- Pre-existing gap, re-keyed from #12 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). The raise for a covered continuation absent from the carrier member that is recorded as covering it. _reconcile_continuation_ownership only names a carrier whose route already spans the continuation's endpoints, so the raise arm reports an engine bug and aborts the render; no valid topology reaches it. | +| 2909 | `if (` | `->L2891`, `->L2917` | **candidate-dead** -- Pre-existing gap, re-keyed from #13 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,0] split). Never executed rather than half-taken: its enclosing `if continuation.covered_by_member_id is not None:` never takes the None arm on any of the 18 fixtures that validate a planned convergence, so an uncovered outgoing continuation does not exist in this corpus. What would settle it is a topology whose continuation no endpoint owner's route spans, which _reconcile_continuation_ownership would then leave uncovered. | +| 2917 | `if (` | `->L2924`, `->L2928` | | +| 2963 | `if base_channel is None:` | `->L2964` | | +| 3003 | `if any(` | `->L3007` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3013 | `for rank in displaced_ranks:` | `->L3069` | | +| 3016 | `if (` | `->L3051` | | +| 3054 | `if reseated is None:` | `->L3055`, `->L3056` | | +| 3056 | `if (` | `->L3063`, `->L3067` | | +| 3076 | `if moved_channels and all(` | `->L2999`, `->L3084` | | +| 3101 | `if tail is None:` | `->L3102`, `->L3103` | | +| 3124 | `if (` | `->L3131` | | +| 3132 | `if bypass_segment is None:` | `->L3133`, `->L3134` | | +| 3134 | `for obstacle in direct_landings:` | `->L3123`, `->L3135` | | +| 3136 | `if (` | `->L3146`, `->L3147` | | +| 3149 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3150`, `->L3151` | | +| 3156 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3157`, `->L3158` | | +| 3164 | `if moved is None:` | `->L3165`, `->L3166` | | +| 3186 | `if bypass_segment is None:` | `->L3134`, `->L3187` | | +| 3220 | `if not obstacles:` | `->L3222` | | +| 3236 | `for coordinate in candidates:` | `->L3210`, `->L3237` | | +| 3237 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3238`, `->L3239` | | +| 3245 | `if moved is None:` | `->L3246`, `->L3247` | | +| 3253 | `if not moved_channels or any(` | `->L3260`, `->L3261` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3265 | `if (` | `->L3269`, `->L3270` | | +| 3330 | `obstacle_segment is None` | `->L3335` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3331 | `or landing_segment is None` | `->L3335` | | +| 3346 | `if reseated is None:` | `->L3347` | | +| 3352 | `landing.member_id == plan.primary_trunk_member_id` | `->L3375` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3353 | `and plan.trunk_axis is not None` | `->L3375` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3354 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3375` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3384 | `if (` | `->L3317` | | +| 3399 | `if axis is None:` | `->L3400` | | +| 3423 | `if coordinate is not None:` | `->L3428` | | +| 3465 | `if endpoint is None:` | `->L3466` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3488 | `if plan.trunk_axis is None:` | `->L3489` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3514 | `if coordinate is not None:` | `->L3520` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3574 | `for seat, obstacle in obstacles:` | `->L-3559`, `->L3575` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3576 | `if axis is None:` | `->L3577`, `->L3578` | | +| 3588 | `if lane is None:` | `->L3589`, `->L3590` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3609 | `if flank_rank != 1:` | `->L3611` | | +| 3620 | `if fork is None:` | `->L3621`, `->L3629` | | +| 3697 | `if forked:` | `->L3698` | | +| 3698 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3699`, `->L3700` | | +| 3702 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3703` | | +| 3726 | `if forked:` | `->L3727`, `->L3728` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3801 | `if endpoint is None:` | `->L3802` | | +| 3812 | `if coordinate is None:` | `->L3813` | | +| 3825 | `if reseated is not None:` | `->L3826`, `->L3829` | | +| 3872 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3920` | | +| 3892 | `if flank is None:` | `->L3894` | | +| 3950 | `if not (` | `->L3953` | | +| 3969 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3970` | | +| 4027 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4012` | | +| 4079 | `if (` | `->L4085` | | +| 4264 | `if not carries_coupled_primary and any(` | `->L4270` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 4276 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4277` | | +| 4294 | `if (endpoint - candidate) * toward_endpoint <= curve_radius:` | `->L4295` | | +| 4296 | `if any(` | `->L4301` | | +| 4304 | `if any(` | `->L4307` | | +| 4314 | `if gap_edges[1] <= gap_edges[0] or not _inside_usable_gap(` | `->L4317` | | +| 4352 | `if axis is None:` | `->L4353` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4405 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L4406` | | +| 4445 | `if reserved_bands is None:` | `->L4446` | | +| 4458 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L4459` | | +| 4494 | `if run is not None:` | `->L4545` | | +| 4507 | `if any(` | `->L4511` | | +| 4621 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4622` | | +| 4695 | `if coordinate is None and len(coupled_flanks) == 1:` | `->L4696` | | +| 4699 | `for candidate_coordinate in direct_candidates:` | `->L4700`, `->L4725` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 4710 | `if not moved_channels or any(` | `->L4715`, `->L4716` | | +| 4716 | `if any(` | `->L4720`, `->L4721` | | +| 4721 | `if not landing_feasible(candidate_coordinate):` | `->L4722`, `->L4723` | | +| 4725 | `if coordinate is None:` | `->L4726` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 4731 | `if (` | `->L4735` | | +| 4751 | `if not obstacles:` | `->L4753` | | +| 4775 | `for coordinate in candidates:` | `->L4741`, `->L4776` | | +| 4776 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L4777`, `->L4778` | | +| 4784 | `if moved_plan is None:` | `->L4785`, `->L4786` | | +| 4795 | `if moved_channel is None or any(` | `->L4798`, `->L4799` | | +| 4803 | `if (` | `->L4807`, `->L4808` | | +| 4872 | `if (` | `->L4880` | | +| 4891 | `if not obstacles:` | `->L4893` | | +| 4909 | `for coordinate in candidates:` | `->L4862`, `->L4910` | | +| 4917 | `if not inside_gap:` | `->L4918`, `->L4919` | | +| 4929 | `if moved is None:` | `->L4930`, `->L4931` | | +| 4941 | `if not moved_channels or any(` | `->L4954`, `->L4955` | | +| 4959 | `if (` | `->L4963`, `->L4964` | | +| 5055 | `if _landing_channels_crowd(first, second, curve_radius):` | `->L5056` | | +| 5059 | `if any(` | `->L5067` | | +| 5089 | `if any(pair <= component for pair in crowded_pairs) or (` | `->L5092` | | +| 5097 | `for component in components:` | `->L5098` | | +| 5103 | `for key in traversal:` | `->L5104`, `->L5141` | | +| 5106 | `for prior_key, prior_coordinate in positions.items():` | `->L5107`, `->L5123` | | +| 5108 | `if (` | `->L5113`, `->L5114` | | +| 5117 | `if clearance is None:` | `->L5118`, `->L5119` | | +| 5119 | `if from_left:` | `->L5120`, `->L5122` | | +| 5123 | `for fixed in fixed_channels:` | `->L5124`, `->L5140` | | +| 5124 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5127`, `->L5128` | | +| 5131 | `if (` | `->L5136`, `->L5137` | | +| 5143 | `for positions in (packed_positions(True), packed_positions(False)):` | `->L5097`, `->L5144` | | +| 5144 | `if any(` | `->L5149`, `->L5150` | | +| 5155 | `for key in ordered:` | `->L5156`, `->L5186` | | +| 5157 | `if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:` | `->L5158`, `->L5159` | | +| 5159 | `for plan_rank, channel in grouped[key]:` | `->L5160`, `->L5184` | | +| 5161 | `if channel.flank_rank is not None:` | `->L5162`, `->L5170` | | +| 5163 | `if flank_key in moved_flanks:` | `->L5164`, `->L5165` | | +| 5171 | `if opening_key in moved_openings:` | `->L5172`, `->L5173` | | +| 5180 | `if moved is None:` | `->L5181`, `->L5183` | | +| 5184 | `if not feasible:` | `->L5155`, `->L5185` | | +| 5186 | `if not feasible:` | `->L5187`, `->L5188` | | +| 5189 | `if (` | `->L5193`, `->L5194` | | +| 5199 | `if any(` | `->L5203`, `->L5204` | | +| 5210 | `if any(` | `->L5217`, `->L5218` | | +| 5218 | `if any(` | `->L5223`, `->L5224` | | +| 5256 | `if not obstacles:` | `->L5258` | | +| 5275 | `for coordinate in candidates:` | `->L5241`, `->L5276` | | +| 5282 | `if any(` | `->L5296`, `->L5297` | | +| 5350 | `if first.system_id != second.system_id:` | `->L5351` | | +| 5352 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5353` | **needs-review** -- _channels_share_source_carrier's shared-claimant shortcut. Its sole caller is _validate_final_convergence_feasibility, which pairs a convergence plan channel against a frozen member channel; the intersection is non-empty only when the plan's channel names the very member it is compared with, which no corpus fixture produces. Reachable in principle, wants a fixture. | +| 5593 | `if not negative or not positive:` | `->L5594` | | +| 5656 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5657` | | +| 5661 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5669` | | +| 5689 | `if gap is None:` | `->L5690` | | +| 5700 | `if requirement is None:` | `->L5701` | | +| 5704 | `if current is None or requirement.required > current.required:` | `->L5646` | | +| 5720 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5722` | | +| 5726 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5727`, `->L5728` | | +| 5736 | `if requirement is None:` | `->L5737`, `->L5738` | | +| 5741 | `if current is None or requirement.required > current.required:` | `->L5719`, `->L5742` | | +| 5758 | `if (` | `->L5770` | | +| 5773 | `if (` | `->L5778`, `->L5779` | | +| 5784 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5785`, `->L5786` | | +| 5794 | `if requirement is not None:` | `->L5757`, `->L5795` | | +| 5841 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5845` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 5848 | `if first_delta * second_delta < 0:` | `->L5849` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5859 | `if (` | `->L5871`, `->L5874` | | +| 5888 | `if opposing_approaches is not None:` | `->L5889` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 5933 | `if same_line and first_direction is not second_direction:` | `->L5938` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5939 | `if (` | `->L5966` | | +| 5986 | `if conflict is not None:` | `->L5987` | | +| 5996 | `if requirements:` | `->L5997`, `->L5999` | | +| 6034 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6035` | | +| 6041 | `if (` | `->L6052` | | +| 6052 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6055`, `->L6056` | | +| 6056 | `if any(` | `->L6061`, `->L6062` | | +| 6069 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6070` | | +| 6070 | `if any(` | `->L6075`, `->L6076` | | +| 6080 | `if channel.gap != member_channel.gap:` | `->L6081` | | +| 6082 | `if _gap_channels_crowd(` | `->L6089` | | +| 6089 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6092`, `->L6093` | | +| 6093 | `if any(` | `->L6097`, `->L6098` | | +| 6114 | `if not plan.owns_geometry:` | `->L6115` | | +| 6178 | `if not plan.owns_geometry:` | `->L6179` | | +| 6202 | `owner_edge not in edge_ranks` | `->L6206` | | +| 6241 | `if not plan.owns_geometry:` | `->L6242` | | +| 6260 | `if ownership.edge in by_edge:` | `->L6261` | | +| 6388 | `for item in system_plans:` | `->L6389`, `->L6399` | | +| 6741 | `if not horizontal and not vertical:` | `->L6742` | | +| 6765 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6750` | | +| 6798 | `if axis.axis is DemandAxis.X:` | `->L6821` | | +| 6925 | `if not candidates:` | `->L6926` | | +| 6947 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L6950` | | +| 6950 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L6953` | | +| 6956 | `if horizontal:` | `->L6957` | | +| 7025 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7026` | | +| 7033 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7034` | | +| 7052 | `if actual is None:` | `->L7053` | | +| 7059 | `direction is not landing.approach_direction` | `->L7063` | | +| 7060 | `or handedness is not landing.corner_handedness` | `->L7063` | | +| 7061 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7063` | | +| 7082 | `opening is None` | `->L7086` | | +| 7083 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7086` | | +| 7084 | `or emitted_segment != landing.opening_turn_segment` | `->L7086` | | +| 7095 | `if query is None:` | `->L7096` | | +| 7101 | `if not plan.owns_geometry:` | `->L7102` | | +| 7109 | `if continuation is not None and continuation.covered_by_member_id is not None:` | `->L7111` | | +| 7111 | `if (` | `->L7125`, `->L7129` | | +| 7129 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7130`, `->L7134` | | +| 7152 | `if opening is None:` | `->L7153` | | +| 7153 | `if not clearance_pending:` | `->L7154`, `->L7169` | | +| 7161 | `landing.opening_turn_segment is not None` | `->L7169` | | +| 7167 | `if route.curve_radii is not None:` | `->L7169` | | +| 7235 | `if landing.opening_turn_coordinate is not None:` | `->L7243` | | +| 7251 | `if not clearance_pending and any(` | `->L7255` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7280 | `if not plan.owns_geometry:` | `->L7281` | | +| 7291 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7292` | | +| 7301 | `if route is None:` | `->L7302` | | +| 7307 | `if (` | `->L7312` | | +| 7319 | `if any(` | `->L7323` | | +| 7340 | `if continuation.covered_by_member_id is not None:` | `->L7357` | | +| 7343 | `if (` | `->L7352` | | +| 7358 | `if (` | `->L7337`, `->L7369` | | +| 7385 | `if route is None or membership is None:` | `->L7386` | | +| 7391 | `if any(` | `->L7395` | | ## `core.py` @@ -348,120 +501,160 @@ Gates with an un-exercised arm: ## `exit_turns.py` -180/288 gates fully exercised. +194/342 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 492 | `if not replacements:` | `->L493` | | -| 723 | `if key not in ctx.station_offsets and port_key not in ctx.station_offsets:` | `->L724` | | -| 736 | `if len({coordinate for _line, _offset, coordinate in values}) != len(values):` | `->L737` | | -| 809 | `if source_run_direction not in {Direction.R, Direction.L}:` | `->L810` | | -| 899 | `if source_run_direction not in run_axis:` | `->L900` | | -| 904 | `if abs(delta) <= COORD_TOLERANCE:` | `->L905` | | -| 908 | `if horizontal:` | `->L911` | | -| 912 | `if actual_run is not source_run_direction:` | `->L913` | | -| 942 | `if route is None:` | `->L943` | | -| 945 | `if len(points) < 3:` | `->L946` | | -| 950 | `if run_direction is None or turn_direction is None:` | `->L951` | | -| 977 | `if off_column_decline is not None and source_run_direction not in {` | `->L981` | | -| 982 | `if family_id is RouteFamilyId.MERGE_ENTRY_STRAIGHT:` | `->L983` | | -| 1077 | `if entry_geometry.seam.turn_direction is None:` | `->L1078` | | -| 1163 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1164` | | -| 1191 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1192` | **defensive** -- _plain_l_shape_turn_requirement's flat-hop guard, which both its callers exclude: _standard_l_shape_turn_requirement returns its own missing-source-turn for a flat delta before delegating, and the cell-mate gap drop only classifies when the target section sits one grid row below the source (_bypass_route_kind requires tgt_row == src_row + 1), which puts the two ports on different rows. The duplicated guard therefore never fires. | -| 1320 | `if kind is _BypassRoute.LEFT_ENTRY_FAMILY:` | `->L1321` | | -| 1324 | `if kind is _BypassRoute.RIGHT_ENTRY_CROSS_ROW:` | `->L1325` | | -| 1326 | `if kind is _BypassRoute.L_SHAPE:` | `->L1327` | | -| 1333 | `if kind is _BypassRoute.LEFT_EXIT_AROUND_BELOW:` | `->L1334` | | -| 1466 | `if primary_delta * run_direction.sign < 2 * MIN_STRAIGHT_EDGE + diagonal:` | `->L1467` | | -| 1493 | `if direction_axis(transition.run_direction) is DemandAxis.X:` | `->L1497` | | -| 1548 | `if len(candidates) != 1:` | `->L1549` | | -| 1555 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1556` | | -| 1583 | `if transition is None:` | `->L1584` | | -| 1620 | `target_crossing is None` | `->L1623` | | -| 1621 | `or abs(source_crossing - target_crossing) > COORD_TOLERANCE` | `->L1623` | | -| 1645 | `target_crossing is None` | `->L1648` | | -| 1646 | `or abs(geometry.cross_lo - target_crossing) > COORD_TOLERANCE` | `->L1648` | | -| 1658 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1659` | | -| 1684 | `if transition is None:` | `->L1685` | | -| 1718 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1719` | | -| 1744 | `if transition is None:` | `->L1746` | | -| 1777 | `if len(entry_group_ids) != 1:` | `->L1778` | | -| 1784 | `if family_id is None:` | `->L1785` | | -| 1813 | `requirement.run_direction is not None` | `->L1826` | | -| 1814 | `and requirement.turn_direction is not None` | `->L1826` | | -| 1815 | `and requirement.launch_coordinate is not None` | `->L1826` | | -| 1816 | `and requirement.minimum_runway is not None` | `->L1826` | | -| 1835 | `and requirement.turn_direction is not None` | `->L1842` | | -| 1847 | `and family_id is not RouteFamilyId.MERGE_ENTRY` | `->L1850` | | -| 1875 | `if any(len(runs) > 1 for runs in straight_runs_by_lane.values()):` | `->L1876` | **defensive** -- The opposed-source-run recogniser: a lane whose turn-less members disagree on the direction they leave the shared source. Every member of one exit group leaves through one exit port, whose side fixes the outward ray, and a collinear target on the other side of that port is a backward hop the engine rejects before routing. The arm names a classification that contradicts itself and declines the plan; no exit group produces it. | -| 2027 | `if any(` | `->L2038` | | -| 2052 | `if membership is not None and membership.axis is not None:` | `->L2053` | | -| 2130 | `if not _lane_arms_read_as_one_stroke(` | `->L2133` | **defensive** -- The reject protects a planner seed set where an unpinned cohort lands within one curve radius of a same-rank axis already claimed by a pinned cohort. Production topology planning pins or separates those cohorts before this check. test_free_lane_arm_overlapping_a_pinned_corner_uses_legacy constructs the incomplete seed set directly and covers the fallback reason. | -| 2247 | `if reason is not None:` | `->L2248` | | -| 2350 | `if not outbound_edges or missing_connectors:` | `->L2351` | | -| 2452 | `if final_classification.legacy_reason is not None:` | `->L2453` | | -| 2454 | `elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(` | `->L2457` | | -| 2719 | `if incumbent.id == plan.id:` | `->L2721` | | -| 2745 | `if prior is None:` | `->L2746` | | -| 2789 | `if owners and plan.id not in owners:` | `->L2790` | | -| 2790 | `for owner in owners:` | `->L2791`, `->L2792` | | -| 2805 | `and plan.id in conflicting_plan_ids` | `->L2807` | | -| 2823 | `and axis.fixed_anchor_offset is not None` | `->L2812` | | -| 2824 | `and abs(proposed - axis.fixed_anchor_offset) > COORD_TOLERANCE` | `->L2826` | | -| 3014 | `if abs(first_offset - second_offset) > COORD_TOLERANCE:` | `->L3016` | | -| 3016 | `for owner in (first_owner, second_owner):` | `->L3013`, `->L3017` | | -| 3017 | `if owner is not None:` | `->L3016`, `->L3018` | | -| 3024 | `if not additions:` | `->L3026` | | -| 3088 | `if assignment.planned_family_id is RouteFamilyId.BOTTOM_EXIT_JUNCTION:` | `->L3089` | | -| 3124 | `if route is None:` | `->L3125` | | -| 3130 | `if assignment.planned_family_id is not RouteFamilyId.TB_BOTTOM_EXIT:` | `->L3131` | | -| 3145 | `if route is None:` | `->L3146`, `->L3152` | | -| 3160 | `if geometry.bundle_offsets is None:` | `->L3161` | | -| 3253 | `if scaffold is None:` | `->L3254` | | -| 3261 | `if scaffold is None:` | `->L3262` | **defensive** -- The second None check protects the manual or incomplete graph fallback after rebuilding a missing retained scaffold. Parsed render-path graphs publish one canonical scaffold during fan planning, so the fixture corpus never reaches a rebuild that can return None. Direct planner tests retain the fallback for graph construction without topology. | -| 3300 | `if overridden_dispositions:` | `->L3301` | | -| 3302 | `for plan_id in overridden_dispositions:` | `->L3303`, `->L3314` | | -| 3358 | `if transition_key in transition_by_edge:` | `->L3359` | | -| 3382 | `if len(points) >= 3:` | `->L3389` | | -| 3385 | `segment_direction(before, start) is run_direction` | `->L3389` | | -| 3386 | `and segment_direction(start, end) is turn_direction` | `->L3389` | | -| 3430 | `assignment is None` | `->L3435` | | -| 3431 | `or membership.axis is None` | `->L3435` | | -| 3432 | `or assignment.run_direction is None` | `->L3435` | | -| 3433 | `or assignment.turn_direction is None` | `->L3435` | | -| 3482 | `if ctx.exit_turns is None:` | `->L3483` | | -| 3493 | `if family_id is not assignment.planned_family_id:` | `->L3494` | | -| 3506 | `if (` | `->L3515` | | -| 3524 | `run is None` | `->L3529` | | -| 3525 | `or turn is None` | `->L3529` | | -| 3526 | `or assignment.launch_coordinate is None` | `->L3529` | | -| 3527 | `or assignment.minimum_runway is None` | `->L3529` | | -| 3533 | `if segment_rank is None:` | `->L3534` | | -| 3554 | `if planned_corner_offsets is None:` | `->L3555` | | -| 3621 | `if source_turn_changed and settled is None:` | `->L3622` | | -| 3649 | `if rank is None:` | `->L3650` | | -| 3716 | `if current.keys() != snapshot.geometry.keys():` | `->L3717` | | -| 3731 | `if current[key] != state:` | `->L3732` | | -| 3762 | `or exit_turn_plan.system_id in skip_system_ids` | `->L3764` | | -| 3768 | `station_id not in graph.stations` | `->L3771` | | -| 3769 | `or lane.line_id not in graph.station_lines(station_id)` | `->L3771` | | -| 3777 | `if (station_id, lane.line_id) not in station_offsets or (` | `->L3784` | | -| 3792 | `if len(transition_routes) != 1:` | `->L3793` | | -| 3830 | `route.exit_lane_transition_plan_id != str(exit_turn_plan.id)` | `->L3835` | | -| 3831 | `or route.offset_regime is not OffsetRegime.BAKED` | `->L3835` | | -| 3832 | `or route.points != expected_route.points` | `->L3835` | | -| 3833 | `or route.curve_radii != expected_route.curve_radii` | `->L3835` | | -| 3851 | `if not _fixed_axis_matches_plan(` | `->L3856` | | -| 3862 | `if any(` | `->L3871` | | -| 3879 | `if len(member_routes) != 1:` | `->L3880` | | -| 3887 | `if route.exit_turn_family_id != assignment.planned_family_id.value:` | `->L3888` | | -| 3895 | `if route.exit_turn_axis_id is not None:` | `->L3896` | | -| 3904 | `if (` | `->L3918` | | -| 3926 | `route.exit_turn_axis_id != str(assignment.axis_id)` | `->L3929` | | -| 3927 | `or route.exit_turn_segment_rank is None` | `->L3929` | | -| 3940 | `if (` | `->L3962` | **defensive** -- The emission validation that raises when a rendered turn's axis, lead-in runway or direction differs from the assignment the route was bound to. The emitters derive all four from that same assignment, so the raise names an emitter ignoring its plan rather than a topology. | +| 517 | `if not replacements:` | `->L518` | | +| 748 | `if key not in ctx.station_offsets and port_key not in ctx.station_offsets:` | `->L749` | | +| 761 | `if len({coordinate for _line, _offset, coordinate in values}) != len(values):` | `->L762` | | +| 834 | `if source_run_direction not in {Direction.R, Direction.L}:` | `->L835` | | +| 924 | `if source_run_direction not in run_axis:` | `->L925` | | +| 929 | `if abs(delta) <= COORD_TOLERANCE:` | `->L930` | | +| 933 | `if horizontal:` | `->L936` | | +| 937 | `if actual_run is not source_run_direction:` | `->L938` | | +| 968 | `if route is None:` | `->L969` | | +| 971 | `if len(points) < 3:` | `->L972` | | +| 976 | `if run_direction is None or turn_direction is None:` | `->L977` | | +| 1003 | `if off_column_decline is not None and source_run_direction not in {` | `->L1007` | | +| 1008 | `if family_id is RouteFamilyId.MERGE_ENTRY_STRAIGHT:` | `->L1009` | | +| 1103 | `if entry_geometry.seam.turn_direction is None:` | `->L1104` | | +| 1189 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1190` | | +| 1217 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1218` | **defensive** -- _plain_l_shape_turn_requirement's flat-hop guard, which both its callers exclude: _standard_l_shape_turn_requirement returns its own missing-source-turn for a flat delta before delegating, and the cell-mate gap drop only classifies when the target section sits one grid row below the source (_bypass_route_kind requires tgt_row == src_row + 1), which puts the two ports on different rows. The duplicated guard therefore never fires. | +| 1346 | `if kind is _BypassRoute.LEFT_ENTRY_FAMILY:` | `->L1347` | | +| 1350 | `if kind is _BypassRoute.RIGHT_ENTRY_CROSS_ROW:` | `->L1351` | | +| 1352 | `if kind is _BypassRoute.L_SHAPE:` | `->L1353` | | +| 1359 | `if kind is _BypassRoute.LEFT_EXIT_AROUND_BELOW:` | `->L1360` | | +| 1492 | `if primary_delta * run_direction.sign < 2 * MIN_STRAIGHT_EDGE + diagonal:` | `->L1493` | | +| 1519 | `if direction_axis(transition.run_direction) is DemandAxis.X:` | `->L1523` | | +| 1574 | `if len(candidates) != 1:` | `->L1575` | | +| 1581 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1582` | | +| 1609 | `if transition is None:` | `->L1610` | | +| 1646 | `target_crossing is None` | `->L1649` | | +| 1647 | `or abs(source_crossing - target_crossing) > COORD_TOLERANCE` | `->L1649` | | +| 1671 | `target_crossing is None` | `->L1674` | | +| 1672 | `or abs(geometry.cross_lo - target_crossing) > COORD_TOLERANCE` | `->L1674` | | +| 1684 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1685` | | +| 1710 | `if transition is None:` | `->L1711` | | +| 1744 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1745` | | +| 1770 | `if transition is None:` | `->L1772` | | +| 1803 | `if len(entry_group_ids) != 1:` | `->L1804` | | +| 1810 | `if family_id is None:` | `->L1811` | | +| 1839 | `requirement.run_direction is not None` | `->L1852` | | +| 1840 | `and requirement.turn_direction is not None` | `->L1852` | | +| 1841 | `and requirement.launch_coordinate is not None` | `->L1852` | | +| 1842 | `and requirement.minimum_runway is not None` | `->L1852` | | +| 1861 | `and requirement.turn_direction is not None` | `->L1868` | | +| 1873 | `and family_id is not RouteFamilyId.MERGE_ENTRY` | `->L1876` | | +| 1901 | `if any(len(runs) > 1 for runs in straight_runs_by_lane.values()):` | `->L1902` | **defensive** -- The opposed-source-run recogniser: a lane whose turn-less members disagree on the direction they leave the shared source. Every member of one exit group leaves through one exit port, whose side fixes the outward ray, and a collinear target on the other side of that port is a backward hop the engine rejects before routing. The arm names a classification that contradicts itself and declines the plan; no exit group produces it. | +| 2053 | `if any(` | `->L2064` | | +| 2078 | `if membership is not None and membership.axis is not None:` | `->L2079` | | +| 2156 | `if not _lane_arms_read_as_one_stroke(` | `->L2159` | **defensive** -- The reject protects a planner seed set where an unpinned cohort lands within one curve radius of a same-rank axis already claimed by a pinned cohort. Production topology planning pins or separates those cohorts before this check. test_free_lane_arm_overlapping_a_pinned_corner_uses_legacy constructs the incomplete seed set directly and covers the fallback reason. | +| 2273 | `if reason is not None:` | `->L2274` | | +| 2354 | `if set(families) != {` | `->L2359` | | +| 2368 | `if source_exit_edge is None:` | `->L2369`, `->L2370` | | +| 2372 | `if source_section is None:` | `->L2373`, `->L2375` | | +| 2376 | `for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):` | `->L2377`, `->L2390` | | +| 2377 | `for (bx0, by0), (bx1, by1) in zip(second.points, second.points[1:]):` | `->L2376`, `->L2378` | | +| 2379 | `ax0 == ax1` | `->L2380`, `->L2384` | | +| 2380 | `and by0 == by1` | `->L2381`, `->L2384` | | +| 2381 | `and _vert_horiz_cross(ax0, ay0, ay1, by0, bx0, bx1)` | `->L2383`, `->L2384` | | +| 2385 | `bx0 == bx1` | `->L2377`, `->L2386` | | +| 2386 | `and ay0 == ay1` | `->L2377`, `->L2387` | | +| 2387 | `and _vert_horiz_cross(bx0, by0, by1, ay0, ax0, ax1)` | `->L2377`, `->L2389` | | +| 2398 | `if any(route is None for route in sibling_routes):` | `->L2399`, `->L2400` | | +| 2404 | `for merge_id, trunk_source_id in ctx.merge.trunk_source.items():` | `->L2405`, `->L2457` | | +| 2413 | `entry_port is None` | `->L2414`, `->L2419` | | +| 2414 | `or entry_section is None` | `->L2415`, `->L2419` | | +| 2415 | `or entry_port.side is not PortSide.RIGHT` | `->L2416`, `->L2419` | | +| 2416 | `or entry_section.grid_col != facts[0].src_col` | `->L2417`, `->L2419` | | +| 2417 | `or entry_section.grid_row != target_row` | `->L2419`, `->L2420` | | +| 2428 | `if trunk_edge is None:` | `->L2429`, `->L2430` | | +| 2445 | `if horizontal is None:` | `->L2446`, `->L2447` | | +| 2448 | `horizontal.xb > source.x + ctx.curve_radius` | `->L2404`, `->L2449` | | +| 2449 | `and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE` | `->L2404`, `->L2450` | | +| 2450 | `and all(crosses(route, trunk) for route in resolved_siblings)` | `->L2404`, `->L2452` | | +| 2455 | `if len(barriers) == 2:` | `->L2404`, `->L2456` | | +| 2457 | `if len(barriers) != 1:` | `->L2458`, `->L2459` | | +| 2463 | `for merge_id, trunk_source_id in ctx.merge.trunk_source.items():` | `->L2464`, `->L2489` | | +| 2472 | `if trunk_edge is None:` | `->L2473`, `->L2474` | | +| 2477 | `for _rank, horizontal in iter_horizontal_trunks(candidate):` | `->L2463`, `->L2478` | | +| 2479 | `min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE` | `->L2477`, `->L2480` | | +| 2480 | `and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE` | `->L2477`, `->L2481` | | +| 2481 | `and horizontal.y > source.y + COORD_TOLERANCE` | `->L2477`, `->L2483` | | +| 2505 | `if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y:` | `->L2506`, `->L2507` | | +| 2568 | `if not outbound_edges or missing_connectors:` | `->L2569` | | +| 2670 | `if final_classification.legacy_reason is not None:` | `->L2671` | | +| 2672 | `elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(` | `->L2675` | | +| 2945 | `if incumbent.id == plan.id:` | `->L2947` | | +| 3015 | `if owners and plan.id not in owners:` | `->L3016` | | +| 3016 | `for owner in owners:` | `->L3017`, `->L3018` | | +| 3031 | `and plan.id in conflicting_plan_ids` | `->L3033` | | +| 3049 | `and axis.fixed_anchor_offset is not None` | `->L3038` | | +| 3050 | `and abs(proposed - axis.fixed_anchor_offset) > COORD_TOLERANCE` | `->L3052` | | +| 3240 | `if abs(first_offset - second_offset) > COORD_TOLERANCE:` | `->L3242` | | +| 3242 | `for owner in (first_owner, second_owner):` | `->L3239`, `->L3243` | | +| 3243 | `if owner is not None:` | `->L3242`, `->L3244` | | +| 3250 | `if not additions:` | `->L3252` | | +| 3314 | `if assignment.planned_family_id is RouteFamilyId.BOTTOM_EXIT_JUNCTION:` | `->L3315` | | +| 3352 | `if route is None:` | `->L3353` | | +| 3358 | `if assignment.planned_family_id is not RouteFamilyId.TB_BOTTOM_EXIT:` | `->L3359` | | +| 3373 | `if route is None:` | `->L3374`, `->L3380` | | +| 3388 | `if geometry.bundle_offsets is None:` | `->L3389` | | +| 3481 | `if scaffold is None:` | `->L3482` | | +| 3489 | `if scaffold is None:` | `->L3490` | **defensive** -- The second None check protects the manual or incomplete graph fallback after rebuilding a missing retained scaffold. Parsed render-path graphs publish one canonical scaffold during fan planning, so the fixture corpus never reaches a rebuild that can return None. Direct planner tests retain the fallback for graph construction without topology. | +| 3528 | `if overridden_dispositions:` | `->L3529` | | +| 3530 | `for plan_id in overridden_dispositions:` | `->L3531`, `->L3542` | | +| 3586 | `if transition_key in transition_by_edge:` | `->L3587` | | +| 3610 | `if len(points) >= 3:` | `->L3617` | | +| 3613 | `segment_direction(before, start) is run_direction` | `->L3617` | | +| 3614 | `and segment_direction(start, end) is turn_direction` | `->L3617` | | +| 3658 | `assignment is None` | `->L3663` | | +| 3659 | `or membership.axis is None` | `->L3663` | | +| 3660 | `or assignment.run_direction is None` | `->L3663` | | +| 3661 | `or assignment.turn_direction is None` | `->L3663` | | +| 3709 | `if ctx.exit_turns is None:` | `->L3710` | | +| 3720 | `or route.fan_route_emitter is not None` | `->L3722` | | +| 3739 | `incoming is None` | `->L3743` | | +| 3740 | `or outgoing is None` | `->L3743` | | +| 3741 | `or direction_axis(incoming) is direction_axis(outgoing)` | `->L3743` | | +| 3766 | `if reference is None:` | `->L3767` | | +| 3785 | `if route.curve_radii is not None and rank < len(route.curve_radii):` | `->L3778` | | +| 3802 | `if ctx.exit_turns is None:` | `->L3803` | | +| 3813 | `if family_id is not assignment.planned_family_id:` | `->L3814` | | +| 3826 | `if (` | `->L3835` | | +| 3844 | `run is None` | `->L3849` | | +| 3845 | `or turn is None` | `->L3849` | | +| 3846 | `or assignment.launch_coordinate is None` | `->L3849` | | +| 3847 | `or assignment.minimum_runway is None` | `->L3849` | | +| 3853 | `if segment_rank is None:` | `->L3854` | | +| 3874 | `if planned_corner_offsets is None:` | `->L3875` | | +| 3941 | `if source_turn_changed and settled is None:` | `->L3942` | | +| 3969 | `if rank is None:` | `->L3970` | | +| 4036 | `if current.keys() != snapshot.geometry.keys():` | `->L4037` | | +| 4051 | `if current[key] != state:` | `->L4052` | | +| 4082 | `or exit_turn_plan.system_id in skip_system_ids` | `->L4084` | | +| 4088 | `station_id not in graph.stations` | `->L4091` | | +| 4089 | `or lane.line_id not in graph.station_lines(station_id)` | `->L4091` | | +| 4097 | `if (station_id, lane.line_id) not in station_offsets or (` | `->L4104` | | +| 4112 | `if len(transition_routes) != 1:` | `->L4113` | | +| 4150 | `route.exit_lane_transition_plan_id != str(exit_turn_plan.id)` | `->L4155` | | +| 4151 | `or route.offset_regime is not OffsetRegime.BAKED` | `->L4155` | | +| 4152 | `or route.points != expected_route.points` | `->L4155` | | +| 4153 | `or route.curve_radii != expected_route.curve_radii` | `->L4155` | | +| 4171 | `if not _fixed_axis_matches_plan(` | `->L4176` | | +| 4182 | `if any(` | `->L4191` | | +| 4199 | `if len(member_routes) != 1:` | `->L4200` | | +| 4215 | `if opening is not None:` | `->L4216` | | +| 4216 | `if tuple(route.points[: len(opening.points)]) != opening.points:` | `->L4217`, `->L4220` | | +| 4221 | `if route.exit_turn_family_id != assignment.planned_family_id.value:` | `->L4222` | | +| 4229 | `if route.exit_turn_axis_id is not None:` | `->L4230` | | +| 4238 | `if (` | `->L4252` | **defensive** -- The emission validation that raises when a rendered turn's axis, lead-in runway or direction differs from the assignment the route was bound to. The emitters derive all four from that same assignment, so the raise names an emitter ignoring its plan rather than a topology. | +| 4260 | `route.exit_turn_axis_id != str(assignment.axis_id)` | `->L4263` | | +| 4261 | `or route.exit_turn_segment_rank is None` | `->L4263` | | +| 4274 | `if (` | `->L4296` | | ## `inter_section.py` @@ -478,159 +671,183 @@ Gates with an un-exercised arm: ## `inter_section_handlers.py` -188/335 gates fully exercised. +197/368 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | | 416 | `if section is None:` | `->L417` | | -| 650 | `and f.src_row is not None` | `->L677` | **defensive** -- LEFT-entry inter-row L-shape guard. Every LEFT-entry inter-section edge reaching this condition has a resolved source grid row (f.src_col/f.tgt_col are asserted non-None just above and the row resolves alongside), so the `f.src_row is None` short-circuit out of the L-shape branch is never taken. | -| 651 | `and f.tgt_row is not None` | `->L677` | **defensive** -- Companion guard to f.src_row in the same LEFT-entry inter-row L-shape condition: the target grid row is likewise always resolved here, so the `f.tgt_row is None` short-circuit out of the branch is never taken. | -| 727 | `if src_sec is None:` | `->L728` | | -| 731 | `if edges is None:` | `->L732` | | -| 755 | `if section and section.bbox_w > 0:` | `->L757` | | -| 763 | `if section and section.bbox_w > 0:` | `->L765` | | -| 789 | `if _v_segment_crosses_other_section(graph, corner_x, src.y, ey, exclude):` | `->L790` | **defensive** -- Drop-in viability test in _right_entry_drop_in_is_clear (#889). The cross-row RIGHT-entry rule fires only when the earlier bypass / plough rules ceded the edge, i.e. no section sits between source and port, so the outward-side descent runs clear; the not-clear arm covers only an exotic descent blocked by a wide same-column sibling no corpus fixture builds. Defensive. | -| 895 | `if min(drop_xs) < _section_right_edge(graph, tgt) - COORD_TOLERANCE:` | `->L896` | | -| 898 | `if _v_segment_crosses_other_section(graph, dx, src.y, tgt.y, exclude):` | `->L899` | | -| 939 | `if route is not None:` | `->L941` | | -| 963 | `if self.launch_coordinate is None or self.axis_coordinate is None:` | `->L964` | **defensive** -- _SourceSeam.minimum_runway returns None for a shape whose centreline never turns (everything but run_direction unstated). Production readers only reach it through _SourceTurnRequirement.from_seam and the planner sites that assert non-None first, and those run only for turning families, so the None arm firing would be a family-contract violation. | -| 1140 | `if route is not None:` | `->L1154` | | -| 1285 | `if _corridor_is_viable(ctx, src, tgt):` | `->L1286` | **needs-review** -- Reachable only via a defective render (inter-row corridor grazes the source section); see #722. | -| 1306 | `if kind is _LeftEntryRoute.CORRIDOR:` | `->L1307` | | -| 1333 | `if target_port is None:` | `->L1334` | | -| 1352 | `if sibling_port is None or not sibling_port.is_entry:` | `->L1353` | | -| 1356 | `if (` | `->L1364` | | -| 1366 | `if not candidates:` | `->L1367` | | -| 1406 | `if (` | `->L1412` | | -| 1415 | `if sibling_route is None or len(sibling_route.points) < 6:` | `->L1416` | | -| 1427 | `if (` | `->L1432` | | -| 1573 | `if abs(ep.y - f.sy) < ctx.curve_radius:` | `->L1574` | **defensive** -- Merge entry-port Y tracks the source/junction Y, so a sub-curve_radius exit->entry gap never arises (the same-Y rule already handles dyL1577` | | -| 1578 | `if ep_port and ep_port.side == PortSide.LEFT:` | `->L1584` | **defensive** -- Contract guard in _route_inter_section: a merge entry port always resolves to a Port on the LEFT side here, so the non-LEFT/None arm (fall through to _route_l_shape at L344) is never taken (0/128). The earlier 'multiline phantom' note was inaccurate -- this is a recorded gate whose arm is never taken. Defensive guard. Reclassified defensive (#762). | -| 1581 | `if _corridor_is_viable(ctx, src, ep):` | `->L1583` | **needs-review** -- Reachable only via a defective render (route skirts/crosses section boundary); see #724. | -| 1605 | `if tgt_sec is None:` | `->L1606`, `->L1607` | **defensive** -- Defensive guard in _fan_shares_inter_row_channel: the edge is a fan branch into an entry port, which always resolves to a section, so the None arm is unreachable in practice. | -| 1607 | `if port.side is PortSide.TOP:` | `->L1608`, `->L1613` | | -| 2042 | `if len(_INTER_SECTION_RULE_BY_FAMILY) != len(_INDEXED_INTER_SECTION_RULES):` | `->L2043`, `->L2046` | | -| 2048 | `if _INTER_SECTION_RULES is _INDEXED_INTER_SECTION_RULES:` | `->L2050` | | -| 2073 | `if not is_inter:` | `->L2074` | | -| 2084 | `if family_id is not RouteFamilyId.STANDARD_L_SHAPE:` | `->L2085` | | -| 2098 | `route is None` | `->L2099` | | -| 2099 | `and membership is not None` | `->L2100`, `->L2109` | | -| 2100 | `and membership.assignment is not None` | `->L2101`, `->L2109` | | -| 2101 | `and membership.plan.disposition is ExitTurnDisposition.PLANNED` | `->L2103`, `->L2109` | | -| 2109 | `if route is not None:` | `->L2114` | | -| 2253 | `if planned_transition is not None:` | `->L2254` | | -| 2516 | `if query is None:` | `->L2517` | **defensive** -- Production routing runs after layout publishes FanPlanExecution. The None arm preserves the ordinary dispatcher for direct or incomplete routing contexts. | -| 2541 | `if ctx.station_offsets:` | `->L2543` | **defensive** -- _run_pass_c_guards always populates ctx.station_offsets before route_edges, and RAILS mode returns earlier; the empty-offsets arm never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2648 | `if query is None:` | `->L2649` | | -| 2652 | `if binding is None:` | `->L2653` | | -| 2657 | `plan.disposition is not FanPlanDisposition.PLANNED` | `->L2663` | | -| 2658 | `or emission.emitter is not FanRouteEmitter.BOTTOM_EXIT_RIGHT_LANDINGS` | `->L2663` | | -| 2659 | `or plan.fork_station_id != edge.source` | `->L2663` | **defensive** -- FanPlan membership validation requires every emission source to equal fork_station_id. This operand catches a frozen-plan/source mismatch before materialisation. | -| 2660 | `or target_port is None` | `->L2663` | **defensive** -- The planner creates this emitter only for a resolved landing port. A missing target port therefore indicates graph or plan drift after publication. | -| 2661 | `or target_port.side is not PortSide.RIGHT` | `->L2663` | **defensive** -- BOTTOM_EXIT_RIGHT_LANDINGS is selected only when every target is a RIGHT entry. The non-RIGHT arm is a defensive check that the frozen target still satisfies that contract. | -| 2672 | `if port is None or port.side is not PortSide.RIGHT or section is None:` | `->L2673` | **defensive** -- The planned emitter is created only from existing RIGHT landing ports with owning sections. This guard rejects stale or corrupted port references during materialisation. | -| 2676 | `if section not in landing_sections:` | `->L2667` | **defensive** -- The planner admits this emitter only when branches land in distinct sections, so the duplicate-section arm cannot occur for a valid frozen emission. It remains a materialisation-time drift check. | -| 2678 | `if len(landing_sections) != len(plan.branches):` | `->L2679` | **defensive** -- The planner emits this route family only when every branch lands in one distinct RIGHT-entry section. A count mismatch can arise only if the frozen emission and plan have drifted apart. | -| 2681 | `if plan.entry_runway is None:` | `->L2682` | **defensive** -- Every PLANNED FanPlan is validated with both runways before publication. The None arm is a runtime drift check for an incomplete plan object. | -| 2685 | `if not source_lines or edge.line_id not in source_lines:` | `->L2686` | **defensive** -- The planned emitter requires a non-empty offset_line_order whose line set exactly matches its emissions. The missing-line arm protects routing from a malformed frozen plan. | -| 2712 | `if route is None:` | `->L2713` | | -| 2748 | `if tgt_port is None or tgt_port.side != PortSide.LEFT:` | `->L2749` | | -| 2751 | `if ep_col is None or ep_row is None:` | `->L2752` | | -| 2754 | `if corner_x is None:` | `->L2755` | | -| 2877 | `if _would_route_around_section_below(other, ctx):` | `->L2878` | **defensive** -- Competing-sibling detection in _has_around_section_sibling, routed through the dispatch table (#813). A non-bypass sibling feeding the same merge junction sits in an adjacent column or a gap with no same-row intervening section, so it dispatches to an L-shape, not the around-below loop; corpus instrumentation across the fixtures confirms the arm is never taken. Defensive. | -| 3012 | `if trunk_shape.around_below:` | `->L3013` | | -| 3021 | `if flank_xs:` | `->L3000` | | -| 3229 | `and corridor.bypass_band_y >= base_y - COORD_TOLERANCE` | `->L3238` | **needs-review** -- Safety fallback: the shared bypass band is the deepest sibling's bypass_bottom_y, so a branch's own base_y never exceeds it; the arm that would decline a shallower shared band (guarding a predicate mismatch) is unexercised in the corpus. | -| 3301 | `if trunk_v_up_pull_away:` | `->L3310` | **needs-review** -- Reachable only via a defective render (merge-junction tangle); see #721. | -| 3340 | `this_xmin - gap_left >= SECTION_ROUTE_CLEARANCE` | `->L3341`, `->L3344` | | -| 3341 | `and gap_right - around_xmax >= SECTION_ROUTE_CLEARANCE` | `->L3343`, `->L3344` | | -| 3416 | `if src_sec is not None and src_sec.bbox_w > 0:` | `->L3466` | **defensive** -- A bypass source section always resolves and has bbox_w>0 (the parser never emits an empty section); the None/zero-width arm never fires. | -| 3598 | `if facts.src_col is None or facts.tgt_col is None:` | `->L3599` | | -| 3603 | `if shape.around_below:` | `->L3604` | | -| 3608 | `or _bypass_route_kind(facts) is not _BypassRoute.U_BYPASS` | `->L3610` | | -| 3699 | `if ctx.exit_turns is None:` | `->L3700` | | -| 3703 | `membership is None` | `->L3706` | | -| 3708 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L3709` | | -| 3772 | `membership is None` | `->L3775` | | -| 3780 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L3781` | **defensive** -- _seat_bypass_descent reads the segment at BYPASS_DESCENT_RANK, which the U-bypass builder emits as the descent between the two gap corners and is vertical by construction. The non-vertical bail guards a route whose point order does not match the shape the caller just built. | -| 3819 | `if route is not None:` | `->L3821` | | -| 3847 | `if route is None:` | `->L3848` | **defensive** -- Defensive in _declare_trunk: _route_inter_section only reaches the declaration after a matched rule (or the L-shape fall-through) produced a route, so the None guard never fires on the corpus; it mirrors _declare_channel's same guard for a handler that returns None. | -| 3875 | `if route is None:` | `->L3876` | **defensive** -- _declare_channel deliberately accepts RoutedPath \| None so declining builders can be ignored. Production callers currently pass concrete routes; the None no-op remains a defensive helper contract. | -| 3922 | `if route is None:` | `->L3923` | **defensive** -- _declare_placed_channels accepts RoutedPath \| None to match _declare_trunk and _declare_channel, but all three call sites have already established the route (an assert on the left-entry corridor, a RuntimeError when a planned fan emitter omits a member, and a locally built U-bypass), so the None no-op is a helper contract nothing exercises. | -| 3936 | `if (lo, matched_row, direction) in declared:` | `->L3938` | **needs-review** -- The un-exercised arm is the fresh declaration, not the dedupe skip: declared is seeded from the slots the handler's targeted _declare_channel calls already made, and on the corpus every gap-landing leg of a frozen frame is one of those, so the sweep only ever skips. The declaration fires where two targeted declarations collapse onto one gap and direction, leaving a third leg holding a gap nothing named -- the case the left-entry corridor and U-bypass call sites are commented for. | -| 4144 | `while cur is not None and cur not in seen:` | `->L4160` | | -| 4150 | `if port.side == PortSide.LEFT:` | `->L4152` | | -| 4153 | `if cur in graph.junctions:` | `->L4159` | | -| 4240 | `if (` | `->L4246` | | -| 4427 | `if geometry is None:` | `->L4428` | | -| 4526 | `if abs(tgt.x - src.x) <= ctx.curve_radius:` | `->L4527` | | -| 4539 | `if _h_segment_crosses_other_section(graph, src.x, final_x, src.y, exclude):` | `->L4540` | **defensive** -- Traverse-first clearance test in _top_entry_side_fan_traverse_clears (#1349). The below-side fan branch only reaches this gate when its junction also feeds an aligned straight drop; the corpus fan sits a clear row above its target, so the source-Y traverse never crosses another section and the fall-back-to-staircase arm is not exercised. Defensive. | -| 4667 | `if abs(tgt.x - src.x) > COORD_TOLERANCE or src.id not in ctx.graph.junctions:` | `->L4668` | | -| 4702 | `if feeder is not None:` | `->L4707` | | -| 4877 | `if len(points) < 3:` | `->L4878` | | -| 4929 | `if not section_ids:` | `->L4930` | | -| 5009 | `if mid_y is None:` | `->L5026` | | -| 5041 | `channel_y is None` | `->L5071` | | -| 5043 | `and src_sec is not None` | `->L5071` | **defensive** -- Inter-row exit mid-Y clearance bump (the n>1 multi-line branch). When more than one line shares the exit the source section always resolves, so the `src_sec is None` short-circuit past the clearance bump is never taken. | -| 5044 | `and tgt_sec is not None` | `->L5071` | **defensive** -- Companion to src_sec in the same n>1 mid-Y clearance branch: the target section always resolves there, so the `tgt_sec is None` short-circuit past the bump is never taken. | -| 5073 | `if exit_side is not None:` | `->L5075` | | -| 5075 | `elif abs(dx) > ctx.curve_radius:` | `->L5076`, `->L5078` | | -| 5079 | `if src.id in ctx.graph.junctions:` | `->L5080`, `->L5092` | **needs-review** -- Reachable only via a defective render (LR->TB TOP-entry routing); see #720. | -| 5080 | `for je in ctx.graph.edges_to(src.id):` | `->L5081`, `->L5092` | | -| 5082 | `if js.is_port:` | `->L5080`, `->L5083` | | -| 5083 | `if abs(js.x - src.x) <= COORD_TOLERANCE:` | `->L5084`, `->L5086` | | -| 5098 | `if exit_side is not None and not straight_drop:` | `->L5108` | | -| 5146 | `if not straight_drop:` | `->L5150` | **needs-review** -- A top-entry fan branch fed straight from directly above the junction (straight_drop) keeps its lead-in column at the source X rather than the shared fan pivot; the corpus's fan branches all carry horizontal travel, so the straight-drop arm is unexercised. | -| 5148 | `if lead is Direction.R:` | `->L5150` | **needs-review** -- A top-entry fan branch leading LEFT out of the junction skips the _v1_corner_x right-edge clearance bump; the corpus's fan branches all lead right, so the left-lead arm is unexercised. | -| 5175 | `if straight_drop:` | `->L5176` | | -| 5252 | `if ctx.exit_turns is None:` | `->L5253` | **needs-review** -- _perp_entry_turn_is_planned answers False for the pre-plan context the exit-turn planner probes emitters with; ctx.exit_turns is bound only for emission. That context does reach these emitters -- the same guard in _seat_bypass_descent takes its None arm on packed_cell_right_exit_left_entry_wrap -- but no corpus probe reaches the TOP/BOTTOM-entry L-shape records this predicate feeds. | -| 5337 | `if src_sec is None or tgt_sec is None or src_sec.grid_row >= tgt_sec.grid_row:` | `->L5340` | | -| 5507 | `if src_section and src_section.bbox_w > 0:` | `->L5508` | | -| 5528 | `if tgt_sec is None:` | `->L5529` | | -| 5599 | `if src_col is None:` | `->L5600` | | -| 5834 | `if src_sec is not None:` | `->L5865` | **defensive** -- Defensive guard in the fanned entry-wrap source-clearance lift: a fan-out junction always resolves to its source section, so the None arm is unreachable in practice. | -| 5871 | `if tgt_col is not None:` | `->L5876` | **defensive** -- tgt_col from _resolve_section_col on a valid LEFT entry port is always non-None (sections get grid_col>=0 after auto-layout). | -| 5873 | `if shared_vx is not None:` | `->L5876` | **defensive** -- _fan_left_entry_descent_x returns None only when col_left<=0; col_left_edge for the target's own column is always >0. | -| 5999 | `if entry_side is PortSide.LEFT:` | `->L6002` | | -| 6067 | `if entry_port is None:` | `->L6068` | **defensive** -- _route_around_section_below is always called with a non-None entry_port (both dispatch sites pass a checked station). | -| 6078 | `if trunk_src is None or trunk_src == edge.source:` | `->L6080` | **needs-review** -- Reachable only via a defective render (merge-junction tangle); see #721. | -| 6131 | `if col_left <= 0.0:` | `->L6132` | **defensive** -- col_left_edge's 0.0 default only fires for a column with no sections; the target's own column always holds its section. | -| 6168 | `if entry_port is None:` | `->L6169` | **defensive** -- Every caller of _corridor_is_viable passes a non-None entry_port. | -| 6175 | `if src_row is None or ep_row is None or src_col is None or ep_col is None:` | `->L6176` | **defensive** -- _resolve_section_colrow returns (None,None) only for a station with no section; valid entry ports always have a section with non-negative grid coords. | -| 6263 | `if fan is not None and corridor is not None and corridor.band_y is not None:` | `->L6267` | **needs-review** -- Corridor-feeder shared inter-row band gate: the corpus's corridor feeders belong to fans whose corridor carries a band_y, so the short-circuit past it (no corridor or bypass-only) is unexercised; it falls to the elif fan-is-not-None global-band branch. | -| 6267 | `elif fan is not None:` | `->L6271`, `->L6276` | **needs-review** -- Corridor-feeder fallback for a fan whose junction earned no corridor (its in-column gap below does not fit the bundle); the corpus's fans all earn a corridor, so this global-band branch is unexercised. | -| 6276 | `elif gap_bottom > gap_top:` | `->L6277`, `->L6281` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6286 | `if fan is None and gap_bottom > gap_top:` | `->L6287` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6300 | `if fan is not None and ep_col is not None:` | `->L6302` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6302 | `if vx is None:` | `->L6303` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6404 | `if ep_section and ep_section.bbox_w > 0:` | `->L6407` | **defensive** -- entry_port.section_id is always set and the section has bbox_w>0 after layout; the else arm never fires. | -| 6701 | `for claim in ctx.convergences.prior_channel_claims_for_edge(edge):` | `->L6702` | | -| 6702 | `if claim.line_id != edge.line_id or claim.owner_source == edge.source:` | `->L6703`, `->L6704` | | -| 6704 | `if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):` | `->L6705`, `->L6706` | | -| 6706 | `if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:` | `->L6701`, `->L6707` | | -| 6780 | `if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):` | `->L6781` | | -| 6912 | `if gap_bottom <= gap_top:` | `->L6913` | **defensive** -- The row-gap enforcer keeps stacked rows separated, so the inter-row band above a target row (row_bottom_edge(tgt_row-1) up to row_top_edge(tgt_row)) has positive height whenever a RIGHT entry is fed from a higher row; the degenerate-band arm guards an abutting-rows layout placement never produces. | -| 6916 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L6917` | **defensive** -- Band-fit test in _right_entry_gap_above_is_clear (#889), reached only when the cross-row RIGHT-entry drop-in is not clear (the exotic blocked-descent case above). The corpus always takes the drop-in, so neither arm of the gap-above fallback is exercised. Defensive. | -| 6995 | `if not normalize_exempt:` | `->L6999` | | -| 7072 | `if gap_bottom <= gap_top:` | `->L7073` | | -| 7074 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7075` | | -| 7085 | `if f.v_segment_crosses_other_section(vx, gy, tgt.y):` | `->L7086` | | -| 7180 | `if source is None or source.bbox_w <= 0:` | `->L7181` | | -| 7185 | `if source.id not in members:` | `->L7186` | | -| 7191 | `if other.bbox_x <= source_right + COORD_TOLERANCE:` | `->L7192` | | -| 7193 | `if cellmate_left is None or other.bbox_x < cellmate_left:` | `->L7187` | | -| 7195 | `if cellmate_left is None:` | `->L7196` | | -| 7233 | `if band0_bottom <= band0_top or not _inter_row_band_fits(band0_top, band0_bottom):` | `->L7234` | | -| 7235 | `if band1_bottom <= band1_top or not _inter_row_band_fits(band1_top, band1_bottom):` | `->L7236` | | -| 7237 | `if band1_top <= band0_bottom + COORD_TOLERANCE:` | `->L7238` | | -| 7253 | `if f.v_segment_crosses_other_section(corner_x, band0_y, band1_y, exclude):` | `->L7254` | | -| 7310 | `if geom is None:` | `->L7311` | | -| 7313 | `if f.v_segment_crosses_other_section(geom.lead_x, src.y, geom.band0_y):` | `->L7314` | | -| 7315 | `if f.h_segment_crosses_other_section(geom.lead_x, geom.corner_x, geom.band0_y):` | `->L7316` | | -| 7317 | `if f.h_segment_crosses_other_section(geom.corner_x, geom.vx, geom.band1_y):` | `->L7318` | | +| 649 | `and f.src_row is not None` | `->L676` | **defensive** -- LEFT-entry inter-row L-shape guard. Every LEFT-entry inter-section edge reaching this condition has a resolved source grid row (f.src_col/f.tgt_col are asserted non-None just above and the row resolves alongside), so the `f.src_row is None` short-circuit out of the L-shape branch is never taken. | +| 650 | `and f.tgt_row is not None` | `->L676` | **defensive** -- Companion guard to f.src_row in the same LEFT-entry inter-row L-shape condition: the target grid row is likewise always resolved here, so the `f.tgt_row is None` short-circuit out of the branch is never taken. | +| 687 | `if f.left_entry_from_right:` | `->L688` | | +| 711 | `f.bypass_route is not _BypassRoute.U_BYPASS` | `->L720` | | +| 713 | `or f.horizontal is not Direction.L` | `->L720` | | +| 714 | `or f.src_row is None` | `->L720` | | +| 715 | `or f.tgt_row is None` | `->L720` | | +| 717 | `or f.src_col is None` | `->L720` | | +| 718 | `or f.tgt_col is None` | `->L720` | | +| 722 | `for merge_id, entry_id in f.ctx.merge.entry_port_for.items():` | `->L723` | | +| 726 | `if entry is None or source is None:` | `->L727`, `->L728` | | +| 731 | `entry_col is None` | `->L732`, `->L739` | | +| 732 | `or entry_row is None` | `->L733`, `->L739` | | +| 733 | `or source_col is None` | `->L734`, `->L739` | | +| 734 | `or source_row != f.src_row` | `->L735`, `->L739` | | +| 735 | `or entry_row < f.tgt_row` | `->L736`, `->L739` | | +| 736 | `or not f.src_col < entry_col` | `->L737`, `->L739` | | +| 737 | `or not f.tgt_col < source_col < f.src_col` | `->L739`, `->L740` | | +| 740 | `if any(` | `->L722`, `->L746` | | +| 752 | `if _u_bypass_wraps_above_merge_trunk(f):` | `->L753` | | +| 786 | `if src_sec is None:` | `->L787` | | +| 790 | `if edges is None:` | `->L791` | | +| 814 | `if section and section.bbox_w > 0:` | `->L816` | | +| 822 | `if section and section.bbox_w > 0:` | `->L824` | | +| 848 | `if _v_segment_crosses_other_section(graph, corner_x, src.y, ey, exclude):` | `->L849` | **defensive** -- Drop-in viability test in _right_entry_drop_in_is_clear (#889). The cross-row RIGHT-entry rule fires only when the earlier bypass / plough rules ceded the edge, i.e. no section sits between source and port, so the outward-side descent runs clear; the not-clear arm covers only an exotic descent blocked by a wide same-column sibling no corpus fixture builds. Defensive. | +| 954 | `if min(drop_xs) < _section_right_edge(graph, tgt) - COORD_TOLERANCE:` | `->L955` | | +| 957 | `if _v_segment_crosses_other_section(graph, dx, src.y, tgt.y, exclude):` | `->L958` | | +| 998 | `if route is not None:` | `->L1000` | | +| 1022 | `if self.launch_coordinate is None or self.axis_coordinate is None:` | `->L1023` | **defensive** -- _SourceSeam.minimum_runway returns None for a shape whose centreline never turns (everything but run_direction unstated). Production readers only reach it through _SourceTurnRequirement.from_seam and the planner sites that assert non-None first, and those run only for turning families, so the None arm firing would be a family-contract violation. | +| 1199 | `if route is not None:` | `->L1213` | | +| 1344 | `if _corridor_is_viable(ctx, src, tgt):` | `->L1345` | **needs-review** -- Reachable only via a defective render (inter-row corridor grazes the source section); see #722. | +| 1365 | `if kind is _LeftEntryRoute.CORRIDOR:` | `->L1366` | | +| 1392 | `if target_port is None:` | `->L1393` | | +| 1411 | `if sibling_port is None or not sibling_port.is_entry:` | `->L1412` | | +| 1415 | `if (` | `->L1423` | | +| 1425 | `if not candidates:` | `->L1426` | | +| 1465 | `if (` | `->L1471` | | +| 1474 | `if sibling_route is None or len(sibling_route.points) < 6:` | `->L1475` | | +| 1486 | `if (` | `->L1491` | | +| 1633 | `if abs(ep.y - f.sy) < ctx.curve_radius:` | `->L1634` | **defensive** -- Merge entry-port Y tracks the source/junction Y, so a sub-curve_radius exit->entry gap never arises (the same-Y rule already handles dyL1637` | | +| 1639 | `if (` | `->L1650` | | +| 1651 | `if ep_port and ep_port.side == PortSide.LEFT:` | `->L1657` | **defensive** -- Contract guard in _route_inter_section: a merge entry port always resolves to a Port on the LEFT side here, so the non-LEFT/None arm (fall through to _route_l_shape at L344) is never taken (0/128). The earlier 'multiline phantom' note was inaccurate -- this is a recorded gate whose arm is never taken. Defensive guard. Reclassified defensive (#762). | +| 1654 | `if _corridor_is_viable(ctx, src, ep):` | `->L1656` | **needs-review** -- Reachable only via a defective render (route skirts/crosses section boundary); see #724. | +| 1678 | `if tgt_sec is None:` | `->L1679`, `->L1680` | **defensive** -- Defensive guard in _fan_shares_inter_row_channel: the edge is a fan branch into an entry port, which always resolves to a section, so the None arm is unreachable in practice. | +| 1680 | `if port.side is PortSide.TOP:` | `->L1681`, `->L1686` | | +| 2166 | `if len(_INTER_SECTION_RULE_BY_FAMILY) != len(_INDEXED_INTER_SECTION_RULES):` | `->L2167`, `->L2170` | | +| 2172 | `if _INTER_SECTION_RULES is _INDEXED_INTER_SECTION_RULES:` | `->L2174` | | +| 2197 | `if not is_inter:` | `->L2198` | | +| 2208 | `if family_id is not RouteFamilyId.STANDARD_L_SHAPE:` | `->L2209` | | +| 2222 | `route is None` | `->L2223` | | +| 2223 | `and membership is not None` | `->L2224`, `->L2233` | | +| 2224 | `and membership.assignment is not None` | `->L2225`, `->L2233` | | +| 2225 | `and membership.plan.disposition is ExitTurnDisposition.PLANNED` | `->L2227`, `->L2233` | | +| 2233 | `if route is not None:` | `->L2238` | | +| 2381 | `if planned_transition is not None:` | `->L2382` | | +| 2646 | `if query is None:` | `->L2647` | **defensive** -- Production routing runs after layout publishes FanPlanExecution. The None arm preserves the ordinary dispatcher for direct or incomplete routing contexts. | +| 2671 | `if ctx.station_offsets:` | `->L2673` | **defensive** -- _run_pass_c_guards always populates ctx.station_offsets before route_edges, and RAILS mode returns earlier; the empty-offsets arm never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2778 | `if query is None:` | `->L2779` | | +| 2782 | `if binding is None:` | `->L2783` | | +| 2787 | `plan.disposition is not FanPlanDisposition.PLANNED` | `->L2793` | | +| 2788 | `or emission.emitter is not FanRouteEmitter.BOTTOM_EXIT_RIGHT_LANDINGS` | `->L2793` | | +| 2789 | `or plan.fork_station_id != edge.source` | `->L2793` | **defensive** -- FanPlan membership validation requires every emission source to equal fork_station_id. This operand catches a frozen-plan/source mismatch before materialisation. | +| 2790 | `or target_port is None` | `->L2793` | **defensive** -- The planner creates this emitter only for a resolved landing port. A missing target port therefore indicates graph or plan drift after publication. | +| 2791 | `or target_port.side is not PortSide.RIGHT` | `->L2793` | **defensive** -- BOTTOM_EXIT_RIGHT_LANDINGS is selected only when every target is a RIGHT entry. The non-RIGHT arm is a defensive check that the frozen target still satisfies that contract. | +| 2802 | `if port is None or port.side is not PortSide.RIGHT or section is None:` | `->L2803` | **defensive** -- The planned emitter is created only from existing RIGHT landing ports with owning sections. This guard rejects stale or corrupted port references during materialisation. | +| 2806 | `if section not in landing_sections:` | `->L2797` | **defensive** -- The planner admits this emitter only when branches land in distinct sections, so the duplicate-section arm cannot occur for a valid frozen emission. It remains a materialisation-time drift check. | +| 2808 | `if len(landing_sections) != len(plan.branches):` | `->L2809` | **defensive** -- The planner emits this route family only when every branch lands in one distinct RIGHT-entry section. A count mismatch can arise only if the frozen emission and plan have drifted apart. | +| 2811 | `if plan.entry_runway is None:` | `->L2812` | **defensive** -- Every PLANNED FanPlan is validated with both runways before publication. The None arm is a runtime drift check for an incomplete plan object. | +| 2815 | `if not source_lines or edge.line_id not in source_lines:` | `->L2816` | **defensive** -- The planned emitter requires a non-empty offset_line_order whose line set exactly matches its emissions. The missing-line arm protects routing from a malformed frozen plan. | +| 2842 | `if route is None:` | `->L2843` | | +| 2878 | `if tgt_port is None or tgt_port.side != PortSide.LEFT:` | `->L2879` | | +| 2881 | `if ep_col is None or ep_row is None:` | `->L2882` | | +| 2884 | `if corner_x is None:` | `->L2885` | | +| 3007 | `if _would_route_around_section_below(other, ctx):` | `->L3008` | **defensive** -- Competing-sibling detection in _has_around_section_sibling, routed through the dispatch table (#813). A non-bypass sibling feeding the same merge junction sits in an adjacent column or a gap with no same-row intervening section, so it dispatches to an L-shape, not the around-below loop; corpus instrumentation across the fixtures confirms the arm is never taken. Defensive. | +| 3119 | `if shape.right_entry_wrap:` | `->L3120` | | +| 3162 | `if trunk_shape.around_below:` | `->L3163` | | +| 3171 | `if flank_xs:` | `->L3150` | | +| 3379 | `and corridor.bypass_band_y >= base_y - COORD_TOLERANCE` | `->L3388` | **needs-review** -- Safety fallback: the shared bypass band is the deepest sibling's bypass_bottom_y, so a branch's own base_y never exceeds it; the arm that would decline a shallower shared band (guarding a predicate mismatch) is unexercised in the corpus. | +| 3451 | `if trunk_v_up_pull_away:` | `->L3460` | **needs-review** -- Reachable only via a defective render (merge-junction tangle); see #721. | +| 3490 | `this_xmin - gap_left >= SECTION_ROUTE_CLEARANCE` | `->L3491`, `->L3494` | | +| 3491 | `and gap_right - around_xmax >= SECTION_ROUTE_CLEARANCE` | `->L3493`, `->L3494` | | +| 3566 | `if src_sec is not None and src_sec.bbox_w > 0:` | `->L3599` | **defensive** -- A bypass source section always resolves and has bbox_w>0 (the parser never emits an empty section); the None/zero-width arm never fires. | +| 3600 | `if _h_segment_crosses_other_section(graph, sx, gap1_x, emitted_source_y, exclude):` | `->L3601` | | +| 3611 | `if not _h_segment_crosses_other_section(` | `->L3614`, `->L3633` | | +| 3765 | `if facts.src_col is None or facts.tgt_col is None:` | `->L3766` | | +| 3770 | `if shape.around_below:` | `->L3771` | | +| 3775 | `or _bypass_route_kind(facts) is not _BypassRoute.U_BYPASS` | `->L3777` | | +| 3866 | `if ctx.exit_turns is None:` | `->L3867` | | +| 3870 | `membership is None` | `->L3873` | | +| 3875 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L3876` | | +| 3939 | `membership is None` | `->L3942` | | +| 3947 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L3948` | **defensive** -- _seat_bypass_descent reads the segment at BYPASS_DESCENT_RANK, which the U-bypass builder emits as the descent between the two gap corners and is vertical by construction. The non-vertical bail guards a route whose point order does not match the shape the caller just built. | +| 3986 | `if route is not None:` | `->L3988` | | +| 4014 | `if route is None:` | `->L4015` | **defensive** -- Defensive in _declare_trunk: _route_inter_section only reaches the declaration after a matched rule (or the L-shape fall-through) produced a route, so the None guard never fires on the corpus; it mirrors _declare_channel's same guard for a handler that returns None. | +| 4042 | `if route is None:` | `->L4043` | **defensive** -- _declare_channel deliberately accepts RoutedPath \| None so declining builders can be ignored. Production callers currently pass concrete routes; the None no-op remains a defensive helper contract. | +| 4089 | `if route is None:` | `->L4090` | **defensive** -- _declare_placed_channels accepts RoutedPath \| None to match _declare_trunk and _declare_channel, but all three call sites have already established the route (an assert on the left-entry corridor, a RuntimeError when a planned fan emitter omits a member, and a locally built U-bypass), so the None no-op is a helper contract nothing exercises. | +| 4262 | `if ctx.exit_turns is None:` | `->L4263` | **needs-review** -- _perp_entry_turn_is_planned answers False for the pre-plan context the exit-turn planner probes emitters with; ctx.exit_turns is bound only for emission. That context does reach these emitters -- the same guard in _seat_bypass_descent takes its None arm on packed_cell_right_exit_left_entry_wrap -- but no corpus probe reaches the TOP/BOTTOM-entry L-shape records this predicate feeds. | +| 4288 | `if not any(` | `->L4293` | | +| 4354 | `while cur is not None and cur not in seen:` | `->L4370` | | +| 4363 | `if cur in graph.junctions:` | `->L4369` | | +| 4450 | `if (` | `->L4456` | | +| 4639 | `if geometry is None:` | `->L4640` | | +| 4738 | `if abs(tgt.x - src.x) <= ctx.curve_radius:` | `->L4739` | | +| 4751 | `if _h_segment_crosses_other_section(graph, src.x, final_x, src.y, exclude):` | `->L4752` | **defensive** -- Traverse-first clearance test in _top_entry_side_fan_traverse_clears (#1349). The below-side fan branch only reaches this gate when its junction also feeds an aligned straight drop; the corpus fan sits a clear row above its target, so the source-Y traverse never crosses another section and the fall-back-to-staircase arm is not exercised. Defensive. | +| 4879 | `if abs(tgt.x - src.x) > COORD_TOLERANCE or src.id not in ctx.graph.junctions:` | `->L4880` | | +| 4914 | `if feeder is not None:` | `->L4919` | | +| 5091 | `if len(points) < 3:` | `->L5092` | | +| 5143 | `if not section_ids:` | `->L5144` | | +| 5223 | `if mid_y is None:` | `->L5240` | | +| 5255 | `channel_y is None` | `->L5285` | | +| 5257 | `and src_sec is not None` | `->L5285` | **defensive** -- Inter-row exit mid-Y clearance bump (the n>1 multi-line branch). When more than one line shares the exit the source section always resolves, so the `src_sec is None` short-circuit past the clearance bump is never taken. | +| 5258 | `and tgt_sec is not None` | `->L5285` | **defensive** -- Companion to src_sec in the same n>1 mid-Y clearance branch: the target section always resolves there, so the `tgt_sec is None` short-circuit past the bump is never taken. | +| 5287 | `if exit_side is not None:` | `->L5289` | | +| 5289 | `elif abs(dx) > ctx.curve_radius:` | `->L5290`, `->L5292` | | +| 5293 | `if src.id in ctx.graph.junctions:` | `->L5294`, `->L5306` | **needs-review** -- Reachable only via a defective render (LR->TB TOP-entry routing); see #720. | +| 5294 | `for je in ctx.graph.edges_to(src.id):` | `->L5295`, `->L5306` | | +| 5296 | `if js.is_port:` | `->L5294`, `->L5297` | | +| 5297 | `if abs(js.x - src.x) <= COORD_TOLERANCE:` | `->L5298`, `->L5300` | | +| 5312 | `if exit_side is not None and not straight_drop:` | `->L5322` | | +| 5360 | `if not straight_drop:` | `->L5364` | **needs-review** -- A top-entry fan branch fed straight from directly above the junction (straight_drop) keeps its lead-in column at the source X rather than the shared fan pivot; the corpus's fan branches all carry horizontal travel, so the straight-drop arm is unexercised. | +| 5362 | `if lead is Direction.R:` | `->L5364` | **needs-review** -- A top-entry fan branch leading LEFT out of the junction skips the _v1_corner_x right-edge clearance bump; the corpus's fan branches all lead right, so the left-lead arm is unexercised. | +| 5389 | `if straight_drop:` | `->L5390` | | +| 5466 | `if ctx.exit_turns is None:` | `->L5467` | | +| 5551 | `if src_sec is None or tgt_sec is None or src_sec.grid_row >= tgt_sec.grid_row:` | `->L5554` | | +| 5721 | `if src_section and src_section.bbox_w > 0:` | `->L5722` | | +| 5742 | `if tgt_sec is None:` | `->L5743` | | +| 5813 | `if src_col is None:` | `->L5814` | | +| 6048 | `if src_sec is not None:` | `->L6079` | **defensive** -- Defensive guard in the fanned entry-wrap source-clearance lift: a fan-out junction always resolves to its source section, so the None arm is unreachable in practice. | +| 6085 | `if tgt_col is not None:` | `->L6090` | **defensive** -- tgt_col from _resolve_section_col on a valid LEFT entry port is always non-None (sections get grid_col>=0 after auto-layout). | +| 6087 | `if shared_vx is not None:` | `->L6090` | **defensive** -- _fan_left_entry_descent_x returns None only when col_left<=0; col_left_edge for the target's own column is always >0. | +| 6213 | `if entry_side is PortSide.LEFT:` | `->L6216` | | +| 6281 | `if entry_port is None:` | `->L6282` | **defensive** -- _route_around_section_below is always called with a non-None entry_port (both dispatch sites pass a checked station). | +| 6292 | `if trunk_src is None or trunk_src == edge.source:` | `->L6294` | **needs-review** -- Reachable only via a defective render (merge-junction tangle); see #721. | +| 6345 | `if col_left <= 0.0:` | `->L6346` | **defensive** -- col_left_edge's 0.0 default only fires for a column with no sections; the target's own column always holds its section. | +| 6382 | `if entry_port is None:` | `->L6383` | **defensive** -- Every caller of _corridor_is_viable passes a non-None entry_port. | +| 6389 | `if src_row is None or ep_row is None or src_col is None or ep_col is None:` | `->L6390` | **defensive** -- _resolve_section_colrow returns (None,None) only for a station with no section; valid entry ports always have a section with non-negative grid coords. | +| 6477 | `if fan is not None and corridor is not None and corridor.band_y is not None:` | `->L6481` | **needs-review** -- Corridor-feeder shared inter-row band gate: the corpus's corridor feeders belong to fans whose corridor carries a band_y, so the short-circuit past it (no corridor or bypass-only) is unexercised; it falls to the elif fan-is-not-None global-band branch. | +| 6481 | `elif fan is not None:` | `->L6485`, `->L6490` | **needs-review** -- Corridor-feeder fallback for a fan whose junction earned no corridor (its in-column gap below does not fit the bundle); the corpus's fans all earn a corridor, so this global-band branch is unexercised. | +| 6490 | `elif gap_bottom > gap_top:` | `->L6491`, `->L6495` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6500 | `if fan is None and gap_bottom > gap_top:` | `->L6501` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6514 | `if fan is not None and ep_col is not None:` | `->L6516` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6516 | `if vx is None:` | `->L6517` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6618 | `if ep_section and ep_section.bbox_w > 0:` | `->L6621` | **defensive** -- entry_port.section_id is always set and the section has bbox_w>0 after layout; the else arm never fires. | +| 6915 | `for claim in ctx.convergences.prior_channel_claims_for_edge(edge):` | `->L6916` | | +| 6916 | `if claim.line_id != edge.line_id or claim.owner_source == edge.source:` | `->L6917`, `->L6918` | | +| 6918 | `if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):` | `->L6919`, `->L6920` | | +| 6920 | `if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:` | `->L6915`, `->L6921` | | +| 6999 | `if not (` | `->L7009` | | +| 7017 | `if (` | `->L6987`, `->L7025` | | +| 7037 | `if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):` | `->L7038` | | +| 7170 | `if gap_bottom <= gap_top:` | `->L7171` | **defensive** -- The row-gap enforcer keeps stacked rows separated, so the inter-row band above a target row (row_bottom_edge(tgt_row-1) up to row_top_edge(tgt_row)) has positive height whenever a RIGHT entry is fed from a higher row; the degenerate-band arm guards an abutting-rows layout placement never produces. | +| 7174 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7175` | **defensive** -- Band-fit test in _right_entry_gap_above_is_clear (#889), reached only when the cross-row RIGHT-entry drop-in is not clear (the exotic blocked-descent case above). The corpus always takes the drop-in, so neither arm of the gap-above fallback is exercised. Defensive. | +| 7253 | `if not normalize_exempt:` | `->L7257` | | +| 7330 | `if gap_bottom <= gap_top:` | `->L7331` | | +| 7332 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7333` | | +| 7343 | `if f.v_segment_crosses_other_section(vx, gy, tgt.y):` | `->L7344` | | +| 7438 | `if source is None or source.bbox_w <= 0:` | `->L7439` | | +| 7443 | `if source.id not in members:` | `->L7444` | | +| 7449 | `if other.bbox_x <= source_right + COORD_TOLERANCE:` | `->L7450` | | +| 7451 | `if cellmate_left is None or other.bbox_x < cellmate_left:` | `->L7445` | | +| 7453 | `if cellmate_left is None:` | `->L7454` | | +| 7491 | `if band0_bottom <= band0_top or not _inter_row_band_fits(band0_top, band0_bottom):` | `->L7492` | | +| 7493 | `if band1_bottom <= band1_top or not _inter_row_band_fits(band1_top, band1_bottom):` | `->L7494` | | +| 7495 | `if band1_top <= band0_bottom + COORD_TOLERANCE:` | `->L7496` | | +| 7511 | `if f.v_segment_crosses_other_section(corner_x, band0_y, band1_y, exclude):` | `->L7512` | | +| 7568 | `if geom is None:` | `->L7569` | | +| 7571 | `if f.v_segment_crosses_other_section(geom.lead_x, src.y, geom.band0_y):` | `->L7572` | | +| 7573 | `if f.h_segment_crosses_other_section(geom.lead_x, geom.corner_x, geom.band0_y):` | `->L7574` | | +| 7575 | `if f.h_segment_crosses_other_section(geom.corner_x, geom.vx, geom.band1_y):` | `->L7576` | | ## `intra_handlers.py` @@ -669,297 +886,357 @@ Gates with an un-exercised arm: ## `member_geometry.py` -92/126 gates fully exercised. +100/165 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 206 | `if run_direction is None or turn_direction is None:` | `->L207` | | -| 208 | `if (run_direction in {Direction.R, Direction.L}) == (` | `->L211` | | -| 220 | `if not candidate_ranks:` | `->L221` | | -| 345 | `if not section_ids:` | `->L346` | | -| 379 | `if any(` | `->L383` | | -| 447 | `if ctx.exit_turns is None or not pending_plan_ids:` | `->L448` | | -| 613 | `if source is None or source is route:` | `->L615` | | -| 642 | `if route is None:` | `->L643` | | -| 678 | `if edge is None or family_id is None:` | `->L679` | | -| 849 | `if route.exit_lane_transition_plan_id is not None:` | `->L850` | | -| 851 | `if route.fan_plan_id is not None or route.fan_route_emitter is not None:` | `->L852` | | -| 853 | `if convergence_owns_segment_boundary(route, segment_rank):` | `->L854` | | -| 913 | `if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:` | `->L914` | **needs-review** -- _candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable. | -| 1053 | `if abs(channel.x - target) <= COORD_TOLERANCE:` | `->L1055` | **needs-review** -- _align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored. | -| 1078 | `if coordinate is not None:` | `->L1033`, `->L1079` | | -| 1150 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1151` | | -| 1244 | `if item.candidate.route.line_id in claim.line_ids and (` | `->L1247` | **needs-review** -- feasible()'s same-line-carrier clause, which forbids a candidate delta that would split a carrier the bundle already shares with a claim. No fixture reaches the feasibility search with a same-line source-compatible claim in range: _align_same_line_channels seats such a member on its claim before the bundle allocation runs. Reachable, wants a fixture. | -| 1247 | `if abs(coordinate - claim.coordinate) > COORD_TOLERANCE:` | `->L1248`, `->L1249` | **needs-review** -- The rejection inside feasible()'s same-line-carrier clause. Unreached for the same reason as its enclosing gate `if item.candidate.route.line_id in claim.line_ids and (:::#1`. Reachable. | -| 1387 | `if radii is not None:` | `->L1392` | | -| 1388 | `if 0 <= rank - 1 < len(radii):` | `->L1390` | | -| 1390 | `if rank < len(radii):` | `->L1392` | | -| 1422 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1412` | | -| 1490 | `if movable_run:` | `->L1491` | | -| 1540 | `if context is not None:` | `->L1542` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | -| 1543 | `if key in ctx.skip_edges:` | `->L1544` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | -| 1546 | `if edge is None:` | `->L1547` | | -| 1550 | `if family_id is None:` | `->L1551` | | -| 1573 | `if system_id not in failures:` | `->L1577` | | -| 1772 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L1773` | | -| 1778 | `if actual != (channel.start, channel.end):` | `->L1779` | | -| 1795 | `if radius_index >= len(radii):` | `->L1796` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | -| 1802 | `if offsets is None or bases is None or offset is None or base is None:` | `->L1803` | | -| 1807 | `if radius_index + 2 >= len(route.points):` | `->L1808` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | -| 1823 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L1824` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | +| 262 | `for fixed_plan, fixed_channel, interior, endpoint in fixed_claims:` | `->L263` | | +| 263 | `if (` | `->L270`, `->L271` | | +| 278 | `if (` | `->L284`, `->L285` | | +| 312 | `for (` | `->L319`, `->L332` | | +| 319 | `if (` | `->L323`, `->L324` | | +| 330 | `if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:` | `->L312`, `->L331` | | +| 335 | `before is None` | `->L336`, `->L340` | | +| 336 | `or after is None` | `->L337`, `->L340` | | +| 337 | `or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L338`, `->L340` | | +| 338 | `or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L340`, `->L341` | | +| 386 | `if not any(` | `->L391` | | +| 425 | `if candidate_x is None:` | `->L426`, `->L427` | | +| 430 | `if not moved_ranks:` | `->L433` | | +| 451 | `if not changed:` | `->L453` | | +| 473 | `if run_direction is None or turn_direction is None:` | `->L474` | | +| 475 | `if (run_direction in {Direction.R, Direction.L}) == (` | `->L478` | | +| 487 | `if not candidate_ranks:` | `->L488` | | +| 612 | `if not section_ids:` | `->L613` | | +| 714 | `if ctx.exit_turns is None or not pending_plan_ids:` | `->L715` | | +| 869 | `if edge_key not in reseated:` | `->L871` | | +| 872 | `if membership is None or membership.assignment is None:` | `->L873`, `->L874` | | +| 879 | `if allocated is None:` | `->L880`, `->L881` | | +| 922 | `if source is None or source is route:` | `->L924` | | +| 950 | `if opening is not None:` | `->L951` | | +| 952 | `if target.section_id is None:` | `->L953`, `->L956` | | +| 978 | `if route is None:` | `->L979`, `->L980` | | +| 988 | `if membership is not None:` | `->L989`, `->L991` | | +| 1001 | `if route is None:` | `->L1002` | | +| 1037 | `if edge is None or family_id is None:` | `->L1038` | | +| 1115 | `if channel is None:` | `->L1116` | | +| 1118 | `if claim in channel_claims:` | `->L1119` | | +| 1132 | `if shared_opening_tail is not None:` | `->L1133` | | +| 1139 | `if claim not in channel_claims:` | `->L1140`, `->L1141` | | +| 1186 | `if not opening_size or opening_size + 1 >= len(route.points):` | `->L1188` | | +| 1190 | `if direction not in (Direction.U, Direction.D):` | `->L1191`, `->L1192` | | +| 1193 | `if target.section_id is None:` | `->L1194`, `->L1195` | | +| 1278 | `if route.exit_lane_transition_plan_id is not None:` | `->L1279` | | +| 1280 | `if route.fan_plan_id is not None or route.fan_route_emitter is not None:` | `->L1281` | | +| 1282 | `if convergence_owns_segment_boundary(route, segment_rank):` | `->L1283` | | +| 1342 | `if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:` | `->L1343` | **needs-review** -- _candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable. | +| 1442 | `if _planner_owns_channel(` | `->L1445` | | +| 1445 | `if not ctx.validate_final_route_frames:` | `->L1446`, `->L1447` | | +| 1451 | `if not _candidate_clears_runway(` | `->L1454` | | +| 1454 | `if not ctx.validate_final_route_frames:` | `->L1455`, `->L1456` | | +| 1492 | `if abs(channel.x - target) <= COORD_TOLERANCE:` | `->L1494` | **needs-review** -- _align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored. | +| 1517 | `if coordinate is not None:` | `->L1472`, `->L1518` | | +| 1589 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1590` | | +| 1846 | `if radii is not None:` | `->L1851` | | +| 1847 | `if 0 <= rank - 1 < len(radii):` | `->L1849` | | +| 1849 | `if rank < len(radii):` | `->L1851` | | +| 1874 | `if rank < len(route.exit_shared_opening_points):` | `->L1875` | | +| 1888 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1871` | | +| 1956 | `if movable_run:` | `->L1957` | | +| 2007 | `if context is not None:` | `->L2022` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | +| 2023 | `if key in ctx.skip_edges:` | `->L2024` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | +| 2026 | `if edge is None:` | `->L2027` | | +| 2030 | `if family_id is None:` | `->L2031` | | +| 2053 | `if system_id not in failures:` | `->L2057` | | +| 2337 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2338` | | +| 2343 | `if actual != (channel.start, channel.end):` | `->L2344` | | +| 2347 | `if (` | `->L2352` | | +| 2366 | `if radius_index >= len(radii):` | `->L2367` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | +| 2373 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2374` | | +| 2378 | `if radius_index + 2 >= len(route.points):` | `->L2379` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | +| 2394 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2395` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | ## `normalize.py` -340/469 gates fully exercised. +382/539 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 187 | `if s.bbox_w <= 0:` | `->L188` | **defensive** -- Degenerate-bbox guard in _section_intrudes: a laid-out section always has bbox_w > 0; the skip arm guards a zero/negative-width section the layout never produces. | -| 234 | `if mid - half < gap_left - COORD_TOLERANCE:` | `->L235` | | -| 236 | `if mid + half > gap_right + COORD_TOLERANCE:` | `->L237` | | -| 416 | `if abs(overlap) > COORD_TOLERANCE:` | `->L417` | **defensive** -- The symmetric-divergence recognizer rejects opposite vertical legs whose spans overlap instead of meeting at one endpoint. Corpus candidates reaching this helper are same-source branch openings and therefore meet at the shared turn Y; the overlapping arm is a defensive rejection for malformed or independently routed channels. | -| 422 | `if channel.idx == 0:` | `->L423` | **defensive** -- A declared gap channel participating in a same-source divergence follows the branch's horizontal opening and therefore cannot be the route's first segment. The zero-index arm defensively rejects a vertical-first route shape. | -| 427 | `if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:` | `->L428` | **defensive** -- The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint. | -| 433 | `if a_trunk is None or b_trunk is None:` | `->L434` | **defensive** -- A symmetric divergence is considered only for declared gap channels produced by a same-source branch opening. Those channels follow a horizontal opening run, so both opening trunks resolve; the missing-trunk arm defensively rejects a different route shape. | -| 479 | `if any(abs(base - bases[0]) > COORD_TOLERANCE for base in bases[1:]):` | `->L480` | | -| 508 | `if not chans:` | `->L509` | | -| 538 | `if clearance <= 0:` | `->L539` | | -| 554 | `if any(` | `->L559` | | -| 619 | `for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):` | `->L622` | | -| 739 | `if gap_right <= gap_left:` | `->L740` | | -| 781 | `if ctx.exit_turns is None:` | `->L782` | | -| 799 | `if route.curve_radii is None or membership is None:` | `->L800` | **defensive** -- A validation-eligible settled exit-turn route is emitted from its member plan with explicit radii and membership in the same exit-turn execution. Missing either reports incomplete engine ownership; both arms are exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 804 | `if planned_offsets is None:` | `->L805` | | -| 810 | `if allocated_offsets is None or allocated_bases is None:` | `->L811` | **defensive** -- A validation-eligible settled exit turn must publish both offset and base tuples before emission. Missing either is an engine-contract violation exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 827 | `dx is None` | `->L832` | **defensive** -- Every validation-eligible settled exit-turn corner must retain its allocated or planned offset. An absent value is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 828 | `or base_radius is None` | `->L832` | **defensive** -- Every validation-eligible exit-turn corner must retain the base radius paired with its offset. An absent base is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 829 | `or not 0 <= radius_index < len(route.curve_radii)` | `->L832` | **defensive** -- A settled channel rank identifies the two flanking radii on its emitted route. An out-of-range index is malformed ownership metadata, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 830 | `or radius_index + 2 >= len(route.points)` | `->L832` | **defensive** -- A settled exit-turn radius must retain all three defining points. Production routes have point-derived radius counts; the point-index case in test_gap_plan_radius_validator_rejects_incomplete_ownership exercises the attributed failure. | -| 840 | `if (` | `->L844` | **defensive** -- The settled exit-turn radius mismatch raises only after construction or a later pass changes a recorded planned corner without updating its concentric inputs. Valid production derives both values together; test_gap_plan_validator_rejects_a_changed_corner_radius exercises both failure flanks. | -| 875 | `if gap_right <= gap_left:` | `->L876` | | -| 1101 | `if (` | `->L1111` | | -| 1114 | `if not reference_fits(reference_radius):` | `->L1115` | | -| 1125 | `if not reference_fits(lower):` | `->L1126`, `->L1127` | | -| 1128 | `for _ in range(32):` | `->L1129`, `->L1134` | | -| 1130 | `if reference_fits(midpoint):` | `->L1131`, `->L1133` | | -| 1192 | `go is not None` | `->L1198` | | -| 1193 | `and gt is not None` | `->L1198` | | -| 1230 | `if len(pts) < 2:` | `->L1231` | | -| 1246 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1247` | | -| 1323 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1324` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | -| 1334 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1335` | | -| 1335 | `if ctx.validate_final_route_frames:` | `->L1336`, `->L1337` | | -| 1381 | `if channel is None:` | `->L1382` | | -| 1454 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1455` | | -| 1460 | `if ref is not None:` | `->L1461` | | -| 1527 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1528` | | -| 1531 | `if movable_channels:` | `->L1527`, `->L1532` | | -| 1569 | `if not downs or not ups:` | `->L1571` | | -| 1572 | `for descent in downs:` | `->L-1538`, `->L1573` | | -| 1574 | `if col in moved:` | `->L1575`, `->L1576` | | -| 1577 | `for up in ups:` | `->L1578`, `->L1587` | | -| 1578 | `if up.route.line_id != descent.route.line_id:` | `->L1579`, `->L1580` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | -| 1580 | `if abs(up.x - descent.x) > radius:` | `->L1581`, `->L1582` | | -| 1583 | `if overlap <= COORD_TOLERANCE:` | `->L1584`, `->L1585` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | -| 1587 | `if target_x is None:` | `->L1588`, `->L1589` | | -| 1590 | `for ch in downs:` | `->L1572`, `->L1591` | | -| 1591 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1590`, `->L1592` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | -| 1618 | `if k == desc.idx + 1:` | `->L1617` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | -| 1670 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1671` | | -| 1682 | `if any(` | `->L1692` | | -| 1712 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1716` | | -| 1713 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1716` | | -| 1714 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1716` | | -| 1733 | `if source_col is None:` | `->L1734` | | -| 1749 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1750` | | -| 1766 | `if not sibling_xs:` | `->L1767` | | -| 1769 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L1770` | | -| 1772 | `if _section_intrudes(` | `->L1779` | | -| 1816 | `if len(turns) != 1:` | `->L1817` | **defensive** -- In _bundle_divergent_distinct_traverses: every fan in the corpus turns its traverses the same way, so the mixed-direction skip is never taken. Defensive. | -| 1837 | `if any(` | `->L1841` | | -| 1904 | `for _ in range(max(1, len(buckets))):` | `->L-1850` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 1922 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L1924` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | -| 1927 | `for _step in range(64):` | `->L1928`, `->L1935` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | -| 1931 | `if resolved < common:` | `->L1932`, `->L1934` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | -| 1942 | `if not changed:` | `->L1904` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 1977 | `if _planner_owns_channel(ch):` | `->L1978` | | -| 2046 | `if opposing_bundle is not None and {` | `->L2049` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | -| 2056 | `if any(` | `->L2065` | **defensive** -- Compatibility convergence may not move a planner-owned final channel or reseat a channel through a foreign section. Complete direct-port opposing tails are unplanned and placement reserves their target band; the true arm therefore defends broken ownership or obstruction state. test_planner_owned_opposing_group_is_left_atomic and test_obstructed_opposing_group_is_left_atomic exercise both rejection reasons. | -| 2137 | `if any(` | `->L2142` | | -| 2178 | `if has_planned_channel and any(` | `->L2183` | | -| 2238 | `if any(` | `->L2242` | | -| 2243 | `if not crossing:` | `->L2250` | | -| 2253 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2254`, `->L2258` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | -| 2258 | `for r, k, _y in crossing:` | `->L2215`, `->L2259` | | -| 2380 | `if rp.curve_radii is None:` | `->L2381` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | -| 2588 | `if route.curve_radii is None:` | `->L2589` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | -| 2655 | `if port is not None and port.is_entry:` | `->L2657` | | -| 2679 | `if (` | `->L2686` | | -| 2698 | `if any(` | `->L2702` | | -| 2823 | `if not verticals:` | `->L2824` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | -| 2828 | `if k + 2 != len(pts) - 1 or y_hi - y_lo < radius:` | `->L2829` | **defensive** -- Shape guard in _land_feeder_on_run. _route_merge_branch emits exactly four waypoints, while an alternate attached-source construction or a malformed hand-built route can add points; the second half rejects a descent too short to re-form its corner. Neither shape occurs in the corpus (#1597). | -| 2839 | `if rp.curve_radii is not None:` | `->L2841` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | -| 3059 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3053` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | -| 3089 | `if feats is None:` | `->L3090` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | -| 3259 | `if len(trunks) < 2:` | `->L3260`, `->L3261` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | -| 3263 | `for grp in groups:` | `->L3264`, `->L3282` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | -| 3264 | `if len({id(t.route) for t in grp}) < 2:` | `->L3265`, `->L3266` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | -| 3266 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3267`, `->L3268` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | -| 3268 | `for sign in (1, -1):` | `->L3263`, `->L3269` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | -| 3271 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3272`, `->L3273` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | -| 3280 | `if best < cur:` | `->L3268`, `->L3281` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | -| 3447 | `if band is not None:` | `->L3453` | **defensive** -- Same-line dogleg: the band-found arm is exercised by dogleg_exempt_sameline; the band-is-None arm is defensive (both colliding trunks route through _center_inter_row_channel, so the trunk Y always resolves to a gap band). | -| 3468 | `if down_ok and up_ok and (cross_down is None) != (cross_up is None):` | `->L3470` | **defensive** -- Same-line dogleg side selection. The crossing-decided true arm (->1297, pick the side whose riser does not pierce the exempt run) is exercised by dogleg_exempt_sameline. The false fall-through (->1298) needs either an out-of-band side or a crossing-equal tie, neither reachable by a clean topology: the reachable dogleg regime rigidly fixes the inter-row band so down_room/up_room stay >= min_sep=6 (observed 14/26 across the corpus and every constructed variant; perturbing the grid loses the regime), and the only realizable tie is both-cross (a crossing-free tie needs degenerate zero-length exempt risers) which co-occurs with section-crossing / dogleg-crosses-exempt guard failures and is never a shippable render. | -| 3470 | `elif down_ok and (not up_ok or prefer_down):` | `->L3471`, `->L3472` | **defensive** -- Same-line dogleg tie / out-of-band fallback, reached only after the L1296 if is false, which a clean topology never produces (see that gate): the true arm (->1299, lean down on a tie) needs a crossing-free tie that requires degenerate risers, and the false arm (->1300) needs down_ok False, which the regime's fixed inter-row band (down_room >= min_sep) never yields. | -| 3472 | `elif up_ok:` | `->L3473`, `->L3475` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | -| 3500 | `if band is not None:` | `->L3505` | **defensive** -- Distinct-line dogleg: the band-found arm (->1327) is exercised by dogleg_exempt_distinct (#702). The remaining band-is-None arm (->1331) is defensive: a trunk reaching this second loop collides with an exempt bypass obstacle that lives in an inter-row gap, so _inter_row_gap_band(ctx, t.y) always resolves to a band - the same mechanism already accepted for the sibling 'if band is not None:::#1'. | -| 3515 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L3517` | **defensive** -- Distinct-line dogleg side selection. The crossing-decided true arm (->1342) is exercised by dogleg_exempt_distinct. The false fall-through (->1343) needs a crossing-equal tie; a crossing-free tie requires degenerate zero-length exempt risers and the only realizable tie is both-cross, which trips _guard_no_dogleg_crosses_exempt_trunk plus the section-crossing guards and is never a shippable render. | -| 3517 | `elif below_ok and (not above_ok or prefer_below):` | `->L3518`, `->L3519` | **defensive** -- Distinct-line dogleg tie fallback, reached only after L1341 is false (a tie), which a clean topology never produces (see that gate). The true arm (->1344, lean below) would fire on such a tie; the false arm (->1345) is unreachable because below_ok always holds and prefer_below is always true (t.y == hit.y in this regime). | -| 3519 | `elif above_ok:` | `->L3520`, `->L3522` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | -| 3537 | `held[0] - COORD_TOLERANCE < coord < held[1] + COORD_TOLERANCE` | `->L3538` | **defensive** -- Held-axis bracket in _run_enters_section, the section-intrusion veto's first test. No corpus separation target lands within a section's extent on the held axis, so the inside arm never fires; the same defensive reasoning as the veto it serves. | -| 3538 | `and span[0] < crossed[1]` | `->L3530`, `->L3539` | **defensive** -- Crossed-axis overlap test in _run_enters_section, reached only for a target already bracketed on the held axis. No corpus separation target is, so this operand's short-circuit arm never fires. | -| 3539 | `and crossed[0] < span[1]` | `->L3530`, `->L3541` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 3648 | `if i in relocated:` | `->L3649` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 3659 | `if not primary and any(` | `->L3663` | | -| 3672 | `if any(` | `->L3676` | | -| 3677 | `if any(` | `->L3683` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 3694 | `if target is None:` | `->L3695` | | -| 3738 | `if sg[0].sign_x != t.sign_x:` | `->L3739` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 3769 | `if rp.curve_radii is None:` | `->L3770` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 3781 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L3783` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 3783 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-3748` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 3842 | `if down is None or len(up.points) < 2:` | `->L3843` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 3888 | `if len(targets) != 1:` | `->L3889` | | -| 3898 | `if col is None:` | `->L3899` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 3939 | `if not 0 <= far < len(pts):` | `->L3940` | | -| 3942 | `if abs(dx) > COORD_TOLERANCE:` | `->L3936` | | -| 3944 | `if not votes:` | `->L3945` | | -| 4048 | `if ca != cb:` | `->L4050` | | -| 4050 | `if rep_x[a] != rep_x[b]:` | `->L4051`, `->L4052` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4080 | `if rp.curve_radii is None:` | `->L4081` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 4083 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L4084` | | -| 4107 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-4057` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4137 | `if anchor_section_id is not None and anchor_side is not None:` | `->L4139` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 4192 | `elif right_ok:` | `->L4195` | | -| 4241 | `if s.bbox_w <= 0:` | `->L4242` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 4629 | `if not blockers:` | `->L4630` | | +| 192 | `if s.bbox_w <= 0:` | `->L193` | **defensive** -- Degenerate-bbox guard in _section_intrudes: a laid-out section always has bbox_w > 0; the skip arm guards a zero/negative-width section the layout never produces. | +| 239 | `if mid - half < gap_left - COORD_TOLERANCE:` | `->L240` | | +| 241 | `if mid + half > gap_right + COORD_TOLERANCE:` | `->L242` | | +| 421 | `if abs(overlap) > COORD_TOLERANCE:` | `->L422` | **defensive** -- The symmetric-divergence recognizer rejects opposite vertical legs whose spans overlap instead of meeting at one endpoint. Corpus candidates reaching this helper are same-source branch openings and therefore meet at the shared turn Y; the overlapping arm is a defensive rejection for malformed or independently routed channels. | +| 427 | `if channel.idx == 0:` | `->L428` | **defensive** -- A declared gap channel participating in a same-source divergence follows the branch's horizontal opening and therefore cannot be the route's first segment. The zero-index arm defensively rejects a vertical-first route shape. | +| 432 | `if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:` | `->L433` | **defensive** -- The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint. | +| 438 | `if a_trunk is None or b_trunk is None:` | `->L439` | **defensive** -- A symmetric divergence is considered only for declared gap channels produced by a same-source branch opening. Those channels follow a horizontal opening run, so both opening trunks resolve; the missing-trunk arm defensively rejects a different route shape. | +| 513 | `if not chans:` | `->L514` | | +| 624 | `for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):` | `->L627` | | +| 657 | `if ctx.exit_turns is None:` | `->L658` | | +| 662 | `assignment is None` | `->L667` | | +| 664 | `or assignment.turn_direction is None` | `->L667` | | +| 665 | `or len(route.points) < 3` | `->L667` | | +| 793 | `if gap_right <= gap_left:` | `->L794` | | +| 835 | `if ctx.exit_turns is None:` | `->L836` | | +| 853 | `if route.curve_radii is None or membership is None:` | `->L854` | **defensive** -- A validation-eligible settled exit-turn route is emitted from its member plan with explicit radii and membership in the same exit-turn execution. Missing either reports incomplete engine ownership; both arms are exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 858 | `if planned_offsets is None:` | `->L859` | | +| 864 | `if allocated_offsets is None or allocated_bases is None:` | `->L865` | **defensive** -- A validation-eligible settled exit turn must publish both offset and base tuples before emission. Missing either is an engine-contract violation exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 881 | `dx is None` | `->L886` | **defensive** -- Every validation-eligible settled exit-turn corner must retain its allocated or planned offset. An absent value is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 882 | `or base_radius is None` | `->L886` | **defensive** -- Every validation-eligible exit-turn corner must retain the base radius paired with its offset. An absent base is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 883 | `or not 0 <= radius_index < len(route.curve_radii)` | `->L886` | **defensive** -- A settled channel rank identifies the two flanking radii on its emitted route. An out-of-range index is malformed ownership metadata, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 884 | `or radius_index + 2 >= len(route.points)` | `->L886` | **defensive** -- A settled exit-turn radius must retain all three defining points. Production routes have point-derived radius counts; the point-index case in test_gap_plan_radius_validator_rejects_incomplete_ownership exercises the attributed failure. | +| 894 | `if (` | `->L898` | **defensive** -- The settled exit-turn radius mismatch raises only after construction or a later pass changes a recorded planned corner without updating its concentric inputs. Valid production derives both values together; test_gap_plan_validator_rejects_a_changed_corner_radius exercises both failure flanks. | +| 939 | `if gap_right <= gap_left:` | `->L940` | | +| 1052 | `if rank > 0:` | `->L1057` | | +| 1055 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1057` | | +| 1057 | `if rank + 2 < len(route.points):` | `->L1062` | | +| 1060 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1062` | | +| 1316 | `if not reference_fits(lower):` | `->L1317` | | +| 1382 | `go is not None` | `->L1388` | | +| 1383 | `and gt is not None` | `->L1388` | | +| 1420 | `if len(pts) < 2:` | `->L1421` | | +| 1436 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1437` | | +| 1513 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1514` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | +| 1533 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1534` | | +| 1537 | `if None not in convergence_plan_ids and len(convergence_plan_ids) == 1:` | `->L1538`, `->L1539` | | +| 1539 | `if ctx.validate_final_route_frames:` | `->L1540`, `->L1549` | | +| 1595 | `if channel is None:` | `->L1596` | | +| 1668 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1669` | | +| 1674 | `if ref is not None:` | `->L1675` | | +| 1745 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1746` | | +| 1749 | `if movable_channels:` | `->L1745`, `->L1750` | | +| 1787 | `if not downs or not ups:` | `->L1789` | | +| 1790 | `for descent in downs:` | `->L-1756`, `->L1791` | | +| 1792 | `if col in moved:` | `->L1793`, `->L1794` | | +| 1795 | `for up in ups:` | `->L1796`, `->L1805` | | +| 1796 | `if up.route.line_id != descent.route.line_id:` | `->L1797`, `->L1798` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | +| 1798 | `if abs(up.x - descent.x) > radius:` | `->L1799`, `->L1800` | | +| 1801 | `if overlap <= COORD_TOLERANCE:` | `->L1802`, `->L1803` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | +| 1805 | `if target_x is None:` | `->L1806`, `->L1807` | | +| 1808 | `for ch in downs:` | `->L1790`, `->L1809` | | +| 1809 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1808`, `->L1810` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | +| 1836 | `if k == desc.idx + 1:` | `->L1835` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | +| 1888 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1889` | | +| 1900 | `if any(` | `->L1910` | | +| 1930 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1934` | | +| 1931 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1934` | | +| 1932 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1934` | | +| 1951 | `if source_col is None:` | `->L1952` | | +| 1967 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1968` | | +| 1984 | `if not sibling_xs:` | `->L1985` | | +| 1987 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L1988` | | +| 1990 | `if _section_intrudes(` | `->L1997` | | +| 2034 | `if len(turns) != 1:` | `->L2035` | **defensive** -- In _bundle_divergent_distinct_traverses: every fan in the corpus turns its traverses the same way, so the mixed-direction skip is never taken. Defensive. | +| 2055 | `if any(` | `->L2059` | | +| 2122 | `for _ in range(max(1, len(buckets))):` | `->L-2068` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2140 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2142` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | +| 2145 | `for _step in range(64):` | `->L2146`, `->L2153` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | +| 2149 | `if resolved < common:` | `->L2150`, `->L2152` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | +| 2160 | `if not changed:` | `->L2122` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2198 | `if ch.route.convergence_plan_id is not None:` | `->L2199` | | +| 2208 | `if _planner_owns_channel(ch) and (` | `->L2211` | | +| 2282 | `if opposing_bundle is not None and {` | `->L2285` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | +| 2293 | `if any(` | `->L2303` | | +| 2410 | `if any(` | `->L2416` | | +| 2453 | `if has_immovable_planned_channel and any(` | `->L2458` | | +| 2513 | `if any(` | `->L2517` | | +| 2518 | `if not crossing:` | `->L2525` | | +| 2528 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2529`, `->L2533` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | +| 2533 | `for r, k, _y in crossing:` | `->L2490`, `->L2534` | | +| 2601 | `if ctx.convergences is None:` | `->L2602` | | +| 2609 | `or entry is None` | `->L2615` | | +| 2610 | `or port is None` | `->L2615` | | +| 2611 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2615` | | +| 2613 | `or ch.y_hi - ch.y_lo > 2 * ctx.offset_step + COORD_TOLERANCE` | `->L2616` | | +| 2638 | `if boundary_dogleg_stitch(rp, ch, target):` | `->L2639` | | +| 2684 | `if rp.curve_radii is None:` | `->L2685` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | +| 2895 | `if route.curve_radii is None:` | `->L2896` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | +| 3023 | `if (` | `->L3030` | | +| 3042 | `if any(` | `->L3046` | | +| 3140 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3161` | | +| 3157 | `if crosses_source_interior(trunk_ch.x) and not crosses_source_interior(` | `->L3160` | | +| 3189 | `if not verticals:` | `->L3190` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | +| 3205 | `if rp.curve_radii is not None:` | `->L3207` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | +| 3425 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3419` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | +| 3455 | `if feats is None:` | `->L3456` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | +| 3592 | `if (` | `->L3596` | | +| 3604 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3605` | | +| 3652 | `if len(trunks) < 2:` | `->L3653`, `->L3654` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | +| 3656 | `for grp in groups:` | `->L3657`, `->L3675` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | +| 3657 | `if len({id(t.route) for t in grp}) < 2:` | `->L3658`, `->L3659` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | +| 3659 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3660`, `->L3661` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | +| 3661 | `for sign in (1, -1):` | `->L3656`, `->L3662` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | +| 3664 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3665`, `->L3666` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | +| 3673 | `if best < cur:` | `->L3661`, `->L3674` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | +| 3743 | `if (` | `->L3748` | | +| 3805 | `band is not None` | `->L3810` | | +| 3806 | `and band.boundary is None` | `->L3807` | | +| 3807 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3809`, `->L3810` | | +| 3926 | `elif down_ok and (not up_ok or prefer_down):` | `->L3928` | **defensive** -- Same-line dogleg tie / out-of-band fallback, reached only after the L1296 if is false, which a clean topology never produces (see that gate): the true arm (->1299, lean down on a tie) needs a crossing-free tie that requires degenerate risers, and the false arm (->1300) needs down_ok False, which the regime's fixed inter-row band (down_room >= min_sep) never yields. | +| 3928 | `elif up_ok:` | `->L3929`, `->L3931` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | +| 3933 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L3934` | | +| 3987 | `if not leaves_grid:` | `->L3988` | | +| 3988 | `if (cross_below is not None and cross_above is not None) or not (` | `->L3991`, `->L3993` | | +| 3991 | `if reconcile_owned_corridor:` | `->L3992`, `->L3993` | | +| 3994 | `if cross_below is not None and cross_above is not None:` | `->L3998` | | +| 3995 | `if reconcile_owned_corridor:` | `->L3997` | | +| 3999 | `if reconcile_owned_corridor:` | `->L4000` | | +| 4003 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4005` | **defensive** -- Distinct-line dogleg side selection. The crossing-decided true arm (->1342) is exercised by dogleg_exempt_distinct. The false fall-through (->1343) needs a crossing-equal tie; a crossing-free tie requires degenerate zero-length exempt risers and the only realizable tie is both-cross, which trips _guard_no_dogleg_crosses_exempt_trunk plus the section-crossing guards and is never a shippable render. | +| 4005 | `elif below_ok and (not above_ok or prefer_below):` | `->L4006`, `->L4007` | **defensive** -- Distinct-line dogleg tie fallback, reached only after L1341 is false (a tie), which a clean topology never produces (see that gate). The true arm (->1344, lean below) would fire on such a tie; the false arm (->1345) is unreachable because below_ok always holds and prefer_below is always true (t.y == hit.y in this regime). | +| 4007 | `elif above_ok:` | `->L4008`, `->L4010` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | +| 4010 | `if reconcile_owned_corridor:` | `->L4011`, `->L4012` | | +| 4033 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4035` | | +| 4081 | `if trunk_segments_cross(` | `->L4087` | | +| 4120 | `while joined := [` | `->L4129`, `->L4131` | | +| 4148 | `if band is None:` | `->L4149`, `->L4150` | | +| 4154 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4158`, `->L4159` | | +| 4159 | `for item in group:` | `->L4160`, `->L4161` | | +| 4179 | `and span[0] < crossed[1]` | `->L4180` | **defensive** -- Crossed-axis overlap test in _run_enters_section, reached only for a target already bracketed on the held axis. No corpus separation target is, so this operand's short-circuit arm never fires. | +| 4180 | `and crossed[0] < span[1]` | `->L4171`, `->L4182` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4290 | `if i in relocated:` | `->L4291` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4304 | `if not primary and fixed_obstacles:` | `->L4305` | | +| 4310 | `not secondary_may_yield_at_shared_source` | `->L4311`, `->L4314` | | +| 4311 | `or not lane_sources & fixed_sources` | `->L4312`, `->L4314` | | +| 4312 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4314`, `->L4315` | | +| 4331 | `if any(` | `->L4335` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4336 | `if any(` | `->L4342` | | +| 4368 | `if target is None:` | `->L4369` | | +| 4412 | `if sg[0].sign_x != t.sign_x:` | `->L4413` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4448 | `and base_in is not None` | `->L4462` | | +| 4449 | `and base_out is not None` | `->L4462` | | +| 4465 | `if rp.curve_radii is None:` | `->L4466` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4477 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4479` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4479 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4422` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4538 | `if down is None or len(up.points) < 2:` | `->L4539` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4592 | `if len(targets) != 1:` | `->L4593` | | +| 4602 | `if col is None:` | `->L4603` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 4643 | `if not 0 <= far < len(pts):` | `->L4644` | | +| 4646 | `if abs(dx) > COORD_TOLERANCE:` | `->L4640` | | +| 4648 | `if not votes:` | `->L4649` | | +| 4754 | `if rep_x[a] != rep_x[b]:` | `->L4756` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4784 | `if rp.curve_radii is None:` | `->L4785` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 4787 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L4788` | | +| 4811 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-4761` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4841 | `if anchor_section_id is not None and anchor_side is not None:` | `->L4843` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 4896 | `elif right_ok:` | `->L4899` | | +| 4945 | `if s.bbox_w <= 0:` | `->L4946` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | ## `offsets.py` -417/521 gates fully exercised. +437/542 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 142 | `if edge.target in inbound:` | `->L144` | **defensive** -- inbound is pre-built as {sid: set() for sid in graph.stations}, so every station id in the graph is a key. All edge endpoints are guaranteed to be in graph.stations after parsing (regular nodes via register_station, ports via add_port->add_station, junctions via add_station), so edge.target is always found in inbound and the False branch (54->56) is never taken. | -| 144 | `if edge.source in outbound:` | `->L141` | **defensive** -- outbound is pre-built from graph.stations keys identically to inbound. All edge sources are registered stations by construction (regular nodes, ports, junctions), so edge.source is always found in outbound and the False branch (56->53) is never taken. | -| 406 | `if ordered != expected:` | `->L407` | **defensive** -- The raise arm of _assert_sections_anchored_on_trunk, a backstop on the postcondition of _reindex_section_local: an independent section (no flat-frame neighbour) always lands on the contiguous top-anchored levels 0,step,...,(m-1)*step by construction, so the mismatch arm never fires across the corpus. It guards against a future change that stops re-anchoring such a section. | -| 449 | `while cur is not None and cur not in seen:` | `->L458` | | -| 484 | `if slot is None:` | `->L485` | | -| 497 | `if neighbour is None:` | `->L498` | | -| 621 | `if reverse:` | `->L622` | **needs-review** -- Reachable only on a reconvergence section that is also a serpentine fold, where the fold corner crosses lines mid-curve and the return-row bundle sits one offset too low (#705). Exercise with a clean fixture once #705 is fixed. | -| 652 | `if section is None:` | `->L653` | | -| 676 | `if not all(lid in feeder_off for lid in continuing):` | `->L677` | | -| 684 | `if lid in new_off:` | `->L683` | | -| 706 | `if section is not None:` | `->L704` | | -| 708 | `if len(set(feeder_row.values())) < 2:` | `->L709` | | -| 728 | `if entry_port is None:` | `->L729` | | -| 771 | `if seam is None:` | `->L772` | | -| 793 | `if not all(lid in feeder_off for lid in primary_lines):` | `->L794` | | -| 842 | `if new_order is None:` | `->L845` | | -| 923 | `if cur in seen:` | `->L924` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 933 | `if not src.is_port and src.section_id == sec_id:` | `->L926` | | -| 1019 | `if not target_id:` | `->L1020` | **defensive** -- An exit-only line at station sid is identified by being present in station_lines(sid) but absent from ctx.inbound[sid]. station_lines() returns lines appearing in any edge whose source or target is sid. For a line to be exit-only at sid, it must appear in at least one outbound edge from sid; otherwise it would not appear in station_lines(sid) at all. If an outbound edge exists, outbound_target[(sid, lid)] is always set, so target_id is never None when execution reaches L422. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1022 | `if not target_st:` | `->L1023` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | -| 1039 | `for other in lines:` | `->L1047` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | -| 1047 | `if swap_lid is None:` | `->L1048` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | -| 1092 | `if (cur_sid, cur_lid) in visited:` | `->L1093` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1104 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1105` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1111 | `if len(nbr_lines) < 2:` | `->L1115` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1115 | `for other_lid in nbr_lines:` | `->L1097`, `->L1116` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1116 | `if other_lid == cur_lid:` | `->L1117`, `->L1118` | **defensive** -- Inside _propagate_offset_swap's same-Y collision-swap block: across the corpus no same-Y adjacent multi-line neighbour needs an offset swap, so the loop body (incl. this self-skip guard) never executes (0/128). Defensive guard for a same-Y multi-line offset collision absent from current topologies. Reclassified defensive (#762). | -| 1118 | `if (` | `->L1115`, `->L1122` | **defensive** -- Inside _propagate_offset_swap's same-Y collision-swap block: across the corpus no same-Y adjacent multi-line neighbour needs an offset swap, so the inner collision check never executes (0/128). Defensive guard for a same-Y multi-line offset collision absent from current topologies. Reclassified defensive (#762). | -| 1126 | `if max_steps <= 0:` | `->L1127` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | -| 1154 | `if lid not in seen:` | `->L1151` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1281 | `for _ in range(len(graph.stations) + 1):` | `->L1298` | | -| 1285 | `if edge is None:` | `->L1286` | | -| 1288 | `if nxt in seen:` | `->L1289` | | -| 1372 | `if not src_st.is_port:` | `->L1370` | | -| 1376 | `if internal_offs:` | `->L1364` | **defensive** -- Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state. | -| 1406 | `if not src_st.is_port:` | `->L1404` | | -| 1537 | `if anchor_feeders:` | `->L1540` | | -| 1559 | `if port_off is not None:` | `->L1557` | **defensive** -- _compute_base_offsets runs before junction propagation and creates an offset for every station-line pair. A divergence exit port and its junction carry the same connector lines, so this lookup always succeeds; the missing-offset arm protects an incomplete synthetic context. | -| 1586 | `if port_st is None:` | `->L1587` | | -| 1661 | `if not src.is_port:` | `->L1662` | | -| 1818 | `if not src.is_port:` | `->L1819` | | -| 1845 | `if paired_off is not None:` | `->L1843` | **defensive** -- _compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable. | -| 1851 | `if not tgt_st.is_port:` | `->L1849` | | -| 1899 | `if set(inherited) != set(graph.station_lines(port_id)):` | `->L1900` | **defensive** -- _inherit_level_convergence_entry_offsets skips a convergence entry port when the lines it inherits from its immediate feeders do not cover every line the port carries. A convergence entry's lines are, by construction, exactly the union of its inbound edges' lines, and each inbound edge supplies that line's feeder offset, so the inherited set always equals the port's line set and the mismatch arm is never taken. Defensive against a port line with no inbound edge (a malformed graph). | -| 1936 | `if entry.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L1937` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam. | -| 1944 | `if len(shared) < 2:` | `->L1945` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken. | -| 2033 | `if edge.line_id not in lines:` | `->L2034` | | -| 2090 | `for edge in graph.edges_from(port_id):` | `->L2099` | | -| 2094 | `if tgt.is_port:` | `->L2095` | | -| 2099 | `if target_id is None:` | `->L2100` | | -| 2184 | `if not sec_stations:` | `->L2185` | **defensive** -- The parser calls _remove_empty_sections() (resolve.py:26) which deletes any section whose station_ids list is empty before port creation. Ports are only added to station_ids during _create_port_stations() (resolve.py:527), which runs AFTER _remove_empty_sections(). Therefore every section in graph.sections at layout time has at least one non-port station; sec_stations is never empty. | -| 2229 | `if station.section_id is not None:` | `->L2221` | | -| 2238 | `if port.section_id is None:` | `->L2239` | | -| 2251 | `if section is None:` | `->L2252` | | -| 2289 | `if tgt_port is None or not tgt_port.is_entry:` | `->L2290` | | -| 2291 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2292` | | -| 2293 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2294` | | -| 2298 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2299` | | -| 2301 | `if off is not None:` | `->L2287` | | -| 2321 | `if not any(` | `->L2324` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | -| 2339 | `if len(seed_lines) < 2:` | `->L2340` | | -| 2345 | `if not fixed_here or not movable:` | `->L2346` | | -| 2364 | `for lid in above:` | `->L2365` | | -| 2368 | `if not any(` | `->L2371` | | -| 2446 | `for _ in range(len(seed_lines)):` | `->L2487` | | -| 2460 | `if not changed_lids:` | `->L2461` | | -| 2479 | `if pending is None:` | `->L2480` | | -| 2608 | `if max_steps <= 0:` | `->L2609` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | -| 2622 | `if sec_a is None and id_a in graph.ports:` | `->L2623` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2624 | `if sec_b is None and id_b in graph.ports:` | `->L2625` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2687 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2688` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2698 | `if all(` | `->L2703` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. The already-aligned arm (->1190) is exercised by the corpus; the body arm (->1192) is the reachable-but-defective one. | -| 2705 | `for edge in graph.edges_to(jid):` | `->L2706`, `->L2717` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | -| 2707 | `if src_port and not src_port.is_entry:` | `->L2708`, `->L2714` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | -| 2708 | `if feeding_exit is None:` | `->L2709`, `->L2710` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | -| 2710 | `elif feeding_exit != edge.source:` | `->L2705`, `->L2711` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2717 | `for lid, off in desired.items():` | `->L2718`, `->L2719` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | -| 2719 | `if single_exit and feeding_exit is not None:` | `->L2658`, `->L2720` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | -| 2721 | `if exit_lines == set(j_lines):` | `->L2658`, `->L2722` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | -| 2723 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2658`, `->L2724` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 2724 | `for lid, off in desired.items():` | `->L2658`, `->L2725` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | -| 2847 | `if pred is None:` | `->L2848` | | -| 2943 | `if target_col is None:` | `->L2944` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | -| 2952 | `if source_col is None:` | `->L2953` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3236 | `for _ in range(max_iterations):` | `->L-3208` | **defensive** -- _reconcile_horizontal_offsets iterates at most 10 times and breaks early when no change occurs. The arc L1338->(-1310) represents loop exhaustion without early-break (all 10 iterations consumed). On any valid parsed graph, the reconciliation converges in at most a handful of iterations because each iteration resolves at least one edge conflict or reaches a fixed point. The 10-iteration ceiling is a backstop against hypothetical oscillating graphs; normal topologies stabilize in 1-3 passes. | -| 3268 | `if src_n <= tgt_n:` | `->L3271` | **defensive** -- _reconcile_horizontal_offsets' bundle-shift fallback moves the edge endpoint with fewer lines. The else arm (src_n > tgt_n: move the target) was exercised in the corpus solely by the fan-port drag where a many-line entry/exit port is the edge source and a same-Y trunk-row station with fewer lines is the target (funcprofiler_upstream's humann3 at its entry port). The #1480 exit-port ordering fix (merge_trunk_lines in _compute_exit_port_offsets) rides the trunk-continuation merge line out on the trunk slot, so that port and station now agree and the edge no longer needs shifting. The remaining corpus shift (sr_qc into its input exit port) has the fewer-line station as the source, taking the src_n <= tgt_n true arm. The else arm stays defensive for a same-Y bundle conflict whose higher-line-count endpoint is the edge source. | -| 3324 | `if ctx.topology is None:` | `->L3325` | | -| 3348 | `if key not in ctx.offsets:` | `->L3349` | | -| 3397 | `len(levels) != len(continuing)` | `->L3400` | | -| 3460 | `if line_id not in assignments:` | `->L3461` | | -| 3465 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3467` | | -| 3487 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3512` | | -| 3498 | `if line_id not in assignments:` | `->L3499` | | -| 3505 | `if set(frames).difference(next_frames):` | `->L3506` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3540 | `if any(` | `->L3544` | | -| 3546 | `if local_offset is None or not (` | `->L3552` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3571 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3572` | | -| 3582 | `if gap is not None:` | `->L3583` | | -| 3613 | `if any(` | `->L3619` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3637 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3638` | | -| 3809 | `if dag is not None:` | `->L3817` | | -| 3812 | `for succ in dag.successors.get(stack.pop(), ()):` | `->L3813` | | -| 3813 | `if succ not in affected:` | `->L3812`, `->L3814` | | -| 3822 | `if not offs:` | `->L3823` | | +| 143 | `if edge.target in inbound:` | `->L145` | **defensive** -- inbound is pre-built as {sid: set() for sid in graph.stations}, so every station id in the graph is a key. All edge endpoints are guaranteed to be in graph.stations after parsing (regular nodes via register_station, ports via add_port->add_station, junctions via add_station), so edge.target is always found in inbound and the False branch (54->56) is never taken. | +| 145 | `if edge.source in outbound:` | `->L142` | **defensive** -- outbound is pre-built from graph.stations keys identically to inbound. All edge sources are registered stations by construction (regular nodes, ports, junctions), so edge.source is always found in outbound and the False branch (56->53) is never taken. | +| 409 | `if ordered != expected:` | `->L410` | **defensive** -- The raise arm of _assert_sections_anchored_on_trunk, a backstop on the postcondition of _reindex_section_local: an independent section (no flat-frame neighbour) always lands on the contiguous top-anchored levels 0,step,...,(m-1)*step by construction, so the mismatch arm never fires across the corpus. It guards against a future change that stops re-anchoring such a section. | +| 452 | `while cur is not None and cur not in seen:` | `->L461` | | +| 487 | `if slot is None:` | `->L488` | | +| 500 | `if neighbour is None:` | `->L501` | | +| 624 | `if reverse:` | `->L625` | **needs-review** -- Reachable only on a reconvergence section that is also a serpentine fold, where the fold corner crosses lines mid-curve and the return-row bundle sits one offset too low (#705). Exercise with a clean fixture once #705 is fixed. | +| 655 | `if section is None:` | `->L656` | | +| 679 | `if not all(lid in feeder_off for lid in continuing):` | `->L680` | | +| 687 | `if lid in new_off:` | `->L686` | | +| 709 | `if section is not None:` | `->L707` | | +| 711 | `if len(set(feeder_row.values())) < 2:` | `->L712` | | +| 731 | `if entry_port is None:` | `->L732` | | +| 774 | `if seam is None:` | `->L775` | | +| 796 | `if not all(lid in feeder_off for lid in primary_lines):` | `->L797` | | +| 845 | `if new_order is None:` | `->L848` | | +| 957 | `if cur in seen:` | `->L958` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 967 | `if not src.is_port and src.section_id == sec_id:` | `->L960` | | +| 1053 | `if not target_id:` | `->L1054` | **defensive** -- An exit-only line at station sid is identified by being present in station_lines(sid) but absent from ctx.inbound[sid]. station_lines() returns lines appearing in any edge whose source or target is sid. For a line to be exit-only at sid, it must appear in at least one outbound edge from sid; otherwise it would not appear in station_lines(sid) at all. If an outbound edge exists, outbound_target[(sid, lid)] is always set, so target_id is never None when execution reaches L422. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1056 | `if not target_st:` | `->L1057` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | +| 1073 | `for other in lines:` | `->L1081` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | +| 1081 | `if swap_lid is None:` | `->L1082` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | +| 1126 | `if (cur_sid, cur_lid) in visited:` | `->L1127` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1138 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1139` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1145 | `if len(nbr_lines) < 2:` | `->L1149` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1149 | `for other_lid in nbr_lines:` | `->L1131`, `->L1150` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1150 | `if other_lid == cur_lid:` | `->L1151`, `->L1152` | **defensive** -- Inside _propagate_offset_swap's same-Y collision-swap block: across the corpus no same-Y adjacent multi-line neighbour needs an offset swap, so the loop body (incl. this self-skip guard) never executes (0/128). Defensive guard for a same-Y multi-line offset collision absent from current topologies. Reclassified defensive (#762). | +| 1152 | `if (` | `->L1149`, `->L1156` | **defensive** -- Inside _propagate_offset_swap's same-Y collision-swap block: across the corpus no same-Y adjacent multi-line neighbour needs an offset swap, so the inner collision check never executes (0/128). Defensive guard for a same-Y multi-line offset collision absent from current topologies. Reclassified defensive (#762). | +| 1160 | `if max_steps <= 0:` | `->L1161` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | +| 1188 | `if lid not in seen:` | `->L1185` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1414 | `for _ in range(len(graph.stations) + 1):` | `->L1431` | | +| 1418 | `if edge is None:` | `->L1419` | | +| 1421 | `if nxt in seen:` | `->L1422` | | +| 1506 | `if not src_st.is_port:` | `->L1504` | | +| 1510 | `if internal_offs:` | `->L1498` | **defensive** -- Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state. | +| 1522 | `if len(set(assigned.values())) < len(assigned):` | `->L1523` | | +| 1540 | `if not src_st.is_port:` | `->L1538` | | +| 1671 | `if anchor_feeders:` | `->L1674` | | +| 1693 | `if port_off is not None:` | `->L1691` | **defensive** -- _compute_base_offsets runs before junction propagation and creates an offset for every station-line pair. A divergence exit port and its junction carry the same connector lines, so this lookup always succeeds; the missing-offset arm protects an incomplete synthetic context. | +| 1720 | `if port_st is None:` | `->L1721` | | +| 1795 | `if not src.is_port:` | `->L1796` | | +| 1952 | `if not src.is_port:` | `->L1953` | | +| 1979 | `if paired_off is not None:` | `->L1977` | **defensive** -- _compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable. | +| 1985 | `if not tgt_st.is_port:` | `->L1983` | | +| 2033 | `if set(inherited) != set(graph.station_lines(port_id)):` | `->L2034` | **defensive** -- _inherit_level_convergence_entry_offsets skips a convergence entry port when the lines it inherits from its immediate feeders do not cover every line the port carries. A convergence entry's lines are, by construction, exactly the union of its inbound edges' lines, and each inbound edge supplies that line's feeder offset, so the inherited set always equals the port's line set and the mismatch arm is never taken. Defensive against a port line with no inbound edge (a malformed graph). | +| 2070 | `if entry.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2071` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam. | +| 2078 | `if len(shared) < 2:` | `->L2079` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken. | +| 2167 | `if edge.line_id not in lines:` | `->L2168` | | +| 2224 | `for edge in graph.edges_from(port_id):` | `->L2233` | | +| 2228 | `if tgt.is_port:` | `->L2229` | | +| 2233 | `if target_id is None:` | `->L2234` | | +| 2320 | `if not sec_stations:` | `->L2321` | **defensive** -- The parser calls _remove_empty_sections() (resolve.py:26) which deletes any section whose station_ids list is empty before port creation. Ports are only added to station_ids during _create_port_stations() (resolve.py:527), which runs AFTER _remove_empty_sections(). Therefore every section in graph.sections at layout time has at least one non-port station; sec_stations is never empty. | +| 2365 | `if station.section_id is not None:` | `->L2357` | | +| 2374 | `if port.section_id is None:` | `->L2375` | | +| 2387 | `if section is None:` | `->L2388` | | +| 2425 | `if tgt_port is None or not tgt_port.is_entry:` | `->L2426` | | +| 2427 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2428` | | +| 2429 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2430` | | +| 2434 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2435` | | +| 2437 | `if off is not None:` | `->L2423` | | +| 2457 | `if not any(` | `->L2460` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | +| 2475 | `if len(seed_lines) < 2:` | `->L2476` | | +| 2481 | `if not fixed_here or not movable:` | `->L2482` | | +| 2500 | `for lid in above:` | `->L2501` | | +| 2504 | `if not any(` | `->L2507` | | +| 2582 | `for _ in range(len(seed_lines)):` | `->L2623` | | +| 2596 | `if not changed_lids:` | `->L2597` | | +| 2615 | `if pending is None:` | `->L2616` | | +| 2744 | `if max_steps <= 0:` | `->L2745` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | +| 2758 | `if sec_a is None and id_a in graph.ports:` | `->L2759` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2760 | `if sec_b is None and id_b in graph.ports:` | `->L2761` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2823 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2824` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2834 | `if all(` | `->L2839` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. The already-aligned arm (->1190) is exercised by the corpus; the body arm (->1192) is the reachable-but-defective one. | +| 2841 | `for edge in graph.edges_to(jid):` | `->L2842`, `->L2853` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | +| 2843 | `if src_port and not src_port.is_entry:` | `->L2844`, `->L2850` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | +| 2844 | `if feeding_exit is None:` | `->L2845`, `->L2846` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | +| 2846 | `elif feeding_exit != edge.source:` | `->L2841`, `->L2847` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2853 | `for lid, off in desired.items():` | `->L2854`, `->L2855` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | +| 2855 | `if single_exit and feeding_exit is not None:` | `->L2794`, `->L2856` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | +| 2857 | `if exit_lines == set(j_lines):` | `->L2794`, `->L2858` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | +| 2859 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2794`, `->L2860` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | +| 2860 | `for lid, off in desired.items():` | `->L2794`, `->L2861` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | +| 2983 | `if pred is None:` | `->L2984` | | +| 3079 | `if target_col is None:` | `->L3080` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | +| 3088 | `if source_col is None:` | `->L3089` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | +| 3372 | `for _ in range(max_iterations):` | `->L-3344` | **defensive** -- _reconcile_horizontal_offsets iterates at most 10 times and breaks early when no change occurs. The arc L1338->(-1310) represents loop exhaustion without early-break (all 10 iterations consumed). On any valid parsed graph, the reconciliation converges in at most a handful of iterations because each iteration resolves at least one edge conflict or reaches a fixed point. The 10-iteration ceiling is a backstop against hypothetical oscillating graphs; normal topologies stabilize in 1-3 passes. | +| 3404 | `if src_n <= tgt_n:` | `->L3407` | **defensive** -- _reconcile_horizontal_offsets' bundle-shift fallback moves the edge endpoint with fewer lines. The else arm (src_n > tgt_n: move the target) was exercised in the corpus solely by the fan-port drag where a many-line entry/exit port is the edge source and a same-Y trunk-row station with fewer lines is the target (funcprofiler_upstream's humann3 at its entry port). The #1480 exit-port ordering fix (merge_trunk_lines in _compute_exit_port_offsets) rides the trunk-continuation merge line out on the trunk slot, so that port and station now agree and the edge no longer needs shifting. The remaining corpus shift (sr_qc into its input exit port) has the fewer-line station as the source, taking the src_n <= tgt_n true arm. The else arm stays defensive for a same-Y bundle conflict whose higher-line-count endpoint is the edge source. | +| 3460 | `if ctx.topology is None:` | `->L3461` | | +| 3484 | `if key not in ctx.offsets:` | `->L3485` | | +| 3533 | `len(levels) != len(continuing)` | `->L3536` | | +| 3596 | `if line_id not in assignments:` | `->L3597` | | +| 3601 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3603` | | +| 3623 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3648` | | +| 3634 | `if line_id not in assignments:` | `->L3635` | | +| 3641 | `if set(frames).difference(next_frames):` | `->L3642` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3676 | `if any(` | `->L3680` | | +| 3682 | `if local_offset is None or not (` | `->L3688` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3707 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3708` | | +| 3718 | `if gap is not None:` | `->L3719` | | +| 3749 | `if any(` | `->L3755` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3773 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3774` | | +| 3949 | `if dag is not None:` | `->L3957` | | +| 3952 | `for succ in dag.successors.get(stack.pop(), ()):` | `->L3953` | | +| 3953 | `if succ not in affected:` | `->L3952`, `->L3954` | | +| 3968 | `if not offs:` | `->L3969` | | ## `orientation.py` @@ -979,23 +1256,30 @@ Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 122 | `if not feeders:` | `->L123` | **defensive** -- No-feeder guard in _perp_entry_crossing_x: the helper is called only from _route_perp_entry when a multi-line bundle shares the port with a per-line stagger, and a TOP/BOTTOM entry port in that case is always reached by a bundled inter-section feeder (dy!=0, so compute_bundle_info indexes it). The empty-feeders return-None arm is a contract guard, never taken across the corpus. | -| 165 | `if entry_port is None or not entry_port.is_entry:` | `->L166` | **defensive** -- _aligned_horizontal_drop_entry only fires for a TOP/BOTTOM exit on a horizontal-flow section (the rest of _perp_riser_lateral's callers are caught earlier). The return-None arm is taken when such an exit feeds a junction or several targets rather than one entry port; corpus instrumentation across every examples/ fixture finds no horizontal-flow perp exit feeding a non-single-entry, so the arm is never taken and the riser falls back to the perp reflection. | -| 172 | `if needs_perp_approach_fan(graph, entry_port.id):` | `->L173` | **defensive** -- _aligned_horizontal_drop_entry exempts a distinct-line approach fan, whose intra drop fans onto per-line channels (_perp_approach_fan_x) rather than the entry's single per-line offset. Reaching it needs a horizontal-flow perp exit dropping straight into a single approach-fan entry; corpus instrumentation finds none, so the arm is never taken and the riser keeps the perp reflection. | +| 124 | `if not feeders:` | `->L125` | **defensive** -- No-feeder guard in _perp_entry_crossing_x: the helper is called only from _route_perp_entry when a multi-line bundle shares the port with a per-line stagger, and a TOP/BOTTOM entry port in that case is always reached by a bundled inter-section feeder (dy!=0, so compute_bundle_info indexes it). The empty-feeders return-None arm is a contract guard, never taken across the corpus. | +| 171 | `if entry_port is None or not entry_port.is_entry:` | `->L172` | **defensive** -- _aligned_horizontal_drop_entry only fires for a TOP/BOTTOM exit on a horizontal-flow section (the rest of _perp_riser_lateral's callers are caught earlier). The return-None arm is taken when such an exit feeds a junction or several targets rather than one entry port; corpus instrumentation across every examples/ fixture finds no horizontal-flow perp exit feeding a non-single-entry, so the arm is never taken and the riser falls back to the perp reflection. | +| 178 | `if needs_perp_approach_fan(graph, entry_port.id):` | `->L179` | **defensive** -- _aligned_horizontal_drop_entry exempts a distinct-line approach fan, whose intra drop fans onto per-line channels (_perp_approach_fan_x) rather than the entry's single per-line offset. Reaching it needs a horizontal-flow perp exit dropping straight into a single approach-fan entry; corpus instrumentation finds none, so the arm is never taken and the riser keeps the perp reflection. | ## `planning.py` -5/10 gates fully exercised. +10/22 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 92 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L93` | | -| 97 | `if membership is None:` | `->L98` | | -| 100 | `if corner_offsets is None:` | `->L101` | | -| 198 | `if scaffold is None:` | `->L199` | | -| 298 | `if station_offsets is not None:` | `->L301` | | +| 94 | `if changed:` | `->L95` | | +| 96 | `if not replacements:` | `->L98` | | +| 121 | `elif abs(first[1] - second[1]) <= COORD_TOLERANCE:` | `->L124` | | +| 127 | `if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:` | `->L129` | | +| 130 | `for index, point in enumerate(points):` | `->L131`, `->L136` | | +| 131 | `if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:` | `->L132`, `->L133` | | +| 211 | `if settled is None or rank is None:` | `->L214` | | +| 214 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L215`, `->L218` | | +| 219 | `if membership is None:` | `->L220`, `->L221` | | +| 222 | `if corner_offsets is None:` | `->L223`, `->L226` | | +| 321 | `if scaffold is None:` | `->L322` | | +| 421 | `if station_offsets is not None:` | `->L424` | | ## `postprocess.py` @@ -1039,20 +1323,23 @@ Gates with an un-exercised arm: ## `reserved_bands.py` -14/22 gates fully exercised. +18/29 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 62 | `if self.hi < self.lo - COORD_TOLERANCE:` | `->L63` | **defensive** -- The invariant the router relies on: a band handed to _center_inter_row_channel or centre_inter_column_channel always holds a channel, so the narrow-gap fallback cannot be reached for a claimed corridor. build_reserved_corridors filters an empty intersection out before constructing a band, so the raise guards direct construction only. | -| 64 | `if self.allocation is not None and not math.isfinite(self.allocation):` | `->L65` | **defensive** -- Published allocations originate from finite observed route coordinates plus finite reservation translations. A non-finite value can only reach ReservedBand through malformed direct construction; the guard keeps invalid coordinates out of planner seating. | -| 186 | `if band is None or band.hi < band.lo - COORD_TOLERANCE:` | `->L187` | | -| 203 | `if boundary is None:` | `->L204` | **defensive** -- Optional-boundary convenience for callers carrying an unresolved grid index (_left_exit_wrap_over_top_y takes tgt_row: int \| None). Such a caller returns before it needs a band -- with no target row there is no gap above it to measure, so the wrap is rejected first -- leaving this arm a type-level accommodation no topology reaches. | -| 308 | `if lower > upper + COORD_TOLERANCE:` | `->L309` | | -| 411 | `if realised is None:` | `->L412` | **defensive** -- realise_reservation returns None only for a canvas-side corridor measured without canvas bounds; this loop has already narrowed to row-gap or column-gap claims, which always measure. The arm satisfies the optional return type rather than a reachable state. | -| 544 | `if band is None:` | `->L545` | **defensive** -- Every record for one edge and segment rank observes the same physical route segment. Disjoint clearance intervals for that key therefore require a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory corridor bounds. | -| 548 | `if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:` | `->L549` | **defensive** -- Repeated observations of one route-segment claim project the same declared gap coordinate through the same member translation. A wider allocation range therefore requires a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory exact allocations. | +| 63 | `if self.hi < self.lo - COORD_TOLERANCE:` | `->L64` | **defensive** -- The invariant the router relies on: a band handed to _center_inter_row_channel or centre_inter_column_channel always holds a channel, so the narrow-gap fallback cannot be reached for a claimed corridor. build_reserved_corridors filters an empty intersection out before constructing a band, so the raise guards direct construction only. | +| 65 | `if self.allocation is not None and not math.isfinite(self.allocation):` | `->L66` | **defensive** -- Published allocations originate from finite observed route coordinates plus finite reservation translations. A non-finite value can only reach ReservedBand through malformed direct construction; the guard keeps invalid coordinates out of planner seating. | +| 204 | `if boundary is None:` | `->L205` | **defensive** -- Optional-boundary convenience for callers carrying an unresolved grid index (_left_exit_wrap_over_top_y takes tgt_row: int \| None). Such a caller returns before it needs a band -- with no target row there is no gap above it to measure, so the wrap is rejected first -- leaving this arm a type-level accommodation no topology reaches. | +| 309 | `if lower > upper + COORD_TOLERANCE:` | `->L310` | | +| 354 | `if seat is None:` | `->L355` | | +| 412 | `if realised is None:` | `->L413` | **defensive** -- realise_reservation returns None only for a canvas-side corridor measured without canvas bounds; this loop has already narrowed to row-gap or column-gap claims, which always measure. The arm satisfies the optional return type rather than a reachable state. | +| 521 | `if target is None or not target.is_port or target.section_id is None:` | `->L522` | | +| 525 | `if start[0] != end[0] or final_start[1] != final_end[1]:` | `->L526` | | +| 555 | `if realised is None:` | `->L556` | | +| 612 | `if band is None:` | `->L613` | **defensive** -- Every record for one edge and segment rank observes the same physical route segment. Disjoint clearance intervals for that key therefore require a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory corridor bounds. | +| 616 | `if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:` | `->L617` | **defensive** -- Repeated observations of one route-segment claim project the same declared gap coordinate through the same member translation. A wider allocation range therefore requires a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory exact allocations. | ## `reversal.py` @@ -1123,7 +1410,7 @@ Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 156 | `if diag_end < diag_start:` | `->L157` | **defensive** -- Degenerate-collapse clamp for an ascending diagonal: fires only when the run is shorter than 2*MIN_STRAIGHT_EDGE (20px). Every caller feeds grid-placed station coordinates whose run-axis separation is at least one grid pitch (Y_SPACING=40 / X_SPACING=60); _route_entry_runway additionally pre-guards with `room < src_min + diagonal_run`. The 20px collapse threshold is never reached. | -| 162 | `if diag_end > diag_start:` | `->L163` | **defensive** -- Descending-run mirror of the ascending collapse clamp (#1 of `if diag_end < diag_start:`): fires only when \|run\| < 2*MIN_STRAIGHT_EDGE (20px), but connected diagonal endpoints are always >= one grid pitch (40/60px) apart on the run axis. Unreachable degenerate-geometry guard. | -| 372 | `if tgt_sec is not None and tgt_sec.direction not in ("TB", "BT"):` | `->L376` | **defensive** -- Perp-entry drop crossing-X override: the edge's target is always a sectioned station, so tgt_sec resolves and the `tgt_sec is None` short-circuit to the plain drop is never taken; the `direction in (TB, BT)` arm (a drop continuing into a vertical-flow trunk) and the horizontal-target arm are both exercised. | -| 374 | `if crossing_x is not None:` | `->L376` | **defensive** -- Pair of context.py::if not indices: - the helper returns None only when no bundled feeder reaches the port, but a horizontal-flow section taking a perpendicular entry is always fed by a bundled inter-section edge, so crossing_x resolves. The crossing_x-is-None fall-through is a defensive guard, never taken across the corpus. | +| 161 | `if diag_end < diag_start:` | `->L162` | **defensive** -- Degenerate-collapse clamp for an ascending diagonal: fires only when the run is shorter than 2*MIN_STRAIGHT_EDGE (20px). Every caller feeds grid-placed station coordinates whose run-axis separation is at least one grid pitch (Y_SPACING=40 / X_SPACING=60); _route_entry_runway additionally pre-guards with `room < src_min + diagonal_run`. The 20px collapse threshold is never reached. | +| 167 | `if diag_end > diag_start:` | `->L168` | **defensive** -- Descending-run mirror of the ascending collapse clamp (#1 of `if diag_end < diag_start:`): fires only when \|run\| < 2*MIN_STRAIGHT_EDGE (20px), but connected diagonal endpoints are always >= one grid pitch (40/60px) apart on the run axis. Unreachable degenerate-geometry guard. | +| 382 | `if tgt_sec is not None and tgt_sec.direction not in ("TB", "BT"):` | `->L386` | **defensive** -- Perp-entry drop crossing-X override: the edge's target is always a sectioned station, so tgt_sec resolves and the `tgt_sec is None` short-circuit to the plain drop is never taken; the `direction in (TB, BT)` arm (a drop continuing into a vertical-flow trunk) and the horizontal-target arm are both exercised. | +| 384 | `if crossing_x is not None:` | `->L386` | **defensive** -- Pair of context.py::if not indices: - the helper returns None only when no bundled feeder reaches the port, but a horizontal-flow section taking a perpendicular entry is always fed by a bundled inter-section edge, so crossing_x resolves. The crossing_x-is-None fall-through is a defensive guard, never taken across the corpus. | diff --git a/src/nf_metro/layout/envelope_settlement.py b/src/nf_metro/layout/envelope_settlement.py index ea02506a2..531e8c648 100644 --- a/src/nf_metro/layout/envelope_settlement.py +++ b/src/nf_metro/layout/envelope_settlement.py @@ -474,11 +474,32 @@ def _reservation_coordinate_translation( coordinates at or beyond the band's start move. """ section_ids = frozenset(translation.section_ids) + endpoint_section_by_group = { + group.id: group.section_id for group in plan.endpoint_groups + } + hidden_endpoint_sections = { + divergence.junction_id: endpoint_section_by_group[divergence.exit_group_id] + for divergence in plan.divergences + } + hidden_endpoint_sections.update( + { + convergence.junction_id: endpoint_section_by_group[ + convergence.entry_group_id + ] + for convergence in plan.convergences + } + ) fully_owned: list[EmissionMemberId] = [] crossing: list[EmissionMemberId] = [] for member in plan.members: - source_owned = member.source.section_id in section_ids - target_owned = member.target.section_id in section_ids + source_section = member.source.section_id or hidden_endpoint_sections.get( + member.source.station_id + ) + target_section = member.target.section_id or hidden_endpoint_sections.get( + member.target.station_id + ) + source_owned = source_section in section_ids + target_owned = target_section in section_ids if source_owned and target_owned: fully_owned.append(member.id) elif source_owned != target_owned: diff --git a/src/nf_metro/layout/phases/guards.py b/src/nf_metro/layout/phases/guards.py index 4dd4bc745..063cc5cd1 100644 --- a/src/nf_metro/layout/phases/guards.py +++ b/src/nf_metro/layout/phases/guards.py @@ -6152,6 +6152,11 @@ def _ensure_pass_c_inputs( observational even running mid-pipeline between Pass C stages. A routing failure leaves ``routes`` as ``None`` (it surfaces elsewhere); guards that need routes are then skipped. + + A final layout checkpoint can precede render-time envelope settlement. If + its observation requests boundary clearance, the route-dependent guards + defer to the render chokepoint, which receives the settled routes. Guards + without a route dependency continue to inspect the final layout state. """ from nf_metro.layout.routing import compute_station_offsets, observe_route_edges from nf_metro.layout.routing.core import route_edges_for_placement_guards @@ -6167,7 +6172,7 @@ def _ensure_pass_c_inputs( allow_convergence_clearance_requirements=True, ) routes = ( - route_edges_for_placement_guards(graph, offsets) + None if observation.plan.boundary_clearance_requirements else observation.routes ) diff --git a/src/nf_metro/layout/route_plan.py b/src/nf_metro/layout/route_plan.py index 2e571c164..eef8f5bd9 100644 --- a/src/nf_metro/layout/route_plan.py +++ b/src/nf_metro/layout/route_plan.py @@ -1978,6 +1978,7 @@ class ConvergenceLanding: bypass: bool long_haul: bool multiple_row: bool + bypass_tail_runway: float | None = None def __post_init__(self) -> None: if self.approach_axis is DemandAxis.BOTH: @@ -1989,6 +1990,12 @@ def __post_init__(self) -> None: raise ValueError("convergence feeder ranks must be non-negative") if self.minimum_runway <= 0 or not math.isfinite(self.minimum_runway): raise ValueError("convergence feeder runway must be positive and finite") + if self.bypass_tail_runway is not None and ( + self.bypass_tail_runway <= 0 or not math.isfinite(self.bypass_tail_runway) + ): + raise ValueError( + "convergence bypass tail runway must be positive and finite" + ) if self.opening_turn_coordinate is not None and not math.isfinite( self.opening_turn_coordinate ): diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index e8fc42f98..8e3876d4a 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -320,6 +320,8 @@ class RouteReservation: demand_ids: tuple[DemandId, ...] provenance: tuple[ReservationDecisionRef, ...] description: str + negative_lane_offset_envelope: float = 0.0 + positive_lane_offset_envelope: float = 0.0 def __post_init__(self) -> None: if not self.connector_ids: @@ -343,13 +345,17 @@ def __post_init__(self) -> None: or self.peer_clearance < 0 or self.negative_side_clearance < 0 or self.positive_side_clearance < 0 + or self.negative_lane_offset_envelope < 0 + or self.positive_lane_offset_envelope < 0 or self.minimum_width < 0 ): raise ValueError("reservation widths and clearances cannot be negative") expected = ( self.negative_side_clearance + + self.negative_lane_offset_envelope + self.bundle_width + self.peer_width + + self.positive_lane_offset_envelope + self.positive_side_clearance ) if abs(self.minimum_width - expected) > COORD_TOLERANCE: @@ -636,6 +642,8 @@ class _ObservedClaim: travel_start: float travel_end: float coordinate: float + negative_lane_offset_envelope: float + positive_lane_offset_envelope: float @property def line_id(self) -> str: @@ -1478,6 +1486,20 @@ def _route_launch_anchor( return None +def _lane_offset_envelope( + orientation: CorridorOrientation, + member: EmissionMember, + station_offsets: Mapping[tuple[str, str], float], +) -> tuple[float, float]: + if orientation is CorridorOrientation.VERTICAL: + return 0.0, 0.0 + offsets = ( + station_offsets.get((member.edge.source, member.line_id), 0.0), + station_offsets.get((member.edge.target, member.line_id), 0.0), + ) + return max(0.0, -min(offsets)), max(0.0, max(offsets)) + + def _observe_route_geometry( graph: MetroGraph, routes: list[RoutedPath], @@ -1554,6 +1576,9 @@ def _observe_route_geometry( if segment.orientation is CorridorOrientation.HORIZONTAL else CorridorKind.INTER_COLUMN_CHANNEL ) + negative_offset, positive_offset = _lane_offset_envelope( + segment.orientation, member, station_offsets + ) claims.append( _ObservedClaim( member.system_id, @@ -1589,6 +1614,8 @@ def _observe_route_geometry( segment.span_start, segment.span_end, segment.coordinate, + negative_offset, + positive_offset, ) ) return _ObservedGeometry(tuple(claims), tuple(unfiled)) @@ -2344,6 +2371,12 @@ def _build_symbolic_records( ) claims = tuple(item.claim for item in ordered_group) lanes, bundle_width = _allocate_physical_lanes(claims) + negative_offset_envelope = max( + item.negative_lane_offset_envelope for item in ordered_group + ) + positive_offset_envelope = max( + item.positive_lane_offset_envelope for item in ordered_group + ) connector_set = { connector_id for item in group for connector_id in item.connector_ids } @@ -2415,7 +2448,12 @@ def _build_symbolic_records( BUNDLE_TO_BUNDLE_CLEARANCE, negative, positive, - negative + bundle_width + peer_width + positive, + negative + + negative_offset_envelope + + bundle_width + + peer_width + + positive_offset_envelope + + positive, None, keepouts, families, @@ -2423,6 +2461,8 @@ def _build_symbolic_records( (demand_id,), provenance, _description(first.kind, first.region, span, lane_count), + negative_lane_offset_envelope=negative_offset_envelope, + positive_lane_offset_envelope=positive_offset_envelope, ) reference = SharedReference( reference_id, @@ -2620,8 +2660,10 @@ def _projected_claim_bounds( longitudinal_axis, min(item[0] for item in projected_claims), max(item[1] for item in projected_claims), - min(item[2] for item in projected_claims), - max(item[2] for item in projected_claims), + min(item[2] for item in projected_claims) + - reservation.negative_lane_offset_envelope, + max(item[2] for item in projected_claims) + + reservation.positive_lane_offset_envelope, ) @@ -2777,8 +2819,10 @@ def _realise_one( ) required = ( negative_clearance + + reservation.negative_lane_offset_envelope + reservation.bundle_width + reservation.peer_width + + reservation.positive_lane_offset_envelope + positive_clearance ) available = measured_distance(measurement.start, measurement.end) @@ -2884,8 +2928,16 @@ def drawn_corridor_containment( for claim in claims for rank in range(claim.segment_rank, claim.segment_end_rank + 2) ) - band_start = realised.region_start + realised.negative_side_clearance - band_end = realised.region_end - realised.positive_side_clearance + band_start = ( + realised.region_start + + realised.negative_side_clearance + - reservation.negative_lane_offset_envelope + ) + band_end = ( + realised.region_end + - realised.positive_side_clearance + + reservation.positive_lane_offset_envelope + ) if isinstance(reservation.region, ColumnGapRegion): for claim in claims: polyline = route_polylines[claim.path_rank] @@ -3109,8 +3161,10 @@ def _validate_reservation_record( expected_positive = reserved_margin expected_minimum = ( expected_negative + + reservation.negative_lane_offset_envelope + expected_bundle_width + reservation.peer_width + + reservation.positive_lane_offset_envelope + expected_positive ) if ( @@ -3406,8 +3460,10 @@ def _validate_reservation_realisation( expected_occupied_end = expected_bounds.occupied_end expected_required = ( realised.negative_side_clearance + + reservation.negative_lane_offset_envelope + reservation.bundle_width + reservation.peer_width + + reservation.positive_lane_offset_envelope + realised.positive_side_clearance ) expected_capacity = realised.available_width - expected_required @@ -3994,21 +4050,26 @@ def _project_shared_coordinate( member_ids: tuple[EmissionMemberId, ...], translations: tuple[ReservationCoordinateTranslation, ...], ) -> float: - """Project a coordinate every listed member shares, requiring agreement. + """Project a coordinate every listed member shares as one owned value. - Shared plan geometry has one position, so every claimant must project it - identically; a disagreement means a translation tore shared geometry - apart, which settlement is forbidden from doing. + A fully translated claimant carries the shared coordinate with it. A group + containing only boundary-crossing claimants follows the translated side of + the boundary. Individual member claims retain their endpoint-specific + projection; only the plan coordinate they jointly own moves atomically. """ - projected = tuple( - project_reservation_coordinate(value, axis, member_id, translations) - for member_id in member_ids - ) - if not projected or any( - abs(item - projected[0]) > SAME_COORD_TOLERANCE for item in projected[1:] - ): - raise ValueError("settlement separates shared plan geometry") - return projected[0] + if not member_ids: + raise ValueError("shared plan geometry requires a claimant") + projected = value + claimant_ids = frozenset(member_ids) + for translation in translations: + if translation.axis is not axis: + continue + if claimant_ids.intersection(translation.fully_owned_member_ids) or ( + claimant_ids.intersection(translation.crossing_member_ids) + and projected >= translation.coordinate - SAME_COORD_TOLERANCE + ): + projected += translation.amount + return projected def _project_shared_point( diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 8f23d16a7..00aa5339b 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -559,6 +559,45 @@ def _connect_bypass_landing( return True +def _bypass_tail_runway(landing: ConvergenceLanding, ctx: _RoutingCtx) -> float: + base = SECTION_ROUTE_CLEARANCE + landing.lane_rank * ctx.offset_step + return max(base, landing.bypass_tail_runway or 0.0) + + +def _bypass_opening_candidate_feasible( + landing: ConvergenceLanding, coordinate: float, ctx: _RoutingCtx +) -> bool: + opening = landing.opening_turn_segment + if ( + not landing.bypass + or opening is None + or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE + ): + return True + entry_id = ctx.merge.entry_port_for.get(landing.edge.target) + port = ctx.graph.ports.get(entry_id) if entry_id else None + if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT): + return True + outward = 1.0 if port.side is PortSide.RIGHT else -1.0 + bypass_x = landing.join_point[0] + outward * _bypass_tail_runway(landing, ctx) + return outward * (coordinate - bypass_x) >= ctx.curve_radius - COORD_TOLERANCE + + +def _bypass_opening_boundary_candidate( + landing: ConvergenceLanding, ctx: _RoutingCtx +) -> float | None: + if landing.opening_turn_segment is None or not landing.bypass: + return None + entry_id = ctx.merge.entry_port_for.get(landing.edge.target) + port = ctx.graph.ports.get(entry_id) if entry_id else None + if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT): + return None + outward = 1.0 if port.side is PortSide.RIGHT else -1.0 + return landing.join_point[0] + outward * ( + _bypass_tail_runway(landing, ctx) + ctx.curve_radius + ) + + def _bypass_landing_tail( landing: ConvergenceLanding, ctx: _RoutingCtx ) -> list[tuple[float, float]] | None: @@ -583,9 +622,7 @@ def _bypass_landing_tail( or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE ): return None - bypass_x = landing.join_point[0] + outward * ( - SECTION_ROUTE_CLEARANCE + landing.lane_rank * ctx.offset_step - ) + bypass_x = landing.join_point[0] + outward * _bypass_tail_runway(landing, ctx) return [ opening_end, (bypass_x, opening_end[1]), @@ -2492,6 +2529,7 @@ def _crossing_minimal_lane( run: _CotravellingRun, neighbours: tuple[_CotravellingRun, ...], clearance: float, + feasible: Callable[[float], bool] | None = None, ) -> float | None: """Nearest lane with the fewest crossings against adjacent fixed runs.""" axis = plan.trunk_axis @@ -2500,7 +2538,7 @@ def _crossing_minimal_lane( axis.source_flank_coordinate + axis.target_flank_coordinate ) / 2.0 - run.coordinate candidates = _clear_lane_candidates( - tuple(neighbour.coordinate for neighbour in neighbours), clearance + tuple(neighbour.coordinate for neighbour in neighbours), clearance, feasible ) def crossing_count(candidate: float) -> int: @@ -2560,6 +2598,47 @@ def _separate_distinct_cotravelling_trunks( return tuple(settled) +def _separate_distinct_counter_running_trunks( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + member_runs: tuple[_CotravellingRun, ...], +) -> tuple[ConvergencePlan, ...]: + """Seat distinct counter-running trunks on separate corridor channels.""" + clearance = 2.0 * COORD_TOLERANCE + settled = list(plans) + seated = list(member_runs) + for plan_rank in reversed(range(len(settled))): + plan = settled[plan_rank] + run = _trunk_corridor_run(plan, graph) + if run is None: + continue + neighbours = tuple( + item + for item in seated + if item.direction is not run.direction + and item.line_ids != run.line_ids + and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) + ) + if any( + abs(item.coordinate - run.coordinate) < clearance - COORD_TOLERANCE + for item in neighbours + ): + corridor = run.corridor + candidates = _clear_lane_candidates( + tuple(item.coordinate for item in neighbours), + clearance, + lambda candidate: inter_row_gap_upper_row(graph, candidate) == corridor, + ) + coordinate = min(candidates, default=None) + assert coordinate is not None + settled[plan_rank] = _move_trunk_axis(plan, coordinate) + moved = _trunk_corridor_run(settled[plan_rank], graph) + assert moved is not None + run = moved + seated.append(run) + return tuple(settled) + + def _settle_shared_opening_pivots( plans: tuple[ConvergencePlan, ...], graph: MetroGraph ) -> tuple[ConvergencePlan, ...]: @@ -2776,6 +2855,338 @@ def _fuse_shared_terminal_gap_channels( return tuple(settled) +def _fuse_owned_legacy_terminal_flanks( + plans: tuple[ConvergencePlan, ...], ctx: _RoutingCtx +) -> tuple[ConvergencePlan, ...]: + """Seat legacy terminal openings on their convergence-owned target flank.""" + merge = getattr(ctx, "merge", None) + if merge is None: + return plans + settled: list[ConvergencePlan] = [] + for plan_rank, plan in enumerate(plans): + axis = plan.trunk_axis + if axis is None or axis.axis is not DemandAxis.X: + settled.append(plan) + continue + target_flank_segment = _trunk_segments(axis)[3] + target_flank = target_flank_segment[0][0] + groups: defaultdict[tuple[str, str], list[int]] = defaultdict(list) + for rank, landing in enumerate(plan.landings): + target_id = merge.entry_port_for.get( + landing.edge.target, landing.edge.target + ) + target = ctx.graph.stations.get(target_id) + if ( + axis.target_endpoint_coordinate is not None + and target is not None + and not landing.multiple_row + and abs(target.x - axis.target_endpoint_coordinate) <= COORD_TOLERANCE + ): + groups[(landing.edge.line_id, target_id)].append(rank) + landings = list(plan.landings) + for ranks in groups.values(): + if len(ranks) < 2: + continue + for rank in ranks: + landing = landings[rank] + source = ctx.graph.stations.get(landing.edge.source) + opening = landing.opening_turn_coordinate + if ( + source is None + or opening is None + or (source.x - landing.join_point[0]) + * (opening - landing.join_point[0]) + >= -COORD_TOLERANCE + ): + continue + source_sign = 1.0 if source.x > landing.join_point[0] else -1.0 + reseated = _reseat_landing_opening( + landing, + landing.join_point[0] + source_sign * ctx.curve_radius, + ctx.curve_radius, + ) + if reseated is None: + continue + reseated_opening = reseated.opening_turn_coordinate + reseated_segment = reseated.opening_turn_segment + assert reseated_opening is not None + assert reseated_segment is not None + if abs(reseated_opening - source.x) >= ( + ctx.curve_radius - COORD_TOLERANCE + ) and _bypass_opening_candidate_feasible( + landing, reseated_opening, ctx + ): + if ( + landing.bypass + and abs(reseated_segment[1][1] - reseated.join_point[1]) + > COORD_TOLERANCE + ): + reseated = replace( + reseated, + minimum_runway=_bypass_tail_runway(landing, ctx), + ) + approach = Direction.L if source_sign > 0 else Direction.R + incoming = _direction(*reseated_segment) + landings[rank] = replace( + reseated, + approach_direction=approach, + corner_handedness=turn_handedness(incoming, approach), + ) + plan = replace(plan, landings=tuple(landings)) + displaced_ranks = tuple( + rank + for rank in ranks + if landings[rank].approach_axis is DemandAxis.X + and (opening := landings[rank].opening_turn_coordinate) is not None + and abs(opening - target_flank) >= ctx.curve_radius - COORD_TOLERANCE + ) + if not displaced_ranks: + continue + claimant_ids = frozenset(landings[rank].member_id for rank in ranks) + lookup = gap_lookup_geometry(ctx.graph) + context_plans = (*settled, plan, *plans[plan_rank + 1 :]) + channels = tuple( + channel + for candidate_plan in context_plans + for channel in _plan_gap_channels(candidate_plan, ctx.graph, lookup) + ) + base_channel = next( + ( + channel + for channel in _plan_gap_channels(plan, ctx.graph, lookup) + if channel.flank_rank == 3 + and channel.claimant_member_ids & claimant_ids + ), + None, + ) + if base_channel is None: + continue + obstacles = tuple( + channel + for channel in channels + if not channel.claimant_member_ids & claimant_ids + ) + gap_edges = column_gap_edges( + ctx.graph, + base_channel.gap[0], + base_channel.gap[0] + 1, + row=base_channel.gap[1], + ) + candidates = tuple( + sorted( + { + *_clearance_candidates( + target_flank, base_channel.down, obstacles + ), + *( + candidate + for rank in displaced_ranks + if ( + candidate := _bypass_opening_boundary_candidate( + landings[rank], ctx + ) + ) + is not None + ), + }, + key=lambda coordinate: ( + abs(coordinate - target_flank), + coordinate, + ), + ) + ) + for candidate in candidates: + if not _inside_usable_gap(gap_edges, candidate): + continue + candidate_channel = replace(base_channel, coordinate=candidate) + if any( + _gap_channels_crowd(candidate_channel, obstacle) + for obstacle in obstacles + ): + continue + moved = _move_trunk_flank(plan, 3, candidate) + moved_axis = moved.trunk_axis + assert moved_axis is not None + moved_flank_segment = _trunk_segments(moved_axis)[3] + moved_landings = list(moved.landings) + for rank in displaced_ranks: + landing = moved_landings[rank] + source = ctx.graph.stations.get(landing.edge.source) + if ( + landing.approach_axis is not DemandAxis.X + or source is None + or landing.opening_turn_coordinate is None + or landing.opening_turn_segment is None + or (source.x - landing.join_point[0]) + * (candidate - landing.join_point[0]) + < -COORD_TOLERANCE + or abs(landing.opening_turn_coordinate - candidate) + <= COORD_TOLERANCE + or abs(candidate - landing.join_point[0]) + <= _bypass_tail_runway(landing, ctx) + COORD_TOLERANCE + or not _bypass_opening_candidate_feasible( + landing, candidate, ctx + ) + or not spans_share_corridor( + *sorted( + ( + landing.opening_turn_segment[0][1], + landing.opening_turn_segment[1][1], + ) + ), + *sorted( + ( + moved_flank_segment[0][1], + moved_flank_segment[1][1], + ) + ), + ) + or _direction( + (candidate, landing.join_point[1]), landing.join_point + ) + is not landing.approach_direction + ): + break + reseated = _reseat_landing_opening( + landing, candidate, ctx.curve_radius + ) + if reseated is None: + break + reseated_segment = reseated.opening_turn_segment + assert reseated_segment is not None + if ( + landing.bypass + and abs(reseated_segment[1][1] - reseated.join_point[1]) + > COORD_TOLERANCE + ): + reseated = replace( + reseated, + minimum_runway=_bypass_tail_runway(landing, ctx), + ) + moved_landings[rank] = reseated + else: + moved = replace(moved, landings=tuple(moved_landings)) + moved_channels = tuple( + channel + for channel in _plan_gap_channels(moved, ctx.graph, lookup) + if channel.flank_rank == 3 + and channel.claimant_member_ids & claimant_ids + ) + if moved_channels and all( + _channel_inside_gap(ctx.graph, channel) + and not any( + _gap_channels_crowd(channel, obstacle) + for obstacle in obstacles + ) + for channel in moved_channels + ): + plan = moved + axis = moved_axis + target_flank = candidate + target_flank_segment = moved_flank_segment + landings = moved_landings + break + settled.append(replace(plan, landings=tuple(landings))) + return tuple(settled) + + +def _separate_cross_plan_terminal_approaches( + plans: tuple[ConvergencePlan, ...], ctx: _RoutingCtx +) -> tuple[ConvergencePlan, ...]: + """Nest a returning bypass outside a distinct direct terminal approach.""" + + def horizontal_tail(landing: ConvergenceLanding) -> _Segment | None: + tail = _bypass_landing_tail(landing, ctx) + if tail is None: + return None + return next( + ( + (start, end) + for start, end in zip(tail, tail[1:]) + if abs(start[1] - end[1]) <= COORD_TOLERANCE + and abs(start[0] - end[0]) > COORD_TOLERANCE + ), + None, + ) + + settled = list(plans) + direct_landings = tuple( + landing + for plan in settled + for landing in plan.landings + if landing.opening_turn_segment is not None + and abs(landing.opening_turn_segment[1][1] - landing.join_point[1]) + <= COORD_TOLERANCE + ) + for plan_rank, plan in enumerate(tuple(settled)): + for landing in plan.landings: + if ( + not landing.bypass + or landing.opening_turn_segment is None + or abs(landing.opening_turn_segment[1][1] - landing.join_point[1]) + <= COORD_TOLERANCE + ): + continue + bypass_segment = horizontal_tail(landing) + if bypass_segment is None: + continue + for obstacle in direct_landings: + obstacle_segment = horizontal_tail(obstacle) + if ( + obstacle.edge.line_id == landing.edge.line_id + or obstacle.source_junction_id != landing.source_junction_id + or obstacle_segment is None + or abs(obstacle.join_point[0] - landing.join_point[0]) + > COORD_TOLERANCE + or not _parallel_segments_conflict( + bypass_segment, obstacle_segment, COORD_TOLERANCE + ) + ): + continue + entry_id = ctx.merge.entry_port_for.get(landing.edge.target) + port = ctx.graph.ports.get(entry_id) if entry_id else None + if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT): + continue + outward = 1.0 if port.side is PortSide.RIGHT else -1.0 + assert obstacle.opening_turn_coordinate is not None + candidate = obstacle.opening_turn_coordinate + outward * ( + ctx.curve_radius + ctx.offset_step + ) + if not _bypass_opening_candidate_feasible(landing, candidate, ctx): + continue + moved = _move_landing_opening( + settled[plan_rank], + frozenset({landing.member_id}), + candidate, + ctx.curve_radius, + ) + if moved is None: + continue + settled[plan_rank] = moved + plan = moved + landing = next( + item + for item in moved.landings + if item.member_id == landing.member_id + ) + landing = replace( + landing, + minimum_runway=abs(candidate - landing.join_point[0]) + - ctx.curve_radius, + bypass_tail_runway=abs(candidate - landing.join_point[0]) + - ctx.curve_radius, + ) + moved_landings = tuple( + landing if item.member_id == landing.member_id else item + for item in moved.landings + ) + settled[plan_rank] = plan = replace(moved, landings=moved_landings) + bypass_segment = horizontal_tail(landing) + if bypass_segment is None: + break + return tuple(settled) + + def _separate_distinct_terminal_gap_channels( plans: tuple[ConvergencePlan, ...], graph: MetroGraph, curve_radius: float ) -> tuple[ConvergencePlan, ...]: @@ -5100,7 +5511,10 @@ def _landing_trunk_flank_conflict( def _landing_trunk_flank_candidates( - plans: tuple[ConvergencePlan, ...], graph: MetroGraph, curve_radius: float + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + curve_radius: float, + translation_envelope: float | Callable[[ConvergenceLanding], float] = 0.0, ) -> Iterator[ tuple[ ConvergencePlan, @@ -5123,12 +5537,17 @@ def _landing_trunk_flank_candidates( continue for rank in (1, 3): flank = _trunk_segments(axis)[rank] + envelope = ( + translation_envelope(landing) + if callable(translation_envelope) + else translation_envelope + ) if ( landing.edge.line_id in trunk_plan.line_ids and _direction(*landing_segment) is not _trunk_run_travel_direction(axis, rank) and _parallel_segments_conflict( - landing_segment, flank, curve_radius + landing_segment, flank, curve_radius + envelope ) ): yield ( @@ -5200,13 +5619,25 @@ def _column_clearance_requirement( def _landing_trunk_flank_clearance_requirements( - plans: tuple[ConvergencePlan, ...], graph: MetroGraph, curve_radius: float + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + curve_radius: float, ) -> tuple[BoundaryClearanceRequirement, ...]: """Column widths that would make an unseated landing/flank pair feasible.""" clearance = cotravelling_lane_clearance( same_line=True, counter_running=True, curve_radius=curve_radius ) lookup = gap_lookup_geometry(graph) + offset_step = graph_offset_step(graph) + owned_lane_offsets = { + landing.member_id: (len(plan.lane_order) - landing.lane_rank - 1) * offset_step + for plan in plans + for landing in plan.landings + } + + def translation_envelope(landing: ConvergenceLanding) -> float: + return owned_lane_offsets[landing.member_id] + widest: dict[int, BoundaryClearanceRequirement] = {} for ( landing_plan, @@ -5215,7 +5646,9 @@ def _landing_trunk_flank_clearance_requirements( trunk_plan, rank, flank, - ) in _landing_trunk_flank_candidates(plans, graph, curve_radius): + ) in _landing_trunk_flank_candidates( + plans, graph, curve_radius, translation_envelope + ): if _direction(*landing_segment) not in (Direction.U, Direction.D): continue axis = trunk_plan.trunk_axis @@ -5547,10 +5980,11 @@ def _validate_final_convergence_feasibility( for system_id, system_plans in plans_by_system.items(): conflict = _system_conflict(tuple(system_plans), ctx) if conflict is not None: + available_requirements = _landing_trunk_flank_clearance_requirements( + tuple(system_plans), graph, ctx.curve_radius + ) requirements = ( - _landing_trunk_flank_clearance_requirements( - tuple(system_plans), graph, ctx.curve_radius - ) + available_requirements if allow_clearance_requirements and conflict.kind is ConvergenceConflictKind.NO_APPROACH_SETTLEMENT_ROOM else () @@ -5985,6 +6419,7 @@ def _settle_convergence_geometry( settled = _pack_cotravelling_corridor_runs(plans, graph, member_runs) settled = _separate_distinct_cotravelling_trunks(settled, graph, member_runs) + settled = _separate_distinct_counter_running_trunks(settled, graph, member_runs) settled = _settle_shared_trunk_channels(settled, ctx.curve_radius) settled = _settle_shared_opening_pivots(settled, graph) settled = _settle_shared_source_openings(settled, ctx.curve_radius) @@ -6053,6 +6488,9 @@ def _settle_convergence_geometry( settled = _fuse_shared_terminal_gap_channels(settled, ctx) settled = _separate_distinct_terminal_gap_channels(settled, graph, ctx.curve_radius) settled = tuple(_reconcile_bypass_landings(plan, ctx) for plan in settled) + settled = _reconcile_landing_handedness(settled, ctx) + settled = _separate_distinct_counter_running_trunks(settled, graph, member_runs) + settled = _fuse_owned_legacy_terminal_flanks(settled, ctx) return _reconcile_landing_handedness(settled, ctx) @@ -6116,6 +6554,12 @@ def _settle_convergence_execution( else () ), ) + if ( + member_geometry is not None + and not execution.clearance_requirements + and not pre_settlement_requirements + ): + settled = _separate_cross_plan_terminal_approaches(settled, ctx) settled = _dogleg_internal_counter_running_feeders(settled, graph, ctx.curve_radius) clearance_requirements = execution.clearance_requirements if member_geometry is not None: @@ -6126,6 +6570,13 @@ def _settle_convergence_execution( fixed_channels, allow_clearance_requirements=allow_clearance_requirements, ) + if allow_clearance_requirements: + measured_requirements = ( + *measured_requirements, + *_landing_trunk_flank_clearance_requirements( + settled, graph, ctx.curve_radius + ), + ) clearance_requirements = tuple( { (item.axis, item.boundary, item.owner_id): item diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index b62462904..7735f5198 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -231,9 +231,6 @@ def settle_shared_opening_trunk_conflicts( ) <= COORD_TOLERANCE ) - if not fixed_claims: - return execution - from nf_metro.layout.routing import convergences lookup = convergences.gap_lookup_geometry(graph) @@ -246,10 +243,12 @@ def settle_shared_opening_trunk_conflicts( plans: list[RouteMemberGeometryPlan] = [] changed = False + reconciled_member_ids: set[EmissionMemberId] = set() for plan in execution.plans: if ( plan.member_id in convergence_member_ids or plan.exit_shared_opening_points + or plan.exit_turn_plan_id is not None or plan.fan_plan_id is not None ): plans.append(plan) @@ -278,10 +277,12 @@ def settle_shared_opening_trunk_conflicts( ) if ( interior_delta * movable_delta >= 0 - or abs(movable_delta) >= clearance - COORD_TOLERANCE_FINE + and abs(movable_delta) > abs(interior_delta) + COORD_TOLERANCE + or interior_delta * movable_delta < 0 + and abs(movable_delta) >= clearance - COORD_TOLERANCE_FINE ): continue - flank_sign = -1.0 if movable_delta < 0 else 1.0 + flank_sign = -1.0 if interior_delta > 0 else 1.0 candidate_x = endpoint[0] + flank_sign * clearance obstacles = [ ( @@ -342,10 +343,100 @@ def settle_shared_opening_trunk_conflicts( moved_ranks.add(rank) movable_x = candidate_x break + terminal_obstacles = [ + ( + obstacle.coordinate, + obstacle.y_lo, + obstacle.y_hi, + obstacle.down, + ) + for obstacle in convergence_channels + if obstacle.gap == (channel.gap_lo_col, channel.row) + and plan.edge.line_id not in obstacle.line_ids + ] + terminal_obstacles.extend( + ( + obstacle.start[0], + min(obstacle.start[1], obstacle.end[1]), + max(obstacle.start[1], obstacle.end[1]), + obstacle.direction is Direction.D, + ) + for other in execution.plans + if other.member_id != plan.member_id + and other.edge.line_id != plan.edge.line_id + for obstacle in other.gap_channels + if (obstacle.gap_lo_col, obstacle.row) + == (channel.gap_lo_col, channel.row) + ) + relevant = tuple( + ( + obstacle_x, + obstacle_down, + cotravelling_lane_clearance( + same_line=False, + counter_running=(channel.direction is Direction.D) + is not obstacle_down, + curve_radius=curve_radius, + ), + ) + for ( + obstacle_x, + obstacle_lo, + obstacle_hi, + obstacle_down, + ) in terminal_obstacles + if min(y_hi, obstacle_hi) - max(y_lo, obstacle_lo) + > MIN_CORRIDOR_Y_OVERLAP + ) + if not any( + abs(movable_x - obstacle_x) < clearance - COORD_TOLERANCE_FINE + for obstacle_x, _obstacle_down, clearance in relevant + ): + continue + gap_left, gap_right = column_gap_edges( + graph, + channel.gap_lo_col, + channel.gap_lo_col + 1, + row=channel.row, + ) + candidates = sorted( + { + obstacle_x + sign * clearance + for obstacle_x, _obstacle_down, clearance in relevant + for sign in (-1.0, 1.0) + }, + key=lambda candidate: (abs(candidate - movable_x), candidate), + ) + before = points[rank - 1] if rank > 0 else None + after = points[rank + 2] if rank + 2 < len(points) else None + settled_x = next( + ( + candidate + for candidate in candidates + if gap_left + EDGE_TO_BUNDLE_CLEARANCE - COORD_TOLERANCE + <= candidate + <= gap_right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE + and before is not None + and after is not None + and abs(before[0] - candidate) >= curve_radius - COORD_TOLERANCE + and abs(after[0] - candidate) >= curve_radius - COORD_TOLERANCE + and all( + abs(candidate - obstacle_x) >= clearance - COORD_TOLERANCE_FINE + for obstacle_x, _obstacle_down, clearance in relevant + ) + ), + None, + ) + if settled_x is None: + continue + points[rank] = (settled_x, points[rank][1]) + points[rank + 1] = (settled_x, points[rank + 1][1]) + moved_ranks.add(rank) if not moved_ranks: plans.append(plan) continue changed = True + reconciled_member_ids.add(plan.member_id) plans.append( replace( plan, @@ -370,7 +461,7 @@ def settle_shared_opening_trunk_conflicts( execution.failure_reasons, MappingProxyType({plan.edge: plan for plan in frozen_plans}), execution.settled_exit_turns, - execution.reconciled_member_ids, + execution.reconciled_member_ids | reconciled_member_ids, ) @@ -1785,6 +1876,8 @@ def _seat_claimed_segments_before_freeze( for rank, (start, end) in enumerate(zip(route.points, route.points[1:])): if not 1 <= rank <= len(route.points) - 3: continue + if rank < len(route.exit_shared_opening_points): + continue if route.exit_lane_transition_plan_id is not None or ( route.exit_turn_segment_rank is not None and abs(route.exit_turn_segment_rank - rank) <= 1 diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index f682b6daa..3f85dda6c 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -64,6 +64,41 @@ class RoutePlanningExecution: published record is narrowed to planned systems.""" +def _publish_member_exit_axes( + execution: ExitTurnExecution, + member_geometry: MemberGeometryExecution, +) -> ExitTurnExecution: + """Publish the exit axes carried by the final immutable member paths.""" + by_member = {plan.member_id: plan for plan in member_geometry.plans} + replacements = {} + for exit_plan in execution.plans: + axes = [] + changed = False + for axis in exit_plan.axes: + coordinates = tuple( + member.points[member.exit_turn_segment_rank][axis.axis.point_index] + for member_id in axis.claimant_member_ids + if (member := by_member.get(member_id)) is not None + and member.exit_turn_axis_id == axis.id + and member.exit_turn_segment_rank is not None + ) + if not coordinates or any( + abs(coordinate - coordinates[0]) > COORD_TOLERANCE + for coordinate in coordinates[1:] + ): + axes.append(axis) + continue + published = replace(axis, coordinate=coordinates[0]) + axes.append(published) + changed |= published != axis + if changed: + replacements[exit_plan.id] = replace(exit_plan, axes=tuple(axes)) + if not replacements: + return execution + query = execution.query.replacing_plans(replacements) + return replace(execution, plans=query.plans, query=query) + + def _allocation_eligible_system_ids( preliminary_planned_ids: frozenset[RouteSystemId], member_failure_ids: frozenset[RouteSystemId], @@ -440,6 +475,8 @@ def prepare_member_geometry( graph, curve_radius=ctx.curve_radius, ) + exit_turns = _publish_member_exit_axes(exit_turns, member_geometry) + ctx.exit_turns = exit_turns.query ctx.convergences = convergences.query route_systems = build_route_system_emission_execution( scaffold, diff --git a/src/nf_metro/layout/routing/reserved_bands.py b/src/nf_metro/layout/routing/reserved_bands.py index 7572c65d2..1cda51eca 100644 --- a/src/nf_metro/layout/routing/reserved_bands.py +++ b/src/nf_metro/layout/routing/reserved_bands.py @@ -541,7 +541,9 @@ def terminal_landing_band( bundle_width=0.0, minimum_width=( reservation.negative_side_clearance + + reservation.negative_lane_offset_envelope + reservation.peer_width + + reservation.positive_lane_offset_envelope + reservation.positive_side_clearance ), ) diff --git a/src/nf_metro/render/section_header.py b/src/nf_metro/render/section_header.py index 66f39dbfc..6104efe67 100644 --- a/src/nf_metro/render/section_header.py +++ b/src/nf_metro/render/section_header.py @@ -48,7 +48,7 @@ import re from collections.abc import Callable from dataclasses import dataclass -from typing import Literal, NamedTuple +from typing import TYPE_CHECKING, Literal, NamedTuple from nf_metro.layout.constants import SAME_COORD_TOLERANCE, SECTION_HEADER_PROTRUSION from nf_metro.layout.geometry import point_to_polyline_distance @@ -65,9 +65,13 @@ ) from nf_metro.text_metrics import DEFAULT_TEXT_METRICS, TextRole, text_style +if TYPE_CHECKING: + from nf_metro.layout.route_plan import RoutePlan + Rect = tuple[float, float, float, float] Polyline = list[tuple[float, float]] HeaderMode = Literal["above", "below", "left", "right", "nudge"] +RightCanvasBarrier = tuple[float, float, float] class _BandBlock(NamedTuple): @@ -574,6 +578,7 @@ def resolve_section_header_placement( label_font_size: float, polylines: list[Polyline] | None = None, title_font_size: float | None = None, + right_canvas_barriers: tuple[RightCanvasBarrier, ...] = (), ) -> SectionHeaderPlacement: """Pick a clash-free position for ``section``'s header (see module docstring). @@ -607,8 +612,12 @@ def resolve_section_header_placement( circle_r, num_y, length, half_text, lines, extra_height, height_capped ) above = _above(x0, y0, block) - if polylines is None or _placement_clear(above, polylines): + if (polylines is None or _placement_clear(above, polylines)) and ( + _placement_before_right_canvas(above, right_canvas_barriers) + ): return above + if polylines is None: + polylines = [] down_max_lines = _max_lines_downward(graph, section, label_font_size) lines_dn, length_dn, extra_dn, capped_dn = _wrapped_header_geometry( @@ -645,6 +654,7 @@ def _available(candidates: list[SectionHeaderPlacement]) -> list[_Scored]: _Scored(_route_clearance(candidate, polylines), rank, candidate) for rank, candidate in enumerate(candidates) if _placement_clear(candidate, polylines) + and _placement_before_right_canvas(candidate, right_canvas_barriers) and _fits_its_band( graph, section, candidate, label_font_size, title_font_size ) @@ -656,9 +666,28 @@ def _available(candidates: list[SectionHeaderPlacement]) -> list[_Scored]: scored = _available(upright) or _available(rotated) if scored: return max(scored, key=lambda item: (item.clearance, -item.rank)).placement - return _band_shift( + fallback = _band_shift( _leftmost_clear_band_start(section, above, length, polylines), section, block ) + if _placement_before_right_canvas(fallback, right_canvas_barriers): + return fallback + boundary = min( + coordinate + for coordinate, y_lo, y_hi in right_canvas_barriers + if _intervals_overlap(fallback.keepout[1], fallback.keepout[3], y_lo, y_hi) + ) + start = _rightmost_clear_band_start( + section, + above, + length, + polylines, + boundary - SECTION_HEADER_ROUTE_PAD, + ) + if start >= 0.0: + content_side = _band_shift(start, section, block) + if _placement_before_right_canvas(content_side, right_canvas_barriers): + return content_side + return fallback def resolve_all_section_headers( @@ -666,17 +695,76 @@ def resolve_all_section_headers( label_font_size: float, polylines: list[Polyline], title_font_size: float | None = None, + route_plan: RoutePlan | None = None, ) -> dict[str, SectionHeaderPlacement]: """Resolve every drawn section's header placement once, keyed by section id.""" + barriers = _right_canvas_barriers(route_plan, polylines) return { section.id: resolve_section_header_placement( - graph, section, label_font_size, polylines, title_font_size + graph, + section, + label_font_size, + polylines, + title_font_size, + barriers, ) for section in graph.sections.values() if section.bbox_w > 0 and section.bbox_h > 0 and not section.is_implicit } +def _right_canvas_barriers( + plan: RoutePlan | None, polylines: list[Polyline] +) -> tuple[RightCanvasBarrier, ...]: + if plan is None: + return () + from nf_metro.layout.route_reservations import ( + CanvasRegion, + CanvasSide, + CorridorOrientation, + ) + + barriers: list[RightCanvasBarrier] = [] + for reservation in plan.reservations: + if ( + not isinstance(reservation.region, CanvasRegion) + or reservation.region.side is not CanvasSide.RIGHT + or reservation.orientation is not CorridorOrientation.VERTICAL + ): + continue + for claim in reservation.claims: + points = polylines[claim.path_rank][ + claim.segment_rank : claim.segment_end_rank + 2 + ] + barriers.append( + ( + min(point[0] for point in points), + min(point[1] for point in points), + max(point[1] for point in points), + ) + ) + return tuple(barriers) + + +def _intervals_overlap( + first_lo: float, first_hi: float, second_lo: float, second_hi: float +) -> bool: + return first_lo < second_hi and second_lo < first_hi + + +def _placement_before_right_canvas( + placement: SectionHeaderPlacement, + barriers: tuple[RightCanvasBarrier, ...], +) -> bool: + x_hi = placement.keepout[2] + y_lo, y_hi = placement.keepout[1], placement.keepout[3] + return all( + x_hi <= coordinate - SECTION_HEADER_ROUTE_PAD + for coordinate, run_lo, run_hi in barriers + if _intervals_overlap(y_lo, y_hi, run_lo, run_hi) + ) + + def _placement_clear( placement: SectionHeaderPlacement, polylines: list[Polyline] ) -> bool: @@ -827,6 +915,30 @@ def _leftmost_clear_band_start( start = rightmost + pad +def _rightmost_clear_band_start( + section: Section, + above: SectionHeaderPlacement, + length: float, + polylines: list[Polyline], + limit: float, +) -> float: + pad = SECTION_HEADER_ROUTE_PAD + _, band_top, _, band_bottom = above.keepout + y_lo, y_hi = band_top - pad, band_bottom + pad + start = min(section.bbox_x, limit - length) + while True: + band = (start - pad, y_lo, start + length + pad, y_hi) + spans = ( + _segment_rect_xspan(poly[i], poly[i + 1], band) + for poly in polylines + for i in range(len(poly) - 1) + ) + leftmost = min((span[0] for span in spans if span is not None), default=None) + if leftmost is None or start + length <= leftmost - pad: + return start + start = leftmost - pad - length + + def check_section_headers_hold_the_reserved_band( graph: MetroGraph, placements: dict[str, SectionHeaderPlacement], diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index b4aa9ab51..987005e39 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -1786,7 +1786,11 @@ def _build_render_plan_scaled( # Resolve headers against the final section bboxes (label and group # reservations above can grow a box, moving where its header sits). header_placements = resolve_all_section_headers( - graph, theme.section_label_font_size, header_polylines, theme.title_font_size + graph, + theme.section_label_font_size, + header_polylines, + theme.title_font_size, + route_plan, ) _guard_section_headers_clear_routes(header_placements, header_polylines) _guard_section_headers_fit_box_width(graph, header_placements) diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 3fade1309..355867250 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -45,6 +45,10 @@ "common.py::if t < -0.01 or t > 1.01:::#1", "common.py::if top is None or bottom is None:::#1", "common.py::if trunk_ys[-1] - trunk_ys[0] <= COORD_TOLERANCE:::#1", + "common.py::or abs(entry.y - tgt.y) > COORD_TOLERANCE::#1", + "common.py::or entry is None::#1", + "common.py::or port.side not in (PortSide.LEFT, PortSide.RIGHT)::#1", + "common.py::port is None::#1", "context.py::for pid in section.entry_ports:::#1", "context.py::for sid in section.station_ids:::#1", "context.py::if edge.line_id in line_pos:::#1", @@ -73,117 +77,232 @@ "context.py::if tgt_col is None:::#1", "context.py::if tgt_col is None:::#2", "context.py::if tgt_col is None:::#3", + "convergences.py::and abs(endpoint[0] - entry.x) <= COORD_TOLERANCE::#1", + "convergences.py::and abs(endpoint[1] - target[1]) > COORD_TOLERANCE::#1", + "convergences.py::and abs(target[0] - entry.x) <= COORD_TOLERANCE::#1", "convergences.py::and landing.opening_turn_segment is not None::#1", "convergences.py::and plan.trunk_axis is not None::#1", "convergences.py::and plan.trunk_axis.axis is landing.approach_axis::#1", + "convergences.py::and port is not None::#1", + "convergences.py::and port.side in (PortSide.LEFT, PortSide.RIGHT)::#1", + "convergences.py::axis is None::#1", + "convergences.py::channel.flank_rank is not None::#1", "convergences.py::direction is not landing.approach_direction::#1", + "convergences.py::elif (::#1", + "convergences.py::elif landing.approach_axis is DemandAxis.X:::#1", + "convergences.py::entry is not None::#1", + "convergences.py::entry_port is None::#1", "convergences.py::for candidate_coordinate in direct_candidates:::#1", + "convergences.py::for component in components:::#1", "convergences.py::for coordinate in candidates:::#1", + "convergences.py::for coordinate in candidates:::#2", + "convergences.py::for coordinate in candidates:::#3", + "convergences.py::for coordinate in candidates:::#4", "convergences.py::for edge_key in incoming_edges:::#3", - "convergences.py::for interval_start, interval_end in sorted(intervals):::#1", + "convergences.py::for fixed in fixed_channels:::#1", "convergences.py::for item in system_plans:::#1", - "convergences.py::for rank, (start, end) in enumerate(zip(route.points, route.points[1:])):::#1", - "convergences.py::for rank, landing in enumerate(landings):::#1", + "convergences.py::for key in ordered:::#1", + "convergences.py::for key in traversal:::#1", + "convergences.py::for obstacle in direct_landings:::#1", + "convergences.py::for plan_rank, channel in grouped[key]:::#1", + "convergences.py::for plan_rank, landing_rank in members:::#1", + "convergences.py::for positions in (packed_positions(True), packed_positions(False)):::#1", + "convergences.py::for prior_key, prior_coordinate in positions.items():::#1", + "convergences.py::for rank in displaced_ranks:::#1", + "convergences.py::for rank in range(len(route.points) - 2, -1, -1):::#1", + "convergences.py::for rank, (start, end) in enumerate(zip(points, points[1:])):::#1", + "convergences.py::for rank, route in enumerate(routes):::#2", "convergences.py::for seat, obstacle in obstacles:::#1", - "convergences.py::if (::#10", + "convergences.py::if (::#1", + "convergences.py::if (::#13", "convergences.py::if (::#14", - "convergences.py::if (::#15", "convergences.py::if (::#16", "convergences.py::if (::#17", "convergences.py::if (::#18", "convergences.py::if (::#19", "convergences.py::if (::#2", + "convergences.py::if (::#20", + "convergences.py::if (::#21", + "convergences.py::if (::#22", + "convergences.py::if (::#23", + "convergences.py::if (::#24", + "convergences.py::if (::#27", + "convergences.py::if (::#28", + "convergences.py::if (::#29", "convergences.py::if (::#3", - "convergences.py::if (::#4", + "convergences.py::if (::#30", + "convergences.py::if (::#31", + "convergences.py::if (::#33", + "convergences.py::if (::#34", + "convergences.py::if (::#35", + "convergences.py::if (::#38", + "convergences.py::if (::#39", + "convergences.py::if (::#41", + "convergences.py::if (::#42", + "convergences.py::if (::#43", + "convergences.py::if (::#45", + "convergences.py::if (::#47", + "convergences.py::if (::#48", + "convergences.py::if (::#49", + "convergences.py::if (::#5", "convergences.py::if (::#6", - "convergences.py::if (::#9", + "convergences.py::if (::#7", + "convergences.py::if (::#8", "convergences.py::if (endpoint - candidate) * toward_endpoint <= curve_radius:::#1", + "convergences.py::if _channel_inside_gap(graph, channel) and _channel_inside_gap(::#1", + "convergences.py::if _channel_inside_gap(graph, channel) and _channel_inside_gap(::#2", "convergences.py::if _direction(*landing_segment) not in (Direction.U, Direction.D):::#1", "convergences.py::if _gap_channels_crowd(::#1", + "convergences.py::if _landing_channels_crowd(first, second, curve_radius):::#1", "convergences.py::if _points_coincide(*segment):::#1", + "convergences.py::if _stacked_elbow_channels_crowd(channel, member_channel):::#1", + "convergences.py::if _vert_horiz_cross(::#1", + "convergences.py::if abs(approach_delta) > COORD_TOLERANCE:::#1", + "convergences.py::if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(endpoint - flank_coordinate) <= clearance:::#1", "convergences.py::if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:::#1", + "convergences.py::if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:::#1", + "convergences.py::if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:::#1", + "convergences.py::if abs(source_x - opening_x) > COORD_TOLERANCE:::#1", "convergences.py::if abs(start[0] - end[0]) > COORD_TOLERANCE:::#1", "convergences.py::if abs(start[1] - end[1]) > COORD_TOLERANCE:::#1", "convergences.py::if actual is None:::#1", + "convergences.py::if actual is None:::#2", + "convergences.py::if any(::#10", + "convergences.py::if any(::#12", + "convergences.py::if any(::#14", + "convergences.py::if any(::#15", + "convergences.py::if any(::#16", + "convergences.py::if any(::#17", + "convergences.py::if any(::#18", + "convergences.py::if any(::#19", "convergences.py::if any(::#2", + "convergences.py::if any(::#20", + "convergences.py::if any(::#21", + "convergences.py::if any(::#22", + "convergences.py::if any(::#23", + "convergences.py::if any(::#24", "convergences.py::if any(::#3", + "convergences.py::if any(::#4", + "convergences.py::if any(::#5", "convergences.py::if any(::#6", + "convergences.py::if any(::#7", "convergences.py::if any(::#8", - "convergences.py::if any(::#9", "convergences.py::if any(edge not in edge_order for edge in edges):::#1", + "convergences.py::if any(pair <= component for pair in crowded_pairs) or (::#1", "convergences.py::if approach is None:::#1", "convergences.py::if axis is DemandAxis.X:::#1", "convergences.py::if axis is DemandAxis.X:::#2", "convergences.py::if axis is None or axis.axis is not DemandAxis.X or primary is None:::#1", + "convergences.py::if axis is None or axis.axis is not DemandAxis.X or primary is None:::#2", "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#1", "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#2", "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#3", + "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#4", "convergences.py::if axis is None:::#1", "convergences.py::if axis is None:::#2", "convergences.py::if axis is None:::#3", "convergences.py::if axis is None:::#4", + "convergences.py::if axis is not None and axis.axis is DemandAxis.X:::#1", "convergences.py::if axis.axis is DemandAxis.X:::#1", "convergences.py::if axis.axis is not DemandAxis.X:::#1", + "convergences.py::if base_channel is None:::#1", + "convergences.py::if bypass_segment is None:::#1", + "convergences.py::if bypass_segment is None:::#2", + "convergences.py::if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:::#1", + "convergences.py::if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:::#2", + "convergences.py::if channel.flank_rank is not None:::#1", + "convergences.py::if channel.gap != member_channel.gap:::#1", + "convergences.py::if clearance is None:::#1", "convergences.py::if conflict is not None:::#1", "convergences.py::if continuation is not None and continuation.covered_by_member_id is not None:::#1", "convergences.py::if continuation.covered_by_member_id is not None:::#1", "convergences.py::if continuation.covered_by_member_id is not None:::#2", + "convergences.py::if coordinate is None and len(coupled_flanks) == 1:::#1", "convergences.py::if coordinate is None:::#1", "convergences.py::if coordinate is None:::#3", "convergences.py::if coordinate is not None:::#2", "convergences.py::if coordinate is not None:::#3", - "convergences.py::if covered_until >= extent_end - COORD_TOLERANCE:::#1", - "convergences.py::if ctx.validate_final_route_frames and not clearance_pending:::#1", - "convergences.py::if ctx.validate_final_route_frames and not clearance_pending:::#2", "convergences.py::if current is None or requirement.required > current.required:::#1", + "convergences.py::if current is None or requirement.required > current.required:::#2", "convergences.py::if direction in {Direction.R, Direction.L}:::#1", "convergences.py::if direction_axis(incoming) is not direction_axis(approach):::#1", "convergences.py::if direction_axis(incoming) is not landing.approach_axis:::#1", + "convergences.py::if direction_axis(incoming) is not landing.approach_axis:::#2", "convergences.py::if edge_rank is None:::#1", "convergences.py::if elbow != endpoint and elbow != target:::#1", "convergences.py::if endpoint is None or _shared_source_bundle_stroke(::#1", "convergences.py::if endpoint is None or abs(endpoint - column) <= curve_radius:::#1", "convergences.py::if endpoint is None:::#1", "convergences.py::if endpoint is None:::#2", + "convergences.py::if endpoint is None:::#3", "convergences.py::if exit_turn_geometry != _exit_turn_geometry(route):::#1", "convergences.py::if extent_end - extent_start > COORD_TOLERANCE:::#1", "convergences.py::if family is None:::#1", "convergences.py::if first.claimant_member_ids & second.claimant_member_ids:::#1", - "convergences.py::if first.member_geometry_owned == second.member_geometry_owned:::#1", "convergences.py::if first.system_id != second.system_id:::#1", "convergences.py::if first_delta * second_delta < 0:::#1", "convergences.py::if first_plan.trunk_axis.axis is DemandAxis.X:::#1", + "convergences.py::if fixed.gap != gap and not _stacked_elbow_channels_crowd(::#1", + "convergences.py::if flank is None:::#1", + "convergences.py::if flank_key in moved_flanks:::#1", "convergences.py::if flank_rank != 1:::#1", "convergences.py::if fork is None:::#1", "convergences.py::if forked:::#1", "convergences.py::if forked:::#2", + "convergences.py::if from_left:::#1", "convergences.py::if gap is None:::#2", + "convergences.py::if gap_edges[1] <= gap_edges[0] or not _inside_usable_gap(::#1", "convergences.py::if group.line_id not in line_order:::#1", + "convergences.py::if horizontal and abs(endpoint[1] - target[1]) <= COORD_TOLERANCE:::#1", + "convergences.py::if horizontal:::#2", + "convergences.py::if inside or extends:::#1", "convergences.py::if interval[1] - interval[0] > COORD_TOLERANCE:::#1", - "convergences.py::if interval_start > covered_until + COORD_TOLERANCE:::#1", "convergences.py::if landing.approach_axis is DemandAxis.X:::#3", - "convergences.py::if landing.member_id not in member_ids:::#1", + "convergences.py::if landing.opening_turn_coordinate is not None:::#3", + "convergences.py::if landing.opening_turn_segment is None or not landing.bypass:::#1", "convergences.py::if landing.opening_turn_segment is None:::#1", "convergences.py::if lane is None:::#1", + "convergences.py::if len(channel.line_ids) != 1:::#1", "convergences.py::if len(route.points) < 2:::#1", + "convergences.py::if merge is None:::#1", + "convergences.py::if moved is None:::#1", + "convergences.py::if moved is None:::#2", + "convergences.py::if moved is None:::#3", + "convergences.py::if moved is None:::#4", + "convergences.py::if moved is None:::#5", "convergences.py::if moved_channel is None or any(::#1", + "convergences.py::if moved_channels and all(::#1", "convergences.py::if moved_plan is None:::#1", - "convergences.py::if not (::#2", + "convergences.py::if not (::#1", + "convergences.py::if not (::#3", "convergences.py::if not 0 <= flank_rank < len(route.points) - 1:::#1", + "convergences.py::if not _bypass_opening_candidate_feasible(landing, candidate, ctx):::#1", "convergences.py::if not _inside_usable_gap(gap_edges, coordinate):::#1", + "convergences.py::if not _inside_usable_gap(gap_edges, coordinate):::#2", + "convergences.py::if not _stacked_elbow_channels_crowd(channel, fixed):::#1", "convergences.py::if not candidates:::#1", "convergences.py::if not candidates:::#2", "convergences.py::if not carries_coupled_primary and any(::#1", "convergences.py::if not clearance_pending and any(::#1", "convergences.py::if not clearance_pending:::#1", + "convergences.py::if not feasible:::#1", + "convergences.py::if not feasible:::#2", "convergences.py::if not horizontal and not vertical:::#1", "convergences.py::if not incoming_edges or not outgoing_edges:::#1", + "convergences.py::if not inside_gap:::#1", + "convergences.py::if not isinstance(getattr(ctx, \"graph\", None), MetroGraph):::#1", + "convergences.py::if not isinstance(getattr(ctx, \"graph\", None), MetroGraph):::#2", "convergences.py::if not landing_feasible(candidate_coordinate):::#1", "convergences.py::if not moved_channels or any(::#1", + "convergences.py::if not moved_channels or any(::#2", + "convergences.py::if not moved_channels or any(::#3", "convergences.py::if not negative or not positive:::#1", - "convergences.py::if not obstacles:::#2", + "convergences.py::if not obstacles:::#1", + "convergences.py::if not obstacles:::#3", + "convergences.py::if not obstacles:::#4", + "convergences.py::if not obstacles:::#5", "convergences.py::if not plan.owns_geometry:::#1", "convergences.py::if not plan.owns_geometry:::#2", "convergences.py::if not plan.owns_geometry:::#3", @@ -191,60 +310,94 @@ "convergences.py::if not plan.owns_geometry:::#5", "convergences.py::if not runs:::#1", "convergences.py::if not segments:::#1", + "convergences.py::if not uses_exit_handedness and (::#1", + "convergences.py::if obstacles:::#1", "convergences.py::if opening is None:::#1", + "convergences.py::if opening is None:::#2", "convergences.py::if opening_follows_flank:::#2", + "convergences.py::if opening_key in moved_openings:::#1", + "convergences.py::if opening_rank is None:::#1", "convergences.py::if opening_segment is not None:::#1", "convergences.py::if opposing_approaches is not None:::#1", "convergences.py::if owned:::#1", + "convergences.py::if owned_offsets[0] is not None and owned_bases[0] is not None:::#1", + "convergences.py::if owned_offsets[1] is not None and owned_bases[1] is not None:::#1", "convergences.py::if ownership.edge in by_edge:::#1", - "convergences.py::if plan.edge in owned_edges:::#1", "convergences.py::if plan.primary_trunk_member_id == membership.member_id:::#1", - "convergences.py::if plan.system_id in execution.query.clearance_requirement_system_ids:::#1", "convergences.py::if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:::#1", "convergences.py::if plan.trunk_axis is None:::#1", "convergences.py::if plan.trunk_axis is None:::#2", + "convergences.py::if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):::#1", + "convergences.py::if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):::#2", + "convergences.py::if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):::#3", + "convergences.py::if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):::#4", + "convergences.py::if preserve_lane_offsets:::#1", + "convergences.py::if preserve_lane_offsets:::#2", "convergences.py::if primary is None:::#1", "convergences.py::if primary_edge is not None and plan.primary_trunk_member_id is not None:::#1", "convergences.py::if primary_reason is ConvergenceTrunkReason.OUTGOING_CONTINUATION:::#1", + "convergences.py::if primary_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH:::#1", "convergences.py::if query is None:::#1", + "convergences.py::if rank == carrier_rank:::#1", + "convergences.py::if requirement is None:::#1", + "convergences.py::if requirement is None:::#2", + "convergences.py::if requirement is not None:::#1", "convergences.py::if requirements:::#1", "convergences.py::if reseated is None:::#1", "convergences.py::if reseated is None:::#2", + "convergences.py::if reseated is None:::#3", + "convergences.py::if reseated is None:::#4", "convergences.py::if reseated is not None:::#1", "convergences.py::if reseated is not None:::#2", + "convergences.py::if reserved_bands is None:::#1", "convergences.py::if route is None or membership is None:::#1", "convergences.py::if route is None:::#1", "convergences.py::if route is None:::#2", "convergences.py::if route is None:::#4", "convergences.py::if route is None:::#5", "convergences.py::if route is not None:::#1", + "convergences.py::if route.curve_radii is not None:::#1", + "convergences.py::if route.curve_radii is not None:::#2", "convergences.py::if route.exit_lane_transition_plan_id is not None:::#1", "convergences.py::if route.offset_regime is OffsetRegime.DEFERRED:::#1", "convergences.py::if run is None:::#1", "convergences.py::if run is None:::#2", + "convergences.py::if run is None:::#3", + "convergences.py::if run is not None:::#1", "convergences.py::if runway < curve_radius - COORD_TOLERANCE:::#1", "convergences.py::if runway < curve_radius - COORD_TOLERANCE:::#2", "convergences.py::if same_line and first_direction is not second_direction:::#1", + "convergences.py::if section is None:::#1", "convergences.py::if shared_carrier and separation > COORD_TOLERANCE:::#1", - "convergences.py::if shortfall <= SAME_COORD_TOLERANCE:::#1", "convergences.py::if source is None:::#1", + "convergences.py::if tail is None:::#2", + "convergences.py::if tail is not None and _points_coincide(tail[0], landing.join_point):::#1", "convergences.py::if topology is None:::#1", "convergences.py::if trunk_edge_key is None:::#1", "convergences.py::if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):::#1", + "convergences.py::if uses_exit_handedness:::#1", "convergences.py::if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE:::#1", "convergences.py::landing.approach_axis is DemandAxis.X::#1", "convergences.py::landing.member_id == plan.primary_trunk_member_id::#1", + "convergences.py::landing.opening_turn_segment is not None::#1", + "convergences.py::not landing.bypass::#1", "convergences.py::obstacle_segment is None::#1", "convergences.py::opening is None::#1", "convergences.py::or abs(after[0] - end[0]) > COORD_TOLERANCE::#1", + "convergences.py::or abs(along[0][1] - along[1][1]) > COORD_TOLERANCE::#1", "convergences.py::or abs(before[0] - start[0]) > COORD_TOLERANCE::#1", "convergences.py::or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE::#1", - "convergences.py::or abs(start[1] - end[1]) > COORD_TOLERANCE::#1", + "convergences.py::or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", + "convergences.py::or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", + "convergences.py::or axis.axis is not DemandAxis.X::#1", "convergences.py::or emitted_segment != landing.opening_turn_segment::#1", + "convergences.py::or entry_port.side not in (PortSide.LEFT, PortSide.RIGHT)::#1", "convergences.py::or handedness is not landing.corner_handedness::#1", "convergences.py::or landing.opening_turn_segment is None::#1", "convergences.py::or landing_segment is None::#1", + "convergences.py::or opening is None::#1", "convergences.py::or runway < landing.minimum_runway - COORD_TOLERANCE::#1", + "convergences.py::outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE::#1", "convergences.py::owner_edge not in edge_ranks::#1", "convergences.py::runway <= COORD_TOLERANCE::#1", "core.py::for handler in (_route_tb_section, _route_entry_runway, _route_intra_section):::#1", @@ -258,22 +411,39 @@ "core.py::if validate_final_route_frames:::#1", "corners.py::if corner_idx < 0 or corner_idx >= n_corners:::#1", "corners.py::if vertical is Direction.D:::#2", + "exit_turns.py::and _vert_horiz_cross(ax0, ay0, ay1, by0, bx0, bx1)::#1", + "exit_turns.py::and _vert_horiz_cross(bx0, by0, by1, ay0, ax0, ax1)::#1", "exit_turns.py::and abs(proposed - axis.fixed_anchor_offset) > COORD_TOLERANCE::#1", + "exit_turns.py::and all(crosses(route, trunk) for route in resolved_siblings)::#1", "exit_turns.py::and axis.fixed_anchor_offset is not None::#1", + "exit_turns.py::and ay0 == ay1::#1", + "exit_turns.py::and by0 == by1::#1", "exit_turns.py::and family_id is not RouteFamilyId.MERGE_ENTRY::#1", + "exit_turns.py::and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE::#1", + "exit_turns.py::and horizontal.y > source.y + COORD_TOLERANCE::#1", "exit_turns.py::and plan.id in conflicting_plan_ids::#1", "exit_turns.py::and requirement.launch_coordinate is not None::#1", "exit_turns.py::and requirement.minimum_runway is not None::#1", "exit_turns.py::and requirement.turn_direction is not None::#1", "exit_turns.py::and requirement.turn_direction is not None::#2", "exit_turns.py::and segment_direction(start, end) is turn_direction::#1", + "exit_turns.py::and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE::#1", "exit_turns.py::assignment is None::#1", + "exit_turns.py::ax0 == ax1::#1", + "exit_turns.py::bx0 == bx1::#1", "exit_turns.py::elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(::#1", + "exit_turns.py::entry_port is None::#1", + "exit_turns.py::for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):::#1", + "exit_turns.py::for (bx0, by0), (bx1, by1) in zip(second.points, second.points[1:]):::#1", + "exit_turns.py::for _rank, horizontal in iter_horizontal_trunks(candidate):::#1", + "exit_turns.py::for merge_id, trunk_source_id in ctx.merge.trunk_source.items():::#1", + "exit_turns.py::for merge_id, trunk_source_id in ctx.merge.trunk_source.items():::#2", "exit_turns.py::for owner in (first_owner, second_owner):::#1", "exit_turns.py::for owner in owners:::#1", "exit_turns.py::for plan_id in overridden_dispositions:::#1", + "exit_turns.py::horizontal.xb > source.x + ctx.curve_radius::#1", "exit_turns.py::if (::#10", - "exit_turns.py::if (::#8", + "exit_turns.py::if (::#11", "exit_turns.py::if (::#9", "exit_turns.py::if (station_id, lane.line_id) not in station_offsets or (::#1", "exit_turns.py::if abs(delta) <= COORD_TOLERANCE:::#1", @@ -284,9 +454,11 @@ "exit_turns.py::if any(::#1", "exit_turns.py::if any(::#4", "exit_turns.py::if any(len(runs) > 1 for runs in straight_runs_by_lane.values()):::#1", + "exit_turns.py::if any(route is None for route in sibling_routes):::#1", "exit_turns.py::if assignment.planned_family_id is RouteFamilyId.BOTTOM_EXIT_JUNCTION:::#1", "exit_turns.py::if assignment.planned_family_id is not RouteFamilyId.TB_BOTTOM_EXIT:::#1", "exit_turns.py::if ctx.exit_turns is None:::#1", + "exit_turns.py::if ctx.exit_turns is None:::#2", "exit_turns.py::if current.keys() != snapshot.geometry.keys():::#1", "exit_turns.py::if current[key] != state:::#1", "exit_turns.py::if direction_axis(run_direction) is DemandAxis.Y:::#1", @@ -299,6 +471,7 @@ "exit_turns.py::if family_id is not assignment.planned_family_id:::#1", "exit_turns.py::if final_classification.legacy_reason is not None:::#1", "exit_turns.py::if geometry.bundle_offsets is None:::#1", + "exit_turns.py::if horizontal is None:::#1", "exit_turns.py::if horizontal:::#1", "exit_turns.py::if incumbent.id == plan.id:::#1", "exit_turns.py::if key not in ctx.station_offsets and port_key not in ctx.station_offsets:::#1", @@ -306,6 +479,8 @@ "exit_turns.py::if kind is _BypassRoute.LEFT_EXIT_AROUND_BELOW:::#1", "exit_turns.py::if kind is _BypassRoute.L_SHAPE:::#1", "exit_turns.py::if kind is _BypassRoute.RIGHT_ENTRY_CROSS_ROW:::#1", + "exit_turns.py::if len(barriers) != 1:::#1", + "exit_turns.py::if len(barriers) == 2:::#1", "exit_turns.py::if len(candidates) != 1:::#1", "exit_turns.py::if len(entry_group_ids) != 1:::#1", "exit_turns.py::if len(member_routes) != 1:::#1", @@ -320,41 +495,59 @@ "exit_turns.py::if not outbound_edges or missing_connectors:::#1", "exit_turns.py::if not replacements:::#1", "exit_turns.py::if off_column_decline is not None and source_run_direction not in {::#1", + "exit_turns.py::if opening is not None:::#1", + "exit_turns.py::if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y:::#1", "exit_turns.py::if overridden_dispositions:::#1", "exit_turns.py::if owner is not None:::#1", "exit_turns.py::if owners and plan.id not in owners:::#1", "exit_turns.py::if planned_corner_offsets is None:::#1", "exit_turns.py::if primary_delta * run_direction.sign < 2 * MIN_STRAIGHT_EDGE + diagonal:::#1", - "exit_turns.py::if prior is None:::#1", "exit_turns.py::if rank is None:::#1", "exit_turns.py::if reason is not None:::#1", + "exit_turns.py::if reference is None:::#1", "exit_turns.py::if route is None:::#1", "exit_turns.py::if route is None:::#2", "exit_turns.py::if route is None:::#3", + "exit_turns.py::if route.curve_radii is not None and rank < len(route.curve_radii):::#1", "exit_turns.py::if route.exit_turn_axis_id is not None:::#2", "exit_turns.py::if route.exit_turn_family_id != assignment.planned_family_id.value:::#1", "exit_turns.py::if run_direction is None or turn_direction is None:::#1", "exit_turns.py::if scaffold is None:::#1", "exit_turns.py::if scaffold is None:::#2", "exit_turns.py::if segment_rank is None:::#1", + "exit_turns.py::if set(families) != {::#1", + "exit_turns.py::if source_exit_edge is None:::#1", "exit_turns.py::if source_run_direction not in run_axis:::#1", "exit_turns.py::if source_run_direction not in {Direction.R, Direction.L}:::#1", + "exit_turns.py::if source_section is None:::#1", "exit_turns.py::if source_turn_changed and settled is None:::#1", "exit_turns.py::if transition is None:::#1", "exit_turns.py::if transition is None:::#2", "exit_turns.py::if transition is None:::#3", "exit_turns.py::if transition_key in transition_by_edge:::#1", + "exit_turns.py::if trunk_edge is None:::#1", + "exit_turns.py::if trunk_edge is None:::#2", + "exit_turns.py::if tuple(route.points[: len(opening.points)]) != opening.points:::#1", + "exit_turns.py::incoming is None::#1", + "exit_turns.py::min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE::#1", "exit_turns.py::or abs(geometry.cross_lo - target_crossing) > COORD_TOLERANCE::#1", "exit_turns.py::or abs(source_crossing - target_crossing) > COORD_TOLERANCE::#1", "exit_turns.py::or assignment.launch_coordinate is None::#1", "exit_turns.py::or assignment.minimum_runway is None::#1", "exit_turns.py::or assignment.run_direction is None::#1", "exit_turns.py::or assignment.turn_direction is None::#1", + "exit_turns.py::or direction_axis(incoming) is direction_axis(outgoing)::#1", + "exit_turns.py::or entry_port.side is not PortSide.RIGHT::#1", + "exit_turns.py::or entry_section is None::#1", + "exit_turns.py::or entry_section.grid_col != facts[0].src_col::#1", + "exit_turns.py::or entry_section.grid_row != target_row::#1", "exit_turns.py::or exit_turn_plan.system_id in skip_system_ids::#1", "exit_turns.py::or lane.line_id not in graph.station_lines(station_id)::#1", "exit_turns.py::or membership.axis is None::#1", + "exit_turns.py::or outgoing is None::#1", "exit_turns.py::or route.curve_radii != expected_route.curve_radii::#1", - "exit_turns.py::or route.exit_turn_segment_rank is None::#1", + "exit_turns.py::or route.exit_turn_segment_rank is None::#2", + "exit_turns.py::or route.fan_route_emitter is not None::#1", "exit_turns.py::or route.offset_regime is not OffsetRegime.BAKED::#1", "exit_turns.py::or route.points != expected_route.points::#1", "exit_turns.py::or turn is None::#1", @@ -383,18 +576,24 @@ "inter_section_handlers.py::elif abs(dx) > ctx.curve_radius:::#1", "inter_section_handlers.py::elif fan is not None:::#1", "inter_section_handlers.py::elif gap_bottom > gap_top:::#1", + "inter_section_handlers.py::entry_col is None::#1", + "inter_section_handlers.py::f.bypass_route is not _BypassRoute.U_BYPASS::#1", "inter_section_handlers.py::for claim in ctx.convergences.prior_channel_claims_for_edge(edge):::#1", "inter_section_handlers.py::for je in ctx.graph.edges_to(src.id):::#1", - "inter_section_handlers.py::if (::#10", + "inter_section_handlers.py::for merge_id, entry_id in f.ctx.merge.entry_port_for.items():::#1", + "inter_section_handlers.py::if (::#12", + "inter_section_handlers.py::if (::#14", "inter_section_handlers.py::if (::#4", "inter_section_handlers.py::if (::#5", "inter_section_handlers.py::if (::#6", - "inter_section_handlers.py::if (lo, matched_row, direction) in declared:::#1", + "inter_section_handlers.py::if (::#8", "inter_section_handlers.py::if _INTER_SECTION_RULES is _INDEXED_INTER_SECTION_RULES:::#1", "inter_section_handlers.py::if _corridor_is_viable(ctx, src, ep):::#1", "inter_section_handlers.py::if _corridor_is_viable(ctx, src, tgt):::#1", "inter_section_handlers.py::if _h_segment_crosses_other_section(graph, src.x, final_x, src.y, exclude):::#1", + "inter_section_handlers.py::if _h_segment_crosses_other_section(graph, sx, gap1_x, emitted_source_y, exclude):::#1", "inter_section_handlers.py::if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):::#1", + "inter_section_handlers.py::if _u_bypass_wraps_above_merge_trunk(f):::#1", "inter_section_handlers.py::if _v_segment_crosses_other_section(graph, corner_x, src.y, ey, exclude):::#1", "inter_section_handlers.py::if _v_segment_crosses_other_section(graph, dx, src.y, tgt.y, exclude):::#1", "inter_section_handlers.py::if _would_route_around_section_below(other, ctx):::#1", @@ -404,6 +603,7 @@ "inter_section_handlers.py::if abs(start[0] - end[0]) > COORD_TOLERANCE:::#2", "inter_section_handlers.py::if abs(tgt.x - src.x) <= ctx.curve_radius:::#1", "inter_section_handlers.py::if abs(tgt.x - src.x) > COORD_TOLERANCE or src.id not in ctx.graph.junctions:::#1", + "inter_section_handlers.py::if any(::#1", "inter_section_handlers.py::if band0_bottom <= band0_top or not _inter_row_band_fits(band0_top, band0_bottom):::#1", "inter_section_handlers.py::if band1_bottom <= band1_top or not _inter_row_band_fits(band1_top, band1_bottom):::#1", "inter_section_handlers.py::if band1_top <= band0_bottom + COORD_TOLERANCE:::#1", @@ -415,9 +615,11 @@ "inter_section_handlers.py::if corner_x is None:::#1", "inter_section_handlers.py::if ctx.exit_turns is None:::#1", "inter_section_handlers.py::if ctx.exit_turns is None:::#3", + "inter_section_handlers.py::if ctx.exit_turns is None:::#4", "inter_section_handlers.py::if ctx.station_offsets:::#1", "inter_section_handlers.py::if cur in graph.junctions:::#1", "inter_section_handlers.py::if edges is None:::#1", + "inter_section_handlers.py::if entry is None or source is None:::#1", "inter_section_handlers.py::if entry_port is None:::#1", "inter_section_handlers.py::if entry_port is None:::#2", "inter_section_handlers.py::if entry_side is PortSide.LEFT:::#1", @@ -429,6 +631,7 @@ "inter_section_handlers.py::if exit_side is not None:::#1", "inter_section_handlers.py::if f.h_segment_crosses_other_section(geom.corner_x, geom.vx, geom.band1_y):::#1", "inter_section_handlers.py::if f.h_segment_crosses_other_section(geom.lead_x, geom.corner_x, geom.band0_y):::#1", + "inter_section_handlers.py::if f.left_entry_from_right:::#2", "inter_section_handlers.py::if f.v_segment_crosses_other_section(corner_x, band0_y, band1_y, exclude):::#1", "inter_section_handlers.py::if f.v_segment_crosses_other_section(geom.lead_x, src.y, geom.band0_y):::#1", "inter_section_handlers.py::if f.v_segment_crosses_other_section(vx, gy, tgt.y):::#1", @@ -452,9 +655,12 @@ "inter_section_handlers.py::if mid_y is None:::#1", "inter_section_handlers.py::if min(drop_xs) < _section_right_edge(graph, tgt) - COORD_TOLERANCE:::#1", "inter_section_handlers.py::if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:::#1", + "inter_section_handlers.py::if not (::#5", "inter_section_handlers.py::if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):::#1", + "inter_section_handlers.py::if not _h_segment_crosses_other_section(::#1", "inter_section_handlers.py::if not _inter_row_band_fits(gap_top, gap_bottom):::#1", "inter_section_handlers.py::if not _inter_row_band_fits(gap_top, gap_bottom):::#2", + "inter_section_handlers.py::if not any(::#1", "inter_section_handlers.py::if not candidates:::#1", "inter_section_handlers.py::if not is_inter:::#1", "inter_section_handlers.py::if not normalize_exempt:::#1", @@ -465,7 +671,6 @@ "inter_section_handlers.py::if plan.entry_runway is None:::#1", "inter_section_handlers.py::if planned_transition is not None:::#2", "inter_section_handlers.py::if port is None or port.side is not PortSide.RIGHT or section is None:::#1", - "inter_section_handlers.py::if port.side == PortSide.LEFT:::#1", "inter_section_handlers.py::if port.side is PortSide.TOP:::#1", "inter_section_handlers.py::if query is None:::#1", "inter_section_handlers.py::if query is None:::#2", @@ -483,6 +688,7 @@ "inter_section_handlers.py::if section not in landing_sections:::#1", "inter_section_handlers.py::if self.launch_coordinate is None or self.axis_coordinate is None:::#1", "inter_section_handlers.py::if shape.around_below:::#1", + "inter_section_handlers.py::if shape.right_entry_wrap:::#1", "inter_section_handlers.py::if shared_vx is not None:::#1", "inter_section_handlers.py::if sibling_port is None or not sibling_port.is_entry:::#1", "inter_section_handlers.py::if sibling_route is None or len(sibling_route.points) < 6:::#1", @@ -510,7 +716,18 @@ "inter_section_handlers.py::membership is None::#2", "inter_section_handlers.py::or _bypass_route_kind(facts) is not _BypassRoute.U_BYPASS::#1", "inter_section_handlers.py::or emission.emitter is not FanRouteEmitter.BOTTOM_EXIT_RIGHT_LANDINGS::#1", + "inter_section_handlers.py::or entry_row < f.tgt_row::#1", + "inter_section_handlers.py::or entry_row is None::#1", + "inter_section_handlers.py::or f.horizontal is not Direction.L::#1", + "inter_section_handlers.py::or f.src_col is None::#1", + "inter_section_handlers.py::or f.src_row is None::#1", + "inter_section_handlers.py::or f.tgt_col is None::#1", + "inter_section_handlers.py::or f.tgt_row is None::#1", + "inter_section_handlers.py::or not f.src_col < entry_col::#1", + "inter_section_handlers.py::or not f.tgt_col < source_col < f.src_col::#1", "inter_section_handlers.py::or plan.fork_station_id != edge.source::#1", + "inter_section_handlers.py::or source_col is None::#1", + "inter_section_handlers.py::or source_row != f.src_row::#1", "inter_section_handlers.py::or target_port is None::#1", "inter_section_handlers.py::or target_port.side is not PortSide.RIGHT::#1", "inter_section_handlers.py::plan.disposition is not FanPlanDisposition.PLANNED::#1", @@ -543,44 +760,81 @@ "intra_handlers.py::if segment_intersects_bbox(x1, y1, x2, y2, bbox):::#1", "intra_handlers.py::if sibling is None:::#1", "intra_handlers.py::if st.id in blocker_ids:::#1", + "member_geometry.py::before is None::#1", "member_geometry.py::elif abs(start[0] - end[0]) <= COORD_TOLERANCE:::#1", + "member_geometry.py::for (::#1", + "member_geometry.py::for fixed_plan, fixed_channel, interior, endpoint in fixed_claims:::#1", + "member_geometry.py::if (::#2", + "member_geometry.py::if (::#3", + "member_geometry.py::if (::#4", + "member_geometry.py::if (::#8", "member_geometry.py::if (run_direction in {Direction.R, Direction.L}) == (::#1", "member_geometry.py::if 0 <= rank - 1 < len(radii):::#1", + "member_geometry.py::if _planner_owns_channel(::#1", "member_geometry.py::if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:::#1", + "member_geometry.py::if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if abs(channel.x - target) <= COORD_TOLERANCE:::#1", - "member_geometry.py::if abs(coordinate - claim.coordinate) > COORD_TOLERANCE:::#1", "member_geometry.py::if actual != (channel.start, channel.end):::#1", - "member_geometry.py::if any(::#1", + "member_geometry.py::if allocated is None:::#1", "member_geometry.py::if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:::#1", + "member_geometry.py::if candidate_x is None:::#1", + "member_geometry.py::if channel is None:::#1", + "member_geometry.py::if claim in channel_claims:::#1", + "member_geometry.py::if claim not in channel_claims:::#1", "member_geometry.py::if context is not None:::#1", "member_geometry.py::if convergence_owns_segment_boundary(route, segment_rank):::#1", "member_geometry.py::if coordinate is not None:::#1", "member_geometry.py::if ctx.exit_turns is None or not pending_plan_ids:::#1", + "member_geometry.py::if direction not in (Direction.U, Direction.D):::#1", "member_geometry.py::if edge is None or family_id is None:::#1", "member_geometry.py::if edge is None:::#1", + "member_geometry.py::if edge_key not in reseated:::#1", "member_geometry.py::if family_id is None:::#1", - "member_geometry.py::if item.candidate.route.line_id in claim.line_ids and (::#1", "member_geometry.py::if key in ctx.skip_edges:::#1", + "member_geometry.py::if membership is None or membership.assignment is None:::#1", + "member_geometry.py::if membership is not None:::#1", "member_geometry.py::if movable_run:::#1", + "member_geometry.py::if not _candidate_clears_runway(::#1", + "member_geometry.py::if not any(::#1", "member_geometry.py::if not candidate_ranks:::#1", + "member_geometry.py::if not changed:::#1", + "member_geometry.py::if not ctx.validate_final_route_frames:::#1", + "member_geometry.py::if not ctx.validate_final_route_frames:::#2", + "member_geometry.py::if not moved_ranks:::#1", + "member_geometry.py::if not opening_size or opening_size + 1 >= len(route.points):::#1", "member_geometry.py::if not section_ids:::#1", "member_geometry.py::if offsets is None or bases is None or offset is None or base is None:::#1", + "member_geometry.py::if opening is not None:::#1", "member_geometry.py::if overlap <= MIN_CORRIDOR_Y_OVERLAP:::#1", "member_geometry.py::if radii is not None:::#1", "member_geometry.py::if radius_index + 2 >= len(route.points):::#1", "member_geometry.py::if radius_index >= len(radii):::#1", "member_geometry.py::if rank < len(radii):::#1", + "member_geometry.py::if rank < len(route.exit_shared_opening_points):::#1", "member_geometry.py::if route is None:::#1", + "member_geometry.py::if route is None:::#2", "member_geometry.py::if route.exit_lane_transition_plan_id is not None:::#1", "member_geometry.py::if route.fan_plan_id is not None or route.fan_route_emitter is not None:::#1", "member_geometry.py::if run_direction is None or turn_direction is None:::#2", + "member_geometry.py::if shared_opening_tail is not None:::#1", "member_geometry.py::if source is None or source is route:::#1", "member_geometry.py::if system_id not in failures:::#1", + "member_geometry.py::if target.section_id is None:::#1", + "member_geometry.py::if target.section_id is None:::#2", "member_geometry.py::if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:::#1", + "member_geometry.py::or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE::#1", + "member_geometry.py::or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE::#1", + "member_geometry.py::or after is None::#1", "normalize.py::abs(p0[1] - p1[1]) > COORD_TOLERANCE::#1", + "normalize.py::and band.boundary is None::#1", + "normalize.py::and band.hi >= band.lo - COORD_TOLERANCE::#1", + "normalize.py::and base_in is not None::#1", + "normalize.py::and base_out is not None::#1", "normalize.py::and crossed[0] < span[1]::#1", "normalize.py::and gt is not None::#1", "normalize.py::and span[0] < crossed[1]::#1", + "normalize.py::assignment is None::#1", + "normalize.py::band is not None::#1", "normalize.py::dx is None::#1", "normalize.py::elif above_ok:::#1", "normalize.py::elif below_ok and (not above_ok or prefer_below):::#1", @@ -588,31 +842,37 @@ "normalize.py::elif far_y < t.y - COORD_TOLERANCE:::#1", "normalize.py::elif right_ok:::#1", "normalize.py::elif up_ok:::#1", - "normalize.py::for _ in range(32):::#1", "normalize.py::for _ in range(max(1, len(buckets))):::#1", "normalize.py::for _step in range(64):::#1", "normalize.py::for ch in downs:::#1", "normalize.py::for descent in downs:::#1", "normalize.py::for group in _merge_feeder_groups(routes, ctx):::#1", "normalize.py::for grp in groups:::#3", + "normalize.py::for item in group:::#1", "normalize.py::for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):::#1", "normalize.py::for r, k, _y in crossing:::#1", "normalize.py::for sign in (1, -1):::#1", "normalize.py::for up in ups:::#1", "normalize.py::go is not None::#1", - "normalize.py::held[0] - COORD_TOLERANCE < coord < held[1] + COORD_TOLERANCE::#1", "normalize.py::if (::#1", - "normalize.py::if (::#4", - "normalize.py::if (::#7", + "normalize.py::if (::#10", + "normalize.py::if (::#8", + "normalize.py::if (::#9", + "normalize.py::if (cross_below is not None and cross_above is not None) or not (::#1", "normalize.py::if 0 <= k - 1 < len(rp.curve_radii):::#1", - "normalize.py::if _planner_owns_channel(ch):::#2", + "normalize.py::if None not in convergence_plan_ids and len(convergence_plan_ids) == 1:::#1", + "normalize.py::if _planner_owns_channel(ch) and (::#2", "normalize.py::if _section_intrudes(::#1", "normalize.py::if a_trunk is None or b_trunk is None:::#1", "normalize.py::if abs(ch.x - descent.x) <= COORD_TOLERANCE:::#1", + "normalize.py::if abs(corner[1] - after[1]) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(delta) <= COORD_TOLERANCE:::#2", "normalize.py::if abs(dx) > COORD_TOLERANCE:::#1", + "normalize.py::if abs(first_x - second_x) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(ly - pts[1][1]) < COORD_TOLERANCE:::#1", "normalize.py::if abs(overlap) > COORD_TOLERANCE:::#1", + "normalize.py::if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:::#1", + "normalize.py::if abs(shift) <= COORD_TOLERANCE or any(::#1", "normalize.py::if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(up.x - descent.x) > radius:::#1", "normalize.py::if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:::#1", @@ -623,33 +883,32 @@ "normalize.py::if any(::#11", "normalize.py::if any(::#12", "normalize.py::if any(::#13", - "normalize.py::if any(::#5", + "normalize.py::if any(::#14", "normalize.py::if any(::#6", "normalize.py::if any(::#7", - "normalize.py::if any(::#8", "normalize.py::if any(::#9", - "normalize.py::if any(abs(base - bases[0]) > COORD_TOLERANCE for base in bases[1:]):::#1", "normalize.py::if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):::#1", - "normalize.py::if band is not None:::#1", - "normalize.py::if band is not None:::#2", + "normalize.py::if band is None:::#3", "normalize.py::if below_ok and above_ok and (cross_below is None) != (cross_above is None):::#1", "normalize.py::if best < cur:::#1", - "normalize.py::if ca != cb:::#1", + "normalize.py::if boundary_dogleg_stitch(rp, ch, target):::#1", + "normalize.py::if ch.route.convergence_plan_id is not None:::#1", "normalize.py::if channel is None:::#1", "normalize.py::if channel.idx == 0:::#1", - "normalize.py::if clearance <= 0:::#1", "normalize.py::if col in moved:::#1", "normalize.py::if col is None:::#1", + "normalize.py::if cross_below is not None and cross_above is not None:::#1", + "normalize.py::if crosses_source_interior(trunk_ch.x) and not crosses_source_interior(::#1", + "normalize.py::if ctx.convergences is None:::#1", "normalize.py::if ctx.exit_turns is None:::#1", + "normalize.py::if ctx.exit_turns is None:::#2", "normalize.py::if ctx.validate_final_route_frames:::#1", "normalize.py::if down is None or len(up.points) < 2:::#1", - "normalize.py::if down_ok and up_ok and (cross_down is None) != (cross_up is None):::#1", "normalize.py::if feats is None:::#1", "normalize.py::if gap_right <= gap_left:::#1", "normalize.py::if gap_right <= gap_left:::#2", - "normalize.py::if has_planned_channel and any(::#1", + "normalize.py::if has_immovable_planned_channel and any(::#1", "normalize.py::if i in relocated:::#1", - "normalize.py::if k + 2 != len(pts) - 1 or y_hi - y_lo < radius:::#1", "normalize.py::if k < len(rp.curve_radii) and k + 2 < len(pts):::#1", "normalize.py::if k == desc.idx + 1:::#1", "normalize.py::if len(pts) < 2:::#1", @@ -662,18 +921,18 @@ "normalize.py::if mid + half > gap_right + COORD_TOLERANCE:::#1", "normalize.py::if mid - half < gap_left - COORD_TOLERANCE:::#1", "normalize.py::if movable_channels:::#1", + "normalize.py::if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):::#1", "normalize.py::if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:::#1", "normalize.py::if not 0 <= far < len(pts):::#1", "normalize.py::if not 0 <= radius_idx < len(rp.curve_radii):::#1", "normalize.py::if not any(not t.route.normalize_exempt for t in grp):::#2", - "normalize.py::if not blockers:::#1", "normalize.py::if not changed:::#1", "normalize.py::if not chans:::#1", "normalize.py::if not crossing:::#1", "normalize.py::if not downs or not ups:::#1", - "normalize.py::if not primary and any(::#1", + "normalize.py::if not leaves_grid:::#1", + "normalize.py::if not primary and fixed_obstacles:::#1", "normalize.py::if not reference_fits(lower):::#1", - "normalize.py::if not reference_fits(reference_radius):::#1", "normalize.py::if not sibling_xs:::#1", "normalize.py::if not verticals:::#1", "normalize.py::if not votes:::#1", @@ -681,9 +940,13 @@ "normalize.py::if overlap <= COORD_TOLERANCE:::#1", "normalize.py::if planned and max(planned) - min(planned) > COORD_TOLERANCE:::#1", "normalize.py::if planned_offsets is None:::#1", - "normalize.py::if port is not None and port.is_entry:::#1", + "normalize.py::if rank + 2 < len(route.points):::#1", + "normalize.py::if rank > 0:::#1", + "normalize.py::if reconcile_owned_corridor:::#1", + "normalize.py::if reconcile_owned_corridor:::#2", + "normalize.py::if reconcile_owned_corridor:::#3", + "normalize.py::if reconcile_owned_corridor:::#4", "normalize.py::if ref is not None:::#1", - "normalize.py::if reference_fits(midpoint):::#1", "normalize.py::if rep_x[a] != rep_x[b]:::#1", "normalize.py::if resolved < common:::#1", "normalize.py::if route.curve_radii is None or membership is None:::#1", @@ -698,14 +961,27 @@ "normalize.py::if sg[0].sign_x != t.sign_x:::#1", "normalize.py::if slot is None or trunk is None or trunk[0] != k:::#1", "normalize.py::if source_col is None:::#1", + "normalize.py::if source_section is not None and source_section.bbox_w > 0:::#1", "normalize.py::if target is None:::#1", "normalize.py::if target_x is None:::#1", + "normalize.py::if trunk_segments_cross(::#1", "normalize.py::if up.route.line_id != descent.route.line_id:::#1", + "normalize.py::not secondary_may_yield_at_shared_source::#1", + "normalize.py::or abs(corner[1] - after[1]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p1[0] - p2[0]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p2[1] - p3[1]) > COORD_TOLERANCE::#1", + "normalize.py::or any(run.route.exit_turn_plan_id is not None for run in lane.runs)::#1", + "normalize.py::or assignment.turn_direction is None::#1", "normalize.py::or base_radius is None::#1", + "normalize.py::or ch.y_hi - ch.y_lo > 2 * ctx.offset_step + COORD_TOLERANCE::#1", + "normalize.py::or entry is None::#1", + "normalize.py::or len(route.points) < 3::#1", "normalize.py::or not 0 <= radius_index < len(route.curve_radii)::#1", + "normalize.py::or not lane_sources & fixed_sources::#1", + "normalize.py::or port is None::#1", + "normalize.py::or port.side not in (PortSide.LEFT, PortSide.RIGHT)::#1", "normalize.py::or radius_index + 2 >= len(route.points)::#1", + "normalize.py::while joined := [::#1", "offsets.py::and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE::#1", "offsets.py::elif feeding_exit != edge.source:::#1", "offsets.py::for _ in range(len(graph.stations) + 1):::#1", @@ -747,6 +1023,7 @@ "offsets.py::if key not in ctx.offsets:::#1", "offsets.py::if len(nbr_lines) < 2:::#1", "offsets.py::if len(seed_lines) < 2:::#2", + "offsets.py::if len(set(assigned.values())) < len(assigned):::#1", "offsets.py::if len(set(feeder_row.values())) < 2:::#1", "offsets.py::if len(shared) < 2:::#1", "offsets.py::if lid in new_off:::#1", @@ -814,10 +1091,17 @@ "perp.py::if entry_port is None or not entry_port.is_entry:::#1", "perp.py::if needs_perp_approach_fan(graph, entry_port.id):::#1", "perp.py::if not feeders:::#1", + "planning.py::elif abs(first[1] - second[1]) <= COORD_TOLERANCE:::#1", + "planning.py::for index, point in enumerate(points):::#1", + "planning.py::if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:::#1", + "planning.py::if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:::#1", + "planning.py::if changed:::#1", "planning.py::if corner_offsets is None:::#1", "planning.py::if membership is None:::#1", + "planning.py::if not replacements:::#1", "planning.py::if plan.curve_radii is None or ctx.exit_turns is None:::#1", "planning.py::if scaffold is None:::#1", + "planning.py::if settled is None or rank is None:::#1", "planning.py::if station_offsets is not None:::#1", "postprocess.py::if abs(dx_diag) <= COORD_TOLERANCE_FINE:::#1", "postprocess.py::if abs(in_flat) < 1 or abs(out_flat) < 1:::#1", @@ -842,13 +1126,16 @@ "rail.py::if sib_rails:::#1", "rail.py::if st is None:::#1", "reserved_bands.py::if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:::#1", - "reserved_bands.py::if band is None or band.hi < band.lo - COORD_TOLERANCE:::#1", "reserved_bands.py::if band is None:::#2", "reserved_bands.py::if boundary is None:::#1", "reserved_bands.py::if lower > upper + COORD_TOLERANCE:::#1", "reserved_bands.py::if realised is None:::#1", + "reserved_bands.py::if realised is None:::#2", + "reserved_bands.py::if seat is None:::#1", "reserved_bands.py::if self.allocation is not None and not math.isfinite(self.allocation):::#1", "reserved_bands.py::if self.hi < self.lo - COORD_TOLERANCE:::#1", + "reserved_bands.py::if start[0] != end[0] or final_start[1] != final_end[1]:::#1", + "reserved_bands.py::if target is None or not target.is_port or target.section_id is None:::#1", "reversal.py::elif src.is_port:::#1", "reversal.py::if entry and entry.section_id and entry.section_id != src.section_id:::#1", "reversal.py::if jid in seen:::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index 807205317..76001b83e 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -239,14 +239,6 @@ "note": "The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it.", "status": "needs-review" }, - "convergences.py::if (::#10": { - "note": "Pre-existing gap, re-keyed from #8 by the gates the restored conflict conditions inserted earlier in the file (same never-executed line, same [0,0] split). Dead sub-block of _settle_opposing_gap_flanks' landing-opening move: its enclosing `if not obstacles:` never takes the has-obstacles arm, so no non-flank plan gap channel is ever crowded by a resident one and nothing below line 3072 runs. What would settle it is a fixture whose settled convergence gap channel crowds a resident member channel of a different line in the same column gap.", - "status": "candidate-dead" - }, - "convergences.py::if (::#15": { - "note": "Pre-existing gap, re-keyed from #11 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). validate_convergence_plans' re-check that a landing's join point sits on its plan's own trunk axis and on the trunk route's polyline. The join point is derived from the trunk axis when the plan is built and consume_convergence_route connects the emitted endpoint to it, so taking the raise arm means the planner contradicted its own axis: an engine bug and a hard abort, not a shippable topology.", - "status": "defensive" - }, "convergences.py::if (::#16": { "note": "Pre-existing gap, re-keyed from #12 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). The raise for a covered continuation absent from the carrier member that is recorded as covering it. _reconcile_continuation_ownership only names a carrier whose route already spans the continuation's endpoints, so the raise arm reports an engine bug and aborts the render; no valid topology reaches it.", "status": "defensive" @@ -255,10 +247,6 @@ "note": "Pre-existing gap, re-keyed from #13 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,0] split). Never executed rather than half-taken: its enclosing `if continuation.covered_by_member_id is not None:` never takes the None arm on any of the 18 fixtures that validate a planned convergence, so an uncovered outgoing continuation does not exist in this corpus. What would settle it is a topology whose continuation no endpoint owner's route spans, which _reconcile_continuation_ownership would then leave uncovered.", "status": "candidate-dead" }, - "convergences.py::if (::#4": { - "note": "_opposing_landing_approaches' SHARED_APPROACH_CHANNEL condition: two feeders of one line whose approach runs stand on one coordinate travelling against each other. The loop reaches this pair test on 17 fixtures, so the shape of the scan is exercised. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap, at separation 0 with 150px of overlap, so that pass alone is what keeps it silent; the two opening passes account for none of it. Reachable. Reaching it is now a feasibility refusal rather than a change of emitter -- see #1712.", - "status": "needs-review" - }, "convergences.py::if (::#6": { "note": "A landing enters `ordered` only because _landing_cross_segment admitted it, and laning moves that run rather than removing it, so the read that names the landing as a resident always finds a segment. The gate guards the Optional that read returns.", "status": "defensive" @@ -299,10 +287,6 @@ "note": "_channels_share_source_carrier's shared-claimant shortcut. Its sole caller is _validate_final_convergence_feasibility, which pairs a convergence plan channel against a frozen member channel; the intersection is non-empty only when the plan's channel names the very member it is compared with, which no corpus fixture produces. Reachable in principle, wants a fixture.", "status": "needs-review" }, - "convergences.py::if first.member_geometry_owned == second.member_geometry_owned:::#1": { - "note": "_channels_share_source_carrier's equal-ownership rejection. Its sole caller always pairs a convergence-owned channel with a member-owned one, so the two flags always differ and the rejection arm is unreachable from that caller. Reachable only if a second caller compares two channels of one owner.", - "status": "needs-review" - }, "convergences.py::if first_delta * second_delta < 0:::#1": { "note": "OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712.", "status": "needs-review" @@ -331,18 +315,10 @@ "note": "Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored.", "status": "needs-review" }, - "convergences.py::if not obstacles:::#2": { - "note": "The ordinal moved when the endpoint check left this condition; the arm is the ordinary no-crowding case _lane_trunk_flanks takes on most plans.", - "status": "defensive" - }, "convergences.py::if opposing_approaches is not None:::#1": { "note": "The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture.", "status": "needs-review" }, - "convergences.py::if plan.edge in owned_edges:::#1": { - "note": "_member_corridor_runs skips a frozen member plan whose edge a convergence already owns, but the two sets are disjoint by construction: build_member_geometry_execution never freezes a plan for an edge in _convergence_member_edges (member_geometry.py:1010), and resolved_member_edges is derived from the same scaffold predicate. 3830 frozen member plans across 348 fixtures, zero hits.", - "status": "defensive" - }, "convergences.py::if plan.trunk_axis is None:::#1": { "note": "_turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one.", "status": "defensive" @@ -455,10 +431,6 @@ "note": "Reachable only via a defective render (inter-row corridor on a <78px gap); see #722.", "status": "needs-review" }, - "inter_section_handlers.py::if (lo, matched_row, direction) in declared:::#1": { - "note": "The un-exercised arm is the fresh declaration, not the dedupe skip: declared is seeded from the slots the handler's targeted _declare_channel calls already made, and on the corpus every gap-landing leg of a frozen frame is one of those, so the sweep only ever skips. The declaration fires where two targeted declarations collapse onto one gap and direction, leaving a third leg holding a gap nothing named -- the case the left-entry corridor and U-bypass call sites are commented for.", - "status": "needs-review" - }, "inter_section_handlers.py::if _corridor_is_viable(ctx, src, ep):::#1": { "note": "Reachable only via a defective render (route skirts/crosses section boundary); see #724.", "status": "needs-review" @@ -735,10 +707,6 @@ "note": "_align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored.", "status": "needs-review" }, - "member_geometry.py::if abs(coordinate - claim.coordinate) > COORD_TOLERANCE:::#1": { - "note": "The rejection inside feasible()'s same-line-carrier clause. Unreached for the same reason as its enclosing gate `if item.candidate.route.line_id in claim.line_ids and (:::#1`. Reachable.", - "status": "needs-review" - }, "member_geometry.py::if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:::#1": { "note": "_candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable.", "status": "needs-review" @@ -747,10 +715,6 @@ "note": "_convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures).", "status": "defensive" }, - "member_geometry.py::if item.candidate.route.line_id in claim.line_ids and (::#1": { - "note": "feasible()'s same-line-carrier clause, which forbids a candidate delta that would split a carrier the bundle already shares with a claim. No fixture reaches the feasibility search with a same-line source-compatible claim in range: _align_same_line_channels seats such a member on its claim before the bundle allocation runs. Reachable, wants a fixture.", - "status": "needs-review" - }, "member_geometry.py::if key in ctx.skip_edges:::#1": { "note": "Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract.", "status": "candidate-dead" @@ -811,10 +775,6 @@ "note": "_suboptimal_trunk_bands direction loop: validate-only, not on the render path.", "status": "defensive" }, - "normalize.py::held[0] - COORD_TOLERANCE < coord < held[1] + COORD_TOLERANCE::#1": { - "note": "Held-axis bracket in _run_enters_section, the section-intrusion veto's first test. No corpus separation target lands within a section's extent on the held axis, so the inside arm never fires; the same defensive reasoning as the veto it serves.", - "status": "defensive" - }, "normalize.py::if (::#1": { "note": "The settled exit-turn radius mismatch raises only after construction or a later pass changes a recorded planned corner without updating its concentric inputs. Valid production derives both values together; test_gap_plan_validator_rejects_a_changed_corner_radius exercises both failure flanks.", "status": "defensive" @@ -863,18 +823,6 @@ "note": "Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness.", "status": "needs-review" }, - "normalize.py::if any(::#8": { - "note": "Compatibility convergence may not move a planner-owned final channel or reseat a channel through a foreign section. Complete direct-port opposing tails are unplanned and placement reserves their target band; the true arm therefore defends broken ownership or obstruction state. test_planner_owned_opposing_group_is_left_atomic and test_obstructed_opposing_group_is_left_atomic exercise both rejection reasons.", - "status": "defensive" - }, - "normalize.py::if band is not None:::#1": { - "note": "Same-line dogleg: the band-found arm is exercised by dogleg_exempt_sameline; the band-is-None arm is defensive (both colliding trunks route through _center_inter_row_channel, so the trunk Y always resolves to a gap band).", - "status": "defensive" - }, - "normalize.py::if band is not None:::#2": { - "note": "Distinct-line dogleg: the band-found arm (->1327) is exercised by dogleg_exempt_distinct (#702). The remaining band-is-None arm (->1331) is defensive: a trunk reaching this second loop collides with an exempt bypass obstacle that lives in an inter-row gap, so _inter_row_gap_band(ctx, t.y) always resolves to a band - the same mechanism already accepted for the sibling 'if band is not None:::#1'.", - "status": "defensive" - }, "normalize.py::if below_ok and above_ok and (cross_below is None) != (cross_above is None):::#1": { "note": "Distinct-line dogleg side selection. The crossing-decided true arm (->1342) is exercised by dogleg_exempt_distinct. The false fall-through (->1343) needs a crossing-equal tie; a crossing-free tie requires degenerate zero-length exempt risers and the only realizable tie is both-cross, which trips _guard_no_dogleg_crosses_exempt_trunk plus the section-crossing guards and is never a shippable render.", "status": "defensive" @@ -895,10 +843,6 @@ "note": "Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main.", "status": "needs-review" }, - "normalize.py::if down_ok and up_ok and (cross_down is None) != (cross_up is None):::#1": { - "note": "Same-line dogleg side selection. The crossing-decided true arm (->1297, pick the side whose riser does not pierce the exempt run) is exercised by dogleg_exempt_sameline. The false fall-through (->1298) needs either an out-of-band side or a crossing-equal tie, neither reachable by a clean topology: the reachable dogleg regime rigidly fixes the inter-row band so down_room/up_room stay >= min_sep=6 (observed 14/26 across the corpus and every constructed variant; perturbing the grid loses the regime), and the only realizable tie is both-cross (a crossing-free tie needs degenerate zero-length exempt risers) which co-occurs with section-crossing / dogleg-crosses-exempt guard failures and is never a shippable render.", - "status": "defensive" - }, "normalize.py::if feats is None:::#1": { "note": "Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken.", "status": "defensive" @@ -907,10 +851,6 @@ "note": "Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound.", "status": "defensive" }, - "normalize.py::if k + 2 != len(pts) - 1 or y_hi - y_lo < radius:::#1": { - "note": "Shape guard in _land_feeder_on_run. _route_merge_branch emits exactly four waypoints, while an alternate attached-source construction or a malformed hand-built route can add points; the second half rejects a descent too short to re-form its corner. Neither shape occurs in the corpus (#1597).", - "status": "defensive" - }, "normalize.py::if k < len(rp.curve_radii) and k + 2 < len(pts):::#1": { "note": "Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive.", "status": "defensive" diff --git a/tests/test_candidate_executor.py b/tests/test_candidate_executor.py index c5fe4f804..e61fcfc62 100644 --- a/tests/test_candidate_executor.py +++ b/tests/test_candidate_executor.py @@ -899,6 +899,21 @@ def forbidden(*args: object, **kwargs: object) -> object: assert " None: + path = ROOT / "tests/fixtures/hash_seed_determinism/seed_15.mmd" + baseline = execute_candidates( + CandidateExecutionRequest( + path.read_text(), + source_dir=str(path.parent), + limits=ExecutionLimits(1, 20.0, 30.0), + ) + ).baseline + + assert baseline.status is CandidateStatus.ACCEPTED + assert baseline.stage is CandidateStage.COMPLETE + assert not baseline.evidence.artifact_findings + + def test_frozen_sources_are_results_not_frozen_stages_across_hash_seeds() -> None: script = ROOT / "tests/candidate_executor_oracle.py" observations: list[dict[str, dict[str, str]]] = [] diff --git a/tests/test_convergence_planner.py b/tests/test_convergence_planner.py index 08756ecff..5fb5c5a20 100644 --- a/tests/test_convergence_planner.py +++ b/tests/test_convergence_planner.py @@ -383,6 +383,40 @@ def test_frozen_recovery_seeds_have_complete_planned_convergences(name: str) -> assert not check_merge_feeders_land_on_trunk(graph, observed.routes, offsets) +def test_seed_15_owned_lane_envelope_requests_boundary_three_runway() -> None: + _graph, _offsets, observed = _observe( + FROZEN / "seed_15.mmd", allow_clearance_requirements=True + ) + + runway_boundaries = { + requirement.boundary + for requirement in observed.plan.boundary_clearance_requirements + if requirement.description.endswith(" runway") + } + + assert runway_boundaries == {3} + + +def test_seed_41_outer_owned_lane_needs_no_boundary_two_runway() -> None: + from nf_metro.layout.routing.normalize import _opening_fanout_descent + + _graph, _offsets, observed = _observe( + FROZEN / "seed_41.mmd", allow_clearance_requirements=True + ) + route = next( + route + for route in observed.routes + if ResolvedEdge(route.edge.source, route.edge.target, route.line_id) + == ResolvedEdge("__junction_28", "__merge_10", "l0") + ) + + assert not any( + requirement.boundary == 2 + for requirement in observed.plan.boundary_clearance_requirements + ) + assert _opening_fanout_descent(route) is not None + + def test_mixed_direct_bypass_and_multirow_approaches_are_frozen() -> None: _graph, _offsets, observed = _observe(FROZEN / "seed_15.mmd") landings = [ diff --git a/tests/test_envelope_settlement.py b/tests/test_envelope_settlement.py index 7f92cd76a..76c4475c9 100644 --- a/tests/test_envelope_settlement.py +++ b/tests/test_envelope_settlement.py @@ -27,6 +27,7 @@ EnvelopeSettlement, SettlementAxis, SettlementShortfall, + SettlementTranslation, measure_boundary_clearance_requirements, quantised_allocation, settle_route_envelopes, @@ -131,9 +132,7 @@ def test_drawn_corridor_grant_accounts_for_recentering_on_either_side( # Fixtures whose only deficit falls on a column boundary, so the column phase has # to translate rather than merely confirm. -COLUMN_DEFICIT_CORPUS = ( - ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd", -) +COLUMN_DEFICIT_CORPUS = (TOPOLOGIES / "complex_multipath.mmd",) # Offsets a whole map is moved by to check the allocation reads the deficit and # not the coordinates it is measured at. None is a whole pixel and none is @@ -245,6 +244,49 @@ def _observe_moved(path: Path, delta: float): return graph, observation.plan, polylines +def test_hidden_route_endpoints_follow_their_semantic_sections() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + _graph, plan = _observe(path) + translation = SettlementTranslation( + SettlementAxis.COLUMN, + 3, + 816.0, + 57.0, + None, + (), + (), + ("s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7"), + (), + ) + projected = envelope_settlement._reservation_coordinate_translation( + translation, plan + ) + member_by_edge = { + (member.edge.source, member.edge.target, member.edge.line_id): member.id + for member in plan.members + } + fully_owned = { + ("__junction_20", "__merge_8", "l0"), + ("__merge_8", "s4__entry_right_11", "l0"), + ("__junction_21", "s4__entry_right_11", "l1"), + ("__junction_22", "__merge_8", "l0"), + ("__junction_22", "s5__entry_right_16", "l0"), + ("__junction_23", "s5__entry_right_16", "l2"), + ("__junction_23", "s6__entry_right_14", "l2"), + } + assert { + edge + for edge in fully_owned + if member_by_edge[edge] in projected.fully_owned_member_ids + } == fully_owned + + crossing = member_by_edge[("__junction_22", "__merge_10", "l1")] + held = member_by_edge[("__merge_10", "s8__entry_right_17", "l1")] + assert crossing in projected.crossing_member_ids + assert held not in projected.fully_owned_member_ids + assert held not in projected.crossing_member_ids + + def _allocations(graph, plan) -> dict[tuple[SettlementAxis, int], float]: """What settling *plan* on *graph* widens each boundary by. @@ -587,10 +629,7 @@ def test_a_group_band_render_is_gated_by_the_geometry_it_draws() -> None: # Fixtures that run a column translation while row corridors exist, so the row # phase's result is exposed to the column phase. -CROSS_AXIS_CORPUS = ( - TOPOLOGIES / "complex_multipath.mmd", - ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd", -) +CROSS_AXIS_CORPUS = (TOPOLOGIES / "complex_multipath.mmd",) SECTION_EDGE_BLOCKERS = frozenset( @@ -766,21 +805,20 @@ def test_one_translation_settles_every_claim_on_its_boundary() -> None: """Two corridors starved at one boundary are one widening, not two. ``convergent_offrow_exit_climb`` puts a topology-span claim and an - observed-run claim in row gap 0/1, short by 2px and by 6px, and one - translation of row 1 onward -- sized to the deeper of the two -- satisfies - both. + observed-run claim in row gap 0/1. Their lane envelopes leave both 14px + short, and one translation of row 1 onward satisfies both. """ path = TOPOLOGIES / "convergent_offrow_exit_climb.mmd" graph, plan = _observe(path) starved = _capacity_deficits(plan) assert len(starved) == 2 - assert set(starved.values()) == {-2.0, -6.0} + assert set(starved.values()) == {-14.0} settlement = settle_route_envelopes(graph, plan) (translation,) = settlement.translations assert translation.axis is SettlementAxis.ROW assert translation.boundary == 1 - assert translation.amount == pytest.approx(6.0) + assert translation.amount == pytest.approx(14.0) assert {str(item) for item in translation.reservation_ids} == set(starved) for reservation_id in starved: @@ -914,7 +952,7 @@ def test_the_column_phase_leaves_every_row_corridor_the_width_it_had( def test_reportho_report_trunk_keeps_its_authored_inter_row_corridor() -> None: - """The 12 report feeders share one trunk lane needing 78px between rows. + """The 12 report feeders share one trunk lane needing 82px between rows. Rendered permissively because this map also puts two opposing channels in one column gap without separating them, which is a lane-placement defect @@ -932,8 +970,8 @@ def test_reportho_report_trunk_keeps_its_authored_inter_row_corridor() -> None: assert len(reservation.connector_ids) == 12 realised = query.realised_reservation(reservation.id) assert realised is not None - assert reservation.minimum_width == 78 - assert realised.available_width >= 78.0 + assert reservation.minimum_width == 82 + assert realised.available_width >= 82.0 assert realised.capacity_slack >= 0.0 assert _capacity_deficits(plan) == {} diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index 1cb3fa106..d770e7135 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -296,7 +296,11 @@ def test_seed_15_settles_emitted_bypass_tail_without_column_growth() -> None: == ResolvedEdge("__junction_22", "__merge_10", "l1") ) - assert observation.plan.boundary_clearance_requirements == () + assert { + requirement.boundary + for requirement in observation.plan.boundary_clearance_requirements + if requirement.description.endswith(" runway") + } == {3} assert route.points[-2][0] == 800.0 diff --git a/tests/test_guard_registry.py b/tests/test_guard_registry.py index 7362dfe12..9559076d4 100644 --- a/tests/test_guard_registry.py +++ b/tests/test_guard_registry.py @@ -12,9 +12,12 @@ import inspect import re +from types import SimpleNamespace + +import pytest from nf_metro.layout.phases import guards -from nf_metro.layout.phases.guards import GUARD_REGISTRY +from nf_metro.layout.phases.guards import GUARD_REGISTRY, PhaseInvariantError from nf_metro.layout.routing import invariants from nf_metro.layout.routing.invariants import ( CHECK_REGISTRY, @@ -24,6 +27,61 @@ VALID_TIERS = {"A", "B", "C"} +def test_final_runner_defers_only_route_guards_for_pending_clearance( + monkeypatch, +) -> None: + called: list[str] = [] + + def structural_guard(graph, phase): + called.append("structural") + + def route_guard(graph, phase, *, routes): + called.append("route") + + monkeypatch.setattr( + guards, + "GUARD_REGISTRY", + ( + guards.GuardSpec(structural_guard, "A"), + guards.GuardSpec(route_guard, "A", needs=frozenset({"routes"})), + ), + ) + monkeypatch.setattr( + "nf_metro.layout.routing.observe_route_edges", + lambda *args, **kwargs: SimpleNamespace( + routes=[object()], + plan=SimpleNamespace(boundary_clearance_requirements=(object(),)), + ), + ) + + guards.run_validate_guards(object(), "after final", include_final=True, offsets={}) + + assert called == ["structural"] + + +def test_final_runner_rejects_bad_routes_without_pending_clearance(monkeypatch) -> None: + def route_guard(graph, phase, *, routes): + raise PhaseInvariantError("bad final geometry") + + monkeypatch.setattr( + guards, + "GUARD_REGISTRY", + (guards.GuardSpec(route_guard, "A", needs=frozenset({"routes"})),), + ) + monkeypatch.setattr( + "nf_metro.layout.routing.observe_route_edges", + lambda *args, **kwargs: SimpleNamespace( + routes=[object()], + plan=SimpleNamespace(boundary_clearance_requirements=()), + ), + ) + + with pytest.raises(PhaseInvariantError, match="bad final geometry"): + guards.run_validate_guards( + object(), "after final", include_final=True, offsets={} + ) + + def _defined(module, prefix: str) -> set[str]: return { name diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 500340d66..c6bfccf97 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -281,7 +281,7 @@ def test_seed_15_settles_member_clear_of_shared_opening_and_convergence() -> Non if landing.edge == ResolvedEdge("__junction_25", "__merge_9", "l0") ) - assert movable.gap_channels[0].start[0] == 1534.0 + assert movable.gap_channels[0].start[0] == 1538.0 assert fixed.gap_channels[-1].start[0] == 1550.0 assert landing.minimum_runway == 52.0 assert landing.opening_turn_coordinate - landing.join_point[0] == 52.0 @@ -385,7 +385,7 @@ def crossings(observation) -> set[tuple[float, float]]: station_offsets=compute_station_offsets(graph), allow_convergence_clearance_requirements=True, ) - assert crossings(disabled) == {(1600.5, 398.0), (1302.0, 398.0)} + assert crossings(disabled) == {(1600.5, 392.0)} def test_seed_15_shared_opening_is_line_name_independent() -> None: diff --git a/tests/test_route_reservations.py b/tests/test_route_reservations.py index c65f6ef9e..aedf79244 100644 --- a/tests/test_route_reservations.py +++ b/tests/test_route_reservations.py @@ -23,6 +23,7 @@ from nf_metro.layout.route_plan import ( BindingKind, DemandAxis, + EmissionMemberId, ExitTurnDisposition, GridSpan, ReservationDecisionKind, @@ -256,7 +257,9 @@ def test_reportho_preserves_the_full_authored_corridor() -> None: assert reservation.bundle_width == 0 assert reservation.negative_side_clearance == 26 assert reservation.positive_side_clearance == 52 - assert reservation.minimum_width == 78 + assert reservation.negative_lane_offset_envelope == 0 + assert reservation.positive_lane_offset_envelope == 4 + assert reservation.minimum_width == 82 assert len(reservation.connector_ids) == 12 assert len(reservation.claimant_member_ids) == 2 assert len(reservation.claims) == 1 @@ -269,26 +272,27 @@ def test_reportho_preserves_the_full_authored_corridor() -> None: assert all(len(str(item)) < 64 for item in reservation.demand_ids) assert len(str(reservation.id)) < 64 - assert realised.coordinate == pytest.approx(492.0) + assert realised.coordinate == pytest.approx(494.0) assert realised.longitudinal_axis.value == "x" assert realised.longitudinal_start == pytest.approx(356.0) assert realised.longitudinal_end == pytest.approx(2314.0) assert realised.region_start == pytest.approx(466.0) assert realised.region_end == pytest.approx(544.0) assert realised.available_width == pytest.approx(78.0) - assert realised.required_width == pytest.approx(78.0) - assert realised.capacity_slack == pytest.approx(0.0) + assert realised.required_width == pytest.approx(82.0) + assert realised.capacity_slack == pytest.approx(-4.0) assert realised.negative_side_slack == pytest.approx(0.0) - assert realised.positive_side_slack == pytest.approx(0.0) + assert realised.positive_side_slack == pytest.approx(-4.0) assert realised.negative_blocker_ids == ("section-bottom:fetch_ortho",) assert realised.positive_blocker_ids == ("section-header:report",) - # A satisfied corridor publishes no shortfall record. - assert not [ + diagnostics = [ item for item in plan.reservation_diagnostics if item.reservation_id == reservation.id ] + assert len(diagnostics) == 1 + assert diagnostics[0].capacity_slack == pytest.approx(-4.0) assert graph.route_topology is not None connector_by_id = { @@ -691,6 +695,26 @@ def test_disjoint_bypass_descents_read_their_observed_gap_allocation() -> None: } +def test_shared_plan_coordinate_follows_its_translated_claimant_atomically() -> None: + translated = EmissionMemberId("translated") + crossing = EmissionMemberId("crossing") + untouched = EmissionMemberId("untouched") + translation = ReservationCoordinateTranslation( + DemandAxis.Y, + 408.0, + 32.0, + fully_owned_member_ids=(translated,), + crossing_member_ids=(crossing,), + ) + + assert route_reservations._project_shared_coordinate( + 348.0, + DemandAxis.Y, + (translated, crossing, untouched), + (translation,), + ) == pytest.approx(380.0) + + def test_reservation_corpus_has_one_linked_record_per_observed_claim() -> None: for path in RESERVATION_CORPUS: with warnings.catch_warnings(): @@ -956,7 +980,11 @@ def test_a_boundary_is_sized_for_the_corridors_confined_with_each_other() -> Non assert corridor.bundle_width == pytest.approx(0.0) assert corridor.peer_width == pytest.approx(owed) assert corridor.minimum_width == pytest.approx( - corridor.negative_side_clearance + corridor.positive_side_clearance + owed + corridor.negative_side_clearance + + corridor.positive_side_clearance + + corridor.negative_lane_offset_envelope + + corridor.positive_lane_offset_envelope + + owed ) diff --git a/tests/test_section_header_placement.py b/tests/test_section_header_placement.py index ffe93c804..1e6df72d9 100644 --- a/tests/test_section_header_placement.py +++ b/tests/test_section_header_placement.py @@ -26,7 +26,7 @@ import pytest import nf_metro.render.section_header as section_header -from nf_metro.api import resolve_theme +from nf_metro.api import prepare_graph, resolve_theme from nf_metro.layout.constants import SECTION_HEADER_PROTRUSION from nf_metro.layout.engine import compute_layout from nf_metro.layout.routing import compute_station_offsets, route_edges_centred @@ -43,7 +43,7 @@ resolve_all_section_headers, resolve_section_header_placement, ) -from nf_metro.render.svg import apply_route_offsets +from nf_metro.render.svg import _build_render_plan_result, apply_route_offsets REPO_ROOT = Path(__file__).resolve().parent.parent EXAMPLES = REPO_ROOT / "examples" @@ -134,6 +134,73 @@ def test_nudge_clears_a_route_to_the_right_of_the_box() -> None: assert not clashes, "\n".join(c.message() for c in clashes) +def test_seed_15_header_stays_inside_its_right_canvas_routes() -> None: + path = REPO_ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + render_plan, route_plan = _build_render_plan_result( + graph, resolve_theme(None, graph), chrome_css=False + ) + + from nf_metro.layout.route_reservations import CanvasRegion, CanvasSide + + reservation = next( + item + for item in route_plan.reservations + if isinstance(item.region, CanvasRegion) + and item.region.side is CanvasSide.RIGHT + and len(item.claims) == 7 + ) + assert len(reservation.claimant_member_ids) == 9 + barriers = section_header._right_canvas_barriers( + route_plan, [list(polyline) for polyline in render_plan.route_polylines] + ) + claim_barriers = tuple( + barrier + for barrier in barriers + if barrier[0] + in { + point[0] + for claim in reservation.claims + for point in render_plan.route_polylines[claim.path_rank][ + claim.segment_rank : claim.segment_end_rank + 2 + ] + } + ) + assert len(claim_barriers) == len(reservation.claims) + + placement = render_plan.header_placements["s3"] + overlapping = tuple( + barrier + for barrier in claim_barriers + if section_header._intervals_overlap( + placement.keepout[1], + placement.keepout[3], + barrier[1], + barrier[2], + ) + ) + assert overlapping + assert placement.keepout[2] <= min(item[0] for item in overlapping) - ( + SECTION_HEADER_ROUTE_PAD + ) + + +def test_right_canvas_claim_outside_header_band_does_not_constrain_it() -> None: + placement = section_header.SectionHeaderPlacement( + mode="nudge", + badge_cx=110.0, + badge_cy=90.0, + label_x=120.0, + label_y=90.0, + label_rotation=0.0, + label_lines=("Header",), + keepout=(100.0, 80.0, 200.0, 100.0), + ) + assert section_header._placement_before_right_canvas( + placement, ((150.0, 101.0, 180.0),) + ) + + @pytest.mark.parametrize( "path", _gather_fixtures(), ids=lambda p: p.relative_to(REPO_ROOT).as_posix() ) From ad96b405b0fc4ae50e2bdea96cbb05081acbddbc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 08:35:10 +0100 Subject: [PATCH 073/158] refactor(routing): use semantic settlement ownership [skip ci] --- src/nf_metro/layout/routing/context.py | 1 - .../layout/routing/member_geometry.py | 7 +- src/nf_metro/layout/routing/normalize.py | 7 +- tests/test_destination_port_eager_bundle.py | 57 +++++++- tests/test_normalize_convergence_ownership.py | 122 ++++++++++++++++++ 5 files changed, 184 insertions(+), 10 deletions(-) diff --git a/src/nf_metro/layout/routing/context.py b/src/nf_metro/layout/routing/context.py index adcc8fd83..d39354095 100644 --- a/src/nf_metro/layout/routing/context.py +++ b/src/nf_metro/layout/routing/context.py @@ -245,7 +245,6 @@ class _RoutingCtx: diagonal_run: float curve_radius: float validate_final_route_frames: bool = True - destination_tail_movable_route_ids: frozenset[int] | None = None reserved_bands: ReservedCorridors = field(default_factory=ReservedCorridors) prior_exit_turn_dispositions: Mapping[ExitTurnPlanId, str | None] | None = None """Frozen exit-turn dispositions a settlement re-route must redraw. diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 7735f5198..a6f4c1b07 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -2182,14 +2182,11 @@ def build_member_geometry_execution( # pass, and over the same whole gap population the passes above ranked -- # a bundle carrying an immutable convergence stroke is pinned by it, and # holding the candidates alone would slide them off that stroke. - tail_ctx = replace( - ctx, - destination_tail_movable_route_ids=complete_path_route_ids, - ) settled_tail_segments = ( normalize._bundle_same_destination_tails( normalization_population, - tail_ctx, + ctx, + movable_route_ids=complete_path_route_ids, ) or frozenset() ) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index cbd40f07d..c4d37b4a7 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1128,9 +1128,10 @@ def _collect_htrunks( def _bundle_same_destination_tails( routes: list[RoutedPath], ctx: _RoutingCtx, + *, + movable_route_ids: frozenset[int] | None = None, ) -> frozenset[tuple[int, int]]: """Seat eligible same-port destination tails on one eager concentric band.""" - movable_route_ids = ctx.destination_tail_movable_route_ids settled_segments: set[tuple[int, int]] = set() for _bundle, trunks, targets in iter_eligible_destination_tail_bundles( routes, ctx.graph, ctx.offset_step, ctx.curve_radius @@ -2957,7 +2958,7 @@ def _bundle_divergent_distinct_descents( # fan legs can leave an empty interior lane there, which widens the # peel-x span past a tight bundle, so this pass would otherwise claim them. junction_owned = all( - channel.route.edge.source.startswith("__junction_") for channel in chans + channel.route.edge.source in ctx.graph.junctions for channel in chans ) targets = {c.route.edge.target for c in chans} if len(targets) == 1: @@ -2987,7 +2988,7 @@ def _bundle_divergent_distinct_descents( for lid, line_channels in by_line.items() } if max(source_y.values()) - min(source_y.values()) > COORD_TOLERANCE and all( - not channel.route.edge.target.startswith("__merge_") for channel in chans + channel.route.edge.target not in ctx.merge.junctions for channel in chans ): # A direct destination branch keeps the source bundle's lane order # through this turn. A merge arm has another topology-owned turn diff --git a/tests/test_destination_port_eager_bundle.py b/tests/test_destination_port_eager_bundle.py index 2ec9f0107..0083df9d8 100644 --- a/tests/test_destination_port_eager_bundle.py +++ b/tests/test_destination_port_eager_bundle.py @@ -1,9 +1,11 @@ from __future__ import annotations from pathlib import Path +from types import SimpleNamespace import pytest +import nf_metro.layout.routing.normalize as normalize from nf_metro.layout.constants import ( COORD_TOLERANCE, CURVE_RADIUS, @@ -12,6 +14,7 @@ from nf_metro.layout.engine import compute_layout from nf_metro.layout.routing import compute_station_offsets, route_edges from nf_metro.layout.routing.common import ( + RoutedPath, iter_horizontal_trunks, port_peeloff_tail, ) @@ -171,10 +174,62 @@ def test_destination_tail_runtime_guard_is_not_vacuous(monkeypatch) -> None: monkeypatch.setattr( normalize, "_bundle_same_destination_tails", - lambda routes, ctx: None, + lambda routes, ctx, **_kwargs: None, ) routes = route_edges(graph, station_offsets=offsets) violations = check_peeloff_concentric(graph, routes) messages = [violation.message() for violation in violations] assert any("qc__entry_left_6" in message for message in messages) + + +def test_destination_tail_mobility_is_an_explicit_bundle_scope(monkeypatch) -> None: + routes = [ + RoutedPath( + Edge("source", f"target-{line_id}", line_id), + line_id, + [(0.0, 0.0), (0.0, y), (100.0, y), (100.0, 100.0)], + is_inter_section=True, + ) + for line_id, y in (("movable", 10.0), ("sibling", 20.0), ("other", 40.0)) + ] + trunks = { + route.line_id: normalize._HTrunk( + route, + 1, + route.points[1][1], + route.points[1][0], + route.points[2][0], + True, + 1, + ) + for route in routes + } + bundles = [ + ( + object(), + {line_id: trunks[line_id] for line_id in ("movable", "sibling")}, + {"movable": 30.0, "sibling": 33.0}, + ), + (object(), {"other": trunks["other"]}, {"other": 50.0}), + ] + route_by_line = {route.line_id: route for route in routes} + moved: list[str] = [] + monkeypatch.setattr( + normalize, + "iter_eligible_destination_tail_bundles", + lambda *_args: bundles, + ) + monkeypatch.setattr( + normalize, + "_set_htrunk_y", + lambda route, *_args, **_kwargs: moved.append(route.line_id), + ) + + normalize._bundle_same_destination_tails( + routes, + SimpleNamespace(graph=object(), offset_step=3.0, curve_radius=10.0), + movable_route_ids=frozenset({id(route_by_line["movable"])}), + ) + + assert moved == ["movable", "sibling"] diff --git a/tests/test_normalize_convergence_ownership.py b/tests/test_normalize_convergence_ownership.py index a067d94cb..78c9ddec3 100644 --- a/tests/test_normalize_convergence_ownership.py +++ b/tests/test_normalize_convergence_ownership.py @@ -4,6 +4,8 @@ from types import SimpleNamespace +import pytest + import nf_metro.layout.routing.normalize as normalize from nf_metro.layout.routing.common import RoutedPath from nf_metro.parser.model import Edge @@ -83,3 +85,123 @@ def test_bypass_nesting_ownership_is_per_segment_boundary(monkeypatch) -> None: (100.0, 26.0), (100.0, 120.0), ] + + +def _descent( + source: str, + target: str, + line_id: str, + points: list[tuple[float, float]], + *, + frozen: bool = False, +) -> RoutedPath: + return RoutedPath( + edge=Edge(source, target, line_id), + line_id=line_id, + points=points, + is_inter_section=True, + curve_radii=[10.0, 10.0], + fan_route_emitter="test" if frozen else None, + ) + + +def _descent_context( + *, junctions: list[str] = (), merge_junctions: set[str] | None = None +) -> SimpleNamespace: + graph = SimpleNamespace(ports={}, junctions=junctions) + merge = SimpleNamespace(junctions=merge_junctions or set()) + return SimpleNamespace( + graph=graph, + merge=merge, + offset_step=3.0, + curve_radius=10.0, + ) + + +@pytest.mark.parametrize( + ("source", "junctions", "expected_moves"), + [ + ("renamed-generated-fork", ["renamed-generated-fork"], 2), + ("__junction_authored", [], 0), + ], +) +def test_frozen_fan_descent_ownership_uses_graph_junction_membership( + monkeypatch, source, junctions, expected_moves +) -> None: + routes = [ + _descent( + source, + "left", + "a", + [(0.0, 0.0), (10.0, 0.0), (10.0, 40.0), (30.0, 40.0)], + frozen=True, + ), + _descent( + source, + "right", + "b", + [(0.0, 0.0), (13.0, 0.0), (13.0, 20.0), (30.0, 20.0)], + frozen=True, + ), + ] + moves: list[tuple[str, float]] = [] + monkeypatch.setattr(normalize, "_descent_crosses_section", lambda *_args: False) + monkeypatch.setattr( + normalize, + "_set_vchannel_x", + lambda channel, target_x, *_args, **_kwargs: moves.append( + (channel.route.line_id, target_x) + ), + ) + + normalize._bundle_divergent_distinct_descents( + routes, + _descent_context(junctions=junctions), + settle_frozen_arcs=True, + ) + + assert len(moves) == expected_moves + + +@pytest.mark.parametrize( + ("merge_target", "merge_junctions", "expected_order"), + [ + ("renamed-generated-merge", {"renamed-generated-merge"}, ["a", "b"]), + ("__merge_authored", set(), ["b", "a"]), + ], +) +def test_descent_order_uses_merge_junction_membership( + monkeypatch, merge_target, merge_junctions, expected_order +) -> None: + routes = [ + _descent( + "fork", + merge_target, + "a", + [(0.0, 0.0), (10.0, 0.0), (10.0, 40.0), (30.0, 40.0)], + ), + _descent( + "fork", + "direct-target", + "b", + [(0.0, 10.0), (20.0, 10.0), (20.0, 20.0), (30.0, 20.0)], + ), + ] + moves: list[tuple[str, float]] = [] + monkeypatch.setattr(normalize, "_descent_crosses_section", lambda *_args: False) + monkeypatch.setattr( + normalize, + "_set_vchannel_x", + lambda channel, target_x, *_args, **_kwargs: moves.append( + (channel.route.line_id, target_x) + ), + ) + + normalize._bundle_divergent_distinct_descents( + routes, + _descent_context(merge_junctions=merge_junctions), + ) + + assert [ + line_id for line_id, _target_x in sorted(moves, key=lambda item: item[1]) + ] == expected_order From f527b0aafe69260a22cadf07acf77ab9ae432b62 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 08:39:26 +0100 Subject: [PATCH 074/158] refactor: tighten routing ownership helpers [skip ci] --- docs/dev/routing_gate_coverage.md | 603 +++++++++--------- src/nf_metro/layout/phases/ports.py | 22 +- src/nf_metro/layout/route_plan.py | 9 + src/nf_metro/layout/routing/convergences.py | 24 +- src/nf_metro/render/section_header.py | 59 +- .../data/routing_gate_coverage_baseline.json | 21 +- tests/test_shared_trunk_channel_lanes.py | 10 + 7 files changed, 383 insertions(+), 365 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index bde062dda..0829d4911 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2163/3341** gates fully exercised (both/all arms hit by some fixture); **1178** gates have at least one un-exercised arm. +**2164/3339** gates fully exercised (both/all arms hit by some fixture); **1175** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -140,7 +140,7 @@ Gates with an un-exercised arm: ## `convergences.py` -278/601 gates fully exercised. +279/599 gates fully exercised. Gates with an un-exercised arm: @@ -223,252 +223,249 @@ Gates with an un-exercised arm: | 1606 | `if plan.trunk_axis is None:` | `->L1607` | **defensive** -- _turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one. | | 1636 | `if _points_coincide(*segment):` | `->L1637` | | | 1661 | `if (` | `->L1669` | | -| 1682 | `if not isinstance(getattr(ctx, "graph", None), MetroGraph):` | `->L1683` | | -| 1701 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1702` | | -| 1717 | `if abs(source_x - opening_x) > COORD_TOLERANCE:` | `->L1784` | | -| 1724 | `elif (` | `->L1733` | | -| 1751 | `if uses_exit_handedness:` | `->L1752` | | -| 1754 | `elif landing.approach_axis is DemandAxis.X:` | `->L1758` | | -| 1775 | `if not uses_exit_handedness and (` | `->L1784` | | -| 1780 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1784` | | -| 1888 | `if opening_follows_flank:` | `->L1889` | | -| 1950 | `if landing.opening_turn_segment is None:` | `->L1951` | | -| 1955 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1956` | | -| 1986 | `landing.approach_axis is DemandAxis.X` | `->L1990` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | -| 1987 | `and landing.opening_turn_segment is not None` | `->L1990` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | -| 1992 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1993`, `->L1994` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | -| 2010 | `if reseated is None:` | `->L2011` | | -| 2040 | `if preserve_lane_offsets:` | `->L2041` | | -| 2060 | `if preserve_lane_offsets:` | `->L2061` | | -| 2067 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2068`, `->L2076` | | -| 2068 | `if landing.approach_axis is DemandAxis.X:` | `->L2069`, `->L2073` | | -| 2077 | `if opening_segment is not None:` | `->L2088` | | -| 2128 | `axis is None` | `->L2131` | | -| 2161 | `if inside or extends:` | `->L2162` | | -| 2173 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2174` | | -| 2180 | `if actual is None:` | `->L2181` | | -| 2368 | `if any(` | `->L2373` | **needs-review** -- _packed_lane's decline arm: packing a run onto the pitch of its nearest bundle neighbour would seat it inside a *second* neighbour's pitch. Reachable -- 3-lane bundles exist in the corpus (_packed_lane sees len(neighbours)==2 on examples/guide/03b_fan_in_merge.mmd) -- but no fixture makes the candidate breach the far lane. Wants a fixture. | -| 2430 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2431` | | -| 2472 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2475` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | -| 2473 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2475` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | -| 2515 | `if run is None:` | `->L2516` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2575 | `if run is None:` | `->L2576` | | -| 2590 | `if obstacles:` | `->L2591` | | -| 2613 | `if run is None:` | `->L2614` | | -| 2622 | `if any(` | `->L2626` | | -| 2651 | `if axis is None:` | `->L2652` | | -| 2661 | `if source is None:` | `->L2662` | | -| 2693 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2694` | | -| 2703 | `if primary is None:` | `->L2704` | | -| 2716 | `or landing.opening_turn_segment is None` | `->L2718` | | -| 2729 | `if reseated is not None:` | `->L2712` | | -| 2769 | `if (` | `->L2775` | | -| 2777 | `for plan_rank, landing_rank in members:` | `->L2758`, `->L2778` | | -| 2780 | `if reseated is None:` | `->L2781`, `->L2782` | | -| 2792 | `if not isinstance(getattr(ctx, "graph", None), MetroGraph):` | `->L2793` | | -| 2801 | `if len(channel.line_ids) != 1:` | `->L2802` | | -| 2826 | `if (` | `->L2830` | | -| 2832 | `if endpoint is None:` | `->L2833` | | -| 2838 | `channel.flank_rank is not None` | `->L2843` | | -| 2843 | `if any(` | `->L2848` | | -| 2852 | `if moved is None:` | `->L2853` | | -| 2864 | `if merge is None:` | `->L2865` | | -| 2869 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2870` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2895 | `if (` | `->L2903` | **defensive** -- Pre-existing gap, re-keyed from #12 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). The raise for a covered continuation absent from the carrier member that is recorded as covering it. _reconcile_continuation_ownership only names a carrier whose route already spans the continuation's endpoints, so the raise arm reports an engine bug and aborts the render; no valid topology reaches it. | -| 2909 | `if (` | `->L2891`, `->L2917` | **candidate-dead** -- Pre-existing gap, re-keyed from #13 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,0] split). Never executed rather than half-taken: its enclosing `if continuation.covered_by_member_id is not None:` never takes the None arm on any of the 18 fixtures that validate a planned convergence, so an uncovered outgoing continuation does not exist in this corpus. What would settle it is a topology whose continuation no endpoint owner's route spans, which _reconcile_continuation_ownership would then leave uncovered. | -| 2917 | `if (` | `->L2924`, `->L2928` | | -| 2963 | `if base_channel is None:` | `->L2964` | | -| 3003 | `if any(` | `->L3007` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3013 | `for rank in displaced_ranks:` | `->L3069` | | -| 3016 | `if (` | `->L3051` | | -| 3054 | `if reseated is None:` | `->L3055`, `->L3056` | | -| 3056 | `if (` | `->L3063`, `->L3067` | | -| 3076 | `if moved_channels and all(` | `->L2999`, `->L3084` | | -| 3101 | `if tail is None:` | `->L3102`, `->L3103` | | -| 3124 | `if (` | `->L3131` | | -| 3132 | `if bypass_segment is None:` | `->L3133`, `->L3134` | | -| 3134 | `for obstacle in direct_landings:` | `->L3123`, `->L3135` | | -| 3136 | `if (` | `->L3146`, `->L3147` | | -| 3149 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3150`, `->L3151` | | -| 3156 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3157`, `->L3158` | | -| 3164 | `if moved is None:` | `->L3165`, `->L3166` | | -| 3186 | `if bypass_segment is None:` | `->L3134`, `->L3187` | | -| 3220 | `if not obstacles:` | `->L3222` | | -| 3236 | `for coordinate in candidates:` | `->L3210`, `->L3237` | | -| 3237 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3238`, `->L3239` | | -| 3245 | `if moved is None:` | `->L3246`, `->L3247` | | -| 3253 | `if not moved_channels or any(` | `->L3260`, `->L3261` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3265 | `if (` | `->L3269`, `->L3270` | | -| 3330 | `obstacle_segment is None` | `->L3335` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 3331 | `or landing_segment is None` | `->L3335` | | -| 3346 | `if reseated is None:` | `->L3347` | | -| 3352 | `landing.member_id == plan.primary_trunk_member_id` | `->L3375` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 3353 | `and plan.trunk_axis is not None` | `->L3375` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 3354 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3375` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 3384 | `if (` | `->L3317` | | -| 3399 | `if axis is None:` | `->L3400` | | -| 3423 | `if coordinate is not None:` | `->L3428` | | -| 3465 | `if endpoint is None:` | `->L3466` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 3488 | `if plan.trunk_axis is None:` | `->L3489` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 3514 | `if coordinate is not None:` | `->L3520` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 3574 | `for seat, obstacle in obstacles:` | `->L-3559`, `->L3575` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 3576 | `if axis is None:` | `->L3577`, `->L3578` | | -| 3588 | `if lane is None:` | `->L3589`, `->L3590` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 3609 | `if flank_rank != 1:` | `->L3611` | | -| 3620 | `if fork is None:` | `->L3621`, `->L3629` | | -| 3697 | `if forked:` | `->L3698` | | -| 3698 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3699`, `->L3700` | | -| 3702 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3703` | | -| 3726 | `if forked:` | `->L3727`, `->L3728` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 3801 | `if endpoint is None:` | `->L3802` | | -| 3812 | `if coordinate is None:` | `->L3813` | | -| 3825 | `if reseated is not None:` | `->L3826`, `->L3829` | | -| 3872 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3920` | | -| 3892 | `if flank is None:` | `->L3894` | | -| 3950 | `if not (` | `->L3953` | | -| 3969 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3970` | | -| 4027 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4012` | | -| 4079 | `if (` | `->L4085` | | -| 4264 | `if not carries_coupled_primary and any(` | `->L4270` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 4276 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4277` | | -| 4294 | `if (endpoint - candidate) * toward_endpoint <= curve_radius:` | `->L4295` | | -| 4296 | `if any(` | `->L4301` | | -| 4304 | `if any(` | `->L4307` | | -| 4314 | `if gap_edges[1] <= gap_edges[0] or not _inside_usable_gap(` | `->L4317` | | -| 4352 | `if axis is None:` | `->L4353` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 4405 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L4406` | | -| 4445 | `if reserved_bands is None:` | `->L4446` | | -| 4458 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L4459` | | -| 4494 | `if run is not None:` | `->L4545` | | -| 4507 | `if any(` | `->L4511` | | -| 4621 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4622` | | -| 4695 | `if coordinate is None and len(coupled_flanks) == 1:` | `->L4696` | | -| 4699 | `for candidate_coordinate in direct_candidates:` | `->L4700`, `->L4725` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 4710 | `if not moved_channels or any(` | `->L4715`, `->L4716` | | -| 4716 | `if any(` | `->L4720`, `->L4721` | | -| 4721 | `if not landing_feasible(candidate_coordinate):` | `->L4722`, `->L4723` | | -| 4725 | `if coordinate is None:` | `->L4726` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 4731 | `if (` | `->L4735` | | -| 4751 | `if not obstacles:` | `->L4753` | | -| 4775 | `for coordinate in candidates:` | `->L4741`, `->L4776` | | -| 4776 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L4777`, `->L4778` | | -| 4784 | `if moved_plan is None:` | `->L4785`, `->L4786` | | -| 4795 | `if moved_channel is None or any(` | `->L4798`, `->L4799` | | -| 4803 | `if (` | `->L4807`, `->L4808` | | -| 4872 | `if (` | `->L4880` | | -| 4891 | `if not obstacles:` | `->L4893` | | -| 4909 | `for coordinate in candidates:` | `->L4862`, `->L4910` | | -| 4917 | `if not inside_gap:` | `->L4918`, `->L4919` | | -| 4929 | `if moved is None:` | `->L4930`, `->L4931` | | -| 4941 | `if not moved_channels or any(` | `->L4954`, `->L4955` | | -| 4959 | `if (` | `->L4963`, `->L4964` | | -| 5055 | `if _landing_channels_crowd(first, second, curve_radius):` | `->L5056` | | -| 5059 | `if any(` | `->L5067` | | -| 5089 | `if any(pair <= component for pair in crowded_pairs) or (` | `->L5092` | | -| 5097 | `for component in components:` | `->L5098` | | -| 5103 | `for key in traversal:` | `->L5104`, `->L5141` | | -| 5106 | `for prior_key, prior_coordinate in positions.items():` | `->L5107`, `->L5123` | | -| 5108 | `if (` | `->L5113`, `->L5114` | | -| 5117 | `if clearance is None:` | `->L5118`, `->L5119` | | -| 5119 | `if from_left:` | `->L5120`, `->L5122` | | -| 5123 | `for fixed in fixed_channels:` | `->L5124`, `->L5140` | | -| 5124 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5127`, `->L5128` | | -| 5131 | `if (` | `->L5136`, `->L5137` | | -| 5143 | `for positions in (packed_positions(True), packed_positions(False)):` | `->L5097`, `->L5144` | | -| 5144 | `if any(` | `->L5149`, `->L5150` | | -| 5155 | `for key in ordered:` | `->L5156`, `->L5186` | | -| 5157 | `if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:` | `->L5158`, `->L5159` | | -| 5159 | `for plan_rank, channel in grouped[key]:` | `->L5160`, `->L5184` | | -| 5161 | `if channel.flank_rank is not None:` | `->L5162`, `->L5170` | | -| 5163 | `if flank_key in moved_flanks:` | `->L5164`, `->L5165` | | -| 5171 | `if opening_key in moved_openings:` | `->L5172`, `->L5173` | | -| 5180 | `if moved is None:` | `->L5181`, `->L5183` | | -| 5184 | `if not feasible:` | `->L5155`, `->L5185` | | -| 5186 | `if not feasible:` | `->L5187`, `->L5188` | | -| 5189 | `if (` | `->L5193`, `->L5194` | | -| 5199 | `if any(` | `->L5203`, `->L5204` | | -| 5210 | `if any(` | `->L5217`, `->L5218` | | -| 5218 | `if any(` | `->L5223`, `->L5224` | | -| 5256 | `if not obstacles:` | `->L5258` | | -| 5275 | `for coordinate in candidates:` | `->L5241`, `->L5276` | | -| 5282 | `if any(` | `->L5296`, `->L5297` | | -| 5350 | `if first.system_id != second.system_id:` | `->L5351` | | -| 5352 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5353` | **needs-review** -- _channels_share_source_carrier's shared-claimant shortcut. Its sole caller is _validate_final_convergence_feasibility, which pairs a convergence plan channel against a frozen member channel; the intersection is non-empty only when the plan's channel names the very member it is compared with, which no corpus fixture produces. Reachable in principle, wants a fixture. | -| 5593 | `if not negative or not positive:` | `->L5594` | | -| 5656 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5657` | | -| 5661 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5669` | | -| 5689 | `if gap is None:` | `->L5690` | | -| 5700 | `if requirement is None:` | `->L5701` | | -| 5704 | `if current is None or requirement.required > current.required:` | `->L5646` | | -| 5720 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5722` | | -| 5726 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5727`, `->L5728` | | -| 5736 | `if requirement is None:` | `->L5737`, `->L5738` | | -| 5741 | `if current is None or requirement.required > current.required:` | `->L5719`, `->L5742` | | -| 5758 | `if (` | `->L5770` | | -| 5773 | `if (` | `->L5778`, `->L5779` | | -| 5784 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5785`, `->L5786` | | -| 5794 | `if requirement is not None:` | `->L5757`, `->L5795` | | -| 5841 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5845` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 5848 | `if first_delta * second_delta < 0:` | `->L5849` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5859 | `if (` | `->L5871`, `->L5874` | | -| 5888 | `if opposing_approaches is not None:` | `->L5889` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 5933 | `if same_line and first_direction is not second_direction:` | `->L5938` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5939 | `if (` | `->L5966` | | -| 5986 | `if conflict is not None:` | `->L5987` | | -| 5996 | `if requirements:` | `->L5997`, `->L5999` | | -| 6034 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6035` | | -| 6041 | `if (` | `->L6052` | | -| 6052 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6055`, `->L6056` | | -| 6056 | `if any(` | `->L6061`, `->L6062` | | -| 6069 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6070` | | -| 6070 | `if any(` | `->L6075`, `->L6076` | | -| 6080 | `if channel.gap != member_channel.gap:` | `->L6081` | | -| 6082 | `if _gap_channels_crowd(` | `->L6089` | | -| 6089 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6092`, `->L6093` | | -| 6093 | `if any(` | `->L6097`, `->L6098` | | -| 6114 | `if not plan.owns_geometry:` | `->L6115` | | -| 6178 | `if not plan.owns_geometry:` | `->L6179` | | -| 6202 | `owner_edge not in edge_ranks` | `->L6206` | | -| 6241 | `if not plan.owns_geometry:` | `->L6242` | | -| 6260 | `if ownership.edge in by_edge:` | `->L6261` | | -| 6388 | `for item in system_plans:` | `->L6389`, `->L6399` | | -| 6741 | `if not horizontal and not vertical:` | `->L6742` | | -| 6765 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6750` | | -| 6798 | `if axis.axis is DemandAxis.X:` | `->L6821` | | -| 6925 | `if not candidates:` | `->L6926` | | -| 6947 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L6950` | | -| 6950 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L6953` | | -| 6956 | `if horizontal:` | `->L6957` | | -| 7025 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7026` | | -| 7033 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7034` | | -| 7052 | `if actual is None:` | `->L7053` | | -| 7059 | `direction is not landing.approach_direction` | `->L7063` | | -| 7060 | `or handedness is not landing.corner_handedness` | `->L7063` | | -| 7061 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7063` | | -| 7082 | `opening is None` | `->L7086` | | -| 7083 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7086` | | -| 7084 | `or emitted_segment != landing.opening_turn_segment` | `->L7086` | | -| 7095 | `if query is None:` | `->L7096` | | -| 7101 | `if not plan.owns_geometry:` | `->L7102` | | -| 7109 | `if continuation is not None and continuation.covered_by_member_id is not None:` | `->L7111` | | -| 7111 | `if (` | `->L7125`, `->L7129` | | -| 7129 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7130`, `->L7134` | | -| 7152 | `if opening is None:` | `->L7153` | | -| 7153 | `if not clearance_pending:` | `->L7154`, `->L7169` | | -| 7161 | `landing.opening_turn_segment is not None` | `->L7169` | | -| 7167 | `if route.curve_radii is not None:` | `->L7169` | | -| 7235 | `if landing.opening_turn_coordinate is not None:` | `->L7243` | | -| 7251 | `if not clearance_pending and any(` | `->L7255` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 7280 | `if not plan.owns_geometry:` | `->L7281` | | -| 7291 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7292` | | -| 7301 | `if route is None:` | `->L7302` | | -| 7307 | `if (` | `->L7312` | | -| 7319 | `if any(` | `->L7323` | | -| 7340 | `if continuation.covered_by_member_id is not None:` | `->L7357` | | -| 7343 | `if (` | `->L7352` | | -| 7358 | `if (` | `->L7337`, `->L7369` | | -| 7385 | `if route is None or membership is None:` | `->L7386` | | -| 7391 | `if any(` | `->L7395` | | +| 1699 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1700` | | +| 1715 | `if abs(source_x - opening_x) > COORD_TOLERANCE:` | `->L1782` | | +| 1722 | `elif (` | `->L1731` | | +| 1749 | `if uses_exit_handedness:` | `->L1750` | | +| 1752 | `elif landing.approach_axis is DemandAxis.X:` | `->L1756` | | +| 1773 | `if not uses_exit_handedness and (` | `->L1782` | | +| 1778 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1782` | | +| 1886 | `if opening_follows_flank:` | `->L1887` | | +| 1948 | `if landing.opening_turn_segment is None:` | `->L1949` | | +| 1953 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1954` | | +| 1984 | `landing.approach_axis is DemandAxis.X` | `->L1988` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | +| 1985 | `and landing.opening_turn_segment is not None` | `->L1988` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | +| 1990 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1991`, `->L1992` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | +| 2008 | `if reseated is None:` | `->L2009` | | +| 2038 | `if preserve_lane_offsets:` | `->L2039` | | +| 2058 | `if preserve_lane_offsets:` | `->L2059` | | +| 2065 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2066`, `->L2074` | | +| 2066 | `if landing.approach_axis is DemandAxis.X:` | `->L2067`, `->L2071` | | +| 2075 | `if opening_segment is not None:` | `->L2086` | | +| 2126 | `axis is None` | `->L2129` | | +| 2159 | `if inside or extends:` | `->L2160` | | +| 2171 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2172` | | +| 2178 | `if actual is None:` | `->L2179` | | +| 2366 | `if any(` | `->L2371` | **needs-review** -- _packed_lane's decline arm: packing a run onto the pitch of its nearest bundle neighbour would seat it inside a *second* neighbour's pitch. Reachable -- 3-lane bundles exist in the corpus (_packed_lane sees len(neighbours)==2 on examples/guide/03b_fan_in_merge.mmd) -- but no fixture makes the candidate breach the far lane. Wants a fixture. | +| 2428 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2429` | | +| 2470 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2473` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | +| 2471 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2473` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | +| 2513 | `if run is None:` | `->L2514` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | +| 2573 | `if run is None:` | `->L2574` | | +| 2588 | `if obstacles:` | `->L2589` | | +| 2611 | `if run is None:` | `->L2612` | | +| 2620 | `if any(` | `->L2624` | | +| 2648 | `if axis is None:` | `->L2649` | | +| 2658 | `if source is None:` | `->L2659` | | +| 2690 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2691` | | +| 2700 | `if primary is None:` | `->L2701` | | +| 2713 | `or landing.opening_turn_segment is None` | `->L2715` | | +| 2726 | `if reseated is not None:` | `->L2709` | | +| 2766 | `if (` | `->L2772` | | +| 2774 | `for plan_rank, landing_rank in members:` | `->L2755`, `->L2775` | | +| 2777 | `if reseated is None:` | `->L2778`, `->L2779` | | +| 2796 | `if len(channel.line_ids) != 1:` | `->L2797` | | +| 2821 | `if (` | `->L2825` | | +| 2827 | `if endpoint is None:` | `->L2828` | | +| 2833 | `channel.flank_rank is not None` | `->L2838` | | +| 2838 | `if any(` | `->L2843` | | +| 2847 | `if moved is None:` | `->L2848` | | +| 2862 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2863` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2888 | `if (` | `->L2896` | **defensive** -- Pre-existing gap, re-keyed from #12 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). The raise for a covered continuation absent from the carrier member that is recorded as covering it. _reconcile_continuation_ownership only names a carrier whose route already spans the continuation's endpoints, so the raise arm reports an engine bug and aborts the render; no valid topology reaches it. | +| 2902 | `if reseated is None:` | `->L2903`, `->L2904` | | +| 2908 | `if abs(reseated_opening - source.x) >= (` | `->L2884`, `->L2913` | | +| 2913 | `if (` | `->L2918`, `->L2922` | **candidate-dead** -- Pre-existing gap, re-keyed from #13 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,0] split). Never executed rather than half-taken: its enclosing `if continuation.covered_by_member_id is not None:` never takes the None arm on any of the 18 fixtures that validate a planned convergence, so an uncovered outgoing continuation does not exist in this corpus. What would settle it is a topology whose continuation no endpoint owner's route spans, which _reconcile_continuation_ownership would then leave uncovered. | +| 2956 | `if base_channel is None:` | `->L2957` | | +| 2996 | `if any(` | `->L3000` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3006 | `for rank in displaced_ranks:` | `->L3062` | | +| 3009 | `if (` | `->L3044` | | +| 3047 | `if reseated is None:` | `->L3048`, `->L3049` | | +| 3051 | `if (` | `->L3056`, `->L3060` | | +| 3069 | `if moved_channels and all(` | `->L2992`, `->L3077` | | +| 3094 | `if tail is None:` | `->L3095`, `->L3096` | | +| 3117 | `if (` | `->L3124` | | +| 3125 | `if bypass_segment is None:` | `->L3126`, `->L3127` | | +| 3127 | `for obstacle in direct_landings:` | `->L3116`, `->L3128` | | +| 3129 | `if (` | `->L3139`, `->L3140` | | +| 3142 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3143`, `->L3144` | | +| 3149 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3150`, `->L3151` | | +| 3157 | `if moved is None:` | `->L3158`, `->L3159` | | +| 3179 | `if bypass_segment is None:` | `->L3127`, `->L3180` | | +| 3213 | `if not obstacles:` | `->L3215` | | +| 3229 | `for coordinate in candidates:` | `->L3203`, `->L3230` | | +| 3230 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3231`, `->L3232` | | +| 3238 | `if moved is None:` | `->L3239`, `->L3240` | | +| 3246 | `if not moved_channels or any(` | `->L3253`, `->L3254` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3258 | `if (` | `->L3262`, `->L3263` | | +| 3323 | `obstacle_segment is None` | `->L3328` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3324 | `or landing_segment is None` | `->L3328` | | +| 3339 | `if reseated is None:` | `->L3340` | | +| 3345 | `landing.member_id == plan.primary_trunk_member_id` | `->L3368` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3346 | `and plan.trunk_axis is not None` | `->L3368` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3347 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3368` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3377 | `if (` | `->L3310` | | +| 3392 | `if axis is None:` | `->L3393` | | +| 3416 | `if coordinate is not None:` | `->L3421` | | +| 3458 | `if endpoint is None:` | `->L3459` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3481 | `if plan.trunk_axis is None:` | `->L3482` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3507 | `if coordinate is not None:` | `->L3513` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3567 | `for seat, obstacle in obstacles:` | `->L-3552`, `->L3568` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3569 | `if axis is None:` | `->L3570`, `->L3571` | | +| 3581 | `if lane is None:` | `->L3582`, `->L3583` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3602 | `if flank_rank != 1:` | `->L3604` | | +| 3613 | `if fork is None:` | `->L3614`, `->L3622` | | +| 3690 | `if forked:` | `->L3691` | | +| 3691 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3692`, `->L3693` | | +| 3695 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3696` | | +| 3719 | `if forked:` | `->L3720`, `->L3721` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3794 | `if endpoint is None:` | `->L3795` | | +| 3805 | `if coordinate is None:` | `->L3806` | | +| 3818 | `if reseated is not None:` | `->L3819`, `->L3822` | | +| 3865 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3913` | | +| 3885 | `if flank is None:` | `->L3887` | | +| 3943 | `if not (` | `->L3946` | | +| 3962 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3963` | | +| 4020 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4005` | | +| 4072 | `if (` | `->L4078` | | +| 4257 | `if not carries_coupled_primary and any(` | `->L4263` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 4269 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4270` | | +| 4287 | `if (endpoint - candidate) * toward_endpoint <= curve_radius:` | `->L4288` | | +| 4289 | `if any(` | `->L4294` | | +| 4297 | `if any(` | `->L4300` | | +| 4307 | `if gap_edges[1] <= gap_edges[0] or not _inside_usable_gap(` | `->L4310` | | +| 4345 | `if axis is None:` | `->L4346` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4398 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L4399` | | +| 4449 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L4450` | | +| 4487 | `if run is not None:` | `->L4538` | | +| 4500 | `if any(` | `->L4504` | | +| 4614 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4615` | | +| 4688 | `if coordinate is None and len(coupled_flanks) == 1:` | `->L4689` | | +| 4692 | `for candidate_coordinate in direct_candidates:` | `->L4693`, `->L4718` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 4703 | `if not moved_channels or any(` | `->L4708`, `->L4709` | | +| 4709 | `if any(` | `->L4713`, `->L4714` | | +| 4714 | `if not landing_feasible(candidate_coordinate):` | `->L4715`, `->L4716` | | +| 4718 | `if coordinate is None:` | `->L4719` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 4724 | `if (` | `->L4728` | | +| 4744 | `if not obstacles:` | `->L4746` | | +| 4768 | `for coordinate in candidates:` | `->L4734`, `->L4769` | | +| 4769 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L4770`, `->L4771` | | +| 4777 | `if moved_plan is None:` | `->L4778`, `->L4779` | | +| 4788 | `if moved_channel is None or any(` | `->L4791`, `->L4792` | | +| 4796 | `if (` | `->L4800`, `->L4801` | | +| 4865 | `if (` | `->L4873` | | +| 4884 | `if not obstacles:` | `->L4886` | | +| 4902 | `for coordinate in candidates:` | `->L4855`, `->L4903` | | +| 4910 | `if not inside_gap:` | `->L4911`, `->L4912` | | +| 4922 | `if moved is None:` | `->L4923`, `->L4924` | | +| 4934 | `if not moved_channels or any(` | `->L4947`, `->L4948` | | +| 4952 | `if (` | `->L4956`, `->L4957` | | +| 5048 | `if _landing_channels_crowd(first, second, curve_radius):` | `->L5049` | | +| 5052 | `if any(` | `->L5060` | | +| 5082 | `if any(pair <= component for pair in crowded_pairs) or (` | `->L5085` | | +| 5090 | `for component in components:` | `->L5091` | | +| 5096 | `for key in traversal:` | `->L5097`, `->L5134` | | +| 5099 | `for prior_key, prior_coordinate in positions.items():` | `->L5100`, `->L5116` | | +| 5101 | `if (` | `->L5106`, `->L5107` | | +| 5110 | `if clearance is None:` | `->L5111`, `->L5112` | | +| 5112 | `if from_left:` | `->L5113`, `->L5115` | | +| 5116 | `for fixed in fixed_channels:` | `->L5117`, `->L5133` | | +| 5117 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5120`, `->L5121` | | +| 5124 | `if (` | `->L5129`, `->L5130` | | +| 5136 | `for positions in (packed_positions(True), packed_positions(False)):` | `->L5090`, `->L5137` | | +| 5137 | `if any(` | `->L5142`, `->L5143` | | +| 5148 | `for key in ordered:` | `->L5149`, `->L5179` | | +| 5150 | `if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:` | `->L5151`, `->L5152` | | +| 5152 | `for plan_rank, channel in grouped[key]:` | `->L5153`, `->L5177` | | +| 5154 | `if channel.flank_rank is not None:` | `->L5155`, `->L5163` | | +| 5156 | `if flank_key in moved_flanks:` | `->L5157`, `->L5158` | | +| 5164 | `if opening_key in moved_openings:` | `->L5165`, `->L5166` | | +| 5173 | `if moved is None:` | `->L5174`, `->L5176` | | +| 5177 | `if not feasible:` | `->L5148`, `->L5178` | | +| 5179 | `if not feasible:` | `->L5180`, `->L5181` | | +| 5182 | `if (` | `->L5186`, `->L5187` | | +| 5192 | `if any(` | `->L5196`, `->L5197` | | +| 5203 | `if any(` | `->L5210`, `->L5211` | | +| 5211 | `if any(` | `->L5216`, `->L5217` | | +| 5249 | `if not obstacles:` | `->L5251` | | +| 5268 | `for coordinate in candidates:` | `->L5234`, `->L5269` | | +| 5275 | `if any(` | `->L5289`, `->L5290` | | +| 5343 | `if first.system_id != second.system_id:` | `->L5344` | | +| 5345 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5346` | **needs-review** -- _channels_share_source_carrier's shared-claimant shortcut. Its sole caller is _validate_final_convergence_feasibility, which pairs a convergence plan channel against a frozen member channel; the intersection is non-empty only when the plan's channel names the very member it is compared with, which no corpus fixture produces. Reachable in principle, wants a fixture. | +| 5586 | `if not negative or not positive:` | `->L5587` | | +| 5646 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5647` | | +| 5651 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5659` | | +| 5679 | `if gap is None:` | `->L5680` | | +| 5690 | `if requirement is None:` | `->L5691` | | +| 5694 | `if current is None or requirement.required > current.required:` | `->L5636` | | +| 5710 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5712` | | +| 5716 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5717`, `->L5718` | | +| 5726 | `if requirement is None:` | `->L5727`, `->L5728` | | +| 5731 | `if current is None or requirement.required > current.required:` | `->L5709`, `->L5732` | | +| 5748 | `if (` | `->L5760` | | +| 5763 | `if (` | `->L5768`, `->L5769` | | +| 5774 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5775`, `->L5776` | | +| 5784 | `if requirement is not None:` | `->L5747`, `->L5785` | | +| 5831 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5835` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 5838 | `if first_delta * second_delta < 0:` | `->L5839` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5849 | `if (` | `->L5861`, `->L5864` | | +| 5878 | `if opposing_approaches is not None:` | `->L5879` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 5923 | `if same_line and first_direction is not second_direction:` | `->L5928` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5929 | `if (` | `->L5956` | | +| 5976 | `if conflict is not None:` | `->L5977` | | +| 5986 | `if requirements:` | `->L5987`, `->L5989` | | +| 6024 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6025` | | +| 6031 | `if (` | `->L6042` | | +| 6042 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6045`, `->L6046` | | +| 6046 | `if any(` | `->L6051`, `->L6052` | | +| 6059 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6060` | | +| 6060 | `if any(` | `->L6065`, `->L6066` | | +| 6070 | `if channel.gap != member_channel.gap:` | `->L6071` | | +| 6072 | `if _gap_channels_crowd(` | `->L6079` | | +| 6079 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6082`, `->L6083` | | +| 6083 | `if any(` | `->L6087`, `->L6088` | | +| 6104 | `if not plan.owns_geometry:` | `->L6105` | | +| 6168 | `if not plan.owns_geometry:` | `->L6169` | | +| 6192 | `owner_edge not in edge_ranks` | `->L6196` | | +| 6231 | `if not plan.owns_geometry:` | `->L6232` | | +| 6250 | `if ownership.edge in by_edge:` | `->L6251` | | +| 6378 | `for item in system_plans:` | `->L6379`, `->L6389` | | +| 6731 | `if not horizontal and not vertical:` | `->L6732` | | +| 6755 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6740` | | +| 6788 | `if axis.axis is DemandAxis.X:` | `->L6811` | | +| 6915 | `if not candidates:` | `->L6916` | | +| 6937 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L6940` | | +| 6940 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L6943` | | +| 6946 | `if horizontal:` | `->L6947` | | +| 7015 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7016` | | +| 7023 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7024` | | +| 7042 | `if actual is None:` | `->L7043` | | +| 7049 | `direction is not landing.approach_direction` | `->L7053` | | +| 7050 | `or handedness is not landing.corner_handedness` | `->L7053` | | +| 7051 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7053` | | +| 7072 | `opening is None` | `->L7076` | | +| 7073 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7076` | | +| 7074 | `or emitted_segment != landing.opening_turn_segment` | `->L7076` | | +| 7085 | `if query is None:` | `->L7086` | | +| 7091 | `if not plan.owns_geometry:` | `->L7092` | | +| 7099 | `if continuation is not None and continuation.covered_by_member_id is not None:` | `->L7101` | | +| 7101 | `if (` | `->L7115`, `->L7119` | | +| 7119 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7120`, `->L7124` | | +| 7142 | `if opening is None:` | `->L7143` | | +| 7143 | `if not clearance_pending:` | `->L7144`, `->L7159` | | +| 7151 | `landing.opening_turn_segment is not None` | `->L7159` | | +| 7157 | `if route.curve_radii is not None:` | `->L7159` | | +| 7225 | `if landing.opening_turn_coordinate is not None:` | `->L7233` | | +| 7241 | `if not clearance_pending and any(` | `->L7245` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7270 | `if not plan.owns_geometry:` | `->L7271` | | +| 7281 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7282` | | +| 7291 | `if route is None:` | `->L7292` | | +| 7297 | `if (` | `->L7302` | | +| 7309 | `if any(` | `->L7313` | | +| 7330 | `if continuation.covered_by_member_id is not None:` | `->L7347` | | +| 7333 | `if (` | `->L7342` | | +| 7348 | `if (` | `->L7327`, `->L7359` | | +| 7375 | `if route is None or membership is None:` | `->L7376` | | +| 7381 | `if any(` | `->L7385` | | ## `core.py` @@ -902,61 +899,61 @@ Gates with an un-exercised arm: | 336 | `or after is None` | `->L337`, `->L340` | | | 337 | `or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L338`, `->L340` | | | 338 | `or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L340`, `->L341` | | -| 386 | `if not any(` | `->L391` | | -| 425 | `if candidate_x is None:` | `->L426`, `->L427` | | -| 430 | `if not moved_ranks:` | `->L433` | | -| 451 | `if not changed:` | `->L453` | | -| 473 | `if run_direction is None or turn_direction is None:` | `->L474` | | -| 475 | `if (run_direction in {Direction.R, Direction.L}) == (` | `->L478` | | -| 487 | `if not candidate_ranks:` | `->L488` | | -| 612 | `if not section_ids:` | `->L613` | | -| 714 | `if ctx.exit_turns is None or not pending_plan_ids:` | `->L715` | | -| 869 | `if edge_key not in reseated:` | `->L871` | | -| 872 | `if membership is None or membership.assignment is None:` | `->L873`, `->L874` | | -| 879 | `if allocated is None:` | `->L880`, `->L881` | | -| 922 | `if source is None or source is route:` | `->L924` | | -| 950 | `if opening is not None:` | `->L951` | | -| 952 | `if target.section_id is None:` | `->L953`, `->L956` | | -| 978 | `if route is None:` | `->L979`, `->L980` | | -| 988 | `if membership is not None:` | `->L989`, `->L991` | | -| 1001 | `if route is None:` | `->L1002` | | -| 1037 | `if edge is None or family_id is None:` | `->L1038` | | -| 1115 | `if channel is None:` | `->L1116` | | -| 1118 | `if claim in channel_claims:` | `->L1119` | | -| 1132 | `if shared_opening_tail is not None:` | `->L1133` | | -| 1139 | `if claim not in channel_claims:` | `->L1140`, `->L1141` | | -| 1186 | `if not opening_size or opening_size + 1 >= len(route.points):` | `->L1188` | | -| 1190 | `if direction not in (Direction.U, Direction.D):` | `->L1191`, `->L1192` | | -| 1193 | `if target.section_id is None:` | `->L1194`, `->L1195` | | -| 1278 | `if route.exit_lane_transition_plan_id is not None:` | `->L1279` | | -| 1280 | `if route.fan_plan_id is not None or route.fan_route_emitter is not None:` | `->L1281` | | -| 1282 | `if convergence_owns_segment_boundary(route, segment_rank):` | `->L1283` | | -| 1342 | `if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:` | `->L1343` | **needs-review** -- _candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable. | -| 1442 | `if _planner_owns_channel(` | `->L1445` | | -| 1445 | `if not ctx.validate_final_route_frames:` | `->L1446`, `->L1447` | | -| 1451 | `if not _candidate_clears_runway(` | `->L1454` | | -| 1454 | `if not ctx.validate_final_route_frames:` | `->L1455`, `->L1456` | | -| 1492 | `if abs(channel.x - target) <= COORD_TOLERANCE:` | `->L1494` | **needs-review** -- _align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored. | -| 1517 | `if coordinate is not None:` | `->L1472`, `->L1518` | | -| 1589 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1590` | | -| 1846 | `if radii is not None:` | `->L1851` | | -| 1847 | `if 0 <= rank - 1 < len(radii):` | `->L1849` | | -| 1849 | `if rank < len(radii):` | `->L1851` | | -| 1874 | `if rank < len(route.exit_shared_opening_points):` | `->L1875` | | -| 1888 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1871` | | -| 1956 | `if movable_run:` | `->L1957` | | -| 2007 | `if context is not None:` | `->L2022` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | -| 2023 | `if key in ctx.skip_edges:` | `->L2024` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | -| 2026 | `if edge is None:` | `->L2027` | | -| 2030 | `if family_id is None:` | `->L2031` | | -| 2053 | `if system_id not in failures:` | `->L2057` | | -| 2337 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2338` | | -| 2343 | `if actual != (channel.start, channel.end):` | `->L2344` | | -| 2347 | `if (` | `->L2352` | | -| 2366 | `if radius_index >= len(radii):` | `->L2367` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | -| 2373 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2374` | | -| 2378 | `if radius_index + 2 >= len(route.points):` | `->L2379` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | -| 2394 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2395` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | +| 391 | `if not any(` | `->L396` | | +| 430 | `if settled_x is None:` | `->L431`, `->L432` | | +| 435 | `if not moved_ranks:` | `->L438` | | +| 456 | `if not changed:` | `->L458` | | +| 478 | `if run_direction is None or turn_direction is None:` | `->L479` | | +| 480 | `if (run_direction in {Direction.R, Direction.L}) == (` | `->L483` | | +| 492 | `if not candidate_ranks:` | `->L493` | | +| 617 | `if not section_ids:` | `->L618` | | +| 719 | `if ctx.exit_turns is None or not pending_plan_ids:` | `->L720` | | +| 874 | `if edge_key not in reseated:` | `->L876` | | +| 877 | `if membership is None or membership.assignment is None:` | `->L878`, `->L879` | | +| 884 | `if allocated is None:` | `->L885`, `->L886` | | +| 927 | `if source is None or source is route:` | `->L929` | | +| 955 | `if opening is not None:` | `->L956` | | +| 957 | `if target.section_id is None:` | `->L958`, `->L961` | | +| 983 | `if route is None:` | `->L984`, `->L985` | | +| 993 | `if membership is not None:` | `->L994`, `->L996` | | +| 1006 | `if route is None:` | `->L1007` | | +| 1042 | `if edge is None or family_id is None:` | `->L1043` | | +| 1120 | `if channel is None:` | `->L1121` | | +| 1123 | `if claim in channel_claims:` | `->L1124` | | +| 1137 | `if shared_opening_tail is not None:` | `->L1138` | | +| 1144 | `if claim not in channel_claims:` | `->L1145`, `->L1146` | | +| 1191 | `if not opening_size or opening_size + 1 >= len(route.points):` | `->L1193` | | +| 1195 | `if direction not in (Direction.U, Direction.D):` | `->L1196`, `->L1197` | | +| 1198 | `if target.section_id is None:` | `->L1199`, `->L1200` | | +| 1283 | `if route.exit_lane_transition_plan_id is not None:` | `->L1284` | | +| 1285 | `if route.fan_plan_id is not None or route.fan_route_emitter is not None:` | `->L1286` | | +| 1287 | `if convergence_owns_segment_boundary(route, segment_rank):` | `->L1288` | | +| 1347 | `if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:` | `->L1348` | **needs-review** -- _candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable. | +| 1447 | `if _planner_owns_channel(` | `->L1450` | | +| 1450 | `if not ctx.validate_final_route_frames:` | `->L1451`, `->L1452` | | +| 1456 | `if not _candidate_clears_runway(` | `->L1459` | | +| 1459 | `if not ctx.validate_final_route_frames:` | `->L1460`, `->L1461` | | +| 1497 | `if abs(channel.x - target) <= COORD_TOLERANCE:` | `->L1499` | **needs-review** -- _align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored. | +| 1522 | `if coordinate is not None:` | `->L1477`, `->L1523` | | +| 1594 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1595` | | +| 1851 | `if radii is not None:` | `->L1856` | | +| 1852 | `if 0 <= rank - 1 < len(radii):` | `->L1854` | | +| 1854 | `if rank < len(radii):` | `->L1856` | | +| 1879 | `if rank < len(route.exit_shared_opening_points):` | `->L1880` | | +| 1893 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1876` | | +| 1961 | `if movable_run:` | `->L1962` | | +| 2012 | `if context is not None:` | `->L2027` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | +| 2028 | `if key in ctx.skip_edges:` | `->L2029` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | +| 2031 | `if edge is None:` | `->L2032` | | +| 2035 | `if family_id is None:` | `->L2036` | | +| 2058 | `if system_id not in failures:` | `->L2062` | | +| 2342 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2343` | | +| 2348 | `if actual != (channel.start, channel.end):` | `->L2349` | | +| 2352 | `if (` | `->L2357` | | +| 2371 | `if radius_index >= len(radii):` | `->L2372` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | +| 2378 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2379` | | +| 2383 | `if radius_index + 2 >= len(route.points):` | `->L2384` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | +| 2399 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2400` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | ## `normalize.py` diff --git a/src/nf_metro/layout/phases/ports.py b/src/nf_metro/layout/phases/ports.py index 8483a9cbe..d8b972d59 100644 --- a/src/nf_metro/layout/phases/ports.py +++ b/src/nf_metro/layout/phases/ports.py @@ -16,7 +16,12 @@ SAME_COORD_TOLERANCE, STATION_ELBOW_TOLERANCE, ) -from nf_metro.layout.geometry import AxisFrame, lanes_run_along_x, lanes_run_along_y +from nf_metro.layout.geometry import ( + AxisFrame, + lanes_run_along_x, + lanes_run_along_y, + section_bbox_edges, +) from nf_metro.layout.layers import build_station_digraph from nf_metro.layout.ordering import split_output_spur_fan from nf_metro.layout.phases._common import ( @@ -72,15 +77,6 @@ def _set_port_x(graph: MetroGraph, port_id: str, x: float) -> None: } -def _box_edges(section: Section) -> tuple[float, float, float, float]: - return ( - section.bbox_x, - section.bbox_y, - section.bbox_x + section.bbox_w, - section.bbox_y + section.bbox_h, - ) - - def _set_box_edge(section: Section, edge: int, value: float) -> None: """Move one box edge, leaving the opposite one where it is.""" if edge == 0: @@ -112,7 +108,7 @@ def section_box_edges( graph: MetroGraph, ) -> dict[str, tuple[float, float, float, float]]: """Every section's box edges as ``(left, top, right, bottom)``.""" - return {sid: _box_edges(sec) for sid, sec in graph.sections.items()} + return {sid: section_bbox_edges(sec) for sid, sec in graph.sections.items()} def carry_ports_with_section_edges( @@ -140,7 +136,7 @@ def carry_ports_with_section_edges( if anchor is None or prior is None: continue section, edge = anchor - was, now = prior[edge], _box_edges(section)[edge] + was, now = prior[edge], section_bbox_edges(section)[edge] station = graph.stations[pid] coord = station.y if edge % 2 else station.x if abs(now - was) <= COORD_TOLERANCE or abs(coord - was) > GUARD_TOLERANCE: @@ -172,7 +168,7 @@ def hold_port_anchored_edges( if anchor is None or prior is None: continue section, edge = anchor - was, now = prior[edge], _box_edges(section)[edge] + was, now = prior[edge], section_bbox_edges(section)[edge] station = graph.stations[pid] coord = station.y if edge % 2 else station.x setter = _set_port_y if edge % 2 else _set_port_x diff --git a/src/nf_metro/layout/route_plan.py b/src/nf_metro/layout/route_plan.py index eef8f5bd9..f80d63f8e 100644 --- a/src/nf_metro/layout/route_plan.py +++ b/src/nf_metro/layout/route_plan.py @@ -1996,6 +1996,15 @@ def __post_init__(self) -> None: raise ValueError( "convergence bypass tail runway must be positive and finite" ) + if self.bypass_tail_runway is not None and not math.isclose( + self.bypass_tail_runway, + self.minimum_runway, + rel_tol=1e-12, + abs_tol=1e-9, + ): + raise ValueError( + "convergence bypass tail runway must equal its minimum runway" + ) if self.opening_turn_coordinate is not None and not math.isfinite( self.opening_turn_coordinate ): diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 00aa5339b..d9413ac28 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -1679,8 +1679,6 @@ def _reconcile_landing_handedness( plans: tuple[ConvergencePlan, ...], ctx: _RoutingCtx ) -> tuple[ConvergencePlan, ...]: """Derive each planned corner from its settled cross-run and approach.""" - if not isinstance(getattr(ctx, "graph", None), MetroGraph): - return plans graph = ctx.graph reconciled: list[ConvergencePlan] = [] for plan in plans: @@ -2788,8 +2786,6 @@ def _fuse_shared_terminal_gap_channels( plans: tuple[ConvergencePlan, ...], ctx: _RoutingCtx ) -> tuple[ConvergencePlan, ...]: """Seat co-directed same-line terminal legs on one physical carrier.""" - if not isinstance(getattr(ctx, "graph", None), MetroGraph): - return plans graph = ctx.graph lookup = gap_lookup_geometry(graph) grouped: defaultdict[ @@ -2859,9 +2855,7 @@ def _fuse_owned_legacy_terminal_flanks( plans: tuple[ConvergencePlan, ...], ctx: _RoutingCtx ) -> tuple[ConvergencePlan, ...]: """Seat legacy terminal openings on their convergence-owned target flank.""" - merge = getattr(ctx, "merge", None) - if merge is None: - return plans + merge = ctx.merge settled: list[ConvergencePlan] = [] for plan_rank, plan in enumerate(plans): axis = plan.trunk_axis @@ -4440,9 +4434,7 @@ def _settle_reserved_trunk_axes( ctx: _RoutingCtx, member_runs: tuple[_CotravellingRun, ...], ) -> tuple[ConvergencePlan, ...]: - reserved_bands = getattr(ctx, "reserved_bands", None) - if reserved_bands is None: - return plans + reserved_bands = ctx.reserved_bands settled: list[ConvergencePlan] = [] for plan in plans: axis = plan.trunk_axis @@ -4472,9 +4464,9 @@ def _settle_reserved_trunk_axes( ) if section_id is not None ) - clearance_band = band + clearance_bounds = (band.lo, band.hi) if band is not None else None if band is None: - clearance_band = corridor_clearance_band( + corridor_band = corridor_clearance_band( graph, axis=1, section_ids=section_ids, @@ -4482,6 +4474,8 @@ def _settle_reserved_trunk_axes( run_start=axis.extent_start, run_end=axis.extent_end, ) + if corridor_band is not None: + clearance_bounds = (corridor_band.lo, corridor_band.hi) coordinate = seat_run_in_corridor_clearance( graph, axis=1, @@ -4514,11 +4508,11 @@ def _settle_reserved_trunk_axes( tuple(item.coordinate for item in neighbours), ctx.offset_step, ) - if clearance_band is None + if clearance_bounds is None or ( - clearance_band.lo - COORD_TOLERANCE + clearance_bounds[0] - COORD_TOLERANCE <= candidate - <= clearance_band.hi + COORD_TOLERANCE + <= clearance_bounds[1] + COORD_TOLERANCE ) ), key=lambda candidate: abs(candidate - axis.coordinate), diff --git a/src/nf_metro/render/section_header.py b/src/nf_metro/render/section_header.py index 6104efe67..65a396695 100644 --- a/src/nf_metro/render/section_header.py +++ b/src/nf_metro/render/section_header.py @@ -898,21 +898,7 @@ def _leftmost_clear_band_start( stopping at the leftmost such position rather than sweeping past routes the finite-width header would never reach. """ - pad = SECTION_HEADER_ROUTE_PAD - _, band_top, _, band_bottom = above.keepout - y_lo, y_hi = band_top - pad, band_bottom + pad - start = section.bbox_x - while True: - band = (start - pad, y_lo, start + length + pad, y_hi) - spans = ( - _segment_rect_xspan(poly[i], poly[i + 1], band) - for poly in polylines - for i in range(len(poly) - 1) - ) - rightmost = max((s[1] for s in spans if s is not None), default=None) - if rightmost is None or rightmost + pad <= start: - return start - start = rightmost + pad + return _clear_band_start(section, above, length, polylines, direction=1) def _rightmost_clear_band_start( @@ -922,21 +908,50 @@ def _rightmost_clear_band_start( polylines: list[Polyline], limit: float, ) -> float: + return _clear_band_start( + section, above, length, polylines, direction=-1, limit=limit + ) + + +def _clear_band_start( + section: Section, + above: SectionHeaderPlacement, + length: float, + polylines: list[Polyline], + *, + direction: Literal[-1, 1], + limit: float | None = None, +) -> float: + """Find the first route-clear header position in ``direction``.""" pad = SECTION_HEADER_ROUTE_PAD _, band_top, _, band_bottom = above.keepout y_lo, y_hi = band_top - pad, band_bottom + pad - start = min(section.bbox_x, limit - length) + if direction > 0: + start = section.bbox_x + else: + if limit is None: + raise ValueError("a leftward header search requires a limit") + start = min(section.bbox_x, limit - length) while True: band = (start - pad, y_lo, start + length + pad, y_hi) - spans = ( - _segment_rect_xspan(poly[i], poly[i + 1], band) + occupied = [ + span for poly in polylines for i in range(len(poly) - 1) - ) - leftmost = min((span[0] for span in spans if span is not None), default=None) - if leftmost is None or start + length <= leftmost - pad: + if (span := _segment_rect_xspan(poly[i], poly[i + 1], band)) is not None + ] + if not occupied: return start - start = leftmost - pad - length + if direction > 0: + obstruction = max(span[1] for span in occupied) + if obstruction + pad <= start: + return start + start = obstruction + pad + else: + obstruction = min(span[0] for span in occupied) + if start + length <= obstruction - pad: + return start + start = obstruction - pad - length def check_section_headers_hold_the_reserved_band( diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 355867250..4b1c87f94 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -125,25 +125,24 @@ "convergences.py::if (::#21", "convergences.py::if (::#22", "convergences.py::if (::#23", - "convergences.py::if (::#24", + "convergences.py::if (::#26", "convergences.py::if (::#27", "convergences.py::if (::#28", "convergences.py::if (::#29", "convergences.py::if (::#3", "convergences.py::if (::#30", - "convergences.py::if (::#31", + "convergences.py::if (::#32", "convergences.py::if (::#33", "convergences.py::if (::#34", - "convergences.py::if (::#35", + "convergences.py::if (::#37", "convergences.py::if (::#38", - "convergences.py::if (::#39", + "convergences.py::if (::#40", "convergences.py::if (::#41", "convergences.py::if (::#42", - "convergences.py::if (::#43", - "convergences.py::if (::#45", + "convergences.py::if (::#44", + "convergences.py::if (::#46", "convergences.py::if (::#47", "convergences.py::if (::#48", - "convergences.py::if (::#49", "convergences.py::if (::#5", "convergences.py::if (::#6", "convergences.py::if (::#7", @@ -163,6 +162,7 @@ "convergences.py::if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:::#1", + "convergences.py::if abs(reseated_opening - source.x) >= (::#1", "convergences.py::if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:::#1", "convergences.py::if abs(source_x - opening_x) > COORD_TOLERANCE:::#1", "convergences.py::if abs(start[0] - end[0]) > COORD_TOLERANCE:::#1", @@ -266,7 +266,6 @@ "convergences.py::if lane is None:::#1", "convergences.py::if len(channel.line_ids) != 1:::#1", "convergences.py::if len(route.points) < 2:::#1", - "convergences.py::if merge is None:::#1", "convergences.py::if moved is None:::#1", "convergences.py::if moved is None:::#2", "convergences.py::if moved is None:::#3", @@ -292,8 +291,6 @@ "convergences.py::if not horizontal and not vertical:::#1", "convergences.py::if not incoming_edges or not outgoing_edges:::#1", "convergences.py::if not inside_gap:::#1", - "convergences.py::if not isinstance(getattr(ctx, \"graph\", None), MetroGraph):::#1", - "convergences.py::if not isinstance(getattr(ctx, \"graph\", None), MetroGraph):::#2", "convergences.py::if not landing_feasible(candidate_coordinate):::#1", "convergences.py::if not moved_channels or any(::#1", "convergences.py::if not moved_channels or any(::#2", @@ -347,9 +344,9 @@ "convergences.py::if reseated is None:::#2", "convergences.py::if reseated is None:::#3", "convergences.py::if reseated is None:::#4", + "convergences.py::if reseated is None:::#5", "convergences.py::if reseated is not None:::#1", "convergences.py::if reseated is not None:::#2", - "convergences.py::if reserved_bands is None:::#1", "convergences.py::if route is None or membership is None:::#1", "convergences.py::if route is None:::#1", "convergences.py::if route is None:::#2", @@ -777,7 +774,6 @@ "member_geometry.py::if actual != (channel.start, channel.end):::#1", "member_geometry.py::if allocated is None:::#1", "member_geometry.py::if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:::#1", - "member_geometry.py::if candidate_x is None:::#1", "member_geometry.py::if channel is None:::#1", "member_geometry.py::if claim in channel_claims:::#1", "member_geometry.py::if claim not in channel_claims:::#1", @@ -816,6 +812,7 @@ "member_geometry.py::if route.exit_lane_transition_plan_id is not None:::#1", "member_geometry.py::if route.fan_plan_id is not None or route.fan_route_emitter is not None:::#1", "member_geometry.py::if run_direction is None or turn_direction is None:::#2", + "member_geometry.py::if settled_x is None:::#1", "member_geometry.py::if shared_opening_tail is not None:::#1", "member_geometry.py::if source is None or source is route:::#1", "member_geometry.py::if system_id not in failures:::#1", diff --git a/tests/test_shared_trunk_channel_lanes.py b/tests/test_shared_trunk_channel_lanes.py index d83e55f19..3b4b3c8f9 100644 --- a/tests/test_shared_trunk_channel_lanes.py +++ b/tests/test_shared_trunk_channel_lanes.py @@ -310,6 +310,16 @@ def _planned_plan( ) +def test_bypass_tail_runway_cannot_disagree_with_minimum_runway() -> None: + landing = _planned_plan("runway", DemandAxis.X, Direction.R, 10.0).landings[0] + + with pytest.raises( + ValueError, + match="bypass tail runway must equal its minimum runway", + ): + replace(landing, bypass_tail_runway=landing.minimum_runway + 1.0) + + @pytest.mark.parametrize( ("axis", "forward", "backward"), ( From d5c9c01666902617ad9ac06b5bbd339c956044b5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 08:45:31 +0100 Subject: [PATCH 075/158] fix(validation): run deferred guards after settlement [skip ci] --- src/nf_metro/layout/phases/guards.py | 77 ++++++++++---- src/nf_metro/layout/routing/invariants.py | 13 ++- src/nf_metro/render/svg.py | 29 +++-- tests/test_guard_registry.py | 124 +++++++++++++++++++++- 4 files changed, 211 insertions(+), 32 deletions(-) diff --git a/src/nf_metro/layout/phases/guards.py b/src/nf_metro/layout/phases/guards.py index 063cc5cd1..a74fa3d61 100644 --- a/src/nf_metro/layout/phases/guards.py +++ b/src/nf_metro/layout/phases/guards.py @@ -2480,12 +2480,13 @@ class _AxisLeg(NamedTuple): direction: int # +1 advancing in the increasing-coordinate sense, else -1 src: str tgt: str + route: RoutedPath + rank: int def _line_axis_segments( pts: list[tuple[float, float]], - src: str, - tgt: str, + route: RoutedPath, ) -> Iterator[_AxisLeg]: """Yield the axis-aligned legs of a rendered path. @@ -2500,8 +2501,10 @@ def _line_axis_segments( min(y1, y2), max(y1, y2), 1 if y2 > y1 else -1, - src, - tgt, + route.edge.source, + route.edge.target, + route, + k, ) elif abs(y1 - y2) <= COLLINEAR_AXIS_TOL and abs(x1 - x2) > GUARD_TOLERANCE: yield _AxisLeg( @@ -2510,8 +2513,10 @@ def _line_axis_segments( min(x1, x2), max(x1, x2), 1 if x2 > x1 else -1, - src, - tgt, + route.edge.source, + route.edge.target, + route, + k, ) @@ -2532,7 +2537,10 @@ def iter_opposing_line_overlaps( lines sharing a channel are carried on their own offset slots, not on the same track. """ - from nf_metro.layout.routing.common import apply_route_offsets + from nf_metro.layout.routing.common import ( + apply_route_offsets, + convergence_owns_segment_boundary, + ) if offsets is None: from nf_metro.layout.routing import compute_station_offsets @@ -2549,7 +2557,7 @@ def iter_opposing_line_overlaps( by_line: dict[str, list[_AxisLeg]] = defaultdict(list) for r in routes: pts = apply_route_offsets(r, offsets) - for leg in _line_axis_segments(pts, r.edge.source, r.edge.target): + for leg in _line_axis_segments(pts, r): by_line[r.line_id].append(leg) for line_id, legs in by_line.items(): @@ -2559,6 +2567,13 @@ def iter_opposing_line_overlaps( continue if a.direction * b.direction >= 0: continue + if ( + a.route.convergence_plan_id is not None + and a.route.convergence_plan_id == b.route.convergence_plan_id + and convergence_owns_segment_boundary(a.route, a.rank) + and convergence_owns_segment_boundary(b.route, b.rank) + ): + continue if min(a.hi, b.hi) - max(a.lo, b.lo) > GUARD_TOLERANCE: yield OpposingOverlap( line_id, @@ -6247,9 +6262,26 @@ def run_validate_guards( ) -def render_layout_invariant_specs() -> tuple[GuardSpec, ...]: - """The Tier-A guards :func:`assert_render_layout_invariants` runs.""" - return _RENDER_LAYOUT_INVARIANT_SPECS +def deferred_final_route_guard_specs() -> tuple[GuardSpec, ...]: + """Final-checkpoint guards that require settled route geometry.""" + return tuple(spec for spec in GUARD_REGISTRY if "routes" in spec.needs) + + +def render_layout_invariant_specs( + *, include_deferred_final: bool = False +) -> tuple[GuardSpec, ...]: + """The guards :func:`assert_render_layout_invariants` runs.""" + if not include_deferred_final: + return _RENDER_LAYOUT_INVARIANT_SPECS + tier_a_names = {spec.name for spec in _RENDER_LAYOUT_INVARIANT_SPECS} + return ( + *_RENDER_LAYOUT_INVARIANT_SPECS, + *( + spec + for spec in deferred_final_route_guard_specs() + if spec.name not in tier_a_names + ), + ) def assert_render_layout_invariants( @@ -6258,8 +6290,9 @@ def assert_render_layout_invariants( offsets: dict[tuple[str, str], float], *, strict: bool = False, + include_deferred_final: bool = False, ) -> None: - """Run the cheap Tier-A layout guards on the final settled geometry. + """Run layout guards on the final settled geometry. Sibling of :func:`assert_render_curve_invariants`: both run on the exact geometry the renderer is about to draw, so a layout defect is visible to @@ -6267,15 +6300,20 @@ def assert_render_layout_invariants( already pays for ``offsets`` and ``routes``, and the guards are observational, so this is near-zero cost and cannot move a pixel. - Each Tier-A guard raises ``PhaseInvariantError`` on its first violation - rather than returning a list, so each runs in isolation and its message is - captured; the aggregate is one message. Without *strict* the aggregate is - a :class:`UserWarning`; with *strict* it raises :class:`LayoutInvariantError` - (modelled on the ``NF_METRO_ALLOW_BAD_CURVES`` chokepoint). + Tier-A guards always run. When final route checks were deferred for + settlement, ``include_deferred_final`` also runs every route-dependent + guard in the registry. Each guard raises ``PhaseInvariantError`` on its + first violation rather than returning a list, so each runs in isolation and + its message is captured; the aggregate is one message. Without *strict* + the aggregate is a :class:`UserWarning`; with *strict* it raises + :class:`LayoutInvariantError` (modelled on the + ``NF_METRO_ALLOW_BAD_CURVES`` chokepoint). """ available: dict[str, Any] = {"offsets": offsets, "routes": routes} messages: list[str] = [] - for spec in render_layout_invariant_specs(): + for spec in render_layout_invariant_specs( + include_deferred_final=include_deferred_final + ): try: spec.fn(graph, "render", **{name: available[name] for name in spec.needs}) except PhaseInvariantError as exc: @@ -6284,8 +6322,9 @@ def assert_render_layout_invariants( return detail = "\n ".join(messages) + invariant_set = "final" if include_deferred_final else "Tier-A" msg = ( - "the settled layout violates Tier-A invariants the renderer is about " + f"the settled layout violates {invariant_set} invariants the renderer is about " "to draw. The map will render but is visibly broken; fix the layout " "(or the directive combination) that produced this geometry.\n " f"{detail}" diff --git a/src/nf_metro/layout/routing/invariants.py b/src/nf_metro/layout/routing/invariants.py index d19d9d300..3d5cde8d4 100644 --- a/src/nf_metro/layout/routing/invariants.py +++ b/src/nf_metro/layout/routing/invariants.py @@ -82,6 +82,7 @@ opposing_entry_confluence_slots, peeloff_target_slots, perp_entry_consumer, + planner_owns_segment, resolve_section, tail_on_slot, trunk_segments_cross, @@ -3543,7 +3544,9 @@ def check_no_dogleg_crosses_exempt_trunk( for rp in routes: if not rp.is_inter_section or rp.normalize_exempt: continue - for _k, seg in iter_horizontal_trunks(rp): + for k, seg in iter_horizontal_trunks(rp): + if planner_owns_segment(rp, k): + continue for erp, eseg in exempt: if erp.line_id == rp.line_id: continue @@ -5016,6 +5019,14 @@ def check_right_entry_drop_in_when_clear( dive_y = max(y for _, y in r.points) if dive_y <= box_bottom + tol: continue + shared_opening = r.exit_shared_opening_points + if shared_opening and any( + planner_owns_segment(r, rank) + and max(shared_opening[rank][1], shared_opening[rank + 1][1]) + >= dive_y - tol + for rank in range(len(shared_opening) - 1) + ): + continue src_station = graph.stations.get(r.edge.source) tgt_station = graph.stations.get(r.edge.target) if src_station is None or tgt_station is None: diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index 987005e39..eac997f53 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -1365,11 +1365,13 @@ def _settle_render_geometry( render-time row shift, so a collision involving one is left for the guard to surface rather than reflowed into kinked tracks. - The Tier-A layout guards run once, on the settled geometry, alongside the - header-clearance guard: they judge what the renderer draws rather than an - intermediate the later stages then move. Label growth legitimately carries a - bbox edge past a port, so ``carry_ports_with_section_edges`` moves the port - with the edge it is anchored to and the port guards see a consistent pair. + The layout guards run once, on the settled geometry, alongside the + header-clearance guard. When boundary clearance deferred route-dependent + guards, the final pass includes every such registry guard. They judge what + the renderer draws rather than an intermediate the later stages then move. + Label growth legitimately carries a bbox edge past a port, so + ``carry_ports_with_section_edges`` moves the port with the edge it is + anchored to and the port guards see a consistent pair. A ``group`` caption band below a section grows that section's bottom edge, and that edge is the blocker bounding the row corridor beneath it, so the @@ -1487,6 +1489,9 @@ def _reconcile_carried_ports( reanchor_junctions(graph) station_offsets = compute_station_offsets(graph, offset_step=offset_step) routes, route_plan = _route(station_offsets, allow_clearance_requirements=True) + deferred_final_route_guards = graph._validate_active and bool( + route_plan.boundary_clearance_requirements + ) applied_settlements: list[EnvelopeSettlement] = [] if route_plan.boundary_clearance_requirements: requested_plan = route_plan @@ -1669,12 +1674,16 @@ def _measure_clearance( strict=effective_strict, ) - # The Tier-A layout guards read the settled routes and the settled boxes -- - # the geometry the renderer is handed -- so a bbox, anchor, elbow, - # pass-through, band or crossing defect is judged on what gets drawn rather - # than on a first routing pass that later steps move. + # The layout guards read the settled routes and boxes. Deferred + # route-dependent guards join the Tier-A set here, so every guard judges the + # geometry the renderer is handed rather than a routing pass that later + # steps move. assert_render_layout_invariants( - graph, routes, station_offsets, strict=effective_strict + graph, + routes, + station_offsets, + strict=effective_strict or deferred_final_route_guards, + include_deferred_final=deferred_final_route_guards, ) assert_render_header_clearance(graph, strict=effective_strict) return ( diff --git a/tests/test_guard_registry.py b/tests/test_guard_registry.py index 9559076d4..e1334d951 100644 --- a/tests/test_guard_registry.py +++ b/tests/test_guard_registry.py @@ -19,15 +19,19 @@ from nf_metro.layout.phases import guards from nf_metro.layout.phases.guards import GUARD_REGISTRY, PhaseInvariantError from nf_metro.layout.routing import invariants +from nf_metro.layout.routing.common import RoutedPath from nf_metro.layout.routing.invariants import ( CHECK_REGISTRY, assert_render_curve_invariants, + check_no_dogleg_crosses_exempt_trunk, + check_right_entry_drop_in_when_clear, ) +from nf_metro.parser.model import Edge, MetroGraph, Port, PortSide, Section, Station VALID_TIERS = {"A", "B", "C"} -def test_final_runner_defers_only_route_guards_for_pending_clearance( +def test_final_runner_runs_deferred_tier_b_route_guard_on_settled_geometry( monkeypatch, ) -> None: called: list[str] = [] @@ -43,9 +47,10 @@ def route_guard(graph, phase, *, routes): "GUARD_REGISTRY", ( guards.GuardSpec(structural_guard, "A"), - guards.GuardSpec(route_guard, "A", needs=frozenset({"routes"})), + guards.GuardSpec(route_guard, "B", needs=frozenset({"routes"})), ), ) + monkeypatch.setattr(guards, "_RENDER_LAYOUT_INVARIANT_SPECS", ()) monkeypatch.setattr( "nf_metro.layout.routing.observe_route_edges", lambda *args, **kwargs: SimpleNamespace( @@ -57,6 +62,10 @@ def route_guard(graph, phase, *, routes): guards.run_validate_guards(object(), "after final", include_final=True, offsets={}) assert called == ["structural"] + guards.assert_render_layout_invariants( + object(), [object()], {}, strict=True, include_deferred_final=True + ) + assert called == ["structural", "route"] def test_final_runner_rejects_bad_routes_without_pending_clearance(monkeypatch) -> None: @@ -82,6 +91,111 @@ def route_guard(graph, phase, *, routes): ) +def test_deferred_tier_b_guard_rejects_bad_settled_routes(monkeypatch) -> None: + def route_guard(graph, phase, *, routes): + raise PhaseInvariantError("bad settled geometry") + + monkeypatch.setattr( + guards, + "GUARD_REGISTRY", + (guards.GuardSpec(route_guard, "B", needs=frozenset({"routes"})),), + ) + monkeypatch.setattr(guards, "_RENDER_LAYOUT_INVARIANT_SPECS", ()) + + with pytest.raises(guards.LayoutInvariantError, match="bad settled geometry"): + guards.assert_render_layout_invariants( + object(), [object()], {}, strict=True, include_deferred_final=True + ) + + +def test_convergence_owned_dogleg_is_not_treated_as_movable() -> None: + exempt = RoutedPath( + Edge("exempt-source", "exempt-target", "fixed"), + "fixed", + [ + (400.0, 298.0), + (416.0, 298.0), + (416.0, 196.0), + (14.0, 196.0), + (14.0, 120.0), + (30.0, 120.0), + ], + is_inter_section=True, + normalize_exempt=True, + ) + movable = RoutedPath( + Edge("source", "target", "moving"), + "moving", + [ + (190.0, 120.0), + (209.0, 120.0), + (209.0, 199.0), + (419.0, 199.0), + (419.0, 298.0), + (450.0, 298.0), + ], + is_inter_section=True, + ) + + assert check_no_dogleg_crosses_exempt_trunk(None, [exempt, movable], {}) + movable.convergence_plan_id = "convergence" + movable.convergence_owned_segment_ranks = (2,) + assert not check_no_dogleg_crosses_exempt_trunk(None, [exempt, movable], {}) + + +def test_owned_shared_opening_is_not_a_needless_right_entry_dive( + monkeypatch, +) -> None: + graph = MetroGraph() + graph.sections = { + "source": Section("source", "Source", grid_row=0), + "target": Section("target", "Target", grid_row=1, bbox_y=100.0, bbox_h=40.0), + } + graph.stations = { + "source": Station("source", "Source", section_id="source"), + "entry": Station("entry", "", section_id="target", is_port=True), + } + graph.ports = {"entry": Port("entry", "target", PortSide.RIGHT, is_entry=True)} + route = RoutedPath( + Edge("source", "entry", "line"), + "line", + [(120.0, 20.0), (140.0, 20.0), (140.0, 180.0), (100.0, 180.0)], + is_inter_section=True, + ) + monkeypatch.setattr( + "nf_metro.layout.routing.inter_section_handlers._right_entry_drop_in_is_clear", + lambda *_args: True, + ) + + assert check_right_entry_drop_in_when_clear(graph, [route]) + route.exit_shared_opening_points = tuple(route.points[:3]) + route.route_system_owned_segment_ranks = (0, 1) + assert not check_right_entry_drop_in_when_clear(graph, [route]) + + +def test_one_convergence_may_own_opposing_legs_on_its_shared_carrier() -> None: + first = RoutedPath( + Edge("first-source", "merge", "line"), + "line", + [(0.0, 0.0), (100.0, 0.0)], + ) + second = RoutedPath( + Edge("second-source", "merge", "line"), + "line", + [(80.0, 0.0), (20.0, 0.0)], + ) + + assert list( + guards.iter_opposing_line_overlaps(None, offsets={}, routes=[first, second]) + ) + first.convergence_plan_id = second.convergence_plan_id = "convergence" + first.convergence_owned_segment_ranks = (0,) + second.convergence_owned_segment_ranks = (0,) + assert not list( + guards.iter_opposing_line_overlaps(None, offsets={}, routes=[first, second]) + ) + + def _defined(module, prefix: str) -> set[str]: return { name @@ -166,6 +280,12 @@ def test_render_layout_chokepoint_is_tier_a_minus_authoring_guards() -> None: assert guards._RENDER_CHOKEPOINT_AUTHORING_GUARDS <= tier_a +def test_deferred_final_set_is_every_route_dependent_guard() -> None: + expected = tuple(spec for spec in GUARD_REGISTRY if "routes" in spec.needs) + assert guards.deferred_final_route_guard_specs() == expected + assert any(spec.tier == "B" for spec in expected) + + def _guards_citing_an_issue() -> dict[str, set[str]]: """Map every ``_guard_*`` whose source cites a ``#NNN`` issue to those issue tokens, so a guard born of a specific bug cannot silently drop the From 83f43b41fc75a9a1a01fb0f13ce56d8b4464ddab Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 10:17:52 +0100 Subject: [PATCH 076/158] fix(routing): reconcile owned dogleg crossings [skip ci] --- docs/dev/routing_gate_coverage.md | 885 ++++++++---------- scripts/routing_gate_coverage.py | 15 +- src/nf_metro/layout/routing/convergences.py | 61 +- src/nf_metro/layout/routing/invariants.py | 4 +- .../layout/routing/member_geometry.py | 30 +- src/nf_metro/layout/routing/normalize.py | 32 + .../data/routing_gate_coverage_baseline.json | 189 +--- tests/data/routing_gate_triage.json | 96 -- tests/test_convergence_planner.py | 54 ++ tests/test_final_convergence_feasibility.py | 16 +- ...test_fused_cotravelling_lines_invariant.py | 9 +- tests/test_guard_registry.py | 4 +- 12 files changed, 579 insertions(+), 816 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 0829d4911..780c5b809 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2164/3339** gates fully exercised (both/all arms hit by some fixture); **1175** gates have at least one un-exercised arm. +**2320/3340** gates fully exercised (both/all arms hit by some fixture); **1020** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **326** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **302** gaps carry a triage verdict. ## `arranger.py` @@ -48,7 +48,7 @@ Gates with an un-exercised arm: ## `common.py` -150/196 gates fully exercised. +151/196 gates fully exercised. Gates with an un-exercised arm: @@ -75,7 +75,6 @@ Gates with an un-exercised arm: | 1498 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L1501` | | | 1499 | `or abs(entry.y - tgt.y) > COORD_TOLERANCE` | `->L1501` | | | 1584 | `elif tgt_sec:` | `->L1592` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1684 | `if dx > 0:` | `->L1687` | **defensive** -- Leftward (dx<=0) near-source fallback: the symmetric mirror of the rightward fallback. Reached only when section info is unavailable AND no adjacent column resolves; valid layouts take the rightward fallback, but the leftward mirror is kept for robustness. | | 1695 | `if st is not None and st.is_port:` | `->L1693` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | | 1744 | `if sec.bbox_w <= 0:` | `->L1745` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | | 1792 | `if sec.bbox_w <= 0:` | `->L1793` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | @@ -109,38 +108,38 @@ Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 301 | `if not mst:` | `->L302` | **defensive** -- mjid ranges over junctions, a subset of junction_ids all present in graph.stations; the missing-station continue never fires. | -| 304 | `if tgt_col is None:` | `->L305` | **defensive** -- A merge junction always resolves to a grid column (it sits adjacent to its entry-port section); the unresolved-column continue never fires. | -| 362 | `if m_col is None:` | `->L363` | **defensive** -- Reached only for junctions in trunk_source, which by construction resolved a column, so m_col is never None and the skip arm never fires. | -| 374 | `if pred_col is None:` | `->L375` | **defensive** -- A merge feeder is a junction fed by an exit port, which always resolves a column, so the skip arm never fires. | -| 393 | `if ep and ep.is_entry:` | `->L391` | **defensive** -- Every outgoing edge of a classified convergence junction targets its sole entry port, so the non-entry arm never fires in the skip-edge pass. | -| 561 | `if port_st is None:` | `->L562` | **defensive** -- Ports listed in a section's entry_ports/exit_ports always have a backing station; the missing-station continue never fires. | -| 581 | `if not ctx.station_offsets:` | `->L582` | **defensive** -- Pairs with _get_offset's guard: compute_station_offsets is never empty on the render path, so _max_offset_at's early-return arm guards only the route_edges(station_offsets=None) call path used by tests. | -| 630 | `if port.section_id is None:` | `->L631`, `->L632` | | -| 662 | `for pid in section.entry_ports:` | `->L663`, `->L665` | | -| 663 | `if line_id in graph.station_lines(pid):` | `->L662`, `->L664` | | -| 691 | `if port is not None:` | `->L692`, `->L695` | | -| 696 | `for sid in section.station_ids:` | `->L697`, `->L701` | | -| 698 | `if not station.is_port:` | `->L696`, `->L699` | | -| 720 | `if section is None:` | `->L721` | | -| 729 | `if sec and sec.grid_col >= 0:` | `->L731` | **needs-review** -- grid-col sentinel: a rail-mode section carries grid_col == -1 (it is placed outside the section grid), so the negative-column arm returning None is load-bearing, not dead. No corpus routing path resolves a rail section's column, so the arm is un-exercised, but a rail topology can reach it; do not fold into a non-optional accessor. | -| 737 | `if sec and sec.grid_row >= 0:` | `->L738`, `->L739` | **needs-review** -- grid-row sentinel: a rail-mode section carries grid_row == -1 (placed outside the section grid), so the negative-row arm returning None is load-bearing, not dead. No corpus routing path resolves a rail section's row, so the arm is un-exercised, but a rail topology can reach it; do not fold into a non-optional accessor. | -| 827 | `if sec is None:` | `->L828` | **defensive** -- _resolve_section_colrow is called for ports/junctions that always resolve to a section; the None-section early-return never fires (mirrors the grid-sentinel guards at L395/L403). | -| 873 | `if src.col is None or tgt.col is None:` | `->L874` | **defensive** -- _hop_needs_bypass is called only for endpoints whose columns the caller already resolved, so the no-column early-return never fires. | -| 968 | `if pst is None:` | `->L969` | **needs-review** -- pst = graph.stations.get(port.id): a port is always registered as a backing station, so the guard is never taken across the corpus. Kept as a station-id string read (no Edge in hand), the idiom deferred by the #1438 single-endpoint migration for a future station-id accessor; the sibling section lookup here was migrated to graph.section_for_port. | -| 1128 | `if not jst:` | `->L1129` | **defensive** -- jid ranges over junction_ids, all present in graph.stations; the missing-station continue never fires. | -| 1131 | `if src_col is None:` | `->L1132` | **defensive** -- A fan-out junction always resolves to a grid column; the unresolved-column continue never fires. | -| 1170 | `if not (tgt.is_port or edge.target in junction_ids):` | `->L1171` | | -| 1173 | `if tgt_col is None:` | `->L1174` | **defensive** -- A junction's port/junction target always resolves to a grid column; the unresolved-column continue never fires. | -| 1294 | `if edge.line_id in line_pos:` | `->L1293` | **defensive** -- line_pos is built from the line IDs of the very all_outgoing list this loop iterates, so the membership test is always true: the reject/loop-back arm (L684) is an unreachable tautology and the enter-body static arc (L686) is a phantom of the real 685->687. Vestigial tautological guard. The deliberate gap is pinned by test_genuine_dead_arm_not_masked_as_covered (arc normalization must not merge the never-taken branch onto the live one). Reclassified defensive (#762). | -| 1323 | `if not (tgt.is_port or edge.target in graph.junction_ids):` | `->L1324` | | -| 1367 | `if jst is None:` | `->L1368` | | -| 1370 | `if src_row is None or col is None:` | `->L1371` | **defensive** -- In _compute_fan_corridors, a fanning junction always resolves to a section column and row; the unresolved continue guards a malformed graph the render path never produces. | -| 1414 | `if tgt_col is None:` | `->L1415` | **needs-review** -- Defensive: _fan_bypass_band skips a fan edge whose target has no resolvable grid column; every corpus fan target resolves a column, so the skip arm is unexercised. | +| 300 | `if not mst:` | `->L301` | **defensive** -- mjid ranges over junctions, a subset of junction_ids all present in graph.stations; the missing-station continue never fires. | +| 303 | `if tgt_col is None:` | `->L304` | **defensive** -- A merge junction always resolves to a grid column (it sits adjacent to its entry-port section); the unresolved-column continue never fires. | +| 361 | `if m_col is None:` | `->L362` | **defensive** -- Reached only for junctions in trunk_source, which by construction resolved a column, so m_col is never None and the skip arm never fires. | +| 373 | `if pred_col is None:` | `->L374` | **defensive** -- A merge feeder is a junction fed by an exit port, which always resolves a column, so the skip arm never fires. | +| 392 | `if ep and ep.is_entry:` | `->L390` | **defensive** -- Every outgoing edge of a classified convergence junction targets its sole entry port, so the non-entry arm never fires in the skip-edge pass. | +| 560 | `if port_st is None:` | `->L561` | **defensive** -- Ports listed in a section's entry_ports/exit_ports always have a backing station; the missing-station continue never fires. | +| 580 | `if not ctx.station_offsets:` | `->L581` | **defensive** -- Pairs with _get_offset's guard: compute_station_offsets is never empty on the render path, so _max_offset_at's early-return arm guards only the route_edges(station_offsets=None) call path used by tests. | +| 629 | `if port.section_id is None:` | `->L630`, `->L631` | | +| 661 | `for pid in section.entry_ports:` | `->L662`, `->L664` | | +| 662 | `if line_id in graph.station_lines(pid):` | `->L661`, `->L663` | | +| 690 | `if port is not None:` | `->L691`, `->L694` | | +| 695 | `for sid in section.station_ids:` | `->L696`, `->L700` | | +| 697 | `if not station.is_port:` | `->L695`, `->L698` | | +| 719 | `if section is None:` | `->L720` | | +| 728 | `if sec and sec.grid_col >= 0:` | `->L730` | **needs-review** -- grid-col sentinel: a rail-mode section carries grid_col == -1 (it is placed outside the section grid), so the negative-column arm returning None is load-bearing, not dead. No corpus routing path resolves a rail section's column, so the arm is un-exercised, but a rail topology can reach it; do not fold into a non-optional accessor. | +| 736 | `if sec and sec.grid_row >= 0:` | `->L737`, `->L738` | **needs-review** -- grid-row sentinel: a rail-mode section carries grid_row == -1 (placed outside the section grid), so the negative-row arm returning None is load-bearing, not dead. No corpus routing path resolves a rail section's row, so the arm is un-exercised, but a rail topology can reach it; do not fold into a non-optional accessor. | +| 826 | `if sec is None:` | `->L827` | **defensive** -- _resolve_section_colrow is called for ports/junctions that always resolve to a section; the None-section early-return never fires (mirrors the grid-sentinel guards at L395/L403). | +| 872 | `if src.col is None or tgt.col is None:` | `->L873` | **defensive** -- _hop_needs_bypass is called only for endpoints whose columns the caller already resolved, so the no-column early-return never fires. | +| 967 | `if pst is None:` | `->L968` | **needs-review** -- pst = graph.stations.get(port.id): a port is always registered as a backing station, so the guard is never taken across the corpus. Kept as a station-id string read (no Edge in hand), the idiom deferred by the #1438 single-endpoint migration for a future station-id accessor; the sibling section lookup here was migrated to graph.section_for_port. | +| 1127 | `if not jst:` | `->L1128` | **defensive** -- jid ranges over junction_ids, all present in graph.stations; the missing-station continue never fires. | +| 1130 | `if src_col is None:` | `->L1131` | **defensive** -- A fan-out junction always resolves to a grid column; the unresolved-column continue never fires. | +| 1169 | `if not (tgt.is_port or edge.target in junction_ids):` | `->L1170` | | +| 1172 | `if tgt_col is None:` | `->L1173` | **defensive** -- A junction's port/junction target always resolves to a grid column; the unresolved-column continue never fires. | +| 1293 | `if edge.line_id in line_pos:` | `->L1292` | **defensive** -- line_pos is built from the line IDs of the very all_outgoing list this loop iterates, so the membership test is always true: the reject/loop-back arm (L684) is an unreachable tautology and the enter-body static arc (L686) is a phantom of the real 685->687. Vestigial tautological guard. The deliberate gap is pinned by test_genuine_dead_arm_not_masked_as_covered (arc normalization must not merge the never-taken branch onto the live one). Reclassified defensive (#762). | +| 1322 | `if not (tgt.is_port or edge.target in graph.junction_ids):` | `->L1323` | | +| 1366 | `if jst is None:` | `->L1367` | | +| 1369 | `if src_row is None or col is None:` | `->L1370` | **defensive** -- In _compute_fan_corridors, a fanning junction always resolves to a section column and row; the unresolved continue guards a malformed graph the render path never produces. | +| 1413 | `if tgt_col is None:` | `->L1414` | **needs-review** -- Defensive: _fan_bypass_band skips a fan edge whose target has no resolvable grid column; every corpus fan target resolves a column, so the skip arm is unexercised. | ## `convergences.py` -279/599 gates fully exercised. +366/604 gates fully exercised. Gates with an un-exercised arm: @@ -162,25 +161,19 @@ Gates with an un-exercised arm: | 484 | `entry is not None` | `->L496` | | | 485 | `and port is not None` | `->L496` | | | 486 | `and port.side in (PortSide.LEFT, PortSide.RIGHT)` | `->L496` | | -| 487 | `and abs(endpoint[0] - entry.x) <= COORD_TOLERANCE` | `->L488` | | -| 488 | `and abs(target[0] - entry.x) <= COORD_TOLERANCE` | `->L489`, `->L496` | | -| 489 | `and abs(endpoint[1] - target[1]) > COORD_TOLERANCE` | `->L491`, `->L496` | | +| 488 | `and abs(target[0] - entry.x) <= COORD_TOLERANCE` | `->L496` | | +| 489 | `and abs(endpoint[1] - target[1]) > COORD_TOLERANCE` | `->L496` | | | 499 | `if horizontal and abs(endpoint[1] - target[1]) <= COORD_TOLERANCE:` | `->L502` | | | 502 | `if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE:` | `->L503`, `->L505` | | | 506 | `if elbow != endpoint and elbow != target:` | `->L507`, `->L508` | | | 552 | `if opening_rank is None:` | `->L553` | | | 555 | `if route.curve_radii is not None:` | `->L559` | | -| 572 | `not landing.bypass` | `->L573`, `->L576` | | -| 573 | `or opening is None` | `->L574`, `->L576` | | -| 574 | `or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L576`, `->L577` | | -| 579 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L580`, `->L581` | | +| 579 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L580` | | | 589 | `if landing.opening_turn_segment is None or not landing.bypass:` | `->L590` | | | 593 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L594` | | | 610 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L611` | | -| 614 | `if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:` | `->L620` | | -| 621 | `outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE` | `->L622`, `->L624` | | -| 622 | `or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L624`, `->L625` | | -| 635 | `if route.offset_regime is OffsetRegime.DEFERRED:` | `->L636` | | +| 621 | `outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE` | `->L624` | | +| 622 | `or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L624` | | | 650 | `for rank, (start, end) in enumerate(zip(points, points[1:])):` | `->L666` | | | 653 | `runway <= COORD_TOLERANCE` | `->L656` | | | 661 | `if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:` | `->L665` | | @@ -193,15 +186,11 @@ Gates with an un-exercised arm: | 822 | `if abs(start[1] - end[1]) > COORD_TOLERANCE:` | `->L823` | | | 827 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L828`, `->L829` | | | 831 | `if extent_end - extent_start > COORD_TOLERANCE:` | `->L810` | | -| 842 | `if not segments:` | `->L843` | | | 914 | `entry_port is None` | `->L918` | | | 915 | `or entry_port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L918` | | | 916 | `or axis.axis is not DemandAxis.X` | `->L918` | | | 920 | `if section is None:` | `->L921` | | -| 926 | `if not (` | `->L935` | | -| 951 | `for rank, route in enumerate(routes):` | `->L952`, `->L969` | | -| 952 | `if rank == carrier_rank:` | `->L953`, `->L954` | | -| 960 | `if opening is None:` | `->L961`, `->L964` | | +| 960 | `if opening is None:` | `->L961` | | | 989 | `if axis is DemandAxis.X:` | `->L991` | | | 1039 | `if any(edge not in edge_order for edge in edges):` | `->L1040` | | | 1075 | `if not incoming_edges or not outgoing_edges:` | `->L1076` | | @@ -210,262 +199,190 @@ Gates with an un-exercised arm: | 1147 | `if route is not None:` | `->L1151` | | | 1151 | `if route is None:` | `->L1152` | | | 1168 | `if any(` | `->L1172` | | -| 1186 | `if (` | `->L1191`, `->L1204` | | +| 1186 | `if (` | `->L1191` | **defensive** -- A landing enters `ordered` only because _landing_cross_segment admitted it, and laning moves that run rather than removing it, so the read that names the landing as a resident always finds a segment. The gate guards the Optional that read returns. | | 1191 | `for edge_key in incoming_edges:` | `->L1192`, `->L1195` | | -| 1216 | `if primary_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH:` | `->L1225` | | -| 1352 | `if (` | `->L1365` | **defensive** -- A landing enters `ordered` only because _landing_cross_segment admitted it, and laning moves that run rather than removing it, so the read that names the landing as a resident always finds a segment. The gate guards the Optional that read returns. | | 1366 | `if (` | `->L1378` | | -| 1407 | `if primary_reason is ConvergenceTrunkReason.OUTGOING_CONTINUATION:` | `->L1408` | | -| 1409 | `if continuation.covered_by_member_id is not None:` | `->L1410`, `->L1434` | | +| 1409 | `if continuation.covered_by_member_id is not None:` | `->L1410` | | | 1518 | `if topology is None:` | `->L1519` | | -| 1586 | `or abs(along[0][1] - along[1][1]) > COORD_TOLERANCE` | `->L1588` | | -| 1589 | `if _vert_horiz_cross(` | `->L1597` | | | 1606 | `if plan.trunk_axis is None:` | `->L1607` | **defensive** -- _turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one. | | 1636 | `if _points_coincide(*segment):` | `->L1637` | | | 1661 | `if (` | `->L1669` | | | 1699 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1700` | | | 1715 | `if abs(source_x - opening_x) > COORD_TOLERANCE:` | `->L1782` | | -| 1722 | `elif (` | `->L1731` | | | 1749 | `if uses_exit_handedness:` | `->L1750` | | -| 1752 | `elif landing.approach_axis is DemandAxis.X:` | `->L1756` | | | 1773 | `if not uses_exit_handedness and (` | `->L1782` | | | 1778 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1782` | | | 1886 | `if opening_follows_flank:` | `->L1887` | | | 1948 | `if landing.opening_turn_segment is None:` | `->L1949` | | -| 1953 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1954` | | | 1984 | `landing.approach_axis is DemandAxis.X` | `->L1988` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | | 1985 | `and landing.opening_turn_segment is not None` | `->L1988` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | | 1990 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1991`, `->L1992` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | -| 2008 | `if reseated is None:` | `->L2009` | | -| 2038 | `if preserve_lane_offsets:` | `->L2039` | | -| 2058 | `if preserve_lane_offsets:` | `->L2059` | | -| 2065 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2066`, `->L2074` | | -| 2066 | `if landing.approach_axis is DemandAxis.X:` | `->L2067`, `->L2071` | | +| 2065 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2074` | | | 2075 | `if opening_segment is not None:` | `->L2086` | | | 2126 | `axis is None` | `->L2129` | | -| 2159 | `if inside or extends:` | `->L2160` | | | 2171 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2172` | | | 2178 | `if actual is None:` | `->L2179` | | -| 2366 | `if any(` | `->L2371` | **needs-review** -- _packed_lane's decline arm: packing a run onto the pitch of its nearest bundle neighbour would seat it inside a *second* neighbour's pitch. Reachable -- 3-lane bundles exist in the corpus (_packed_lane sees len(neighbours)==2 on examples/guide/03b_fan_in_merge.mmd) -- but no fixture makes the candidate breach the far lane. Wants a fixture. | | 2428 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2429` | | | 2470 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2473` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | | 2471 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2473` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | | 2513 | `if run is None:` | `->L2514` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2573 | `if run is None:` | `->L2574` | | -| 2588 | `if obstacles:` | `->L2589` | | -| 2611 | `if run is None:` | `->L2612` | | -| 2620 | `if any(` | `->L2624` | | -| 2648 | `if axis is None:` | `->L2649` | | -| 2658 | `if source is None:` | `->L2659` | | -| 2690 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2691` | | -| 2700 | `if primary is None:` | `->L2701` | | -| 2713 | `or landing.opening_turn_segment is None` | `->L2715` | | -| 2726 | `if reseated is not None:` | `->L2709` | | -| 2766 | `if (` | `->L2772` | | -| 2774 | `for plan_rank, landing_rank in members:` | `->L2755`, `->L2775` | | -| 2777 | `if reseated is None:` | `->L2778`, `->L2779` | | -| 2796 | `if len(channel.line_ids) != 1:` | `->L2797` | | -| 2821 | `if (` | `->L2825` | | -| 2827 | `if endpoint is None:` | `->L2828` | | -| 2833 | `channel.flank_rank is not None` | `->L2838` | | -| 2838 | `if any(` | `->L2843` | | -| 2847 | `if moved is None:` | `->L2848` | | -| 2862 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2863` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2888 | `if (` | `->L2896` | **defensive** -- Pre-existing gap, re-keyed from #12 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). The raise for a covered continuation absent from the carrier member that is recorded as covering it. _reconcile_continuation_ownership only names a carrier whose route already spans the continuation's endpoints, so the raise arm reports an engine bug and aborts the render; no valid topology reaches it. | -| 2902 | `if reseated is None:` | `->L2903`, `->L2904` | | -| 2908 | `if abs(reseated_opening - source.x) >= (` | `->L2884`, `->L2913` | | -| 2913 | `if (` | `->L2918`, `->L2922` | **candidate-dead** -- Pre-existing gap, re-keyed from #13 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,0] split). Never executed rather than half-taken: its enclosing `if continuation.covered_by_member_id is not None:` never takes the None arm on any of the 18 fixtures that validate a planned convergence, so an uncovered outgoing continuation does not exist in this corpus. What would settle it is a topology whose continuation no endpoint owner's route spans, which _reconcile_continuation_ownership would then leave uncovered. | -| 2956 | `if base_channel is None:` | `->L2957` | | -| 2996 | `if any(` | `->L3000` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3006 | `for rank in displaced_ranks:` | `->L3062` | | -| 3009 | `if (` | `->L3044` | | -| 3047 | `if reseated is None:` | `->L3048`, `->L3049` | | -| 3051 | `if (` | `->L3056`, `->L3060` | | -| 3069 | `if moved_channels and all(` | `->L2992`, `->L3077` | | -| 3094 | `if tail is None:` | `->L3095`, `->L3096` | | -| 3117 | `if (` | `->L3124` | | -| 3125 | `if bypass_segment is None:` | `->L3126`, `->L3127` | | -| 3127 | `for obstacle in direct_landings:` | `->L3116`, `->L3128` | | -| 3129 | `if (` | `->L3139`, `->L3140` | | -| 3142 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3143`, `->L3144` | | -| 3149 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3150`, `->L3151` | | -| 3157 | `if moved is None:` | `->L3158`, `->L3159` | | -| 3179 | `if bypass_segment is None:` | `->L3127`, `->L3180` | | -| 3213 | `if not obstacles:` | `->L3215` | | -| 3229 | `for coordinate in candidates:` | `->L3203`, `->L3230` | | -| 3230 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3231`, `->L3232` | | -| 3238 | `if moved is None:` | `->L3239`, `->L3240` | | -| 3246 | `if not moved_channels or any(` | `->L3253`, `->L3254` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3258 | `if (` | `->L3262`, `->L3263` | | -| 3323 | `obstacle_segment is None` | `->L3328` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 3324 | `or landing_segment is None` | `->L3328` | | -| 3339 | `if reseated is None:` | `->L3340` | | -| 3345 | `landing.member_id == plan.primary_trunk_member_id` | `->L3368` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 3346 | `and plan.trunk_axis is not None` | `->L3368` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 3347 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3368` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 3377 | `if (` | `->L3310` | | -| 3392 | `if axis is None:` | `->L3393` | | -| 3416 | `if coordinate is not None:` | `->L3421` | | -| 3458 | `if endpoint is None:` | `->L3459` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 3481 | `if plan.trunk_axis is None:` | `->L3482` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 3507 | `if coordinate is not None:` | `->L3513` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 3567 | `for seat, obstacle in obstacles:` | `->L-3552`, `->L3568` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 3569 | `if axis is None:` | `->L3570`, `->L3571` | | -| 3581 | `if lane is None:` | `->L3582`, `->L3583` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 3602 | `if flank_rank != 1:` | `->L3604` | | -| 3613 | `if fork is None:` | `->L3614`, `->L3622` | | -| 3690 | `if forked:` | `->L3691` | | -| 3691 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3692`, `->L3693` | | -| 3695 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3696` | | -| 3719 | `if forked:` | `->L3720`, `->L3721` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 3794 | `if endpoint is None:` | `->L3795` | | -| 3805 | `if coordinate is None:` | `->L3806` | | -| 3818 | `if reseated is not None:` | `->L3819`, `->L3822` | | -| 3865 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3913` | | -| 3885 | `if flank is None:` | `->L3887` | | -| 3943 | `if not (` | `->L3946` | | -| 3962 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3963` | | -| 4020 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4005` | | -| 4072 | `if (` | `->L4078` | | -| 4257 | `if not carries_coupled_primary and any(` | `->L4263` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 4269 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4270` | | -| 4287 | `if (endpoint - candidate) * toward_endpoint <= curve_radius:` | `->L4288` | | -| 4289 | `if any(` | `->L4294` | | -| 4297 | `if any(` | `->L4300` | | -| 4307 | `if gap_edges[1] <= gap_edges[0] or not _inside_usable_gap(` | `->L4310` | | -| 4345 | `if axis is None:` | `->L4346` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 4398 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L4399` | | -| 4449 | `if axis is None or axis.axis is not DemandAxis.X or primary is None:` | `->L4450` | | -| 4487 | `if run is not None:` | `->L4538` | | -| 4500 | `if any(` | `->L4504` | | -| 4614 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4615` | | -| 4688 | `if coordinate is None and len(coupled_flanks) == 1:` | `->L4689` | | -| 4692 | `for candidate_coordinate in direct_candidates:` | `->L4693`, `->L4718` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 4703 | `if not moved_channels or any(` | `->L4708`, `->L4709` | | -| 4709 | `if any(` | `->L4713`, `->L4714` | | -| 4714 | `if not landing_feasible(candidate_coordinate):` | `->L4715`, `->L4716` | | -| 4718 | `if coordinate is None:` | `->L4719` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 4724 | `if (` | `->L4728` | | -| 4744 | `if not obstacles:` | `->L4746` | | -| 4768 | `for coordinate in candidates:` | `->L4734`, `->L4769` | | -| 4769 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L4770`, `->L4771` | | -| 4777 | `if moved_plan is None:` | `->L4778`, `->L4779` | | -| 4788 | `if moved_channel is None or any(` | `->L4791`, `->L4792` | | -| 4796 | `if (` | `->L4800`, `->L4801` | | -| 4865 | `if (` | `->L4873` | | -| 4884 | `if not obstacles:` | `->L4886` | | -| 4902 | `for coordinate in candidates:` | `->L4855`, `->L4903` | | -| 4910 | `if not inside_gap:` | `->L4911`, `->L4912` | | -| 4922 | `if moved is None:` | `->L4923`, `->L4924` | | -| 4934 | `if not moved_channels or any(` | `->L4947`, `->L4948` | | -| 4952 | `if (` | `->L4956`, `->L4957` | | -| 5048 | `if _landing_channels_crowd(first, second, curve_radius):` | `->L5049` | | -| 5052 | `if any(` | `->L5060` | | -| 5082 | `if any(pair <= component for pair in crowded_pairs) or (` | `->L5085` | | -| 5090 | `for component in components:` | `->L5091` | | -| 5096 | `for key in traversal:` | `->L5097`, `->L5134` | | -| 5099 | `for prior_key, prior_coordinate in positions.items():` | `->L5100`, `->L5116` | | -| 5101 | `if (` | `->L5106`, `->L5107` | | -| 5110 | `if clearance is None:` | `->L5111`, `->L5112` | | -| 5112 | `if from_left:` | `->L5113`, `->L5115` | | -| 5116 | `for fixed in fixed_channels:` | `->L5117`, `->L5133` | | -| 5117 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5120`, `->L5121` | | -| 5124 | `if (` | `->L5129`, `->L5130` | | -| 5136 | `for positions in (packed_positions(True), packed_positions(False)):` | `->L5090`, `->L5137` | | -| 5137 | `if any(` | `->L5142`, `->L5143` | | -| 5148 | `for key in ordered:` | `->L5149`, `->L5179` | | -| 5150 | `if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:` | `->L5151`, `->L5152` | | -| 5152 | `for plan_rank, channel in grouped[key]:` | `->L5153`, `->L5177` | | -| 5154 | `if channel.flank_rank is not None:` | `->L5155`, `->L5163` | | -| 5156 | `if flank_key in moved_flanks:` | `->L5157`, `->L5158` | | -| 5164 | `if opening_key in moved_openings:` | `->L5165`, `->L5166` | | -| 5173 | `if moved is None:` | `->L5174`, `->L5176` | | -| 5177 | `if not feasible:` | `->L5148`, `->L5178` | | -| 5179 | `if not feasible:` | `->L5180`, `->L5181` | | -| 5182 | `if (` | `->L5186`, `->L5187` | | -| 5192 | `if any(` | `->L5196`, `->L5197` | | -| 5203 | `if any(` | `->L5210`, `->L5211` | | -| 5211 | `if any(` | `->L5216`, `->L5217` | | -| 5249 | `if not obstacles:` | `->L5251` | | -| 5268 | `for coordinate in candidates:` | `->L5234`, `->L5269` | | -| 5275 | `if any(` | `->L5289`, `->L5290` | | -| 5343 | `if first.system_id != second.system_id:` | `->L5344` | | -| 5345 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5346` | **needs-review** -- _channels_share_source_carrier's shared-claimant shortcut. Its sole caller is _validate_final_convergence_feasibility, which pairs a convergence plan channel against a frozen member channel; the intersection is non-empty only when the plan's channel names the very member it is compared with, which no corpus fixture produces. Reachable in principle, wants a fixture. | -| 5586 | `if not negative or not positive:` | `->L5587` | | -| 5646 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5647` | | -| 5651 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5659` | | -| 5679 | `if gap is None:` | `->L5680` | | -| 5690 | `if requirement is None:` | `->L5691` | | -| 5694 | `if current is None or requirement.required > current.required:` | `->L5636` | | -| 5710 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5712` | | -| 5716 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5717`, `->L5718` | | -| 5726 | `if requirement is None:` | `->L5727`, `->L5728` | | -| 5731 | `if current is None or requirement.required > current.required:` | `->L5709`, `->L5732` | | -| 5748 | `if (` | `->L5760` | | -| 5763 | `if (` | `->L5768`, `->L5769` | | -| 5774 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5775`, `->L5776` | | -| 5784 | `if requirement is not None:` | `->L5747`, `->L5785` | | -| 5831 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5835` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 5838 | `if first_delta * second_delta < 0:` | `->L5839` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5849 | `if (` | `->L5861`, `->L5864` | | -| 5878 | `if opposing_approaches is not None:` | `->L5879` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 5923 | `if same_line and first_direction is not second_direction:` | `->L5928` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5929 | `if (` | `->L5956` | | -| 5976 | `if conflict is not None:` | `->L5977` | | -| 5986 | `if requirements:` | `->L5987`, `->L5989` | | -| 6024 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6025` | | -| 6031 | `if (` | `->L6042` | | -| 6042 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6045`, `->L6046` | | -| 6046 | `if any(` | `->L6051`, `->L6052` | | -| 6059 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6060` | | -| 6060 | `if any(` | `->L6065`, `->L6066` | | -| 6070 | `if channel.gap != member_channel.gap:` | `->L6071` | | -| 6072 | `if _gap_channels_crowd(` | `->L6079` | | -| 6079 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6082`, `->L6083` | | -| 6083 | `if any(` | `->L6087`, `->L6088` | | -| 6104 | `if not plan.owns_geometry:` | `->L6105` | | -| 6168 | `if not plan.owns_geometry:` | `->L6169` | | -| 6192 | `owner_edge not in edge_ranks` | `->L6196` | | -| 6231 | `if not plan.owns_geometry:` | `->L6232` | | -| 6250 | `if ownership.edge in by_edge:` | `->L6251` | | -| 6378 | `for item in system_plans:` | `->L6379`, `->L6389` | | -| 6731 | `if not horizontal and not vertical:` | `->L6732` | | -| 6755 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6740` | | -| 6788 | `if axis.axis is DemandAxis.X:` | `->L6811` | | -| 6915 | `if not candidates:` | `->L6916` | | -| 6937 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L6940` | | -| 6940 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L6943` | | -| 6946 | `if horizontal:` | `->L6947` | | -| 7015 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7016` | | -| 7023 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7024` | | -| 7042 | `if actual is None:` | `->L7043` | | -| 7049 | `direction is not landing.approach_direction` | `->L7053` | | -| 7050 | `or handedness is not landing.corner_handedness` | `->L7053` | | -| 7051 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7053` | | -| 7072 | `opening is None` | `->L7076` | | -| 7073 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7076` | | -| 7074 | `or emitted_segment != landing.opening_turn_segment` | `->L7076` | | -| 7085 | `if query is None:` | `->L7086` | | -| 7091 | `if not plan.owns_geometry:` | `->L7092` | | -| 7099 | `if continuation is not None and continuation.covered_by_member_id is not None:` | `->L7101` | | -| 7101 | `if (` | `->L7115`, `->L7119` | | -| 7119 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7120`, `->L7124` | | -| 7142 | `if opening is None:` | `->L7143` | | -| 7143 | `if not clearance_pending:` | `->L7144`, `->L7159` | | -| 7151 | `landing.opening_turn_segment is not None` | `->L7159` | | -| 7157 | `if route.curve_radii is not None:` | `->L7159` | | -| 7225 | `if landing.opening_turn_coordinate is not None:` | `->L7233` | | -| 7241 | `if not clearance_pending and any(` | `->L7245` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 7270 | `if not plan.owns_geometry:` | `->L7271` | | -| 7281 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7282` | | -| 7291 | `if route is None:` | `->L7292` | | -| 7297 | `if (` | `->L7302` | | -| 7309 | `if any(` | `->L7313` | | -| 7330 | `if continuation.covered_by_member_id is not None:` | `->L7347` | | -| 7333 | `if (` | `->L7342` | | -| 7348 | `if (` | `->L7327`, `->L7359` | | -| 7375 | `if route is None or membership is None:` | `->L7376` | | -| 7381 | `if any(` | `->L7385` | | +| 2544 | `if require_clear_segments:` | `->L2570` | | +| 2601 | `if run is None:` | `->L2602` | | +| 2616 | `if obstacles:` | `->L2617` | | +| 2644 | `if run is None:` | `->L2645` | | +| 2691 | `if axis is None:` | `->L2692` | | +| 2733 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2734` | | +| 2743 | `if primary is None:` | `->L2744` | | +| 2756 | `or landing.opening_turn_segment is None` | `->L2758` | | +| 2769 | `if reseated is not None:` | `->L2752` | | +| 2809 | `if (` | `->L2815` | | +| 2817 | `for plan_rank, landing_rank in members:` | `->L2798`, `->L2818` | | +| 2820 | `if reseated is None:` | `->L2821`, `->L2822` | | +| 2839 | `if len(channel.line_ids) != 1:` | `->L2840` | | +| 2864 | `if (` | `->L2868` | | +| 2870 | `if endpoint is None:` | `->L2871` | | +| 2876 | `channel.flank_rank is not None` | `->L2881` | | +| 2881 | `if any(` | `->L2886` | | +| 2890 | `if moved is None:` | `->L2891` | | +| 2905 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2906` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2945 | `if reseated is None:` | `->L2946` | | +| 2951 | `if abs(reseated_opening - source.x) >= (` | `->L2927` | | +| 2956 | `if (` | `->L2961` | | +| 3090 | `if reseated is None:` | `->L3091` | | +| 3112 | `if moved_channels and all(` | `->L3035` | | +| 3168 | `if bypass_segment is None:` | `->L3169` | | +| 3185 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3186` | | +| 3192 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3193` | | +| 3200 | `if moved is None:` | `->L3201` | | +| 3222 | `if bypass_segment is None:` | `->L3223` | | +| 3272 | `for coordinate in candidates:` | `->L3246` | | +| 3273 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3274` | | +| 3281 | `if moved is None:` | `->L3282` | | +| 3289 | `if not moved_channels or any(` | `->L3296` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3301 | `if (` | `->L3305` | | +| 3366 | `obstacle_segment is None` | `->L3371` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3367 | `or landing_segment is None` | `->L3371` | | +| 3382 | `if reseated is None:` | `->L3383` | | +| 3388 | `landing.member_id == plan.primary_trunk_member_id` | `->L3411` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3389 | `and plan.trunk_axis is not None` | `->L3411` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3390 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3411` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3420 | `if (` | `->L3353` | | +| 3435 | `if axis is None:` | `->L3436` | | +| 3459 | `if coordinate is not None:` | `->L3464` | | +| 3501 | `if endpoint is None:` | `->L3502` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3524 | `if plan.trunk_axis is None:` | `->L3525` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3550 | `if coordinate is not None:` | `->L3556` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3610 | `for seat, obstacle in obstacles:` | `->L-3595`, `->L3611` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3612 | `if axis is None:` | `->L3613`, `->L3614` | | +| 3624 | `if lane is None:` | `->L3625`, `->L3626` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3645 | `if flank_rank != 1:` | `->L3647` | | +| 3656 | `if fork is None:` | `->L3657`, `->L3665` | | +| 3733 | `if forked:` | `->L3734` | | +| 3734 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3735`, `->L3736` | | +| 3738 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3739` | | +| 3762 | `if forked:` | `->L3763`, `->L3764` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3837 | `if endpoint is None:` | `->L3838` | | +| 3848 | `if coordinate is None:` | `->L3849` | | +| 3861 | `if reseated is not None:` | `->L3862`, `->L3865` | | +| 3908 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3956` | | +| 3986 | `if not (` | `->L3989` | | +| 4005 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4006` | | +| 4063 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4048` | | +| 4312 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4313` | | +| 4332 | `if any(` | `->L4337` | | +| 4340 | `if any(` | `->L4343` | | +| 4388 | `if axis is None:` | `->L4389` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4530 | `if run is not None:` | `->L4581` | | +| 4657 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4658` | | +| 4757 | `if not landing_feasible(candidate_coordinate):` | `->L4758` | | +| 4767 | `if (` | `->L4771` | | +| 4839 | `if (` | `->L4843` | | +| 4908 | `if (` | `->L4916` | | +| 4965 | `if moved is None:` | `->L4966` | | +| 4995 | `if (` | `->L4999` | | +| 5095 | `if any(` | `->L5103` | | +| 5159 | `for fixed in fixed_channels:` | `->L5160` | | +| 5160 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5163`, `->L5164` | | +| 5167 | `if (` | `->L5172`, `->L5173` | | +| 5207 | `if opening_key in moved_openings:` | `->L5208` | | +| 5216 | `if moved is None:` | `->L5217` | | +| 5220 | `if not feasible:` | `->L5221` | | +| 5222 | `if not feasible:` | `->L5223` | | +| 5225 | `if (` | `->L5229` | | +| 5246 | `if any(` | `->L5253` | | +| 5254 | `if any(` | `->L5259` | | +| 5311 | `for coordinate in candidates:` | `->L5277` | | +| 5629 | `if not negative or not positive:` | `->L5630` | | +| 5689 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5690` | | +| 5694 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5702` | | +| 5722 | `if gap is None:` | `->L5723` | | +| 5733 | `if requirement is None:` | `->L5734` | | +| 5737 | `if current is None or requirement.required > current.required:` | `->L5679` | | +| 5753 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5755` | | +| 5759 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5760`, `->L5761` | | +| 5769 | `if requirement is None:` | `->L5770`, `->L5771` | | +| 5774 | `if current is None or requirement.required > current.required:` | `->L5752`, `->L5775` | | +| 5806 | `if (` | `->L5812` | | +| 5817 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5818`, `->L5819` | | +| 5827 | `if requirement is not None:` | `->L5790`, `->L5828` | | +| 5874 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5878` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 5881 | `if first_delta * second_delta < 0:` | `->L5882` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5892 | `if (` | `->L5904`, `->L5907` | | +| 5921 | `if opposing_approaches is not None:` | `->L5922` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 5966 | `if same_line and first_direction is not second_direction:` | `->L5971` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5972 | `if (` | `->L5999` | | +| 6019 | `if conflict is not None:` | `->L6020` | | +| 6029 | `if requirements:` | `->L6030`, `->L6032` | | +| 6067 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6068` | | +| 6074 | `if (` | `->L6085` | | +| 6085 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6088`, `->L6089` | | +| 6089 | `if any(` | `->L6094`, `->L6095` | | +| 6102 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6103` | | +| 6103 | `if any(` | `->L6108`, `->L6109` | | +| 6115 | `if _gap_channels_crowd(` | `->L6122` | | +| 6122 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6125`, `->L6126` | | +| 6126 | `if any(` | `->L6130`, `->L6131` | | +| 6147 | `if not plan.owns_geometry:` | `->L6148` | | +| 6211 | `if not plan.owns_geometry:` | `->L6212` | | +| 6235 | `owner_edge not in edge_ranks` | `->L6239` | | +| 6274 | `if not plan.owns_geometry:` | `->L6275` | | +| 6293 | `if ownership.edge in by_edge:` | `->L6294` | | +| 6421 | `for item in system_plans:` | `->L6422`, `->L6432` | | +| 6778 | `if not horizontal and not vertical:` | `->L6779` | | +| 6802 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6787` | | +| 6835 | `if axis.axis is DemandAxis.X:` | `->L6858` | | +| 6962 | `if not candidates:` | `->L6963` | | +| 6984 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L6987` | | +| 6987 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L6990` | | +| 6993 | `if horizontal:` | `->L6994` | | +| 7062 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7063` | | +| 7070 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7071` | | +| 7089 | `if actual is None:` | `->L7090` | | +| 7096 | `direction is not landing.approach_direction` | `->L7100` | | +| 7097 | `or handedness is not landing.corner_handedness` | `->L7100` | | +| 7098 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7100` | | +| 7119 | `opening is None` | `->L7123` | | +| 7120 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7123` | | +| 7121 | `or emitted_segment != landing.opening_turn_segment` | `->L7123` | | +| 7132 | `if query is None:` | `->L7133` | | +| 7138 | `if not plan.owns_geometry:` | `->L7139` | | +| 7148 | `if (` | `->L7162` | | +| 7166 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7171` | | +| 7189 | `if opening is None:` | `->L7190` | | +| 7190 | `if not clearance_pending:` | `->L7191`, `->L7206` | | +| 7198 | `landing.opening_turn_segment is not None` | `->L7206` | | +| 7204 | `if route.curve_radii is not None:` | `->L7206` | | +| 7272 | `if landing.opening_turn_coordinate is not None:` | `->L7280` | | +| 7288 | `if not clearance_pending and any(` | `->L7292` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7317 | `if not plan.owns_geometry:` | `->L7318` | | +| 7328 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7329` | | +| 7338 | `if route is None:` | `->L7339` | | +| 7344 | `if (` | `->L7349` | | +| 7356 | `if any(` | `->L7360` | | +| 7380 | `if (` | `->L7389` | | +| 7395 | `if (` | `->L7406` | | +| 7422 | `if route is None or membership is None:` | `->L7423` | | +| 7428 | `if any(` | `->L7432` | | ## `core.py` @@ -498,7 +415,7 @@ Gates with an un-exercised arm: ## `exit_turns.py` -194/342 gates fully exercised. +205/336 gates fully exercised. Gates with an un-exercised arm: @@ -536,7 +453,6 @@ Gates with an un-exercised arm: | 1684 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1685` | | | 1710 | `if transition is None:` | `->L1711` | | | 1744 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1745` | | -| 1770 | `if transition is None:` | `->L1772` | | | 1803 | `if len(entry_group_ids) != 1:` | `->L1804` | | | 1810 | `if family_id is None:` | `->L1811` | | | 1839 | `requirement.run_direction is not None` | `->L1852` | | @@ -550,38 +466,23 @@ Gates with an un-exercised arm: | 2078 | `if membership is not None and membership.axis is not None:` | `->L2079` | | | 2156 | `if not _lane_arms_read_as_one_stroke(` | `->L2159` | **defensive** -- The reject protects a planner seed set where an unpinned cohort lands within one curve radius of a same-rank axis already claimed by a pinned cohort. Production topology planning pins or separates those cohorts before this check. test_free_lane_arm_overlapping_a_pinned_corner_uses_legacy constructs the incomplete seed set directly and covers the fallback reason. | | 2273 | `if reason is not None:` | `->L2274` | | -| 2354 | `if set(families) != {` | `->L2359` | | -| 2368 | `if source_exit_edge is None:` | `->L2369`, `->L2370` | | -| 2372 | `if source_section is None:` | `->L2373`, `->L2375` | | -| 2376 | `for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):` | `->L2377`, `->L2390` | | -| 2377 | `for (bx0, by0), (bx1, by1) in zip(second.points, second.points[1:]):` | `->L2376`, `->L2378` | | -| 2379 | `ax0 == ax1` | `->L2380`, `->L2384` | | -| 2380 | `and by0 == by1` | `->L2381`, `->L2384` | | -| 2381 | `and _vert_horiz_cross(ax0, ay0, ay1, by0, bx0, bx1)` | `->L2383`, `->L2384` | | -| 2385 | `bx0 == bx1` | `->L2377`, `->L2386` | | -| 2386 | `and ay0 == ay1` | `->L2377`, `->L2387` | | -| 2387 | `and _vert_horiz_cross(bx0, by0, by1, ay0, ax0, ax1)` | `->L2377`, `->L2389` | | -| 2398 | `if any(route is None for route in sibling_routes):` | `->L2399`, `->L2400` | | -| 2404 | `for merge_id, trunk_source_id in ctx.merge.trunk_source.items():` | `->L2405`, `->L2457` | | -| 2413 | `entry_port is None` | `->L2414`, `->L2419` | | -| 2414 | `or entry_section is None` | `->L2415`, `->L2419` | | -| 2415 | `or entry_port.side is not PortSide.RIGHT` | `->L2416`, `->L2419` | | -| 2416 | `or entry_section.grid_col != facts[0].src_col` | `->L2417`, `->L2419` | | -| 2417 | `or entry_section.grid_row != target_row` | `->L2419`, `->L2420` | | -| 2428 | `if trunk_edge is None:` | `->L2429`, `->L2430` | | -| 2445 | `if horizontal is None:` | `->L2446`, `->L2447` | | -| 2448 | `horizontal.xb > source.x + ctx.curve_radius` | `->L2404`, `->L2449` | | -| 2449 | `and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE` | `->L2404`, `->L2450` | | -| 2450 | `and all(crosses(route, trunk) for route in resolved_siblings)` | `->L2404`, `->L2452` | | -| 2455 | `if len(barriers) == 2:` | `->L2404`, `->L2456` | | -| 2457 | `if len(barriers) != 1:` | `->L2458`, `->L2459` | | -| 2463 | `for merge_id, trunk_source_id in ctx.merge.trunk_source.items():` | `->L2464`, `->L2489` | | -| 2472 | `if trunk_edge is None:` | `->L2473`, `->L2474` | | -| 2477 | `for _rank, horizontal in iter_horizontal_trunks(candidate):` | `->L2463`, `->L2478` | | -| 2479 | `min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE` | `->L2477`, `->L2480` | | -| 2480 | `and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE` | `->L2477`, `->L2481` | | -| 2481 | `and horizontal.y > source.y + COORD_TOLERANCE` | `->L2477`, `->L2483` | | -| 2505 | `if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y:` | `->L2506`, `->L2507` | | +| 2368 | `if source_exit_edge is None:` | `->L2369` | | +| 2372 | `if source_section is None:` | `->L2373` | | +| 2376 | `for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):` | `->L2390` | | +| 2398 | `if any(route is None for route in sibling_routes):` | `->L2399` | | +| 2413 | `entry_port is None` | `->L2419` | | +| 2414 | `or entry_section is None` | `->L2419` | | +| 2415 | `or entry_port.side is not PortSide.RIGHT` | `->L2419` | | +| 2417 | `or entry_section.grid_row != target_row` | `->L2419` | | +| 2428 | `if trunk_edge is None:` | `->L2429` | | +| 2445 | `if horizontal is None:` | `->L2446` | | +| 2447 | `if (` | `->L2404` | | +| 2455 | `if len(barriers) == 2:` | `->L2456` | | +| 2457 | `if len(barriers) != 1:` | `->L2458` | | +| 2479 | `min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE` | `->L2477` | | +| 2480 | `and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE` | `->L2477` | | +| 2481 | `and horizontal.y > source.y + COORD_TOLERANCE` | `->L2477` | | +| 2505 | `if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y:` | `->L2506` | | | 2568 | `if not outbound_edges or missing_connectors:` | `->L2569` | | | 2670 | `if final_classification.legacy_reason is not None:` | `->L2671` | | | 2672 | `elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(` | `->L2675` | | @@ -632,7 +533,6 @@ Gates with an un-exercised arm: | 3969 | `if rank is None:` | `->L3970` | | | 4036 | `if current.keys() != snapshot.geometry.keys():` | `->L4037` | | | 4051 | `if current[key] != state:` | `->L4052` | | -| 4082 | `or exit_turn_plan.system_id in skip_system_ids` | `->L4084` | | | 4088 | `station_id not in graph.stations` | `->L4091` | | | 4089 | `or lane.line_id not in graph.station_lines(station_id)` | `->L4091` | | | 4097 | `if (station_id, lane.line_id) not in station_offsets or (` | `->L4104` | | @@ -648,7 +548,7 @@ Gates with an un-exercised arm: | 4216 | `if tuple(route.points[: len(opening.points)]) != opening.points:` | `->L4217`, `->L4220` | | | 4221 | `if route.exit_turn_family_id != assignment.planned_family_id.value:` | `->L4222` | | | 4229 | `if route.exit_turn_axis_id is not None:` | `->L4230` | | -| 4238 | `if (` | `->L4252` | **defensive** -- The emission validation that raises when a rendered turn's axis, lead-in runway or direction differs from the assignment the route was bound to. The emitters derive all four from that same assignment, so the raise names an emitter ignoring its plan rather than a topology. | +| 4238 | `if (` | `->L4252` | | | 4260 | `route.exit_turn_axis_id != str(assignment.axis_id)` | `->L4263` | | | 4261 | `or route.exit_turn_segment_rank is None` | `->L4263` | | | 4274 | `if (` | `->L4296` | | @@ -668,7 +568,7 @@ Gates with an un-exercised arm: ## `inter_section_handlers.py` -197/368 gates fully exercised. +209/368 gates fully exercised. Gates with an un-exercised arm: @@ -684,17 +584,12 @@ Gates with an un-exercised arm: | 715 | `or f.tgt_row is None` | `->L720` | | | 717 | `or f.src_col is None` | `->L720` | | | 718 | `or f.tgt_col is None` | `->L720` | | -| 722 | `for merge_id, entry_id in f.ctx.merge.entry_port_for.items():` | `->L723` | | -| 726 | `if entry is None or source is None:` | `->L727`, `->L728` | | -| 731 | `entry_col is None` | `->L732`, `->L739` | | -| 732 | `or entry_row is None` | `->L733`, `->L739` | | -| 733 | `or source_col is None` | `->L734`, `->L739` | | -| 734 | `or source_row != f.src_row` | `->L735`, `->L739` | | -| 735 | `or entry_row < f.tgt_row` | `->L736`, `->L739` | | -| 736 | `or not f.src_col < entry_col` | `->L737`, `->L739` | | -| 737 | `or not f.tgt_col < source_col < f.src_col` | `->L739`, `->L740` | | -| 740 | `if any(` | `->L722`, `->L746` | | -| 752 | `if _u_bypass_wraps_above_merge_trunk(f):` | `->L753` | | +| 731 | `entry_col is None` | `->L739` | | +| 732 | `or entry_row is None` | `->L739` | | +| 733 | `or source_col is None` | `->L739` | | +| 735 | `or entry_row < f.tgt_row` | `->L739` | | +| 737 | `or not f.tgt_col < source_col < f.src_col` | `->L739` | | +| 740 | `if any(` | `->L722` | | | 786 | `if src_sec is None:` | `->L787` | | | 790 | `if edges is None:` | `->L791` | | | 814 | `if section and section.bbox_w > 0:` | `->L816` | | @@ -716,8 +611,6 @@ Gates with an un-exercised arm: | 1486 | `if (` | `->L1491` | | | 1633 | `if abs(ep.y - f.sy) < ctx.curve_radius:` | `->L1634` | **defensive** -- Merge entry-port Y tracks the source/junction Y, so a sub-curve_radius exit->entry gap never arises (the same-Y rule already handles dyL1637` | | -| 1639 | `if (` | `->L1650` | | -| 1651 | `if ep_port and ep_port.side == PortSide.LEFT:` | `->L1657` | **defensive** -- Contract guard in _route_inter_section: a merge entry port always resolves to a Port on the LEFT side here, so the non-LEFT/None arm (fall through to _route_l_shape at L344) is never taken (0/128). The earlier 'multiline phantom' note was inaccurate -- this is a recorded gate whose arm is never taken. Defensive guard. Reclassified defensive (#762). | | 1654 | `if _corridor_is_viable(ctx, src, ep):` | `->L1656` | **needs-review** -- Reachable only via a defective render (route skirts/crosses section boundary); see #724. | | 1678 | `if tgt_sec is None:` | `->L1679`, `->L1680` | **defensive** -- Defensive guard in _fan_shares_inter_row_channel: the edge is a fan branch into an entry port, which always resolves to a section, so the None arm is unreachable in practice. | | 1680 | `if port.side is PortSide.TOP:` | `->L1681`, `->L1686` | | @@ -750,7 +643,6 @@ Gates with an un-exercised arm: | 2881 | `if ep_col is None or ep_row is None:` | `->L2882` | | | 2884 | `if corner_x is None:` | `->L2885` | | | 3007 | `if _would_route_around_section_below(other, ctx):` | `->L3008` | **defensive** -- Competing-sibling detection in _has_around_section_sibling, routed through the dispatch table (#813). A non-bypass sibling feeding the same merge junction sits in an adjacent column or a gap with no same-row intervening section, so it dispatches to an L-shape, not the around-below loop; corpus instrumentation across the fixtures confirms the arm is never taken. Defensive. | -| 3119 | `if shape.right_entry_wrap:` | `->L3120` | | | 3162 | `if trunk_shape.around_below:` | `->L3163` | | | 3171 | `if flank_xs:` | `->L3150` | | | 3379 | `and corridor.bypass_band_y >= base_y - COORD_TOLERANCE` | `->L3388` | **needs-review** -- Safety fallback: the shared bypass band is the deepest sibling's bypass_bottom_y, so a branch's own base_y never exceeds it; the arm that would decline a shallower shared band (guarding a predicate mismatch) is unexercised in the corpus. | @@ -773,7 +665,6 @@ Gates with an un-exercised arm: | 4042 | `if route is None:` | `->L4043` | **defensive** -- _declare_channel deliberately accepts RoutedPath \| None so declining builders can be ignored. Production callers currently pass concrete routes; the None no-op remains a defensive helper contract. | | 4089 | `if route is None:` | `->L4090` | **defensive** -- _declare_placed_channels accepts RoutedPath \| None to match _declare_trunk and _declare_channel, but all three call sites have already established the route (an assert on the left-entry corridor, a RuntimeError when a planned fan emitter omits a member, and a locally built U-bypass), so the None no-op is a helper contract nothing exercises. | | 4262 | `if ctx.exit_turns is None:` | `->L4263` | **needs-review** -- _perp_entry_turn_is_planned answers False for the pre-plan context the exit-turn planner probes emitters with; ctx.exit_turns is bound only for emission. That context does reach these emitters -- the same guard in _seat_bypass_descent takes its None arm on packed_cell_right_exit_left_entry_wrap -- but no corpus probe reaches the TOP/BOTTOM-entry L-shape records this predicate feeds. | -| 4288 | `if not any(` | `->L4293` | | | 4354 | `while cur is not None and cur not in seen:` | `->L4370` | | | 4363 | `if cur in graph.junctions:` | `->L4369` | | | 4450 | `if (` | `->L4456` | | @@ -819,16 +710,13 @@ Gates with an un-exercised arm: | 6514 | `if fan is not None and ep_col is not None:` | `->L6516` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | | 6516 | `if vx is None:` | `->L6517` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | | 6618 | `if ep_section and ep_section.bbox_w > 0:` | `->L6621` | **defensive** -- entry_port.section_id is always set and the section has bbox_w>0 after layout; the else arm never fires. | -| 6915 | `for claim in ctx.convergences.prior_channel_claims_for_edge(edge):` | `->L6916` | | -| 6916 | `if claim.line_id != edge.line_id or claim.owner_source == edge.source:` | `->L6917`, `->L6918` | | +| 6916 | `if claim.line_id != edge.line_id or claim.owner_source == edge.source:` | `->L6918` | | | 6918 | `if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):` | `->L6919`, `->L6920` | | | 6920 | `if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:` | `->L6915`, `->L6921` | | -| 6999 | `if not (` | `->L7009` | | -| 7017 | `if (` | `->L6987`, `->L7025` | | +| 7017 | `if (` | `->L6987` | | | 7037 | `if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):` | `->L7038` | | | 7170 | `if gap_bottom <= gap_top:` | `->L7171` | **defensive** -- The row-gap enforcer keeps stacked rows separated, so the inter-row band above a target row (row_bottom_edge(tgt_row-1) up to row_top_edge(tgt_row)) has positive height whenever a RIGHT entry is fed from a higher row; the degenerate-band arm guards an abutting-rows layout placement never produces. | | 7174 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7175` | **defensive** -- Band-fit test in _right_entry_gap_above_is_clear (#889), reached only when the cross-row RIGHT-entry drop-in is not clear (the exotic blocked-descent case above). The corpus always takes the drop-in, so neither arm of the gap-above fallback is exercised. Defensive. | -| 7253 | `if not normalize_exempt:` | `->L7257` | | | 7330 | `if gap_bottom <= gap_top:` | `->L7331` | | | 7332 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7333` | | | 7343 | `if f.v_segment_crosses_other_section(vx, gy, tgt.y):` | `->L7344` | | @@ -883,14 +771,13 @@ Gates with an un-exercised arm: ## `member_geometry.py` -100/165 gates fully exercised. +108/166 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 262 | `for fixed_plan, fixed_channel, interior, endpoint in fixed_claims:` | `->L263` | | -| 263 | `if (` | `->L270`, `->L271` | | +| 263 | `if (` | `->L271` | | | 278 | `if (` | `->L284`, `->L285` | | | 312 | `for (` | `->L319`, `->L332` | | | 319 | `if (` | `->L323`, `->L324` | | @@ -908,23 +795,18 @@ Gates with an un-exercised arm: | 492 | `if not candidate_ranks:` | `->L493` | | | 617 | `if not section_ids:` | `->L618` | | | 719 | `if ctx.exit_turns is None or not pending_plan_ids:` | `->L720` | | -| 874 | `if edge_key not in reseated:` | `->L876` | | -| 877 | `if membership is None or membership.assignment is None:` | `->L878`, `->L879` | | -| 884 | `if allocated is None:` | `->L885`, `->L886` | | +| 877 | `if membership is None or membership.assignment is None:` | `->L878` | | +| 884 | `if allocated is None:` | `->L885` | | | 927 | `if source is None or source is route:` | `->L929` | | -| 955 | `if opening is not None:` | `->L956` | | -| 957 | `if target.section_id is None:` | `->L958`, `->L961` | | -| 983 | `if route is None:` | `->L984`, `->L985` | | -| 993 | `if membership is not None:` | `->L994`, `->L996` | | +| 957 | `if target.section_id is None:` | `->L958` | | +| 983 | `if route is None:` | `->L984` | | +| 993 | `if membership is not None:` | `->L996` | | | 1006 | `if route is None:` | `->L1007` | | | 1042 | `if edge is None or family_id is None:` | `->L1043` | | | 1120 | `if channel is None:` | `->L1121` | | | 1123 | `if claim in channel_claims:` | `->L1124` | | -| 1137 | `if shared_opening_tail is not None:` | `->L1138` | | -| 1144 | `if claim not in channel_claims:` | `->L1145`, `->L1146` | | -| 1191 | `if not opening_size or opening_size + 1 >= len(route.points):` | `->L1193` | | -| 1195 | `if direction not in (Direction.U, Direction.D):` | `->L1196`, `->L1197` | | -| 1198 | `if target.section_id is None:` | `->L1199`, `->L1200` | | +| 1195 | `if direction not in (Direction.U, Direction.D):` | `->L1196` | | +| 1198 | `if target.section_id is None:` | `->L1199` | | | 1283 | `if route.exit_lane_transition_plan_id is not None:` | `->L1284` | | | 1285 | `if route.fan_plan_id is not None or route.fan_route_emitter is not None:` | `->L1286` | | | 1287 | `if convergence_owns_segment_boundary(route, segment_rank):` | `->L1288` | | @@ -939,7 +821,6 @@ Gates with an un-exercised arm: | 1851 | `if radii is not None:` | `->L1856` | | | 1852 | `if 0 <= rank - 1 < len(radii):` | `->L1854` | | | 1854 | `if rank < len(radii):` | `->L1856` | | -| 1879 | `if rank < len(route.exit_shared_opening_points):` | `->L1880` | | | 1893 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1876` | | | 1961 | `if movable_run:` | `->L1962` | | | 2012 | `if context is not None:` | `->L2027` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | @@ -947,17 +828,17 @@ Gates with an un-exercised arm: | 2031 | `if edge is None:` | `->L2032` | | | 2035 | `if family_id is None:` | `->L2036` | | | 2058 | `if system_id not in failures:` | `->L2062` | | -| 2342 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2343` | | -| 2348 | `if actual != (channel.start, channel.end):` | `->L2349` | | -| 2352 | `if (` | `->L2357` | | -| 2371 | `if radius_index >= len(radii):` | `->L2372` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | -| 2378 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2379` | | -| 2383 | `if radius_index + 2 >= len(route.points):` | `->L2384` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | -| 2399 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2400` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | +| 2361 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2362` | | +| 2367 | `if actual != (channel.start, channel.end):` | `->L2368` | | +| 2371 | `if (` | `->L2376` | | +| 2390 | `if radius_index >= len(radii):` | `->L2391` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | +| 2397 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2398` | | +| 2402 | `if radius_index + 2 >= len(route.points):` | `->L2403` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | +| 2418 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2419` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | ## `normalize.py` -382/539 gates fully exercised. +400/540 gates fully exercised. Gates with an un-exercised arm: @@ -991,139 +872,122 @@ Gates with an un-exercised arm: | 1055 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1057` | | | 1057 | `if rank + 2 < len(route.points):` | `->L1062` | | | 1060 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1062` | | -| 1316 | `if not reference_fits(lower):` | `->L1317` | | -| 1382 | `go is not None` | `->L1388` | | -| 1383 | `and gt is not None` | `->L1388` | | -| 1420 | `if len(pts) < 2:` | `->L1421` | | -| 1436 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1437` | | -| 1513 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1514` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | -| 1533 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1534` | | -| 1537 | `if None not in convergence_plan_ids and len(convergence_plan_ids) == 1:` | `->L1538`, `->L1539` | | -| 1539 | `if ctx.validate_final_route_frames:` | `->L1540`, `->L1549` | | -| 1595 | `if channel is None:` | `->L1596` | | -| 1668 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1669` | | -| 1674 | `if ref is not None:` | `->L1675` | | -| 1745 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1746` | | -| 1749 | `if movable_channels:` | `->L1745`, `->L1750` | | -| 1787 | `if not downs or not ups:` | `->L1789` | | -| 1790 | `for descent in downs:` | `->L-1756`, `->L1791` | | -| 1792 | `if col in moved:` | `->L1793`, `->L1794` | | -| 1795 | `for up in ups:` | `->L1796`, `->L1805` | | -| 1796 | `if up.route.line_id != descent.route.line_id:` | `->L1797`, `->L1798` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | -| 1798 | `if abs(up.x - descent.x) > radius:` | `->L1799`, `->L1800` | | -| 1801 | `if overlap <= COORD_TOLERANCE:` | `->L1802`, `->L1803` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | -| 1805 | `if target_x is None:` | `->L1806`, `->L1807` | | -| 1808 | `for ch in downs:` | `->L1790`, `->L1809` | | -| 1809 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1808`, `->L1810` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | -| 1836 | `if k == desc.idx + 1:` | `->L1835` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | -| 1888 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1889` | | -| 1900 | `if any(` | `->L1910` | | -| 1930 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1934` | | -| 1931 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1934` | | -| 1932 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1934` | | -| 1951 | `if source_col is None:` | `->L1952` | | -| 1967 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1968` | | -| 1984 | `if not sibling_xs:` | `->L1985` | | -| 1987 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L1988` | | -| 1990 | `if _section_intrudes(` | `->L1997` | | -| 2034 | `if len(turns) != 1:` | `->L2035` | **defensive** -- In _bundle_divergent_distinct_traverses: every fan in the corpus turns its traverses the same way, so the mixed-direction skip is never taken. Defensive. | -| 2055 | `if any(` | `->L2059` | | -| 2122 | `for _ in range(max(1, len(buckets))):` | `->L-2068` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2140 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2142` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | -| 2145 | `for _step in range(64):` | `->L2146`, `->L2153` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | -| 2149 | `if resolved < common:` | `->L2150`, `->L2152` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | -| 2160 | `if not changed:` | `->L2122` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2198 | `if ch.route.convergence_plan_id is not None:` | `->L2199` | | -| 2208 | `if _planner_owns_channel(ch) and (` | `->L2211` | | -| 2282 | `if opposing_bundle is not None and {` | `->L2285` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | -| 2293 | `if any(` | `->L2303` | | -| 2410 | `if any(` | `->L2416` | | -| 2453 | `if has_immovable_planned_channel and any(` | `->L2458` | | -| 2513 | `if any(` | `->L2517` | | -| 2518 | `if not crossing:` | `->L2525` | | -| 2528 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2529`, `->L2533` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | -| 2533 | `for r, k, _y in crossing:` | `->L2490`, `->L2534` | | -| 2601 | `if ctx.convergences is None:` | `->L2602` | | -| 2609 | `or entry is None` | `->L2615` | | -| 2610 | `or port is None` | `->L2615` | | -| 2611 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2615` | | -| 2613 | `or ch.y_hi - ch.y_lo > 2 * ctx.offset_step + COORD_TOLERANCE` | `->L2616` | | -| 2638 | `if boundary_dogleg_stitch(rp, ch, target):` | `->L2639` | | -| 2684 | `if rp.curve_radii is None:` | `->L2685` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | -| 2895 | `if route.curve_radii is None:` | `->L2896` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | -| 3023 | `if (` | `->L3030` | | -| 3042 | `if any(` | `->L3046` | | -| 3140 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3161` | | -| 3157 | `if crosses_source_interior(trunk_ch.x) and not crosses_source_interior(` | `->L3160` | | -| 3189 | `if not verticals:` | `->L3190` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | -| 3205 | `if rp.curve_radii is not None:` | `->L3207` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | -| 3425 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3419` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | -| 3455 | `if feats is None:` | `->L3456` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | -| 3592 | `if (` | `->L3596` | | -| 3604 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3605` | | -| 3652 | `if len(trunks) < 2:` | `->L3653`, `->L3654` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | -| 3656 | `for grp in groups:` | `->L3657`, `->L3675` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | -| 3657 | `if len({id(t.route) for t in grp}) < 2:` | `->L3658`, `->L3659` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | -| 3659 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3660`, `->L3661` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | -| 3661 | `for sign in (1, -1):` | `->L3656`, `->L3662` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | -| 3664 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3665`, `->L3666` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | -| 3673 | `if best < cur:` | `->L3661`, `->L3674` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | -| 3743 | `if (` | `->L3748` | | -| 3805 | `band is not None` | `->L3810` | | -| 3806 | `and band.boundary is None` | `->L3807` | | -| 3807 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3809`, `->L3810` | | -| 3926 | `elif down_ok and (not up_ok or prefer_down):` | `->L3928` | **defensive** -- Same-line dogleg tie / out-of-band fallback, reached only after the L1296 if is false, which a clean topology never produces (see that gate): the true arm (->1299, lean down on a tie) needs a crossing-free tie that requires degenerate risers, and the false arm (->1300) needs down_ok False, which the regime's fixed inter-row band (down_room >= min_sep) never yields. | -| 3928 | `elif up_ok:` | `->L3929`, `->L3931` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | -| 3933 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L3934` | | -| 3987 | `if not leaves_grid:` | `->L3988` | | -| 3988 | `if (cross_below is not None and cross_above is not None) or not (` | `->L3991`, `->L3993` | | -| 3991 | `if reconcile_owned_corridor:` | `->L3992`, `->L3993` | | -| 3994 | `if cross_below is not None and cross_above is not None:` | `->L3998` | | -| 3995 | `if reconcile_owned_corridor:` | `->L3997` | | -| 3999 | `if reconcile_owned_corridor:` | `->L4000` | | -| 4003 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4005` | **defensive** -- Distinct-line dogleg side selection. The crossing-decided true arm (->1342) is exercised by dogleg_exempt_distinct. The false fall-through (->1343) needs a crossing-equal tie; a crossing-free tie requires degenerate zero-length exempt risers and the only realizable tie is both-cross, which trips _guard_no_dogleg_crosses_exempt_trunk plus the section-crossing guards and is never a shippable render. | -| 4005 | `elif below_ok and (not above_ok or prefer_below):` | `->L4006`, `->L4007` | **defensive** -- Distinct-line dogleg tie fallback, reached only after L1341 is false (a tie), which a clean topology never produces (see that gate). The true arm (->1344, lean below) would fire on such a tie; the false arm (->1345) is unreachable because below_ok always holds and prefer_below is always true (t.y == hit.y in this regime). | -| 4007 | `elif above_ok:` | `->L4008`, `->L4010` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | -| 4010 | `if reconcile_owned_corridor:` | `->L4011`, `->L4012` | | -| 4033 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4035` | | -| 4081 | `if trunk_segments_cross(` | `->L4087` | | -| 4120 | `while joined := [` | `->L4129`, `->L4131` | | -| 4148 | `if band is None:` | `->L4149`, `->L4150` | | -| 4154 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4158`, `->L4159` | | -| 4159 | `for item in group:` | `->L4160`, `->L4161` | | -| 4179 | `and span[0] < crossed[1]` | `->L4180` | **defensive** -- Crossed-axis overlap test in _run_enters_section, reached only for a target already bracketed on the held axis. No corpus separation target is, so this operand's short-circuit arm never fires. | -| 4180 | `and crossed[0] < span[1]` | `->L4171`, `->L4182` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4290 | `if i in relocated:` | `->L4291` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4304 | `if not primary and fixed_obstacles:` | `->L4305` | | -| 4310 | `not secondary_may_yield_at_shared_source` | `->L4311`, `->L4314` | | -| 4311 | `or not lane_sources & fixed_sources` | `->L4312`, `->L4314` | | -| 4312 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4314`, `->L4315` | | -| 4331 | `if any(` | `->L4335` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4336 | `if any(` | `->L4342` | | -| 4368 | `if target is None:` | `->L4369` | | -| 4412 | `if sg[0].sign_x != t.sign_x:` | `->L4413` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4448 | `and base_in is not None` | `->L4462` | | -| 4449 | `and base_out is not None` | `->L4462` | | -| 4465 | `if rp.curve_radii is None:` | `->L4466` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4477 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4479` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4479 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4422` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4538 | `if down is None or len(up.points) < 2:` | `->L4539` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4592 | `if len(targets) != 1:` | `->L4593` | | -| 4602 | `if col is None:` | `->L4603` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 4643 | `if not 0 <= far < len(pts):` | `->L4644` | | -| 4646 | `if abs(dx) > COORD_TOLERANCE:` | `->L4640` | | -| 4648 | `if not votes:` | `->L4649` | | -| 4754 | `if rep_x[a] != rep_x[b]:` | `->L4756` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4784 | `if rp.curve_radii is None:` | `->L4785` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 4787 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L4788` | | -| 4811 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-4761` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4841 | `if anchor_section_id is not None and anchor_side is not None:` | `->L4843` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 4896 | `elif right_ok:` | `->L4899` | | -| 4945 | `if s.bbox_w <= 0:` | `->L4946` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 1317 | `if not reference_fits(lower):` | `->L1318` | | +| 1383 | `go is not None` | `->L1389` | | +| 1384 | `and gt is not None` | `->L1389` | | +| 1421 | `if len(pts) < 2:` | `->L1422` | | +| 1437 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1438` | | +| 1514 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1515` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | +| 1534 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1535` | | +| 1538 | `if None not in convergence_plan_ids and len(convergence_plan_ids) == 1:` | `->L1539`, `->L1540` | | +| 1540 | `if ctx.validate_final_route_frames:` | `->L1541`, `->L1550` | | +| 1596 | `if channel is None:` | `->L1597` | | +| 1669 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1670` | | +| 1675 | `if ref is not None:` | `->L1676` | | +| 1746 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1747` | | +| 1750 | `if movable_channels:` | `->L1746`, `->L1751` | | +| 1788 | `if not downs or not ups:` | `->L1790` | | +| 1791 | `for descent in downs:` | `->L-1757`, `->L1792` | | +| 1793 | `if col in moved:` | `->L1794`, `->L1795` | | +| 1796 | `for up in ups:` | `->L1797`, `->L1806` | | +| 1797 | `if up.route.line_id != descent.route.line_id:` | `->L1798`, `->L1799` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | +| 1799 | `if abs(up.x - descent.x) > radius:` | `->L1800`, `->L1801` | | +| 1802 | `if overlap <= COORD_TOLERANCE:` | `->L1803`, `->L1804` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | +| 1806 | `if target_x is None:` | `->L1807`, `->L1808` | | +| 1809 | `for ch in downs:` | `->L1791`, `->L1810` | | +| 1810 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1809`, `->L1811` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | +| 1837 | `if k == desc.idx + 1:` | `->L1836` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | +| 1889 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1890` | | +| 1901 | `if any(` | `->L1911` | | +| 1931 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1935` | | +| 1932 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1935` | | +| 1933 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1935` | | +| 1952 | `if source_col is None:` | `->L1953` | | +| 1968 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1969` | | +| 1985 | `if not sibling_xs:` | `->L1986` | | +| 1988 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L1989` | | +| 1991 | `if _section_intrudes(` | `->L1998` | | +| 2123 | `for _ in range(max(1, len(buckets))):` | `->L-2069` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2141 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2143` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | +| 2146 | `for _step in range(64):` | `->L2147`, `->L2154` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | +| 2150 | `if resolved < common:` | `->L2151`, `->L2153` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | +| 2161 | `if not changed:` | `->L2123` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2199 | `if ch.route.convergence_plan_id is not None:` | `->L2200` | | +| 2209 | `if _planner_owns_channel(ch) and (` | `->L2212` | | +| 2283 | `if opposing_bundle is not None and {` | `->L2286` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | +| 2294 | `if any(` | `->L2304` | | +| 2411 | `if any(` | `->L2417` | | +| 2454 | `if has_immovable_planned_channel and any(` | `->L2459` | | +| 2514 | `if any(` | `->L2518` | | +| 2519 | `if not crossing:` | `->L2526` | | +| 2529 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2530`, `->L2534` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | +| 2534 | `for r, k, _y in crossing:` | `->L2491`, `->L2535` | | +| 2602 | `if ctx.convergences is None:` | `->L2603` | | +| 2610 | `or entry is None` | `->L2616` | | +| 2611 | `or port is None` | `->L2616` | | +| 2612 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2616` | | +| 2685 | `if rp.curve_radii is None:` | `->L2686` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | +| 2896 | `if route.curve_radii is None:` | `->L2897` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | +| 3043 | `if any(` | `->L3047` | | +| 3141 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3162` | | +| 3190 | `if not verticals:` | `->L3191` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | +| 3206 | `if rp.curve_radii is not None:` | `->L3208` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | +| 3426 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3420` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | +| 3456 | `if feats is None:` | `->L3457` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | +| 3593 | `if (` | `->L3597` | | +| 3605 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3606` | | +| 3653 | `if len(trunks) < 2:` | `->L3654`, `->L3655` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | +| 3657 | `for grp in groups:` | `->L3658`, `->L3676` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | +| 3658 | `if len({id(t.route) for t in grp}) < 2:` | `->L3659`, `->L3660` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | +| 3660 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3661`, `->L3662` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | +| 3662 | `for sign in (1, -1):` | `->L3657`, `->L3663` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | +| 3665 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3666`, `->L3667` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | +| 3674 | `if best < cur:` | `->L3662`, `->L3675` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | +| 3744 | `if (` | `->L3749` | | +| 3806 | `band is not None` | `->L3811` | | +| 3807 | `and band.boundary is None` | `->L3808` | | +| 3808 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3810`, `->L3811` | | +| 3927 | `elif down_ok and (not up_ok or prefer_down):` | `->L3929` | **defensive** -- Same-line dogleg tie / out-of-band fallback, reached only after the L1296 if is false, which a clean topology never produces (see that gate): the true arm (->1299, lean down on a tie) needs a crossing-free tie that requires degenerate risers, and the false arm (->1300) needs down_ok False, which the regime's fixed inter-row band (down_room >= min_sep) never yields. | +| 3929 | `elif up_ok:` | `->L3930`, `->L3932` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | +| 3934 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L3935` | | +| 3989 | `if (cross_below is not None and cross_above is not None) or not (` | `->L3994` | | +| 3992 | `if reconcile_owned_corridor:` | `->L3994` | | +| 3995 | `if cross_below is not None and cross_above is not None:` | `->L3999` | | +| 3996 | `if reconcile_owned_corridor:` | `->L3998` | | +| 4006 | `elif below_ok and (not above_ok or prefer_below):` | `->L4008` | **defensive** -- Distinct-line dogleg tie fallback, reached only after L1341 is false (a tie), which a clean topology never produces (see that gate). The true arm (->1344, lean below) would fire on such a tie; the false arm (->1345) is unreachable because below_ok always holds and prefer_below is always true (t.y == hit.y in this regime). | +| 4008 | `elif above_ok:` | `->L4009`, `->L4011` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | +| 4011 | `if reconcile_owned_corridor:` | `->L4012`, `->L4013` | | +| 4043 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4062` | | +| 4066 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4068` | | +| 4181 | `if band is None:` | `->L4182` | | +| 4187 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4191` | | +| 4213 | `and crossed[0] < span[1]` | `->L4215` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4323 | `if i in relocated:` | `->L4324` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4342 | `if (` | `->L4347` | | +| 4364 | `if any(` | `->L4368` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4445 | `if sg[0].sign_x != t.sign_x:` | `->L4446` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4481 | `and base_in is not None` | `->L4495` | | +| 4482 | `and base_out is not None` | `->L4495` | | +| 4498 | `if rp.curve_radii is None:` | `->L4499` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4510 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4512` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4512 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4455` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4571 | `if down is None or len(up.points) < 2:` | `->L4572` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4625 | `if len(targets) != 1:` | `->L4626` | | +| 4635 | `if col is None:` | `->L4636` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 4676 | `if not 0 <= far < len(pts):` | `->L4677` | | +| 4679 | `if abs(dx) > COORD_TOLERANCE:` | `->L4673` | | +| 4681 | `if not votes:` | `->L4682` | | +| 4787 | `if rep_x[a] != rep_x[b]:` | `->L4789` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4817 | `if rp.curve_radii is None:` | `->L4818` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 4820 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L4821` | | +| 4844 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-4794` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4874 | `if anchor_section_id is not None and anchor_side is not None:` | `->L4876` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 4929 | `elif right_ok:` | `->L4932` | | +| 4978 | `if s.bbox_w <= 0:` | `->L4979` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | ## `offsets.py` -437/542 gates fully exercised. +453/542 gates fully exercised. Gates with an un-exercised arm: @@ -1142,7 +1006,6 @@ Gates with an un-exercised arm: | 709 | `if section is not None:` | `->L707` | | | 711 | `if len(set(feeder_row.values())) < 2:` | `->L712` | | | 731 | `if entry_port is None:` | `->L732` | | -| 774 | `if seam is None:` | `->L775` | | | 796 | `if not all(lid in feeder_off for lid in primary_lines):` | `->L797` | | | 845 | `if new_order is None:` | `->L848` | | | 957 | `if cur in seen:` | `->L958` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | @@ -1151,12 +1014,8 @@ Gates with an un-exercised arm: | 1056 | `if not target_st:` | `->L1057` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | | 1073 | `for other in lines:` | `->L1081` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | | 1081 | `if swap_lid is None:` | `->L1082` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | -| 1126 | `if (cur_sid, cur_lid) in visited:` | `->L1127` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | | 1138 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1139` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1145 | `if len(nbr_lines) < 2:` | `->L1149` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1149 | `for other_lid in nbr_lines:` | `->L1131`, `->L1150` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1150 | `if other_lid == cur_lid:` | `->L1151`, `->L1152` | **defensive** -- Inside _propagate_offset_swap's same-Y collision-swap block: across the corpus no same-Y adjacent multi-line neighbour needs an offset swap, so the loop body (incl. this self-skip guard) never executes (0/128). Defensive guard for a same-Y multi-line offset collision absent from current topologies. Reclassified defensive (#762). | -| 1152 | `if (` | `->L1149`, `->L1156` | **defensive** -- Inside _propagate_offset_swap's same-Y collision-swap block: across the corpus no same-Y adjacent multi-line neighbour needs an offset swap, so the inner collision check never executes (0/128). Defensive guard for a same-Y multi-line offset collision absent from current topologies. Reclassified defensive (#762). | +| 1149 | `for other_lid in nbr_lines:` | `->L1131` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | | 1160 | `if max_steps <= 0:` | `->L1161` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | | 1188 | `if lid not in seen:` | `->L1185` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | | 1414 | `for _ in range(len(graph.stations) + 1):` | `->L1431` | | @@ -1184,7 +1043,6 @@ Gates with an un-exercised arm: | 2365 | `if station.section_id is not None:` | `->L2357` | | | 2374 | `if port.section_id is None:` | `->L2375` | | | 2387 | `if section is None:` | `->L2388` | | -| 2425 | `if tgt_port is None or not tgt_port.is_entry:` | `->L2426` | | | 2427 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2428` | | | 2429 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2430` | | | 2434 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2435` | | @@ -1192,30 +1050,22 @@ Gates with an un-exercised arm: | 2457 | `if not any(` | `->L2460` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | | 2475 | `if len(seed_lines) < 2:` | `->L2476` | | | 2481 | `if not fixed_here or not movable:` | `->L2482` | | -| 2500 | `for lid in above:` | `->L2501` | | | 2504 | `if not any(` | `->L2507` | | -| 2582 | `for _ in range(len(seed_lines)):` | `->L2623` | | | 2596 | `if not changed_lids:` | `->L2597` | | | 2615 | `if pending is None:` | `->L2616` | | | 2744 | `if max_steps <= 0:` | `->L2745` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | | 2758 | `if sec_a is None and id_a in graph.ports:` | `->L2759` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | | 2760 | `if sec_b is None and id_b in graph.ports:` | `->L2761` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | | 2823 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2824` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2834 | `if all(` | `->L2839` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. The already-aligned arm (->1190) is exercised by the corpus; the body arm (->1192) is the reachable-but-defective one. | -| 2841 | `for edge in graph.edges_to(jid):` | `->L2842`, `->L2853` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | -| 2843 | `if src_port and not src_port.is_entry:` | `->L2844`, `->L2850` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | -| 2844 | `if feeding_exit is None:` | `->L2845`, `->L2846` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | -| 2846 | `elif feeding_exit != edge.source:` | `->L2841`, `->L2847` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2853 | `for lid, off in desired.items():` | `->L2854`, `->L2855` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | -| 2855 | `if single_exit and feeding_exit is not None:` | `->L2794`, `->L2856` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | -| 2857 | `if exit_lines == set(j_lines):` | `->L2794`, `->L2858` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | -| 2859 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2794`, `->L2860` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 2860 | `for lid, off in desired.items():` | `->L2794`, `->L2861` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. | +| 2843 | `if src_port and not src_port.is_entry:` | `->L2850` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | +| 2846 | `elif feeding_exit != edge.source:` | `->L2847` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2855 | `if single_exit and feeding_exit is not None:` | `->L2794` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | +| 2857 | `if exit_lines == set(j_lines):` | `->L2794` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | +| 2859 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2794` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | | 2983 | `if pred is None:` | `->L2984` | | | 3079 | `if target_col is None:` | `->L3080` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | | 3088 | `if source_col is None:` | `->L3089` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | | 3372 | `for _ in range(max_iterations):` | `->L-3344` | **defensive** -- _reconcile_horizontal_offsets iterates at most 10 times and breaks early when no change occurs. The arc L1338->(-1310) represents loop exhaustion without early-break (all 10 iterations consumed). On any valid parsed graph, the reconciliation converges in at most a handful of iterations because each iteration resolves at least one edge conflict or reaches a fixed point. The 10-iteration ceiling is a backstop against hypothetical oscillating graphs; normal topologies stabilize in 1-3 passes. | -| 3404 | `if src_n <= tgt_n:` | `->L3407` | **defensive** -- _reconcile_horizontal_offsets' bundle-shift fallback moves the edge endpoint with fewer lines. The else arm (src_n > tgt_n: move the target) was exercised in the corpus solely by the fan-port drag where a many-line entry/exit port is the edge source and a same-Y trunk-row station with fewer lines is the target (funcprofiler_upstream's humann3 at its entry port). The #1480 exit-port ordering fix (merge_trunk_lines in _compute_exit_port_offsets) rides the trunk-continuation merge line out on the trunk slot, so that port and station now agree and the edge no longer needs shifting. The remaining corpus shift (sr_qc into its input exit port) has the fewer-line station as the source, taking the src_n <= tgt_n true arm. The else arm stays defensive for a same-Y bundle conflict whose higher-line-count endpoint is the edge source. | | 3460 | `if ctx.topology is None:` | `->L3461` | | | 3484 | `if key not in ctx.offsets:` | `->L3485` | | | 3533 | `len(levels) != len(continuing)` | `->L3536` | | @@ -1231,8 +1081,6 @@ Gates with an un-exercised arm: | 3749 | `if any(` | `->L3755` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | | 3773 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3774` | | | 3949 | `if dag is not None:` | `->L3957` | | -| 3952 | `for succ in dag.successors.get(stack.pop(), ()):` | `->L3953` | | -| 3953 | `if succ not in affected:` | `->L3952`, `->L3954` | | | 3968 | `if not offs:` | `->L3969` | | ## `orientation.py` @@ -1259,7 +1107,7 @@ Gates with an un-exercised arm: ## `planning.py` -10/22 gates fully exercised. +12/22 gates fully exercised. Gates with an un-exercised arm: @@ -1268,9 +1116,7 @@ Gates with an un-exercised arm: | 94 | `if changed:` | `->L95` | | | 96 | `if not replacements:` | `->L98` | | | 121 | `elif abs(first[1] - second[1]) <= COORD_TOLERANCE:` | `->L124` | | -| 127 | `if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:` | `->L129` | | -| 130 | `for index, point in enumerate(points):` | `->L131`, `->L136` | | -| 131 | `if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:` | `->L132`, `->L133` | | +| 130 | `for index, point in enumerate(points):` | `->L136` | | | 211 | `if settled is None or rank is None:` | `->L214` | | | 214 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L215`, `->L218` | | | 219 | `if membership is None:` | `->L220`, `->L221` | | @@ -1320,7 +1166,7 @@ Gates with an un-exercised arm: ## `reserved_bands.py` -18/29 gates fully exercised. +19/29 gates fully exercised. Gates with an un-exercised arm: @@ -1329,7 +1175,6 @@ Gates with an un-exercised arm: | 63 | `if self.hi < self.lo - COORD_TOLERANCE:` | `->L64` | **defensive** -- The invariant the router relies on: a band handed to _center_inter_row_channel or centre_inter_column_channel always holds a channel, so the narrow-gap fallback cannot be reached for a claimed corridor. build_reserved_corridors filters an empty intersection out before constructing a band, so the raise guards direct construction only. | | 65 | `if self.allocation is not None and not math.isfinite(self.allocation):` | `->L66` | **defensive** -- Published allocations originate from finite observed route coordinates plus finite reservation translations. A non-finite value can only reach ReservedBand through malformed direct construction; the guard keeps invalid coordinates out of planner seating. | | 204 | `if boundary is None:` | `->L205` | **defensive** -- Optional-boundary convenience for callers carrying an unresolved grid index (_left_exit_wrap_over_top_y takes tgt_row: int \| None). Such a caller returns before it needs a band -- with no target row there is no gap above it to measure, so the wrap is rejected first -- leaving this arm a type-level accommodation no topology reaches. | -| 309 | `if lower > upper + COORD_TOLERANCE:` | `->L310` | | | 354 | `if seat is None:` | `->L355` | | | 412 | `if realised is None:` | `->L413` | **defensive** -- realise_reservation returns None only for a canvas-side corridor measured without canvas bounds; this loop has already narrowed to row-gap or column-gap claims, which always measure. The arm satisfies the optional return type rather than a reachable state. | | 521 | `if target is None or not target.is_port or target.section_id is None:` | `->L522` | | diff --git a/scripts/routing_gate_coverage.py b/scripts/routing_gate_coverage.py index 25c180389..e9600bb31 100644 --- a/scripts/routing_gate_coverage.py +++ b/scripts/routing_gate_coverage.py @@ -163,19 +163,22 @@ def _collect_corpus() -> list[tuple[Path, bool]]: Mirrors ``tests/conftest.py``'s ``content_corpus``: the ``examples/`` tree (``rglob`` already subsumes ``examples/topologies`` and ``examples/guide``), - the loose ``tests/fixtures/`` fixtures, and the Nextflow-DAG fixtures under - ``tests/fixtures/nextflow/`` (which need ``convert_nextflow_dag`` before - parsing). Widening past the original ``examples/``-only scope lets the test - fixtures retire gate arms the gallery never reaches. Unlike - ``content_corpus`` this keeps the ``rails`` fixtures -- their rail router is - a routing path the matrix should measure, not skip. + the loose ``tests/fixtures/`` fixtures, the stable hash-seed regression + fixtures, and the Nextflow-DAG fixtures under ``tests/fixtures/nextflow/`` + (which need ``convert_nextflow_dag`` before parsing). Widening past the + original ``examples/``-only scope lets the test fixtures retire gate arms the + gallery never reaches. Unlike ``content_corpus`` this keeps the ``rails`` + fixtures -- their rail router is a routing path the matrix should measure, + not skip. """ examples = PROJECT_ROOT / "examples" fixtures = PROJECT_ROOT / "tests" / "fixtures" + hash_seed_determinism = fixtures / "hash_seed_determinism" nextflow = fixtures / "nextflow" sources: list[tuple[list[Path], bool]] = [ (sorted(examples.rglob("*.mmd")), False), (sorted(fixtures.glob("*.mmd")), False), + (sorted(hash_seed_determinism.glob("*.mmd")), False), (sorted(nextflow.glob("*.mmd")), True), ] candidates = [(p, is_nextflow) for paths, is_nextflow in sources for p in paths] diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index d9413ac28..8b0c129ef 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2528,6 +2528,8 @@ def _crossing_minimal_lane( neighbours: tuple[_CotravellingRun, ...], clearance: float, feasible: Callable[[float], bool] | None = None, + *, + require_clear_segments: bool = False, ) -> float | None: """Nearest lane with the fewest crossings against adjacent fixed runs.""" axis = plan.trunk_axis @@ -2539,6 +2541,32 @@ def _crossing_minimal_lane( tuple(neighbour.coordinate for neighbour in neighbours), clearance, feasible ) + if require_clear_segments: + + def segment_defects( + candidate: float, + ) -> frozenset[tuple[int, int, int, str]]: + defects: set[tuple[int, int, int, str]] = set() + for moving_rank, moving in enumerate(_plan_segments(plan, candidate)): + for neighbour_rank, neighbour in enumerate(neighbours): + for fixed_rank, fixed in enumerate(neighbour.segments): + if _orthogonal_segments_cross(moving, fixed): + defects.add( + (moving_rank, neighbour_rank, fixed_rank, "crossing") + ) + if _parallel_segments_conflict(moving, fixed, OFFSET_STEP): + defects.add( + (moving_rank, neighbour_rank, fixed_rank, "parallel") + ) + return frozenset(defects) + + existing_defects = segment_defects(run.coordinate) + candidates = tuple( + candidate + for candidate in candidates + if segment_defects(candidate) <= existing_defects + ) + def crossing_count(candidate: float) -> int: return sum( _orthogonal_segments_cross(moving, fixed) @@ -2600,9 +2628,14 @@ def _separate_distinct_counter_running_trunks( plans: tuple[ConvergencePlan, ...], graph: MetroGraph, member_runs: tuple[_CotravellingRun, ...], + curve_radius: float, ) -> tuple[ConvergencePlan, ...]: """Seat distinct counter-running trunks on separate corridor channels.""" - clearance = 2.0 * COORD_TOLERANCE + clearance = cotravelling_lane_clearance( + same_line=False, + counter_running=True, + curve_radius=curve_radius, + ) settled = list(plans) seated = list(member_runs) for plan_rank in reversed(range(len(settled))): @@ -2617,18 +2650,28 @@ def _separate_distinct_counter_running_trunks( and item.line_ids != run.line_ids and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) ) + obstacles = tuple( + item + for item in seated + if item.line_ids != run.line_ids + and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) + ) if any( abs(item.coordinate - run.coordinate) < clearance - COORD_TOLERANCE for item in neighbours ): corridor = run.corridor - candidates = _clear_lane_candidates( - tuple(item.coordinate for item in neighbours), + coordinate = _crossing_minimal_lane( + plan, + run, + obstacles, clearance, lambda candidate: inter_row_gap_upper_row(graph, candidate) == corridor, + require_clear_segments=True, ) - coordinate = min(candidates, default=None) - assert coordinate is not None + if coordinate is None: + seated.append(run) + continue settled[plan_rank] = _move_trunk_axis(plan, coordinate) moved = _trunk_corridor_run(settled[plan_rank], graph) assert moved is not None @@ -6413,7 +6456,9 @@ def _settle_convergence_geometry( settled = _pack_cotravelling_corridor_runs(plans, graph, member_runs) settled = _separate_distinct_cotravelling_trunks(settled, graph, member_runs) - settled = _separate_distinct_counter_running_trunks(settled, graph, member_runs) + settled = _separate_distinct_counter_running_trunks( + settled, graph, member_runs, ctx.curve_radius + ) settled = _settle_shared_trunk_channels(settled, ctx.curve_radius) settled = _settle_shared_opening_pivots(settled, graph) settled = _settle_shared_source_openings(settled, ctx.curve_radius) @@ -6483,7 +6528,9 @@ def _settle_convergence_geometry( settled = _separate_distinct_terminal_gap_channels(settled, graph, ctx.curve_radius) settled = tuple(_reconcile_bypass_landings(plan, ctx) for plan in settled) settled = _reconcile_landing_handedness(settled, ctx) - settled = _separate_distinct_counter_running_trunks(settled, graph, member_runs) + settled = _separate_distinct_counter_running_trunks( + settled, graph, member_runs, ctx.curve_radius + ) settled = _fuse_owned_legacy_terminal_flanks(settled, ctx) return _reconcile_landing_handedness(settled, ctx) diff --git a/src/nf_metro/layout/routing/invariants.py b/src/nf_metro/layout/routing/invariants.py index 3d5cde8d4..21c2b30b1 100644 --- a/src/nf_metro/layout/routing/invariants.py +++ b/src/nf_metro/layout/routing/invariants.py @@ -3544,9 +3544,7 @@ def check_no_dogleg_crosses_exempt_trunk( for rp in routes: if not rp.is_inter_section or rp.normalize_exempt: continue - for k, seg in iter_horizontal_trunks(rp): - if planner_owns_segment(rp, k): - continue + for _k, seg in iter_horizontal_trunks(rp): for erp, eseg in exempt: if erp.line_id == rp.line_id: continue diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index a6f4c1b07..d5154600d 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -2250,10 +2250,12 @@ def build_member_geometry_execution( ctx, movable_route_ids=candidate_route_ids, ) - _dogleg_off_exempt_trunks( - normalization_population, - ctx, - movable_owned_route_ids=candidate_route_ids, + reconciled_edges.update( + _dogleg_off_exempt_trunks( + normalization_population, + ctx, + movable_owned_route_ids=candidate_route_ids, + ) ) _reconcile_port_peeloff_risers( [ @@ -2268,6 +2270,26 @@ def build_member_geometry_execution( _align_packed_cell_handoffs(tuple(candidates), ctx, pending_exit_turn_plan_ids) if reservation_ids_by_member is not None: _seat_claimed_segments_before_freeze(tuple(candidates), ctx) + final_dogleg_edges = _dogleg_off_exempt_trunks( + normalization_population, + ctx, + movable_owned_route_ids=candidate_route_ids, + reconcile_owned_corridor=True, + ) + reconciled_edges.update(final_dogleg_edges) + if final_dogleg_edges: + _separate_fused_cotravelling_runs( + normalization_population, + ctx, + movable_route_ids=frozenset( + id(route) + for route in candidate_routes + if (route.edge.source, route.edge.target, route.line_id) + in final_dogleg_edges + ), + station_offsets=ctx.station_offsets, + fixed_segment_keys=settled_tail_segments, + ) plans = tuple( _freeze_plan( scaffold, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index c4d37b4a7..6027190f7 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -4027,6 +4027,38 @@ def _unweave_exempt_trunk_riser( points = route.points clearance = _exempt_trunk_separation(trunk, obstacle, ctx.curve_radius) obstacle_segment = _htrunk_seg(obstacle, obstacle.y) + moving_segment = _htrunk_seg(trunk, trunk.y) + crossing = trunk_segments_cross(moving_segment, obstacle_segment) + if ( + crossing is not None + and trunk.sign_x == obstacle.sign_x + and route.edge.target == obstacle.route.edge.target + and abs(crossing[0] - obstacle_segment.xb) > COORD_TOLERANCE + and route.exit_turn_axis_id is None + and route.fan_plan_id is None + and not route.exit_shared_opening_points + ): + endpoint_y = min(moving_segment.before_y, moving_segment.after_y) + exempt_sections = set(_route_endpoint_section_ids(ctx.graph, route)) + for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))): + target_y = bottom + EDGE_TO_BUNDLE_CLEARANCE + candidate_trunk = _htrunk_seg(trunk, target_y) + if ( + bottom >= endpoint_y - ctx.curve_radius + or target_y < top + ctx.curve_radius + or _h_segment_crosses_other_section( + ctx.graph, + candidate_trunk.xa, + candidate_trunk.xb, + candidate_trunk.y, + exempt_sections, + ) + or trunk_segments_cross(candidate_trunk, obstacle_segment) is not None + ): + continue + _restack_htrunk(trunk, target_y, 0, 1, ctx.offset_step, ctx.curve_radius) + _reconcile_moved_trunk_slot(route, trunk.idx, target_y, ctx.graph) + return {(route.edge.source, route.edge.target, route.line_id)} for rank in (trunk.idx, trunk.idx + 1): before, corner, after = points[rank - 1 : rank + 2] if ( diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 4b1c87f94..1f8bd50fa 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -15,7 +15,6 @@ "common.py::if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:::#1", "common.py::if all_in_range:::#1", "common.py::if bundle_index < 0 or bundle_index >= n:::#1", - "common.py::if dx > 0:::#1", "common.py::if dy > 0:::#2", "common.py::if e.source == station.id:::#1", "common.py::if endpoints:::#1", @@ -77,7 +76,6 @@ "context.py::if tgt_col is None:::#1", "context.py::if tgt_col is None:::#2", "context.py::if tgt_col is None:::#3", - "convergences.py::and abs(endpoint[0] - entry.x) <= COORD_TOLERANCE::#1", "convergences.py::and abs(endpoint[1] - target[1]) > COORD_TOLERANCE::#1", "convergences.py::and abs(target[0] - entry.x) <= COORD_TOLERANCE::#1", "convergences.py::and landing.opening_turn_segment is not None::#1", @@ -88,79 +86,51 @@ "convergences.py::axis is None::#1", "convergences.py::channel.flank_rank is not None::#1", "convergences.py::direction is not landing.approach_direction::#1", - "convergences.py::elif (::#1", - "convergences.py::elif landing.approach_axis is DemandAxis.X:::#1", "convergences.py::entry is not None::#1", "convergences.py::entry_port is None::#1", - "convergences.py::for candidate_coordinate in direct_candidates:::#1", - "convergences.py::for component in components:::#1", "convergences.py::for coordinate in candidates:::#1", - "convergences.py::for coordinate in candidates:::#2", - "convergences.py::for coordinate in candidates:::#3", "convergences.py::for coordinate in candidates:::#4", "convergences.py::for edge_key in incoming_edges:::#3", "convergences.py::for fixed in fixed_channels:::#1", "convergences.py::for item in system_plans:::#1", - "convergences.py::for key in ordered:::#1", - "convergences.py::for key in traversal:::#1", - "convergences.py::for obstacle in direct_landings:::#1", - "convergences.py::for plan_rank, channel in grouped[key]:::#1", "convergences.py::for plan_rank, landing_rank in members:::#1", - "convergences.py::for positions in (packed_positions(True), packed_positions(False)):::#1", - "convergences.py::for prior_key, prior_coordinate in positions.items():::#1", - "convergences.py::for rank in displaced_ranks:::#1", "convergences.py::for rank in range(len(route.points) - 2, -1, -1):::#1", "convergences.py::for rank, (start, end) in enumerate(zip(points, points[1:])):::#1", - "convergences.py::for rank, route in enumerate(routes):::#2", "convergences.py::for seat, obstacle in obstacles:::#1", "convergences.py::if (::#1", - "convergences.py::if (::#13", "convergences.py::if (::#14", - "convergences.py::if (::#16", - "convergences.py::if (::#17", + "convergences.py::if (::#15", "convergences.py::if (::#18", - "convergences.py::if (::#19", "convergences.py::if (::#2", - "convergences.py::if (::#20", - "convergences.py::if (::#21", - "convergences.py::if (::#22", "convergences.py::if (::#23", - "convergences.py::if (::#26", - "convergences.py::if (::#27", + "convergences.py::if (::#24", "convergences.py::if (::#28", "convergences.py::if (::#29", "convergences.py::if (::#3", "convergences.py::if (::#30", - "convergences.py::if (::#32", - "convergences.py::if (::#33", + "convergences.py::if (::#31", "convergences.py::if (::#34", - "convergences.py::if (::#37", - "convergences.py::if (::#38", - "convergences.py::if (::#40", + "convergences.py::if (::#35", + "convergences.py::if (::#39", "convergences.py::if (::#41", "convergences.py::if (::#42", - "convergences.py::if (::#44", - "convergences.py::if (::#46", + "convergences.py::if (::#43", + "convergences.py::if (::#45", "convergences.py::if (::#47", "convergences.py::if (::#48", - "convergences.py::if (::#5", + "convergences.py::if (::#49", "convergences.py::if (::#6", - "convergences.py::if (::#7", "convergences.py::if (::#8", - "convergences.py::if (endpoint - candidate) * toward_endpoint <= curve_radius:::#1", + "convergences.py::if (::#9", "convergences.py::if _channel_inside_gap(graph, channel) and _channel_inside_gap(::#1", "convergences.py::if _channel_inside_gap(graph, channel) and _channel_inside_gap(::#2", "convergences.py::if _direction(*landing_segment) not in (Direction.U, Direction.D):::#1", "convergences.py::if _gap_channels_crowd(::#1", - "convergences.py::if _landing_channels_crowd(first, second, curve_radius):::#1", "convergences.py::if _points_coincide(*segment):::#1", "convergences.py::if _stacked_elbow_channels_crowd(channel, member_channel):::#1", - "convergences.py::if _vert_horiz_cross(::#1", "convergences.py::if abs(approach_delta) > COORD_TOLERANCE:::#1", - "convergences.py::if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(endpoint - flank_coordinate) <= clearance:::#1", "convergences.py::if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:::#1", - "convergences.py::if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:::#1", "convergences.py::if abs(reseated_opening - source.x) >= (::#1", "convergences.py::if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:::#1", @@ -169,33 +139,22 @@ "convergences.py::if abs(start[1] - end[1]) > COORD_TOLERANCE:::#1", "convergences.py::if actual is None:::#1", "convergences.py::if actual is None:::#2", - "convergences.py::if any(::#10", - "convergences.py::if any(::#12", "convergences.py::if any(::#14", - "convergences.py::if any(::#15", - "convergences.py::if any(::#16", "convergences.py::if any(::#17", "convergences.py::if any(::#18", - "convergences.py::if any(::#19", "convergences.py::if any(::#2", "convergences.py::if any(::#20", "convergences.py::if any(::#21", "convergences.py::if any(::#22", "convergences.py::if any(::#23", "convergences.py::if any(::#24", - "convergences.py::if any(::#3", - "convergences.py::if any(::#4", "convergences.py::if any(::#5", - "convergences.py::if any(::#6", "convergences.py::if any(::#7", "convergences.py::if any(::#8", "convergences.py::if any(edge not in edge_order for edge in edges):::#1", - "convergences.py::if any(pair <= component for pair in crowded_pairs) or (::#1", "convergences.py::if approach is None:::#1", "convergences.py::if axis is DemandAxis.X:::#1", "convergences.py::if axis is DemandAxis.X:::#2", - "convergences.py::if axis is None or axis.axis is not DemandAxis.X or primary is None:::#1", - "convergences.py::if axis is None or axis.axis is not DemandAxis.X or primary is None:::#2", "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#1", "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#2", "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#3", @@ -207,21 +166,13 @@ "convergences.py::if axis is not None and axis.axis is DemandAxis.X:::#1", "convergences.py::if axis.axis is DemandAxis.X:::#1", "convergences.py::if axis.axis is not DemandAxis.X:::#1", - "convergences.py::if base_channel is None:::#1", "convergences.py::if bypass_segment is None:::#1", "convergences.py::if bypass_segment is None:::#2", "convergences.py::if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:::#1", "convergences.py::if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:::#2", - "convergences.py::if channel.flank_rank is not None:::#1", - "convergences.py::if channel.gap != member_channel.gap:::#1", - "convergences.py::if clearance is None:::#1", "convergences.py::if conflict is not None:::#1", - "convergences.py::if continuation is not None and continuation.covered_by_member_id is not None:::#1", "convergences.py::if continuation.covered_by_member_id is not None:::#1", - "convergences.py::if continuation.covered_by_member_id is not None:::#2", - "convergences.py::if coordinate is None and len(coupled_flanks) == 1:::#1", - "convergences.py::if coordinate is None:::#1", - "convergences.py::if coordinate is None:::#3", + "convergences.py::if coordinate is None:::#2", "convergences.py::if coordinate is not None:::#2", "convergences.py::if coordinate is not None:::#3", "convergences.py::if current is None or requirement.required > current.required:::#1", @@ -240,26 +191,18 @@ "convergences.py::if exit_turn_geometry != _exit_turn_geometry(route):::#1", "convergences.py::if extent_end - extent_start > COORD_TOLERANCE:::#1", "convergences.py::if family is None:::#1", - "convergences.py::if first.claimant_member_ids & second.claimant_member_ids:::#1", - "convergences.py::if first.system_id != second.system_id:::#1", "convergences.py::if first_delta * second_delta < 0:::#1", "convergences.py::if first_plan.trunk_axis.axis is DemandAxis.X:::#1", "convergences.py::if fixed.gap != gap and not _stacked_elbow_channels_crowd(::#1", - "convergences.py::if flank is None:::#1", - "convergences.py::if flank_key in moved_flanks:::#1", "convergences.py::if flank_rank != 1:::#1", "convergences.py::if fork is None:::#1", "convergences.py::if forked:::#1", "convergences.py::if forked:::#2", - "convergences.py::if from_left:::#1", "convergences.py::if gap is None:::#2", - "convergences.py::if gap_edges[1] <= gap_edges[0] or not _inside_usable_gap(::#1", "convergences.py::if group.line_id not in line_order:::#1", "convergences.py::if horizontal and abs(endpoint[1] - target[1]) <= COORD_TOLERANCE:::#1", "convergences.py::if horizontal:::#2", - "convergences.py::if inside or extends:::#1", "convergences.py::if interval[1] - interval[0] > COORD_TOLERANCE:::#1", - "convergences.py::if landing.approach_axis is DemandAxis.X:::#3", "convergences.py::if landing.opening_turn_coordinate is not None:::#3", "convergences.py::if landing.opening_turn_segment is None or not landing.bypass:::#1", "convergences.py::if landing.opening_turn_segment is None:::#1", @@ -271,42 +214,29 @@ "convergences.py::if moved is None:::#3", "convergences.py::if moved is None:::#4", "convergences.py::if moved is None:::#5", - "convergences.py::if moved_channel is None or any(::#1", "convergences.py::if moved_channels and all(::#1", - "convergences.py::if moved_plan is None:::#1", - "convergences.py::if not (::#1", "convergences.py::if not (::#3", "convergences.py::if not 0 <= flank_rank < len(route.points) - 1:::#1", "convergences.py::if not _bypass_opening_candidate_feasible(landing, candidate, ctx):::#1", "convergences.py::if not _inside_usable_gap(gap_edges, coordinate):::#1", - "convergences.py::if not _inside_usable_gap(gap_edges, coordinate):::#2", "convergences.py::if not _stacked_elbow_channels_crowd(channel, fixed):::#1", "convergences.py::if not candidates:::#1", "convergences.py::if not candidates:::#2", - "convergences.py::if not carries_coupled_primary and any(::#1", "convergences.py::if not clearance_pending and any(::#1", "convergences.py::if not clearance_pending:::#1", "convergences.py::if not feasible:::#1", "convergences.py::if not feasible:::#2", "convergences.py::if not horizontal and not vertical:::#1", "convergences.py::if not incoming_edges or not outgoing_edges:::#1", - "convergences.py::if not inside_gap:::#1", "convergences.py::if not landing_feasible(candidate_coordinate):::#1", "convergences.py::if not moved_channels or any(::#1", - "convergences.py::if not moved_channels or any(::#2", - "convergences.py::if not moved_channels or any(::#3", "convergences.py::if not negative or not positive:::#1", - "convergences.py::if not obstacles:::#1", - "convergences.py::if not obstacles:::#3", - "convergences.py::if not obstacles:::#4", - "convergences.py::if not obstacles:::#5", "convergences.py::if not plan.owns_geometry:::#1", "convergences.py::if not plan.owns_geometry:::#2", "convergences.py::if not plan.owns_geometry:::#3", "convergences.py::if not plan.owns_geometry:::#4", "convergences.py::if not plan.owns_geometry:::#5", "convergences.py::if not runs:::#1", - "convergences.py::if not segments:::#1", "convergences.py::if not uses_exit_handedness and (::#1", "convergences.py::if obstacles:::#1", "convergences.py::if opening is None:::#1", @@ -328,19 +258,14 @@ "convergences.py::if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):::#2", "convergences.py::if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):::#3", "convergences.py::if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):::#4", - "convergences.py::if preserve_lane_offsets:::#1", - "convergences.py::if preserve_lane_offsets:::#2", "convergences.py::if primary is None:::#1", "convergences.py::if primary_edge is not None and plan.primary_trunk_member_id is not None:::#1", - "convergences.py::if primary_reason is ConvergenceTrunkReason.OUTGOING_CONTINUATION:::#1", - "convergences.py::if primary_reason is ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH:::#1", "convergences.py::if query is None:::#1", - "convergences.py::if rank == carrier_rank:::#1", + "convergences.py::if require_clear_segments:::#1", "convergences.py::if requirement is None:::#1", "convergences.py::if requirement is None:::#2", "convergences.py::if requirement is not None:::#1", "convergences.py::if requirements:::#1", - "convergences.py::if reseated is None:::#1", "convergences.py::if reseated is None:::#2", "convergences.py::if reseated is None:::#3", "convergences.py::if reseated is None:::#4", @@ -356,18 +281,14 @@ "convergences.py::if route.curve_radii is not None:::#1", "convergences.py::if route.curve_radii is not None:::#2", "convergences.py::if route.exit_lane_transition_plan_id is not None:::#1", - "convergences.py::if route.offset_regime is OffsetRegime.DEFERRED:::#1", "convergences.py::if run is None:::#1", "convergences.py::if run is None:::#2", "convergences.py::if run is None:::#3", "convergences.py::if run is not None:::#1", - "convergences.py::if runway < curve_radius - COORD_TOLERANCE:::#1", "convergences.py::if runway < curve_radius - COORD_TOLERANCE:::#2", "convergences.py::if same_line and first_direction is not second_direction:::#1", "convergences.py::if section is None:::#1", "convergences.py::if shared_carrier and separation > COORD_TOLERANCE:::#1", - "convergences.py::if source is None:::#1", - "convergences.py::if tail is None:::#2", "convergences.py::if tail is not None and _points_coincide(tail[0], landing.join_point):::#1", "convergences.py::if topology is None:::#1", "convergences.py::if trunk_edge_key is None:::#1", @@ -377,14 +298,11 @@ "convergences.py::landing.approach_axis is DemandAxis.X::#1", "convergences.py::landing.member_id == plan.primary_trunk_member_id::#1", "convergences.py::landing.opening_turn_segment is not None::#1", - "convergences.py::not landing.bypass::#1", "convergences.py::obstacle_segment is None::#1", "convergences.py::opening is None::#1", "convergences.py::or abs(after[0] - end[0]) > COORD_TOLERANCE::#1", - "convergences.py::or abs(along[0][1] - along[1][1]) > COORD_TOLERANCE::#1", "convergences.py::or abs(before[0] - start[0]) > COORD_TOLERANCE::#1", "convergences.py::or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE::#1", - "convergences.py::or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", "convergences.py::or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", "convergences.py::or axis.axis is not DemandAxis.X::#1", "convergences.py::or emitted_segment != landing.opening_turn_segment::#1", @@ -392,7 +310,6 @@ "convergences.py::or handedness is not landing.corner_handedness::#1", "convergences.py::or landing.opening_turn_segment is None::#1", "convergences.py::or landing_segment is None::#1", - "convergences.py::or opening is None::#1", "convergences.py::or runway < landing.minimum_runway - COORD_TOLERANCE::#1", "convergences.py::outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE::#1", "convergences.py::owner_edge not in edge_ranks::#1", @@ -408,15 +325,9 @@ "core.py::if validate_final_route_frames:::#1", "corners.py::if corner_idx < 0 or corner_idx >= n_corners:::#1", "corners.py::if vertical is Direction.D:::#2", - "exit_turns.py::and _vert_horiz_cross(ax0, ay0, ay1, by0, bx0, bx1)::#1", - "exit_turns.py::and _vert_horiz_cross(bx0, by0, by1, ay0, ax0, ax1)::#1", "exit_turns.py::and abs(proposed - axis.fixed_anchor_offset) > COORD_TOLERANCE::#1", - "exit_turns.py::and all(crosses(route, trunk) for route in resolved_siblings)::#1", "exit_turns.py::and axis.fixed_anchor_offset is not None::#1", - "exit_turns.py::and ay0 == ay1::#1", - "exit_turns.py::and by0 == by1::#1", "exit_turns.py::and family_id is not RouteFamilyId.MERGE_ENTRY::#1", - "exit_turns.py::and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE::#1", "exit_turns.py::and horizontal.y > source.y + COORD_TOLERANCE::#1", "exit_turns.py::and plan.id in conflicting_plan_ids::#1", "exit_turns.py::and requirement.launch_coordinate is not None::#1", @@ -426,22 +337,16 @@ "exit_turns.py::and segment_direction(start, end) is turn_direction::#1", "exit_turns.py::and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE::#1", "exit_turns.py::assignment is None::#1", - "exit_turns.py::ax0 == ax1::#1", - "exit_turns.py::bx0 == bx1::#1", "exit_turns.py::elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(::#1", "exit_turns.py::entry_port is None::#1", "exit_turns.py::for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):::#1", - "exit_turns.py::for (bx0, by0), (bx1, by1) in zip(second.points, second.points[1:]):::#1", - "exit_turns.py::for _rank, horizontal in iter_horizontal_trunks(candidate):::#1", - "exit_turns.py::for merge_id, trunk_source_id in ctx.merge.trunk_source.items():::#1", - "exit_turns.py::for merge_id, trunk_source_id in ctx.merge.trunk_source.items():::#2", "exit_turns.py::for owner in (first_owner, second_owner):::#1", "exit_turns.py::for owner in owners:::#1", "exit_turns.py::for plan_id in overridden_dispositions:::#1", - "exit_turns.py::horizontal.xb > source.x + ctx.curve_radius::#1", - "exit_turns.py::if (::#10", - "exit_turns.py::if (::#11", - "exit_turns.py::if (::#9", + "exit_turns.py::if (::#12", + "exit_turns.py::if (::#13", + "exit_turns.py::if (::#14", + "exit_turns.py::if (::#5", "exit_turns.py::if (station_id, lane.line_id) not in station_offsets or (::#1", "exit_turns.py::if abs(delta) <= COORD_TOLERANCE:::#1", "exit_turns.py::if abs(first_offset - second_offset) > COORD_TOLERANCE:::#1", @@ -512,7 +417,6 @@ "exit_turns.py::if scaffold is None:::#1", "exit_turns.py::if scaffold is None:::#2", "exit_turns.py::if segment_rank is None:::#1", - "exit_turns.py::if set(families) != {::#1", "exit_turns.py::if source_exit_edge is None:::#1", "exit_turns.py::if source_run_direction not in run_axis:::#1", "exit_turns.py::if source_run_direction not in {Direction.R, Direction.L}:::#1", @@ -520,10 +424,8 @@ "exit_turns.py::if source_turn_changed and settled is None:::#1", "exit_turns.py::if transition is None:::#1", "exit_turns.py::if transition is None:::#2", - "exit_turns.py::if transition is None:::#3", "exit_turns.py::if transition_key in transition_by_edge:::#1", "exit_turns.py::if trunk_edge is None:::#1", - "exit_turns.py::if trunk_edge is None:::#2", "exit_turns.py::if tuple(route.points[: len(opening.points)]) != opening.points:::#1", "exit_turns.py::incoming is None::#1", "exit_turns.py::min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE::#1", @@ -536,9 +438,7 @@ "exit_turns.py::or direction_axis(incoming) is direction_axis(outgoing)::#1", "exit_turns.py::or entry_port.side is not PortSide.RIGHT::#1", "exit_turns.py::or entry_section is None::#1", - "exit_turns.py::or entry_section.grid_col != facts[0].src_col::#1", "exit_turns.py::or entry_section.grid_row != target_row::#1", - "exit_turns.py::or exit_turn_plan.system_id in skip_system_ids::#1", "exit_turns.py::or lane.line_id not in graph.station_lines(station_id)::#1", "exit_turns.py::or membership.axis is None::#1", "exit_turns.py::or outgoing is None::#1", @@ -575,22 +475,18 @@ "inter_section_handlers.py::elif gap_bottom > gap_top:::#1", "inter_section_handlers.py::entry_col is None::#1", "inter_section_handlers.py::f.bypass_route is not _BypassRoute.U_BYPASS::#1", - "inter_section_handlers.py::for claim in ctx.convergences.prior_channel_claims_for_edge(edge):::#1", "inter_section_handlers.py::for je in ctx.graph.edges_to(src.id):::#1", - "inter_section_handlers.py::for merge_id, entry_id in f.ctx.merge.entry_port_for.items():::#1", "inter_section_handlers.py::if (::#12", "inter_section_handlers.py::if (::#14", "inter_section_handlers.py::if (::#4", "inter_section_handlers.py::if (::#5", "inter_section_handlers.py::if (::#6", - "inter_section_handlers.py::if (::#8", "inter_section_handlers.py::if _INTER_SECTION_RULES is _INDEXED_INTER_SECTION_RULES:::#1", "inter_section_handlers.py::if _corridor_is_viable(ctx, src, ep):::#1", "inter_section_handlers.py::if _corridor_is_viable(ctx, src, tgt):::#1", "inter_section_handlers.py::if _h_segment_crosses_other_section(graph, src.x, final_x, src.y, exclude):::#1", "inter_section_handlers.py::if _h_segment_crosses_other_section(graph, sx, gap1_x, emitted_source_y, exclude):::#1", "inter_section_handlers.py::if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):::#1", - "inter_section_handlers.py::if _u_bypass_wraps_above_merge_trunk(f):::#1", "inter_section_handlers.py::if _v_segment_crosses_other_section(graph, corner_x, src.y, ey, exclude):::#1", "inter_section_handlers.py::if _v_segment_crosses_other_section(graph, dx, src.y, tgt.y, exclude):::#1", "inter_section_handlers.py::if _would_route_around_section_below(other, ctx):::#1", @@ -616,12 +512,10 @@ "inter_section_handlers.py::if ctx.station_offsets:::#1", "inter_section_handlers.py::if cur in graph.junctions:::#1", "inter_section_handlers.py::if edges is None:::#1", - "inter_section_handlers.py::if entry is None or source is None:::#1", "inter_section_handlers.py::if entry_port is None:::#1", "inter_section_handlers.py::if entry_port is None:::#2", "inter_section_handlers.py::if entry_side is PortSide.LEFT:::#1", "inter_section_handlers.py::if ep_col is None or ep_row is None:::#1", - "inter_section_handlers.py::if ep_port and ep_port.side == PortSide.LEFT:::#1", "inter_section_handlers.py::if ep_port and ep_port.side in (PortSide.TOP, PortSide.BOTTOM):::#1", "inter_section_handlers.py::if ep_section and ep_section.bbox_w > 0:::#1", "inter_section_handlers.py::if exit_side is not None and not straight_drop:::#1", @@ -652,15 +546,12 @@ "inter_section_handlers.py::if mid_y is None:::#1", "inter_section_handlers.py::if min(drop_xs) < _section_right_edge(graph, tgt) - COORD_TOLERANCE:::#1", "inter_section_handlers.py::if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:::#1", - "inter_section_handlers.py::if not (::#5", "inter_section_handlers.py::if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):::#1", "inter_section_handlers.py::if not _h_segment_crosses_other_section(::#1", "inter_section_handlers.py::if not _inter_row_band_fits(gap_top, gap_bottom):::#1", "inter_section_handlers.py::if not _inter_row_band_fits(gap_top, gap_bottom):::#2", - "inter_section_handlers.py::if not any(::#1", "inter_section_handlers.py::if not candidates:::#1", "inter_section_handlers.py::if not is_inter:::#1", - "inter_section_handlers.py::if not normalize_exempt:::#1", "inter_section_handlers.py::if not section_ids:::#1", "inter_section_handlers.py::if not source_lines or edge.line_id not in source_lines:::#1", "inter_section_handlers.py::if not straight_drop:::#1", @@ -685,7 +576,6 @@ "inter_section_handlers.py::if section not in landing_sections:::#1", "inter_section_handlers.py::if self.launch_coordinate is None or self.axis_coordinate is None:::#1", "inter_section_handlers.py::if shape.around_below:::#1", - "inter_section_handlers.py::if shape.right_entry_wrap:::#1", "inter_section_handlers.py::if shared_vx is not None:::#1", "inter_section_handlers.py::if sibling_port is None or not sibling_port.is_entry:::#1", "inter_section_handlers.py::if sibling_route is None or len(sibling_route.points) < 6:::#1", @@ -720,11 +610,9 @@ "inter_section_handlers.py::or f.src_row is None::#1", "inter_section_handlers.py::or f.tgt_col is None::#1", "inter_section_handlers.py::or f.tgt_row is None::#1", - "inter_section_handlers.py::or not f.src_col < entry_col::#1", "inter_section_handlers.py::or not f.tgt_col < source_col < f.src_col::#1", "inter_section_handlers.py::or plan.fork_station_id != edge.source::#1", "inter_section_handlers.py::or source_col is None::#1", - "inter_section_handlers.py::or source_row != f.src_row::#1", "inter_section_handlers.py::or target_port is None::#1", "inter_section_handlers.py::or target_port.side is not PortSide.RIGHT::#1", "inter_section_handlers.py::plan.disposition is not FanPlanDisposition.PLANNED::#1", @@ -760,7 +648,6 @@ "member_geometry.py::before is None::#1", "member_geometry.py::elif abs(start[0] - end[0]) <= COORD_TOLERANCE:::#1", "member_geometry.py::for (::#1", - "member_geometry.py::for fixed_plan, fixed_channel, interior, endpoint in fixed_claims:::#1", "member_geometry.py::if (::#2", "member_geometry.py::if (::#3", "member_geometry.py::if (::#4", @@ -776,7 +663,6 @@ "member_geometry.py::if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:::#1", "member_geometry.py::if channel is None:::#1", "member_geometry.py::if claim in channel_claims:::#1", - "member_geometry.py::if claim not in channel_claims:::#1", "member_geometry.py::if context is not None:::#1", "member_geometry.py::if convergence_owns_segment_boundary(route, segment_rank):::#1", "member_geometry.py::if coordinate is not None:::#1", @@ -784,7 +670,6 @@ "member_geometry.py::if direction not in (Direction.U, Direction.D):::#1", "member_geometry.py::if edge is None or family_id is None:::#1", "member_geometry.py::if edge is None:::#1", - "member_geometry.py::if edge_key not in reseated:::#1", "member_geometry.py::if family_id is None:::#1", "member_geometry.py::if key in ctx.skip_edges:::#1", "member_geometry.py::if membership is None or membership.assignment is None:::#1", @@ -797,23 +682,19 @@ "member_geometry.py::if not ctx.validate_final_route_frames:::#1", "member_geometry.py::if not ctx.validate_final_route_frames:::#2", "member_geometry.py::if not moved_ranks:::#1", - "member_geometry.py::if not opening_size or opening_size + 1 >= len(route.points):::#1", "member_geometry.py::if not section_ids:::#1", "member_geometry.py::if offsets is None or bases is None or offset is None or base is None:::#1", - "member_geometry.py::if opening is not None:::#1", "member_geometry.py::if overlap <= MIN_CORRIDOR_Y_OVERLAP:::#1", "member_geometry.py::if radii is not None:::#1", "member_geometry.py::if radius_index + 2 >= len(route.points):::#1", "member_geometry.py::if radius_index >= len(radii):::#1", "member_geometry.py::if rank < len(radii):::#1", - "member_geometry.py::if rank < len(route.exit_shared_opening_points):::#1", "member_geometry.py::if route is None:::#1", "member_geometry.py::if route is None:::#2", "member_geometry.py::if route.exit_lane_transition_plan_id is not None:::#1", "member_geometry.py::if route.fan_plan_id is not None or route.fan_route_emitter is not None:::#1", "member_geometry.py::if run_direction is None or turn_direction is None:::#2", "member_geometry.py::if settled_x is None:::#1", - "member_geometry.py::if shared_opening_tail is not None:::#1", "member_geometry.py::if source is None or source is route:::#1", "member_geometry.py::if system_id not in failures:::#1", "member_geometry.py::if target.section_id is None:::#1", @@ -829,7 +710,6 @@ "normalize.py::and base_out is not None::#1", "normalize.py::and crossed[0] < span[1]::#1", "normalize.py::and gt is not None::#1", - "normalize.py::and span[0] < crossed[1]::#1", "normalize.py::assignment is None::#1", "normalize.py::band is not None::#1", "normalize.py::dx is None::#1", @@ -841,11 +721,11 @@ "normalize.py::elif up_ok:::#1", "normalize.py::for _ in range(max(1, len(buckets))):::#1", "normalize.py::for _step in range(64):::#1", + "normalize.py::for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):::#1", "normalize.py::for ch in downs:::#1", "normalize.py::for descent in downs:::#1", "normalize.py::for group in _merge_feeder_groups(routes, ctx):::#1", "normalize.py::for grp in groups:::#3", - "normalize.py::for item in group:::#1", "normalize.py::for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):::#1", "normalize.py::for r, k, _y in crossing:::#1", "normalize.py::for sign in (1, -1):::#1", @@ -853,7 +733,7 @@ "normalize.py::go is not None::#1", "normalize.py::if (::#1", "normalize.py::if (::#10", - "normalize.py::if (::#8", + "normalize.py::if (::#14", "normalize.py::if (::#9", "normalize.py::if (cross_below is not None and cross_above is not None) or not (::#1", "normalize.py::if 0 <= k - 1 < len(rp.curve_radii):::#1", @@ -880,22 +760,17 @@ "normalize.py::if any(::#11", "normalize.py::if any(::#12", "normalize.py::if any(::#13", - "normalize.py::if any(::#14", "normalize.py::if any(::#6", - "normalize.py::if any(::#7", "normalize.py::if any(::#9", "normalize.py::if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):::#1", "normalize.py::if band is None:::#3", - "normalize.py::if below_ok and above_ok and (cross_below is None) != (cross_above is None):::#1", "normalize.py::if best < cur:::#1", - "normalize.py::if boundary_dogleg_stitch(rp, ch, target):::#1", "normalize.py::if ch.route.convergence_plan_id is not None:::#1", "normalize.py::if channel is None:::#1", "normalize.py::if channel.idx == 0:::#1", "normalize.py::if col in moved:::#1", "normalize.py::if col is None:::#1", "normalize.py::if cross_below is not None and cross_above is not None:::#1", - "normalize.py::if crosses_source_interior(trunk_ch.x) and not crosses_source_interior(::#1", "normalize.py::if ctx.convergences is None:::#1", "normalize.py::if ctx.exit_turns is None:::#1", "normalize.py::if ctx.exit_turns is None:::#2", @@ -912,7 +787,6 @@ "normalize.py::if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:::#1", "normalize.py::if len(targets) != 1:::#1", "normalize.py::if len(trunks) < 2:::#1", - "normalize.py::if len(turns) != 1:::#1", "normalize.py::if len({id(t.route) for t in grp}) < 2:::#2", "normalize.py::if lower > upper + COORD_TOLERANCE_FINE:::#1", "normalize.py::if mid + half > gap_right + COORD_TOLERANCE:::#1", @@ -927,8 +801,6 @@ "normalize.py::if not chans:::#1", "normalize.py::if not crossing:::#1", "normalize.py::if not downs or not ups:::#1", - "normalize.py::if not leaves_grid:::#1", - "normalize.py::if not primary and fixed_obstacles:::#1", "normalize.py::if not reference_fits(lower):::#1", "normalize.py::if not sibling_xs:::#1", "normalize.py::if not verticals:::#1", @@ -941,7 +813,6 @@ "normalize.py::if rank > 0:::#1", "normalize.py::if reconcile_owned_corridor:::#1", "normalize.py::if reconcile_owned_corridor:::#2", - "normalize.py::if reconcile_owned_corridor:::#3", "normalize.py::if reconcile_owned_corridor:::#4", "normalize.py::if ref is not None:::#1", "normalize.py::if rep_x[a] != rep_x[b]:::#1", @@ -959,48 +830,32 @@ "normalize.py::if slot is None or trunk is None or trunk[0] != k:::#1", "normalize.py::if source_col is None:::#1", "normalize.py::if source_section is not None and source_section.bbox_w > 0:::#1", - "normalize.py::if target is None:::#1", "normalize.py::if target_x is None:::#1", - "normalize.py::if trunk_segments_cross(::#1", "normalize.py::if up.route.line_id != descent.route.line_id:::#1", - "normalize.py::not secondary_may_yield_at_shared_source::#1", "normalize.py::or abs(corner[1] - after[1]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p1[0] - p2[0]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p2[1] - p3[1]) > COORD_TOLERANCE::#1", - "normalize.py::or any(run.route.exit_turn_plan_id is not None for run in lane.runs)::#1", "normalize.py::or assignment.turn_direction is None::#1", "normalize.py::or base_radius is None::#1", - "normalize.py::or ch.y_hi - ch.y_lo > 2 * ctx.offset_step + COORD_TOLERANCE::#1", "normalize.py::or entry is None::#1", "normalize.py::or len(route.points) < 3::#1", "normalize.py::or not 0 <= radius_index < len(route.curve_radii)::#1", - "normalize.py::or not lane_sources & fixed_sources::#1", "normalize.py::or port is None::#1", "normalize.py::or port.side not in (PortSide.LEFT, PortSide.RIGHT)::#1", "normalize.py::or radius_index + 2 >= len(route.points)::#1", - "normalize.py::while joined := [::#1", "offsets.py::and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE::#1", "offsets.py::elif feeding_exit != edge.source:::#1", "offsets.py::for _ in range(len(graph.stations) + 1):::#1", - "offsets.py::for _ in range(len(seed_lines)):::#1", "offsets.py::for _ in range(max_iterations):::#1", "offsets.py::for _iteration in range(len(ctx.graph.sections) + 1):::#1", "offsets.py::for edge in graph.edges_from(port_id):::#2", - "offsets.py::for edge in graph.edges_to(jid):::#1", - "offsets.py::for lid in above:::#1", - "offsets.py::for lid, off in desired.items():::#1", - "offsets.py::for lid, off in desired.items():::#2", "offsets.py::for other in lines:::#1", "offsets.py::for other_lid in nbr_lines:::#1", - "offsets.py::for succ in dag.successors.get(stack.pop(), ()):::#1", - "offsets.py::if (::#3", - "offsets.py::if (cur_sid, cur_lid) in visited:::#1", "offsets.py::if (tgt_id, lid) not in ctx.offsets:::#1", "offsets.py::if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:::#1", "offsets.py::if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:::#1", - "offsets.py::if all(::#1", "offsets.py::if anchor_feeders:::#1", "offsets.py::if any(::#2", "offsets.py::if any(::#3", @@ -1014,11 +869,9 @@ "offsets.py::if entry.side not in (PortSide.LEFT, PortSide.RIGHT):::#1", "offsets.py::if entry_port is None:::#1", "offsets.py::if exit_lines == set(j_lines):::#1", - "offsets.py::if feeding_exit is None:::#1", "offsets.py::if gap is not None:::#1", "offsets.py::if internal_offs:::#1", "offsets.py::if key not in ctx.offsets:::#1", - "offsets.py::if len(nbr_lines) < 2:::#1", "offsets.py::if len(seed_lines) < 2:::#2", "offsets.py::if len(set(assigned.values())) < len(assigned):::#1", "offsets.py::if len(set(feeder_row.values())) < 2:::#1", @@ -1052,7 +905,6 @@ "offsets.py::if nxt in seen:::#1", "offsets.py::if off is not None:::#1", "offsets.py::if ordered != expected:::#1", - "offsets.py::if other_lid == cur_lid:::#1", "offsets.py::if paired_off is not None:::#1", "offsets.py::if pending is None:::#2", "offsets.py::if port.section_id is None:::#1", @@ -1060,7 +912,6 @@ "offsets.py::if port_st is None:::#1", "offsets.py::if pred is None:::#1", "offsets.py::if reverse:::#3", - "offsets.py::if seam is None:::#1", "offsets.py::if sec_a is None and id_a in graph.ports:::#1", "offsets.py::if sec_b is None and id_b in graph.ports:::#1", "offsets.py::if section is None:::#1", @@ -1071,15 +922,12 @@ "offsets.py::if single_exit and feeding_exit is not None:::#1", "offsets.py::if slot is None:::#1", "offsets.py::if source_col is None:::#1", - "offsets.py::if src_n <= tgt_n:::#1", "offsets.py::if src_port and not src_port.is_entry:::#2", "offsets.py::if station.section_id is not None:::#1", - "offsets.py::if succ not in affected:::#1", "offsets.py::if swap_lid is None:::#1", "offsets.py::if target_col is None:::#1", "offsets.py::if target_id is None:::#1", "offsets.py::if tgt.is_port:::#1", - "offsets.py::if tgt_port is None or not tgt_port.is_entry:::#1", "offsets.py::if tgt_port.section_id in ctx.tb_sections:::#1", "offsets.py::if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):::#1", "offsets.py::len(levels) != len(continuing)::#1", @@ -1090,8 +938,6 @@ "perp.py::if not feeders:::#1", "planning.py::elif abs(first[1] - second[1]) <= COORD_TOLERANCE:::#1", "planning.py::for index, point in enumerate(points):::#1", - "planning.py::if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:::#1", - "planning.py::if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:::#1", "planning.py::if changed:::#1", "planning.py::if corner_offsets is None:::#1", "planning.py::if membership is None:::#1", @@ -1125,7 +971,6 @@ "reserved_bands.py::if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:::#1", "reserved_bands.py::if band is None:::#2", "reserved_bands.py::if boundary is None:::#1", - "reserved_bands.py::if lower > upper + COORD_TOLERANCE:::#1", "reserved_bands.py::if realised is None:::#1", "reserved_bands.py::if realised is None:::#2", "reserved_bands.py::if seat is None:::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index 76001b83e..a53a572c5 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -47,10 +47,6 @@ "note": "Contract guard raising IndexError on an out-of-range bundle_index. Callers always pass an in-range index (0<=i 0:::#1": { - "note": "Leftward (dx<=0) near-source fallback: the symmetric mirror of the rightward fallback. Reached only when section info is unavailable AND no adjacent column resolves; valid layouts take the rightward fallback, but the leftward mirror is kept for robustness.", - "status": "defensive" - }, "common.py::if dy > 0:::#2": { "note": "Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code.", "status": "defensive" @@ -231,34 +227,14 @@ "note": "The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable.", "status": "needs-review" }, - "convergences.py::for candidate_coordinate in direct_candidates:::#1": { - "note": "Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored.", - "status": "needs-review" - }, "convergences.py::for seat, obstacle in obstacles:::#1": { "note": "The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it.", "status": "needs-review" }, - "convergences.py::if (::#16": { - "note": "Pre-existing gap, re-keyed from #12 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,18] split). The raise for a covered continuation absent from the carrier member that is recorded as covering it. _reconcile_continuation_ownership only names a carrier whose route already spans the continuation's endpoints, so the raise arm reports an engine bug and aborts the render; no valid topology reaches it.", - "status": "defensive" - }, - "convergences.py::if (::#17": { - "note": "Pre-existing gap, re-keyed from #13 by the gates the restored conflict conditions inserted earlier in the file (unchanged [0,0] split). Never executed rather than half-taken: its enclosing `if continuation.covered_by_member_id is not None:` never takes the None arm on any of the 18 fixtures that validate a planned convergence, so an uncovered outgoing continuation does not exist in this corpus. What would settle it is a topology whose continuation no endpoint owner's route spans, which _reconcile_continuation_ownership would then leave uncovered.", - "status": "candidate-dead" - }, "convergences.py::if (::#6": { "note": "A landing enters `ordered` only because _landing_cross_segment admitted it, and laning moves that run rather than removing it, so the read that names the landing as a resident always finds a segment. The gate guards the Optional that read returns.", "status": "defensive" }, - "convergences.py::if any(::#3": { - "note": "_packed_lane's decline arm: packing a run onto the pitch of its nearest bundle neighbour would seat it inside a *second* neighbour's pitch. Reachable -- 3-lane bundles exist in the corpus (_packed_lane sees len(neighbours)==2 on examples/guide/03b_fan_in_merge.mmd) -- but no fixture makes the candidate breach the far lane. Wants a fixture.", - "status": "needs-review" - }, - "convergences.py::if any(::#6": { - "note": "Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored.", - "status": "needs-review" - }, "convergences.py::if not moved_channels or any(::#1": { "note": "Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored.", "status": "needs-review" @@ -271,10 +247,6 @@ "note": "A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move.", "status": "defensive" }, - "convergences.py::if coordinate is None:::#3": { - "note": "Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored.", - "status": "needs-review" - }, "convergences.py::if coordinate is not None:::#3": { "note": "Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture.", "status": "needs-review" @@ -283,10 +255,6 @@ "note": "_flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds.", "status": "defensive" }, - "convergences.py::if first.claimant_member_ids & second.claimant_member_ids:::#1": { - "note": "_channels_share_source_carrier's shared-claimant shortcut. Its sole caller is _validate_final_convergence_feasibility, which pairs a convergence plan channel against a frozen member channel; the intersection is non-empty only when the plan's channel names the very member it is compared with, which no corpus fixture produces. Reachable in principle, wants a fixture.", - "status": "needs-review" - }, "convergences.py::if first_delta * second_delta < 0:::#1": { "note": "OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712.", "status": "needs-review" @@ -303,10 +271,6 @@ "note": "A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to.", "status": "needs-review" }, - "convergences.py::if not carries_coupled_primary and any(::#1": { - "note": "Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored.", - "status": "needs-review" - }, "convergences.py::if not clearance_pending and any(::#1": { "note": "The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms.", "status": "needs-review" @@ -367,10 +331,6 @@ "note": "Bounds check for resolve_curve_radius_at. Production callers use indices from range(n_corners) or recorded corner buckets, so an invalid index requires a caller-contract violation and is covered as an error case by the corner unit tests.", "status": "defensive" }, - "exit_turns.py::if (::#10": { - "note": "The emission validation that raises when a rendered turn's axis, lead-in runway or direction differs from the assignment the route was bound to. The emitters derive all four from that same assignment, so the raise names an emitter ignoring its plan rather than a topology.", - "status": "defensive" - }, "exit_turns.py::if abs(turn_delta) <= COORD_TOLERANCE:::#2": { "note": "_plain_l_shape_turn_requirement's flat-hop guard, which both its callers exclude: _standard_l_shape_turn_requirement returns its own missing-source-turn for a flat delta before delegating, and the cell-mate gap drop only classifies when the target section sits one grid row below the source (_bypass_route_kind requires tgt_row == src_row + 1), which puts the two ports on different rows. The duplicated guard therefore never fires.", "status": "defensive" @@ -479,10 +439,6 @@ "note": "Every caller of _corridor_is_viable passes a non-None entry_port.", "status": "defensive" }, - "inter_section_handlers.py::if ep_port and ep_port.side == PortSide.LEFT:::#1": { - "note": "Contract guard in _route_inter_section: a merge entry port always resolves to a Port on the LEFT side here, so the non-LEFT/None arm (fall through to _route_l_shape at L344) is never taken (0/128). The earlier 'multiline phantom' note was inaccurate -- this is a recorded gate whose arm is never taken. Defensive guard. Reclassified defensive (#762).", - "status": "defensive" - }, "inter_section_handlers.py::if ep_section and ep_section.bbox_w > 0:::#1": { "note": "entry_port.section_id is always set and the section has bbox_w>0 after layout; the else arm never fires.", "status": "defensive" @@ -731,10 +687,6 @@ "note": "Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires.", "status": "defensive" }, - "normalize.py::and span[0] < crossed[1]::#1": { - "note": "Crossed-axis overlap test in _run_enters_section, reached only for a target already bracketed on the held axis. No corpus separation target is, so this operand's short-circuit arm never fires.", - "status": "defensive" - }, "normalize.py::dx is None::#1": { "note": "Every validation-eligible settled exit-turn corner must retain its allocated or planned offset. An absent value is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership.", "status": "defensive" @@ -823,10 +775,6 @@ "note": "Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness.", "status": "needs-review" }, - "normalize.py::if below_ok and above_ok and (cross_below is None) != (cross_above is None):::#1": { - "note": "Distinct-line dogleg side selection. The crossing-decided true arm (->1342) is exercised by dogleg_exempt_distinct. The false fall-through (->1343) needs a crossing-equal tie; a crossing-free tie requires degenerate zero-length exempt risers and the only realizable tie is both-cross, which trips _guard_no_dogleg_crosses_exempt_trunk plus the section-crossing guards and is never a shippable render.", - "status": "defensive" - }, "normalize.py::if best < cur:::#1": { "note": "_suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path.", "status": "defensive" @@ -867,10 +815,6 @@ "note": "Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent).", "status": "defensive" }, - "normalize.py::if len(turns) != 1:::#1": { - "note": "In _bundle_divergent_distinct_traverses: every fan in the corpus turns its traverses the same way, so the mixed-direction skip is never taken. Defensive.", - "status": "defensive" - }, "normalize.py::if len({id(t.route) for t in grp}) < 2:::#2": { "note": "Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive.", "status": "defensive" @@ -967,18 +911,6 @@ "note": "_reconcile_horizontal_offsets iterates at most 10 times and breaks early when no change occurs. The arc L1338->(-1310) represents loop exhaustion without early-break (all 10 iterations consumed). On any valid parsed graph, the reconciliation converges in at most a handful of iterations because each iteration resolves at least one edge conflict or reaches a fixed point. The 10-iteration ceiling is a backstop against hypothetical oscillating graphs; normal topologies stabilize in 1-3 passes.", "status": "defensive" }, - "offsets.py::for edge in graph.edges_to(jid):::#1": { - "note": "Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive.", - "status": "defensive" - }, - "offsets.py::for lid, off in desired.items():::#1": { - "note": "Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive.", - "status": "defensive" - }, - "offsets.py::for lid, off in desired.items():::#2": { - "note": "Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive.", - "status": "defensive" - }, "offsets.py::for other in lines:::#1": { "note": "In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762).", "status": "defensive" @@ -987,14 +919,6 @@ "note": "In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed.", "status": "needs-review" }, - "offsets.py::if (::#3": { - "note": "Inside _propagate_offset_swap's same-Y collision-swap block: across the corpus no same-Y adjacent multi-line neighbour needs an offset swap, so the inner collision check never executes (0/128). Defensive guard for a same-Y multi-line offset collision absent from current topologies. Reclassified defensive (#762).", - "status": "defensive" - }, - "offsets.py::if (cur_sid, cur_lid) in visited:::#1": { - "note": "In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed.", - "status": "needs-review" - }, "offsets.py::if (tgt_id, lid) not in ctx.offsets:::#1": { "note": "The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", "status": "defensive" @@ -1007,10 +931,6 @@ "note": "In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed.", "status": "needs-review" }, - "offsets.py::if all(::#1": { - "note": "Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. The already-aligned arm (->1190) is exercised by the corpus; the body arm (->1192) is the reachable-but-defective one.", - "status": "defensive" - }, "offsets.py::if any(::#3": { "note": "This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state.", "status": "defensive" @@ -1035,18 +955,10 @@ "note": "Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always.", "status": "defensive" }, - "offsets.py::if feeding_exit is None:::#1": { - "note": "Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive.", - "status": "defensive" - }, "offsets.py::if internal_offs:::#1": { "note": "Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state.", "status": "defensive" }, - "offsets.py::if len(nbr_lines) < 2:::#1": { - "note": "In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed.", - "status": "needs-review" - }, "offsets.py::if len(shared) < 2:::#1": { "note": "In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken.", "status": "defensive" @@ -1087,10 +999,6 @@ "note": "The raise arm of _assert_sections_anchored_on_trunk, a backstop on the postcondition of _reindex_section_local: an independent section (no flat-frame neighbour) always lands on the contiguous top-anchored levels 0,step,...,(m-1)*step by construction, so the mismatch arm never fires across the corpus. It guards against a future change that stops re-anchoring such a section.", "status": "defensive" }, - "offsets.py::if other_lid == cur_lid:::#1": { - "note": "Inside _propagate_offset_swap's same-Y collision-swap block: across the corpus no same-Y adjacent multi-line neighbour needs an offset swap, so the loop body (incl. this self-skip guard) never executes (0/128). Defensive guard for a same-Y multi-line offset collision absent from current topologies. Reclassified defensive (#762).", - "status": "defensive" - }, "offsets.py::if paired_off is not None:::#1": { "note": "_compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable.", "status": "defensive" @@ -1127,10 +1035,6 @@ "note": "_convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph.", "status": "defensive" }, - "offsets.py::if src_n <= tgt_n:::#1": { - "note": "_reconcile_horizontal_offsets' bundle-shift fallback moves the edge endpoint with fewer lines. The else arm (src_n > tgt_n: move the target) was exercised in the corpus solely by the fan-port drag where a many-line entry/exit port is the edge source and a same-Y trunk-row station with fewer lines is the target (funcprofiler_upstream's humann3 at its entry port). The #1480 exit-port ordering fix (merge_trunk_lines in _compute_exit_port_offsets) rides the trunk-continuation merge line out on the trunk slot, so that port and station now agree and the edge no longer needs shifting. The remaining corpus shift (sr_qc into its input exit port) has the fewer-line station as the source, taking the src_n <= tgt_n true arm. The else arm stays defensive for a same-Y bundle conflict whose higher-line-count endpoint is the edge source.", - "status": "defensive" - }, "offsets.py::if src_port and not src_port.is_entry:::#2": { "note": "Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port.", "status": "defensive" diff --git a/tests/test_convergence_planner.py b/tests/test_convergence_planner.py index 5fb5c5a20..3b2558187 100644 --- a/tests/test_convergence_planner.py +++ b/tests/test_convergence_planner.py @@ -32,6 +32,8 @@ build_route_plan_query, ) from nf_metro.layout.route_reservations import ( + CorridorOrientation, + RowGapRegion, expected_convergence_foreign_references, ) from nf_metro.layout.routing import compute_station_offsets, observe_route_edges @@ -48,6 +50,7 @@ from nf_metro.layout.routing.invariants import ( check_merge_branches_meet_trunk, check_merge_feeders_land_on_trunk, + check_no_dogleg_crosses_exempt_trunk, ) from nf_metro.parser.model import Edge, MetroGraph, PortSide, Station from nf_metro.parser.route_topology import ResolvedEdge, build_route_topology_query @@ -397,6 +400,57 @@ def test_seed_15_owned_lane_envelope_requests_boundary_three_runway() -> None: assert runway_boundaries == {3} +def test_seed_15_final_member_plan_owns_the_reconciled_row_gap_route() -> None: + graph, offsets, observed = _observe( + FROZEN / "seed_15.mmd", allow_clearance_requirements=True + ) + edge = ResolvedEdge("__junction_24", "s6__entry_right_14", "l1") + route = next( + route + for route in observed.routes + if ResolvedEdge(route.edge.source, route.edge.target, route.line_id) == edge + ) + member = next( + plan for plan in observed.plan.member_geometry_plans if plan.edge == edge + ) + + assert route.points == [ + (1612.0, 544.0), + (1542.0, 544.0), + (1542.0, 264.0), + (1284.0, 264.0), + (1284.0, 544.0), + (1246.0, 544.0), + ] + assert tuple(route.points) == member.points + assert member.owned_segment_ranks == (1, 3) + assert tuple(channel.segment_rank for channel in member.gap_channels) == (1, 3) + assert member.trunk_slot is not None + assert member.trunk_slot.gap_upper_row is None + assert not check_no_dogleg_crosses_exempt_trunk(graph, observed.routes, offsets) + + trunk_reservations = [ + reservation + for reservation in observed.plan.reservations + if member.member_id in reservation.claimant_member_ids + and reservation.orientation is CorridorOrientation.HORIZONTAL + and any( + claim.segment_rank <= 2 <= claim.segment_end_rank + for claim in reservation.claims + ) + ] + assert len(trunk_reservations) == 1 + assert trunk_reservations[0].region == RowGapRegion(0, 1) + + _graph, _offsets, repeated = _observe( + FROZEN / "seed_15.mmd", allow_clearance_requirements=True + ) + repeated_member = next( + plan for plan in repeated.plan.member_geometry_plans if plan.edge == edge + ) + assert repeated_member == member + + def test_seed_41_outer_owned_lane_needs_no_boundary_two_runway() -> None: from nf_metro.layout.routing.normalize import _opening_fanout_descent diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index d770e7135..94742b367 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -8,13 +8,19 @@ import nf_metro.layout.routing.convergences as convergences from nf_metro.api import prepare_graph -from nf_metro.layout.constants import COORD_TOLERANCE, CURVE_RADIUS, OFFSET_STEP +from nf_metro.layout.constants import ( + COORD_TOLERANCE, + CURVE_RADIUS, + DIAGONAL_RUN, + OFFSET_STEP, +) from nf_metro.layout.geometry import cotravelling_lane_clearance, spans_share_corridor from nf_metro.layout.route_plan import ( ROUTE_SYSTEM_COMPATIBILITY_REASONS, ConvergenceConflictKind, RouteSystemId, ) +from nf_metro.layout.routing.context import _build_routing_context from nf_metro.layout.routing.convergences import ( ConvergencePlanExecution, FinalConvergenceFeasibilityError, @@ -636,9 +642,9 @@ def test_organellar_joint_allocation_freezes_member_before_emission() -> None: def test_starved_final_settlement_does_not_publish_crowded_plan(monkeypatch) -> None: path = ROOT / "examples" / "topologies" / "fan_in_merge.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - observation = observe_route_edges( - graph, station_offsets=compute_station_offsets(graph) - ) + station_offsets = compute_station_offsets(graph) + observation = observe_route_edges(graph, station_offsets=station_offsets) + ctx = _build_routing_context(graph, DIAGONAL_RUN, CURVE_RADIUS, station_offsets) plan = observation.plan.convergence_plans[0] system_id = plan.system_id edge_order = tuple(member.edge for member in observation.plan.members) @@ -711,7 +717,7 @@ def test_starved_final_settlement_does_not_publish_crowded_plan(monkeypatch) -> settle_global_convergence_execution( execution, graph, - SimpleNamespace(curve_radius=8.0, prior_exit_turn_dispositions=None), + ctx, exit_turn_plans=(), member_geometry=empty_member_geometry_execution(), planned_system_ids=frozenset({system_id}), diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index 14b96da8c..e93b48783 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -403,7 +403,14 @@ def test_seed_77_turning_member_stays_off_straight_continuation_lane() -> None: graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) observed = build_observed_render_plan(graph, resolve_theme(None, graph)) svg = _emit_svg_plan(graph, observed.plan, RenderConfig()) - + routes = { + (route.edge.source, route.edge.target, route.line_id): route + for route in observed.plan.routes + } + straight = routes[("__junction_36", "s4__entry_right_21", "l1")] + turning = routes[("__junction_42", "__merge_12", "l4")] + + assert turning.points[2][0] - straight.points[3][0] == 3 * graph_offset_step(graph) assert not [ finding for finding in validate_render(svg, plan=observed.plan) diff --git a/tests/test_guard_registry.py b/tests/test_guard_registry.py index e1334d951..b64062792 100644 --- a/tests/test_guard_registry.py +++ b/tests/test_guard_registry.py @@ -108,7 +108,7 @@ def route_guard(graph, phase, *, routes): ) -def test_convergence_owned_dogleg_is_not_treated_as_movable() -> None: +def test_plan_ownership_does_not_hide_a_dogleg_crossing() -> None: exempt = RoutedPath( Edge("exempt-source", "exempt-target", "fixed"), "fixed", @@ -140,7 +140,7 @@ def test_convergence_owned_dogleg_is_not_treated_as_movable() -> None: assert check_no_dogleg_crosses_exempt_trunk(None, [exempt, movable], {}) movable.convergence_plan_id = "convergence" movable.convergence_owned_segment_ranks = (2,) - assert not check_no_dogleg_crosses_exempt_trunk(None, [exempt, movable], {}) + assert check_no_dogleg_crosses_exempt_trunk(None, [exempt, movable], {}) def test_owned_shared_opening_is_not_a_needless_right_entry_dive( From 2fb50d52c88e95ff1f8b1346ed422e3494581d26 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 11:58:18 +0100 Subject: [PATCH 077/158] fix(routing): seat reconciled trunks inside their reserved corridors [skip ci] The unweave retarget seated a re-banded trunk at bottom+clearance, which is inside the lower row's band rather than the inter-row corridor; it now centres in the corridor's cleared band (fan_corridor_band). Dogleg movers reserve the same inter-row header clearance the reservation ledger enforces, prefer the separation side that stays inside the segment's claim band, and claimed segments re-seat after the final owned-corridor reconciliation. The pre-freeze seat splits same-rank runs into band-overlap components so disjoint corridors travel independently, and clamps a straggler alone when its component is pinned. The lane-offset envelope double-counted separation already baked into claim coordinates, manufacturing phantom corridor deficits (reportho -4, offrow-climb -14); reservations now state only clearances, bundle and peer widths, and the corridor-settlement resettle projects claims through only the translations applied since that plan froze. Co-Authored-By: Claude Fable 5 --- src/nf_metro/layout/route_reservations.py | 66 ++----------------- .../layout/routing/member_geometry.py | 57 ++++++++++++++-- src/nf_metro/layout/routing/normalize.py | 23 ++++--- src/nf_metro/layout/routing/reserved_bands.py | 2 - src/nf_metro/render/svg.py | 9 +-- tests/test_envelope_settlement.py | 12 ++-- tests/test_route_reservations.py | 22 ++----- 7 files changed, 84 insertions(+), 107 deletions(-) diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index 8e3876d4a..60d49fccf 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -320,8 +320,6 @@ class RouteReservation: demand_ids: tuple[DemandId, ...] provenance: tuple[ReservationDecisionRef, ...] description: str - negative_lane_offset_envelope: float = 0.0 - positive_lane_offset_envelope: float = 0.0 def __post_init__(self) -> None: if not self.connector_ids: @@ -345,17 +343,13 @@ def __post_init__(self) -> None: or self.peer_clearance < 0 or self.negative_side_clearance < 0 or self.positive_side_clearance < 0 - or self.negative_lane_offset_envelope < 0 - or self.positive_lane_offset_envelope < 0 or self.minimum_width < 0 ): raise ValueError("reservation widths and clearances cannot be negative") expected = ( self.negative_side_clearance - + self.negative_lane_offset_envelope + self.bundle_width + self.peer_width - + self.positive_lane_offset_envelope + self.positive_side_clearance ) if abs(self.minimum_width - expected) > COORD_TOLERANCE: @@ -642,8 +636,6 @@ class _ObservedClaim: travel_start: float travel_end: float coordinate: float - negative_lane_offset_envelope: float - positive_lane_offset_envelope: float @property def line_id(self) -> str: @@ -1486,20 +1478,6 @@ def _route_launch_anchor( return None -def _lane_offset_envelope( - orientation: CorridorOrientation, - member: EmissionMember, - station_offsets: Mapping[tuple[str, str], float], -) -> tuple[float, float]: - if orientation is CorridorOrientation.VERTICAL: - return 0.0, 0.0 - offsets = ( - station_offsets.get((member.edge.source, member.line_id), 0.0), - station_offsets.get((member.edge.target, member.line_id), 0.0), - ) - return max(0.0, -min(offsets)), max(0.0, max(offsets)) - - def _observe_route_geometry( graph: MetroGraph, routes: list[RoutedPath], @@ -1576,9 +1554,6 @@ def _observe_route_geometry( if segment.orientation is CorridorOrientation.HORIZONTAL else CorridorKind.INTER_COLUMN_CHANNEL ) - negative_offset, positive_offset = _lane_offset_envelope( - segment.orientation, member, station_offsets - ) claims.append( _ObservedClaim( member.system_id, @@ -1614,8 +1589,6 @@ def _observe_route_geometry( segment.span_start, segment.span_end, segment.coordinate, - negative_offset, - positive_offset, ) ) return _ObservedGeometry(tuple(claims), tuple(unfiled)) @@ -2371,12 +2344,6 @@ def _build_symbolic_records( ) claims = tuple(item.claim for item in ordered_group) lanes, bundle_width = _allocate_physical_lanes(claims) - negative_offset_envelope = max( - item.negative_lane_offset_envelope for item in ordered_group - ) - positive_offset_envelope = max( - item.positive_lane_offset_envelope for item in ordered_group - ) connector_set = { connector_id for item in group for connector_id in item.connector_ids } @@ -2448,12 +2415,7 @@ def _build_symbolic_records( BUNDLE_TO_BUNDLE_CLEARANCE, negative, positive, - negative - + negative_offset_envelope - + bundle_width - + peer_width - + positive_offset_envelope - + positive, + negative + bundle_width + peer_width + positive, None, keepouts, families, @@ -2461,8 +2423,6 @@ def _build_symbolic_records( (demand_id,), provenance, _description(first.kind, first.region, span, lane_count), - negative_lane_offset_envelope=negative_offset_envelope, - positive_lane_offset_envelope=positive_offset_envelope, ) reference = SharedReference( reference_id, @@ -2660,10 +2620,8 @@ def _projected_claim_bounds( longitudinal_axis, min(item[0] for item in projected_claims), max(item[1] for item in projected_claims), - min(item[2] for item in projected_claims) - - reservation.negative_lane_offset_envelope, - max(item[2] for item in projected_claims) - + reservation.positive_lane_offset_envelope, + min(item[2] for item in projected_claims), + max(item[2] for item in projected_claims), ) @@ -2819,10 +2777,8 @@ def _realise_one( ) required = ( negative_clearance - + reservation.negative_lane_offset_envelope + reservation.bundle_width + reservation.peer_width - + reservation.positive_lane_offset_envelope + positive_clearance ) available = measured_distance(measurement.start, measurement.end) @@ -2928,16 +2884,8 @@ def drawn_corridor_containment( for claim in claims for rank in range(claim.segment_rank, claim.segment_end_rank + 2) ) - band_start = ( - realised.region_start - + realised.negative_side_clearance - - reservation.negative_lane_offset_envelope - ) - band_end = ( - realised.region_end - - realised.positive_side_clearance - + reservation.positive_lane_offset_envelope - ) + band_start = realised.region_start + realised.negative_side_clearance + band_end = realised.region_end - realised.positive_side_clearance if isinstance(reservation.region, ColumnGapRegion): for claim in claims: polyline = route_polylines[claim.path_rank] @@ -3161,10 +3109,8 @@ def _validate_reservation_record( expected_positive = reserved_margin expected_minimum = ( expected_negative - + reservation.negative_lane_offset_envelope + expected_bundle_width + reservation.peer_width - + reservation.positive_lane_offset_envelope + expected_positive ) if ( @@ -3460,10 +3406,8 @@ def _validate_reservation_realisation( expected_occupied_end = expected_bounds.occupied_end expected_required = ( realised.negative_side_clearance - + reservation.negative_lane_offset_envelope + reservation.bundle_width + reservation.peer_width - + reservation.positive_lane_offset_envelope + realised.positive_side_clearance ) expected_capacity = realised.available_width - expected_required diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index d5154600d..667305943 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1896,13 +1896,54 @@ def _seat_claimed_segments_before_freeze( ) for (*_identity, axis), items in grouped.items(): - travel = bundle_travel( - [(band, coordinate) for _route, _rank, coordinate, band in items] - ) - if abs(travel) <= COORD_TOLERANCE_FINE: - continue - for route, rank, coordinate, _band in items: - _carry_seated_run(route, rank, axis, coordinate + travel) + # Same-rank runs in disjoint corridors are not one bundle: a run pinned + # at its own band edge must not veto the travel of runs whose bands it + # does not even overlap, so items split into band-overlap components + # and each component travels as its own bundle. + for component in _band_overlap_components(items): + travel = bundle_travel( + [(band, coordinate) for _route, _rank, coordinate, band in component] + ) + if abs(travel) > COORD_TOLERANCE_FINE: + for route, rank, coordinate, _band in component: + _carry_seated_run(route, rank, axis, coordinate + travel) + continue + # The component cannot travel rigidly (a mate is already pinned at + # its own band edge), so an out-of-band run is clamped alone -- + # but only when the clamp keeps the nesting pitch to every mate, + # since two runs on one coordinate draw as a single stroke. + pitch = 2 * ctx.offset_step + for route, rank, coordinate, band in component: + clamped = min(max(coordinate, band.lo), band.hi) + if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE: + continue + mates = [ + other_coordinate + for other_route, _r, other_coordinate, _b in component + if other_route is not route + ] + if all( + abs(clamped - other) >= pitch - COORD_TOLERANCE_FINE + for other in mates + ): + _carry_seated_run(route, rank, axis, clamped) + + +def _band_overlap_components( + items: list[tuple[RoutedPath, int, float, ReservedBand]], +) -> list[list[tuple[RoutedPath, int, float, ReservedBand]]]: + """*items* partitioned into components of transitively overlapping bands.""" + ordered = sorted(items, key=lambda item: item[3].lo) + components: list[list[tuple[RoutedPath, int, float, ReservedBand]]] = [] + reach = float("-inf") + for item in ordered: + band = item[3] + if not components or band.lo > reach + COORD_TOLERANCE: + components.append([item]) + else: + components[-1].append(item) + reach = max(reach, band.hi) + return components def _allocate_preliminary_gap_claims( @@ -2290,6 +2331,8 @@ def build_member_geometry_execution( station_offsets=ctx.station_offsets, fixed_segment_keys=settled_tail_segments, ) + if final_dogleg_edges and reservation_ids_by_member is not None: + _seat_claimed_segments_before_freeze(tuple(candidates), ctx) plans = tuple( _freeze_plan( scaffold, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 6027190f7..68e019caf 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -19,8 +19,6 @@ INTER_ROW_EDGE_CLEARANCE, INTER_ROW_HEADER_CLEARANCE, MIN_CORRIDOR_Y_OVERLAP, - NEXT_ROW_HEADER_BADGE_CLEARANCE, - SECTION_HEADER_PROTRUSION, graph_offset_step, ) from nf_metro.layout.geometry import ( @@ -46,6 +44,7 @@ convergence_owns_segment_boundary, corridor_lanes, corridor_runs, + fan_corridor_band, gap_lo_for_x, initial_fanout_descent_span, inter_row_gap_upper_row, @@ -3897,14 +3896,13 @@ def _dogleg_off_exempt_trunks( ) if hit is None: continue - # Lower edge reserves the next row's header badge plus the clearance - # margin the header-clearance invariant requires; up_room only reserves + # Lower edge reserves the same inter-row header clearance the + # reservation ledger enforces on drawn claims; up_room only reserves # the upper box edge. band = _inter_row_gap_band(ctx, t.y) if band is not None: top, bottom = band - header_top = bottom - SECTION_HEADER_PROTRUSION - down_room = (header_top - NEXT_ROW_HEADER_BADGE_CLEARANCE) - hit.y + down_room = (bottom - INTER_ROW_HEADER_CLEARANCE) - hit.y up_room = hit.y - top else: down_room = up_room = clearance @@ -3969,10 +3967,16 @@ def _dogleg_off_exempt_trunks( below, above = hit.y + separation, hit.y - separation if band is not None: top, bottom = band - below_ok = below <= bottom - SECTION_HEADER_PROTRUSION + below_ok = below <= bottom - INTER_ROW_HEADER_CLEARANCE above_ok = above >= top else: below_ok = above_ok = True + claim_band = _segment_claim_band(ctx, t.route, t.idx) + if claim_band is not None: + below_in_band = below_ok and below <= claim_band.hi + above_in_band = above_ok and above >= claim_band.lo + if below_in_band or above_in_band: + below_ok, above_ok = below_in_band, above_in_band # Pick the side that keeps the trunk a crossing-free parallel bundle: # nudging it onto the side whose riser would pierce the exempt run (or # whose run the exempt riser would pierce) trades one fused stroke for @@ -4041,11 +4045,12 @@ def _unweave_exempt_trunk_riser( endpoint_y = min(moving_segment.before_y, moving_segment.after_y) exempt_sections = set(_route_endpoint_section_ids(ctx.graph, route)) for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))): - target_y = bottom + EDGE_TO_BUNDLE_CLEARANCE + target_y = fan_corridor_band(top, bottom, 0.0) + if target_y is None: + continue candidate_trunk = _htrunk_seg(trunk, target_y) if ( bottom >= endpoint_y - ctx.curve_radius - or target_y < top + ctx.curve_radius or _h_segment_crosses_other_section( ctx.graph, candidate_trunk.xa, diff --git a/src/nf_metro/layout/routing/reserved_bands.py b/src/nf_metro/layout/routing/reserved_bands.py index 1cda51eca..7572c65d2 100644 --- a/src/nf_metro/layout/routing/reserved_bands.py +++ b/src/nf_metro/layout/routing/reserved_bands.py @@ -541,9 +541,7 @@ def terminal_landing_band( bundle_width=0.0, minimum_width=( reservation.negative_side_clearance - + reservation.negative_lane_offset_envelope + reservation.peer_width - + reservation.positive_lane_offset_envelope + reservation.positive_side_clearance ), ) diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index eac997f53..a679c4b4a 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -1503,9 +1503,7 @@ def _reconcile_carried_ports( ), ) applied_settlements.append(preclearance_settlement) - station_offsets, routes, route_plan = _resettle( - reservation_translations=preclearance_settlement.coordinate_translations - ) + station_offsets, routes, route_plan = _resettle() if route_plan.boundary_clearance_requirements: raise LayoutInvariantError( "envelope settlement did not satisfy convergence boundary " @@ -1516,10 +1514,7 @@ def _reconcile_carried_ports( if corridor_settlement.translations: station_offsets, routes, route_plan = _resettle( route_plan, - ( - *preclearance_settlement.coordinate_translations, - *corridor_settlement.coordinate_translations, - ), + corridor_settlement.coordinate_translations, ) effective_strict = (graph.strict or bool(graph._fold_compressed_sections)) and not ( graph.permissive diff --git a/tests/test_envelope_settlement.py b/tests/test_envelope_settlement.py index 76c4475c9..eed9a84cd 100644 --- a/tests/test_envelope_settlement.py +++ b/tests/test_envelope_settlement.py @@ -805,20 +805,20 @@ def test_one_translation_settles_every_claim_on_its_boundary() -> None: """Two corridors starved at one boundary are one widening, not two. ``convergent_offrow_exit_climb`` puts a topology-span claim and an - observed-run claim in row gap 0/1. Their lane envelopes leave both 14px - short, and one translation of row 1 onward satisfies both. + observed-run claim in row gap 0/1. Both fall short at that boundary, and + one translation of row 1 onward sized to the deeper deficit satisfies both. """ path = TOPOLOGIES / "convergent_offrow_exit_climb.mmd" graph, plan = _observe(path) starved = _capacity_deficits(plan) assert len(starved) == 2 - assert set(starved.values()) == {-14.0} + assert set(starved.values()) == {-6.0, -2.0} settlement = settle_route_envelopes(graph, plan) (translation,) = settlement.translations assert translation.axis is SettlementAxis.ROW assert translation.boundary == 1 - assert translation.amount == pytest.approx(14.0) + assert translation.amount == pytest.approx(6.0) assert {str(item) for item in translation.reservation_ids} == set(starved) for reservation_id in starved: @@ -970,8 +970,8 @@ def test_reportho_report_trunk_keeps_its_authored_inter_row_corridor() -> None: assert len(reservation.connector_ids) == 12 realised = query.realised_reservation(reservation.id) assert realised is not None - assert reservation.minimum_width == 82 - assert realised.available_width >= 82.0 + assert reservation.minimum_width == 78 + assert realised.available_width >= 78.0 assert realised.capacity_slack >= 0.0 assert _capacity_deficits(plan) == {} diff --git a/tests/test_route_reservations.py b/tests/test_route_reservations.py index aedf79244..5d707117a 100644 --- a/tests/test_route_reservations.py +++ b/tests/test_route_reservations.py @@ -257,9 +257,7 @@ def test_reportho_preserves_the_full_authored_corridor() -> None: assert reservation.bundle_width == 0 assert reservation.negative_side_clearance == 26 assert reservation.positive_side_clearance == 52 - assert reservation.negative_lane_offset_envelope == 0 - assert reservation.positive_lane_offset_envelope == 4 - assert reservation.minimum_width == 82 + assert reservation.minimum_width == 78 assert len(reservation.connector_ids) == 12 assert len(reservation.claimant_member_ids) == 2 assert len(reservation.claims) == 1 @@ -272,27 +270,25 @@ def test_reportho_preserves_the_full_authored_corridor() -> None: assert all(len(str(item)) < 64 for item in reservation.demand_ids) assert len(str(reservation.id)) < 64 - assert realised.coordinate == pytest.approx(494.0) + assert realised.coordinate == pytest.approx(492.0) assert realised.longitudinal_axis.value == "x" assert realised.longitudinal_start == pytest.approx(356.0) assert realised.longitudinal_end == pytest.approx(2314.0) assert realised.region_start == pytest.approx(466.0) assert realised.region_end == pytest.approx(544.0) assert realised.available_width == pytest.approx(78.0) - assert realised.required_width == pytest.approx(82.0) - assert realised.capacity_slack == pytest.approx(-4.0) + assert realised.required_width == pytest.approx(78.0) + assert realised.capacity_slack == pytest.approx(0.0) assert realised.negative_side_slack == pytest.approx(0.0) - assert realised.positive_side_slack == pytest.approx(-4.0) + assert realised.positive_side_slack == pytest.approx(0.0) assert realised.negative_blocker_ids == ("section-bottom:fetch_ortho",) assert realised.positive_blocker_ids == ("section-header:report",) - diagnostics = [ + assert not [ item for item in plan.reservation_diagnostics if item.reservation_id == reservation.id ] - assert len(diagnostics) == 1 - assert diagnostics[0].capacity_slack == pytest.approx(-4.0) assert graph.route_topology is not None connector_by_id = { @@ -980,11 +976,7 @@ def test_a_boundary_is_sized_for_the_corridors_confined_with_each_other() -> Non assert corridor.bundle_width == pytest.approx(0.0) assert corridor.peer_width == pytest.approx(owed) assert corridor.minimum_width == pytest.approx( - corridor.negative_side_clearance - + corridor.positive_side_clearance - + corridor.negative_lane_offset_envelope - + corridor.positive_lane_offset_envelope - + owed + corridor.negative_side_clearance + corridor.positive_side_clearance + owed ) From bf442eac17f63d33bcdfff4d1f1f85f1855f52b2 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 12:04:46 +0100 Subject: [PATCH 078/158] test(routing): lock the shared-opening exit-turn contract [skip ci] Seed-15 geometry statements follow the reconciled corridors (movable gap channel at 1542, seed-77 trunk at 2718, both historical crossings surface when the shared opening is disabled), the reportho corridor asserts the no-shortfall reservation arithmetic, and the split-fan test names the current contract: an exit-turn group with a shared opening declines full planning while the opening owns the conflicting geometry. Co-Authored-By: Claude Fable 5 --- tests/test_fused_cotravelling_lines_invariant.py | 2 +- tests/test_member_geometry.py | 6 +++--- tests/test_split_fanout_descent_invariant.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index e93b48783..c71878d23 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -371,7 +371,7 @@ def test_seed_77_merge_trunk_stays_in_its_inter_row_corridor() -> None: == ("__junction_42", "__merge_12", "l4") ) - assert trunk.points[2] == pytest.approx((2722.0, 348.0)) + assert trunk.points[2] == pytest.approx((2718.0, 348.0)) def test_seed_77_settled_entry_bundle_keeps_allocation_lanes() -> None: diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index c6bfccf97..e2f2858bb 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -281,7 +281,7 @@ def test_seed_15_settles_member_clear_of_shared_opening_and_convergence() -> Non if landing.edge == ResolvedEdge("__junction_25", "__merge_9", "l0") ) - assert movable.gap_channels[0].start[0] == 1538.0 + assert movable.gap_channels[0].start[0] == 1542.0 assert fixed.gap_channels[-1].start[0] == 1550.0 assert landing.minimum_runway == 52.0 assert landing.opening_turn_coordinate - landing.join_point[0] == 52.0 @@ -342,7 +342,7 @@ def mirrored(plan, *, movable=False): ) movable = next(plan for plan in settled.plans if plan.edge.line_id == "l1") - assert movable.gap_channels[0].start[0] == mirror * 1538.0 + assert movable.gap_channels[0].start[0] == mirror * 1542.0 def test_seed_15_shared_opening_prevents_both_historical_trunk_crossings( @@ -385,7 +385,7 @@ def crossings(observation) -> set[tuple[float, float]]: station_offsets=compute_station_offsets(graph), allow_convergence_clearance_requirements=True, ) - assert crossings(disabled) == {(1600.5, 392.0)} + assert crossings(disabled) == {(1302.0, 398.0), (1600.5, 398.0)} def test_seed_15_shared_opening_is_line_name_independent() -> None: diff --git a/tests/test_split_fanout_descent_invariant.py b/tests/test_split_fanout_descent_invariant.py index 3505c0774..03e4f2d75 100644 --- a/tests/test_split_fanout_descent_invariant.py +++ b/tests/test_split_fanout_descent_invariant.py @@ -86,7 +86,7 @@ def no_fuse(routes, ctx, *, settle_frozen_arcs: bool = False) -> None: assert violations, "expected a split fan-out descent with the fuse pass off" -def test_opposite_opening_directions_are_separate_planned_fans() -> None: +def test_opposite_opening_directions_share_one_exit_opening() -> None: graph = parse_metro_mermaid((FROZEN / "seed_15.mmd").read_text()) compute_layout(graph) @@ -101,7 +101,7 @@ def test_opposite_opening_directions_are_separate_planned_fans() -> None: ) assert len(plans) == 1 plan = plans[0] - assert plan.disposition is ExitTurnDisposition.PLANNED + assert plan.disposition is ExitTurnDisposition.LEGACY assert len(plan.shared_openings) == 1 opening = plan.shared_openings[0] From 65e86c82e9a6fd2797ceedf5881c776bd471877f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 13:03:19 +0100 Subject: [PATCH 079/158] fix(routing): run route guards on owned geometry and reconcile what they surface [skip ci] Planner ownership no longer exempts geometry from the dogleg-crossing and same-line opposing-overlap guards; a coincidence group's conflicting-axes self-check exempts only the sanctioned distinct-lane fan, and foreign channels in such a group keep coinciding with the plan's first lane. A validate=True final checkpoint that defers route guards to settlement now records the deferral on the graph, and validate --with-layout follows up with a render-plan build so the deferred guards run on settled geometry. The defects those guards surface are reconciled by construction. A snap never reverses a flanking horizontal run. Re-seating a vertical landing opening measures its runway signed along the approach and carries the join to the seat's downstream side, with feeder endpoint ownership following the moved join. Distinct lines' fan-mouth legs at a divergence junction nest a full pitch apart in drawn coordinates, closing the co-travel gap corridor_runs leaves at fan openings. The dogleg pass prefers a crossing counterpart over a proximity-only one and the unweave tries every crossing counterpart, since a riser can pierce several stacked trunks and only the same-target one can be retargeted. The seed-15 member-plan test now asserts the corridor-band trunk with its gap identity declared, and the historical-crossings non-vacuity set names the crossings the disabled shared opening reproduces. Co-Authored-By: Claude Fable 5 --- src/nf_metro/cli.py | 6 + src/nf_metro/layout/phases/guards.py | 20 +- src/nf_metro/layout/routing/convergences.py | 27 +- .../layout/routing/member_geometry.py | 4 + src/nf_metro/layout/routing/normalize.py | 251 +++++++++++++++--- src/nf_metro/parser/model.py | 7 + tests/test_convergence_planner.py | 8 +- tests/test_guard_registry.py | 25 +- tests/test_member_geometry.py | 2 +- 9 files changed, 265 insertions(+), 85 deletions(-) diff --git a/src/nf_metro/cli.py b/src/nf_metro/cli.py index 33204be2c..a56045f43 100644 --- a/src/nf_metro/cli.py +++ b/src/nf_metro/cli.py @@ -759,11 +759,17 @@ def validate(input_file: Path, with_layout: bool, strict: bool) -> None: if with_layout: try: compute_layout(graph, validate=True) + if graph._final_route_guards_deferred: + from nf_metro.render.svg import build_render_plan + + build_render_plan(graph, resolve_theme(None, graph)) except ( CyclicGraphError, BackwardFlowError, MixedEntryDirectionError, PhaseInvariantError, + FoldThresholdError, + ValueError, ) as e: issues.append(ValidationIssue(ERROR, str(e))) diff --git a/src/nf_metro/layout/phases/guards.py b/src/nf_metro/layout/phases/guards.py index a74fa3d61..da31e20b4 100644 --- a/src/nf_metro/layout/phases/guards.py +++ b/src/nf_metro/layout/phases/guards.py @@ -2537,10 +2537,7 @@ def iter_opposing_line_overlaps( lines sharing a channel are carried on their own offset slots, not on the same track. """ - from nf_metro.layout.routing.common import ( - apply_route_offsets, - convergence_owns_segment_boundary, - ) + from nf_metro.layout.routing.common import apply_route_offsets if offsets is None: from nf_metro.layout.routing import compute_station_offsets @@ -2567,13 +2564,6 @@ def iter_opposing_line_overlaps( continue if a.direction * b.direction >= 0: continue - if ( - a.route.convergence_plan_id is not None - and a.route.convergence_plan_id == b.route.convergence_plan_id - and convergence_owns_segment_boundary(a.route, a.rank) - and convergence_owns_segment_boundary(b.route, b.rank) - ): - continue if min(a.hi, b.hi) - max(a.lo, b.lo) > GUARD_TOLERANCE: yield OpposingOverlap( line_id, @@ -6186,11 +6176,9 @@ def _ensure_pass_c_inputs( station_offsets=offsets, allow_convergence_clearance_requirements=True, ) - routes = ( - None - if observation.plan.boundary_clearance_requirements - else observation.routes - ) + deferred = bool(observation.plan.boundary_clearance_requirements) + graph._final_route_guards_deferred = deferred + routes = None if deferred else observation.routes else: routes = route_edges_for_placement_guards(graph, offsets) except Exception: # noqa: BLE001 - routing failure surfaces elsewhere diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 8b0c129ef..b6a0a4f91 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -1948,12 +1948,21 @@ def _reseat_landing_opening( if landing.opening_turn_segment is None: return None runway = landing.minimum_runway + join_point = landing.join_point if landing.approach_axis is DemandAxis.X: - runway = abs(landing.join_point[0] - coordinate) + # Signed along the approach: a seat on the join's far side would + # reverse the landing tail into a fold-back, so the join slides + # through to the seat's downstream side at the formed-curve runway. + runway = landing.approach_direction.sign * (join_point[0] - coordinate) if runway < curve_radius - COORD_TOLERANCE: - return None + runway = curve_radius + join_point = ( + coordinate + landing.approach_direction.sign * runway, + join_point[1], + ) return replace( landing, + join_point=join_point, minimum_runway=runway, opening_turn_coordinate=coordinate, opening_turn_segment=( @@ -2001,15 +2010,27 @@ def _move_landing_opening( """Re-seat one independently owned vertical landing opening.""" landings = list(plan.landings) moved = False + moved_join_by_member: dict[EmissionMemberId, tuple[float, float]] = {} for rank, landing in enumerate(landings): if landing.member_id not in member_ids: continue reseated = _reseat_landing_opening(landing, coordinate, curve_radius) if reseated is None: return None + if reseated.join_point != landing.join_point: + moved_join_by_member[landing.member_id] = reseated.join_point landings[rank] = reseated moved = True - return replace(plan, landings=tuple(landings)) if moved else None + if not moved: + return None + ownership = tuple( + replace(item, endpoint=moved_join_by_member[item.member_id]) + if item.member_id in moved_join_by_member + and item.role is ConvergenceEndpointRole.FEEDER + else item + for item in plan.endpoint_ownership + ) + return replace(plan, landings=tuple(landings), endpoint_ownership=ownership) def _move_trunk_axis( diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 667305943..18cc5a26c 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -59,6 +59,7 @@ _coincide_same_line_fanout_traverses, _coincide_same_line_tracks, _dogleg_off_exempt_trunks, + _fan_apart_junction_opening_legs, _hold_runs_in_corridor_clearance, _locate_slot_channel, _materialize_gap_slots, @@ -2333,6 +2334,9 @@ def build_member_geometry_execution( ) if final_dogleg_edges and reservation_ids_by_member is not None: _seat_claimed_segments_before_freeze(tuple(candidates), ctx) + _fan_apart_junction_opening_legs( + normalization_population, ctx, ctx.station_offsets + ) plans = tuple( _freeze_plan( scaffold, diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 68e019caf..9a0a715c8 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1534,25 +1534,30 @@ def _snap_group( convergence_plan_ids = { channel.route.convergence_plan_id for channel in planned } - if None not in convergence_plan_ids and len(convergence_plan_ids) == 1: + # One convergence plan separating its own members onto distinct lanes + # is the sanctioned distinct-lane fan: the shared-X premise does not + # hold within the plan, and foreign channels coincide with the plan's + # first lane. + if None in convergence_plan_ids or len(convergence_plan_ids) != 1: + if ctx.validate_final_route_frames: + detail = ", ".join( + f"{channel.route.edge.source}->{channel.route.edge.target}:" + f"{channel.route.line_id}@{channel.x:.1f}" + f"[rank={channel.idx},owned={channel.route.convergence_owned_segment_ranks}]" + for channel in planned + ) + raise ValueError( + f"one coincidence group contains conflicting planned axes: {detail}" + ) return - if ctx.validate_final_route_frames: - detail = ", ".join( - f"{channel.route.edge.source}->{channel.route.edge.target}:" - f"{channel.route.line_id}@{channel.x:.1f}" - f"[rank={channel.idx},owned={channel.route.convergence_owned_segment_ranks}]" - for channel in planned - ) - raise ValueError( - f"one coincidence group contains conflicting planned axes: {detail}" - ) - return for ch in group.channels: if _planner_owns_channel(ch) and ( ch.route.exit_turn_plan_id not in movable_exit_plan_ids ): continue if abs(ch.x - ref_x) > COORD_TOLERANCE: + if _snap_reverses_adjacent_run(ch, ref_x): + continue _reconcile_moved_gap_slot(ch, ref_x, ctx.graph) _set_vchannel_x(ch, ref_x) @@ -2696,6 +2701,30 @@ def _reseat_concentric_flanking( ) +def _snap_reverses_adjacent_run(ch: _VChannel, new_x: float) -> bool: + """Whether moving the channel to *new_x* reverses a flanking horizontal run. + + A run that shrinks keeps its reading; a run whose direction flips draws the + line doubling back over the very track it just travelled (the #885 + fold-back), so a snap that would flip either flanking run is not a legal + fuse. A landing tail joining a merge trunk pins its far endpoint, which is + where a cross-join snap would otherwise reverse it. + """ + points = ch.route.points + for a_idx, b_idx, moved in ( + (ch.idx - 1, ch.idx, "b"), + (ch.idx + 1, ch.idx + 2, "a"), + ): + if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points): + continue + ax, bx = points[a_idx][0], points[b_idx][0] + old_run = bx - ax + new_run = (new_x - ax) if moved == "b" else (bx - new_x) + if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0: + return True + return False + + def _set_vchannel_x( ch: _VChannel, new_x: float, @@ -3939,27 +3968,7 @@ def _dogleg_off_exempt_trunks( owned and id(t.route) not in movable_owned_route_ids ): continue - hit = next( - ( - o - for o in obstacles - if o.route.line_id != t.route.line_id - and ( - abs(o.y - t.y) - < _exempt_trunk_separation(t, o, ctx.curve_radius) - COORD_TOLERANCE - or trunk_segments_cross(_htrunk_seg(t, t.y), _htrunk_seg(o, o.y)) - is not None - ) - and t.x_lo < o.x_hi - COORD_TOLERANCE - and o.x_lo < t.x_hi - COORD_TOLERANCE - and ( - not owned - or trunk_segments_cross(_htrunk_seg(t, t.y), _htrunk_seg(o, o.y)) - is not None - ) - ), - None, - ) + hit = _dogleg_counterpart(t, obstacles, ctx, owned=owned) if hit is None: continue separation = _exempt_trunk_separation(t, hit, ctx.curve_radius) @@ -3994,15 +4003,25 @@ def _dogleg_off_exempt_trunks( below_ok or above_ok ): if reconcile_owned_corridor: - changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) + changed.update( + _unweave_against_crossing_obstacles( + t, hit, obstacles, routes, ctx + ) + ) continue if cross_below is not None and cross_above is not None: if reconcile_owned_corridor: - changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) + changed.update( + _unweave_against_crossing_obstacles( + t, hit, obstacles, routes, ctx + ) + ) continue if cross_below is not None and cross_above is not None: if reconcile_owned_corridor: - changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) + changed.update( + _unweave_against_crossing_obstacles(t, hit, obstacles, routes, ctx) + ) continue prefer_below = t.y >= hit.y if below_ok and above_ok and (cross_below is None) != (cross_above is None): @@ -4013,13 +4032,82 @@ def _dogleg_off_exempt_trunks( use_below = False else: if reconcile_owned_corridor: - changed.update(_unweave_exempt_trunk_riser(t, hit, routes, ctx)) + changed.update( + _unweave_against_crossing_obstacles(t, hit, obstacles, routes, ctx) + ) continue target = below if use_below else above _seat_exempt_trunk_dogleg(t, target, ctx) return changed +def _dogleg_counterpart( + t: _HTrunk, + obstacles: list[_HTrunk], + ctx: _RoutingCtx, + *, + owned: bool, +) -> _HTrunk | None: + """The exempt counterpart a dogleg trunk settles against, if any. + + A crossing counterpart outranks a merely-close one: the crossing is the + geometric defect the dogleg pass exists to clear, while proximity is + stroke fusion, and settling against the near obstacle first would leave + the crossing pair unprocessed. An owned trunk reacts only to crossings. + """ + proximity_hit: _HTrunk | None = None + for o in obstacles: + if ( + o.route.line_id == t.route.line_id + or t.x_lo >= o.x_hi - COORD_TOLERANCE + or o.x_lo >= t.x_hi - COORD_TOLERANCE + ): + continue + if trunk_segments_cross(_htrunk_seg(t, t.y), _htrunk_seg(o, o.y)) is not None: + return o + if ( + proximity_hit is None + and not owned + and abs(o.y - t.y) + < _exempt_trunk_separation(t, o, ctx.curve_radius) - COORD_TOLERANCE + ): + proximity_hit = o + return proximity_hit + + +def _unweave_against_crossing_obstacles( + t: _HTrunk, + hit: _HTrunk, + obstacles: list[_HTrunk], + routes: list[RoutedPath], + ctx: _RoutingCtx, +) -> set[tuple[str, str, str]]: + """Unweave *t* against *hit*, then against any other crossing counterpart. + + A riser can pierce several exempt trunks stacked in one band, and the + retarget arm only engages the counterpart that shares the route's target, + so declining the chosen hit must not strand the crossing that a different + counterpart could clear. + """ + changed = _unweave_exempt_trunk_riser(t, hit, routes, ctx) + if changed: + return changed + tried = {id(hit.route)} + for other in obstacles: + if id(other.route) in tried or other.route.line_id == t.route.line_id: + continue + if ( + trunk_segments_cross(_htrunk_seg(t, t.y), _htrunk_seg(other, other.y)) + is None + ): + continue + changed = _unweave_exempt_trunk_riser(t, other, routes, ctx) + if changed: + return changed + tried.add(id(other.route)) + return set() + + def _unweave_exempt_trunk_riser( trunk: _HTrunk, obstacle: _HTrunk, @@ -4518,6 +4606,95 @@ def _restack_htrunk( rp.curve_radii[k] = r +def _fan_apart_junction_opening_legs( + routes: list[RoutedPath], + ctx: _RoutingCtx, + station_offsets: Mapping[tuple[str, str], float] | None, +) -> None: + """Nest distinct lines' fan-mouth legs apart where line offsets fuse them. + + A fan-out junction's outgoing legs are assigned raw lanes without seeing + the per-line separation the renderer adds, so two distinct lines whose raw + lanes differ by exactly the offset delta draw on one coordinate for the + whole mouth of the fan. The opening leg is pinned to its source, which + keeps :func:`corridor_runs` (and so the general co-travel separation) away + from it; a junction source is an invisible fan point, so the leg may take + its own lane the way the rest of the fan already does. + + Only the drawn coordinates are compared, and only a leg long enough to + read as a run is moved -- the mover steps a full nesting pitch to a lane + no other leg of the fan occupies, preferring a leg no plan owns. + """ + if station_offsets is None: + return + from nf_metro.layout.route_topology import divergence_junction_sources + + fanouts = divergence_junction_sources(ctx.graph, ctx.topology) + if not fanouts: + return + step = ctx.offset_step + by_source: defaultdict[str, list[RoutedPath]] = defaultdict(list) + for rp in routes: + if not rp.is_inter_section or len(rp.points) < 3: + continue + if rp.edge.source not in fanouts: + continue + a, b = rp.points[0], rp.points[1] + if abs(a[1] - b[1]) > COORD_TOLERANCE or abs(a[0] - b[0]) <= COORD_TOLERANCE: + continue + by_source[rp.edge.source].append(rp) + for group in by_source.values(): + if len(group) < 2: + continue + + def drawn_y(rp: RoutedPath) -> float: + return apply_route_offsets(rp, station_offsets)[0][1] + + for rp in group: + for other in group: + if other is rp or other.line_id == rp.line_id: + continue + if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE: + continue + lo = max( + min(rp.points[0][0], rp.points[1][0]), + min(other.points[0][0], other.points[1][0]), + ) + hi = min( + max(rp.points[0][0], rp.points[1][0]), + max(other.points[0][0], other.points[1][0]), + ) + if hi - lo <= 2 * COORD_TOLERANCE: + continue + + def leg_is_plan_stated(candidate: RoutedPath) -> bool: + return ( + 0 in candidate.convergence_owned_segment_ranks + or 0 in candidate.route_system_owned_segment_ranks + or candidate.exit_turn_plan_id is not None + or candidate.fan_plan_id is not None + or bool(candidate.exit_shared_opening_points) + ) + + mover, keeper = rp, other + if bool(mover.convergence_owned_segment_ranks) and not bool( + keeper.convergence_owned_segment_ranks + ): + mover, keeper = keeper, mover + if leg_is_plan_stated(mover): + continue + occupied = {drawn_y(item) for item in group if item is not mover} + for delta in (step, -step): + target = drawn_y(mover) + delta + if all( + abs(target - lane) > step - COORD_TOLERANCE for lane in occupied + ): + pts = mover.points + pts[0] = (pts[0][0], pts[0][1] + delta) + pts[1] = (pts[1][0], pts[1][1] + delta) + break + + def _join_fanout_upstream_tails(routes: list[RoutedPath], ctx: _RoutingCtx) -> None: """Snap each fan-out junction's upstream tail onto its downstream start. diff --git a/src/nf_metro/parser/model.py b/src/nf_metro/parser/model.py index bce28b38e..2adcb8807 100644 --- a/src/nf_metro/parser/model.py +++ b/src/nf_metro/parser/model.py @@ -703,6 +703,13 @@ class MetroGraph: # from readers that don't carry the ``validate`` flag in their signature. _validate_active: bool = field(default=False, repr=False) + # True when the final ``validate=True`` layout checkpoint discarded its + # routes because the observation published boundary clearance + # requirements: the route-dependent guards then run only at the render + # chokepoint, on settled geometry, so a caller that validates without + # rendering has to follow up with a render-plan build to run them. + _final_route_guards_deferred: bool = field(default=False, repr=False) + def _invalidate_edge_caches(self) -> None: """Reset caches that depend on the edge list.""" self._station_lines_cache = None diff --git a/tests/test_convergence_planner.py b/tests/test_convergence_planner.py index 3b2558187..e635d7683 100644 --- a/tests/test_convergence_planner.py +++ b/tests/test_convergence_planner.py @@ -417,16 +417,16 @@ def test_seed_15_final_member_plan_owns_the_reconciled_row_gap_route() -> None: assert route.points == [ (1612.0, 544.0), (1542.0, 544.0), - (1542.0, 264.0), - (1284.0, 264.0), - (1284.0, 544.0), + (1542.0, 398.0), + (1282.0, 398.0), + (1282.0, 544.0), (1246.0, 544.0), ] assert tuple(route.points) == member.points assert member.owned_segment_ranks == (1, 3) assert tuple(channel.segment_rank for channel in member.gap_channels) == (1, 3) assert member.trunk_slot is not None - assert member.trunk_slot.gap_upper_row is None + assert member.trunk_slot.gap_upper_row == 1 assert not check_no_dogleg_crosses_exempt_trunk(graph, observed.routes, offsets) trunk_reservations = [ diff --git a/tests/test_guard_registry.py b/tests/test_guard_registry.py index b64062792..9f12e2f23 100644 --- a/tests/test_guard_registry.py +++ b/tests/test_guard_registry.py @@ -87,7 +87,7 @@ def route_guard(graph, phase, *, routes): with pytest.raises(PhaseInvariantError, match="bad final geometry"): guards.run_validate_guards( - object(), "after final", include_final=True, offsets={} + SimpleNamespace(), "after final", include_final=True, offsets={} ) @@ -173,29 +173,6 @@ def test_owned_shared_opening_is_not_a_needless_right_entry_dive( assert not check_right_entry_drop_in_when_clear(graph, [route]) -def test_one_convergence_may_own_opposing_legs_on_its_shared_carrier() -> None: - first = RoutedPath( - Edge("first-source", "merge", "line"), - "line", - [(0.0, 0.0), (100.0, 0.0)], - ) - second = RoutedPath( - Edge("second-source", "merge", "line"), - "line", - [(80.0, 0.0), (20.0, 0.0)], - ) - - assert list( - guards.iter_opposing_line_overlaps(None, offsets={}, routes=[first, second]) - ) - first.convergence_plan_id = second.convergence_plan_id = "convergence" - first.convergence_owned_segment_ranks = (0,) - second.convergence_owned_segment_ranks = (0,) - assert not list( - guards.iter_opposing_line_overlaps(None, offsets={}, routes=[first, second]) - ) - - def _defined(module, prefix: str) -> set[str]: return { name diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index e2f2858bb..770ab2927 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -385,7 +385,7 @@ def crossings(observation) -> set[tuple[float, float]]: station_offsets=compute_station_offsets(graph), allow_convergence_clearance_requirements=True, ) - assert crossings(disabled) == {(1302.0, 398.0), (1600.5, 398.0)} + assert crossings(disabled) == {(1280.0, 338.0), (1600.5, 382.0)} def test_seed_15_shared_opening_is_line_name_independent() -> None: From a9bbcb69625c50f6a17ba04744543914a900e205 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 13:30:20 +0100 Subject: [PATCH 080/158] test(routing): refresh generated baselines for the reconciled engine [skip ci] The guard-trace golden for ambiguous_exit_continuation, the routing-gate coverage baseline, and the named direction-predicate count follow the reconciled routing code; two triage verdicts fall away because the corpus now exercises those dogleg fallback arms, and the validate-deferral flag joins the phase-state bookkeeping allowlist as pure observation. Co-Authored-By: Claude Fable 5 --- docs/dev/routing_gate_coverage.md | 768 +++++++++--------- .../fixtures/ambiguous_exit_continuation.json | 32 - .../data/routing_gate_coverage_baseline.json | 26 +- tests/data/routing_gate_triage.json | 8 - tests/test_direction_predicate_ratchet.py | 2 +- tests/test_phase_state_registry.py | 4 + 6 files changed, 420 insertions(+), 420 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 780c5b809..f47307765 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2320/3340** gates fully exercised (both/all arms hit by some fixture); **1020** gates have at least one un-exercised arm. +**2346/3384** gates fully exercised (both/all arms hit by some fixture); **1038** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **302** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **300** gaps carry a triage verdict. ## `arranger.py` @@ -139,7 +139,7 @@ Gates with an un-exercised arm: ## `convergences.py` -366/604 gates fully exercised. +364/606 gates fully exercised. Gates with an un-exercised arm: @@ -214,175 +214,179 @@ Gates with an un-exercised arm: | 1778 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1782` | | | 1886 | `if opening_follows_flank:` | `->L1887` | | | 1948 | `if landing.opening_turn_segment is None:` | `->L1949` | | -| 1984 | `landing.approach_axis is DemandAxis.X` | `->L1988` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | -| 1985 | `and landing.opening_turn_segment is not None` | `->L1988` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | -| 1990 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L1991`, `->L1992` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | -| 2065 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2074` | | -| 2075 | `if opening_segment is not None:` | `->L2086` | | -| 2126 | `axis is None` | `->L2129` | | -| 2171 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2172` | | -| 2178 | `if actual is None:` | `->L2179` | | -| 2428 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2429` | | -| 2470 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2473` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | -| 2471 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2473` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | -| 2513 | `if run is None:` | `->L2514` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2544 | `if require_clear_segments:` | `->L2570` | | -| 2601 | `if run is None:` | `->L2602` | | -| 2616 | `if obstacles:` | `->L2617` | | -| 2644 | `if run is None:` | `->L2645` | | -| 2691 | `if axis is None:` | `->L2692` | | -| 2733 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2734` | | -| 2743 | `if primary is None:` | `->L2744` | | -| 2756 | `or landing.opening_turn_segment is None` | `->L2758` | | -| 2769 | `if reseated is not None:` | `->L2752` | | -| 2809 | `if (` | `->L2815` | | -| 2817 | `for plan_rank, landing_rank in members:` | `->L2798`, `->L2818` | | -| 2820 | `if reseated is None:` | `->L2821`, `->L2822` | | -| 2839 | `if len(channel.line_ids) != 1:` | `->L2840` | | -| 2864 | `if (` | `->L2868` | | -| 2870 | `if endpoint is None:` | `->L2871` | | -| 2876 | `channel.flank_rank is not None` | `->L2881` | | -| 2881 | `if any(` | `->L2886` | | -| 2890 | `if moved is None:` | `->L2891` | | -| 2905 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2906` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2945 | `if reseated is None:` | `->L2946` | | -| 2951 | `if abs(reseated_opening - source.x) >= (` | `->L2927` | | -| 2956 | `if (` | `->L2961` | | -| 3090 | `if reseated is None:` | `->L3091` | | -| 3112 | `if moved_channels and all(` | `->L3035` | | -| 3168 | `if bypass_segment is None:` | `->L3169` | | -| 3185 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3186` | | -| 3192 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3193` | | -| 3200 | `if moved is None:` | `->L3201` | | -| 3222 | `if bypass_segment is None:` | `->L3223` | | -| 3272 | `for coordinate in candidates:` | `->L3246` | | -| 3273 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3274` | | -| 3281 | `if moved is None:` | `->L3282` | | -| 3289 | `if not moved_channels or any(` | `->L3296` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3301 | `if (` | `->L3305` | | -| 3366 | `obstacle_segment is None` | `->L3371` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 3367 | `or landing_segment is None` | `->L3371` | | -| 3382 | `if reseated is None:` | `->L3383` | | -| 3388 | `landing.member_id == plan.primary_trunk_member_id` | `->L3411` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 3389 | `and plan.trunk_axis is not None` | `->L3411` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 3390 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3411` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 3420 | `if (` | `->L3353` | | -| 3435 | `if axis is None:` | `->L3436` | | -| 3459 | `if coordinate is not None:` | `->L3464` | | -| 3501 | `if endpoint is None:` | `->L3502` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 3524 | `if plan.trunk_axis is None:` | `->L3525` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 3550 | `if coordinate is not None:` | `->L3556` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 3610 | `for seat, obstacle in obstacles:` | `->L-3595`, `->L3611` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 3612 | `if axis is None:` | `->L3613`, `->L3614` | | -| 3624 | `if lane is None:` | `->L3625`, `->L3626` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 3645 | `if flank_rank != 1:` | `->L3647` | | -| 3656 | `if fork is None:` | `->L3657`, `->L3665` | | -| 3733 | `if forked:` | `->L3734` | | -| 3734 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3735`, `->L3736` | | -| 3738 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3739` | | -| 3762 | `if forked:` | `->L3763`, `->L3764` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 3837 | `if endpoint is None:` | `->L3838` | | -| 3848 | `if coordinate is None:` | `->L3849` | | -| 3861 | `if reseated is not None:` | `->L3862`, `->L3865` | | -| 3908 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3956` | | -| 3986 | `if not (` | `->L3989` | | -| 4005 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4006` | | -| 4063 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4048` | | -| 4312 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4313` | | -| 4332 | `if any(` | `->L4337` | | -| 4340 | `if any(` | `->L4343` | | -| 4388 | `if axis is None:` | `->L4389` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 4530 | `if run is not None:` | `->L4581` | | -| 4657 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4658` | | -| 4757 | `if not landing_feasible(candidate_coordinate):` | `->L4758` | | -| 4767 | `if (` | `->L4771` | | -| 4839 | `if (` | `->L4843` | | -| 4908 | `if (` | `->L4916` | | -| 4965 | `if moved is None:` | `->L4966` | | -| 4995 | `if (` | `->L4999` | | -| 5095 | `if any(` | `->L5103` | | -| 5159 | `for fixed in fixed_channels:` | `->L5160` | | -| 5160 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5163`, `->L5164` | | -| 5167 | `if (` | `->L5172`, `->L5173` | | -| 5207 | `if opening_key in moved_openings:` | `->L5208` | | -| 5216 | `if moved is None:` | `->L5217` | | -| 5220 | `if not feasible:` | `->L5221` | | -| 5222 | `if not feasible:` | `->L5223` | | -| 5225 | `if (` | `->L5229` | | -| 5246 | `if any(` | `->L5253` | | -| 5254 | `if any(` | `->L5259` | | -| 5311 | `for coordinate in candidates:` | `->L5277` | | -| 5629 | `if not negative or not positive:` | `->L5630` | | -| 5689 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5690` | | -| 5694 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5702` | | -| 5722 | `if gap is None:` | `->L5723` | | -| 5733 | `if requirement is None:` | `->L5734` | | -| 5737 | `if current is None or requirement.required > current.required:` | `->L5679` | | -| 5753 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5755` | | -| 5759 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5760`, `->L5761` | | -| 5769 | `if requirement is None:` | `->L5770`, `->L5771` | | -| 5774 | `if current is None or requirement.required > current.required:` | `->L5752`, `->L5775` | | -| 5806 | `if (` | `->L5812` | | -| 5817 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5818`, `->L5819` | | -| 5827 | `if requirement is not None:` | `->L5790`, `->L5828` | | -| 5874 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5878` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 5881 | `if first_delta * second_delta < 0:` | `->L5882` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5892 | `if (` | `->L5904`, `->L5907` | | -| 5921 | `if opposing_approaches is not None:` | `->L5922` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 5966 | `if same_line and first_direction is not second_direction:` | `->L5971` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5972 | `if (` | `->L5999` | | -| 6019 | `if conflict is not None:` | `->L6020` | | -| 6029 | `if requirements:` | `->L6030`, `->L6032` | | -| 6067 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6068` | | -| 6074 | `if (` | `->L6085` | | -| 6085 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6088`, `->L6089` | | -| 6089 | `if any(` | `->L6094`, `->L6095` | | -| 6102 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6103` | | -| 6103 | `if any(` | `->L6108`, `->L6109` | | -| 6115 | `if _gap_channels_crowd(` | `->L6122` | | -| 6122 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6125`, `->L6126` | | -| 6126 | `if any(` | `->L6130`, `->L6131` | | -| 6147 | `if not plan.owns_geometry:` | `->L6148` | | -| 6211 | `if not plan.owns_geometry:` | `->L6212` | | -| 6235 | `owner_edge not in edge_ranks` | `->L6239` | | -| 6274 | `if not plan.owns_geometry:` | `->L6275` | | -| 6293 | `if ownership.edge in by_edge:` | `->L6294` | | -| 6421 | `for item in system_plans:` | `->L6422`, `->L6432` | | -| 6778 | `if not horizontal and not vertical:` | `->L6779` | | -| 6802 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6787` | | -| 6835 | `if axis.axis is DemandAxis.X:` | `->L6858` | | -| 6962 | `if not candidates:` | `->L6963` | | -| 6984 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L6987` | | -| 6987 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L6990` | | -| 6993 | `if horizontal:` | `->L6994` | | -| 7062 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7063` | | -| 7070 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7071` | | -| 7089 | `if actual is None:` | `->L7090` | | -| 7096 | `direction is not landing.approach_direction` | `->L7100` | | -| 7097 | `or handedness is not landing.corner_handedness` | `->L7100` | | -| 7098 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7100` | | -| 7119 | `opening is None` | `->L7123` | | -| 7120 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7123` | | -| 7121 | `or emitted_segment != landing.opening_turn_segment` | `->L7123` | | -| 7132 | `if query is None:` | `->L7133` | | -| 7138 | `if not plan.owns_geometry:` | `->L7139` | | -| 7148 | `if (` | `->L7162` | | -| 7166 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7171` | | -| 7189 | `if opening is None:` | `->L7190` | | -| 7190 | `if not clearance_pending:` | `->L7191`, `->L7206` | | -| 7198 | `landing.opening_turn_segment is not None` | `->L7206` | | -| 7204 | `if route.curve_radii is not None:` | `->L7206` | | -| 7272 | `if landing.opening_turn_coordinate is not None:` | `->L7280` | | -| 7288 | `if not clearance_pending and any(` | `->L7292` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 7317 | `if not plan.owns_geometry:` | `->L7318` | | -| 7328 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7329` | | -| 7338 | `if route is None:` | `->L7339` | | -| 7344 | `if (` | `->L7349` | | -| 7356 | `if any(` | `->L7360` | | -| 7380 | `if (` | `->L7389` | | -| 7395 | `if (` | `->L7406` | | -| 7422 | `if route is None or membership is None:` | `->L7423` | | -| 7428 | `if any(` | `->L7432` | | +| 1993 | `landing.approach_axis is DemandAxis.X` | `->L1997` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | +| 1994 | `and landing.opening_turn_segment is not None` | `->L1997` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | +| 1999 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L2000`, `->L2001` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | +| 2018 | `if reseated is None:` | `->L2019` | | +| 2024 | `if not moved:` | `->L2025` | | +| 2086 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2095` | | +| 2096 | `if opening_segment is not None:` | `->L2107` | | +| 2147 | `axis is None` | `->L2150` | | +| 2192 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2193` | | +| 2199 | `if actual is None:` | `->L2200` | | +| 2449 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2450` | | +| 2491 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2494` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | +| 2492 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2494` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | +| 2534 | `if run is None:` | `->L2535` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | +| 2565 | `if require_clear_segments:` | `->L2591` | | +| 2622 | `if run is None:` | `->L2623` | | +| 2637 | `if obstacles:` | `->L2638` | | +| 2665 | `if run is None:` | `->L2666` | | +| 2712 | `if axis is None:` | `->L2713` | | +| 2754 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2755` | | +| 2764 | `if primary is None:` | `->L2765` | | +| 2777 | `or landing.opening_turn_segment is None` | `->L2779` | | +| 2790 | `if reseated is not None:` | `->L2773` | | +| 2830 | `if (` | `->L2836` | | +| 2838 | `for plan_rank, landing_rank in members:` | `->L2819`, `->L2839` | | +| 2841 | `if reseated is None:` | `->L2842`, `->L2843` | | +| 2860 | `if len(channel.line_ids) != 1:` | `->L2861` | | +| 2885 | `if (` | `->L2889` | | +| 2891 | `if endpoint is None:` | `->L2892` | | +| 2897 | `channel.flank_rank is not None` | `->L2902` | | +| 2902 | `if any(` | `->L2907` | | +| 2911 | `if moved is None:` | `->L2912` | | +| 2926 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2927` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2952 | `if (` | `->L2960` | | +| 2966 | `if reseated is None:` | `->L2967`, `->L2968` | | +| 2972 | `if abs(reseated_opening - source.x) >= (` | `->L2948`, `->L2977` | | +| 2977 | `if (` | `->L2982`, `->L2986` | | +| 3111 | `if reseated is None:` | `->L3112` | | +| 3133 | `if moved_channels and all(` | `->L3056` | | +| 3189 | `if bypass_segment is None:` | `->L3190` | | +| 3206 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3207` | | +| 3213 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3214` | | +| 3221 | `if moved is None:` | `->L3222` | | +| 3243 | `if bypass_segment is None:` | `->L3244` | | +| 3293 | `for coordinate in candidates:` | `->L3267` | | +| 3294 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3295` | | +| 3302 | `if moved is None:` | `->L3303` | | +| 3310 | `if not moved_channels or any(` | `->L3317` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3322 | `if (` | `->L3326` | | +| 3387 | `obstacle_segment is None` | `->L3392` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3388 | `or landing_segment is None` | `->L3392` | | +| 3403 | `if reseated is None:` | `->L3404` | | +| 3409 | `landing.member_id == plan.primary_trunk_member_id` | `->L3432` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3410 | `and plan.trunk_axis is not None` | `->L3432` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3411 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3432` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3441 | `if (` | `->L3374` | | +| 3456 | `if axis is None:` | `->L3457` | | +| 3480 | `if coordinate is not None:` | `->L3485` | | +| 3522 | `if endpoint is None:` | `->L3523` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3545 | `if plan.trunk_axis is None:` | `->L3546` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3571 | `if coordinate is not None:` | `->L3577` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3631 | `for seat, obstacle in obstacles:` | `->L-3616`, `->L3632` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3633 | `if axis is None:` | `->L3634`, `->L3635` | | +| 3645 | `if lane is None:` | `->L3646`, `->L3647` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3666 | `if flank_rank != 1:` | `->L3668` | | +| 3677 | `if fork is None:` | `->L3678`, `->L3686` | | +| 3754 | `if forked:` | `->L3755` | | +| 3755 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3756`, `->L3757` | | +| 3759 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3760` | | +| 3783 | `if forked:` | `->L3784`, `->L3785` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3858 | `if endpoint is None:` | `->L3859` | | +| 3869 | `if coordinate is None:` | `->L3870` | | +| 3882 | `if reseated is not None:` | `->L3883`, `->L3886` | | +| 3929 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3977` | | +| 4007 | `if not (` | `->L4010` | | +| 4026 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4027` | | +| 4084 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4069` | | +| 4333 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4334` | | +| 4353 | `if any(` | `->L4358` | | +| 4361 | `if any(` | `->L4364` | | +| 4409 | `if axis is None:` | `->L4410` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4551 | `if run is not None:` | `->L4602` | | +| 4678 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4679` | | +| 4778 | `if not landing_feasible(candidate_coordinate):` | `->L4779` | | +| 4788 | `if (` | `->L4792` | | +| 4841 | `if moved_plan is None:` | `->L4842` | | +| 4860 | `if (` | `->L4864` | | +| 4929 | `if (` | `->L4937` | | +| 4986 | `if moved is None:` | `->L4987` | | +| 5016 | `if (` | `->L5020` | | +| 5116 | `if any(` | `->L5124` | | +| 5180 | `for fixed in fixed_channels:` | `->L5181` | | +| 5181 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5184`, `->L5185` | | +| 5188 | `if (` | `->L5193`, `->L5194` | | +| 5228 | `if opening_key in moved_openings:` | `->L5229` | | +| 5237 | `if moved is None:` | `->L5238` | | +| 5241 | `if not feasible:` | `->L5242` | | +| 5243 | `if not feasible:` | `->L5244` | | +| 5246 | `if (` | `->L5250` | | +| 5267 | `if any(` | `->L5274` | | +| 5275 | `if any(` | `->L5280` | | +| 5332 | `for coordinate in candidates:` | `->L5298` | | +| 5650 | `if not negative or not positive:` | `->L5651` | | +| 5710 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5711` | | +| 5715 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5723` | | +| 5743 | `if gap is None:` | `->L5744` | | +| 5754 | `if requirement is None:` | `->L5755` | | +| 5758 | `if current is None or requirement.required > current.required:` | `->L5700` | | +| 5774 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5776` | | +| 5780 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5781`, `->L5782` | | +| 5790 | `if requirement is None:` | `->L5791`, `->L5792` | | +| 5795 | `if current is None or requirement.required > current.required:` | `->L5773`, `->L5796` | | +| 5827 | `if (` | `->L5833` | | +| 5838 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5839`, `->L5840` | | +| 5848 | `if requirement is not None:` | `->L5811`, `->L5849` | | +| 5895 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5899` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 5902 | `if first_delta * second_delta < 0:` | `->L5903` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5913 | `if (` | `->L5925`, `->L5928` | | +| 5942 | `if opposing_approaches is not None:` | `->L5943` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 5987 | `if same_line and first_direction is not second_direction:` | `->L5992` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5993 | `if (` | `->L6020` | | +| 6040 | `if conflict is not None:` | `->L6041` | | +| 6050 | `if requirements:` | `->L6051`, `->L6053` | | +| 6088 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6089` | | +| 6095 | `if (` | `->L6106` | | +| 6106 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6109`, `->L6110` | | +| 6110 | `if any(` | `->L6115`, `->L6116` | | +| 6123 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6124` | | +| 6124 | `if any(` | `->L6129`, `->L6130` | | +| 6136 | `if _gap_channels_crowd(` | `->L6143` | | +| 6143 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6146`, `->L6147` | | +| 6147 | `if any(` | `->L6151`, `->L6152` | | +| 6168 | `if not plan.owns_geometry:` | `->L6169` | | +| 6232 | `if not plan.owns_geometry:` | `->L6233` | | +| 6256 | `owner_edge not in edge_ranks` | `->L6260` | | +| 6295 | `if not plan.owns_geometry:` | `->L6296` | | +| 6314 | `if ownership.edge in by_edge:` | `->L6315` | | +| 6442 | `for item in system_plans:` | `->L6443`, `->L6453` | | +| 6799 | `if not horizontal and not vertical:` | `->L6800` | | +| 6823 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6808` | | +| 6856 | `if axis.axis is DemandAxis.X:` | `->L6879` | | +| 6983 | `if not candidates:` | `->L6984` | | +| 7005 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7008` | | +| 7008 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7011` | | +| 7014 | `if horizontal:` | `->L7015` | | +| 7083 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7084` | | +| 7091 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7092` | | +| 7110 | `if actual is None:` | `->L7111` | | +| 7117 | `direction is not landing.approach_direction` | `->L7121` | | +| 7118 | `or handedness is not landing.corner_handedness` | `->L7121` | | +| 7119 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7121` | | +| 7140 | `opening is None` | `->L7144` | | +| 7141 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7144` | | +| 7142 | `or emitted_segment != landing.opening_turn_segment` | `->L7144` | | +| 7153 | `if query is None:` | `->L7154` | | +| 7159 | `if not plan.owns_geometry:` | `->L7160` | | +| 7169 | `if (` | `->L7183` | | +| 7187 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7192` | | +| 7210 | `if opening is None:` | `->L7211` | | +| 7211 | `if not clearance_pending:` | `->L7212`, `->L7227` | | +| 7219 | `landing.opening_turn_segment is not None` | `->L7227` | | +| 7225 | `if route.curve_radii is not None:` | `->L7227` | | +| 7293 | `if landing.opening_turn_coordinate is not None:` | `->L7301` | | +| 7309 | `if not clearance_pending and any(` | `->L7313` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7338 | `if not plan.owns_geometry:` | `->L7339` | | +| 7349 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7350` | | +| 7359 | `if route is None:` | `->L7360` | | +| 7365 | `if (` | `->L7370` | | +| 7377 | `if any(` | `->L7381` | | +| 7401 | `if (` | `->L7410` | | +| 7416 | `if (` | `->L7427` | | +| 7443 | `if route is None or membership is None:` | `->L7444` | | +| 7449 | `if any(` | `->L7453` | | ## `core.py` @@ -771,219 +775,233 @@ Gates with an un-exercised arm: ## `member_geometry.py` -108/166 gates fully exercised. +114/173 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 263 | `if (` | `->L271` | | -| 278 | `if (` | `->L284`, `->L285` | | -| 312 | `for (` | `->L319`, `->L332` | | -| 319 | `if (` | `->L323`, `->L324` | | -| 330 | `if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:` | `->L312`, `->L331` | | -| 335 | `before is None` | `->L336`, `->L340` | | -| 336 | `or after is None` | `->L337`, `->L340` | | -| 337 | `or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L338`, `->L340` | | -| 338 | `or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L340`, `->L341` | | -| 391 | `if not any(` | `->L396` | | -| 430 | `if settled_x is None:` | `->L431`, `->L432` | | -| 435 | `if not moved_ranks:` | `->L438` | | -| 456 | `if not changed:` | `->L458` | | -| 478 | `if run_direction is None or turn_direction is None:` | `->L479` | | -| 480 | `if (run_direction in {Direction.R, Direction.L}) == (` | `->L483` | | -| 492 | `if not candidate_ranks:` | `->L493` | | -| 617 | `if not section_ids:` | `->L618` | | -| 719 | `if ctx.exit_turns is None or not pending_plan_ids:` | `->L720` | | -| 877 | `if membership is None or membership.assignment is None:` | `->L878` | | -| 884 | `if allocated is None:` | `->L885` | | -| 927 | `if source is None or source is route:` | `->L929` | | -| 957 | `if target.section_id is None:` | `->L958` | | -| 983 | `if route is None:` | `->L984` | | -| 993 | `if membership is not None:` | `->L996` | | -| 1006 | `if route is None:` | `->L1007` | | -| 1042 | `if edge is None or family_id is None:` | `->L1043` | | -| 1120 | `if channel is None:` | `->L1121` | | -| 1123 | `if claim in channel_claims:` | `->L1124` | | -| 1195 | `if direction not in (Direction.U, Direction.D):` | `->L1196` | | -| 1198 | `if target.section_id is None:` | `->L1199` | | -| 1283 | `if route.exit_lane_transition_plan_id is not None:` | `->L1284` | | -| 1285 | `if route.fan_plan_id is not None or route.fan_route_emitter is not None:` | `->L1286` | | -| 1287 | `if convergence_owns_segment_boundary(route, segment_rank):` | `->L1288` | | -| 1347 | `if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:` | `->L1348` | **needs-review** -- _candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable. | -| 1447 | `if _planner_owns_channel(` | `->L1450` | | -| 1450 | `if not ctx.validate_final_route_frames:` | `->L1451`, `->L1452` | | -| 1456 | `if not _candidate_clears_runway(` | `->L1459` | | -| 1459 | `if not ctx.validate_final_route_frames:` | `->L1460`, `->L1461` | | -| 1497 | `if abs(channel.x - target) <= COORD_TOLERANCE:` | `->L1499` | **needs-review** -- _align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored. | -| 1522 | `if coordinate is not None:` | `->L1477`, `->L1523` | | -| 1594 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1595` | | -| 1851 | `if radii is not None:` | `->L1856` | | -| 1852 | `if 0 <= rank - 1 < len(radii):` | `->L1854` | | -| 1854 | `if rank < len(radii):` | `->L1856` | | -| 1893 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1876` | | -| 1961 | `if movable_run:` | `->L1962` | | -| 2012 | `if context is not None:` | `->L2027` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | -| 2028 | `if key in ctx.skip_edges:` | `->L2029` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | -| 2031 | `if edge is None:` | `->L2032` | | -| 2035 | `if family_id is None:` | `->L2036` | | -| 2058 | `if system_id not in failures:` | `->L2062` | | -| 2361 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2362` | | -| 2367 | `if actual != (channel.start, channel.end):` | `->L2368` | | -| 2371 | `if (` | `->L2376` | | -| 2390 | `if radius_index >= len(radii):` | `->L2391` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | -| 2397 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2398` | | -| 2402 | `if radius_index + 2 >= len(route.points):` | `->L2403` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | -| 2418 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2419` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | +| 264 | `if (` | `->L272` | | +| 279 | `if (` | `->L285`, `->L286` | | +| 313 | `for (` | `->L320`, `->L333` | | +| 320 | `if (` | `->L324`, `->L325` | | +| 331 | `if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:` | `->L313`, `->L332` | | +| 336 | `before is None` | `->L337`, `->L341` | | +| 337 | `or after is None` | `->L338`, `->L341` | | +| 338 | `or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L339`, `->L341` | | +| 339 | `or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L341`, `->L342` | | +| 392 | `if not any(` | `->L397` | | +| 431 | `if settled_x is None:` | `->L432`, `->L433` | | +| 436 | `if not moved_ranks:` | `->L439` | | +| 457 | `if not changed:` | `->L459` | | +| 479 | `if run_direction is None or turn_direction is None:` | `->L480` | | +| 481 | `if (run_direction in {Direction.R, Direction.L}) == (` | `->L484` | | +| 493 | `if not candidate_ranks:` | `->L494` | | +| 618 | `if not section_ids:` | `->L619` | | +| 720 | `if ctx.exit_turns is None or not pending_plan_ids:` | `->L721` | | +| 878 | `if membership is None or membership.assignment is None:` | `->L879` | | +| 885 | `if allocated is None:` | `->L886` | | +| 928 | `if source is None or source is route:` | `->L930` | | +| 958 | `if target.section_id is None:` | `->L959` | | +| 984 | `if route is None:` | `->L985` | | +| 994 | `if membership is not None:` | `->L997` | | +| 1007 | `if route is None:` | `->L1008` | | +| 1043 | `if edge is None or family_id is None:` | `->L1044` | | +| 1121 | `if channel is None:` | `->L1122` | | +| 1124 | `if claim in channel_claims:` | `->L1125` | | +| 1196 | `if direction not in (Direction.U, Direction.D):` | `->L1197` | | +| 1199 | `if target.section_id is None:` | `->L1200` | | +| 1284 | `if route.exit_lane_transition_plan_id is not None:` | `->L1285` | | +| 1286 | `if route.fan_plan_id is not None or route.fan_route_emitter is not None:` | `->L1287` | | +| 1288 | `if convergence_owns_segment_boundary(route, segment_rank):` | `->L1289` | | +| 1348 | `if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:` | `->L1349` | **needs-review** -- _candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable. | +| 1448 | `if _planner_owns_channel(` | `->L1451` | | +| 1451 | `if not ctx.validate_final_route_frames:` | `->L1452`, `->L1453` | | +| 1457 | `if not _candidate_clears_runway(` | `->L1460` | | +| 1460 | `if not ctx.validate_final_route_frames:` | `->L1461`, `->L1462` | | +| 1498 | `if abs(channel.x - target) <= COORD_TOLERANCE:` | `->L1500` | **needs-review** -- _align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored. | +| 1523 | `if coordinate is not None:` | `->L1478`, `->L1524` | | +| 1595 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1596` | | +| 1852 | `if radii is not None:` | `->L1857` | | +| 1853 | `if 0 <= rank - 1 < len(radii):` | `->L1855` | | +| 1855 | `if rank < len(radii):` | `->L1857` | | +| 1894 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1877` | | +| 1926 | `if all(` | `->L1917` | | +| 2003 | `if movable_run:` | `->L2004` | | +| 2054 | `if context is not None:` | `->L2069` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | +| 2070 | `if key in ctx.skip_edges:` | `->L2071` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | +| 2073 | `if edge is None:` | `->L2074` | | +| 2077 | `if family_id is None:` | `->L2078` | | +| 2100 | `if system_id not in failures:` | `->L2104` | | +| 2408 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2409` | | +| 2414 | `if actual != (channel.start, channel.end):` | `->L2415` | | +| 2418 | `if (` | `->L2423` | | +| 2437 | `if radius_index >= len(radii):` | `->L2438` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | +| 2444 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2445` | | +| 2449 | `if radius_index + 2 >= len(route.points):` | `->L2450` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | +| 2465 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2466` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | ## `normalize.py` -400/540 gates fully exercised. +422/575 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 192 | `if s.bbox_w <= 0:` | `->L193` | **defensive** -- Degenerate-bbox guard in _section_intrudes: a laid-out section always has bbox_w > 0; the skip arm guards a zero/negative-width section the layout never produces. | -| 239 | `if mid - half < gap_left - COORD_TOLERANCE:` | `->L240` | | -| 241 | `if mid + half > gap_right + COORD_TOLERANCE:` | `->L242` | | -| 421 | `if abs(overlap) > COORD_TOLERANCE:` | `->L422` | **defensive** -- The symmetric-divergence recognizer rejects opposite vertical legs whose spans overlap instead of meeting at one endpoint. Corpus candidates reaching this helper are same-source branch openings and therefore meet at the shared turn Y; the overlapping arm is a defensive rejection for malformed or independently routed channels. | -| 427 | `if channel.idx == 0:` | `->L428` | **defensive** -- A declared gap channel participating in a same-source divergence follows the branch's horizontal opening and therefore cannot be the route's first segment. The zero-index arm defensively rejects a vertical-first route shape. | -| 432 | `if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:` | `->L433` | **defensive** -- The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint. | -| 438 | `if a_trunk is None or b_trunk is None:` | `->L439` | **defensive** -- A symmetric divergence is considered only for declared gap channels produced by a same-source branch opening. Those channels follow a horizontal opening run, so both opening trunks resolve; the missing-trunk arm defensively rejects a different route shape. | -| 513 | `if not chans:` | `->L514` | | -| 624 | `for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):` | `->L627` | | -| 657 | `if ctx.exit_turns is None:` | `->L658` | | -| 662 | `assignment is None` | `->L667` | | -| 664 | `or assignment.turn_direction is None` | `->L667` | | -| 665 | `or len(route.points) < 3` | `->L667` | | -| 793 | `if gap_right <= gap_left:` | `->L794` | | -| 835 | `if ctx.exit_turns is None:` | `->L836` | | -| 853 | `if route.curve_radii is None or membership is None:` | `->L854` | **defensive** -- A validation-eligible settled exit-turn route is emitted from its member plan with explicit radii and membership in the same exit-turn execution. Missing either reports incomplete engine ownership; both arms are exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 858 | `if planned_offsets is None:` | `->L859` | | -| 864 | `if allocated_offsets is None or allocated_bases is None:` | `->L865` | **defensive** -- A validation-eligible settled exit turn must publish both offset and base tuples before emission. Missing either is an engine-contract violation exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 881 | `dx is None` | `->L886` | **defensive** -- Every validation-eligible settled exit-turn corner must retain its allocated or planned offset. An absent value is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 882 | `or base_radius is None` | `->L886` | **defensive** -- Every validation-eligible exit-turn corner must retain the base radius paired with its offset. An absent base is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 883 | `or not 0 <= radius_index < len(route.curve_radii)` | `->L886` | **defensive** -- A settled channel rank identifies the two flanking radii on its emitted route. An out-of-range index is malformed ownership metadata, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 884 | `or radius_index + 2 >= len(route.points)` | `->L886` | **defensive** -- A settled exit-turn radius must retain all three defining points. Production routes have point-derived radius counts; the point-index case in test_gap_plan_radius_validator_rejects_incomplete_ownership exercises the attributed failure. | -| 894 | `if (` | `->L898` | **defensive** -- The settled exit-turn radius mismatch raises only after construction or a later pass changes a recorded planned corner without updating its concentric inputs. Valid production derives both values together; test_gap_plan_validator_rejects_a_changed_corner_radius exercises both failure flanks. | -| 939 | `if gap_right <= gap_left:` | `->L940` | | -| 1052 | `if rank > 0:` | `->L1057` | | -| 1055 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1057` | | -| 1057 | `if rank + 2 < len(route.points):` | `->L1062` | | -| 1060 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1062` | | -| 1317 | `if not reference_fits(lower):` | `->L1318` | | -| 1383 | `go is not None` | `->L1389` | | -| 1384 | `and gt is not None` | `->L1389` | | -| 1421 | `if len(pts) < 2:` | `->L1422` | | -| 1437 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1438` | | -| 1514 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1515` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | -| 1534 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1535` | | -| 1538 | `if None not in convergence_plan_ids and len(convergence_plan_ids) == 1:` | `->L1539`, `->L1540` | | -| 1540 | `if ctx.validate_final_route_frames:` | `->L1541`, `->L1550` | | -| 1596 | `if channel is None:` | `->L1597` | | -| 1669 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1670` | | -| 1675 | `if ref is not None:` | `->L1676` | | -| 1746 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1747` | | -| 1750 | `if movable_channels:` | `->L1746`, `->L1751` | | -| 1788 | `if not downs or not ups:` | `->L1790` | | -| 1791 | `for descent in downs:` | `->L-1757`, `->L1792` | | -| 1793 | `if col in moved:` | `->L1794`, `->L1795` | | -| 1796 | `for up in ups:` | `->L1797`, `->L1806` | | -| 1797 | `if up.route.line_id != descent.route.line_id:` | `->L1798`, `->L1799` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | -| 1799 | `if abs(up.x - descent.x) > radius:` | `->L1800`, `->L1801` | | -| 1802 | `if overlap <= COORD_TOLERANCE:` | `->L1803`, `->L1804` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | -| 1806 | `if target_x is None:` | `->L1807`, `->L1808` | | -| 1809 | `for ch in downs:` | `->L1791`, `->L1810` | | -| 1810 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1809`, `->L1811` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | -| 1837 | `if k == desc.idx + 1:` | `->L1836` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | -| 1889 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1890` | | -| 1901 | `if any(` | `->L1911` | | -| 1931 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1935` | | -| 1932 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1935` | | -| 1933 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1935` | | -| 1952 | `if source_col is None:` | `->L1953` | | -| 1968 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1969` | | -| 1985 | `if not sibling_xs:` | `->L1986` | | -| 1988 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L1989` | | -| 1991 | `if _section_intrudes(` | `->L1998` | | -| 2123 | `for _ in range(max(1, len(buckets))):` | `->L-2069` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2141 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2143` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | -| 2146 | `for _step in range(64):` | `->L2147`, `->L2154` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | -| 2150 | `if resolved < common:` | `->L2151`, `->L2153` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | -| 2161 | `if not changed:` | `->L2123` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2199 | `if ch.route.convergence_plan_id is not None:` | `->L2200` | | -| 2209 | `if _planner_owns_channel(ch) and (` | `->L2212` | | -| 2283 | `if opposing_bundle is not None and {` | `->L2286` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | -| 2294 | `if any(` | `->L2304` | | -| 2411 | `if any(` | `->L2417` | | -| 2454 | `if has_immovable_planned_channel and any(` | `->L2459` | | -| 2514 | `if any(` | `->L2518` | | -| 2519 | `if not crossing:` | `->L2526` | | -| 2529 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2530`, `->L2534` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | -| 2534 | `for r, k, _y in crossing:` | `->L2491`, `->L2535` | | -| 2602 | `if ctx.convergences is None:` | `->L2603` | | -| 2610 | `or entry is None` | `->L2616` | | -| 2611 | `or port is None` | `->L2616` | | -| 2612 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2616` | | -| 2685 | `if rp.curve_radii is None:` | `->L2686` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | -| 2896 | `if route.curve_radii is None:` | `->L2897` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | -| 3043 | `if any(` | `->L3047` | | -| 3141 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3162` | | -| 3190 | `if not verticals:` | `->L3191` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | -| 3206 | `if rp.curve_radii is not None:` | `->L3208` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | -| 3426 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3420` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | -| 3456 | `if feats is None:` | `->L3457` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | -| 3593 | `if (` | `->L3597` | | -| 3605 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3606` | | -| 3653 | `if len(trunks) < 2:` | `->L3654`, `->L3655` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | -| 3657 | `for grp in groups:` | `->L3658`, `->L3676` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | -| 3658 | `if len({id(t.route) for t in grp}) < 2:` | `->L3659`, `->L3660` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | -| 3660 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3661`, `->L3662` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | -| 3662 | `for sign in (1, -1):` | `->L3657`, `->L3663` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | -| 3665 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3666`, `->L3667` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | -| 3674 | `if best < cur:` | `->L3662`, `->L3675` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | -| 3744 | `if (` | `->L3749` | | -| 3806 | `band is not None` | `->L3811` | | -| 3807 | `and band.boundary is None` | `->L3808` | | -| 3808 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3810`, `->L3811` | | -| 3927 | `elif down_ok and (not up_ok or prefer_down):` | `->L3929` | **defensive** -- Same-line dogleg tie / out-of-band fallback, reached only after the L1296 if is false, which a clean topology never produces (see that gate): the true arm (->1299, lean down on a tie) needs a crossing-free tie that requires degenerate risers, and the false arm (->1300) needs down_ok False, which the regime's fixed inter-row band (down_room >= min_sep) never yields. | -| 3929 | `elif up_ok:` | `->L3930`, `->L3932` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | -| 3934 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L3935` | | -| 3989 | `if (cross_below is not None and cross_above is not None) or not (` | `->L3994` | | -| 3992 | `if reconcile_owned_corridor:` | `->L3994` | | -| 3995 | `if cross_below is not None and cross_above is not None:` | `->L3999` | | -| 3996 | `if reconcile_owned_corridor:` | `->L3998` | | -| 4006 | `elif below_ok and (not above_ok or prefer_below):` | `->L4008` | **defensive** -- Distinct-line dogleg tie fallback, reached only after L1341 is false (a tie), which a clean topology never produces (see that gate). The true arm (->1344, lean below) would fire on such a tie; the false arm (->1345) is unreachable because below_ok always holds and prefer_below is always true (t.y == hit.y in this regime). | -| 4008 | `elif above_ok:` | `->L4009`, `->L4011` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | -| 4011 | `if reconcile_owned_corridor:` | `->L4012`, `->L4013` | | -| 4043 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4062` | | -| 4066 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4068` | | -| 4181 | `if band is None:` | `->L4182` | | -| 4187 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4191` | | -| 4213 | `and crossed[0] < span[1]` | `->L4215` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4323 | `if i in relocated:` | `->L4324` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4342 | `if (` | `->L4347` | | -| 4364 | `if any(` | `->L4368` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4445 | `if sg[0].sign_x != t.sign_x:` | `->L4446` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4481 | `and base_in is not None` | `->L4495` | | -| 4482 | `and base_out is not None` | `->L4495` | | -| 4498 | `if rp.curve_radii is None:` | `->L4499` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4510 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4512` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4512 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4455` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4571 | `if down is None or len(up.points) < 2:` | `->L4572` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4625 | `if len(targets) != 1:` | `->L4626` | | -| 4635 | `if col is None:` | `->L4636` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 4676 | `if not 0 <= far < len(pts):` | `->L4677` | | -| 4679 | `if abs(dx) > COORD_TOLERANCE:` | `->L4673` | | -| 4681 | `if not votes:` | `->L4682` | | -| 4787 | `if rep_x[a] != rep_x[b]:` | `->L4789` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4817 | `if rp.curve_radii is None:` | `->L4818` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 4820 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L4821` | | -| 4844 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-4794` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4874 | `if anchor_section_id is not None and anchor_side is not None:` | `->L4876` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 4929 | `elif right_ok:` | `->L4932` | | -| 4978 | `if s.bbox_w <= 0:` | `->L4979` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 191 | `if s.bbox_w <= 0:` | `->L192` | **defensive** -- Degenerate-bbox guard in _section_intrudes: a laid-out section always has bbox_w > 0; the skip arm guards a zero/negative-width section the layout never produces. | +| 238 | `if mid - half < gap_left - COORD_TOLERANCE:` | `->L239` | | +| 240 | `if mid + half > gap_right + COORD_TOLERANCE:` | `->L241` | | +| 420 | `if abs(overlap) > COORD_TOLERANCE:` | `->L421` | **defensive** -- The symmetric-divergence recognizer rejects opposite vertical legs whose spans overlap instead of meeting at one endpoint. Corpus candidates reaching this helper are same-source branch openings and therefore meet at the shared turn Y; the overlapping arm is a defensive rejection for malformed or independently routed channels. | +| 426 | `if channel.idx == 0:` | `->L427` | **defensive** -- A declared gap channel participating in a same-source divergence follows the branch's horizontal opening and therefore cannot be the route's first segment. The zero-index arm defensively rejects a vertical-first route shape. | +| 431 | `if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:` | `->L432` | **defensive** -- The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint. | +| 437 | `if a_trunk is None or b_trunk is None:` | `->L438` | **defensive** -- A symmetric divergence is considered only for declared gap channels produced by a same-source branch opening. Those channels follow a horizontal opening run, so both opening trunks resolve; the missing-trunk arm defensively rejects a different route shape. | +| 512 | `if not chans:` | `->L513` | | +| 656 | `if ctx.exit_turns is None:` | `->L657` | | +| 661 | `assignment is None` | `->L666` | | +| 663 | `or assignment.turn_direction is None` | `->L666` | | +| 664 | `or len(route.points) < 3` | `->L666` | | +| 792 | `if gap_right <= gap_left:` | `->L793` | | +| 834 | `if ctx.exit_turns is None:` | `->L835` | | +| 852 | `if route.curve_radii is None or membership is None:` | `->L853` | **defensive** -- A validation-eligible settled exit-turn route is emitted from its member plan with explicit radii and membership in the same exit-turn execution. Missing either reports incomplete engine ownership; both arms are exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 857 | `if planned_offsets is None:` | `->L858` | | +| 863 | `if allocated_offsets is None or allocated_bases is None:` | `->L864` | **defensive** -- A validation-eligible settled exit turn must publish both offset and base tuples before emission. Missing either is an engine-contract violation exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 880 | `dx is None` | `->L885` | **defensive** -- Every validation-eligible settled exit-turn corner must retain its allocated or planned offset. An absent value is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 881 | `or base_radius is None` | `->L885` | **defensive** -- Every validation-eligible exit-turn corner must retain the base radius paired with its offset. An absent base is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 882 | `or not 0 <= radius_index < len(route.curve_radii)` | `->L885` | **defensive** -- A settled channel rank identifies the two flanking radii on its emitted route. An out-of-range index is malformed ownership metadata, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 883 | `or radius_index + 2 >= len(route.points)` | `->L885` | **defensive** -- A settled exit-turn radius must retain all three defining points. Production routes have point-derived radius counts; the point-index case in test_gap_plan_radius_validator_rejects_incomplete_ownership exercises the attributed failure. | +| 893 | `if (` | `->L897` | **defensive** -- The settled exit-turn radius mismatch raises only after construction or a later pass changes a recorded planned corner without updating its concentric inputs. Valid production derives both values together; test_gap_plan_validator_rejects_a_changed_corner_radius exercises both failure flanks. | +| 938 | `if gap_right <= gap_left:` | `->L939` | | +| 1051 | `if rank > 0:` | `->L1056` | | +| 1054 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1056` | | +| 1056 | `if rank + 2 < len(route.points):` | `->L1061` | | +| 1059 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1061` | | +| 1316 | `if not reference_fits(lower):` | `->L1317` | | +| 1382 | `go is not None` | `->L1388` | | +| 1383 | `and gt is not None` | `->L1388` | | +| 1420 | `if len(pts) < 2:` | `->L1421` | | +| 1436 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1437` | | +| 1513 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1514` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | +| 1533 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1534` | | +| 1541 | `if None in convergence_plan_ids or len(convergence_plan_ids) != 1:` | `->L1542`, `->L1553` | | +| 1542 | `if ctx.validate_final_route_frames:` | `->L1543`, `->L1552` | | +| 1559 | `if _snap_reverses_adjacent_run(ch, ref_x):` | `->L1560` | | +| 1600 | `if channel is None:` | `->L1601` | | +| 1673 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1674` | | +| 1679 | `if ref is not None:` | `->L1680` | | +| 1750 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1751` | | +| 1754 | `if movable_channels:` | `->L1750`, `->L1755` | | +| 1792 | `if not downs or not ups:` | `->L1794` | | +| 1795 | `for descent in downs:` | `->L-1761`, `->L1796` | | +| 1797 | `if col in moved:` | `->L1798`, `->L1799` | | +| 1800 | `for up in ups:` | `->L1801`, `->L1810` | | +| 1801 | `if up.route.line_id != descent.route.line_id:` | `->L1802`, `->L1803` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | +| 1803 | `if abs(up.x - descent.x) > radius:` | `->L1804`, `->L1805` | | +| 1806 | `if overlap <= COORD_TOLERANCE:` | `->L1807`, `->L1808` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | +| 1810 | `if target_x is None:` | `->L1811`, `->L1812` | | +| 1813 | `for ch in downs:` | `->L1795`, `->L1814` | | +| 1814 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1813`, `->L1815` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | +| 1841 | `if k == desc.idx + 1:` | `->L1840` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | +| 1893 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1894` | | +| 1905 | `if any(` | `->L1915` | | +| 1935 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1939` | | +| 1936 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1939` | | +| 1937 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1939` | | +| 1956 | `if source_col is None:` | `->L1957` | | +| 1972 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1973` | | +| 1989 | `if not sibling_xs:` | `->L1990` | | +| 1992 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L1993` | | +| 1995 | `if _section_intrudes(` | `->L2002` | | +| 2127 | `for _ in range(max(1, len(buckets))):` | `->L-2073` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2145 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2147` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | +| 2150 | `for _step in range(64):` | `->L2151`, `->L2158` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | +| 2154 | `if resolved < common:` | `->L2155`, `->L2157` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | +| 2165 | `if not changed:` | `->L2127` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2203 | `if ch.route.convergence_plan_id is not None:` | `->L2204` | | +| 2213 | `if _planner_owns_channel(ch) and (` | `->L2216` | | +| 2287 | `if opposing_bundle is not None and {` | `->L2290` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | +| 2298 | `if any(` | `->L2308` | | +| 2415 | `if any(` | `->L2421` | | +| 2458 | `if has_immovable_planned_channel and any(` | `->L2463` | | +| 2518 | `if any(` | `->L2522` | | +| 2523 | `if not crossing:` | `->L2530` | | +| 2533 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2534`, `->L2538` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | +| 2538 | `for r, k, _y in crossing:` | `->L2495`, `->L2539` | | +| 2606 | `if ctx.convergences is None:` | `->L2607` | | +| 2614 | `or entry is None` | `->L2620` | | +| 2615 | `or port is None` | `->L2620` | | +| 2616 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2620` | | +| 2689 | `if rp.curve_radii is None:` | `->L2690` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | +| 2718 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2719` | | +| 2723 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2724` | | +| 2924 | `if route.curve_radii is None:` | `->L2925` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | +| 3071 | `if any(` | `->L3075` | | +| 3169 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3190` | | +| 3218 | `if not verticals:` | `->L3219` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | +| 3234 | `if rp.curve_radii is not None:` | `->L3236` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | +| 3454 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3448` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | +| 3484 | `if feats is None:` | `->L3485` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | +| 3621 | `if (` | `->L3625` | | +| 3633 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3634` | | +| 3681 | `if len(trunks) < 2:` | `->L3682`, `->L3683` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | +| 3685 | `for grp in groups:` | `->L3686`, `->L3704` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | +| 3686 | `if len({id(t.route) for t in grp}) < 2:` | `->L3687`, `->L3688` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | +| 3688 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3689`, `->L3690` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | +| 3690 | `for sign in (1, -1):` | `->L3685`, `->L3691` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | +| 3693 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3694`, `->L3695` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | +| 3702 | `if best < cur:` | `->L3690`, `->L3703` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | +| 3772 | `if (` | `->L3777` | | +| 3834 | `band is not None` | `->L3839` | | +| 3835 | `and band.boundary is None` | `->L3836` | | +| 3836 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3838`, `->L3839` | | +| 3932 | `if band is not None:` | `->L3937` | | +| 3956 | `elif up_ok:` | `->L3959` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | +| 3961 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L3962` | | +| 4002 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4011` | | +| 4005 | `if reconcile_owned_corridor:` | `->L4011` | | +| 4012 | `if cross_below is not None and cross_above is not None:` | `->L4020` | | +| 4013 | `if reconcile_owned_corridor:` | `->L4019` | | +| 4027 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4028` | | +| 4031 | `elif above_ok:` | `->L4034` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | +| 4034 | `if reconcile_owned_corridor:` | `->L4035`, `->L4038` | | +| 4099 | `if (` | `->L4103` | | +| 4105 | `if changed:` | `->L4106` | | +| 4135 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4155` | | +| 4137 | `if target_y is None:` | `->L4138` | | +| 4140 | `if (` | `->L4151` | | +| 4159 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4161` | | +| 4274 | `if band is None:` | `->L4275` | | +| 4280 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4284` | | +| 4306 | `and crossed[0] < span[1]` | `->L4308` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4416 | `if i in relocated:` | `->L4417` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4435 | `if (` | `->L4440` | | +| 4457 | `if any(` | `->L4461` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4462 | `if any(` | `->L4468` | | +| 4494 | `if target is None:` | `->L4495` | | +| 4538 | `if sg[0].sign_x != t.sign_x:` | `->L4539` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4574 | `and base_in is not None` | `->L4588` | | +| 4575 | `and base_out is not None` | `->L4588` | | +| 4591 | `if rp.curve_radii is None:` | `->L4592` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4603 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4605` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4605 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4548` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4680 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4683` | | +| 4684 | `if leg_is_plan_stated(mover):` | `->L4685` | | +| 4687 | `for delta in (step, -step):` | `->L4654` | | +| 4689 | `if all(` | `->L4687` | | +| 4753 | `if down is None or len(up.points) < 2:` | `->L4754` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4807 | `if len(targets) != 1:` | `->L4808` | | +| 4817 | `if col is None:` | `->L4818` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 4858 | `if not 0 <= far < len(pts):` | `->L4859` | | +| 4861 | `if abs(dx) > COORD_TOLERANCE:` | `->L4855` | | +| 4863 | `if not votes:` | `->L4864` | | +| 4969 | `if rep_x[a] != rep_x[b]:` | `->L4971` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4999 | `if rp.curve_radii is None:` | `->L5000` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5002 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5003` | | +| 5026 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-4976` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5056 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5058` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5111 | `elif right_ok:` | `->L5114` | | +| 5160 | `if s.bbox_w <= 0:` | `->L5161` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 5548 | `if not blockers:` | `->L5549` | | ## `offsets.py` @@ -1179,9 +1197,9 @@ Gates with an un-exercised arm: | 412 | `if realised is None:` | `->L413` | **defensive** -- realise_reservation returns None only for a canvas-side corridor measured without canvas bounds; this loop has already narrowed to row-gap or column-gap claims, which always measure. The arm satisfies the optional return type rather than a reachable state. | | 521 | `if target is None or not target.is_port or target.section_id is None:` | `->L522` | | | 525 | `if start[0] != end[0] or final_start[1] != final_end[1]:` | `->L526` | | -| 555 | `if realised is None:` | `->L556` | | -| 612 | `if band is None:` | `->L613` | **defensive** -- Every record for one edge and segment rank observes the same physical route segment. Disjoint clearance intervals for that key therefore require a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory corridor bounds. | -| 616 | `if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:` | `->L617` | **defensive** -- Repeated observations of one route-segment claim project the same declared gap coordinate through the same member translation. A wider allocation range therefore requires a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory exact allocations. | +| 553 | `if realised is None:` | `->L554` | | +| 610 | `if band is None:` | `->L611` | **defensive** -- Every record for one edge and segment rank observes the same physical route segment. Disjoint clearance intervals for that key therefore require a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory corridor bounds. | +| 614 | `if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:` | `->L615` | **defensive** -- Repeated observations of one route-segment claim project the same declared gap coordinate through the same member translation. A wider allocation range therefore requires a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory exact allocations. | ## `reversal.py` diff --git a/tests/data/guard_golden/tests/fixtures/ambiguous_exit_continuation.json b/tests/data/guard_golden/tests/fixtures/ambiguous_exit_continuation.json index 42d592f8d..863575a30 100644 --- a/tests/data/guard_golden/tests/fixtures/ambiguous_exit_continuation.json +++ b/tests/data/guard_golden/tests/fixtures/ambiguous_exit_continuation.json @@ -189,7 +189,6 @@ "_guard_no_station_overlap|after final", "_guard_no_coincident_station_coords|after final", "_guard_fork_join_hub_centreline_agree|after final", - "_guard_no_line_crosses_non_consumer|after final", "_guard_sparse_loop_station_clears_column_neighbour|after final", "_guard_station_x_column_drift|after final", "_guard_planned_fan_frame_realised|after final", @@ -223,39 +222,8 @@ "_guard_section_top_padding|after final", "_guard_section_bottom_padding|after final", "_guard_terminus_icons_within_bbox|after final", - "_guard_inter_section_routes_in_row_band|after final", - "_guard_topmost_row_top_entry_hugs_section|after final", "_guard_title_band_clearance|after final", - "_guard_off_track_output_clears_non_producer|after final", - "_guard_tb_exit_corner_column_order|after final", - "_guard_no_split_same_line_fanout_descents|after final", - "_guard_no_distinct_line_fanout_crossing|after final", - "_guard_fan_merge_no_partition_crossing|after final", - "_guard_trunk_continuation_drops_straight|after final", - "_guard_no_dogleg_crosses_exempt_trunk|after final", - "_guard_no_stacked_elbow_graze|after final", - "_guard_fanout_tail_join|after final", - "_guard_perp_entry_boundary_consistent|after final", - "_guard_perp_exit_over_leadin_no_overdip|after final", - "_guard_right_entry_drop_in_when_clear|after final", - "_guard_right_entry_corridor_descent_no_jog|after final", - "_guard_inter_section_route_no_backtrack|after final", - "_guard_inter_section_route_no_full_width_backtrack|after final", - "_guard_routes_enter_sections_at_ports|after final", - "_guard_port_legs_meet_rail_pill_on_own_rail|after final", - "_guard_rail_connector_ports_no_stub|after final", - "_guard_no_route_through_section|after final", - "_guard_inter_section_route_clears_own_section_interior|after final", - "_guard_feeder_exits_section_through_side|after final", - "_guard_entry_approach_from_port_side|after final", "_guard_entry_landing_no_station_backtrack|after final", - "_guard_no_opposing_line_overlap|after final", - "_guard_serpentine_no_backtrack|after final", - "_guard_no_artefactual_counter_flow|after final", - "_guard_inter_row_run_clearance|after final", - "_guard_trunk_bands_crossing_optimal|after final", - "_guard_inter_section_descent_edge_clearance|after final", - "_guard_fan_bundles_coincide_or_separate|after final", "_guard_ports_clear_unanchored_box_edges|after final" ] } diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 1f8bd50fa..6410a6a22 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -100,6 +100,7 @@ "convergences.py::if (::#1", "convergences.py::if (::#14", "convergences.py::if (::#15", + "convergences.py::if (::#17", "convergences.py::if (::#18", "convergences.py::if (::#2", "convergences.py::if (::#23", @@ -215,6 +216,7 @@ "convergences.py::if moved is None:::#4", "convergences.py::if moved is None:::#5", "convergences.py::if moved_channels and all(::#1", + "convergences.py::if moved_plan is None:::#1", "convergences.py::if not (::#3", "convergences.py::if not 0 <= flank_rank < len(route.points) - 1:::#1", "convergences.py::if not _bypass_opening_candidate_feasible(landing, candidate, ctx):::#1", @@ -229,6 +231,7 @@ "convergences.py::if not horizontal and not vertical:::#1", "convergences.py::if not incoming_edges or not outgoing_edges:::#1", "convergences.py::if not landing_feasible(candidate_coordinate):::#1", + "convergences.py::if not moved:::#1", "convergences.py::if not moved_channels or any(::#1", "convergences.py::if not negative or not positive:::#1", "convergences.py::if not plan.owns_geometry:::#1", @@ -266,6 +269,7 @@ "convergences.py::if requirement is None:::#2", "convergences.py::if requirement is not None:::#1", "convergences.py::if requirements:::#1", + "convergences.py::if reseated is None:::#1", "convergences.py::if reseated is None:::#2", "convergences.py::if reseated is None:::#3", "convergences.py::if reseated is None:::#4", @@ -659,6 +663,7 @@ "member_geometry.py::if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if abs(channel.x - target) <= COORD_TOLERANCE:::#1", "member_geometry.py::if actual != (channel.start, channel.end):::#1", + "member_geometry.py::if all(::#1", "member_geometry.py::if allocated is None:::#1", "member_geometry.py::if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:::#1", "member_geometry.py::if channel is None:::#1", @@ -714,8 +719,6 @@ "normalize.py::band is not None::#1", "normalize.py::dx is None::#1", "normalize.py::elif above_ok:::#1", - "normalize.py::elif below_ok and (not above_ok or prefer_below):::#1", - "normalize.py::elif down_ok and (not up_ok or prefer_down):::#1", "normalize.py::elif far_y < t.y - COORD_TOLERANCE:::#1", "normalize.py::elif right_ok:::#1", "normalize.py::elif up_ok:::#1", @@ -723,23 +726,26 @@ "normalize.py::for _step in range(64):::#1", "normalize.py::for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):::#1", "normalize.py::for ch in downs:::#1", + "normalize.py::for delta in (step, -step):::#1", "normalize.py::for descent in downs:::#1", "normalize.py::for group in _merge_feeder_groups(routes, ctx):::#1", "normalize.py::for grp in groups:::#3", - "normalize.py::for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):::#1", "normalize.py::for r, k, _y in crossing:::#1", "normalize.py::for sign in (1, -1):::#1", "normalize.py::for up in ups:::#1", "normalize.py::go is not None::#1", "normalize.py::if (::#1", "normalize.py::if (::#10", + "normalize.py::if (::#12", "normalize.py::if (::#14", + "normalize.py::if (::#16", "normalize.py::if (::#9", "normalize.py::if (cross_below is not None and cross_above is not None) or not (::#1", "normalize.py::if 0 <= k - 1 < len(rp.curve_radii):::#1", - "normalize.py::if None not in convergence_plan_ids and len(convergence_plan_ids) == 1:::#1", + "normalize.py::if None in convergence_plan_ids or len(convergence_plan_ids) != 1:::#1", "normalize.py::if _planner_owns_channel(ch) and (::#2", "normalize.py::if _section_intrudes(::#1", + "normalize.py::if _snap_reverses_adjacent_run(ch, ref_x):::#1", "normalize.py::if a_trunk is None or b_trunk is None:::#1", "normalize.py::if abs(ch.x - descent.x) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(corner[1] - after[1]) <= COORD_TOLERANCE:::#1", @@ -747,6 +753,7 @@ "normalize.py::if abs(dx) > COORD_TOLERANCE:::#1", "normalize.py::if abs(first_x - second_x) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(ly - pts[1][1]) < COORD_TOLERANCE:::#1", + "normalize.py::if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:::#1", "normalize.py::if abs(overlap) > COORD_TOLERANCE:::#1", "normalize.py::if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(shift) <= COORD_TOLERANCE or any(::#1", @@ -754,18 +761,24 @@ "normalize.py::if abs(up.x - descent.x) > radius:::#1", "normalize.py::if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:::#1", "normalize.py::if actual - common <= COORD_TOLERANCE_FINE:::#1", + "normalize.py::if all(::#1", "normalize.py::if allocated_offsets is None or allocated_bases is None:::#1", "normalize.py::if anchor_section_id is not None and anchor_side is not None:::#1", "normalize.py::if any(::#10", "normalize.py::if any(::#11", "normalize.py::if any(::#12", "normalize.py::if any(::#13", + "normalize.py::if any(::#14", "normalize.py::if any(::#6", "normalize.py::if any(::#9", "normalize.py::if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):::#1", "normalize.py::if band is None:::#3", + "normalize.py::if band is not None:::#1", + "normalize.py::if below_ok and above_ok and (cross_below is None) != (cross_above is None):::#1", "normalize.py::if best < cur:::#1", + "normalize.py::if bool(mover.convergence_owned_segment_ranks) and not bool(::#1", "normalize.py::if ch.route.convergence_plan_id is not None:::#1", + "normalize.py::if changed:::#2", "normalize.py::if channel is None:::#1", "normalize.py::if channel.idx == 0:::#1", "normalize.py::if col in moved:::#1", @@ -783,6 +796,7 @@ "normalize.py::if i in relocated:::#1", "normalize.py::if k < len(rp.curve_radii) and k + 2 < len(pts):::#1", "normalize.py::if k == desc.idx + 1:::#1", + "normalize.py::if leg_is_plan_stated(mover):::#1", "normalize.py::if len(pts) < 2:::#1", "normalize.py::if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:::#1", "normalize.py::if len(targets) != 1:::#1", @@ -794,9 +808,11 @@ "normalize.py::if movable_channels:::#1", "normalize.py::if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):::#1", "normalize.py::if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:::#1", + "normalize.py::if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):::#1", "normalize.py::if not 0 <= far < len(pts):::#1", "normalize.py::if not 0 <= radius_idx < len(rp.curve_radii):::#1", "normalize.py::if not any(not t.route.normalize_exempt for t in grp):::#2", + "normalize.py::if not blockers:::#1", "normalize.py::if not changed:::#1", "normalize.py::if not chans:::#1", "normalize.py::if not crossing:::#1", @@ -830,7 +846,9 @@ "normalize.py::if slot is None or trunk is None or trunk[0] != k:::#1", "normalize.py::if source_col is None:::#1", "normalize.py::if source_section is not None and source_section.bbox_w > 0:::#1", + "normalize.py::if target is None:::#1", "normalize.py::if target_x is None:::#1", + "normalize.py::if target_y is None:::#1", "normalize.py::if up.route.line_id != descent.route.line_id:::#1", "normalize.py::or abs(corner[1] - after[1]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p1[0] - p2[0]) > COORD_TOLERANCE::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index a53a572c5..b468559eb 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -695,14 +695,6 @@ "note": "Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue.", "status": "defensive" }, - "normalize.py::elif below_ok and (not above_ok or prefer_below):::#1": { - "note": "Distinct-line dogleg tie fallback, reached only after L1341 is false (a tie), which a clean topology never produces (see that gate). The true arm (->1344, lean below) would fire on such a tie; the false arm (->1345) is unreachable because below_ok always holds and prefer_below is always true (t.y == hit.y in this regime).", - "status": "defensive" - }, - "normalize.py::elif down_ok and (not up_ok or prefer_down):::#1": { - "note": "Same-line dogleg tie / out-of-band fallback, reached only after the L1296 if is false, which a clean topology never produces (see that gate): the true arm (->1299, lean down on a tie) needs a crossing-free tie that requires degenerate risers, and the false arm (->1300) needs down_ok False, which the regime's fixed inter-row band (down_room >= min_sep) never yields.", - "status": "defensive" - }, "normalize.py::elif far_y < t.y - COORD_TOLERANCE:::#1": { "note": "Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces.", "status": "defensive" diff --git a/tests/test_direction_predicate_ratchet.py b/tests/test_direction_predicate_ratchet.py index 43c9d7f17..2b8afc93a 100644 --- a/tests/test_direction_predicate_ratchet.py +++ b/tests/test_direction_predicate_ratchet.py @@ -48,7 +48,7 @@ # Lower these (never raise them) when a call site migrates onto AxisFrame. _LITERAL_BASELINE = 58 -_NAMED_BASELINE = 266 +_NAMED_BASELINE = 257 _FLOWS = frozenset(FLOW_DIRECTIONS) _FLOW_NAME_TOKENS = frozenset(flow.lower() for flow in _FLOWS) diff --git a/tests/test_phase_state_registry.py b/tests/test_phase_state_registry.py index 52664af63..c958ab8da 100644 --- a/tests/test_phase_state_registry.py +++ b/tests/test_phase_state_registry.py @@ -46,10 +46,14 @@ # machinery itself. # - _phase_snapshots_enabled: a per-run coordinate-snapshot flag stashed to # avoid signature churn (#363), pure observation. +# - _final_route_guards_deferred: records that the final validate checkpoint +# deferred its route guards to settlement, read by callers that validate +# without rendering; no positioning pass consumes it. _BOOKKEEPING_ALLOWLIST = { "_stages_completed", "_validate_active", "_phase_snapshots_enabled", + "_final_route_guards_deferred", } _COMMENT = re.compile(r"#.*$", re.MULTILINE) From 432f362a604bc88a2ebed4a15c078d71ea9ec874 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 13:45:12 +0100 Subject: [PATCH 081/158] fix(routing): keep movers inside their contracts after review [skip ci] A fanned opening leg carries its paired same-line upstream tail through the lane change, so the line stays one continuous stroke through its fan junction; a horizontal tail moves whole and a vertical tail stretches through its existing corner. Re-seating a landing opening refuses a seat on the join's far side unless the caller opts into carrying the join and re-syncing feeder endpoint ownership, restoring the feasibility gate for every other reseat site. The dogleg side preference requires the target inside the claim band on both edges, the pinned-component clamp reads its mates' live coordinates so two stragglers cannot stack on one lane, and a routing crash at the final validate checkpoint sets the deferral flag so validate --with-layout resurfaces it instead of reporting a clean run. Unit tests lock the snap reversal guard, band-overlap partition, signed reseat, straggler clamp, and upstream-tail carry. Co-Authored-By: Claude Fable 5 --- src/nf_metro/cli.py | 9 +- src/nf_metro/layout/phases/guards.py | 6 + src/nf_metro/layout/routing/convergences.py | 21 +- .../layout/routing/member_geometry.py | 10 +- src/nf_metro/layout/routing/normalize.py | 49 +++- tests/test_guard_registry.py | 4 +- tests/test_snap_direction_guards.py | 217 ++++++++++++++++++ 7 files changed, 293 insertions(+), 23 deletions(-) create mode 100644 tests/test_snap_direction_guards.py diff --git a/src/nf_metro/cli.py b/src/nf_metro/cli.py index a56045f43..80260b809 100644 --- a/src/nf_metro/cli.py +++ b/src/nf_metro/cli.py @@ -763,14 +763,7 @@ def validate(input_file: Path, with_layout: bool, strict: bool) -> None: from nf_metro.render.svg import build_render_plan build_render_plan(graph, resolve_theme(None, graph)) - except ( - CyclicGraphError, - BackwardFlowError, - MixedEntryDirectionError, - PhaseInvariantError, - FoldThresholdError, - ValueError, - ) as e: + except (ValueError, FoldThresholdError, PhaseInvariantError) as e: issues.append(ValidationIssue(ERROR, str(e))) issues.extend(ValidationIssue(WARNING, str(w.message)) for w in caught) diff --git a/src/nf_metro/layout/phases/guards.py b/src/nf_metro/layout/phases/guards.py index da31e20b4..d449689d0 100644 --- a/src/nf_metro/layout/phases/guards.py +++ b/src/nf_metro/layout/phases/guards.py @@ -6183,6 +6183,12 @@ def _ensure_pass_c_inputs( routes = route_edges_for_placement_guards(graph, offsets) except Exception: # noqa: BLE001 - routing failure surfaces elsewhere routes = None + if validate_final_geometry: + # A caller that validates without rendering follows the + # deferral flag to a render-plan build, where the routing + # failure resurfaces instead of being swallowed as a run + # with every route guard skipped. + graph._final_route_guards_deferred = True return offsets, routes diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index b6a0a4f91..4653180fb 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -1943,18 +1943,27 @@ def _reseat_landing_opening( landing: ConvergenceLanding, coordinate: float, curve_radius: float, + *, + carry_join: bool = False, ) -> ConvergenceLanding | None: - """Re-seat a vertical landing opening when its runway remains feasible.""" + """Re-seat a vertical landing opening when its runway remains feasible. + + The runway is signed along the approach: a seat on the join's far side + would reverse the landing tail into a fold-back, so it is refused -- + unless *carry_join* is set, when the join slides through to the seat's + downstream side at the formed-curve runway. Carrying moves the member's + endpoint, so only a caller that re-syncs feeder endpoint ownership may + opt in. + """ if landing.opening_turn_segment is None: return None runway = landing.minimum_runway join_point = landing.join_point if landing.approach_axis is DemandAxis.X: - # Signed along the approach: a seat on the join's far side would - # reverse the landing tail into a fold-back, so the join slides - # through to the seat's downstream side at the formed-curve runway. runway = landing.approach_direction.sign * (join_point[0] - coordinate) if runway < curve_radius - COORD_TOLERANCE: + if not carry_join: + return None runway = curve_radius join_point = ( coordinate + landing.approach_direction.sign * runway, @@ -2014,7 +2023,9 @@ def _move_landing_opening( for rank, landing in enumerate(landings): if landing.member_id not in member_ids: continue - reseated = _reseat_landing_opening(landing, coordinate, curve_radius) + reseated = _reseat_landing_opening( + landing, coordinate, curve_radius, carry_join=True + ) if reseated is None: return None if reseated.join_point != landing.join_point: diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 18cc5a26c..2f8568904 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1914,20 +1914,18 @@ def _seat_claimed_segments_before_freeze( # but only when the clamp keeps the nesting pitch to every mate, # since two runs on one coordinate draw as a single stroke. pitch = 2 * ctx.offset_step + live = {id(route): coordinate for route, _r, coordinate, _b in component} for route, rank, coordinate, band in component: clamped = min(max(coordinate, band.lo), band.hi) if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE: continue - mates = [ - other_coordinate - for other_route, _r, other_coordinate, _b in component - if other_route is not route - ] if all( abs(clamped - other) >= pitch - COORD_TOLERANCE_FINE - for other in mates + for other_id, other in live.items() + if other_id != id(route) ): _carry_seated_run(route, rank, axis, clamped) + live[id(route)] = clamped def _band_overlap_components( diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 9a0a715c8..c4611cdcd 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3982,8 +3982,8 @@ def _dogleg_off_exempt_trunks( below_ok = above_ok = True claim_band = _segment_claim_band(ctx, t.route, t.idx) if claim_band is not None: - below_in_band = below_ok and below <= claim_band.hi - above_in_band = above_ok and above >= claim_band.lo + below_in_band = below_ok and claim_band.lo <= below <= claim_band.hi + above_in_band = above_ok and claim_band.lo <= above <= claim_band.hi if below_in_band or above_in_band: below_ok, above_ok = below_in_band, above_in_band # Pick the side that keeps the trunk a crossing-free parallel bundle: @@ -4623,7 +4623,10 @@ def _fan_apart_junction_opening_legs( Only the drawn coordinates are compared, and only a leg long enough to read as a run is moved -- the mover steps a full nesting pitch to a lane - no other leg of the fan occupies, preferring a leg no plan owns. + no other leg of the fan occupies, preferring a leg no plan owns. The + paired same-line ``port -> junction`` tail carries with the fanned leg, + so the line stays continuous through the junction instead of jogging a + lane at the handoff. """ if station_offsets is None: return @@ -4689,12 +4692,52 @@ def leg_is_plan_stated(candidate: RoutedPath) -> bool: if all( abs(target - lane) > step - COORD_TOLERANCE for lane in occupied ): + start_drawn = apply_route_offsets(mover, station_offsets)[0] pts = mover.points pts[0] = (pts[0][0], pts[0][1] + delta) pts[1] = (pts[1][0], pts[1][1] + delta) + _carry_fanned_upstream_tails( + mover, routes, station_offsets, start_drawn, delta + ) break +def _carry_fanned_upstream_tails( + mover: RoutedPath, + routes: list[RoutedPath], + station_offsets: Mapping[tuple[str, str], float], + start_drawn: tuple[float, float], + delta: float, +) -> None: + """Carry a fanned leg's paired upstream tails onto the leg's new lane. + + *start_drawn* is the fanned leg's drawn start before its lane change. A + same-line ``port -> junction`` tail whose drawn endpoint sits there is the + other half of one continuous stroke, so its endpoint follows the lane + change; a tail ending anywhere else is a seam another pass owns and is + left alone. A horizontal tail moves whole (both waypoints share the + lane); a vertical tail stretches to the new lane through its existing + corner. + """ + for upstream in routes: + if ( + upstream.edge.target != mover.edge.source + or upstream.line_id != mover.line_id + or len(upstream.points) < 2 + ): + continue + drawn = apply_route_offsets(upstream, station_offsets) + if ( + abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE + or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE + ): + continue + up = upstream.points + if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE: + up[-2] = (up[-2][0], up[-2][1] + delta) + up[-1] = (up[-1][0], up[-1][1] + delta) + + def _join_fanout_upstream_tails(routes: list[RoutedPath], ctx: _RoutingCtx) -> None: """Snap each fan-out junction's upstream tail onto its downstream start. diff --git a/tests/test_guard_registry.py b/tests/test_guard_registry.py index 9f12e2f23..4a476bbab 100644 --- a/tests/test_guard_registry.py +++ b/tests/test_guard_registry.py @@ -59,7 +59,9 @@ def route_guard(graph, phase, *, routes): ), ) - guards.run_validate_guards(object(), "after final", include_final=True, offsets={}) + guards.run_validate_guards( + SimpleNamespace(), "after final", include_final=True, offsets={} + ) assert called == ["structural"] guards.assert_render_layout_invariants( diff --git a/tests/test_snap_direction_guards.py b/tests/test_snap_direction_guards.py new file mode 100644 index 000000000..17794712a --- /dev/null +++ b/tests/test_snap_direction_guards.py @@ -0,0 +1,217 @@ +"""Snap and reseat movers preserve run direction and corridor identity. + +Unit coverage for the direction-preserving mover guards: a coincide snap +never reverses a flanking horizontal run, the pre-freeze seat partitions +same-rank runs into band-overlap components and clamps a pinned component's +straggler only at the nesting pitch, and a landing-opening reseat measures +its runway signed along the approach, refusing a far-side seat unless the +caller carries the join. +""" + +from __future__ import annotations + +from types import SimpleNamespace + +import pytest + +from nf_metro.layout.constants import CURVE_RADIUS +from nf_metro.layout.route_plan import ( + ConvergenceLanding, + DemandAxis, + turn_handedness, +) +from nf_metro.layout.routing import member_geometry, normalize +from nf_metro.layout.routing.common import Direction, RoutedPath +from nf_metro.layout.routing.convergences import _reseat_landing_opening +from nf_metro.layout.routing.families import RouteFamilyId +from nf_metro.layout.routing.normalize import ( + _snap_reverses_adjacent_run, + _VChannel, +) +from nf_metro.layout.routing.reserved_bands import ( + ReservedBand, + ReservedCorridors, +) +from nf_metro.parser.model import Edge +from nf_metro.parser.route_topology import ResolvedEdge + + +def _channel(points: list[tuple[float, float]], idx: int) -> _VChannel: + route = RoutedPath(Edge("a", "b", "line"), "line", points, is_inter_section=True) + lo, hi = sorted((points[idx][1], points[idx + 1][1])) + return _VChannel( + route, idx, points[idx][0], lo, hi, points[idx + 1][1] > points[idx][1] + ) + + +def test_snap_keeping_a_tail_direction_is_allowed() -> None: + # Riser at x=100 with a leftward tail to the join at x=80: a snap to 90 + # shortens the tail but keeps it leftward. + ch = _channel([(160.0, 0.0), (100.0, 0.0), (100.0, 50.0), (80.0, 50.0)], 1) + assert not _snap_reverses_adjacent_run(ch, 90.0) + + +def test_snap_across_a_tail_endpoint_is_a_reversal() -> None: + # The same tail flips to rightward when the riser crosses the join. + ch = _channel([(160.0, 0.0), (100.0, 0.0), (100.0, 50.0), (80.0, 50.0)], 1) + assert _snap_reverses_adjacent_run(ch, 60.0) + + +def test_snap_reversing_the_incoming_run_is_a_reversal() -> None: + # The incoming run travels rightward 160->200; a snap left of its start + # would flip it. + ch = _channel([(160.0, 0.0), (200.0, 0.0), (200.0, 50.0), (240.0, 50.0)], 1) + assert _snap_reverses_adjacent_run(ch, 140.0) + + +def test_band_overlap_components_split_disjoint_corridors() -> None: + def item(lo: float, hi: float, coordinate: float): + route = RoutedPath( + Edge(f"s{lo}", f"t{hi}", "line"), + "line", + [(0.0, coordinate), (10.0, coordinate)], + ) + return (route, 1, coordinate, ReservedBand(lo, hi)) + + disjoint = [item(0.0, 40.0, 10.0), item(100.0, 140.0, 110.0)] + assert [len(c) for c in member_geometry._band_overlap_components(disjoint)] == [ + 1, + 1, + ] + + nested = [item(0.0, 40.0, 10.0), item(30.0, 70.0, 50.0), item(60.0, 90.0, 80.0)] + assert [len(c) for c in member_geometry._band_overlap_components(nested)] == [3] + + +def _landing(join_x: float, opening_x: float) -> ConvergenceLanding: + return ConvergenceLanding( + member_id="member", + edge=ResolvedEdge("src", "tgt", "line"), + source_junction_id="src", + approach_axis=DemandAxis.X, + approach_direction=Direction.L, + source_column=0, + source_row=0, + lane_rank=0, + order=0, + join_point=(join_x, 100.0), + corner_handedness=turn_handedness(Direction.U, Direction.L), + minimum_runway=opening_x - join_x, + opening_turn_coordinate=opening_x, + opening_turn_segment=((opening_x, 200.0), (opening_x, 100.0)), + bypass=False, + long_haul=False, + multiple_row=False, + ) + + +def test_reseat_on_the_approach_side_keeps_the_join() -> None: + landing = _landing(join_x=80.0, opening_x=100.0) + reseated = _reseat_landing_opening(landing, 120.0, CURVE_RADIUS) + assert reseated is not None + assert reseated.join_point == (80.0, 100.0) + assert reseated.minimum_runway == pytest.approx(40.0) + assert reseated.opening_turn_coordinate == 120.0 + + +def test_reseat_across_the_join_is_refused_without_carry() -> None: + landing = _landing(join_x=80.0, opening_x=100.0) + assert _reseat_landing_opening(landing, 60.0, CURVE_RADIUS) is None + + +def test_reseat_across_the_join_carries_it_downstream_when_opted_in() -> None: + landing = _landing(join_x=80.0, opening_x=100.0) + reseated = _reseat_landing_opening(landing, 60.0, CURVE_RADIUS, carry_join=True) + assert reseated is not None + assert reseated.opening_turn_coordinate == 60.0 + assert reseated.minimum_runway == pytest.approx(CURVE_RADIUS) + assert reseated.join_point == (60.0 - CURVE_RADIUS, 100.0) + + +def _seat_candidate( + name: str, coordinate: float, band: ReservedBand +) -> tuple[member_geometry._MemberCandidate, tuple]: + route = RoutedPath( + Edge(f"{name}-src", f"{name}-tgt", name), + name, + [ + (300.0, coordinate - 60.0), + (200.0, coordinate - 60.0), + (200.0, coordinate), + (100.0, coordinate), + (100.0, coordinate + 60.0), + (60.0, coordinate + 60.0), + ], + ) + candidate = member_geometry._MemberCandidate( + route, + RouteFamilyId.STANDARD_L_SHAPE, + f"system-{name}", + f"carrier-{name}", + (f"connector-{name}",), + ) + key = (route.edge.source, route.edge.target, name, 2) + return candidate, (key, band) + + +def test_pinned_component_clamps_stragglers_alone() -> None: + # One run below the band and one above it veto any rigid travel; each is + # clamped into the band alone, landing a full pitch apart. + band = ReservedBand(110.0, 130.0) + first, first_claim = _seat_candidate("one", 100.0, band) + second, second_claim = _seat_candidate("two", 140.0, band) + second = member_geometry._MemberCandidate( + second.route, + second.family_id, + first.system_id, + second.carrier_id, + second.connector_ids, + ) + ctx = SimpleNamespace( + reserved_bands=ReservedCorridors(per_claim=dict([first_claim, second_claim])), + offset_step=4.0, + ) + member_geometry._seat_claimed_segments_before_freeze((first, second), ctx) + assert first.route.points[2][1] == pytest.approx(110.0) + assert second.route.points[2][1] == pytest.approx(130.0) + + +def _fan_pair( + tail_points: list[tuple[float, float]], +) -> tuple[RoutedPath, RoutedPath]: + mover = RoutedPath( + Edge("junction", "target", "line"), + "line", + [(100.0, 50.0), (60.0, 50.0), (60.0, 90.0)], + is_inter_section=True, + ) + upstream = RoutedPath( + Edge("port", "junction", "line"), "line", tail_points, is_inter_section=True + ) + return mover, upstream + + +def test_fanned_leg_carries_its_paired_upstream_tail() -> None: + # The horizontal tail ends on the fanned leg's drawn start, so it is one + # continuous stroke and both tail waypoints follow the lane change. + mover, upstream = _fan_pair([(140.0, 30.0), (120.0, 50.0), (100.0, 50.0)]) + start_drawn = mover.points[0] + normalize._carry_fanned_upstream_tails(mover, [upstream], {}, start_drawn, 8.0) + assert upstream.points[-2:] == [(120.0, 58.0), (100.0, 58.0)] + + +def test_fanned_leg_stretches_a_vertical_upstream_tail() -> None: + # A vertical tail reaches the new lane through its existing corner: only + # its endpoint moves. + mover, upstream = _fan_pair([(140.0, 30.0), (100.0, 30.0), (100.0, 50.0)]) + start_drawn = mover.points[0] + normalize._carry_fanned_upstream_tails(mover, [upstream], {}, start_drawn, 8.0) + assert upstream.points[-2:] == [(100.0, 30.0), (100.0, 58.0)] + + +def test_fanned_leg_leaves_a_foreign_seam_alone() -> None: + # A tail ending away from the fanned leg's start is another pass's seam. + mover, upstream = _fan_pair([(140.0, 30.0), (120.0, 30.0), (104.0, 30.0)]) + start_drawn = mover.points[0] + normalize._carry_fanned_upstream_tails(mover, [upstream], {}, start_drawn, 8.0) + assert upstream.points[-2:] == [(120.0, 30.0), (104.0, 30.0)] From 75b6d0c7cf27264f42f901e72e709f2e8694c8b0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 14:00:38 +0100 Subject: [PATCH 082/158] test(routing): refresh gate coverage for the upstream-tail carry [skip ci] Co-Authored-By: Claude Fable 5 --- docs/dev/routing_gate_coverage.md | 423 +++++++++--------- .../data/routing_gate_coverage_baseline.json | 5 + 2 files changed, 219 insertions(+), 209 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index f47307765..b249d158d 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2346/3384** gates fully exercised (both/all arms hit by some fixture); **1038** gates have at least one un-exercised arm. +**2349/3392** gates fully exercised (both/all arms hit by some fixture); **1043** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -139,7 +139,7 @@ Gates with an un-exercised arm: ## `convergences.py` -364/606 gates fully exercised. +364/607 gates fully exercised. Gates with an un-exercised arm: @@ -213,180 +213,181 @@ Gates with an un-exercised arm: | 1773 | `if not uses_exit_handedness and (` | `->L1782` | | | 1778 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1782` | | | 1886 | `if opening_follows_flank:` | `->L1887` | | -| 1948 | `if landing.opening_turn_segment is None:` | `->L1949` | | -| 1993 | `landing.approach_axis is DemandAxis.X` | `->L1997` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | -| 1994 | `and landing.opening_turn_segment is not None` | `->L1997` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | -| 1999 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L2000`, `->L2001` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | -| 2018 | `if reseated is None:` | `->L2019` | | -| 2024 | `if not moved:` | `->L2025` | | -| 2086 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2095` | | -| 2096 | `if opening_segment is not None:` | `->L2107` | | -| 2147 | `axis is None` | `->L2150` | | -| 2192 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2193` | | -| 2199 | `if actual is None:` | `->L2200` | | -| 2449 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2450` | | -| 2491 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2494` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | -| 2492 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2494` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | -| 2534 | `if run is None:` | `->L2535` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2565 | `if require_clear_segments:` | `->L2591` | | -| 2622 | `if run is None:` | `->L2623` | | -| 2637 | `if obstacles:` | `->L2638` | | -| 2665 | `if run is None:` | `->L2666` | | -| 2712 | `if axis is None:` | `->L2713` | | -| 2754 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2755` | | -| 2764 | `if primary is None:` | `->L2765` | | -| 2777 | `or landing.opening_turn_segment is None` | `->L2779` | | -| 2790 | `if reseated is not None:` | `->L2773` | | -| 2830 | `if (` | `->L2836` | | -| 2838 | `for plan_rank, landing_rank in members:` | `->L2819`, `->L2839` | | -| 2841 | `if reseated is None:` | `->L2842`, `->L2843` | | -| 2860 | `if len(channel.line_ids) != 1:` | `->L2861` | | -| 2885 | `if (` | `->L2889` | | -| 2891 | `if endpoint is None:` | `->L2892` | | -| 2897 | `channel.flank_rank is not None` | `->L2902` | | -| 2902 | `if any(` | `->L2907` | | -| 2911 | `if moved is None:` | `->L2912` | | -| 2926 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2927` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2952 | `if (` | `->L2960` | | -| 2966 | `if reseated is None:` | `->L2967`, `->L2968` | | -| 2972 | `if abs(reseated_opening - source.x) >= (` | `->L2948`, `->L2977` | | -| 2977 | `if (` | `->L2982`, `->L2986` | | -| 3111 | `if reseated is None:` | `->L3112` | | -| 3133 | `if moved_channels and all(` | `->L3056` | | -| 3189 | `if bypass_segment is None:` | `->L3190` | | -| 3206 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3207` | | -| 3213 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3214` | | -| 3221 | `if moved is None:` | `->L3222` | | -| 3243 | `if bypass_segment is None:` | `->L3244` | | -| 3293 | `for coordinate in candidates:` | `->L3267` | | -| 3294 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3295` | | -| 3302 | `if moved is None:` | `->L3303` | | -| 3310 | `if not moved_channels or any(` | `->L3317` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3322 | `if (` | `->L3326` | | -| 3387 | `obstacle_segment is None` | `->L3392` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 3388 | `or landing_segment is None` | `->L3392` | | -| 3403 | `if reseated is None:` | `->L3404` | | -| 3409 | `landing.member_id == plan.primary_trunk_member_id` | `->L3432` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 3410 | `and plan.trunk_axis is not None` | `->L3432` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 3411 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3432` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 3441 | `if (` | `->L3374` | | -| 3456 | `if axis is None:` | `->L3457` | | -| 3480 | `if coordinate is not None:` | `->L3485` | | -| 3522 | `if endpoint is None:` | `->L3523` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 3545 | `if plan.trunk_axis is None:` | `->L3546` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 3571 | `if coordinate is not None:` | `->L3577` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 3631 | `for seat, obstacle in obstacles:` | `->L-3616`, `->L3632` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 3633 | `if axis is None:` | `->L3634`, `->L3635` | | -| 3645 | `if lane is None:` | `->L3646`, `->L3647` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 3666 | `if flank_rank != 1:` | `->L3668` | | -| 3677 | `if fork is None:` | `->L3678`, `->L3686` | | -| 3754 | `if forked:` | `->L3755` | | -| 3755 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3756`, `->L3757` | | -| 3759 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3760` | | -| 3783 | `if forked:` | `->L3784`, `->L3785` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 3858 | `if endpoint is None:` | `->L3859` | | -| 3869 | `if coordinate is None:` | `->L3870` | | -| 3882 | `if reseated is not None:` | `->L3883`, `->L3886` | | -| 3929 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3977` | | -| 4007 | `if not (` | `->L4010` | | -| 4026 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4027` | | -| 4084 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4069` | | -| 4333 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4334` | | -| 4353 | `if any(` | `->L4358` | | -| 4361 | `if any(` | `->L4364` | | -| 4409 | `if axis is None:` | `->L4410` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 4551 | `if run is not None:` | `->L4602` | | -| 4678 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4679` | | -| 4778 | `if not landing_feasible(candidate_coordinate):` | `->L4779` | | -| 4788 | `if (` | `->L4792` | | -| 4841 | `if moved_plan is None:` | `->L4842` | | -| 4860 | `if (` | `->L4864` | | -| 4929 | `if (` | `->L4937` | | -| 4986 | `if moved is None:` | `->L4987` | | -| 5016 | `if (` | `->L5020` | | -| 5116 | `if any(` | `->L5124` | | -| 5180 | `for fixed in fixed_channels:` | `->L5181` | | -| 5181 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5184`, `->L5185` | | -| 5188 | `if (` | `->L5193`, `->L5194` | | -| 5228 | `if opening_key in moved_openings:` | `->L5229` | | -| 5237 | `if moved is None:` | `->L5238` | | -| 5241 | `if not feasible:` | `->L5242` | | -| 5243 | `if not feasible:` | `->L5244` | | -| 5246 | `if (` | `->L5250` | | -| 5267 | `if any(` | `->L5274` | | -| 5275 | `if any(` | `->L5280` | | -| 5332 | `for coordinate in candidates:` | `->L5298` | | -| 5650 | `if not negative or not positive:` | `->L5651` | | -| 5710 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5711` | | -| 5715 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5723` | | -| 5743 | `if gap is None:` | `->L5744` | | -| 5754 | `if requirement is None:` | `->L5755` | | -| 5758 | `if current is None or requirement.required > current.required:` | `->L5700` | | -| 5774 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5776` | | -| 5780 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5781`, `->L5782` | | -| 5790 | `if requirement is None:` | `->L5791`, `->L5792` | | -| 5795 | `if current is None or requirement.required > current.required:` | `->L5773`, `->L5796` | | -| 5827 | `if (` | `->L5833` | | -| 5838 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5839`, `->L5840` | | -| 5848 | `if requirement is not None:` | `->L5811`, `->L5849` | | -| 5895 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5899` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 5902 | `if first_delta * second_delta < 0:` | `->L5903` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5913 | `if (` | `->L5925`, `->L5928` | | -| 5942 | `if opposing_approaches is not None:` | `->L5943` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 5987 | `if same_line and first_direction is not second_direction:` | `->L5992` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5993 | `if (` | `->L6020` | | -| 6040 | `if conflict is not None:` | `->L6041` | | -| 6050 | `if requirements:` | `->L6051`, `->L6053` | | -| 6088 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6089` | | -| 6095 | `if (` | `->L6106` | | -| 6106 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6109`, `->L6110` | | -| 6110 | `if any(` | `->L6115`, `->L6116` | | -| 6123 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6124` | | -| 6124 | `if any(` | `->L6129`, `->L6130` | | -| 6136 | `if _gap_channels_crowd(` | `->L6143` | | -| 6143 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6146`, `->L6147` | | -| 6147 | `if any(` | `->L6151`, `->L6152` | | -| 6168 | `if not plan.owns_geometry:` | `->L6169` | | -| 6232 | `if not plan.owns_geometry:` | `->L6233` | | -| 6256 | `owner_edge not in edge_ranks` | `->L6260` | | -| 6295 | `if not plan.owns_geometry:` | `->L6296` | | -| 6314 | `if ownership.edge in by_edge:` | `->L6315` | | -| 6442 | `for item in system_plans:` | `->L6443`, `->L6453` | | -| 6799 | `if not horizontal and not vertical:` | `->L6800` | | -| 6823 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6808` | | -| 6856 | `if axis.axis is DemandAxis.X:` | `->L6879` | | -| 6983 | `if not candidates:` | `->L6984` | | -| 7005 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7008` | | -| 7008 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7011` | | -| 7014 | `if horizontal:` | `->L7015` | | -| 7083 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7084` | | -| 7091 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7092` | | -| 7110 | `if actual is None:` | `->L7111` | | -| 7117 | `direction is not landing.approach_direction` | `->L7121` | | -| 7118 | `or handedness is not landing.corner_handedness` | `->L7121` | | -| 7119 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7121` | | -| 7140 | `opening is None` | `->L7144` | | -| 7141 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7144` | | -| 7142 | `or emitted_segment != landing.opening_turn_segment` | `->L7144` | | -| 7153 | `if query is None:` | `->L7154` | | -| 7159 | `if not plan.owns_geometry:` | `->L7160` | | -| 7169 | `if (` | `->L7183` | | -| 7187 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7192` | | -| 7210 | `if opening is None:` | `->L7211` | | -| 7211 | `if not clearance_pending:` | `->L7212`, `->L7227` | | -| 7219 | `landing.opening_turn_segment is not None` | `->L7227` | | -| 7225 | `if route.curve_radii is not None:` | `->L7227` | | -| 7293 | `if landing.opening_turn_coordinate is not None:` | `->L7301` | | -| 7309 | `if not clearance_pending and any(` | `->L7313` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 7338 | `if not plan.owns_geometry:` | `->L7339` | | -| 7349 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7350` | | -| 7359 | `if route is None:` | `->L7360` | | -| 7365 | `if (` | `->L7370` | | -| 7377 | `if any(` | `->L7381` | | -| 7401 | `if (` | `->L7410` | | -| 7416 | `if (` | `->L7427` | | -| 7443 | `if route is None or membership is None:` | `->L7444` | | -| 7449 | `if any(` | `->L7453` | | +| 1958 | `if landing.opening_turn_segment is None:` | `->L1959` | | +| 1965 | `if not carry_join:` | `->L1966` | | +| 2002 | `landing.approach_axis is DemandAxis.X` | `->L2006` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | +| 2003 | `and landing.opening_turn_segment is not None` | `->L2006` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | +| 2008 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L2009`, `->L2010` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | +| 2029 | `if reseated is None:` | `->L2030` | | +| 2035 | `if not moved:` | `->L2036` | | +| 2097 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2106` | | +| 2107 | `if opening_segment is not None:` | `->L2118` | | +| 2158 | `axis is None` | `->L2161` | | +| 2203 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2204` | | +| 2210 | `if actual is None:` | `->L2211` | | +| 2460 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2461` | | +| 2502 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2505` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | +| 2503 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2505` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | +| 2545 | `if run is None:` | `->L2546` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | +| 2576 | `if require_clear_segments:` | `->L2602` | | +| 2633 | `if run is None:` | `->L2634` | | +| 2648 | `if obstacles:` | `->L2649` | | +| 2676 | `if run is None:` | `->L2677` | | +| 2723 | `if axis is None:` | `->L2724` | | +| 2765 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2766` | | +| 2775 | `if primary is None:` | `->L2776` | | +| 2788 | `or landing.opening_turn_segment is None` | `->L2790` | | +| 2801 | `if reseated is not None:` | `->L2784` | | +| 2841 | `if (` | `->L2847` | | +| 2849 | `for plan_rank, landing_rank in members:` | `->L2830`, `->L2850` | | +| 2852 | `if reseated is None:` | `->L2853`, `->L2854` | | +| 2871 | `if len(channel.line_ids) != 1:` | `->L2872` | | +| 2896 | `if (` | `->L2900` | | +| 2902 | `if endpoint is None:` | `->L2903` | | +| 2908 | `channel.flank_rank is not None` | `->L2913` | | +| 2913 | `if any(` | `->L2918` | | +| 2922 | `if moved is None:` | `->L2923` | | +| 2937 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2938` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2963 | `if (` | `->L2971` | | +| 2977 | `if reseated is None:` | `->L2978`, `->L2979` | | +| 2983 | `if abs(reseated_opening - source.x) >= (` | `->L2959`, `->L2988` | | +| 2988 | `if (` | `->L2993`, `->L2997` | | +| 3122 | `if reseated is None:` | `->L3123` | | +| 3144 | `if moved_channels and all(` | `->L3067` | | +| 3200 | `if bypass_segment is None:` | `->L3201` | | +| 3217 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3218` | | +| 3224 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3225` | | +| 3232 | `if moved is None:` | `->L3233` | | +| 3254 | `if bypass_segment is None:` | `->L3255` | | +| 3304 | `for coordinate in candidates:` | `->L3278` | | +| 3305 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3306` | | +| 3313 | `if moved is None:` | `->L3314` | | +| 3321 | `if not moved_channels or any(` | `->L3328` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3333 | `if (` | `->L3337` | | +| 3398 | `obstacle_segment is None` | `->L3403` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3399 | `or landing_segment is None` | `->L3403` | | +| 3414 | `if reseated is None:` | `->L3415` | | +| 3420 | `landing.member_id == plan.primary_trunk_member_id` | `->L3443` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3421 | `and plan.trunk_axis is not None` | `->L3443` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3422 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3443` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3452 | `if (` | `->L3385` | | +| 3467 | `if axis is None:` | `->L3468` | | +| 3491 | `if coordinate is not None:` | `->L3496` | | +| 3533 | `if endpoint is None:` | `->L3534` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3556 | `if plan.trunk_axis is None:` | `->L3557` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3582 | `if coordinate is not None:` | `->L3588` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3642 | `for seat, obstacle in obstacles:` | `->L-3627`, `->L3643` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3644 | `if axis is None:` | `->L3645`, `->L3646` | | +| 3656 | `if lane is None:` | `->L3657`, `->L3658` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3677 | `if flank_rank != 1:` | `->L3679` | | +| 3688 | `if fork is None:` | `->L3689`, `->L3697` | | +| 3765 | `if forked:` | `->L3766` | | +| 3766 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3767`, `->L3768` | | +| 3770 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3771` | | +| 3794 | `if forked:` | `->L3795`, `->L3796` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3869 | `if endpoint is None:` | `->L3870` | | +| 3880 | `if coordinate is None:` | `->L3881` | | +| 3893 | `if reseated is not None:` | `->L3894`, `->L3897` | | +| 3940 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3988` | | +| 4018 | `if not (` | `->L4021` | | +| 4037 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4038` | | +| 4095 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4080` | | +| 4344 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4345` | | +| 4364 | `if any(` | `->L4369` | | +| 4372 | `if any(` | `->L4375` | | +| 4420 | `if axis is None:` | `->L4421` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4562 | `if run is not None:` | `->L4613` | | +| 4689 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4690` | | +| 4789 | `if not landing_feasible(candidate_coordinate):` | `->L4790` | | +| 4799 | `if (` | `->L4803` | | +| 4852 | `if moved_plan is None:` | `->L4853` | | +| 4871 | `if (` | `->L4875` | | +| 4940 | `if (` | `->L4948` | | +| 4997 | `if moved is None:` | `->L4998` | | +| 5027 | `if (` | `->L5031` | | +| 5127 | `if any(` | `->L5135` | | +| 5191 | `for fixed in fixed_channels:` | `->L5192` | | +| 5192 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5195`, `->L5196` | | +| 5199 | `if (` | `->L5204`, `->L5205` | | +| 5239 | `if opening_key in moved_openings:` | `->L5240` | | +| 5248 | `if moved is None:` | `->L5249` | | +| 5252 | `if not feasible:` | `->L5253` | | +| 5254 | `if not feasible:` | `->L5255` | | +| 5257 | `if (` | `->L5261` | | +| 5278 | `if any(` | `->L5285` | | +| 5286 | `if any(` | `->L5291` | | +| 5343 | `for coordinate in candidates:` | `->L5309` | | +| 5661 | `if not negative or not positive:` | `->L5662` | | +| 5721 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5722` | | +| 5726 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5734` | | +| 5754 | `if gap is None:` | `->L5755` | | +| 5765 | `if requirement is None:` | `->L5766` | | +| 5769 | `if current is None or requirement.required > current.required:` | `->L5711` | | +| 5785 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5787` | | +| 5791 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5792`, `->L5793` | | +| 5801 | `if requirement is None:` | `->L5802`, `->L5803` | | +| 5806 | `if current is None or requirement.required > current.required:` | `->L5784`, `->L5807` | | +| 5838 | `if (` | `->L5844` | | +| 5849 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5850`, `->L5851` | | +| 5859 | `if requirement is not None:` | `->L5822`, `->L5860` | | +| 5906 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5910` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 5913 | `if first_delta * second_delta < 0:` | `->L5914` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5924 | `if (` | `->L5936`, `->L5939` | | +| 5953 | `if opposing_approaches is not None:` | `->L5954` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 5998 | `if same_line and first_direction is not second_direction:` | `->L6003` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 6004 | `if (` | `->L6031` | | +| 6051 | `if conflict is not None:` | `->L6052` | | +| 6061 | `if requirements:` | `->L6062`, `->L6064` | | +| 6099 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6100` | | +| 6106 | `if (` | `->L6117` | | +| 6117 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6120`, `->L6121` | | +| 6121 | `if any(` | `->L6126`, `->L6127` | | +| 6134 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6135` | | +| 6135 | `if any(` | `->L6140`, `->L6141` | | +| 6147 | `if _gap_channels_crowd(` | `->L6154` | | +| 6154 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6157`, `->L6158` | | +| 6158 | `if any(` | `->L6162`, `->L6163` | | +| 6179 | `if not plan.owns_geometry:` | `->L6180` | | +| 6243 | `if not plan.owns_geometry:` | `->L6244` | | +| 6267 | `owner_edge not in edge_ranks` | `->L6271` | | +| 6306 | `if not plan.owns_geometry:` | `->L6307` | | +| 6325 | `if ownership.edge in by_edge:` | `->L6326` | | +| 6453 | `for item in system_plans:` | `->L6454`, `->L6464` | | +| 6810 | `if not horizontal and not vertical:` | `->L6811` | | +| 6834 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6819` | | +| 6867 | `if axis.axis is DemandAxis.X:` | `->L6890` | | +| 6994 | `if not candidates:` | `->L6995` | | +| 7016 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7019` | | +| 7019 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7022` | | +| 7025 | `if horizontal:` | `->L7026` | | +| 7094 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7095` | | +| 7102 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7103` | | +| 7121 | `if actual is None:` | `->L7122` | | +| 7128 | `direction is not landing.approach_direction` | `->L7132` | | +| 7129 | `or handedness is not landing.corner_handedness` | `->L7132` | | +| 7130 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7132` | | +| 7151 | `opening is None` | `->L7155` | | +| 7152 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7155` | | +| 7153 | `or emitted_segment != landing.opening_turn_segment` | `->L7155` | | +| 7164 | `if query is None:` | `->L7165` | | +| 7170 | `if not plan.owns_geometry:` | `->L7171` | | +| 7180 | `if (` | `->L7194` | | +| 7198 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7203` | | +| 7221 | `if opening is None:` | `->L7222` | | +| 7222 | `if not clearance_pending:` | `->L7223`, `->L7238` | | +| 7230 | `landing.opening_turn_segment is not None` | `->L7238` | | +| 7236 | `if route.curve_radii is not None:` | `->L7238` | | +| 7304 | `if landing.opening_turn_coordinate is not None:` | `->L7312` | | +| 7320 | `if not clearance_pending and any(` | `->L7324` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7349 | `if not plan.owns_geometry:` | `->L7350` | | +| 7360 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7361` | | +| 7370 | `if route is None:` | `->L7371` | | +| 7376 | `if (` | `->L7381` | | +| 7388 | `if any(` | `->L7392` | | +| 7412 | `if (` | `->L7421` | | +| 7427 | `if (` | `->L7438` | | +| 7454 | `if route is None or membership is None:` | `->L7455` | | +| 7460 | `if any(` | `->L7464` | | ## `core.py` @@ -826,24 +827,24 @@ Gates with an un-exercised arm: | 1853 | `if 0 <= rank - 1 < len(radii):` | `->L1855` | | | 1855 | `if rank < len(radii):` | `->L1857` | | | 1894 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1877` | | -| 1926 | `if all(` | `->L1917` | | -| 2003 | `if movable_run:` | `->L2004` | | -| 2054 | `if context is not None:` | `->L2069` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | -| 2070 | `if key in ctx.skip_edges:` | `->L2071` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | -| 2073 | `if edge is None:` | `->L2074` | | -| 2077 | `if family_id is None:` | `->L2078` | | -| 2100 | `if system_id not in failures:` | `->L2104` | | -| 2408 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2409` | | -| 2414 | `if actual != (channel.start, channel.end):` | `->L2415` | | -| 2418 | `if (` | `->L2423` | | -| 2437 | `if radius_index >= len(radii):` | `->L2438` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | -| 2444 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2445` | | -| 2449 | `if radius_index + 2 >= len(route.points):` | `->L2450` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | -| 2465 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2466` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | +| 1922 | `if all(` | `->L1918` | | +| 2001 | `if movable_run:` | `->L2002` | | +| 2052 | `if context is not None:` | `->L2067` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | +| 2068 | `if key in ctx.skip_edges:` | `->L2069` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | +| 2071 | `if edge is None:` | `->L2072` | | +| 2075 | `if family_id is None:` | `->L2076` | | +| 2098 | `if system_id not in failures:` | `->L2102` | | +| 2406 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2407` | | +| 2412 | `if actual != (channel.start, channel.end):` | `->L2413` | | +| 2416 | `if (` | `->L2421` | | +| 2435 | `if radius_index >= len(radii):` | `->L2436` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | +| 2442 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2443` | | +| 2447 | `if radius_index + 2 >= len(route.points):` | `->L2448` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | +| 2463 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2464` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | ## `normalize.py` -422/575 gates fully exercised. +425/582 gates fully exercised. Gates with an un-exercised arm: @@ -984,24 +985,28 @@ Gates with an un-exercised arm: | 4591 | `if rp.curve_radii is None:` | `->L4592` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | | 4603 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4605` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | | 4605 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4548` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4680 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4683` | | -| 4684 | `if leg_is_plan_stated(mover):` | `->L4685` | | -| 4687 | `for delta in (step, -step):` | `->L4654` | | -| 4689 | `if all(` | `->L4687` | | -| 4753 | `if down is None or len(up.points) < 2:` | `->L4754` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4807 | `if len(targets) != 1:` | `->L4808` | | -| 4817 | `if col is None:` | `->L4818` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 4858 | `if not 0 <= far < len(pts):` | `->L4859` | | -| 4861 | `if abs(dx) > COORD_TOLERANCE:` | `->L4855` | | -| 4863 | `if not votes:` | `->L4864` | | -| 4969 | `if rep_x[a] != rep_x[b]:` | `->L4971` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4999 | `if rp.curve_radii is None:` | `->L5000` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5002 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5003` | | -| 5026 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-4976` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5056 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5058` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5111 | `elif right_ok:` | `->L5114` | | -| 5160 | `if s.bbox_w <= 0:` | `->L5161` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 5548 | `if not blockers:` | `->L5549` | | +| 4683 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4686` | | +| 4687 | `if leg_is_plan_stated(mover):` | `->L4688` | | +| 4690 | `for delta in (step, -step):` | `->L4657` | | +| 4692 | `if all(` | `->L4690` | | +| 4726 | `or len(upstream.points) < 2` | `->L4728` | | +| 4731 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4734` | | +| 4732 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4734` | | +| 4736 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4738` | | +| 4796 | `if down is None or len(up.points) < 2:` | `->L4797` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4850 | `if len(targets) != 1:` | `->L4851` | | +| 4860 | `if col is None:` | `->L4861` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 4901 | `if not 0 <= far < len(pts):` | `->L4902` | | +| 4904 | `if abs(dx) > COORD_TOLERANCE:` | `->L4898` | | +| 4906 | `if not votes:` | `->L4907` | | +| 5012 | `if rep_x[a] != rep_x[b]:` | `->L5014` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5042 | `if rp.curve_radii is None:` | `->L5043` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5045 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5046` | | +| 5069 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5019` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5099 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5101` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5154 | `elif right_ok:` | `->L5157` | | +| 5203 | `if s.bbox_w <= 0:` | `->L5204` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 5591 | `if not blockers:` | `->L5592` | | ## `offsets.py` diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 6410a6a22..a37b83e05 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -224,6 +224,7 @@ "convergences.py::if not _stacked_elbow_channels_crowd(channel, fixed):::#1", "convergences.py::if not candidates:::#1", "convergences.py::if not candidates:::#2", + "convergences.py::if not carry_join:::#1", "convergences.py::if not clearance_pending and any(::#1", "convergences.py::if not clearance_pending:::#1", "convergences.py::if not feasible:::#1", @@ -708,6 +709,7 @@ "member_geometry.py::or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE::#1", "member_geometry.py::or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE::#1", "member_geometry.py::or after is None::#1", + "normalize.py::abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE::#1", "normalize.py::abs(p0[1] - p1[1]) > COORD_TOLERANCE::#1", "normalize.py::and band.boundary is None::#1", "normalize.py::and band.hi >= band.lo - COORD_TOLERANCE::#1", @@ -759,6 +761,7 @@ "normalize.py::if abs(shift) <= COORD_TOLERANCE or any(::#1", "normalize.py::if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(up.x - descent.x) > radius:::#1", + "normalize.py::if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:::#1", "normalize.py::if actual - common <= COORD_TOLERANCE_FINE:::#1", "normalize.py::if all(::#1", @@ -851,12 +854,14 @@ "normalize.py::if target_y is None:::#1", "normalize.py::if up.route.line_id != descent.route.line_id:::#1", "normalize.py::or abs(corner[1] - after[1]) > COORD_TOLERANCE::#1", + "normalize.py::or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p1[0] - p2[0]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p2[1] - p3[1]) > COORD_TOLERANCE::#1", "normalize.py::or assignment.turn_direction is None::#1", "normalize.py::or base_radius is None::#1", "normalize.py::or entry is None::#1", "normalize.py::or len(route.points) < 3::#1", + "normalize.py::or len(upstream.points) < 2::#1", "normalize.py::or not 0 <= radius_index < len(route.curve_radii)::#1", "normalize.py::or port is None::#1", "normalize.py::or port.side not in (PortSide.LEFT, PortSide.RIGHT)::#1", From d9f038b53668008b291b70064822c0e66b110011 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 14:13:20 +0100 Subject: [PATCH 083/158] chore: run the full pipeline on the reconciled strict-seed engine Co-Authored-By: Claude Fable 5 From cce8925f0affa454a258e7fb58d6fdab25f6f0c6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 14:36:34 +0100 Subject: [PATCH 084/158] test(executor): give the heavyweight seed fixture a load-proof budget [skip ci] Co-Authored-By: Claude Fable 5 --- tests/candidate_executor_oracle.py | 2 +- tests/test_candidate_executor.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/candidate_executor_oracle.py b/tests/candidate_executor_oracle.py index c12222d5a..f0b5d3e7f 100644 --- a/tests/candidate_executor_oracle.py +++ b/tests/candidate_executor_oracle.py @@ -24,7 +24,7 @@ def main() -> None: CandidateExecutionRequest( path.read_text(), source_dir=str(path.parent), - limits=ExecutionLimits(1, 20.0, 30.0), + limits=ExecutionLimits(1, 60.0, 90.0), ) ) baseline = result.baseline diff --git a/tests/test_candidate_executor.py b/tests/test_candidate_executor.py index e61fcfc62..c91ca4cb0 100644 --- a/tests/test_candidate_executor.py +++ b/tests/test_candidate_executor.py @@ -905,7 +905,7 @@ def test_seed_15_final_artifact_keeps_terminal_approaches_distinct() -> None: CandidateExecutionRequest( path.read_text(), source_dir=str(path.parent), - limits=ExecutionLimits(1, 20.0, 30.0), + limits=ExecutionLimits(1, 60.0, 90.0), ) ).baseline From b69ac42c9f45993cb33ce1b5a67e1bdce0df47b8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 15:57:51 +0100 Subject: [PATCH 085/158] fix(routing): derive corner families from their own concentric frames [skip ci] An interior corner cohort names one edge's corners, which can be a fragment of a cross-edge concentric family: members whose stored radii already agree on one base keep that nesting instead of collapsing onto a second arc centre (the wedge gaps at the peel-off wrap corners). A settled member corner recording a wider-than-standard family reference at zero displacement is a provisional handler radius laundered into a base; where the allocation re-derived that corner on the standard base and its record resolves on the allocated geometry, the allocated inputs replace it, which returns the packed-cell entry family to standard-radius concentric nesting. TestNestedCornerFamilies locks cross-edge families onto shared arc centres corpus-wide, and the packed-cell regression pins its entry families to the standard base radius. Co-Authored-By: Claude Fable 5 --- src/nf_metro/layout/routing/normalize.py | 13 ++ src/nf_metro/layout/routing/planning.py | 117 ++++++++++++++--- tests/test_svg_paths.py | 159 +++++++++++++++++++++++ 3 files changed, 274 insertions(+), 15 deletions(-) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index c4611cdcd..e96eaf40f 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1280,6 +1280,19 @@ def wholesale_pair(a: _SemanticEndCorner, b: _SemanticEndCorner) -> bool: ) prepared.append((member, radius_index, offset, list(radii))) + if cohort_key[0] == "edge": + # An interior cohort names one edge's corners, which can be a + # fragment of a wider cross-edge family: members whose stored + # radii already agree on one concentric base are that family's + # correct nesting, and re-deriving the fragment from the flat + # base would collapse it onto a second arc center. + implied = [ + radii_list[radius_index] - offset + for _member, radius_index, offset, radii_list in prepared + ] + if max(implied) - min(implied) <= COORD_TOLERANCE_FINE: + continue + def reference_fits(candidate: float) -> bool: for member, radius_index, offset, desired in prepared: desired[radius_index] = concentric_corner_radius_at( diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index 3f85dda6c..c42d85afc 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -136,6 +136,102 @@ def _allocated_points_in_source_frame( return tuple(points) +def _reconciled_corner_inputs( + plan: RouteMemberGeometryPlan, + allocated: RouteMemberGeometryPlan, + allocated_points: tuple[tuple[float, float], ...], + allocation_changed_path: bool, +) -> tuple[ + tuple[float, ...] | None, + tuple[tuple[int, tuple[float | None, float | None]], ...], + tuple[tuple[int, tuple[float | None, float | None]], ...], +]: + """Reconcile a member's settled and allocated corner inputs, per corner. + + An allocation that moved the path owns every corner outright. On an + unchanged path the settled record wins corner by corner, with one + exception: a settled corner recording a family reference wider than the + standard radius at zero displacement is a provisional handler radius + laundered into a base (a real widened family records the displacement it + nests at, and a coincide-unified corner shares its vertex), so where the + allocation re-derived that corner on the standard base and its record + resolves on the allocated geometry, the allocated inputs replace it. + """ + from nf_metro.layout.constants import CURVE_RADIUS + from nf_metro.layout.routing.corners import concentric_corner_radius_at + + if allocation_changed_path or plan.curve_radii is None: + return ( + allocated.curve_radii, + allocated.concentric_corner_offsets_by_segment, + allocated.concentric_corner_bases_by_segment, + ) + if allocated.curve_radii is None or len(allocated.curve_radii) != len( + plan.curve_radii + ): + return ( + plan.curve_radii, + plan.concentric_corner_offsets_by_segment, + plan.concentric_corner_bases_by_segment, + ) + allocated_offsets = dict(allocated.concentric_corner_offsets_by_segment) + allocated_bases = dict(allocated.concentric_corner_bases_by_segment) + plan_offsets = dict(plan.concentric_corner_offsets_by_segment) + plan_bases = dict(plan.concentric_corner_bases_by_segment) + merged_radii = list(plan.curve_radii) + merged_offsets = dict(plan.concentric_corner_offsets_by_segment) + merged_bases = dict(plan.concentric_corner_bases_by_segment) + for i in range(len(merged_radii)): + plan_offset_pair = plan_offsets.get(i + 1) + plan_base_pair = plan_bases.get(i + 1) + plan_offset = plan_offset_pair[0] if plan_offset_pair is not None else None + plan_base = plan_base_pair[0] if plan_base_pair is not None else None + if ( + plan_offset is None + or plan_base is None + or abs(plan_offset) > COORD_TOLERANCE + or plan_base <= CURVE_RADIUS + COORD_TOLERANCE + ): + continue + offset_pair = allocated_offsets.get(i + 1) + base_pair = allocated_bases.get(i + 1) + offset = offset_pair[0] if offset_pair is not None else None + base = base_pair[0] if base_pair is not None else None + if ( + offset is None + or base is None + or base > CURVE_RADIUS + COORD_TOLERANCE + or i + 2 >= len(allocated_points) + ): + continue + implied = concentric_corner_radius_at( + allocated_points[i], + allocated_points[i + 1], + allocated_points[i + 2], + offset, + base, + ) + if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE: + continue + merged_radii[i] = allocated.curve_radii[i] + for segment_rank, tuple_index in ((i, 1), (i + 1, 0)): + source_pair = allocated_offsets.get(segment_rank) + source_base = allocated_bases.get(segment_rank) + if source_pair is None or source_base is None: + continue + offsets_pair = list(merged_offsets.get(segment_rank, (None, None))) + bases_pair = list(merged_bases.get(segment_rank, (None, None))) + offsets_pair[tuple_index] = source_pair[tuple_index] + bases_pair[tuple_index] = source_base[tuple_index] + merged_offsets[segment_rank] = (offsets_pair[0], offsets_pair[1]) + merged_bases[segment_rank] = (bases_pair[0], bases_pair[1]) + return ( + tuple(merged_radii), + tuple(sorted(merged_offsets.items())), + tuple(sorted(merged_bases.items())), + ) + + def _with_settled_exit_turns( execution: MemberGeometryExecution, allocation: MemberGeometryExecution, @@ -183,28 +279,19 @@ def _with_settled_exit_turns( ) for channel in allocated.gap_channels ) + radii, offsets, bases = _reconciled_corner_inputs( + plan, allocated, allocated_points, allocation_changed_path + ) plans.append( replace( plan, points=allocated_points, - curve_radii=( - allocated.curve_radii - if allocation_changed_path - else plan.curve_radii - ), + curve_radii=radii, gap_slots=allocated.gap_slots, trunk_slot=allocated.trunk_slot, gap_channels=gap_channels, - concentric_corner_offsets_by_segment=( - allocated.concentric_corner_offsets_by_segment - if allocation_changed_path - else plan.concentric_corner_offsets_by_segment - ), - concentric_corner_bases_by_segment=( - allocated.concentric_corner_bases_by_segment - if allocation_changed_path - else plan.concentric_corner_bases_by_segment - ), + concentric_corner_offsets_by_segment=offsets, + concentric_corner_bases_by_segment=bases, ) ) continue diff --git a/tests/test_svg_paths.py b/tests/test_svg_paths.py index f06d3624f..f60255aa1 100644 --- a/tests/test_svg_paths.py +++ b/tests/test_svg_paths.py @@ -10,6 +10,7 @@ import math import re +import warnings import xml.etree.ElementTree as ET from pathlib import Path @@ -776,3 +777,161 @@ def test_real_routes_agree_across_renderers(self, fixture): checked += 1 if checked == 0: pytest.skip(f"no multi-corner routes in {fixture.stem}") + + +# --------------------------------------------------------------------------- +# Nested corner families share one arc center across edges +# --------------------------------------------------------------------------- + + +class TestNestedCornerFamilies: + """Corners nested one lane pitch apart must pivot about one center. + + A concentric corner family is not limited to routes of one source or one + edge: legs of several edges can stack through one physical turn, offset + diagonally by the lane pitch. Two same-direction corners in that + wholesale relation that do not share an arc center draw wedge gaps + mid-curve (delamination), and a family re-derived from a smaller nesting + frame than actually turns there collapses onto a second center. Corners + whose resolved radius is clamped by a short leg are exempt: a clamped + radius is not shared geometry. + """ + + CENTER_EPS = 1.5 + MAX_PITCH = 3 * OFFSET_STEP + + def _corners(self, routes, offsets): + out = [] + for r in routes: + if not r.is_inter_section or not r.curve_radii: + continue + pts = apply_route_offsets(r, offsets) + if len(pts) - 2 != len(r.curve_radii): + continue + resolved = resolve_curve_radii(pts, list(r.curve_radii)) + for k in range(1, len(pts) - 1): + prev, curr, nxt = pts[k - 1], pts[k], pts[k + 1] + if not ( + (abs(prev[0] - curr[0]) < 0.01 and abs(curr[1] - nxt[1]) < 0.01) + or (abs(prev[1] - curr[1]) < 0.01 and abs(curr[0] - nxt[0]) < 0.01) + ): + continue + if abs(resolved[k - 1] - r.curve_radii[k - 1]) > 0.01: + continue + u = _unit_direction(prev, curr) + v = _unit_direction(curr, nxt) + if u is None or v is None or u == v: + continue + out.append((r, k, curr, r.curve_radii[k - 1], u, v)) + return out + + def _check(self, routes, offsets): + corners = self._corners(routes, offsets) + for i, (ra, ka, va, radius_a, ua, vaxis) in enumerate(corners): + for rb, kb, vb, radius_b, ub, vbxis in corners[i + 1 :]: + if (ua, vaxis) != (ub, vbxis): + continue + dx, dy = vb[0] - va[0], vb[1] - va[1] + span = max(abs(dx), abs(dy)) + if span < 0.01 or span > self.MAX_PITCH: + continue + if abs(abs(dx) - abs(dy)) > 0.01: + continue + # Nesting offsets run along the concentric diagonal (the sum + # of the inward normals); a perpendicular offset is a + # staggered pair, not one family. + diag = (vaxis[0] - ua[0], vaxis[1] - ua[1]) + if abs(dx * diag[1] - dy * diag[0]) > 0.01: + continue + if abs(abs(radius_a - radius_b) - span) > 0.01: + continue + center_a = _arc_center( + ra.points[ka - 1], va, ra.points[ka + 1], radius_a + ) + center_b = _arc_center( + rb.points[kb - 1], vb, rb.points[kb + 1], radius_b + ) + spread = max( + abs(center_a[0] - center_b[0]), + abs(center_a[1] - center_b[1]), + ) + assert spread <= self.CENTER_EPS, ( + f"nested corners at {va} ({ra.edge.source}->" + f"{ra.edge.target} {ra.line_id} r={radius_a}) and {vb} " + f"({rb.edge.source}->{rb.edge.target} {rb.line_id} " + f"r={radius_b}) pivot about centers {center_a} and " + f"{center_b}: the family delaminates through the turn" + ) + + @pytest.mark.parametrize( + "fixture", + sorted(TOPOLOGIES_DIR.glob("*.mmd")), + ids=lambda p: p.stem, + ) + def test_topology_fixtures(self, fixture): + _, routes, offsets, _ = _layout_and_route_file(fixture) + self._check(routes, offsets) + + +def _unit_direction(a, b): + dx, dy = b[0] - a[0], b[1] - a[1] + if abs(dx) < 0.01 and abs(dy) < 0.01: + return None + if abs(dx) >= abs(dy): + return (1, 0) if dx > 0 else (-1, 0) + return (0, 1) if dy > 0 else (0, -1) + + +def test_packed_cell_entry_families_keep_the_base_radius(): + """A settled exit turn's reseat states the standard corner base. + + A corner that carries no recorded concentric inputs falls back to the + standard base radius: reading the lane's resolved radius as a base + re-records its whole stack depth as the family's reference, and the + semantic corner cohort then re-derives every lane of the entry family + from that inflated base, drawing a non-standard, far-too-wide turn. + Every maximal nested up-then-right corner chain in this map must + therefore bottom out at the standard base radius. + """ + from nf_metro.api import prepare_graph, resolve_theme + from nf_metro.render.svg import build_observed_render_plan, emit_render_plan + + fixture = TOPOLOGIES_DIR / "packed_cell_right_exit_left_entry_wrap.mmd" + graph = prepare_graph(fixture.read_text(), source_dir=str(fixture.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + observed = build_observed_render_plan(graph, resolve_theme(None, graph)) + svg = emit_render_plan(observed.plan) + + corners = [] + for match in re.finditer(r' corner[1] + and abs(after[1] - corner[1]) < 0.01 + and after[0] > corner[0] + ) + if up_then_right: + corners.append((corner, abs(corner[1] - before[1]))) + + chains: list[list[tuple[tuple[float, float], float]]] = [] + for corner, radius in sorted(corners): + for chain in chains: + head_corner, _head_radius = chain[-1] + dx = corner[0] - head_corner[0] + dy = corner[1] - head_corner[1] + if 0.01 < dx <= 2 * OFFSET_STEP and abs(dx - dy) < 0.01: + chain.append((corner, radius)) + break + else: + chains.append([(corner, radius)]) + + families = [chain for chain in chains if len(chain) >= 3] + assert families, "expected at least one nested up-then-right entry family" + for chain in families: + innermost = min(radius for _corner, radius in chain) + assert innermost <= CURVE_RADIUS + 0.01, ( + f"entry family at {chain[0][0]} bottoms out at radius {innermost}: " + f"the family was re-derived from an inflated base" + ) From 3b1793a1d839f4b9e1d85c5d7431e12b16f7feba Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 15:20:27 +0100 Subject: [PATCH 086/158] fix(routing): let single-line-port seams agree with their partner lane [skip ci] A straight inter-section connector has no vertical leg to absorb an endpoint lane mismatch, so the deferred-offset renderer distributes the difference linearly and the seam reads as an almost-horizontal slope. Horizontal reconciliation now includes same-Y inter-section seams in its collision-checked snap, restricted to moving a single-line port: such a port has no bundle constraining its lane, while junction and multi-line stacks feed fan, dogleg, and corridor geometry planned from their lanes. A seam invariant holds the frozen seed corpus to level drawn seams. Co-Authored-By: Claude Fable 5 --- review_pngs/seed_15_after.png | Bin 0 -> 133734 bytes review_pngs/seed_15_after.svg | 272 +++++++++ review_pngs/seed_15_before.png | Bin 0 -> 199498 bytes review_pngs/seed_15_before.svg | 481 +++++++++++++++ review_pngs/seed_41_after.png | Bin 0 -> 211363 bytes review_pngs/seed_41_after.svg | 401 +++++++++++++ review_pngs/seed_41_before.png | Bin 0 -> 303067 bytes review_pngs/seed_41_before.svg | 674 +++++++++++++++++++++ review_pngs/seed_72_after.png | Bin 0 -> 130064 bytes review_pngs/seed_72_after.svg | 249 ++++++++ review_pngs/seed_72_before.png | Bin 0 -> 173421 bytes review_pngs/seed_72_before.svg | 352 +++++++++++ review_pngs/seed_77_after.png | Bin 0 -> 234174 bytes review_pngs/seed_77_after.svg | 496 ++++++++++++++++ review_pngs/seed_77_before.png | Bin 0 -> 327321 bytes review_pngs/seed_77_before.svg | 785 +++++++++++++++++++++++++ src/nf_metro/layout/routing/offsets.py | 40 +- tests/test_seam_lane_agreement.py | 63 ++ 18 files changed, 3806 insertions(+), 7 deletions(-) create mode 100644 review_pngs/seed_15_after.png create mode 100644 review_pngs/seed_15_after.svg create mode 100644 review_pngs/seed_15_before.png create mode 100644 review_pngs/seed_15_before.svg create mode 100644 review_pngs/seed_41_after.png create mode 100644 review_pngs/seed_41_after.svg create mode 100644 review_pngs/seed_41_before.png create mode 100644 review_pngs/seed_41_before.svg create mode 100644 review_pngs/seed_72_after.png create mode 100644 review_pngs/seed_72_after.svg create mode 100644 review_pngs/seed_72_before.png create mode 100644 review_pngs/seed_72_before.svg create mode 100644 review_pngs/seed_77_after.png create mode 100644 review_pngs/seed_77_after.svg create mode 100644 review_pngs/seed_77_before.png create mode 100644 review_pngs/seed_77_before.svg create mode 100644 tests/test_seam_lane_agreement.py diff --git a/review_pngs/seed_15_after.png b/review_pngs/seed_15_after.png new file mode 100644 index 0000000000000000000000000000000000000000..4591b5023fcb282c7a711a6d6dc719a6387290b2 GIT binary patch literal 133734 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 >7GMSl9)a~>xl>53PKMt;fkSld8kOIpya<_) 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Д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 + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +4 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N2.0 + +N5.0 + +N6.0 + +N1.0 + +N7.0 + +N9.0 + +N10.0 + +N0.0 + +N3.0 + +N4.0 + +N8.0 + +N2.1 + +N5.1 + +N6.1 + +N9.1 + +N1.1 + +N7.1 + +N10.1 + +N6.2 + +N9.2 + +N10.2 + +N10.3 + + +Line 1 + +Line 2 + +Line 3 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_15_before.png b/review_pngs/seed_15_before.png new file mode 100644 index 0000000000000000000000000000000000000000..9622a60bc1af4b4a33b1a3fc9058fe428bfa1e2a GIT binary patch literal 199498 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
X(i^qXF0~ItHYo$2f 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%0A;4pxqQ-pRJpd^Se(#yznl|PIt{J{7slFgh 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 literal 0 HcmV?d00001 diff --git a/review_pngs/seed_15_before.svg b/review_pngs/seed_15_before.svg new file mode 100644 index 000000000..44d6655e5 --- /dev/null +++ b/review_pngs/seed_15_before.svg @@ -0,0 +1,481 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +4 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N2.0 + +N5.0 + +N6.0 + +N1.0 + +N7.0 + +N9.0 + +N10.0 + +N0.0 + +N3.0 + +N4.0 + +N8.0 + +N2.1 + +N5.1 + +N6.1 + +N9.1 + +N1.1 + +N7.1 + +N10.1 + +N6.2 + +N9.2 + +N10.2 + +N10.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s1__exit_right_1 (right) + +s2__exit_right_2 (right) + +s3__exit_left_3 (left) + +s4__exit_left_4 (left) + +s5__exit_left_5 (left) + +s6__exit_left_6 (left) + +s7__exit_left_7 (left) + +s8__exit_left_8 (left) + +s9__exit_left_9 (left) + +s1__entry_left_10 (left) + +s4__entry_right_11 (right) + +s2__entry_left_12 (left) + +s3__entry_left_13 (left) + +s6__entry_right_14 (right) + +s9__entry_right_15 (right) + +s5__entry_right_16 (right) + +s8__entry_right_17 (right) + +s7__entry_right_18 (right) + +s10__entry_right_19 (right) + +__junction_20 (?) + +__junction_21 (?) + +__junction_22 (?) + +__junction_23 (?) + +__junction_24 (?) + +__junction_25 (?) + +__junction_26 (?) + +__junction_27 (?) + +__merge_8 (?) + +__merge_9 (?) + +__merge_10 (?) + +__merge_11 (?) + +__merge_12 (?) + +__merge_13 (?) + +col 0|1 + +col 1|2 + +col 2|3 + +col 3|4 + +col 4|5 + +col 5|6 + + +row 0|1 +row 1|2 + +row 0 grid + +row 0 grid + +row 0 grid + +row 1 grid + +row 2 grid + +row 2 grid + +row 2 grid + + +row 2 grid + +row 2 grid + +row 2 grid + + +row 2 grid + + +Line 1 + +Line 2 + +Line 3 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_41_after.png b/review_pngs/seed_41_after.png new file mode 100644 index 0000000000000000000000000000000000000000..56c1ca5e98a99036f7b4f154bec10254e7f317d3 GIT binary patch literal 211363 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 IcjE8=3+^D?x&QzG literal 0 HcmV?d00001 diff --git a/review_pngs/seed_41_after.svg b/review_pngs/seed_41_after.svg new file mode 100644 index 000000000..0392ffbd2 --- /dev/null +++ b/review_pngs/seed_41_after.svg @@ -0,0 +1,401 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":22.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":698.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +6 + + + +4 + + + +8 + + + +10 + + + +11 + + + +7 + + + +9 + + + +12 + + + +13 + + + +14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N0.0 + +N1.0 + +N3.0 + +N5.0 + +N9.0 + +N4.0 + +N12.0 + +N13.0 + +N2.0 + +N7.0 + +N10.0 + +N11.0 + +N6.0 + +N8.0 + +N0.1 + +N1.1 + +N9.1 + +N3.1 + +N5.1 + +N4.1 + +N12.1 + +N13.1 + +N2.1 + +N7.1 + +N10.1 + +N11.1 + +N9.2 + +N4.2 + +N5.2 + +N2.2 + +N3.2 + +N12.2 + +N2.3 + +N9.3 + +N5.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_41_before.png b/review_pngs/seed_41_before.png new file mode 100644 index 0000000000000000000000000000000000000000..c7046ca8cba9c74719cb6030e418a15754bfaf65 GIT binary patch literal 303067 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%0DI36Uo7e9z`adR_;N>lP(MFKb-2b4uc-633` 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

Ul8OPtt{`TYY~qvfx>$ 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 literal 0 HcmV?d00001 diff --git a/review_pngs/seed_41_before.svg b/review_pngs/seed_41_before.svg new file mode 100644 index 000000000..f75a4d7fb --- /dev/null +++ b/review_pngs/seed_41_before.svg @@ -0,0 +1,674 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":696.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +6 + + + +4 + + + +8 + + + +10 + + + +11 + + + +7 + + + +9 + + + +12 + + + +13 + + + +14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N0.0 + +N1.0 + +N3.0 + +N5.0 + +N9.0 + +N4.0 + +N12.0 + +N13.0 + +N2.0 + +N7.0 + +N10.0 + +N11.0 + +N6.0 + +N8.0 + +N0.1 + +N1.1 + +N9.1 + +N3.1 + +N5.1 + +N4.1 + +N12.1 + +N13.1 + +N2.1 + +N7.1 + +N10.1 + +N11.1 + +N9.2 + +N4.2 + +N5.2 + +N2.2 + +N3.2 + +N12.2 + +N2.3 + +N9.3 + +N5.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s1__exit_right_1 (right) + +s2__exit_right_2 (right) + +s3__exit_right_3 (right) + +s4__exit_left_4 (left) + +s5__exit_left_5 (left) + +s6__exit_left_6 (left) + +s7__exit_left_7 (left) + +s8__exit_left_8 (left) + +s9__exit_left_9 (left) + +s10__exit_left_10 (left) + +s11__exit_left_11 (left) + +s1__entry_left_12 (left) + +s2__entry_left_13 (left) + +s5__entry_left_14 (left) + +s12__entry_right_15 (right) + +s3__entry_left_16 (left) + +s4__entry_right_17 (right) + +s9__entry_right_18 (right) + +s10__entry_right_19 (right) + +s13__entry_right_20 (right) + +s6__entry_right_21 (right) + +s7__entry_right_22 (right) + +s8__entry_right_23 (right) + +s11__entry_right_24 (right) + +__junction_25 (?) + +__junction_26 (?) + +__junction_27 (?) + +__junction_28 (?) + +__junction_29 (?) + +__junction_30 (?) + +__junction_31 (?) + +__junction_32 (?) + +__junction_33 (?) + +__merge_9 (?) + +__merge_10 (?) + +__merge_11 (?) + +__merge_12 (?) + +__merge_13 (?) + +__merge_14 (?) + +__merge_15 (?) + +__merge_16 (?) + +__merge_17 (?) + +col 0|1 + +col 1|2 + +col 2|3 + +col 3|4 + +col 4|5 + +col 5|6 + +col 6|7 + +col 7|8 + + +row 0|1 +row 1|2 + +row 0 grid + +row 0 grid + +row 1 grid + + + +row 0 grid + + +row 2 grid + +row 1 grid + + + + +row 2 grid + +row 2 grid + +row 2 grid + +row 2 grid + + + +row 2 grid + +row 2 grid + +row 2 grid + +row 2 grid + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_72_after.png b/review_pngs/seed_72_after.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0fbd7262b6470ab5c054820e70704ccc9f7483 GIT binary patch literal 130064 zcmdSBWmJ@H_%Aw$fg-ka7=VI=NJ*oT(k-3R0@6KL7?gm3G)gx}H;RaWFmy9WH$ykf zxgLD~XP+;7op1ZBmn1nuc?N|-kw{C4DWgy)@=&Og!$c?H zk<(g+U*VsVMlzCOC_M6CLRD%g3Uv)7E%rdwHD+Ph#kG6#0Kd{p(Z4`{!Ixf?{98RL zS@G$6LJFJbUtT6^S<-Z?=M{ZeRVid0;BOn~=~2oiymImGOTu+OKa>OyL7nWiS0A5G z;evFgxo%B6ggAtR#)K|=>S(a7QcMfm+RLw2WA+@-OM_hIZP!ZRT8{p_yEi3u>VLlR zxp=1Uzps7L#0aSV`}#uIZ3DvpzW#dYg!O-4imHC~A^Gp?caN{+5&ZYH()(jP|9yFl zS*aGed*qK8!~dx_Hwkb=5$WaXRdr=*uqP)a-R9%dR8v!HYHsetR(WiU2Z=O|+KKUt z{ktv{5!IPKr5x=Nn<#Fpa7Ou=+k5P=Q9VTfOA$yXQ$JEMQWpEQO4J= z4{yoGv<2{D$!C|3eyO?AZ3D^l*RPKcJ9f%N33(Kcjg8F-jTq&dw4-kQInRWuH8;aQjn8$k*vO4|&3qXU*Hj-;z+J)Zh`LiZ~6EORTYFb zKEYkjl;E50=7Rik$s@>bc(Bc+-}sWDetBCuRlQU$7wQ5gGa3|`$xZ7JZon6R`2&od-2

!{=~}cBIT9)uwvK^y-x>+Y1;B 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

pfvO>TQ#{>udbTvyAg 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 L{~Gs;!TJ9M+p_WM literal 0 HcmV?d00001 diff --git a/review_pngs/seed_72_after.svg b/review_pngs/seed_72_after.svg new file mode 100644 index 000000000..186ea6788 --- /dev/null +++ b/review_pngs/seed_72_after.svg @@ -0,0 +1,249 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":124.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} + +Candidate recovery fuzz + + +1 + + + +2 + + + +4 + + + +9 + + + +3 + + + +5 + + + +6 + + + +7 + + + +8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N3.0 + +N7.0 + +N8.0 + +N0.0 + +N2.0 + +N5.0 + +N1.0 + +N6.0 + +N4.0 + +N3.1 + +N7.1 + +N8.1 + +N0.1 + +N2.1 + +N5.1 + +N1.1 + +N6.1 + +N4.1 + +N7.2 + +N2.2 + +N5.2 + +N1.2 + +N3.2 + +N7.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 + +Line 6 + +Line 7 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_72_before.png b/review_pngs/seed_72_before.png new file mode 100644 index 0000000000000000000000000000000000000000..e5244251c9bc94812185146eaa2622d642b27d8f GIT binary patch literal 173421 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�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∾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 literal 0 HcmV?d00001 diff --git a/review_pngs/seed_72_before.svg b/review_pngs/seed_72_before.svg new file mode 100644 index 000000000..76883e33e --- /dev/null +++ b/review_pngs/seed_72_before.svg @@ -0,0 +1,352 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":14.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":122.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} + +Candidate recovery fuzz + + +1 + + + +2 + + + +4 + + + +9 + + + +3 + + + +5 + + + +6 + + + +7 + + + +8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N3.0 + +N7.0 + +N8.0 + +N0.0 + +N2.0 + +N5.0 + +N1.0 + +N6.0 + +N4.0 + +N3.1 + +N7.1 + +N8.1 + +N0.1 + +N2.1 + +N5.1 + +N1.1 + +N6.1 + +N4.1 + +N7.2 + +N2.2 + +N5.2 + +N1.2 + +N3.2 + +N7.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s2__exit_right_1 (right) + +s3__exit_right_2 (right) + +s5__exit_right_3 (right) + +s6__exit_left_4 (left) + +s7__exit_left_5 (left) + +s1__entry_left_6 (left) + +s2__entry_left_7 (left) + +s3__entry_left_8 (left) + +s4__entry_left_9 (left) + +s7__entry_right_10 (right) + +s5__entry_left_11 (left) + +s6__entry_right_12 (right) + +s8__entry_right_13 (right) + +__junction_14 (?) + +__junction_15 (?) + +__junction_16 (?) + +col 0|1 + +col 1|2 + + + +row 0|1 +row 1|2 +row 2|3 + +row 0 grid + +row 0 grid + +row 1 grid + +row 2 grid + + +row 0 grid + +row 1 grid + +row 3 grid + +row 3 grid + + + +row 3 grid + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 + +Line 6 + +Line 7 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_77_after.png b/review_pngs/seed_77_after.png new file mode 100644 index 0000000000000000000000000000000000000000..55d9e3996a5f4fad079754d0ec5584b2f840e70a GIT binary patch literal 234174 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

^_n+f;PrFBQX! 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≫Io}PmV(UBFEAn+8& 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�?>;mR4W0RK7kB>sJq_W<(OWuF8Qr*jM zlFq&qJzOStj)G!^k&0c>6|3o{we>q zhyCV!3)3#$(F|Pp$eKK)Bjg%m%8T3cB=+3hy=6U$c>D21F>)^S1`Y%;!8-N*3dt7Z z(yFAa19OIfokc|X`5Le9dtj^lAipg*V0oedP`+xm2x9T_nIg>Kg5bO zpk)C^7u2AZK%L5DYisWLrmG4BO(>KU{da$Z&F<>wzf*ksPzgj5x#&%N4# z+ViJ}X@slFqWD|ad6U-1kkgQ#*k?YN>`~baS}TqPV=XOjD+Am~5`|hvXn){QSMO_1 z_2C(u`f$uc}>cmCMd*DU1?V{YLmN4)Ho2T+-h@&3qVQPEO`B!JuLh zhp9$d%mmu){jld(F3M=QLge`fA~rmOvA`rF2iw1IzFcySvB>s69Jzk-!SCAsiHNND zzMW64((aaaQ}X7P|yn%;Ryyx(Ppd tmfHlTVm)m2|gXw0kO7RY+(ei+U-8+ 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

Mf0T3VAIMB^kGGtU4aY)*?6FX2v|pyJ$xI{phX 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∈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

n3%caJ({wN!(L)bM3l0}*B9-9oV>ugobklpNiY zm;LX%=jwdD7mkrAc5+M@lf-78>wH`37xnF5gKs?`#`4d`GPnWZ(gWrgP%{G$R%dys z^XmNeA>cpT_?48Ch3xhD*ah3OH$Li93kVG@Z*3XIXNq&}S)LZT)O)^C@%qVqI4F5` z?m9Q7C)7Lepeue1l|K$F#`@NzL!#HTpU5EOZ~d@Vk66G76Lr2`mY8=`YF~$p(Z986Jm>K>F3j z&(9CW0$8bKVP*uT+u=oJf%Yu45kpT$777bdT7ErH4flupVyxCd6Sf3e&HFKVDM(8n ztY|fM-Fu}Zu_$(@^`7l8+`(c74!32p% zPmszi&$ASH?}zHvhk}I`Q3aMJ#@p1tW?c9(SGgF~8>6MF-Fu~}Ol-oK3^%U$O?8l= z>l*6Y8nu|b?e;VgbmHBB+66FC^Ts~JNT2Q!)Z751ceq?g+wW=amaj$x3zvs!dF9E;B zsuX36Ee61Y8sMu#o+D!HHy0m)DR^;2`&$0Jl~AClAEthx@E*>Jrw?<-DvhIQWa*b0 z{s!Hv23&s2WPJn0+b<%5J4=ycV2lM@8F_4vSI6YegO2VF%cDQo^9+^>x$z^{K3}^^R6r6x(k`GaWH|&&zek zh{-RNX-j!q`%>|OVb8B)H3~hJTsxL0iMl%2B4kv0mqlDRy`6(=9_8I(-)YQyvNm(Z z2}+*lUqQlAj)UCD)ipt{&L!#r(?fx5i#Q1*G#uL-y$M|wm(&%)4Y&Y3site=6>uuV z_*mDes9Gx5mP2KY@9`?dfO7+jKdleSkoLRtWKpu*u@C#Fr+aIiS3!8j)Y#a6&QLt^ zn)Wy7NQaFITHqjVXHiaW8t!>2?ALqFOW|~;O|x^%UAn^&xxFF0l#@Wd9H{y6J#s#| zAKOCMAz$6-1m2Ra`YU-wJ$K0Jjy#;5GAryf*V7hDOG-+H?y*HZc&o_VWqM7KnGdz; z3PnNKFX8V2MiN@NV|o^QJ<{r12|rW!O@}m?xtiY5x_H_;c|H|XeO^aILWo^+`UX)j z^3~d5j66)W=TK0K{0fps{_!2+$cktF(pJHypY|e&``mXT}IYuk|v&f0GH>6NfHZHKH`pf`lZ=GOZc(K5VFD|8@-*}r?sOK2b>MZX}*e@pL zKff8Bm&ZsE_I6t2rSeFQN-ShKJi=D=&HSJ9&J#zaR6}8s~YwKz$9QzPP z6NXx$m^83+z*w6+T{ZXtlhh4j@P6$;rc(CWL7@j$)YxshFM#wbTpd6n?;98xjJX6F zKGR;@_jEMmnMYwCKXse$zNbIK|7hfP-bRkvY4BL_NAiiz$KJ$S+K@q=9oDk zz$>q)APH@Ql*4lX2mX!oe#w29kK>I;LNn-Zre-Kp`3g4c;~W$ z!Nyb_nuOmmPtyM9rB_FkA;Fy)={b^ksX{4-iVeDE*b)0d?F%)KYiargLDfgjh|7*Y;@SqWl5vF!!+2WZB>#-MnZZd zcSG*q8nS-HdA$XbDBJKV;S<;UK{)u%DScHumWqSM6RTAiXv_@MFW*$=yfx4z`lLIE zAT4B|ExdWHprcakONoj9%o9hPM$}NB>WJXsa+LdCqsYVWO`F$2(iic_jr&Wn5Pd1y zL*GnXT|Ez&-RxkDwP`6`5c=a#*G$codSv#=sOiIgMHj*M=f0f}h@ztCFm&7X%SW@Z zkz2D*=&S}?Tnk8RtS8XW>q+Pz=Ce_UJ8`_ff!(ClIpFF*lx=B5j^`Tc_D%l6l=WwdEvq^k_5e^P7>hWIu9268J&vX?qZEEW3(x4t`PvcNSQ)#VrQj-|` zj+#h&8%>04Bpqcvk)4whAzyYJ!g7lC*&)+Vqsn#bGQPOoam%u_h5p8maUgyo;1 zkZVrNuP18@v5N#Y^_?B{UTaMM)MC;4<}m@;yX!;-D063Ro*RH<}T zTy2V|0B|-S3A?)cb2E$p)oohl^u{Zg=`PKJ@CQwe(AM$-RfdN6&iw{<9PR8IGzSq{5-HX zy4LGM2j|1GsHbsR%HMfeJM16&KHPLo{u|3DRh;e<)QJ^mc1{$P6!%gFnTSI8N_fgx zhD>LXh@M@Ty%JdenVExVFXe`V=YBpd%9D0_2AWo!TwI_cfafrx*s(R6KptUe=mDCi z_qNV>F8d@{@c=7;8z{vyesPpm8IzEbOC=KASnM~F)u;X8rXpiph@Q0eFliyIOdYo_ z%@{Y7RyY)&R=wbTvNM#1hc)}%EP=!On;;q@-*CJ>KcZusvZ<(TaJr(Uz`fvC!?a*J za{Dwyi(mzTwVKq^80jl?vY_pJKu(fK0GZ^72tx2F!Hr;`3WvNk$hlv;;&e5t%u$bG zqOuFM%@iXKUKm8!D;TVZn|Qa4S3B(zd_;e=+gkrd%qAY_|K3_6kt>yO*}u;|BtoLi zfgf39m1v1#{}J70%i#SOFm0U+kV62oNY5patMLZ>{kgDs)8wG|ATnx38#inc`S=5!cDy zpsEZ8`N75P?^iqf6?qm68oNC}qF**52JMJwEzGPVN44^~vm8aisv0XR$B>3SFPddw zpi+E;$GxpDW31*#6O^9L07e{2YUpm3*X}Xi-cH3P1I6vsTKjy-yZwnc8lRjIrIgh% z-xVc29M#^yXmOZBU{tzeQU*fM-7HEJ=yyJ7mzD(o!wvjbbd=XW&th9ZKp@k%G0~r z7P{Kf5QBBByy7kO7dvBIvZ{3CHv5ckqoJC#M<}+?G?B};?$dkQji>T?AGnCo$f5u1 z;H~f4Qh!uH%|c+o|LPgiFt2u^S#1gTm5KIfrIHvO>Te+)lq~xQ?o9G5SEAeSe70D8 zq!3ZJhT)EKkW*#dK$Oamg`(msCG}BMOICtra#D2IJzTTjvo^2s8nLp);2fc9(B=rb z*jN-De>b$+(}2Qn=kfHu#PrG19miIJJ3oeoWW?yq`clQkc78~MRk@IJflfd=?jO{s z6U)VulLr@}$t|T=>{m&RvlqAIo+7Tk~%xJndsvv3ZZ=YN1J6NF(T(Ov-g z31>Z6OT9HN;GTF&5WQO4{O&TyY$77)JH(T|z@vHU=dWd&T_A7l6!W*uu2dte@c~S3 zXqf;_+;8wDwp{7H`L7#qHZDn-E|`Goj+?vEGm&u}x=EK3d&hAr6#wTc{`n92&B5nR zYgu;fLV|-_kIFVI#1dr!s49!YBhMXau#wJg5JsTC`f3Z>aUryOo(Yv>?YGlsI`)B6 z2m@i&SEc&DDVnaEpJ!61#UKQvf3nA%pc*hC=^MA!n+`TeD_ z!4zly$BU4NQ+eX8iSDPxV3Cu)_979MAkx}9^?O0k;W+oS&T=+PgKr7zKC&{VeVkRv zOomL$c}~)hi7pvY*cvM2C|zX`?*J@bR9iuMdZ))UAM|F+jFz!HSzZe6L_E@*x9b!4 z5_7T(Hk<#@gOx_|9u7s+`*rkL|?r`=P^PcYgjd%q()o z@C(ocu+Z+O07bMzxE6FHt?>N#@kV3gjow1m;BH7 z&as+o*;+TRu`Sh?q77eFFF!38vPecxPR%z|#5`Qe7Vw2loxF2aj=0 zDOGaX>`#h8k`tk_?zFHuJbjw{Yw&wK`r|tt(&M@RnT@>a%dgv7*OaOizr^FaTTR!d zQ%I}({x4qp?-_OSJCrcfMB29S@_|JZF8fW$nq&VOGMn#Q*`_c6+HUtZJDR8%80q!f z=;Zs%34uz+p!q=)G+_o~a4)}j};lb-e?^Sx6jFs9U4e^n=cP(Mf7^kbL zW(Id&g>>z?q{luTy{7X<_<7mhbQvo8+rmRGnH$gF>ae|t3dOeK9Ll)GhVw>jcqKEE zJgZ@)&+$cH|Mp2l)>EI|cMeu_x#E4fjcM*53sOf6EYx(0Zs8z;r7kgHUc7?k(D?0J zs+Y$ZPFZ4?V)T_OiMkRSNK5^qL}pX-YEYAGw~3{D|xE_zWtwGids6}9-(hPxXV-M zxi>18Y`*=Wb~rw}^Y5_y?>F;XWqNFgL}7cA7T!6Fd?na|Wn}n=c+?n4`f(WKulf@M zaSuc>ATQbqD&mnK)_#MJj}#I(G9Dgv>IOJ-$*`#YpM#%fOz_WB69$_U{c!wYr|tj@ z^4Q_I0F{n(Y19zTe-GQgp1;Ytyd}y)({6WX_+Els68fhZ>4Bd~f`jFV87`5@`kH7L zbKpUf3OL_Fpbw>6Z~j`2*@Ef6K8otdY9bJbhBG+63qk* zBL4OaddL)a4A3)Ul7CoTXh;bcRcS4{)>VqH9j6{K#jlhTZZ2BNA+7cf^Li2P3a@?v zN6SEN1+mcf9k*+wTJghki+$}aSRHM_<_n>F*GgtKN;x`qF9sSm@q|@N$VM|&>lXTN z>=o`td!4^rW6xM)eG~0qfY~(mj<>QXxN@+<=fBSPpQltfwUXTFiq^u3ADO|Y2v@Wb zZuvJB;IZP+0~!7c^3j*%qmwV=mn3`uz{7tIbJr_aepien?wUPf?txF6%d)|{^b0?XP?cJ(*G^9sZB>ixvE#+ukbJ;1HhBsJXzz2>BQXR zKI@AOISi6twS=;2&ytwCySvdun5aq65fin35_cKy+(HCM2sZ&w5(Wl9+3tfJpp#w@ zle}_E2Q=u=0;f<5kRjiYzp9)f5`Y#!9?Vt({anaLfG~`FjDQ^JeYQ8RLCOsGHiVvVWrHXVZQvS#tjAlE8l(gZB|Zd` z4uqFrR{YOFfJ6OiZo4B^z7|VfWs?6r+%CDI^(uB2#KX*$Og6Si*Fjn=5)!pE4b2)g z%|+#xlrl1mQnCRQ6%~a}LHA%?&n6|2X=u2T;PaMTB2n`h9;sDTYc9D&b(kSv@w}@v zOu%wPNWLf|kCa00R0z&|Nh)F=-n{2jt5tK2Q;O`~f(bVAbIG zzJ7fHl#KBkVP7G^aau>v;s#uOUe1A+l+D1$$Cu@T-}_4Lr}0>Q`?*Gx=IToIVH!(g*(ze^mRs1X6R1s$l+=Kj~3@(85uv;v5h-A zyG`Vqx$*B*C!Ph#!ONv-NCmF;zuoET(D$rndArU7V{l}QU7GI8X=UU78yUtSuxKS9m4J~FLPC&!m{_=xW()&bce7sjtg5%b$CJ^LK>4QaAm|~77 zXeiILcv^Jj>m!mOlP^!TFHvuXl+?co`P{Q|OFXaT;Jf zQP12afDiWT*?76d)ZR5PhBMn}P0lx=p_mx8h4bKn0?Sc_`aX#6g2apbfHzx`P${>U zY&kb0g38+UTtSB4Zf~Qnt>fB>@=e6UoTaDN1&)XQPBWPy+qE^`Y43^1@uym~(hM1f za(GwZs_6w-_y%ZkN%}uU|K5MU{7|>?mSuV~J_MA(ftWUfFhT$O;Kv8|kro=>MWNE* zUQqX9m~GN?`}^C)by7K09DkrY`yQ zUoLeif{KG;pItb5R&F=^|Cu?v=odaw4-LSySbpp2X}!~UsFd@&izV$V;0+mic){ln z4dtrEiDohc5^~p-+#DDg-9kRnDQ7*&&kZd+VVKM8a3TM5m^+o}hETtGP#YKc0DfV9 zD`tQe9G`y<0`W?qeZvR)rH3@61Q9^RPi9Hk>MT!-as)Gr*1J7Cc5iwQ@~2cEJ8=Dd zN59=1$drMy#5f<{jpkKXQ|65e9~Nh3UW5kmtFLY#}GLV`NdcJ>$q&0J>wLbTL1S@^BH~gQ|!9oibXJ!S8XA~khA!r zfPcyAE|!Dd2a6>8)eGR93@FLJ#Q68<@|Oc;j_R#+&quGO37g?|6X;R(!x@)8&&OpK+z zv`8RHqpf?nvA&rM3drp@k&VD%l)Uhy1cWe>_lJjv?NQZJHmG_NZF4ItMIlLdALNY7 zQBS2Wk`2#(b?1fgC$n{u|MpkjT|rQd9gQ1&9M{4?3$rKhgEmdDs0+|_qr8-r3CU#b znU&e!@ERZC{@=ShRa^AU7r&*Yn&-I2k{Uma3itzyw~fBaJK_ta94z8-po2WsD_d$! z4LfITYQimb986iY4|#cI`mpVp^Vkn#{`)4k$qRlU0Xqm5lsIF8HaA1mLN_u-!Z8yWM*B}VfuM?TS)aVpI1>qiE*Kb~{2}4F zUpKS1nG7s5uuoa{qS%YR@GkpTLG5R*o!a)&4>$U2i!OEcz#Sx;*ZM?1ee5p9hskV?s zX#nSI5yNjT5+f%9!#qGgz=v^kuyp=rH8kE4sV#(M1avR{+b}751E$27vzve@n(d5Y43Te+O@xy?l`$5(+!!v7cj=d_N+p+)6T;u^k^$&37xDFnnXPXo*Og#B5{+ zC(WVoC^SEx163bu{JOSqwRhiLSy@>(qdk2@3;G=YbEGIpDJfzYzc8gjpl@@AYo|b*}gXG5iF46$|Z8h_cN^2H*BevBGt#drU+jPg{ zCL-frn@qS2Ka-w^G+vU`MQWmK(W~%@Lj_OzFJT-21enm7xT~qjp;tSktxH=MOpO8Jr{HglSmFcZrT2Ig9LgRk zrmOc%O_|Xt>$w&@?l94!4<9f>Uspd#r-@gRu#Ag+ve`|ES-sl-gU_}*DB+O<<@s5Aw^Im5( zce}urR{Fj9ee2qb3<#>Whuw^wv}Ut|oSs|?u$WqP?)mz@w|VhZbmO4Jr?IM|wlqm7 z?)j>CWE*jRXKbRi;qFSzsKX}`(WmV>qBMvMwM_2D8M(5CLWXbM-7P>R>7K8yt2?=N zTWRpwgiG4U7^>jhfhMdYcD zGwUqnV!{BLhOpsT0?>dxUOOHxZn69B3zQ>&6w}{H*>AVo&0YkS5BDx=p&HnpswQfI zE)==&SPBQMb!TbVw{MF1dUfOw5$DA4tU}Vw^-nW)iS>jaD%t$1C)$V!a`e2;%Ts>d zsWBd+zpq0|BKhv!i zJgvZm78}P&=<4(YiIcy)rrjpm?Ev}+goTXJ1pJ;UMkS$bN`wB$)iwwoQ18Sc{2wj1 zAO+39^~Q5=V6G*`;Bj11d=P!9r}SA;^6WqMwDrA-w(HSy&L$dW^p@$0L|V~|H4I?m z41K)QOex37UR7fohy*0qahoJDL!L6aGBzeA=8Wr`8m^-c_ADZ@F@@d zXr*vKZVtd&OkcozoM*B)Sv5F+BYCzNiGdN{vxwh4T1hZbsiv!ouep}|b*R7JH(uZU z%3V~ws?}?Vi$h<(e%)}|kG?*L5=PUdgWOX_CL85e8c||_R&bFh_daq{klSTwf$7~p;rO<(6nJYkH;(Zz z4&W0~gbA~|WrUv3>2B|_A2!j2yN$=V5T4^>#qVg&Kk zzg8ddP$|z6$B0ybPT1j+6wU$)1$htu+BX?r3+{yVUKfAw>|0W!4dd5a@l`(@9Lx{#Xd!#@qLryMmP#@%r&HK>1FdZ1QLH=}$rvm}j*%mGQ zO5opCO{DCYvanqZVNzN#pAdu?ym0lc$#uF&Y^h-VbI!jL#oQGF9{XtK-ZV-2qQ)~3 zmyPKu>r=EJ$C=cC_Tw;Po#{7_(5QJZR(g#{A%Tw;g00 z%0V^-^`!`K*mW*eUOlBhMn@9{X8y^P^XsD3>=Hy@a)Hp@@o>Uk$m(i*$1 z9}@hiW490e6R$Y!I3Yq>F>+;TCiMS@>iSPH@{25S`XtXiQK#Ui{F$der-Yjb**UO^ zqtHQ0NH2kpaYa}qWA#c6*IS6HM0$b6k4gptjY?~=txiVtmA~pW4j~fzgAqX^{F6xu zVswb1pEP>cJFfq13r#`WQpk`vbX>+Ge+CrO7_W9$k(pqg!I{DFwG#>hRF@H`4x=Gy zZ|>f}&_hB^G8|gZiMSh2cwwmu(YQp5x?EEl_;d^Ralz97?J`rt$!dEr3pvUuEx>qP z0>K)zY4}Sq9C+$Bp@V7}{(;|jU5pBaLRl#1OO|UznVCQW~ICB5Slna!tCJ46REK#FlkC?jxd}w(wf+~XTW>uV3`WF%ojVD! z(Epe1z6dZ(MK!5r{66-COCX7#gqMa=swctN+Mn#3#J?+42{$=4MPc&Zokddi-%(bP zoJ;zslV`NIlG2%oI$V#TLBEhOQ_ebOpICyw?05@$a=e0!5wY+Kg z&vrQH5fwG30og3Lk>*iEDP#2TpMjXhfCWW%90W3nOuAtpECzyu+%sF&b3ll&2l&aO zldK04Aj&`uCZR$=wQA)fI#UNsK#Dfg4ZeClMddjO7Ol=4yDXSO2c(HsLH9B}46_&; zQv&{$0uf{al~yyXw?O(p^f@-D5~74Orok+LGb&L7B)q{+fP@qkaRA;uW35XOcp{Zh zz61FI2Sot%cObviRH7Cz^&5hK>#i#-d1*E05<4XB`ZJZq5FW-|gh_8eJdZ4V&Pw&U zH^d$}fBK}9zjK5xr;@Pr0_?7MvZ`hz@m{Msn}yl6@*l-7>FFgKZJcxf41c+7HA~3& zR=1}#L97zTH)=~&Mn_le(dz-%?gB?z>Da@#bdrs4kX_tJNbk3AN8rEaGgDC2$usj$ zd&>w353vqw3z~EqN|R74*}Mh5hR(q8Pr5odc!Wznfv-0)T{HdhLqlIDoY%ntJ54}P zJMrjbb(O3_um@!oz6@1u=;2{}!RA)P$ESUb(~6kkTQ!Rd3cq96IleH8>3GlmIewKj zDZj_lB~bOWJ6!(WzytC-m|$9_+bU|IRl^zHzr%C871J&H9&92ES{e(L+xZ&*PjrMy zyhq&PqT}P(sIYZDq;8}_99YBUAljq($e|Me^TY8rbrP&o{Zi>`th2x&SHi%A5}qvA zgT)A-Sh{@C{?HnyFbd2Kaz>YJ(W%Gq8T}+d*xq{hbc3t_1;ZKrvKkIgnL}X!RKGN8 z%y903fjjE<^3b2YPbom9KpYqxgayvoH8t$!q>vk!Eu5Z~mMb2$8o{+FSD zLOdAY1)I{U=l&ND%HZOx;u0Ap{sO?oWf15)4MdR(MuK?g^3Demdixd*=rc!T-Tt9v z!9b|9zM!W-hwURAOz*R^Gq;r>{Pc{X#8=wEfbU0Jw&TzU_H^fpoeq3VrsyNB_m6Br zbzHEc`fCHyvTkt+8VKIaQytrDoVJwaUFNKZxq)a%abaesKf)u(3G0t&+$6X(q{b-^ z-4=#TZHGL;0nBl<1`J5a!60nA<^=%Q!qn*ioZ_;(4rnH_TBZw4&KmVLx>@f(XNXQ^ zxgd}K$BP@tNgC<6hYAL2Qp-*&#-$bXnNc~Q`{xUg7c}VD<2o~`smi!C9*SBrV9fR0 z`9teX3vRC1oIPpTCDSBm6zqQe2QQsTnKeUE<(t-?zML7 z$^8C#$Kmcjtjo-8{6%PJw+<6hVxrs9Dw>@p5{@FPp8RUETlIlD?7rI0Jn(uvZWrq{VY&$4Wz;qj>^wH|dQPAY1NY==+!YqK zi6`95E(epSylB~Q8>=zEOyMaz0^5)-7C5gbpg#@R3Of8|YJgTyk|XNG*9ES<=ZMNf%?nuJz1kVKVsLU}x^kOf=lB_jA9! z)L=iV@3e@l)ToKpM$H8)x#Psw-n=gmvUYd`-rR9dQWxUNz8mr8c-qNP9WDshAb{Pm zbmbKdk%WtWLGh2k#Dx5GG<$N9kO*E37IDemR%gR4jf{j)B9alZAp?;w#e_c|P1bA7 z*48Lm&pL&_{5=gOrSap>#umT~Ia+dbXnHs>3XHZ4#;JQXKh{8QbN966>S}s^GB^lq za4``CL_ccD_YW*jrRet`e|*b`iMWjSUMS9>Kv*%}hD#>&906QAo0~#nVq#gVJjC-}L9h^2>G%A6qC#TKN`N)|hrYmF{*$>efC9*o}|H830z5fxE7 zQ^ZRUZ`r~!Qn>OGn0FlEr~i$K2v7e?;FD|9h3O`g&S^+UvH4hUrGQ z?aj>&Fhdj(0_C}X2rtD6#N1nW>C_;8l=jT~1ntQS^0ELaq3+~;n zUtA&6n2R|HnJl)r4+{wB$WbO65&5)HH<1A^caR@rg)thl%U+AOaz!tg3abns@B zuxrDVg+_}EEhyOP{S!)}CL-cBT5+lBz}n`>{zR z{bh6zG>M`T=T?|Kx!&y21i@`s&YS**9A+^^AV#$|8%EO=!*XBAX`&)m6H{y){FHJg92TJ#E0L-%`jo*|d!QDe=^!UCGxl2%g31se(Bj!Ns@ zDd*j&883Kf5iR7X-i`oLpc`!H+v~{|ps7hKC}|kl>rsC7>eAkk?U)MngrAH~_{-4W zPKNK#$;@rueKuLC9ye+eG`9)HH1M`$AYw#kTd*NvlfCub+nX-jY1lnQ#uuPq(N)D= zja2e$a5RC)=6a|GI~gnR1-YHk9#qsr{HQ2i(7>6LGp=2&f4J4x_X&MA*r}8CI4Xk= zb+GPe{Mv(LZ{5SQ%WxMhh(+)Pg5c1I_^;|i$u}5Xbw`qK!sX>2v|S1%YXKFXH1Us=K?-pqgNw{k*gImaF(~t?Ik? zGgubp#Do|CkB6tn&T)1-M|1M=vT-ueX6?^h#0D!nCDE!=*~v|AcF+i*zaT4DFWJ^f z#JcpadaymO<%nv}pb$ju^HBiQo zag~6R$%Fr2F=F*yJo;6DFZF1T9!*T5oEWu zk%5u{0Z?BD1zT7uXaJHqn6@PdZC55fx9VA)UvA0*bU0I44YYu|S_5ee_4cYN$7mrG z8sg_Uqoz~k{*o#HFYB1Iy%{HkKU)S$fz#C{=+Bt-_zbMy#nFK2^HcP5-%KC-v7tAg zjekC^Xxe^hYPa#3+30S161;yS02n)YQ=lFWG-Wh$Bq@nV zeM+nYb4FisnV2U99O@p`Ps& zq51y><69NZmnJtfeZ^w-<$T8ZW?!tB+lnCh;AnYxNQQ(H!^+Asz+{d;^97`{?_v}) z^|?Jr_{}fb*v@?!#iybWW4L?I>mPqRBP9@fF%b0A$>#Xq6C7rcp-;kTK$H;UT#w{< zx4uY*q?C&orN*B#%IA{F+YT$y<+)`c?G)$ptK+zq($>Vy!W8V8K8xRKa}m^yjo)mj z?C?aUXEJINhIY_OewyZFgi@_9u5Dcu#<8mzbq+3!>ZU$l7;)0?N@g!cmN56O2{{V% z(CII8hy;H~B_NKYaw+K@x85!8SujZLlQdlW;h$(Bh%Gxgoi^PF@dKSaxiN#m>h$g~ zQ%8_lNkv|?i;9}k&NM{6`q={pxx6;F<%J(-U5hl)jSoFcnl%U#7iDJ*Pg5Ydm|?+S z=cqj|{Rv8*KWhUXc452)voE#vgT+7H4_N2Dwlm&s{+wrzHe(+bhPU#X}{34wM3znN%o_bPK2N~p#Ee8#>U7!`2piFgc8Y)ivr4m z-+cu-Xu6J(=$`2SEIKom%3caesc%4YqZ6#ca5^{S2L_=(Ub@?N_2e@J6&)a4kaltf zP*oX?iRXcS)^jj&_tAy#!v)=|S3f|HRHeo5k_Hdkwkw)NkDXT=j#g^do2#M!t^e53 zxWD+-$g&1T?K=pN3wTX8+P}|v2MgwMV)kZCvwi>qMoe1T+(8{+-FSOY+<;cVjN?rk z^(xfAaLb9>Hg63LDg1^#Q$g?lmzEZiZ>A$I+b9&3URMr``fYqG9zY6R2w)ELpp>Zi zGE(g~ReXl;clXO(1EP-r%Ki?*D+-yeKl?SJPWvSPrKNP!+R+__u$1PZ@>*Q`9!TeQ zz18iN*V1AE8_y{T{d0@nZB0H>!~$PHG#o5NYsa4cH5rU+I=UnY%`&3*%F`P2VSVYU z{v!2cwE$y|^Vd%T8!NB9#Gtzv6ed+w8T-acjt{gai^CC5T)aG#8wZ_VRD}|Fekv`! zA|!lcLh$B``5SWrls;Cbb2lZa2|8n>C(zYtEioRmLCBMBNum0x3+jCd=6)LSlJb!w zV5J)AG4kq)=Q(dxylb8%nux>>-@0UJaAHBfjwOjJtLe(`lij(CJX;MFi~!wbfR)Xg zj&A5P1Fza0wM>8!C%7j?@9cN$^$U0rVN1{RQwf)A2sb8kLpp+!zl>tO*|j1rgbEwQ zV67)&y2+Wr!NH*t=|fy1KJ&;bQ6szc|}DiKoO0k zvJU9hM<*ow-a9%!cLCg`yk28XmnQ=6C~-g%Pf&<|DU-|s2U8+u0rIPWQAFYklItHC zu-XFPl*Ca<0-lW9dWtD>Uh8Iu1W4vU*Jt|i^|c37O#Ly7(^^Y7T)99-^7`1L72ydN zPK1DXX(VmDZ2M*>3`A$IHZi__GQczIA>RRzEpotDQ(ORI7Ht12)0d>8#hRHh{_Zwh z0>9XA+et}Ttcb7p!_$VHn`0;tee4q@iQvABu|&U;oW>7b7Ln}|75hH@)Dn& zL3K&a>mR;cE5|vSE-$7~G9rm9L1IHBI92m4jGuF#Pwac>_}Vsj_1x5yX>zns$AM2~ zhoY1`7LmQQ?Q~?k$iUZ`EzTi3X|{8%?{M4UciX1Q0VfH2;XrO)aR%JpAy~#h=X`d+ zmHT)6{69Pi(ZUoa*LhPz?dWirVQE^+C;*rJah1v7vkgaph`L!ldI33P*-HWm6hXB|n0^(EJCkKV@&`b6ku(-0ye?Kc?m#)$ zuiGD&tsnk2Ha0fCB8kx-0>@oI(CulA#O;?GF*ceLZWNqR=;Q_$m$J5=O_B&FL%R;M zMNRWlq=eTh0fnEKiF2Rb>n)w^n@Va;ek$^E+N$+wuJH#Dv&%UFFUOC z&dgl)Z%wIs&l{|+Ng%2=MT%EfANrb_zR-?6w0YBCzOS2ELGl{o_BjLkkFbyB@={n? zWNeGMJGv){R5gU2Hm7%{)#37;hI~99Fz)leKoJF@`vuIsnfm!Vmm449WgMF0Chsgg zd1as|{Aa7QK|zO7PwposT?)!FGp`z2F6ZMu^RZ#{*BPRBOp2hs-bD*h4r^_0XpIfT zpit-qRZ>yW$}+0E>VYH%xeL_#KiYb&5huT~r!>~=X}wsSv(}Z2 zRg!}2fMN;nK@=&_L?HK>Zd|zpYB`mLUC0u#f&Fo`FPNDhgYi25K@>w30DG3Mgcd@Ow-YSCq^vCWGDn$?VPN#mAs{$GP=dGjRpLF*`hD-lwC0 zIkzZ3@3B+1F!_11tf;610MEGFebppW>kF<+84CYJQKEd+U0*->2f<8V^i$~YI5sJ- zA2lgz#D`q7_lN=5_!0q}(z#ilF#vN#aQ+9!)8MInR<*U!@{j&>cx-B97;q6g(TZCT z+N-S!G!k-<)?`ClobYixFK@vgeaF$Y78HE{*6A3H@BI zQ$5)+J=uR2UuX>(t3#LiuTim@l>+^UJBG(MT=7RjQiC5GmD>wV9UUYFp);b3zrbmk zm_?hbtC~J=jV0YjL#|?Qqk%igGFsKpUvf7+!;5;Pzg2B-_|1GZx!g$Co4=(nYb!AJ z_GVFCJMGl=Ny+1%)sMvIXDS0beE;ZU+-R6~CZfrT{Mc&G)kuu%$&{LhDp}ZY=RUp_ zeS-rQ8RZu){%cg%RenL7(Z(86b)+`upSKOw3~ly=_vf=WZ_aOc{^(|sx_&iNBqI{E z`W`BnMKr_``YAYXa6>;;p>88L?0+_ymmAveK-saJ$Xid$S%yYMdXTn`Dj3qgw4(Ph z+89kNvVT5_omvnI^xoG-eDB!+t42XZB@p-zaN-%wm3sWO@ROz5@Iaj4->Db!$?Ox@ zE%JhQ?2Leg1Vr?F>bU{)VdD-av7Cf=4}?jI1X~S6QT&gO9X65+%mJDP`xPV%3f_JF z{omu{1-7WnL4D%C`6R96i(e^1)Yn}9>UX1ue;gW{WZx4kph~N%()zzw|3}}ApHq68 z-&>c{>rpbLE{w7PrlomTIo>P=R-g3X7g9U{K}_jx=U8BMu(E6@Ug)P`|21p9-J*U; zI%ZgW5x68a!AmTZWORi8E1MwRX@jgVcsr@(;Ky{6Sm@L7)N=015<9hUOl* z@2$NTsOh6lvBMaN9RLCd1=YuQpYa%Y@VD;wT|+;+g?=isRjUvP4MSsI^hx_%J4V4H z@m^C+r_)t4F#`^V0ul6iGY*DHPclg=%}1&Tf6B9VE=!WqUikgF$N0j~-)DD8Sabsa zprs1e^)@PP*`-uYQ_qL<(8Pk5RxXRIbE<7JI7x5dM}M4`i?C??P|b05!$_jZ+OO}q zsAnKB=afl%))|b66!4S~C*s-v7r(ytfw&y!%($?CTF`)?fAG;S`>u{e1(Xn@^552c z3uZX*4<~;lb-t9CePbjUKUrGT^g4}GM4A$+78F|gf-V*cu-+`eRb8i_!5w)@&f!;u3aemLG?qkkgS z@;3|g1E2R4B$6VBqVZ}eGtXdVdKE%cm22YF)CB^14m323c_-x;i|)NqcQ>v5xE#p1 zTt1}zRFd1ym=wPnGe_8eHUQCHTFo3lR-e2Po4Q4%crK}=BP<4Nix^q;TEjcp7SB@` zeBbY#s$am?AA%`!Hac!la&gr!S$l)@2BymnK`=&lz+-_=pe_unCNABd*Jlt%gE52y z15!}OtNQtmot?r^2MCcv|F7g^7Ejm!R5Uf(yxcoExU8oAz)uqdfB)yU!CGjP1U&1H zrOzC!yH<+&w5hYXiDEd{+-(1sYa@^MDPa5-e_?qXB<5~!0%BZ>r!uc7082-x@*fFh zo~MZ|sfe=Aww!OcW{5^G<&xR#(G4&sN1pQt zYNgH@_)dKK%=}xC1Z{1h#Y>|QpX`}813A)CUstg!k>Z0MTk1s}h1Ywt`3-CwFjZJP z*Ja^`on-9re8~kviw}I7s7S(YLX76R*rb?GyzWZRWyR!|g_pv$`7S^#FrUcPTlpgq zTX%W}>QDxa;eZ?JL)8x>2%a-u!Tj-gX|L8EuS(j0@hWv^+COL9MEt z72vU>X88X&(SiBOmK5(3={^6Kuo%3VjYK48H5cg#XXk>LL`84oYDeS~f5e76@U@2- z7E|DiZW`64`{@t}j>rrX!Xi2LqL=5SJ-y9>UHM7zoupUrewZlB3~V%O0T&m~HAp}H zc}ACxr87MmiI8IY?1L1Oe`k<8oz8TMlNxXS3myF6Q43*P4ujyEtj$co2fjS6B!Bm3 z$W*oVFnGgz!}0f#5kY-Hk^a1;o;eG$78qzvM%DIpKvLIKl0bO#LzAz_WoP-e9e1>rA1!I4%y=YloGP zxqa|w2P`l{PK$}jP@s9F{h#_ErZcSHB>qFN;hTfpl*M|Rg|O1{CNw~BF>jx(174i( z2oVU~dFTMDN#Af}yXHJ-HPv%lK>`Aw9rV(Pl~s9pRDUhs;s1xI42%+?!qK~PIHkVS zTmNiC-jxm{jbVb(p_aA{tl3^So}OdafJbcC^7At(2Y0ga7=gOp>SM!w_lRj1K4#gN zQK4!^^u&Y))|Wi{=BXbBnuBo_=nw~FakKJxqsIfc19*;(10B}7@7YB`^AY>C#!n7Z z6Nm3qo4=c3|8T^Ik%x7>p-hh#%iN9+NikbL!let}UzFdOJ@BDOe`8rGEpHHw&~5B( zSSDK|3XcZ;0l$-W_>Pb=Szi)7!Tm-OJ%wxh$7##&P~m6cBeXYhXh4WHcX9+R8Q?4Z zTVZ6t?3dMI3iK-}fhEwe;-R%T3SiaP1AYh%iE{jKg&WAWfO<6+jL;1Wu{1P*;BX)q zEEg!89e4r+<@W=tfjY7ws5G|rjB{|pG6L{`t9(YkJv`;xU`$e0+`aS5mOSR{hh03NwHd0Mg&E z{1F`#PfJQmk3eA)28RA4tM^q8+5aMYI>_4gO0thtcH$AdTRz7E?+|(ea}%7x{Lzn? z=R?;owopN?YZm{SxCEMm5Bw8PkAx3jjn2||oc;-UBpX5e@aX(;<(EN$*H=akhrb60 zj*j+6u)ksX+7Ti(%;YKIuABjX)w7Lh@NObl;jYJ5=7cXIXGL_^601icCc^%GJ;cM!H@tSFZ=&tK6Q4dO-;V2VSB7f7($P~{oRP!IDeIv!X2 zYPUct@Kc^U5xT!>y1R|suV#{OT=8G<_C_gu3tcD`?8-bK6}r3mDRgZ39QZHl`CWvs zmp>(+lEbR{fEd#`_KMwmBCPc>X{RUG?%Q$kBjOZ77Yj>9Oe_)D4`7z$g%WAQ@P|*I zVs`|(KudfE=mx_F=zI0>&|(;kR5%TniYlJ)r@$Zq;ZF@zktHRiB<*2H0Cmx0mv$UtO#aa-Ey-9I z-T`w#k~{QaAHhsmOaNwm2aE`B(9qV!^5)sB7`voV@F)FWzN#N+pyhZrMdoc*$~5x6TxWR>wr7Jilz-gVJ0hluL4PQA6b2obY4mBee`Y65yl0~8SOCR z!YLpBrHCgym;GFa1CuV(1wO0&ckuOHKbLbk>W8lLi+LMu6f>JOM^@Nh`2Jp+mD2yV zfz?o3VUB1FHZcJQ(>a|R;97l6G}^n7gMU8`{@t!EQ`yOPkfqW1FY8|FkCLCsiHQsu ze)F`b!FTG8o16NTXdZ-)>A({Q2ZT%Vi-mC2CC!hni_@W`a{|HE`=m7uAR(>(*vY5k ze8$JvwjyP0oSyQPNt+a<#yY5s<4gJb$4qIA5DH_<)9G9PAo-H7`^40gJRugdEpBUl z1YVA-{S6LTgWa;qmWLq-KZ3Z|Iql;HkHqdJ ze6TeGx{K}*Ev{;@2U4yqW81OIV+nr&x#^z1Pi9nU_WpsE8xjid9bTfrUAEFh`YHx^ zEvYo{>#qNndNSO6X<>Ey)3=M3oVNkklzv+Qc2T9^U%N#(}zp$HV*ngjEj_GE69j_Im(lIg8gD| z_KFa>JZtjfkqK!Z^Vng+g_iwtJn;ef&)tzM*om63{l3a-)+lCgaz7B29XMxLLsV(~ zd@QdEtv8Au?$k$?Lqkm2h@WOQ76CQ{C`es^Ub9d)o_5lMN6qw-ic*R#N&4-(g2z6-$gFpS z$?T0!#|!lRI#+M0YF{DF)(MZL9gd3Qp|}JN*W^N6Lvf??Ho4bSg@w3^9x4-$q7ObV z$L3t(_1VmHN5okk6^?vX9ADpC-<=S}MR^AjizZ1waZ}oBTM`t+!;Awj+P^1>jG7-| z17N2?C5}-d`c|wpi@g&MeOa$w=$%YTSrLmd{uj~o>e6a{>_w~FhZX;nAx2}Q&c8u+ z?r=%?4#V!zj(FqiX386|+&iCb~R073S zhI6g*X|aF2j6eMRj<=NT@2>uVhU6eMnHEnk>(RqWuO&-a%h!>OCpeg(CiBXw436Ae z#XtCZJ#Y=4bKP64)3ucS5ISH%~P_+%<5ue0j_W{{K zp~MuaFe_sej^d$t8O%myW&0RORaPAu4i?FUCixG?e~{@iheUz{iG%%6ztb$gMh=2|Uj>Ej#K{G1zCpN;eit@YCxpRAM8?JItp84YKt!2o;i z!o`>@!iir(_6>I_H~0|5C@Q^j$>q8!He*>4kAs3g8*ZSo!mzLOVdEkC;HTUdHb`R3 zvpx|>Wq)!FdYW`Pr)%DNc)ioK(lh8Z<5{69Q1dR6`@B_OmLaj!{D;F`zjM-0-BCz^ zrromNoJG|uVs`6bBB3<+DO$L%04qs6n0U4s#IG!fn`$3i(fs%<1M4l?OyCnZ$nOV3 z0_()s6Gc9OBZa#b%gs=H{xYp~%PusL(N7au@#poP+iQe09kKYR@njcNu?0L@AGb;0 zGg3lBg(?HTv_mYM#~6KtDpq*VdgT*~UqVnN0rmun!CMbUdC}ham*&!q3~-Raw##1X zqMsbpaam_u!RU$#K@zcQOlh~pwN=r%+Xh;9GvmF82neXf*>!mpYn=V|X;QP|$?M(O z(MF9|lRGHph?P|7X5QMgON(VrFWGFeR0rj46CRUc>@0sjZ16S}vGWcHmoR@Gj4w~W zM408|<7-k2pS}Ki!&M$jhNr#NW~O1s)MwrF{`lv^kl|L>J-x0%7GvrMqPB9~h0=rs z^VVf+MH+>s2p-3~@||Z$?6Y-cKVR6b{+A079E=>q$zH;XqYii)dL2UV7K^_V{?^|g zshB_EC2ft(1I*2EUf+<|fg*NBvxNk0`F6tXm>yJ%8e$AW|FO5*i_w1)Kj1JoUG<`y zlZ@6=mgw}oG;im#mm>Pr63oHr{^(EoG{aKAR4j5+7ttouy|3fxJrV?=k9v_j408x3 zDcyHCqS@S;DK@M6W(up%=MRBE!SbgOHN8z zH=SAAx=Fh1`qc0pAEPC1JdS^7$GQ}HC#lJ;oc?qgDK2q;#VBXobI^ zGROZSbm;Id+Dk>`Pb`#JnPV31OD87vDQs0vFE-CS zGu2Vdb*kP6fsSRe)`z{CZ9v@%{DG-=v?4 z61mK-%YiLzoZPgFiF1yku@!B}^by2>u+w(I3_)*_2x2W5LPWf-&GZ6 zs!xoRXy^7}>Z|W}I66eOz4ZO4U;{Vv)fFy&z&Erx2HEK29g{vyVL4xo+uPn2Lq;lssAY+mZ@ z%QCI;yq*FRo`;Xl)$cI(OTUI~%a=D>X>rt%S%60HJI|)0f(tqlELlrEDB04zcT|Bg z-6%g8ObGY>r9)bp$XB(Z?+^%-koot_|FH@yu8~JDJVPZ5xTRL zoL_o+Dj7Z99)=yg&rXe1v`0%X%D2bw7o|wUdY$-i5_hm3t>`-RQ(yP`-ijjye7B#% zML|4${BZbKDqm@~&AXXzB+ih4H9WLygQfR6N-_@d1Cz;!bgb!CqR!IRyRK;S5UQ^D zv=NC+?c@n_#8YM)6%kU;4{Z)330d-wAO4IfeNeEuP4=SI9!t1GhoFJ3Xs5qH1?A1t zDvYf2>sMoQ;>sR2Bl3Ur?x_j0HIDdPB(h)Czie3H`8%hl+IH9ew~+8DlEL+&8L0pk zf&6gHd2N(0Nwl2F>A;{T_}$gZ{M|sPbc)k*=9uS|zFsLv)&54b0Bc<0ac;k8nwe2_DFBppN;z-<&VC zm9LFsr;h?mijYBU!imTM-=TTPC!hEOR~j;CBMhb(F{&hi3|5ZrwwBy5pyb9FgVe@( zEYG%6@^;s=4f2|&81Zrk(h?8OUnR9(pP8KZKKe~gKC#G!wO!vnqsYG3Rj=MWZ&iI;;gpwBe#}SR@wKa-j~-NR4g&oemJ#y5vmd+5b>8ZJBueLA~qpx`eg1jc~})vaB%+&9*%_p|D(X@0%I4>q(L z#(~yx<`!lyzB9<^ertTwGQ^(ud4#Rj!oB_e0G}-3VSi*W{1rpW6pA{1!xjw^m$%U3 zvLv@|$RA9SBrZ24y_Zal`2kvR1~uwheAZ^1PI``82v}Z(*JtE9)Z@zfdQ3@EE3UK7 zm!#!gkcQXLG;2z&rSWgwvcC17tRF{nwjyHQdb_M)A>GEONk3fJ%M6bJWxI#RFwQ$mhuM2JO@aZrgS zj^33Jg5vGcS7=-3I19BP1Az#{@joYyyet=PQ5C-4v%k;q(`G9>6&T;sWuDen{2Z6I zbsrO}>*=#Ygwlh!ux_?Vot*a6lr4!dk*tcFm!>ki+VpsrLrvWvjZd8H(mScLqKPUgf{4JF6&lk`f!#4F!{o#L-wCt#9{{Gfx5_0P^Z zdK80Mm0@~$R@2; zWzlP=GqJVD#uX8gQ`Q6%-`XG4gP88}cGq96ow6INaWH5&_uQw&B>?w%z!TfMgxN9e z6LaA#R<4ZCe4yk_m7i`}Y*Z=58(E>WQSwst>r2-lh$UnQ=a2On1c`gErOCCv)zatUYcV7^(v;%? zpIlBLx5YuYw3=xLvANnCX}xWJGn8+{LZ?si0Cji~>9|($HD9*GuXu)$3ThOD4P&k0 z!+qgfx4fl%#@Xf#$0$L5HxBp1TRe)4&Xw9|@UH_n5(VZ1+7h{(kO3+ihDd=q(h9l6$b!iNOk?F851l{$h>dK6eu=+a;$ zhc0WxtzDOQ)^`{9rSe zXFdo9A9~O&bxnrXGKr7! z(5DElf0oCyR@}*)m$=f`Tzw#1DJd@N!0N9Q!7xH%Db_7cnEkCbf8KBD^Fs1EN?lMV zI1Dl{4AtN+tC{slpC&#Owwww?c6WP=3!3z~Nmf<|cfLJU+bG6r! zI;Zp-Oz`anXkB`eiAR!}lqpCz%T#&|M2lPU4VF)@K8CaL6&043+sy80H9DBAIJ25& z=zia5h*9Qh6TJKWHlLQfA;Nc76?g;st3#xK5;Q!)uWu6AY7bNzWboiR z8fja-YJ*d`;%nxL;Z&XKld^MCjBY`;DcHj-982Sy_XzqT%9;|t_9pDddm<7NMptgg zPL6;uy2k|{s#G|;xF{_tks39tVfjJ?vDAY_dJ@{LiS!kGIP{I0ZTQk~De0OG?#vW^ zoA}da?YZBiTH(_=U24a~>+1q?;W!B@vwX-5v6-PvMy*SKzUI zR+|zGy3x0$jBF=L99dYJ893syM?pQigN?k60NsD;p zGiWG8<_?W|%I1|h7oU99uq)LPiBWk_)X`^%<$<6bB@|?5Zy4GRN-HYl0jn%b6wHs3 zmQRL*K17+PhP}%LIx4YiZ~ihpg8W`%Vqo;yll-2Xv@kRK6lVjm^n%uGFtz}p2$);J zMO>b6w#jDo1bRi9s3)kIJ0(Ba=NK~Lcrf3n3>*1eSX&O7$e-y=1#;{Aa3+dXOBplN z0F??t?|Z%kFDvGow)02uf$YOVwzd^u##8C`wgoU=QZospaST4_Zu-HH7rdKBN9G(R|{4B6#}+tnIBGD)s8##seCNrle-fsy<_ zf0dM&sBI4e=i71}ZX)|fF!7qGNs2u?rjECdMjW}zCl)z)FNA(j2A5A8Z}v#PLVC&I zw0MmMBF%UL5`hsyRJZGSlh)Zqt>URj)xHz%2M`#oiyIW3ddLWf|%* zMQ6^1xCgSzT8r3;IA~jAVab!}v>7rDtBD9uGH-E@vs8JTgsF`c=8|&5L11_~HN8^i z>W5D-i?kE8f5Q0}Yk_U1q^p|&ctFlT#{ug-WPtU1Vxq5_(b?7YKWG2%O&icv$^Koc z&i082T2D44C@CvbWlB=!BVz_f0AwJ&wKarItMDSSwMP2PGIWsYdWYAM}#OqL`=4w9O+i zIv^k*fE}SED;oi3T|a(};K%(m;vF7Vi1YRY{r+95n028S>6>-S@$IUMlxlbL8!}g^ z!Q(i7hgklxBQDc#qR>XAmD^>L(s2?q>^9LL$h@(YcU>@xAjUp!=HfSTVACH-MHX>w zT~eZ=I)NFN0GhZQkNjktL9<&a<9q zYR<&ZD~M(PEGvpNonh52ABU1PI!C;U1Z=U0eZ)&k)TLOM*_b=GI@MC3SrMI{9@ZddY+n?P?`hxt8w zxf)!D<}sf%DE-5LY(H#M8Dz)A>=dmUR9>eD+OI1c8dR|9AVoe~&6+r!;tuzb(laauNIdVus zfTUwhG{J|d3uJAyRd64EPSRQM$}e`!uS+o97a2+K?1%78kWnY$FXa< zjeAtS*`<>w6R3G77A9SIu<41@nQaae2a6Di@5mrNt@PsH5RWHv_&t~QN~Scl!Q-JP zaIyV$w#qPYF+u@^(uBP#J+I>(Wx&U=^8u+mI;N;=} zpo8t#)Kp(E76-=(8Ts0oOj>0**nK!{%(Z8a{<^ty zum^{IBoZ%0@n|xbnH~pk^I?SGg0ei>EmESkFyf3*_3N2a%xjX!Z&PwR^`@uI4X?|} z&gOSe(k&@*q+`s4LOevIKJ>Qr8b}+-)vXL3H9kUwh7(O^q&RF9n#@~oU+)*QdFfZx zwT3y7#}N%EERz_*PR%P&5SN+f#)8-;!0H0sL7=<s?d9(!II*q(DUKILW)qUct$vwo__MEUW<*jFbXNg*A)_ zugI~jkq0n*itg$bH&k?VgBde~5B?;(zFr+D34(wEh%T%?ctXk4i6-Vh!tl_7goAF{ zSX`gb7ym6Pi|jwpEEYxc^v+H0_D?OFo_{ZnBwgG{0SX0WZKUHhAF8Q*VU;3R1FMa z!3YPR#RFQkdAu$wCoA+T*4IA(U&=rhmDJ1#Y1F{``+^dD-$b_K#?_;>;j zFvl+7E6l2h)f+{gw9^Fpt3WvUH_()H;?do&h73kQF!7(OZ+mxFMP6RMQ5ptECAQJ) z%tjTy;y)g6&~1E~&!CpCLg=v3#spigWRteMT<^E7^Usu3Wi{$K=y2M3p;2&d!Ygb#ZW6SLAjYr)Wk zH<;^H3>1o3geYSqfDHA^xc>NNK1k!K)tnkT5m>?murjPE;j^=|@jpKd>dwa3)G;NEkn|HWhBegq7%9!>Ehr>@gbI&*^|#VLN!J#KjY55^hkw**-S zQv5eb)YXZRXOAXc6HH`hMz3zItYrnGD(z&n6kisjVbXlu9$$gTI!}pNFC3xIk$~)QlKTU^21C2+Ig9mky zp`mFBlrIN2L0O~Y?|fLedTwsT1svg7lM;V4Jzz)mf;n6h6BBvhq>AM#x@Q(zaWYIf zbB~}vrUX|$_14(Tw5<&FG7?hUIG71>zKrCme0`DICj8`>kjAZvM?IrR=boeO*f$S=s!y{vd= ziByG=(@XZ(H>)3%sMuq|!$A|6%VtprSgvcE_He zViF4?A{G!Sf>NXj7!{BrNE7L(6zRQJW7LQg=^a#>v_X2GK@pHT(xnba8TtT2o66lo zKBFdnYu)ny>)v(O_byjBGnsSFTX)~j=9a{2^3>yeenN`!&c%_EQzuB8P?!c3F zq4h&6`$36vtv6S((H&v(S@)XnXlj(t=_p#VJT0jOy_$sOuQ;NVK*gU+0`&vYQPNq@ ze`l4>rwe%FTBZRLl41MS%!~}Ki-CjrygP4fsb;>2;o08DxM$BjBcn?|)5iIBBmA_P zg6j{$zo)et`uaKdgffA_?<8%jK76!3WK>k)bQt_Qa`^BKsU&_^Z6GDp@u!~URjyO= zK8OV+!`5(iamh?elZ7J>Di2Wgc(d((g6k;$9_NUraZsy;p=_P8Km!7_Y{c_D`R<0n z=;7)4HC_MT{nLq|E~q(keB0s!CQ0lK+s07i7V`uIVt7E^&}4FAO}mjrP388PFn$qy zhKu&YZkF@Z;1aEa7>!dgZP{C&NbLx<-|=Xtv8Y&#vcaP`tq+XcPO>*f^Jvd?g5@Sg zwYI*lrhMX%OQJqc9q&qAJ9$)meg++MHI*cAU?;+4I4;twCOms&gOtX>e;~wi*Z7W8 zOIuHfg+vedbGvshzkJqgrI6Qpg<-|%UZ$(>4(lm?DdQ}gfIaUCv3se+$Gp@@b1io> zoz(Dy^s_b%3dhvRS77J72E@bFwFJs^HR&_Jp#65-8A}1lVzb5X1+D;66bglMh@z8i z1mYY=eYrQaNgc_DuKv&`du5B_H1om=>9%2gdEGv9x@xM}V|eF`Xx$l4o`f5h+9N#- zahj=4#;;%AD`)zFOSdQ6O5d@eQuE+-@l$a+Pn>myKfbnFW!Uxlo|C-C>yEafMc2YE zskD0^wS3k3dgd*$sw%C08MRNuMqcg2RA?w?o7(K&=_gYM+fA%1&2H^HGi~`;pDS_4 zL^RlprnC0w`=BzkR?ngyZxQhM8R6GUH*Ws387c2E@uJROzs$S^QT;aW_Cv9GA&G=% zBjSA;n(A~nSw~1%4z7b~s_2xvjE8uu1@n`YsKzJ1wEutzHFiT@_U1e=C6#tbz^A)O z8++0H*1UVmBZFSo?ksqf;tzCd?Dv|V<7H9NMJJx9o1+aSn)cjTol9Mz<}E6>5s~aA zFQ>C{&Zg)15xhH0FQk6B6ny!CB*UK7_jU=){EqqFzsmdnZd!Q+-0D}st^U2IgX+i0 zuBLX~>XX!iALa5^4{16bQ#0-5HkpYX)6i%TX(n?0QXTs9(OIz>_ifZcutc@q5k|bW zi?K0qvAE&FeF7#RVKOX%Id)}*T`g>lIsP&m0%2!!oX$>{+oV}<47e^&-gnU2im2`! zbT`urU4FN}$OO3^aR}{+pHov*yxL!)6-l>HnRZ2Z|0qc`PAD%ImDz_7w6EFw zqxDdH_o-l^aQbgvUwgd)eyMTh%iU{~aAKvk;$juUA8C700nXEo<7-}po zrWtRgS=(^4p)fr7W|ochRo~S-M#(j-Wg+fbGUd{ZNPYGEqdZZn$Av}B(7XJ0v^vvQ z$H-UfMaGLaZRt{7>1K?pQ~S1Ap4PwG6(S-Wj=rQ^C@WBhwb@er+k|*1u3=fffndCz z*sLdO%6Ez3*!DSrG)r{Hju@`B!uU%dUD#26TtxjZf=$GQf|hiJ!{>F5SzJL?j>$hGw|p zqz4mQ6w%n3nZ-Gzm%|Y_7i_)boATIq9_>dARU(suv1C#gPof3)-f>p0#N#2mfEwxz zm$o}rNJ^sX)%8YkUC%D+H#vQ@Upm}tp9C;C=e&&E0kkt!utOda{<(aQuJrg<_AFZ7J^fFuO z$Z(yVsNN4o&87v7IKpVRactV<7axAVA4v2vDATiP?jsN>;gSECr!#EdPTuQbw?t0t z+6n;gP6Av;h|p1#8{inv03U_Nf;fbnv4FgEkM)tqy9t0Xkn_+4Zs-u&JrcwQm2H<7 zgMH!nLZ)*Th{iu9ivF^`&g8quL^li-0y=C=S_afsuUc+b^q9@74_8PHS560ubKM@D z=5dF{aR*?Y<+wyor`m&B_n@XWd}Cp2+XKL}DCvyz?LZu=da$de4^@>xlq~*`-71;GUf({WT?q zrN}H0j4=cT?>#j)j{kJy++kiFQ>i4-A!Vpw7}!&DMhAaQ8oM^`o~YCjZlayfoAr7q z1C~mr2sY=X<2MRhYd;Z^HYx#IJ;UvylsOjTH6chUkR}Uicdy@{O2l#f@?`QZ8~N6Y zIq)229P^w#zhmnb>bM~-)uw#vw0!$PExi+)2jazzSFiVA2pXUf?DJW8@NnD#wRWM`Cc}qRJ33B6PGl zs==6HVuUjZ!;_%Qlp`3Sz!lZh;5_)&LGJAq!I*&d zDJS{sqYcIa^l{J7kDh6P*-A{fu8hn>dI2ew3|md8tpkD&l$+gs{|QLR9*~O1v3KKa zq7P~6GWr_(ODMMYmK=f(92E^sf#^w|pAP#hkpM!p$PuS3U-N4s8jxEV2>KpVsi7J_ zi~t4xw(%Zy`IfufdM|r<`Iy`A7JbJS;m}7{*629MtYQvVf$F|7g76;8Z|IIp)3Zkp zHl!Br@0$d$)Kc~-K$W{`X_*Bv88~+beJ!}F*m_1Vi5Ni7Pt7r?(n&MVtfZ=YDlOfP#I28{-kwT2)RYR;LiU5Psdmg!6+GLjuY#GO4>d(DbG*XDo3 zxkFJ+h76 zPQs{^?g6zzA$80>5q7jq#oPs`aHAZ`@aDlODjW&0AfN~d_({O>Jfow0<;nvaG}VPZ zjB%HOB+W%lC> zRtc8_Ls-CGy}MI*zOP7;4${bRaF^wy%O?f_r0n6^V@6grh+3><`?2gO(Y5`~EmLZ{#k@4Y20C<6fbm0J^?LUb44XLjMjs1kc^U65Sc?uKoXup$j7p&V` zM6kT_4oA)2qJTE7d0P*bYXTS!&-T-a=In@tRtY>WgZb>_){EUqqT zYKQa`ATdV?QCul)!9E(%X6$zM#y%OM+Z~s&ChsP1V8EdB(*0|4w7I!=Zvz4SP)aau z%5T1WPNS>|45>Qvm4Zm{jzfyOgDgAfX&ZIq$Z5t!u`t`n z#8weXdo>fpdJWiJxeNdfnn1%ZC2de}yKj5$CpMc&B?Csi0v$B8(4;BSo=imL!bzmp zSbJEUL|aZL0ZwN&1`1MoKp-N+oR*&b!)EDuo*+hlCw(mxUd27(>2(#AU^=ww!6B>< zc}}OoWv-O^;LY>j-VFcVRLHAXY|V6;X>ZL3$X!DE(r~_f+x1Kfw7sFOL>G-p-c8uC z_5RzL5O=v<7O{6{n}QR~jEs!lmY=KmHx#|?!|>#gXGNijV);NS;+C;&F1j zF&zJv29l1bF1V-uMHyaK6J5+-1&k>3&;ATwIVQh+d717m;+)gc)Z}Q&Pb+Mmn3%Zy zdicYKXNg`*^70@I^#GKe{v^|rtDPS{9G73J?D%!))cyM%+PFJ}PIZ-xq9V<9yZ4{8 zP)iZ^o2E4npwnJC)56o(AIFNhAAwU$Ie!cR>sWSm^`}OfSS~nwX^0nF%Bg9_%Kpj|R`+ zq&Ld+dd^Pc%aK5%6(R-2Uo8UsAWv+u%Us{v890-0?B%~q`{%J#U%v81rQIFR6cAph zO|)X>hHYN`$M@;O08PSW_5+yC8Su81i*@!__PfsYrKXfV(o}%56|T59qJI z<6r6OyW`bWHQP;19{p==Jb@fIPo+k2|MCPX1Iq(Ib%}uwah#dIXN`IpG5QA-Jeann zP1rJ=_$?7P1&}(bx67@QP&?iUU5AjsP!nDmX<~zlQ;TrVD~N%RZ2~nxx5TE)bBK_5 zIqvr1^3fm(r+QY`@MT{pX63ZLa2xi3zJ--lIJ+d&8StR4^w1r$Rg|Tsa;V44Ay3b2 zUjcaBdo8iTS~t zoe6&dTK&YM{W*N*1szWyAOh%V8<+-{3zDcxfP@;%KDF9!t0gB_AMI`3e-nfykdsCO ze1}dRU;ts^GF#0#CqVfHhXw_+`*r|uRO|+Atq54!+kDI(((auP@~ta=B8hg3&8HrZ zP?)Nhrsbhla%@}Nv;m2d&%-u0jjwXy?Rm27$&eqTRzRrIi!$^ngNO-WQBtdU!3VF? zU5-$dh|_!>Z+5tD4>u@!-?rupj!T=mB0E?0a{K?cBOWEJ%Ibp1viUgj%?A9M3beI*2V*(3O@x@Jj?l zRXL0|a;>d+8@7Mk=N_5@xX06gyHw72RP;t?V$=BM^wKfgc3a;^^uQ8)+l*eED58H8 z{Zi?)Zu_ApzlSRWo!E;o`h99lvCoU=_>(z72&J~Wa-R6eu=CL2SuS7aa>v0SqH>gnFh5yH0O6eUOP3QMq3AvW?6R9*BCLnkIpR@!CGgj_)mLOm z7aZUl_e8Bph=MiN?k?=!bU}SRxMo@U4AP>(2o} zIwF(?MB)k?>BfoU`8he)p_D+m7Z$wHT4xT#+Fu{Pqa6u~Ii5VK47Tt{lZfB7g3etp z0L4WW-3#&u2>#mz829eY0Nkq-!*ho<&K-^?czoUa&Fc;z6@EK1sP}H@8>G+`qZ=u? zxkAtKP$=2QSo0|MqGGGRtV%~5m-svJrmXlQAPjGEBp8N55jlK~Hm zm(_LPg~WVmati)b@Wq#)O(_DNS7-|Ok`3r1W)EbsD~LKOGyTekpH zzMQnF_4xakHRb#N#w|xmVD3IlU#FW59;XF=L5O)Iq?vOc-qV=RJ5F$?s~UZBYi}rb zHnu=I%_6|s7d!^%&U4B~G?+aUW&Y(;iGM*tq?s9$+a%tVftyKX77h741+_!l{B}&W zNdC;~n3ZyN9PD&{9px1yg}$4)*4+Nl)+!` z=mf8-s44cEvAHw?&au3&9BgGq6Y%CffjIqo9cf^o?zhHjBcX}^Ca0B8#DRXIl2@WLEyY5ATA;NJy;R|J-7 zZ)*~71yU}(h9EM8-KteTw|P^APaD}^T@IH)KjljA?Bn0gTrv_3AVYv@JMeh3%2~+& zRxZoMlO6P3>t@~!oZpkY0DAkk?bgvvcWjWB_+gGq0lWyKEfx|UdLZfwsraf|qt?A3 zJQ};k8NDBIuIIM~DHF>$2E2ETh6VA6jKsc(JjjSj<3Eyh#+*fIe0S~xsy+kzC_x)i zWe_QstA~Iv)WskBVLK=bN9)^4(A2pfqs}j3ReVVuqewgyYihr;Pf}={gaUOg*_6vgV~~S{?Mc2^2L%g$8%?!LT?`igW1DN@18`SZ_7U& zyJ59`>wWniF*WIL=LSBB1_GNiiL!?x(QVHSAutLNJut6t8&z0^--hS9!U0TeD>dEN zL|w)@(Zte@S~12FPXi)zEMjGa!+KjrJUdr6F(_Muz9WGHK6=1dGxFN1pN|BkR>9sB z$_~bZCsz;ruw8)!>Y#R{@NM*^UU0P-Dwts74(>k5OJ;_WaF~%+}M@dwn4Tp1h8NW#;8Z$rrk<_~w49~84MRq6sU?2_7v z0lSlMjt?+gFXwH_2Tjxr?2z!!Omnmsx&I$ici_~kpD*=trgp#2^$}YKh)w-;4n;*w02=0)#*S0zrv48dH z_S6~vJg1Q(SGwBxR%C}dQJoG{E!`>)!C&Roiap9m#d=w{JfB{s>JwC@5Qx#fe2$#8 zD*hLoN!jXJQD-rX+yzzAD#8@jmhVwB2Fpiu6j^Q_&ip}s+m&{d ziwfGaL;bW?n&D1F7?aP zPa{0YbJxn6w!HoW&U&KQ$8_mE*xq1i)rFPR;68u*;D4+p{fp{s?(1^f{M;j( zV-?1)Yi_T+tZVWyETiC>1>`^;qfBV=PZdj(Ur*0iGFWSNO(RhhO!*7vvW{cT5Rp}CsS z^}N9YHoskvi8a+{I#<5nQP4^{-N4kF&!L@Wta{|hOHua6M;RN+FrH%6E2kPpV@707 zx|_bo?E2|BF%j!I!F;uVnut ztyX^n5vrN;>3&&));u#tn$niQqi|dzC!~4S8#80sWH3z-%y91G5?9P{mUx0WfvDVD z6vEO@N$nkIaZRnFK3bk`36}}Uw>@4pajCV^lA9nBWU@L@(IHi^bZJ$WZK%Wo%P&cz zdd=@QA$6CwUkwf)rrx4KF1A7?L1xEw|!*a*?q=BZ?comoQ>LYa&4g8rR;8- zb^1p0li9v}!4gIcZo$d2#o0tv(af%igKB`d)pWzst;@=uJkQIRo5*R&hGv`{Obo8F zbgIqnm@=k(=x|?nLjak3KqnO)cA(a^~i-0Tg*srCqDpaA9RdC*OIpJt+07cf)12iszo!Cjt_V z-4gB>tb8V0elTT=-);bKB64ojpx-Yq&t_VqiDl?;G#R^L#ynV*{F^a?1-tsDHM3Wb z+|H+3$Ul*MSv$>s_L|E@Le8FJzG6kK?Hp7_MCp;87ACX`44S_Le?#MlKkrDk3XHpO*2dP=$*Ih_8{IOJoNu%OSOeW$szaQsv^pGa2Mf& zchRylCt+=)mCe*Vqsn5AJhU-Sc_U4xQd;p;mtrec%#00(V9|nCp zv3j?Xrx6HSH_}HVn;{36+Swj*V&gsuSChQT!uCUm(s+M%->C;hUY{C>x{a{7D;c(+Rp8L+MKo@KO==Xu{~lm9aO?tp?Av_Y5B? zF$;WI*VDS9-!9cC;6B@HAVm#XiOWj#$!lI7(3NH~iJ55Dh!s?4Zf>%j%Nn}YJE@pE z^ao(E4F%CWABDXcY7~y7ymnf*wnE#C>C7iD7pztjmXxz^9L|RLiY&FI zM@S-FK!D&jfw^u21RvYi-n`iwi?VPpgL;An;>CzQ8Rc9-FZoAY3)y|^aE$1seod&(HyM!`vG7;YNGa1@;QFrjO+D?=; z+?=l@3q0E8=d84E#biFpv?P$x>>e(VnVGrq!+WD*Yi#J+ELxC_azmuT#!DPGAr))0 zmJ?d1V=JYbhE7<0tCvU_!L-kzoCB@yWHz6bc*=X0W3Hr*OMNUa$%Rmpw1!+T{MILL z=dDVgnFNCn{IO$=x#$_aR#xAc6Dz?YzKL4pA`|2}SIuZfzZp$c_I*h8cF2yI=Ur+^ zs*LwtSgTtq^WErisITZT)Xh5B>q<_Xt?8pfiQIO42-eyO&oBE&zhLGb3`K!Nb&~_p!^^aiu_NHnbB97vU$6ckpxC8ri2_7EA zgzl0h+Y)RD8#p(#4s|`;K3v|OZAdC-^IFTGERZo{v|wzUA-VYhaae9BPNyYrcPXmK z3^VaTi*~zx1{obZJD3zAiASC}h|s|Ini;%DlbALP=h5!Go^qItvKRItNh;rxCO5MK z!dqD`8w&Pb2rraqXo!(Tkp{Xc6ZZ>}8fI ziB(MNHwQX!$jg_$?KpJ1>xj)kI@8bhH4N!<;2B-^TACDmKqS<76FX61Sq6@TNEceo zzJ%7Mbn;Tz;+v!5!q1d#y95xWypeqkgxp9mJKenb*f6uE02L%U80g1RpfuS4wP=P_ z4Bf+6JZDayR}n97ZLA@zF37l^r=}+=ZM@sh)z}(Gu7E93J(N%*SWdi+xMxxfQz1Kv9=(Yl5Q zcPeKLOS~tE6%z{QKU>L@#I|l@p-ugXG$+D4zRD8WK7UBeD~&%_d1ZXv=~Vi}kr?gl z)PR>f2)TMAbyp=I|VcJ@8Zj2{*Ma|%{VdKE8SEBTK`}po3UjKT4OHjPMWhh6n zw<0H@!j&&YTbH=gy(S1X;NEl1^pGXg?y>S1e<4!RB_Z7!h3;;7!o{J1u;Qbx`CMq} zpEo>DZby^CmRo}im!%A(ZcdPQc>=5Gi|t3dzK+rgA{YPS*YfI&e|VI`;tz-m=j$cE zjC5G%#jBrRH5$o9VG*CFYGNWC8x`{GO6u_|FZ2#ePZ(;u&yL@t+8v(mzSf}Tn5V&N45_}obLJ*h5 zc5X*Z&P){N&?2oNyhwI6DWO#)cp%>Q9J!y^LgQR&t9#M;)M2ov>czE~5ZdnCZGMX9 z9WA&7({HvGUohO@l%Mx7Iw8OGX>^;G7<2W+xr+nudtC(OTC@4gy=rojWpun7@U*}u zM=ySCEI|o7I9~x_(q*{XON!VqPNu&^-vs_H334*>9^UIcrxP$^pw-Jj?L`yypQBXmsBu+PB$7r&V(f-YiM=e&4d z15Vmk94y?|zyo!&%iiz$7*OxrDm!s$QBTV*djyiD6^rmI$-3!`7$yk|l=`TSvJ|hl zhO!e(3~Bd9-cVHJq!P`7irT02*TINdU3Xrr=Y6tV@x($Wi6c;6?Lfo(X9RE16A5uK zG4i2%_U_e;-;O{Ac~m8WUzV4bSA!MITc6u7tEC1jqSWUsF9)3|2=*Xz*NMiS=X@!j zx+%RcLMmN*F3%5@MSJ&0wZBS8pMqOoUCrfnaLbHI3Mg5kyt_11R1&$5wRB--;!r#m z>^gCV=^YJF6cYR{0%Bq@`ODh7{4D#2hmAtVptQz8&ac+j4F@DC!rigtG9nipTaJqLN5P-MirP5KeMx6JrcMWvNMyjnh>1Znyn)vve`{!H znC&m&2PZ{KjG$R&&^Clt=ll29$_H)I($lkoK0D)JlK$L+gak8>GBew=-YrEXY)J|R zV*TaAKH^m;Q?>35LQaN6&sSJ=f<^$&@Q(i`jp=+Sty-^;H+*uzf8* zAhh0$m5pssJVZD#*?(f}F;HL-mDvIF7o{6B)|Rxo1fp5~THVPjIb*X*OVd|lkU_Fw zMm!=UA`-Q@xCmuuIg^unI#+x&q{-@QxKltYx7(y7I|Tfy{UgkA6T>%tJf z&g1AP)1`{IP}Q;?GXiBxwe|FxuZs+Z$Jvx~6%-W2Bqp{}C|-^E+2Y3#@mf^|7&s76 zTUg-Sxo0jF36MU~+}y0eI``7L4$7|EQMQ(P4PbZNki?ZBs*CQ}Am6`vkfU_nU4yMu zh%P3zmfzfACoBfxPeaI0P`Dxyz%^4=ha;6(-Rx?!g%>Sk8KreqPtu2SD`#T}ljhz} zqe#n!qOMLHf;28WoKI_6wDW>zwTb|GxJ{ZGQw2FjiS z@2h;MO-WoBr^*BrOAP`e6TQ98F2mE7v1`2t3u@ERp{paD+zQ*Rj629fal|%Vt>)s5 z**qa!t7bR|?ta2vsx5+l-dC;JIpwqjQBfvdUKha^1MvvD?G{DtSZtC`&Q0fw2sd@@ z$SIc!Z5^FPpdk<^6crQ0yyL5o-)dnMAh(~U`41a2 z{U)me{@)Fhj08^e=TpD=@2xb@tDhb7apN{zA9#`p=~5i->mwO-(%y9*f&4M}qCm*w zW3fnaDCX$0i?JCOB6nIqye~tXp*n5t!<7#Au@L%Qh`2vsSudQb=l5%>hiKfcKc!z; zISKj?j*6Z$bUt7d<~~Xt9jc%YWw`tkWiP_50?6Yx-TCtauljdmlwT`-o|td$sTPp= zYWlwXucrUjhab`01*V;kw|vE^Ih)f4rzlr^Yqjv`@SB@;^>Lc@a6D}+GD9Bh(v6AZ z$qd^1dWzVLKdyUAxl=KK=aq1{(8&vUn~biZWZIWf7oipV0l0| zt*3&tna0ikuQRd07;bq`c=fBp?>8gUcJ!8{-st9gELXZ}Y;e=Nfa?uc{_DV0OT0E! zy=!R+md4M`kGoT+|7J_$>g65sel5>??jd8l#OD|w=MrHj6$pdOHnGZy9&0j^aDC7Cks!LzGXt{0h8R98i*cL7gz@nOzEO_!7EY<%c(^%4J*HAzGX`O%!mWEheudet?obo;)~gGKb@ z_bmi6Q=V=R{k7LRZ%v@dm`&<$lFZL3y^wLRU}Cn{N_yRG^Z4DWXR_4fMBGwQMf&_v z#p}O0DTr$KaFcTNT;$<{E%!TJhYVDY|Mm1?3-j3_v_-e1cj<5J)utbq2l6etqmz)E zn}O*i(Bs$sHlAJCR;!xNHc57CuH*E$W&uh1Elu@Nh#e=g-PrCcsaxzV9E8%37Pz?W9Ny!!cRi0X*$ zO6vZMy*7sDd2pCC&!tp4l^AUAPRKI#7F0h7mD&-*mtlvn+-#dmSxTj&1JEZqIWo_+u+usW3F&~{>|Jo5D^R(XxqiITuu|)+UyIZk~u0Axh&LKmcP3F zv2t3%rm0$P!^7Xhv9?k#y0yItn{(#i>$VoG+f1hRMsL`kUB4rg$q0M3Wh%qTwQz`1 z#_M1BxH#3;Bmb=i{b38`Iw4+GzGw01tVmYf(;cittl&_k2v)*gE2y=~p!F6@Z^RoF z8mG3`yh?`@C0Wzti#@mcblao~c5q)R9*KT-ph%>iT*B7!*aa1ufJ?lF-)&OIIph9` zXyCJ|pndz6(Wxn6l7R2%kS3wK;S^ZYVOsBW%E`(3qNjgC%uETB3kt2lHGnF74jEP; zTr_rBHW-q-JfxP9I*)dSzPvU)=h$0T6uB0tJf>F>@r0Pu^pwSXww$xYn@zb*WSwMX zeqqWvi~L18@Y~HzdemOJIKMndytGqlf!JwVNmz;78AY8=G$ZhcNG6RCwL)X|XLN<; zT#;GDXPG>YsT4wH|9s7KmGzpZ8?4h^AMq=>)XL5MqE{Ujn7JPjui|KG(PiaRpSUN8 zO+mH%9DTJeIZG9zBl}&LcpjU?w7%O-?-#ll*IRi}GB(C#BQEag{j*aQ+$v2xYmJQ{CX{5y?qikI_?7NE;EQ}IYjnl3IYH6eo^O!$M#QX& zcJq+S{Pmf!EU+xYFNQr_v8+W!BFp8ld!<%bUB?D>gU1`xOLD4^uTqOm)($p(iB!_l z#t*u%S2>PODYIVBcVQl_a_wGPvNs&t)05Tup*y~ciqa%Z%*HIMu;w18uN#wPLi)8W z7lOJQy0FKED%KL0NxGY>jqvNSX4Cf7?VW)`cH>b!I>ffJ0nBFi4VON}a7KY}7rEd%0`m0Qk}nhfX2o6R08 zvT5@)JC7EczZ#v|*;UQxy^GT2R|+th$I_B{k5P1B61Al0Ns50qJDHUhb|1-swlr5m^fmaHz@}m)AL>Nb z5p%@UxBE_9-Kla^d2}Ene#7AcecJSn1xxlfC3qg;%3ozwtyhT>Tkhkx;pvEz3K?2{ zQfNqgqdV$h=s$7EAN3~Xm45FB`c0dynz$m))lZNIvw4a4P^!vBY?IuOe$ypvUq3D? zl#QxKIHK3o$UZnSr#)~X_93fh`y9(H*SYF3w_~r^nr*$1iFN#5J>+ff)S*#dYKuW@ zs|N-i{PB$cwq1g88#D+A@gOgKXBBI%{#s}haAspsk&CjxT zD8U4^a7pA;P6Pq8LfYh_PLNW0)KADCS7g<)Qgv<9dS+Ehe9sNOIXkt-Mm~3_bhznp zP*wQ01g0ekvAW{jLolPW12(XuEUzfM*5E9E5_2;c zSyC&jrky@_7+Bkdh_SLf0ert$g0AeLPyu&q)8o>T!lA44CwujsFF#i(TD>D{Kr|;| zl*aC>CUuJT^ED(-gR9Y z4Z2+YT9v*Z<7KH^cQ*<=AgK4!W|LzE9bF@BO1b!i|C;WO<(jyW2JWxOU{h`-i@`fd$)J*NU zm~9T4uW&w{Gq$R1);fkC`_Ps@{Ri~7a=d|Vt&qz2+k$OQH2eQO)oSzo-~Q*nPH+46 zxtpK<^YH&>UHLzA{*M{>zhX4X2Gzd18_bGRPVF-*YLO;g_N9-yEQ&fUiiC~?c3PC{ z{*w~;&BVQ|+nWZlKlb+Ls|<3d&**W2VLp`pvBgx7N~Lo7zx=eRmHcgxT{k*Q@ALBU znVOqtOdr;(@0)WGPf!NC;`E9KI9C4IkmWjETigcUzWps!_QLP^yn@owNj4?A&R=A| zzwYtNQdS+^`N5{7!=@xFXp1d(lfdrXySbY3!KVJtrWNtB&OgE=rna^=^KLaan0tNW z{`sqFXF1iowa`VnS$Jo5#-L4l&x|J6aMm|^%g7%y@iltGm^bxX2zLTHM5Ax)I^f!> z;2?7H*OY6iF$I&q3=8PEXESu==UinS2!F`6SI0;bpL67X{*Z)8V3(SIIv@L$pRYFA z$i`mppMLG~OH|+^j=@-u!Yv0!m+pM(e5c$}wh`|(dbuSoY}+F46zi0$54HqnNu-ef z(bI)Q)y`YDrJ-InH|rMJG2idZ&tb&_!Z$xob)@saFH$yDv%fuN^B1==G%}sG9}d~r z6brung%L0PEeZ>z?L;<^+rMgp1J_bM#{z7AUH8lPZJH+Ew^TKL-_#lYmD%U3x1IUE zdG!XEg1`FJ=ga5cx4K^Xr@4!Mhu^<3#{PfUafdGL!h5RX5)vJ~y)l4~&XE-p9489qEe~URy-bhVmmxsD;gctj~&wyV5lS^sL9ZP1T-b+38Pg;ZcNhUDhXMKJB zsp;uVr-0j#4oPg(LaBZCWfb27!UCrUAUmoIQYH%^OOo!wlg~G8iEU1jmY$oN%gD)T z$v0_gZ*LC;Y{7UaLJg^5?;-kJKuE}`&H&O+wIFG-ePAFSa)fap3H6rP8j6dHxA*sZ z{_0L5k(RUo=dK3JsTBRJySuxs;@n>&{c;fn?&iCf!7mdV8w+Ws=P1a$yz|g;Z7A?L z(V7r<`NcDlA-7WiJrDzh>LKSm1~QExIhHZkee%WQe5a{)_J-=}OYk-UsPWRAC@JBH zYlTEBOTJgxdFkn#P;2`rO$sWjfA@%K`PoM>A|hNMC&~mrRAp{y*%Zp5n183%pYBwX zZ}0BDa1jsLsLk!Eih`n|(bwZHn2fxAs9ou14|&b^k4kxoLK)LW$m>wcu>3Npzpl

mc_Nlp^Vm}H6&sxCyU08V6TFaAuZ{NcR!$I)U>9>+ zFoImjhUPdCe(+N%!+HW-Y=K2rCc8X{vWdPl;>Zd=n&NQ5>f9|~h-HvS=Q#F0 z#Q$#)7n>dNYf65#XrXmDiqyT4nAy;CQ@r7i%v|fn(kJSUpL7kOM+LJ(Ri33Oi>%}| zJeyCVfQbTBhsrxIztqT+o05?+6+oo>a$RO`0i0Vtlv=w;XcojfSo}52FBe05{g322 z)b>5%LBZojS$y-_e{RjFs32#%rm9T^;9<6o`1nBjo7_My3gx5W@SR<}Fr?n;79la{ zdor~ItMJ0(a%ysXPd}%R-qa5`A=r9DVzr-qDH;aeD_uY1j!FAa@&&*1lpD%-4t@#-Raqf z;ospaeog0*aKs$|^($Zz9rbS3B3=pM32|Qz{Ns{c)4Nk_6zP?x}n=1x;U&+5%Z=UbD5rD6ff!=O`agIKAS;UsVQoo64Gd?@BPaqn@~bBNkd zkQ@F5;PA%EXOM~j^9TJSq0Z{?9$<*M=V6wr z`seRt+e#I_*zo?k7fc6gpe29x`Say}SmWoJ`0DTfV?13eLFVb9)Pe#*z(3_Wz`#^! zI@eb;H9Ol335?irCnhAogrdn6=s4*Of;5JnUj`i5vg+^ zVkFn}AmP=u_5d5L&Xytz_!?BK?jTj96tzJslfx#Vn=6Z_;^#4+5A8mEHxdNLrqsV&b%YdWV|tg z>(J9)n7M^m$Z9>K7{zxz6msw(las%|4ATnSTF`ZVAX~d&qS7RA|7oT7bi@Y^`Jkg> z4&Cd^Qyq_!Fv4HO27T^Lb%mK;>b6U%gCGI)R=C=NJdtW z067I9XzXERGzCZabHaTpF07LDj?-X2M&bJ*yLhT_H}EBHNMI(sw_YE|fXEV9@#3XF)cEJOykc zz=g!YHGM%84M}P=8h(TJ+uC0f{^i1G`HY2eGhiNx0wXuOMuoQ2x2kBw7uJr^BqQGw9I8u*|@^y!z0~C935C+WR3_D$X8pc zT16_Pml{K^FKK}QTi9V~tf8qd7uJmqg&}yiE?{|i*%)?KFKp%Uy6 zFn<-k_IYyrcBi~rq&^R)jIjmdI5%!h9miLJkPZl6NfJ^Z5xjWuLRD-gBR#Qkx+}|Z zgSv(TL^0xO2|9s2=G^VeH**aVAR5us&h8xG?6BG=!A=0hMp8Z$glH~0{NvwS>2GH& z#xhs`w*;C`QjQbN4W;&@q3m>t-+mqx7l=kX$4&gs-WHXX3Dk4`o0tPiO*l}k5m%`6 zqh00UECoeI%|O0r4w!^gE{^ zK%TBh{s>2m#;$3 zkCfpOn^4|lhsh5w=pqZ9i;4j35#16%mwo6Q6*POPrI6q;fc63$t1A$et}@YNNOMR{ z{tgES;POAhydR*i+q=3nrw-Qu{6`qOFDczOR?>5oU7oHjGZ}iFKYR8p5wONr2D}I@ z5dq*{`+GZgn#;misT2^m8~_>641_~^peSJS#tO$s`}%-Rqz-Zhz%K!i1P9>#(xa9E zGAIP#HB9c^n+&L$2TcV;fm9F^={gyp(&XD>QBF=yDJ3OqmD(Uh3IG*nZ-Bai2?cdn z=m&cP5C^`szQ1<`KI?%gBH+iBl@;KV3RkYwEL7Ch)d>j;n-G`AVqWq$XuP> z-KKqo=Gstz2SDbFZ3e|FCm^@K5iAj5?4XWM&CE2>#U8rVBSAt0SfQA$_9&q5L}1BP zSj87N-jCEg#vG0V&2)3#=nOmO`=VH#rZ_^Q&$?tV62MT>a&pcpM)EfJALOCSm+bPo zy8R2468K6%5V~3*&i8_KU--k_Os0#UYTcnkfy4U3NOP<(PcQ`Cxnp=D6o~V#=r|}r z0aJGd7;q~9?6i4(+Mo2k2en!>03#y;=20}7(uDTvng5O+S6z0Hht;oXZTH?Q#G(y> zXO^51!0m7z)b-Mf1k5NQOeD9`=EHxLM6@Fb3kEEHuaVtmmE>e;QZn%3fVXsaLbdsyH@~B1_GJn3Sw69{D9GN?1?qOqX(w5&4eD zJbY(!UIdFKoK7FeoeiyXRmzpr2b)Oe;GlPRh1ygzdJ1IGM@ekHl*OOd0LcOUiVzGU z*je3Tc6r!UH*<6%RA42DEm%qmJ!l@pMy8_gaDGG-cn37+C*vN*PqIas@6T=i<=w_? zQDUZooM<|*eL^eOp^ee>rRl8PAkj4l4?h*8k{~V&5{x2*t^*uV>tXsnnASqa(v>#= zdMd&Cc+vqm6GguFy5uYL*EwZ8JBv+xwn2LOpvPs<&PwgE>tDx z0+T}MfbRyCu3kREszjeVk)@T}+8iS&=tEhbg^l#i8=xiG#$aAS=b@VgLAHHd52m*z zz&AS4qvv>?j?y}dMf-LxeP^H8`TQRkhCWGwM~c`Ug$n2QS$tXs1sw>>9V$5N1{Dju zhHmS%M3$YFU;21AcpP?fawzLRC)sbeAl=Ay2h=+Kg@HSHZf%yKDH_}fMRZw^K333{ z9YF?GN|KT+8E{Yp`*z3RV1gW*w~&PEeC2bhAs|cwLT6F~U}#doRA$^7FGgH=EWP<| z5YR1rHr9NleW^XZ-l{R*ne|dHy0Iyo8%j>k%*}xuo7}nzg-@0Rxm0NMH;P-|ooKu5hsi zQLF%<_*}&X$K3%1xgDf2fC>6Hjv(+SB7b5df2?;P&y{FFuEjrEb@a_mo6SXlbfY^} z7+J+Nrq1BtD1?I@_TSu+4kFkK;3L3!B7*FdL5?BTNKt8 zA|MJx*@A#X2p9qp=K1IxJsmRloO{mw=ibvCjwdRR-|zQ*-@82T^FA+LFkz%!i8v3^ z?sD(my$#Vs{SJi_>)_zvhGcaPXlWiOUOgKd+s|Z*EW8&p1=39P6%IekR6aWGARlM(h$G<7hd@jGELLSzy z9Pqyd2GL${F+HmH=Fv|vS6J=TY)2(jrE_A9Uf=PXH+nWG`jy8RtkWFsF^>%o{3h}g z>K*p^4$Tt!v*v^flN~!l?%qGyj;h+_xrrVj+Low9Ty3;Tlhca0d^_ABab9I*MwmBa z#X?j%EERIp>B}=M`rdV4yxUtD89d78a3+d*=9U1&L|n+P9U*XAM@I@7g&Q5NCkM@_ zu^{k^w$hs3SzgabH^VnSg6Oh z7`%BPuiyR0+oXcCgYxmKczqyEX4X@c{~i2esltOLUdeoz%e=5DJ;U~ikJh~~t^2_E z>egw??7dBYK6r?ChgRrWQ~lS3??Y48=Iwr@wEK|9nbB)+{rg*&4L|Al{@@w<_wWA3 z;^~)FA=~1l?6`EPR63z3M{~cX!s^hFSzsDPbXq|{C5q?* z_>LFqwCZ2YfAC;zYtK$|^Nz9KwYa&sl#gcEJ>xAoV(Ci8`_PK$*hrbZqDV0Db?eqi zF|?}M!yh>fl||eoFj7CFb{X?(g2D5GZquq)prS>hq`c`%t0l>Dlp$w9efd?9o?k|+ z-xkIKXF0FqKLZ~DR#c|MK~lDDczF0=v7^p=sTwdVk>mM!7c)sU2wjItYu=VyQVstq zyFqfAsbZ1=C(TPecxux|RZok&fsa#rd%61>%YA<8qIA)5j(K`c`QinrqY4QS2ooCo z;>q7C=LZwCi{@;XXKe{!S#q3+ql&e8Gun~U^~z#`!Fji5a0^${I?&G)8oyDnd5fl2 zdd7D<0eChJhMh$C=+t8dpWJk_svd+VI3`AxX}6 zDj?ZO`M3!I?NL2ot3Kw%#bJ&|#K!`t_AspjS3OU-b58cYDIZ|L^iUZ|W?`;F+_UDO zH!LLZSe99I5bo^4g$o}3{scI+fvIE-LmUx}#jOF6a_SQb;q+S_Z#~(ktD{4c^r5I$ zC()o5I#rBk`IcTHH*oLDr|B6P2N(>78hY-~qw4M9p+RJY#rRagyE9!_sqd4_e{?o-VFEz7%gbH#hw3|naVuy@MaNL0HjMSc6D{U~UPVwfPG6d7kx_hCE z@v19kHb=b;Rg(KC*gt*x6cVD8CW4Y2IBSKmYS3Kxqk z_2l#;QtUwo_DTf=br~dV+YJoTa4ESJ6{agiQoDRecUAD*D}{OQ7!M}xan zE{lL&i0OJ^?#P`moLz_T_yJ(>mZAu;i6{)921^J4v8Y7~p#ZiNU@q?*7M+I&h`-oP z3k+a}#IIlPt<_W;lXF~W;#Q+t3mKb0Dp>FWsE6@Umk|l48`b#)C92PEAZ4lc^Ay=r zhk~w{=>$eAK&;z0Z+-0u)jh+~AN zf+o(gl;iE?HTse%hh}wpJ&Gxc--rZh){mFn?Q{%Hn&a1q+4pB=BzC)&#rrI|%|HCG z*IdHodxnJ>QiH}HvhU}eW%2EVj`ozqna#{gkGI-V%aTX&i?UH8o$bqJrbmFnsE%Gd}q>RAoiu?w9Xy;wSu5taw^RjDje z0t8NIJ<4xu8<9!Hz2zs555R{Bp=`Wxov)&%);>EMLXUWQPBy_?ni!m`JFocW)b=2~ z7AG&yCnJ+?)qVb^UGk@MM^3^--gnb#&f29{!`SSddcFaEA%F2qyl{aQ3NZp*DN01; z^HNmb?q8pno1LYJ)5*}&(!qzY0D{q;*ylZjSO(&VmOO4o`B^1{fuS`!(v&pYM}nN0 zIXN`@PX75#sz+UMe0nnMwO;k`no~AgI%S%go5xy5dU<(~mGT!j!t^-FgA|t^n-@4f%?L| z^V`kLGI`63JVuxeQa+YPSlG*J967GBCei-EJpH4%ZMmtIn=%K@0zyJ|VxxeI*KBWV zmIfI9Xj4RVbaeGXSMfCjZxBpxP0+6{A9N!CHa71?4XF?U{goKmV%;E_>`i@llc5Hc zj?(Sp%GE-k3JOm4{vitG>jMG;3YL&<^xyF|L%v955sWVq69vj5s%UyEygbB&z<|Yd z>Pw$@g<>Rh%35VT4eHV)e@O?!7~E7Qa1zy*r`0v7gl-_iG~va77CB2^Q<}C>RUxn* zhtgSf8IuVzP(RGhv7BGmB$Bvz ziVI5F7a}UltuU<1tjpH`Y=a-Ke0rYfw7_cskKXKqf-{s*%$KEnA(A3q(cCgTkS$_VEMwVaVA5KyV9JCUX zY7Rcau_DzH#6!@%c;IU!DSj|8kOiZBz}8lXITx*ui;1 zqaeACZ@7?@G%#ZV^$${+4cITIP+C*?OMLaujYcag^nW=p+;rnJ*!ExDXf~C@9`3VM zGB9+xHKzGwN-l4^oO9y${x`2-T&3k{$4JZ7UitLmm)Q;P_yq}mT!OfL^1t)zu$qcbu6(xN z-Q68&MNUplb`bZ*CvvEf<)RZuE3C-`kFqlDhMcEGO6M>w1&_Czj$|3U`teZ0tl|C(Drw8QDG+7V{ouo*R!HaGDw%3&^=MR z178JB)zY=8!zi&}G+1OOUyt1axK-e2jP&=tV!?Gp;IdkM*&dWUL)^RF+X^#A5+8Ac zy%B{nANK+KmksJK9eXJfa5OnF+aH%PdC&aI7U+EwBrjV1s%djac!pEDab_|-JsrRX zCBiv4Bs^R=+>}bnS^gww99ki&d#7#!mcsvS5H^8@&Z-XZ#85!UbcsCqVAxcy}OeW)GCUOjt zJm4?<$w_}NZ*O*66)v9!p8PG9=@d&fYOY-qif1VrgtZ?8TFn6)8!usdrmKsK3+p)U zgi5rdRw|Xyks=tgC;tR~qjB6)3?WwA<$wQiIACS+2}EQGVMPx;I-q{Bu@Q352D^4; zkY_YdX^fHQ1iAtJIbB0Li*L#g3JICLE;xZu9>2~S1p4b;zNjaqrlh2J@|pPO6;d4l zY7aC35RUt(P#6qKJyI{fYD$l38CF6p7AHjS3ZJ4uPpz}F^EQZ4XMU@;Ki7_X{X$Tw zZ>!2%K@Wg6uF=^iy*_tj~^$zw?X5o{=PmMcn){x ztAJ<8|^r1SB#To1uQDwTmX|Ll;SFd;2w{7xc?e1H>eARwQsq%=xk|Dtt-55k@a~ zK23M_m1l`hOR`BqhKd3Kr=h#H-P}A2lm^`-Bjo2JY)1S1e8j@yBFQ#U|J9)WwAQKk zAx}i|7Py}VZ zWoaKG+9m{|!MLukTSj)hsQEQ^jcW;8+cVXP*!Le2;l+Y3JDvB6 zBbf|_AYNoa{uGAhNg_1mqG=JzFuo%g_2OptZ8*{}4XUjz|Jb&HG%juvBN7*j+>QqZ zl6$t@HN6+^7obDg_zq{cJf{Lr7<6iuRc?v@p&=xsFdo>9sYyvm7m}0l-?_-Qfjc0d zs3_X;O=jj{Sqz9WxJvg+6-Vp7fL%N_y@&=RWl@1s0kx!@r`;o{7Id|H8#9*^F-nId zhWLT{X@Z?|yPO$^Pm0QXxpoa$SVRQ`1LE=GPAU>xN!Yv^ zq@x1^@tkAyi{|J9O=bgB`6l;mw%%bYXXhT4A1SiH)U#yX8=j^GRdTsp2dy;Om?gz6 z<1q>^tf*!C|FfDS?W#ABi(2G~NPtlt9(7vE~pFB)J*U(Y)#+ zD>mW6sbCVEV-GR-ST$7hu>Cr_y3)|$RD3D!)xw;Qj}N&AU^7U!>~-Elmd>3ta}Me& zbTZ{=J3Xp<_|S!%7L+Hjis;NEo7@=H!xFv;9wOpda%H$#T6hEI9}?=;7o&;TV=g*g zpem6OHE70Vw`@>Xw?#;pYllyBjY%$wDem$uSa}YY`-l3ALjJ{b!1lsKH3K~CUPK7k z#bVH7MhEK?h=<%B9u;L`nXE>@J^~5CETf<9*sTM_Ag~iMH*1(=iqKRfsi+J!opz~M zNWeU-PbH8g?V?nT#w67i{5&D5o;!CAy9vOe?&UaNUo9*;Ru8yq`lU-&g-$Ja627I6 z9L0jHAw(8s(w)pc(;eNurH*`K*SqIISk>o(rei|5NrdNyY7SbM@nnV*jRss^N`bK8 zxzUKJhl%qWtvH5rKrOkd5X9v&IY$5ROz_@7@NDsMu=3dHP9|9v%&NKWcu{?6`-EF` zrStliKmcUL@~{$J6c(`oY)aj#ilp$2&TUmC4XEQ1v!j)UKTB@j{QT32%2SigZjyqo zc45?1)h2%NXIpiqCcH`t?-aWm7e}|QB+aY6?F+h7L08~+PXf7I5$$+v?9#PvZq}{E z`ofIA^+&~)y6IwP8=c~Xk5blelEYs?0V5FN!>fO + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":124.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":18.0,"x":3132.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +8 + + + +9 + + + +10 + + + +4 + + + +11 + + + +12 + + + +13 + + + +14 + + + +5 + + + +15 + + + +16 + + + +6 + + + +7 + + + +17 + + + +18 + + + +19 + + + +20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N1.0 + +N5.0 + +N3.0 + +N10.0 + +N6.0 + +N12.0 + +N14.0 + +N15.0 + +N16.0 + +N2.0 + +N8.0 + +N17.0 + +N18.0 + +N0.0 + +N7.0 + +N13.0 + +N4.0 + +N9.0 + +N11.0 + +N19.0 + +N1.1 + +N5.1 + +N3.1 + +N10.1 + +N6.1 + +N12.1 + +N14.1 + +N15.1 + +N16.1 + +N2.1 + +N8.1 + +N17.1 + +N18.1 + +N0.1 + +N7.1 + +N13.1 + +N12.2 + +N6.2 + +N15.2 + +N5.2 + +N10.2 + +N0.2 + +N17.2 + +N18.2 + +N12.3 + +N6.3 + +N15.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s1__exit_right_1 (right) + +s2__exit_right_2 (right) + +s3__exit_left_3 (left) + +s4__exit_left_4 (left) + +s5__exit_left_5 (left) + +s6__exit_right_6 (right) + +s7__exit_left_7 (left) + +s10__exit_left_8 (left) + +s11__exit_right_9 (right) + +s12__exit_left_10 (left) + +s13__exit_left_11 (left) + +s14__exit_right_12 (right) + +s15__exit_left_13 (left) + +s17__exit_left_14 (left) + +s18__exit_left_15 (left) + +s1__entry_left_16 (left) + +s5__entry_right_17 (right) + +s16__entry_right_18 (right) + +s2__entry_left_19 (left) + +s3__entry_right_20 (right) + +s4__entry_right_21 (right) + +s6__entry_left_22 (left) + +s8__entry_right_23 (right) + +s19__entry_right_24 (right) + +s9__entry_right_25 (right) + +s17__entry_right_26 (right) + +s7__entry_right_27 (right) + +s11__entry_left_28 (left) + +s10__entry_right_29 (right) + +s18__entry_right_30 (right) + +s12__entry_right_31 (right) + +s14__entry_left_32 (left) + +s13__entry_right_33 (right) + +s15__entry_left_34 (left) + +__junction_35 (?) + +__junction_36 (?) + +__junction_37 (?) + +__junction_38 (?) + +__junction_39 (?) + +__junction_40 (?) + +__junction_41 (?) + +__junction_42 (?) + +__junction_43 (?) + +__junction_44 (?) + +__junction_45 (?) + +__merge_11 (?) + +__merge_12 (?) + +__merge_13 (?) + +col 0|1 + +col 1|2 + +col 2|3 + +col 3|4 + +col 4|5 + +col 5|6 + +col 6|7 + +col 7|8 + +col 8|9 + +col 9|10 + +col 10|11 + +col 11|12 + +row 0|1 + +row 0 grid + +row 0 grid + +row 0 grid + +row 1 grid + +row 1 grid + +row 1 grid + + +row 0 grid + +row 1 grid + +row 1 grid + +row 1 grid + +row 1 grid + + +row 0 grid + +row 1 grid + + + +row 1 grid + +row 0 grid + +row 0 grid + + + + +row 1 grid + +row 1 grid + + +row 1 grid + + +row 1 grid + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 82ba0133b..ede95faf1 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -3359,19 +3359,24 @@ def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> Iterates until stable, since fixing one edge can propagate through port -> station chains within the same section. """ - # Pre-filter to edges where both endpoints share the same Y and - # section. These properties are immutable during reconciliation. + # Pre-filter to edges where both endpoints share the same Y. These + # properties are immutable during reconciliation. Same-Y inter-section + # seams qualify too: routing draws them as one straight run, so an + # endpoint lane mismatch has no vertical leg to resolve in and reads as + # an almost-horizontal slope across the seam. candidates = [ - edge + ( + edge, + _same_section(ctx.graph, edge.source, edge.target), + ) for edge in ctx.graph.edges if abs(ctx.graph.stations[edge.source].y - ctx.graph.stations[edge.target].y) <= _SAME_Y_TOLERANCE - and _same_section(ctx.graph, edge.source, edge.target) ] for _ in range(max_iterations): changed = False - for edge in candidates: + for edge, same_section in candidates: lid = edge.line_id src_off = ctx.offsets.get((edge.source, lid), 0.0) tgt_off = ctx.offsets.get((edge.target, lid), 0.0) @@ -3383,10 +3388,28 @@ def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> applied = False for candidate in (larger, smaller): - src_ok = src_off == candidate or not _would_collide( + src_moves = src_off != candidate + tgt_moves = tgt_off != candidate + if not same_section: + # An inter-section seam has no vertical leg to absorb the + # mismatch, but its endpoints feed fan, dogleg, and + # corridor geometry planned from their lanes, so only an + # endpoint whose lane is the whole story -- a single-line + # port -- may move to meet its partner. + def _movable(sid: str) -> bool: + return ( + sid in ctx.graph.ports + and len(ctx.graph.station_lines(sid)) == 1 + ) + + if (src_moves and not _movable(edge.source)) or ( + tgt_moves and not _movable(edge.target) + ): + continue + src_ok = not src_moves or not _would_collide( ctx, edge.source, lid, candidate ) - tgt_ok = tgt_off == candidate or not _would_collide( + tgt_ok = not tgt_moves or not _would_collide( ctx, edge.target, lid, candidate ) if src_ok and tgt_ok: @@ -3396,6 +3419,9 @@ def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> changed = True break + if not applied and not same_section: + continue + if not applied: # Both candidates collide; shift the bundle at the # station with fewer lines (least disruption). diff --git a/tests/test_seam_lane_agreement.py b/tests/test_seam_lane_agreement.py new file mode 100644 index 000000000..6e073c824 --- /dev/null +++ b/tests/test_seam_lane_agreement.py @@ -0,0 +1,63 @@ +"""Level seams into single-line ports draw level. + +A straight inter-section connector has no vertical leg to absorb an endpoint +lane mismatch, so the deferred-offset renderer distributes any difference +linearly and the whole seam reads as an almost-horizontal slope. A +single-line port has no bundle constraining its lane, so its seam offset can +always agree with its partner's; these seams are held level across the frozen +seed corpus, where the slopes were first observed. +""" + +from __future__ import annotations + +import warnings +from pathlib import Path + +import pytest + +from nf_metro.api import prepare_graph +from nf_metro.layout.constants import COORD_TOLERANCE +from nf_metro.layout.routing.common import apply_route_offsets +from nf_metro.layout.routing.core import observe_route_edges +from nf_metro.layout.routing.offsets import compute_station_offsets + +ROOT = Path(__file__).parents[1] +FROZEN = ROOT / "tests" / "fixtures" / "hash_seed_determinism" + + +@pytest.mark.parametrize( + "name", ("seed_15.mmd", "seed_41.mmd", "seed_72.mmd", "seed_77.mmd") +) +def test_single_line_port_level_seams_draw_level(name: str) -> None: + path = FROZEN / name + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + offsets = compute_station_offsets(graph) + observation = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=True, + ) + + def single_line_port(station_id: str) -> bool: + return station_id in graph.ports and len(graph.station_lines(station_id)) == 1 + + sloped = [] + for route in observation.routes: + if not route.is_inter_section or len(route.points) != 2: + continue + if not ( + single_line_port(route.edge.source) or single_line_port(route.edge.target) + ): + continue + (xa, ya), (xb, yb) = route.points + if abs(ya - yb) > COORD_TOLERANCE or abs(xa - xb) <= COORD_TOLERANCE: + continue + drawn = apply_route_offsets(route, offsets) + if abs(drawn[0][1] - drawn[-1][1]) > COORD_TOLERANCE: + sloped.append( + f"{route.edge.source}->{route.edge.target} [{route.line_id}]: " + f"{drawn[0]} -> {drawn[-1]}" + ) + assert not sloped, "level seams drawn sloped:\n" + "\n".join(sloped) From 569e27763f659ec378ad01f4d2edeea916be156b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 15:21:04 +0100 Subject: [PATCH 087/158] chore: keep review renders out of the tree [skip ci] Co-Authored-By: Claude Fable 5 --- review_pngs/seed_15_after.png | Bin 133734 -> 0 bytes review_pngs/seed_15_after.svg | 272 ------------ review_pngs/seed_15_before.png | Bin 199498 -> 0 bytes review_pngs/seed_15_before.svg | 481 -------------------- review_pngs/seed_41_after.png | Bin 211363 -> 0 bytes review_pngs/seed_41_after.svg | 401 ----------------- review_pngs/seed_41_before.png | Bin 303067 -> 0 bytes review_pngs/seed_41_before.svg | 674 ---------------------------- review_pngs/seed_72_after.png | Bin 130064 -> 0 bytes review_pngs/seed_72_after.svg | 249 ----------- review_pngs/seed_72_before.png | Bin 173421 -> 0 bytes review_pngs/seed_72_before.svg | 352 --------------- review_pngs/seed_77_after.png | Bin 234174 -> 0 bytes review_pngs/seed_77_after.svg | 496 --------------------- review_pngs/seed_77_before.png | Bin 327321 -> 0 bytes review_pngs/seed_77_before.svg | 785 --------------------------------- 16 files changed, 3710 deletions(-) delete mode 100644 review_pngs/seed_15_after.png delete mode 100644 review_pngs/seed_15_after.svg delete mode 100644 review_pngs/seed_15_before.png delete mode 100644 review_pngs/seed_15_before.svg delete mode 100644 review_pngs/seed_41_after.png delete mode 100644 review_pngs/seed_41_after.svg delete mode 100644 review_pngs/seed_41_before.png delete mode 100644 review_pngs/seed_41_before.svg delete mode 100644 review_pngs/seed_72_after.png delete mode 100644 review_pngs/seed_72_after.svg delete mode 100644 review_pngs/seed_72_before.png delete mode 100644 review_pngs/seed_72_before.svg delete mode 100644 review_pngs/seed_77_after.png delete mode 100644 review_pngs/seed_77_after.svg delete mode 100644 review_pngs/seed_77_before.png delete mode 100644 review_pngs/seed_77_before.svg diff --git a/review_pngs/seed_15_after.png b/review_pngs/seed_15_after.png deleted file mode 100644 index 4591b5023fcb282c7a711a6d6dc719a6387290b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133734 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 >7GMSl9)a~>xl>53PKMt;fkSld8kOIpya<_) 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Д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 - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -4 - - - -6 - - - -7 - - - -8 - - - -9 - - - -10 - - - -11 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N2.0 - -N5.0 - -N6.0 - -N1.0 - -N7.0 - -N9.0 - -N10.0 - -N0.0 - -N3.0 - -N4.0 - -N8.0 - -N2.1 - -N5.1 - -N6.1 - -N9.1 - -N1.1 - -N7.1 - -N10.1 - -N6.2 - -N9.2 - -N10.2 - -N10.3 - - -Line 1 - -Line 2 - -Line 3 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_15_before.png b/review_pngs/seed_15_before.png deleted file mode 100644 index 9622a60bc1af4b4a33b1a3fc9058fe428bfa1e2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199498 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

X(i^qXF0~ItHYo$2f z%!^(31`XC20d9e7C1cU5fm<0J7ChaNBX75znni0?H#J=Wr@drP4|x!5qACb{OuTbC^7hBL>e|CQUv8ZSnS-N~WMBZ=TggRm&4XmmZE*{NI zNJuz1u-gwEKiezL;_rWvTdTxw&1FFK6cF z=+5o|iNa+oQ@?DO`tl~vI=6)zR z6cJ%znliJ&yrhs2t7kz0Igmfj5wcohU}L-N_9-3jt!5Zn7#cn=G*$=_^oe=>=Q>{m zbeKO3kT#D_rM$gkm#?}JK9+Uyi(2Yn4FY!xQ91t^W(LpCBaQ^II*MhU`mE{MeNFosYr{0 zlKO5vk*3|=3Cw&vdI^JS5d#}rk0o7-th+|aE8k^aJWTF#FqxT|`A^e81D?VjVjJ)P4)quAZO^q`!NxwTXLiwM zjle&Zla-CNo5JYWKH0B6w>I}7yRVYFyqFTFsLKs-5dV#vbXZ(mjv+)y=JGm`Dwf*6?ePIf1#fS9TH03@(Soj3VUHj!fz1TxT`66L zR2a};PT9ggGRgGN@&_M)$mJR{?WYz{KOfE7j+DJy>d)0^x>#be)$*#c4Oebhs$1 zls3i#M=_(2K0%tvi`ESMDyi+rKmmW`~9X8 z-OTHJn6q|AEIWM31vT!CyW_k7+NV9~0gzyIlbwc1NDHAoZ69d?a7whar1{P?fDgLzdiw^4UoEnM@3+|%3F_Y^Q^UVeU1P!N1~cxHcm z)ahe;nT}$HLKl*BfLNN9n)(5Fw0!-xT6eT+*oFY@N_fA2|86>32Hf1~G9=D&8X99M zPvhWbMyz_I)(o=K(gq8Rg7#B71xRy#m~vKce7gb*T5)Uyi5&B(}Tf5g)Nwq0;U#33XLG}5Z_ z@>VAYoA-1Y*bklZ^YZu&Ft+-hpW`~{OlA!F)2^A?cKX~o0^)|7;Q&h zJ=WEo0UE-hd{n^cU}M;#TK%48K>1=%3h+duQfrvkuAR>^yAF=LflNva=$j$uO!_gj z-&kzaZ9>8XPJ91oA!i%x~0Skd7ddCt5menKtIZXP| zDf+WixvZDuA=g;Cj*Hu+o8B-RV><>w%;L1iD9CRhACe^zZ$haE*80j0aMVc3cH|~D z3HMjWee;337(QDK+fi$;-S^4Bftd{z%(ZJ354&zhjnm8>zZwD;U|AamNih51S_YBc za(`Ca>7&sKdrP#ZYoqgVu4kQ(uF(=h3|hD;V=N1p)v_F)?FS8j5K0Dy%+Visf0P9} zW1cUiVu1^M^@G$FIN!oW8s$(f^N|wQbC>-FWOokoxMOx$wCIG zS(uIf()krH39Ek6mey9&O_ijiq~(De3)bAOFO_f~BPF>ZF~gtbmXO&iJw3gu{d@3! zKgb*6Ucb;!FoK3dKJ)9oQ_CV0`4ECoDE`TQV1 z1R24Tjk>Wol^+n4AQxrQs5sc}5VY953LdfI{Os7o*cgAczP=tlGjC(3e)sMj7*S4G zftT>i z{$Vn(=>Ycvk?&(1)FWWbQVp~KN;bfQkG*bTEG;dSiv9dIQ44pv4yR=#^fvGe3=D*v z)ubu#E;#m$Gb>0}*9L!%STQq^mSU`)*&DqMjR!DZu(jcLuu*r-qI|Uo>BNWhlm!6a z!nB-$H?)~Ss}>{W(M}=ygRB`7gUU@+cCEh=dt^aD0dSQ7bfEmw(9ke)o|ctm)^-!T z`o?4((CXtknu5xq%xWc{!orlEJ?rda`@n9nF;NQ;&;R4c0LsOk#U8jNqzi#vZ}$Tz zzi)MQF(wqs457fKP!Sd43IWMPO-&8Jft{bf0xk#_gCx^TeJB08bp@HPC>vD1wCmp2 z|M(FW5&}?2v*hJxDf*jf^6B810XhRrhxk1^GlL9{68M=t*2CUgjd%PuC%ez3uhcT%K>e(-LCtc&; zc<}P&S4U5v(yJk{uA;m4`zI3#n^3>(%+FLSechL?AcU?QdRI(#g(IpBnY}YF{Z9H3 zG-*!i2*eJ9L*-cMWCZZC$W0Iu5;Cfa`}=(HMo^uMF9d8oW;czcsq{NVLL6X2Vbd@q zFE5X8y&`B)Qo_5S{uA)|dYH4&whPgHzUQ*m#W`c>c!4v73c z{P?J=AA%aN6-C}*dP~iOH9gLs<-HznHJ-%I8e+hQC?w%Iw)#~hb|W(rcE!c-+{yk}_oa1P2>o;5%$tDFGwsl`$xxTioW5Qi ze18w|#J`P#K*0plc!$Vmh(EFY=3B8_=|11MFW>sUAxwKG?Alv|+T!1Z=KCsfPiDz? zoT}-Cy3=OGPM4{_b6r|i-b4R&rkZLa`PVNzIPQHra;KCrQ6y!&%I|cKhBILi_@;!X z!nTTNi2L&Sai1?DI&r(Yig+xIozyQQb};jBgf3kgobptp-xI!JnvopbaYO#`(&Yu7 z3qqu)Kc2&v+~|oCaS&FQ5^3Db=bV3Hbn)q9ryman*A&nHM+>m^0pV!rtgG*cg3yO} zSMW$S5a^8~fNTt60(#==#_3|{GS5?o3+d&P@Kjd!*Gt^pNsC8q77GVnl$9$YHqfN} zGO`2mdlzto7{&6$8Lvy|#2 z&&z1O)b%|Flz0Q9smhV_lK0{RG`tIRmJb?jEhaEotvK|S%(Dm{~?WtcSe(>RUc>S~cJDtl~1R>BRQr?cKX*F7knqf>l)LF|5~ z)u7r}`f7edvbLd`dH2OpbXnusp4WDmv!|-!3$ozM zzSNm33cUNcY5kPav)cxQ2;}6vbl!lf#^Oa&+v%Z5+khBlWqS8M{JGCEp%I$|=^z=Rzt`>&=K7B&l#$ooX= zXPlgA95*j};0R^pD}|sop#FSR=(lyjv*`ta&@z9sp{%RijbQc98Kx6b0-a=8hi|fa zQ{B^7#tDh51Q`^WcvJ7c=6r^ZYu8|&`-JB%%8}i1#FSf)-chtA3SGz(I?gzzYuu`h zYF7{yM&mT{SxU5`QIW)j0%zp{yfIGGR?|Pqzjl|&&lbL$7DHyACo#O8fx0~5pkxCiFTW9+~qzlFDb`W!i=YDC=e5zsIU!e?QHeW?Vj`Pi|=q~X_I^9<#ZCQ z&iH#O5rz+sMJYPEsOXy4hK}pV`(wGaQ`29-MyS+07M1C0eRh*T@5+_@r{T|Xx*8`Z z_h9H;#D}bxYxals-}r~+-eqXTB{SD7Y6T|oGAggYF~f?MOXp|rH%1s(`KSX%@_9H@ zFI*mlbm0+XSSwnQP1<0Wy)Tk(GU+}{R7X|sA$GK~Zpy3P#A1(_l{?(x)BL&Q-C{!8 z_bPFzrQO)1r4Ng+@0`?^UkyhXJZAh})fK!zN?AE6u90WfGf%Y6W|wag5G?wUVPRst zx_Ya@GXSB|xhC_3oo$GcI?DYm3AHp!*A+K|b)PL?w=^*^ zv!7pH_NE^@{I<6~{Y3*Y;ph>Jf(Vnzc(>~+cZc|Dp7i`DO6~J;&8xgz{E3YE`S@gK z>M8Mmp|o!t6iO2sTi5lij!(Eh~?*`@&v z)$2DFepc|DbSJI5)=P`sQ&7sdf@vk1$jj1s&+rouz4v-7id|2YOrvE%TI#`?Z*8hf z@>iDQHZG+ltJe?Qbk0teR)_1#rXvt;%mo(syCih}WLS7Ysq(L_cWvX$Lqd(wuCmzH z$sr~l51k(CSn5bTa!)Ui*U5b%^x^FVGugoU!i*Bp*}4UGQKD%e*S`047;~I(7})+<;ig-o@LB>T#_(jT=w~U128AH z5ovmukC9Y4JO2Fq=%HxhoZvae;u!TM#Av#6qM_xZ+0M^%gZU$BSXxBKyLN-l^ z+*%6OFOoCsfLAQi6wKJ(n9;SgKh&$%B9vdoo!Dh&swCo2US2jDFGub%wdhr9!L*kGCv#CXSBQ4n zeGj)y6f;ZU+F?v-*GQ+1^%0DQ<1{loLmnPZ11Z^S<$`usFmhG10+%TeJL0RiMDBYw z*F5mVnHsjh57K=Z3AQ1O_Xg?G0U$O(%{Q%a83xzQr5n2PWtGfcl|v$U$=F{*~OcKI1IKVcPisy$E|v zM1g9D$}twA(}bNf9TU^4D*FP$!M{N?M4q}_-;|v*RZ5X+@PfnbvCAkMjG`2X1$0pv z#AxPjowU1xf}ZT-6AOWf4-d-s&qm|(WtpYh@T|tKC<>fUsHN|GoUa)9> z@jl5feQ3=!L;1W0#s%3Q-LLpYv9&MBPFDS*j4S5f}^|KV0UvjIk ztxITWO+UKjJedDm=X!wRzLz(Cc+2eHD%I@2 zsFw9iG|&u51x{LMVx+0XVyaP#fna^kz_@1*VhK-d(jhgpN{wnLT$h!V-FfV1W%EWH zghw}6wA?I@fd&WM<=_XTt@-9uee5bwJ@ylC(2&dr&>Y3b85ej-|1~9-44ICvll@yS ztAthlQZbP-9 z^ZxE@;M9R9eiF!T*clI;CHIve%0;OC^VqC}x9OYg_AE&r9v*^5qkXlkj5n_LFOLu2 z-l_$L0gm2n`j&C&2K8P9Kzk4n5R7UNcLI}xKnz(d$|m9fzl5$ybOBN65%x+UtIV{4 zh`e3*$^-O(z!#DC68Gw^-Dzn)C?s~X$W&1X4bl5q%=~@e9m4H=vXaEjoYPW&wJ{(W z>(&cCJF?|jBOKrK*}HGbo_KqcBqb-G0lS5biTPT<$IFZOzQYbMJfL%3gNh>I)3y5t zQ&r!(fWF)XiyPg23A(%eao1|LwRV zr-Nwp=NGY{3l}e)bH92)&pdhe0P5Gk>@1FeRx+T=kl*>Jfc^rgesZ|yS#gC*I+zj%mVw;i z1p-w`LQ=9d{GJZ77U?f=WC+eJR_r7SAs}R<(>*CQ%?@J z2~greS&2abEZtWqqk-NL%5glyFu`iIM82Z=hFuAV+wKj1+1 zVGblNUa@h`n!@46CXjDx|~=k^Z6!h=C4f| z;LeaTY0YBu7={+cG0dkeVayh5t-z3hxTXaW)Xs~de)yY;% zzh+YDL`$}MIh9o8OjW}(s7(QH2ZN{cprNJZ0X2hzLm8XXG&@*~(o#}EffbOu*4Eb3 z4ZcWCwFXEy)GXUL78e)6nY2g7q`Ve?`n035abX~5yfuPtdTPo82i090Drrvz4!>yR zXciiWSU$W>@f|2y>cp;vDz$)bU$yI^^S_mt_kt$b-Q9g2eg}$SgK1C{o-J#htK9SV zrWAu3BT}sB{`M^)v&KqfqF!?_t;SnsxGLz8p58|)kX?~7RWi=v?&}kp|7bZ->Fno` zM)JQfc|67E+i~X=P$MR-hAq)2!CYDJdbSx#t{s)IcYrI81o7m| z{{4HXjP&*QV^Tm#LPkNMP`3%sAP(dwNUf952V|kN@LLz?SGdfEC_O+jqYF}oNDh;Mqu#ioN(BLZNb@O9u7qjw$Krvn25 za<%IqxLI2l(zj2kY^CjjL$U0*zrSF`J6{LugOnO(QKLBg_3v1M46$y61sn&mN=gQ~ z&!g{oLubJV>;aJdnzp^63uy+0LUA$Zsi9gXEg=!bZ@-l)lUSgVmEaDFMTl2tAkvH# zaOMSSl#=rMpoW?nzth1>C9eIXFc3bkUag|MdzS|k(qmAQ%&3EV2Ljc%rse^K$Ef)} zE47qmbQd9o2gDaCuR9*#H-H2$o%Z9yA62V5J2Dw4Iu?2YJbzZT!-EGkjKw2URh_a> zhya1pV7~#%j^w|?@h_|pv$FYvTq&auf~*~sc&&Ly@9&RnPkNGrmZ8W_%iHLxawzD> zq2#8WrN{@BPux4AAeSlv`A;@Bv9CTzf}ny3fX0>sn~eWwVd|&1Y$Q4?H;~jgqn@4~ z(B*5+BNu7R2uMgs2npv#vQtxEc8q`|3&aXTHq1YpPW|9J03_$5*|Q^zRM??tgY3Ql zXO$faK*tn>V9pO|YI6S3%VPC5CDy?hIuC?CfL-KNKm$PW`d~ga8=K`f4-63ELl^+s z+Nk_#Yp?Q)!pvziXq^E4YT)_urJEZ7Vo%Uu%-x2sE zs1)&$_;JRdA!{}e>DNbioLgcLh^&SZ%!4b5GC?7FhK7d2)KZAfk9m1lMMRo!j-nv4 zY8`nHqbuT$!}^?2pbLA41GT4PkcWHV@WwEK?7p-Zswy1RMoh!^U~)il##ij^?LCmK zzFft{#kCKGMP%1U^tG54ypZ7F5?(0%Ly@<#cosaS~Ef8~gA`NSvU&zaIpx6=OVgAb<)PH761Rp&@seBqlaC8LRFS2sHTy z0BiwSEJT;o8yB8|uUG0#?pdr5Oa!0+%1sL4Cr=syPN*9Y3L(XrMNpKhj82gf^(CH- zb>M+Z1H@e88Nb?j$dd2pG?vZzZ88Q_! z6f+2fo&**c_oah|g`C%_(U2V#71fXI{!m2eE0DBZ7Ydh528-qnyT1gwQYo&{0*DpO z&EilOf-Q{PpM&-{Buk#DDk}r=#l+QeZ9SxE?*vfS%;N9>jmLXFZVfqp;Rot zJ=g%i=TeS9=o*QxC7O>I$kAM{xCMwcn$s+D`C~Ebt=`)Z#!UxV2OgD=#zsX!dDKdz z7~CwFzfCg%3i;ny{qMX1VfcojC69rt7(1W^1gCl6u2n56`$F)WIy%lFK$O9FA&xbv zb4IN~%+P=ah;8V2Dw%{P1Nei=(dA_GNBgg4h3dmLi(ccxU%Ju(HA^XNZEZ@c`XNY%CNaWjIobwn$TMkvBRoDr$83vK@huc z@RFMZ*)L{pp1rLtBhv+fv1OI1$AMqKu#}eSCtp^a9W7_48Mf+gBSl<8Ln`x+d_@79 zE>ykk22m!&v&j(w>!skS?shw=AO^w~FgB1^t}aCc2hYShG&MIHZ>AN-nv4-oh}Zc1 z(dp+F3ht445L={UPfBA-JeA!5paI}QD1ttfkdTuUywkD;B9CJ8Q58_cj#UAW1Dz9q zbVhIS4>D{1S5w0KY|zAHKA1P#!dz{-MMY!&0YVVd-VEsIOije|hF7x|QFmU- zii>;Ym>}(`^KA*va`VS9wQJS1?52X(=jt5(HnYx{xoa6@TgBqQZ|Kqg}py)3*VDJ249kqo5?Hww=Q+ zmLyvbi&$R|Q6wZZv@H3J%qPkwEtVTsQOid)G&L;>Ra7(8ka8zDK-vJ44XcwRe1$$pMcsB%M@Q`7`DD0NKM}jv7A|u<=^3D>ccOw-!=;!-*V4?oGE6iD z&3rZI8yeUTxT0VpXP)%D$I6Oysbl^LjY&zayh@Ptl(0o0b3!=GcwNCZp$n135ByJH zAl~|@uCh5q069C6P(1_5lwD86hS2QtAC*$}6u^8$$1vdVv$38~vMq z)jR)n@)IAVM+G&eSm2N|o^q&IC1T;9n1>Toe|Zch?8G7I_vwAPe^Eb}Nb2Vwi2gq4 zo9bTxw_z4}1a}G2ifA^}|NheHicR^bIlvA`gN|32K@p{&pIe0MCXMWf?Q{XM-dX(u zVuud78Z5*d%F5ud_L#M?5v0K(dNg$1M`f6Z4T*}di=A!Rsl{gP2i`bBK(PkSL?T23 zDLv~bT3GFg5bFP%pe2F~T4+Q6bI>Zgg+hcFZ5n2m`_HVyKOXpt{J9SQH@&*Pza5TR zSAmL|p28tBqxAG@xY$qQX zT42?3b8|uPk)16ast3RGgJ^?^fzh>S1>9=lB%k5IO_P`X5A;^z>eSIMlfLebQQ~Id`AQ$&q9N3X~TchU} zY|3NENe)PVv4fzP0)OA8Uv9Ms;Ip)Da>H6({l#1>bUjGj;{1M8_K69)HXx&iuAvxh zBIQtEJ1v}PySzcE0g`Bt^t+rMK^_nq8j82K%Y1f}js36nn5YKY!O6)9gbbtRIWR3C zsxmd*v6k5YQW+Hud4LlW77-!9$KQDOY+o*;Z*y}KdOY$N2KxIs*^vj1{hM>yj6RUM z!v+Nw>7$Pi1KeL)+NQOPp*x5xK=g0S9@)?!I)6UL8Px{m|5Zw{z*;S6y1)jlDHayU z>mY5TsGnv2odA_70D_d24HQpeCH4h(*Ne8z80g})=39`!1pKAwZ z5u|rp^4Mgc2MfLn2mA;)kq*}qmp26D|JGWJQnRyLfs!(hfrx+roTn_aO9~KcU%z%5 z7gAACfo|xiESmnEM$S`d>HbA4U`C*g)d|B>Be|;T40t0DKEv#YJ$bSLMx_iY3s9It z3#_&_MHK3X1aD}KLBqRjOm(#L%+H1TEVs&{s1-LtB=gOQGlroRHN$6$G%E<8c@$vcianqV- zgNliX3Dze$IXN@ar?0+jDAcz}cf#Tw}II*DR{`+hFAH@V5#PE6(lh8T16IvhT_UFsdY_d;K{%Il1*Poc zs5uw0FJus`tla~J51M!;loS;1S>DPf0m|q#Hwon6Up5_B|C83bF%jY8f9Wy=npanO z&zf;TQZ!K}bQZWZO`>kTw7wqvoJJN5{YbzvFTb#m%)c>6=lP+9{@pY62&<@XTk(urLM^}O7MX!Bw5 z?aabmr3baOA+6@c*PRw+z{TLaeTbn%HMY9*@^^->E}bNM&qTxmdjtd^p>e9BYX?!I$o}Ol z!RdP!Lo5{=)$>K5OH0P%mn$#PdL2vUAT__w9yzNWPch?;`8 zYL~<5%F4b(5;F#91&!h&!b^>f3+D9g^FX=8a(A+v1R=@dWOfm8!vc8`x31yby8DBm zzYACVl!1^FvCQ{zExF{@RA?4ukynmDuqgcc$=4wjC9^D(UnhytPP_B>^?&~v9{3F4 z?|&U~c$oiqq6qTi|ED+1;t<7YZ8p@)F<1#>6hMx#ervXgZ_Nvn|BpuY&zohr`}v=c4*791B|Z>0|2%4fDWz=wC~Y9WCfHu8 zeWS>X&-SKH0*$!rx?zl-aw+d&ZO_PX}sVu zH+srVx~wUcMv4L3zzMS%&3E!R|{6N=5Rth z`n45&#{5Xv{;=i9D7}-qy9mi_vtg%S!%xE;pVi9yS!AZ%4?Xmi=A*o~^B9)BHBY7{ z>pZR1iA1_sd_WA3>?)U@MykpOzZaQ3#6eOK%XuwKj_Z!&62jN+?>qy5pnc=r6-_Jk zjzQr8Yy2w7ivL*orxup0w~1MTDaG>4_ymIko4!zrksts30ZnHW(E5P>wzI!~uUmro zbg#HtiV`nW&nS}fXD@TRk0Q@!-N z2sRT5-WWyvS>Okr7eH-9#QVY<1nz7{$pnj(+`z6p-QAYg?Nq|SZ0{~2-0oZ#AEYOl z-EgQx@&UkC%Y(F+p@b0I6Z#Jt$j>%BU8>_OV+G&&m<>z&@w~IGYrW?d@L%4gMp!jZ zw+Wh{M1({2B9eKuZq>0!_Naj-0{LVV1qF^7fuJT`x)9c@iDhLD;ZX<#H|yu%d~uZq z=p1P0p1wM7qobq4PHb%sT_^DH2=@=B!|mBKY*K6iPrmdR^{_*E}d4MnPVln}BiC?gYAz@7%6qK{iy)D@*l!n`GJ5e2N8UL;dfwr9$)RgTEdK z!?ScIfpM`}8{yH)hweaK#fN2cktVF$H25rDQV7KRt4UK+FXlxbJ$gi?E3aT}{05TepL?F2o~UgQ!JMGSh8`ovuz@+e-+o$OqXMBneu=sF|y{kACWiWMv(U z8zaI=z;CI@C7KP-MXkUbO5TUfnDUWp%&u;J8#f&Rhc@@h+Sa(=sK z1J?64Hhotpg0+OS{^`%%KJI}?oH9u4HXSqbc!m9T+WIqmkxc3fh(ty1VD9;{?B%jG z$#GU_09*$?5lSyqw}*?6kA~rE%aeN&I*YNy+iLe;AuQZ*b#=A+s4pja7;a`7&bl?+ zn8%+mh^xjFmY(jFfPMiL1w~8u{dIBS?>EY!&QrZ#xeoGmTp8Y&vpKHnQs^L=A6#h+ z)Ek_AP3v`AEL;z(fk*&ksec?)wa6BNqa%mgu+xf$&08#3y1x-Mgy&;GB+|lvfAwz8 z06Y+2-(^WI?zOQp)EMjr)NScmzia3BjO((ngzpj_zXHJEQUF8 zOGnoN%*}6z@{{@Re*7`LXyrgshJj!cnS6%%PUsw-K2v4fN0%~d;j$eC4B#?61!pko zM;;{}MoS*m*JBn-ZE1=>28?iPl2KJX-syR&3H?}iMmvjEt$3ZGZHw2v2icwn&mGae z;ggFig?I6n8IM9`sC`Q`R1aLAGqUh1eQ~(RQiwK0+@3#nbDg8r>c8im{roWQycGJW zpeGd9te%HD;hOWpBS;Q}cc8I)eW=j;155P;b3xc;0508 zPe?v`_w23M8>C0k+W8-GP7QM?LaV#C*RZW^OLzYQV2p3JJmC!O(P+>YVsR#yo}Mh5 z26S&qO;PkVH22&+PXi*FV;3p4uN8`R;OzjpBt?EPO6>N28c=M55VMMlj+Y|0Jih8^b?VKU6A`ER6z+uNM< zU6d^}S6<=rZBh28GU=man)NRta_iH1&8k{LFyB)7Y|?bx3}l}n%lD^eD|*)O;q2wT z22{0mm>97@;a3y;U-Cb)bdEcGm5Tm>HsW!Qb7GpUb0JUfs}^mA0$gX9bKKC8S5H!$ zh9W?^-tFep7moxQ9cz38Pxs4z;Wgb0_{gq48S_W)0!xUYfjZIA1lJ?3(e?6$9!kHq z&R~9%v~@3L-s1Zv7TS5D!V-Fi-c@hVO!9~4Uot;ecbbi9Uw!H!M6A=Iup6hSzOup= z=emnVC$ROP{xLa2)rk$&?yW2t@eC*W9Q~0o5_G5Hij!I|ui^A``s`D*+edEW=MO~c z-3bVaiHI_MW=V?0WwQ4Uxx2#Jt9Gt`p1M^L>l(o(h#y(VgA>lt`_=FnK6z#;&4~V& z=xvtntk8@lY98{9G=KZb;v=Uk!T}%5H|;Q2`2RxR_Y{gKA21r?di44D(dVbfPCOPd zrGZxOk{NHF_{Tb{&Bs&Ca~Z1~{xwVVsbluFp8pnWgRZg-YPdR+Qu|*8f1yVv^E|3Q z?C?rRHHu76AJl0YP$$C(li9_@+~8-~VhDi!z8nhm1kEzcl1asGJNbq2o`oEsThH!q6@f2>mV_L>PWc!H9Mo-~_&#A7yb zBclU3PJH_8AKe~wz)*VuSP<=1wX)9B;(=USt4Ti0BRrxLFbs=qdA zZ@IZLEbW4RHT+2&J=2-wu07Y$>2&0i6v5vKBsd@zy~fFRO9|Ei2Gu&$iB&BEDU78o z%K5v!wkFZsy1OUcrCF`_=}YG^%qg$kY+zfSMA`LxG?w6y-0=@sh^A11pTR;U#<)y#l{X*B z$4oUKPS7m=Xc@{=DP!dx8@r|=6CO6~>d(;Wf?Zc|^iONw5qQ(*@mfmxJJHh7>bBhR zPX2@5W?lGS^Uk+uvPctpPE{sr4=mA91hHG8T2CUUn@Wd1Y)h@q7+44;T9Us{%4t+v z{-CBD%iJRpm{g2^sxPUjdiu-x{_6bE<34hZ`a6+<;#~jNP~?dFAptUD@Ff)LN6Ngb zPf+7Cs;20W*()+3pvp(m_IcpDh@AfoL^GFK+W0CZI;j5&etYL!cx^}<-_rkgFgQO8 zS;ZD5=ycZ$l8DI>9@IXG6f}$1ZY4k2;A$|rX1Z@~G}qZ}56xc+l$0a~j}?wMt1w#L z-cI+|KHLH&Z-f0bI2-KExph7(6N>I2uMK6i6y!L%%Es#IR>(KklMrj?PvCzi8AAuIOTwvrXD?tf{j8ta8O`44S(IFqN7lG(okyP=sw4@O;;OYjD&g zRz*kQBp~*T!!cMchIK+`Xtpm>@~GwFE!M4?FVFcJtjHsoQFU^9Y)2*JWYA4J$@ARg z8#sa58rb}_TaLxUhT%palC_ixUaH>t^o!-T7@RI#J7Touy$s$`?<`wJM!LF8)W-^3 z1f3K~m+`K5@!cQaHSuM5Zk!m;i$#i??gy3LS2lS{x*a?_6ck0vSf>dgblYk(E$hcF zm$*}GFn6gmu${e$ZwjT|#Bo%a^t4*epeuqF99jt|SAK5ZD1D1{KH25~CGd6W#RX%w zh^}5ND-|~2Oy}w}$uONpTNH%g{(?ZEd zuEr~794itYVqZ|`fzm~aqBnYb(B~dzR6&-P)DkaRtu}4>YCW4c^0W^uIcJNHfQmwF z^Tr3UDNd(oK;0Tyml36EW-1D=T(pxahJ=@8^2?^#;c;*7b2@T>XmvsiURSh;DTSNe zii=lg{OZ8;z2%aL)0XB8`Bs^#e`P`Ml1E>r7`Kd*L8?aIpdMKdxw2bt-PgZb?#4TV z$XhY;Fzc7!9PFp)>})@S>s|ph%Fs(_Lx|IH1y^+*5xNwd{YR(J{`Pj?yBU{C3hJOH zcxnm}{ls0pXtB!@kc;UAoxE&EV=R-XDfX5L70Sb|nPM^|NEN&&h$H7XK}2%-B7V$v zAOCO}gPqj@>Vt_KbxWKC3W`BaFr*VbkQ9rC`bAm(_y{`x7yOR9Zm}yMu_pI8VA9n1 zrmVcl+taI4QUJ5gMY1w*r{1P|fK7bod35>j7uFBadRAXUt zls!#9G9=QVH3JA;-;8Eo{75zBXV&ACc8Hr0`m852SUCgN7%r~ODvonFivpU^5nO)Wl3JD^@xbg0x4X? zUSJ*fK?92;o=5i$Cz8LgF|)^2a7Y-6%|=up?itY5yx8vIe9yUH&6$XqbVuF$ZcH}s z^rh31+S(>-u7ZP8SDOAC+cJd{FK-|7|6aPoU|?9Ry&e55 zp`eYfD9{!Oxm&$FW>nHMO20{JB}_IEn+rO{gIpBRm9or57Bb!UYG4+f{t(GMjae17 z_HDTD%D(3+e8%tHnVVJj6B&OWeRmV?f?3_Y=OS>sGT(Y~PSx5%I;zQ7&Q)VboK8}Q zcoy;rvbT63H+ZcmJ$S*#2RtyI7*WDKl?qyJ^9iY~fYCICxD&J76X=ahkQxK>0Pc4- z%;f9puW3J5lT%Wi=I#|D41^<~=-%nBx3mTx< zv8qEZW>Okwtx{luOgExMj-ul1>I@`J6YRW0C%o$brfzR>J9IKEi!_^2+o^KDevRjn*i00H^G> z_XH7H%mT(pD0`;>21VPuiK|>xEQ^Eh6W98G@2gm&vMw?nS;KSJ0?L&2M$Z$Fvm|#G z0clQ#v{ca%?|M$Pe7YK1*2*yAD9McCC6qw_vrs6fw-xN~aAkNHkP#!bC9dc8y?*$5 z7YF~ft0-|nb29y6%ZWYAHfjDTEpdlvxMxJ|EED6@C90yC;@zt8D$=h(vZj$8P@jRQImr7^qd2(G1NxFr7 zd@=pFp)ilfHxlOBvMdjwV-F8{_o~xfG|*|0;l)USjN<{} z+II^lOQCT+MtDub1BT}T)6x3du5 z(ei89Oh1?WeLv0sN@mslN9P*y*Ded}@L5zuHKJXe>CLlsAh@14F9ouzb{L9kp7qo< zq~|p2CoNZ-{nlq0>*A>^dF+>a$jY9yt^H#*aL`ylPz=)GT&HKlrE%kfAi z0$6M=DHyG_K9zM5f20q_@5T7T@7|`ZzyQ-MO>v@JS~gnZtv~l*cMm z6-5XAEE<*T4VL)rXPh)dgt>5M;36i`&1wXBj>W@b7{*NnPNJUTn)L%N3JNG)6V)U=IvHFR);UP8z*@9oy#^do%Av$I=@XT;--6^ZI9A=AkRb#&T}QJ{N=6#`ExSUwST)1BrC) z>`fZP^S(1EYBJf@`JG6CY2rQ4k|+UbE*nt?vm#^kFM-GmLa|?(JqW4dOLu3shEx_E zqj}APg1yNX^BNa1T%4TT;e1MJuM;Iy`bS(}IVJ)VXM>*qTCxBtWV2z}-L=;{B4yor zS4=i3{5a8ch0o+c!6Cf9;iEoo+LAzLYI+`i7lK@lzLeMH13-%-3R2 zXNCww4&QeKLwFpSOy)PUsIeM?)bbmz4{LRk9HD>JOGdpj%WyWW94C9hI+~Z>Ia#<{ z9i5h;cbmTd z{m`@3=zJCUYpS3yu!7{3^4TZ%zXRq3OH!vgq9A>HisV(@uE`Ll#fmMT;;}YmQ?l`y zmELdb6d<+uJ5D#p%P7ueTt|$~#*HI@tTG~SY}2lGqW{avKqN_8_}{$%ikT4b7uBbH zvMD``K#h094y2WTA1i<23q5C>R+R>t9TTaOtOJ!eVCb43>=0`GwZo-(f4<=bR$<-F z*w8cs#NtKc_o}YaYb8P+Q%i=mM63}A4y|)!*>$CM4dwWZ6(3>!RuNDr=9NAN^O`3s z%-<#G|7LEKucy1#v@c-l&HWoQq6SakSccPC38 zG`WyyMA@pPAPn)dY9_Sss`i=IY7M=&p8b;Yb96!v?a%uvp(r`qEodJPh@b>`6t~J1 zdE4trlPU2#RLdH*1TguA_S(|XY62<5DA4KluO+_OS0w$BIm=R%cyt480iC??;k+wz zfY_G|b?2*yleFZ!vvFh zy?$FseWyRlpsUK{_7?{x&89LJSDSKbsjbb8HgYPh!hT?yvkc08bNKm}3dJEZSrZwC zvxklCY6`^Y8qJ$D?iz!w8%X2CdVwN#ejwzJ6@5=Z{*l~|B#8+;DPL)FF`!1P2Bu;T zg2vphk|ZW8`Q@Q)pjW)E8S?pckMyl@`X(JRj(0eSlA8EZs`D{WC`-*A{U(9(KKUvcm>Z!_3*gL6$T2N! zZ8P>GWE5oV+#5{nvJcfRvxZQD-%EmH%oql3zEF9hFhrdOO-@1}GEow58)mf*%8T!f z9~meN5!1`WF}{lSW+4zF4-ew+Pfst+OC>dC;g)`-iZAXutjFAzzfn9=i&aop_X4sb z{6$>bafBQkEkPmmRwLLZdmSIdB5B}fyw@_wnYQD=!}Y|{My8IC+s6r3argA6;!j1! z!fK2*3RX-tU0En-5ozV(&leKvN*P;5Ay@izQ^&qxn?bkgupehI_PT*##Fa;E0|&+b zbm9Zi$e%6+O37I=$wlaGZ;f)I32exzD)gyl*qFz}xxcbNl9+NKpi%&{Q<57Wq zSC;29F5@3W+E}Bz)LCuSeBq~v(KD{9LIZPrChP1$74jFp60dCg8Ms?Eo=N-i%!02w zRdYBTU7b3{jOJG>1CsPJzg1FT(O1!$&7N`*+VZM$s|WRQz=veYKdaUn54LszAI{3U zphV!(RPH^Mmf{&7xBYUVrDJ98$8zk@wL_2RB~k<Q=N=zSLU|#^}#R1xUyy8}=6d(URfu0hBO89%v)1*oW)DmqAwao61 zxexZyMm+>?>4-l?E`@Aq06#%!+wF8gio`h1UBJJa>wrYK!rqHeu3ml$?I>B&eA_W; zn@M7`a~1gq(M^stUi?vaKO_J7Ev7~`H>pO$Sjgd90l#g^ti)V+Lm(|* z-5qs)2Uc`npnpefwy?|uZrP#FR>zqxA_>yFJLD6Tb^cZ9{l}?>JI1cFV`PLF&Lcje0MF59#>`6O5IxI&pJA(?cUsBj?pqAdV12 zwSAIb)vUk6L?wwLAGJp%t}c#8uPa=yTF%<>>8Xh{rF#9cc>34|oi8IHy__0b$0v>1 z7=|XJ;)D3#14T5piL?E<)=^e8Z|Q*&Fz|{&o*I_;L(qnaXNB} zm(-o|IZsYRfILtVP9OaoS*yey?KDzF@)GTr%8-XJZQR4{FwE(wD5!{%lf1JI+)tfCK8HHl8Z>v`azOV-W4uxBWl-anVO*(Bqo;IKD=ypa>^ z930`^T%W4KN})HKQi(aVCg=!d_ItI72#v}GL;Mj_nJ5%nP-rdA%TE^0`|MYYc$nR2 zl7*9JPu9(n2=plPq&KtNepUVu`pCe7Ygk;e@>$?xE$Epv_jW~73c&d7$)(C3fOh!h z9?kJ~rXHI}s4?yEe(13UA*{u%? zcRw{jC)B8}t*Jwrv6e#~tlu6sIrO&w{oDn{BfRaDF&s#yd^ zU_pKX-v{jX`+q)cyAYfn$Tp8NN1K1oWUmc|KvErh5>J;|7Jy%UJpy9}a%X)~t=68p zWWU=PO0d(w|8$=)KX=0gww6~_RZ7UN<* z?$@*4m4SY#6<-D`i+67Kv?$*Vmg1SF@eFN&NApE8CzCl#)7}M)AN^_wGG9-W)3<9} zO$D~qg?{X6bLUx{SlpfjvUkET^z29(h&!B}N?;d)ZN4|xY{z1FQdhwcBW$Tnzw%jj z@A1a^j;p?rwo0pc;-ljvQ_2jIEhaYD61{on>m(_SJ7f%I+gFdUmwp657tsG>>n?HR zeg^eXe#5`pPuh2+OJ6mp4jo)A?zt#lwA^b?4>a`Gy}@wQ%5E53IB_{7>Ulxp+PNOr z{5Cp^`p_NbIaR6yc)AcrKKPAf4Q?M>F=Gu_nIly(z_KsIOx=-4%rVev~uy_?bqh^`v54$ zRPmDuXsi77Kc=lt$|$g0U8%wRk|1Gd{YbzNQcCg&G0S zbik8mveIPm#^)Xo&pt?k9)Q1j7Mf6s7kkhQ#wkQwVgPiIPTf70}Al8hT~=f#c139{vsdQ#a#DprIevDy9=vAm|z1PGN^wV zqhTZ+&)cxh^VV=0_}P&8ejKfcj*#~%w%#;=b|s6J@bpB|9KhM*2vT(cEu7H(sSv=m zGZ8ArjCulkJ5z(*N)7PM^?eGva}|*NmuQNZxVDcN&6ulKe}&BCGz zh82lRlM8o4BG10)v8phQEUxDT&n3KME?N3lKjA|PR3eH+aqg$Ds-ZgH*ER7eu-she zTjy)^sU42UZAoCH0%tcUCFw~)PWBBuNrB#N1)oWzP2(gMN9;Dg!)VtY^aUlcFXAYbOWddV4oloHlZM93FB6@Pz`82eu=C z0k};q!~-j0Z=&m6{z_>5le^zD4$+$&>_<&}+q}I#cQg5v6IS3s3jS6RiRy1uv!$?= zR(xnnJdYmuywRoS>{mZQH&vFj@|k8GQu*Ay(Y}xupeCFG{axVvLjNFqBa+K@RARsv zMFYwfZWfp1<&#>NurJFE6`y@`oJWC&2AlS8idRjCF^g#U*H;b$3kh547n53$dXZ zmc$HcbT{jPIe~4|_eba_YPQfqvuu4Ms}=tLljJzX?dWq7)i40-gS zhUrR$DWamp+kUCvFxb|Li4Y(s5agp%`C>1#qyaHTcewyGnsn&fm74(~{oR^%Pif2TDWVM<+PUqmj`^7T~RjgQco zP7Yg_jG)lNNp^hEd)}nWTEoO;8`tVyRPPhO+!QzbvI>0!yY-4-#~&}-)aaE=T>joX$4fU?cYPAb!>IdWrWS3If5BzO3AYe=b$<7> zWkrF;I(>n|Xo5?uyV9q`^CT!K?GKLG(GIH<3o$o*B)Ac<54jZyFZWqR*PCf{w&YEl z!Y#bZZ6Kpo3hx`RHBA2ke}k2{ZB|ICRDH3y)_BEcs`NYJ0AW3Bq14pKK6?ShO5DJ0 z=q@onoJUsSm{4@@)CuIXTLyeq==xO&zcr}f?PK6m$EE~tDdv7D+q*R}o*nb*_e3Ur zYOrF_N>vlBwXUmv?!CGs$9TkChfBW$1{=sVd|o?m5%M~DriR*IS!|aW^gTq;0J_X5 z%^OGt&g3Q^x;Re!2qmI_i3M_JcTbv5s|hq{%n@(R$+y)-6|2-E7vrbJq5?OD80+=j zdX2_qEM;43B`g}*&Xkk-GR6`mOat3#!8=~rxg7fO1+3u*APJ4!xwr+)y$Aie0Jilq{KthW4 zCDppQ&!F?q>v-6dTzJ1wHT6rF2+^saNSqCxj*x*1ihprhyQkkDmRae3F5p6|OhG4} zx1!bfYj)}h>G?MdmD`g|#gGj4T{^%~?KI@kU=DMo&EmA^c7s#**Dj`(*}3yI4y7y8Zi;FNLt~NE zXKrOqiY-V}H_bsP3HQKmqkUxp!E$QIl7lUcf0R|4YaS9+Z1S}^2 z@prtV;QgUlxNm+BdR>6T`lJW!S8A^)=BC}07kQ}QYRYXfojRTRO(m7m>7ESjHrCMX z4M(ZSq{FJ|v+YmqZ@tos;P3sIXrS)0qAOyG^mQnco=f~-so)UO(zp_vN!kcn#~{ay zOg1#`l=psAG%6ltR6Qm2{PLAXr58i6xdtwV9|Cz`J3dMn#aal(LsTmr<#l0BVk#LH z^u|52q0B|oIYONpCMhrS=W+GCUQlzU?f2HEbuqEg6IO22bYK7EtW332txtj25~=}> z0uBKD#zqR*0B--9I4iacEsg0^JHr;C6P z*VuLobT~WR?+BBuCML_e_%opg+WA29SwAB|10+oE!CG$4&zlMg_z12RHbU4AUekrW~B(zjOWQxmKn3kOLxXaXPpMGVZtpORM-kq zC#nhq?;B~uW~{Ak-Ra3rUr@0IOYjn$8D!0yz{qmpkZu}6DX&A4AakJ5Sv~qa83Ob@ zro~F6o)W}MkO>NP@K~MmtS>hmgBurG8zyD=uWGs|D}yB*%yyemeBJwNPRYcVH}j%> zTe$Hp!h)J1sbxn*7YEUNu-)=W9}Y&Dl|wD2zm7JsWmjQB|AgyTiy)7Iq^AqSR7i*$p6>>K|SV1v>=A<&Jw zf+T9ma2>@rpM}-8%ht_q@H5PhR;$wIMx?lq(=w5-VagY%wh3ia z!4mm1g2?$gB>M;>t{DkuBNF{^&%__T*k4b?L{>o*Va&fOJ2~nEN}E_-+mSP>&c?`xNv?$Vyl{n3z?mBQzO*y zKR0$MiV6;a4(TdIj;LG1>kGTY#eA_-f^ECqq(dW%34=i89lIaa zx!tE&MuNrbm-NkW`B>$n@VC7OcFBbgTp{V+3m+WI%!a^puBLUmiafy`KEBxL;M*4@ zR@iOU5nPI6w)VUn21~kaj^%R+9p^%Jwv+`xNkt7BPUGWhy9I?*E3`SnX=2O(oc+v< z`Ft()ma2ec=r2R}HbZ)1>Aj}+&k-Z$&J24c3rX?w15f(4Qnzd8{#!e2_ah#Z}Ks zbA+s$d%{Lt%rK4iLZ&?I@+Q%Lf=KRJYUE1H>H_D?i>WCBh4l)>S}+r1IQY4WmwU3n0-Ye>x>pVDa-Ol~e}rL#{Ezl8l4k&~F90`$IW^>a|k z8!0C{Fj#KqmS0D_E44sVtew&n!}Bp&XrinVcU<3?#f%yu=*o-jSo$&u22++JujF~{ z$wFu2m}0Izjcx|%BEV`EwmGxgGk!fR0e<`Zhc5un{rAD$GRvRuW5Qi;u^H)Lzvxt^ zN3Ryo3a*%W@BPI!QzwxVun<{_$X%OXA`%Y7eu+H#?f_i3=XY|4l`uNBz7 zvX8C)G2lSVZ~BTiu5z3$2X|(vmq# z4EMK&Rl+~N>(loQT7=U;oR*|_QhSRm9V5@CJkCm-2P7_hudD0+2kqJgMAXL*Q#Rvbt}HBt9Jr5A{thFpkIWWK@x~Cu-5Y zC`h51FT_@9JP2_wAGxZwLwy8;0D-`DsqK;?B$9rc33M(GSt9c+E#N9Co2DHf}qg%`uX83nAJ6 z3=6vmzd)052whl9N)n=XBla)t&6_Va+z$wPq7K*>4AfP0DS_ejUPiOs^<90Rx<1Z$PfAJ!8 z4~V1T=aUNwDjXTbEkk&I4K5Ueh_R;AP=-#o;Ffu&1tqR6tufTd?C@sWs<8G*C=#%& zQN?a(s9ja%$)xr6WOr)EpkPV@RDz_Om?*6=F#1+}JW>^#L-qT6zi+j&Ccbh#MvTME zh=nB5cf4_RdR{e0tEN|HDmdPj135qME)M+ZyOi=Kd2~;|u)p<=oXxtl_yHIt2>pnsYFU5~` zUX;jn0d?%|GVdDx(x{(48QMr8l?L4M`DkfgD(4iis$m{>;08wFWbD2imM zI^(dQIDNWwj1=TBrOqN1-f?9At#2TisW>}u8F@;aT~%^)0Ml4%p|?aN z-Uj;hb57&8edq5DB96*og2r7w`xcZ)Q_oK^b&UwS=4m); z+7RlHQLMvD#)j|)F9`WSGQ7jc%Y|U z7JUgjNfy$DLP=Zrlgs(Yd~L&d!@dGTm;7$ay{Ob;S5F)3#s5f4vG&HwWL+@iaHvAC zPN_vJ+Y*D;AUVP;u%I1F9?9++IK~G9_C?|-CyGf~jL4k&~liriM97U}d zrPkeNJ+P2KJhz1UKpWRazG!n#J|8ddtyVE%@JU?DL2HTs_D$*(uEOnmkGppUwk2xg zdt2I^OKC(OUn|JE>dg4$vNr8@cX(Irg)APd1wj@p-%C;w**EFE#$jqwQ0JWRA)Bzx z%b$f*_13QY&yO1DU8s){?E&EOJ`qS-?pj1jHO|~bX^q4Fm6gu^$4rWu=h&^K=A#Le z`;p8^rk7VNO0WyUh7L}T@tU9;2zdkV6ZBeiJ*{@xjQ9WU1xQ~OgnO)}S}od~{+^1j z%|DoqB)Pg=8gZXiLnQC*tfbaBskwQ$^qxxj5@gej;Or)Uj^TLnKZ2dFp!KeG*+71X z93u2oy}3dz^34spZOZm^H(e0564H=m)i*?~xg86b%f-wf6>ihE15{K5xE$y$?85dV+mJb#f zwa?aOywgv50ty{H$BJ|bL#&IwLHd(=$z@^gv>JNGdrJHM?F57JZqJeUs+MG!!+T^E<$r)mkFq<| z55GbHVI;sMj6%%M&j$xhj27=Y&aHJB$p$t6X*>` z`CI;YjNUd+j>~j8rl(;FWiDZc4wD*&W$r#R{ouOu#wHZlu$>Gwx^NFMcL4Je73v02 z(*yzXIHp1yDEOB4IoQG#VMJGG>+T%W$SJkh{Y#1K%buQukZYPHuS(0?Xhm9(f|1cW z^L!lufQVM4k2K1Vqv96Ym}njHAAVbw=Zor zeH2zxvyK-~GavnrhB-_u?`RXix!zCY3vw7E0jHhNphUWlqwDMQRWB(mgL`flYWE>r zvr|#S4f}T{b}#D~hy_?u&;1R<`rq}xi=B9!A%tI2@1~kdU8IU!O`S{d59f^Lz7~;> z!wW{?EP0-2a6|rn%<5f>7DV=Uh#py1*JxaPb)Z$*_YERAO;=F9^+>OGbs~r?IQKIJEl>M`J%+=;LaDP&Syc?(__oOI}KDHC0({w+1aG9F{| zUYomP!+XQR1WR4(Lll9_?WT7!hyy^Tl%?CDDM{mi=c>%)&CJXcM*mU@-~phk6N`(o z5Sc7DMA%QMt}9Y7W@1tGq}~;3_Mk)^Ty8xs^5qb<%AHf1VG3?&%m$xEJgKMBgxcj8 zJ`?N0Qq1d)2!ufGDARUC`bvLhd=Wtv)NhN&x$DRQN#$s-vSQ8xEC_$?#Qr z{*@*_Pt4LLU9~L}C9x6TDE0IKYYE8lVqtK)-wuGE89=q=1XW02wOoY;@2;Q}XqNv4 zFk1==EEFR~P$XZBV17F7ig~8!W^c+;a2|JYHWgsm30bJ+jo`+}!&2-7UDWEtjwyY$ zciO(o+fly!1Ob$Gwbs*!~YHkr=c~EI@ZWMs~&b>dVyr*NS@XnjCfpw3bPVunG!kuhy?#)k+r9 zA&?x*G?9JzvP91}vf9t209eSs8x7LS{pB9zD-Ki^XWZ_a>0J$|p>g>D1hKUDy*_hu zeRDl6j`@#MNdlJ-nP_MVii)HoyxwtAGQ*xQl#jjF+)S8=J)_TKu-emgTHmi-tNC`0 zSOjp}PO<4e>)5pZW`7It+qV%jtLgiUK>G?^pUT&QtOku9H@3eeN24r|MccW`0(c?mf7zThBwtU;O%Ntv^w3t(o>()y&_1n_}yPPMR?uUP{^% zv~9~UDbQHkx*s+FzRCyzl`TU+>-OKS7g(@sbcES270b2p-l9GsvpAkK`levTJv8M2jj%il6*Jr@O9)9uWNE#mr;Kl&PL@`L7Ov3qk z>bP4!Y=nwc;UAnQRQ<(r1c%PlEWJ?nyB=D6ah%7^;Bb12!pP2%{oQ_wi{%CRx$FM| zEZVnuvV{SR-mht3;}T%nX(_~|J_l6SmU>7{S=ra1;5BS@T{Efm0tpY;y6LIl^zN|C z6nBLVkxCQa*0V0haD>qQe$e|ZV^@%vr2)0>R@xo9P-+lOHl0^eDV$1Ou=3obRkFD+ zwtBN9UF5ZMT`?y|02}Z2F|mW^ZR_s=k~VXv=Bu!C$-qc3$a}YC?+YELQPC@FK;(V(VEk7}KcKm1_oMxa zKxAQvp~c$1K~tMiO~GQ3H5}XaDlEUHD zc-#}UfAHo-TexhvvxzV6VM}S^y$XxL#BDWBb&ZoT#Sc5gJ)E2~JwG7&gfjc(&+J}_ zJi_>H{Pj_67kz(J(rOEy;}15GUk0pZn4c(lG$;f6zkekB^&Tnw;;p}27|Ub-3j4Vt zV~wd+X@)b^d1SUsLrtBrWUh_3kguJM%3|SNfda$S?c|{;kzN%fu?M`~xsl!*AF9Zs zFPmT2$meM{6qpR#k?m=#T7q|0 zC$f)~#!{c7V!V1NX=%W_uyD80Mq>)lCI0~!4*>aV0}ijNt8;ZuOL8`)G;=<>m3cnM ztMrJ{Rz+@UK>wmc7jIos?|(j&Btxawwfw=cTQfk&0t|L(F3YIVG?*gbcy9-wwTfQjYtWLV`KP`#4xk8M-%i^P|sHA8k_~835>m>5#Q0x~Ld3sil$8 zJglJ_ny^i^?9B3kd>$YP0R0u4A3rcV)B!99l^3fDUA7p*88P(>`F)@8y@axw*J5zF&rQ?ec+erji$AvsFA@YIBR#jLAm}6(-Ws)Ei~R zL-u@cABlVzH_>ECexs4c*q=`_ALsXse^3^+lK%aV(b3Tdy7v*u{V|F7_SFM*{Szta zcbftRZ??^$N_y!Rtt6|#ILUdl*f#Rsk&A){LRw-hVCM*Qc7yn!4(oyqjH@zBTt| zIbH(oVH_s$2{A`Zrr_4-ehp(@`2^D5b)}1`79;v+%OI*^sI_)Ov_E!Jl^p-0ii*y3 zz*{E3_W6Mr0_;W6Yg9rM;sEb~#U|If>gt(AAh#rK%3S)ee$3&7HgESU1*DhL4_@h+ z(u7SuVbiH*Ob1>}(XFb@MQ6lEn_aMoY9REKJU`NH!(MyaKE!h4hQa zCFNFQlY$Sa7A*ukPO_-fa6Y{l#3Z3=mB5vhZkNe-zG(XVlSdm^e(3r~91vAOU*fwK zD%G8^13)S@pt9rD^n(T8Nxg><+Y7xHu~XG{_s9F%DlbT1Dg{NF<;NtJy-3`_6fx~H z2)ms6_i26Xsr=)k6fRLXT_VB!L<1^*$nJl9n?utAlh9SJ!Xf=$9uuq6r~AZ|myC7g zlQ3GZn_bF3!v3V9W&G2x6ps>Ro-%PyeWrUnWOZBi68rQW2_~?*{huQW`ZE@QKeg?C z$(Sd7^igcJ5iKWlM2-XdL>%1g|FoSWGpa4KW8DS&Q52Nd^GPOS`sO2Cys4oB_gB;g7zn*J_(;^6<1RG2Tv*%1IN0b3Mc-d5rn zRU{hVk1T3KHv#ao29#lNjD48-)i^uDVCCUfVc{I?kq9u3r=4}C({unbof|*d{uBLQ z(f`n^+6j)`_<8n3Ul=5t(&M6|Joyx)P7iJFucYV05F2MVyBS*QW|x&6S5`T@@`_=% zGb9?U+*hdE;P_!MQ@|{j4)p)y)4>l?o5iNjfIkE(YYFn_%i92hb9yhlcm3&9q!$-S z)SJEiti5Zyrbmgd$p3-Z*!@Tgs|0}cHI~zJp$|2`d@466vKMi}APuE=-z~`B9|5TF z*q;EHNZYb6fH6^3R>lUH$C$x@8wCLF@PVZZoYSqijLB4*vwun6vhx(pR%lz6KL7}0 z>-uD7SdQmprWZWME zY_2TOVmGT@@zJm&$f5(!+D@w)^$X6K?V;B4&LhFly@;Q|~} zKPzBA5ErFv07B41b=EgLOmt!+cv7-Zy2g10SRwr(y1!Z-0x3fvLc?95IasuFoJOOAw z&_Vd&dz8r)V2x16#iK#*LKffRChNsYuQ$MqzQ(g2KX1+FIF#*0PxAU z?jG58kE8=8Ne_KhLU+fJ=g9z0vPoa&WRX8!i^rn4ed0ga`>O)VlW%2Sn{*;Jnyp?9 zz3ZS)6VuZG)?WOD0e(*?Q>(eH4gghJv|D1TLv2@_9b}i)#S(wV^1yQH5`s#Q$DkAK zG!o0R*01>);Gcgt?8Gs`|E)1z4FS6B$zv>;AGO0h}RF`TM>7 zG+v#c>(Rfodx4aelIrSpbsVge8J9VJ+|C@aU@6cCYTwHWnKN)1Y@1hc9 zsRwLODi*oDF3YP<0C0{AnUIj4ib^#5fk|XiZoL{U!J~F3{bW=2cK~v0t`{>HLXTUe zq_}qMMvprV=p3RqVzbK1nBIl=7*?p$;|4?4jxYO2u*1a=3-6FhKwn)d?8(>1VlBWq z1AYz&F>C7*rR;9_>Fn!qc0OL-?{8zsfrXFuKiQ2${{;H@H1K#!iH&vK$xT2bJ!reX zEAvKJKINS$`-)Bqly<4{0s;aLlr*rUA~3B5(2i{6wp=}pc+A7ICTg_+cgF>xN&4LY z|6k)7xOC0BWu<%nJEF~#^Qc4K0@qdBz8eQ{<@JBNR*;`wSXw&8J`6M+VuilCjC12p zkB@i${~z@~3{ajt_EdlOh%kF;AmA+kR&UwKOMxh+hrr-Xz)(P(0}Obq;P2x}T0G2) zpZ}AMqi=u-N`zSUry#&|2{2spZhx@0Zem%9w~-y+7xVFHU6dfcma=CO8;oLnep5;t zasnXnf!Vr6vJ#)c5#!(aR|6_^e+6R#aQ1-da%bAR^JH~;)z6=g{+}5EY62vtk#~>$ z!@cP6KB+@Dhtes(KY-bR@NUZhx*s1>hA+SrnpxZjGoCyD0M6Pw>OU!30?2pi-sc)k z-lxM{0MY$}yCpDg-#;x>a^oj%S{*9?5F^&sQ;ioD@xbi@>_yN>V+P5|*6R& z{sBxX0I%fLpQzPvp+-dQJP^TT-+!|sfUHqeQc_d*U@r|My*!II31(0ADc@hIrpv_S z07(5SRH4gn-Z~+@>+<}^-vyFJze*`D41C-9uUbH?0-$p3?tUQ!I6Qi{yK1pqHMO;K z;eLKk%uE2-yFj3{1FFvS>rVV}U70z*Y8POY0S<>_s3BGWo#_mK^oo@iYyj$41q`5& z0QhtP0T0-;mMy^U-V5+$Aa+~%_7wHa3sPf^+9K{(59jye{i^E0i|77;bM+-qpZ|ZH zy>(bsYxFI=Z4^`#6p<37qy>})MUmQobcdvLONR<5Eg)S20@4!F4T4BXi*!p%H+*wp zaPIH9_j&I9);|Y1?6p_C?~F0WoI|H1rxD&ZC{T@nEB6+fkGZbZ`w`{R zi3YxR$HdE2DOw(`dddHqz_he&(0=^Or4sYzJ3ZfPj6gKKA2i0i91>wbFPawYiJhGt z|7(~kzx%02Z3kBC>5bkB(4?YoTkBC@T(cKsf5#&S;uJ=VKRW!rN3BpC8X46da867s z7^v4HrW5&RNF2Y#41QtqS#+F&iGM5N%W{o5g~2B}u6i<}T$j=^*NcdbqqK1|)9w}j zoRfJ#>Ox-4rHoR+Ik!b{o!dn4SkuE+?vn8_~Q@8ng3B7Q81|Ybz83mL!n{EEitbWQx*wrz2&Q`uB8@PgE za(37_y}m#cPkaNV;fUl_@o`nsis2o7jrVX-Ju-5Wggg-w&u}Y!ZVF3501ebQPTLNU zy8*2ycWfYyg7QeqyB@@>{QMR-a)EtDjl3M~QJ2phGm%v1@3O14!v?zMt8gEDjR_zS z?)EY5%WMA?4MIq;e0O&plUbO=Ac{P*W>JvfihXnNYbc}oLLLaUn_|O&Kie!BVifq2 zBow@qKL=K0xEIj0F-Sp{;Erv32&4+Hi0!|GcY+q05INY4UaA<|YDKMUbz$qEVm^NS zS|uyY@m>eX_aF1H!RC_3oxzPqyu)yD zUh!Z$(dTK7;>@}?(w9G^(g?S|X`o)WcX(F@UK95m3@PS#sg|00!RDUco@*Jo@bb=H zlcgJ$M#N-?1fTJN=9%MKk$pWm=?Zk+8@G3Eh>tdMOht{YS{XE~uC9LPV1?(y5~bR! z^UL19K7rax`sU1>UD@CzVw6V|(b-DvcaW_AIrP9z3kOE&Uvk54xe*>u?OdVWW35Ma z#Ub-*$;%{t2&GqUz)L`8k3M_mUDm+yj>R|N$+d{2@Fac35E#lyCo$(rI9v>j)N)WT zgQ%Er*3a`{bxyirW>H;B7>C{RIG9pDA}-xnI#4VF5&8+xv~b6U{gqJW&C>TJEJ@<{ zn}A*C3a3}r-QN{K=sdQSs?lQENip!fWU^2$j!Iw&hdyg@X5XEW+WL#A_1vo3{fDSW z_l|C24@*7?(uCw(tfGdoC9Kd~=KiEhey6p4^kVFE=YM=^2*OFMCRQy62cz2>L+=K% zOKdQ&QC?lW0vt5N`DaOqK{^Q7wYjCGj%zbr>kNp_$=vDWD=6W>M`5~8-IUkad7mEl zKds^T#r70rUX#tyk!&`_M5j>N7ZBT{kWE$$$cC^duf06Xj{FyWqJ%^n@$M|sv3({B z_#)x5-Qmgkt{(Xd)9)8%1$kg#CPvbm?W%`^d$9YKrq_1p2Wqm@_JSe z0g?b5ZUdtnDwdqITt{G0Ut4ws4>&X&48!3O-vB~#FHT{C0RveLbVnYWFOvj53iU;% zf9G$^h%%GYwtFpn8YbxL^v#zmmGd(V?q{9V${yPMBzO;@g z)SJ4nncp(<$O6>UF-y5390+k3xiDarWrN4|t_WmLk>?apCRYdrj<0ON)}Ct$J2rdb zxoiCx{u>4@myn@F5(eMXD3mtS(MCcIrwawX4GyN@WvD0H4z*aaFM|}em(?~c`Xq}+ z5PZY}FSd1RWecn3BRDehlFX*s10g6EiyZ|sC|A$h{LR7UM%SN&9$V9ZLA^c#$Lap; zlf(bCUp}&L$S;IM(bgyb4=H@jRn;@D4OjoVA(VbfE*197sN#jn&O--)LgD)zrZMva z1ZG?(QD3N4|xpD!pveF^VDV@Pp-W%za0%~t8}{h~RMeBYYu z9QvGqB$8eh5ec0JTw&k-Ilho2E(2YM*IvcTlG`z*bAP!29J-V-&yqNf9zhTTu|K$i zf`rQVAJ5#!KNo@J`4D6=Ji>3E06c@*OI7n^2UvJ)e$WsoIB`tnU23Y1qRQJO`v06F zGdWpM61QRqfX*=6=lAYmK!u_I0{Mxx)m04A7gg`zfk`))tFNxD6%k>yd}9UeLmfT6 z5+V$yu0w0C5|G65-_w@*&G~5GM86adfs&V>jOG`doW6NIk zYFk&=#FDL$)@StC$`-D`h!<=05oQu*Rh(&KWp(o9eOT?!=)#1a->aNmgHQyXQ=NgK z;fgKyc)7+SN!dGGAYXGKGHLo5-OuE*vH{j+h>PKFlVsG?VssRrU1v+8LN0JjUUfb# zbJA26#q{Jb?#Pus@4g%GdK?g5-OR^dhQ1A(Lyp}P5gAF}NJB^WmfR#EJmKBDdp&F2 z-Esvdgk|+4Zj{AL{OIe$@qBpy{_}WhlltT6OI%s;MMb^y_b4B|!sphxT1@o0mI*5X z8V09UCMG9~i7=T2VC(1P=0ZBiDrU)b6-(5b3zq8jz7n=!1Ob!$69v^k{m@2MZh4Te zJupchGy*``^A0ZL7Zxw=qxf!9$;BcIkY0$;1qF$oS!*srjmyG;GE!3UsRoc7XU>|udKqwJ zs=_!yU~*=57KH1l>6+fyk?1Btcn={aqfT!e*Nmm8{2p3iIF4kP=ApnfGag4X0ozZUUo<)fpSYx5eGI#Q!F1J z7gyiBnXBjfR0H9|1I9n5rfMFKp3Z`!xcCQaGpHb5y>cbs%_}sd?V!O0>KZ(;TB4%f zaCWQIzJIPp_bNQ_S4WL8y2GFQdFea!CEjD5eHt?-oXJhQ$V!}v`65; zs$s%u%BJAst|0LR_*2M}CRTITLNIyO7N3X2J zPYOc@{J>J_iFV|{Z9#gnqhk(s1B*jr8#ZHBmPF6m;Nf9K(xOuS!F;|rB+og7MJyL2 zTN4v0K#J?-{hit;F_+%sb+7`inmG%|6RewX)g{A3B`$Rn7Yg%$zUSx=kXXC$3OuqC zn~hY2E9+(d`a5FY^<(g-xC|nK)7vs<{y2#*SV{U|t>6H=`9^$>41dJz`}{rBJq!qL z9x5Y8B;t%bzvTbRRpF!mKV0B{l3i3~Zy==jI>Lc&*daQ-2Y19eOyKO=G)ER1)ee)8 zk@@?YQzcjp;x4zbYFL|7d;ntBFgV(ls5j2g2pdnG@XRt$3#;avb@Xv2a6>i7U;OWZ z{+e=WOjHm(?lK#zZNJ}fRJ#%>hen?PE0#p5zGG8Xf|gT0D<92kCPfF&+FcQsW^P-t+kJmebhaX zQnkfi?XvFx!vmE5c2LI@9;(q%O|pp{P_m*?FIw37Uf$kU1g7Waj7&}W%!VtGG2c&F zXH1Ns)J_YjbYE8KvWT8ua>4DjGPxWLu}S;f@3E8U5f0XV-mm?*=m7 znNB&M&Q1r`xViZfqB;!mxk+DsMox~!IkK(QWIi6lZn~1adcOVJmp#AFV=@%Ji;u51 zaoHSs1lsfZJ=kVI?%Wh4Un~nO^fW9J3%YIU__g%|Bn$!C0fGrZa{^xto`PZ)i zAi?oE+Q!Dla&jR93-j~V6sOT_DcWU#62qW!!>&|WNR*6>jrV>g_&YCotLJ_C*B80w>jaPiTPe1~!OhHD*3UtLyfm~6(v%m$CvKU+< zNZ$UXmnMq+7WC^cfLg7Tf&#ngAh*rUs=OSjjA+J!ion7zu(NMyB{oa{LwWV|A=wt+ z0m!)_@^^-|h$YXcR?2R->kR!;cq(Q93t&P?0+JFCPvwvM2Hp7{yKg}ZI9;u*xU{qs zEcjLLPkDKSoK`;pQn9eWgzAN^aNzPvt9F^of@Lh`s~ULpPz?gTvlcW1K#95z4kaDN zAcGCRK}sw-I&Dw$z>VeSufrJtVr)1Dvj^fnd=NsQ3lJJMhhhrI7(flQc5#F4?p=f? z1?Pd1nAZOG@MQtXNAoMt%3jlA53HW6)h{nn2)Dy(3yh510VYh{ zp@zAd^VY-z=hbw@T!uBX$1$%!0=*1!^Eh3`uQZFxn{FdFX z!EBhcB+5`U4uYt}(pY8!G!tr3_izzm+U-MH8W&tds%)AYHY}I~%5rKiX8uu3 zDnH{+oaF56+jhhsKtiJ&^uE!@ZgzypEeF2$39LO0#kT*v<Ff`Pr zS0_~US+5TNYY;?(W^WtNMuos)y&J&|T85o0Emr_Xfxv;W_-8znCbu1VNo%|0)yp7e z%g?_{S_@laZtOc;B1kmsLu6$F8q37H>pOb@%j^OsxD5tn+p(NpIsf}gDh6qc^Y(O0 zOUp5wEOtQWb>;IvmVwkMRKx(nM#f)&P~3d5`gVKh{&eiVz8U>F;lM#K6M%|AE;9tG zwY|N)>)UW4ft!I>rG(c2w~w|Nyu@D$AliBaY(%~7IDq{m{h2Hz@efx!F#CWnz~v3M z2``u>D*R{YCYeKBNYN>j(50g{u3t|)S8!kmE?F^QJ|GabBGU8>n6|;F{5r_dZz3OPF$Fn0qMWOrK|9`MHG!me9&Rtoc`fZ(UwF~!4iy?t#zm-7?JQO- z(rxeUo4V}utsjg&rq(_vk8Vyj8-=va(Z{xeUnIxhixI_i>nNT?V_F0ri=6AnLo{Ky z8_B~UU2)l;asiEP1;{U8-UbhGt1IHSo}VG!9NZ`e;4~yCNGr?8$cP(2@+e*?9O`E& zefmmVq5e_hInI1qR{4z8hs@0VtyULejFWEI9#4bD%j#&b|Rr*pl*Lg75G?N#0JyK^R9o_0_TLwZ)Ib{2S2B{e8Z>+k7B2~ZL!;rEh7%Wp#!c`=( zd}CVy(i)^rHULi`it`4d9RI$9ftHq_)Im`2RR?%ii01aM3a-61&R$(Tbogs8v| zI%LID^S=hva=(Ue_W``=84^|t-Lq7F!?jh{rk@P>D7VD5X%7fKdmSoHh`p7iGEfIf`q z#7CgiL28e$iN{|%w$zz$J-Bts@<(yz#qSZjim;hp+W0?85bw)L&knhGzxa>95FgYO zFi6qB5o&eWN8*%Uj7{vw>KQhwRT>)|Q_oKCRTG}DIg6qsJ`4?^CgMAI7WIbtzcrB| z+GB;3NSOJnj*0m>xK7R%K55`ftl3+uvSDeh4)SA=US(9<{mkgxW&$n^%B6Sg41q?E z0E!zf2OH~}H?ToN&>|nwBqOK?)e!ZvHiOkkri84%%5@YU(JPVe)&x@Y2`>qs^xRzO z9_t-%k(SFJC#I&j=0VH1^CFj)_4-ME)#+8bP|fbo1?6k>T(gM<1seoIn{}|Q*!?bE zx8R|=V0M>`N{eXXehIz9MCA)Qo3UfAJ`WEGX6p;*kqGy9z31uEUrd8om8!wP944<& zXq11wmc$oklR$DiZer4hUPX+cL~Zs17E5C&<3)G=2BN@RGpI*DcSZnXb3TqVQ%^vhZldu8uWo*zACii$54H5ex|FxJucC@4|)_?jO61xmvV^kUbT z{T@JF00>eA6v96c-l;DEB#^SQkgBVKL^N!qS*y&H6wgNqf_{YAcvDT`mQYT*3R6c& zVK;$H5>hfpgm5xT7L>9z-3O*BpPy)1uo<+|gK8)?85h^iWTfdcT~!XNpO47`t`YV{ z+%bGnrLjCt*RZ}g6ziy+e7X+$^-DqLs{|y!!0x{Ny5ZWC3uX1>GH{lCJIWC3eh?ID z5yN-IIm1rC^J+T~50fz(7-Xn7RsTUtq*7DGWxBngpso;dr}|5oSkD^hOobv(z3k`4 z4pPH**aZ<({(z(+e%Ql?e!hXgMl zKR(8gR8ra=SadFcdJZ^3aUQJ39Po(Kj*yg0Rl8%(ufv05GwD}QRRzkNi-Q?A!Yzec zg(Q6LCKBKn0{H|)=gaEWe;8&-7LwiMU^(Xd4hjR~H+{Bm)dV|SLf+Z5V?}*Cy)chz zL5i8!py$BCqmwB7*I>whAFe4kp@vaQjicj+FA-R_x8B!RU`kTtuOETTkxENVb;AbW z2l?50Z?zORkQ^8{t@x#EVk>%lJBqLx%dYv?!`!6<7QzdC-l?e}p`laaAL$amZ*uC_UlD_GDn20l8wey&ob*9ywHTWx9O}W4%%l8R6)mE#H*`Z^UHoN z**@B1N0U6elOX9`9+fDWRt@RhSgo)))pfIbP1Is8Pa6+v!`0=5gVWnqdQm8?8yuF@ z2r3trFJhVJz+hr?mG8qwg#~%*XGj5|U>u;s@wuJOPmtJ7yE|PGQSAcq=7;F9rA-W$ ze5~P(9oSReUS0_B2;dcfXg_{Dx)voT3mF9~AVb9d(7?l?L+(M|XaR_pzCO&=G_|zM zm2TE#5)OnS*3cqAJ)m6N*$;Zjz-@tpzA+UvZy%B+?7wG;ieh8?xPMGfGR=+++D=q_ z^az1C*=a?g+9NH|I9z+IPGpI8R;^szo_{!v-{lwkzHGO zoZj0h7qxcsRkvEM>xpeX9xAaRAvBQpaf27?y3|)%B#n`6tXvK_$vuz1#HiVxSL(KL z?-JczBSJ(*z2m7<{D%Y++79pk2ky>n zu^KE%O}!4*NQjRjA|B1_E6R~y7IwNe2yDEr8=v>DX>7&UeVSEjpH*yO!jhFe)2SFv z9iro#a_ubD1tz)Btm)$2&V_7kP|g(MV~_l>s&zMqt&yx4VIZ+-j3m)^?KX{587iE_<8;xRH^k!rHP#1HgXt4cyhNjj zN%r+qNh}?#)~Y0i&F^I{7+$NZCB~`Lc+`}>FFerx3a=2!m6K!+!vBJdmAyhdOHi{$ zS0$sS1$x#z#iR~7Sm@zn$9#r6O(Qu6XNgM(`Rdu$s^HO%0Ey%G;hJ(oSjvmXWj!|* z5jzA)!*49D+$`M^q)Vspp?2m;^YmdiCes~qQj1+OE>YVnOQ9~QUUzHHSQU=To@2Q2Ugry*Ed3BK_pJ0r7FK`>KjXFTcwrnsL{flh& zRM_!AY`j=1b?4`$tH&u^@^`7hE9@2G|#GtNUj*J_s{pf;Sh4XUnfd_85EgPIm?HhsRB_m z_SXj#mYKDC>9ehH!aItW@uF_F(sswNj7na*_N`ZbRCTpr<>~-i)`so-y@7>aBjtl* z0Z+C1eI)mfebH{zvvFQH{<#I-l~9N*&8kDDyvveTTfcr0fwKM47o%=OU-Nhpk(3Hb zbnnYU^&^TiB|5c*QI8%oix#i$lG3nDocWyWD9aVec&$_zgOvOdHybwh23pCdO^>|T zn#Cl-yhTN$xWnFx^kMu1i9D+K=A|#53Y$-3yLpUqQfMN3Vw4%JFRCocezp$%(pqYO zHps*GI4YRAvT7-YBZ0EXY3<(KC!);JTxt5>YeVn9HToRO zUU^{Ab{5*ZxNU$N1S@p-HU@^t<#blrK7lBDsZ@@{qsZvwPVfKrz?ez zq08PKpi8p)B1>=86NsvDZ|?=Iu!U|EJByVv`bLdu z9B-b>OE%{C#Hn9DGyFn9D%xYAJAI*>PVaW=M&nD4HAm@z{K;Lf{$BYjSJN9BBL+-q zU42Gq*BMF;Gh>v$Id85;gxzi@2_?IoqgIFTH-8_MG9a)iN$FJXf$Oc@6me%Z%CaS# z&!s#yb!}}82t`PoHTNAbwujaUYtyn1OjDWupXJ@V~*X6Rv zQILvFqX>>ca$W#@Qd9T#`PCE^w?LK8Fye0ajbo^5!`ivl<8MD1?N?r!FQgnaP+_k2 z3;3b%{%-fK{f_pdGa6DK?h8m!sK@olkFK?DOfWRJCctcWrJ2ukum*qzy@HCf>^o7ZpkX{B3b+ugd*YjU9R3`~`(#NzfRvNd}+0N(seyT8`Q&az_-MD*9 z`DNn^SSus7GTdT(?8S+-R8n>PxLw@iMS$4|avG$Wk zAi=Hp+2Wqr==U#`L+%)iHUcCtoCkHGEl4F5L#zQx8F1Pd03Io6Cd`)N+nbg^+nz*) zVUN7V=z8OD`^s^}(b&aRIv$p?w>jp%ww4uZFY#FS&r~{vJk6MUI@BR+)4%A(ylY8#nct=Scp3NDSeBZQQp! zaN#71`DBmm4b^moOR5#TyVaPd=;?QJue)+VA^oiTE|RsJIqnm#AAyioneorCVb$cM zU*g2QdNot6?1#z5`Z{3X%?k)c1#l?siLb%@uc4&q1Z+%4z{n|Y@}tiHwF+Ev`s@b&g3C}QrA`?JsT;W`EyG(*`%d-pyQ}0LIdsd8_G%&ctG293D-vzjSx)ImyrF=<)K^nt$-D#>~%RhQ=IK zHJ#((Nhz}rE*f&Qa7+;TgZF7%iu?g{QR^SlG z|M-uax2A&z0^@2bZV?@e`1W?GWK{@BN>c#J({BxD(F3h_6e`GgP4l+OWzlCL)Uot> zk!|O_9du`nPbU230_aHgp6XE5_j|TyH;_fttjKEfo!7fjn{-oW;nk5%ddn;(-NEW# z&tl)x33++|6-UmgKjm%B2DU8C-n5DT49R_!pT7 zMQ7wAgrrXMR*CSdu(A~wv&sdk($s#FXp9jKzr$K~UUlj0pS|YV0Cm_T{S@sq9~uzt zwI!70Sz-9;sv3w{hk*L`>{E=1w}o$re$w5t3b-+Qs>7YqvB5h>?`JrtPVd(coSH6b zgZZe<%66hFP^kZXFaWxeL+4+AQ@Ex)k%zg&0zK2qlH)k3`t6tlg()+ZNIj^Rimwx~ zaMh6UB@cadt;e!$UcW0w!ujc5J62p|pe{!9wW$OQCOJueMh?N6gwGzccB#BlGNX+f z1kr8JPpPTxR7So3)sFXXBcg1=lJNcOp|uTHCmpF)`QCXzah+$Sx}axPY;b%f+HU9W zRf1V5mpCVtKde;K7cWx;DIB`UMFbm3@^>_kgy2j-X z(~OA3b=<|3h4n9hmqtH>SbaHZbW{_0iS_1YFbzHaqMzc>Zi@Lv*Vpzfsc($j{8?Gv z?)&Z0LQyTIo`&tBf)*DGnBqwL$+uR5@OJ!cuztP~O66OvIzxoXmD`A?y~8bK%5P#& zpyu4OyT_$nhV}g43UX~k)~Xl=sS7%goa<~|OwbqTq=Cj4=H{h}7^j)eTgg12**h-Q z;0=||v3Bz|!CQ|5CH<;C|JGeb#@i(>-J+IRQ{fxu2E5LgQ44sV&YIi*z{as8 zu--t@dB#fmhm~_du2f*{`6(N|3O<)#3m=gecCDh!;RHZ7D17%>nl}vBuXFE?Ts|Z{ z!PRQK5h7ns27?V~3GSbwS^2MOOvw3r)LopOj7%?m45E_o;3t)@sU0^!Vv|Z)+{#W4 zd)C>XZFB_*VfQmt`Xi(IJ`jwCm%Yc-PP9bq8N-2 zQhVFg;bbMv+qNJ!n3wlKU4lH}AIz$8+72lAh6V-;MN=^xmMxvZ7hlx?(%BEf-FkS4 zan#fAin3kSl+H3JzH)B(jjYROyz!{s2PWvejWkJ6T@KV5%(zG=9x?xc`g;~t;L*+s zQxuP4&xX8yZf*`rPIlZefJbL$G8DW#jzTluugG(JE)zz}s@j>aP(K6lixXp^p|e^= zZD@peta1SA?k$D!gIZm?Zf=LRo3o9}5xQrJ-6_+ZUl82vlxVn4cVD2%k+#I!!VjBTjrujs3n@Zi)YRs6KstALFZG z4a*StK9NBc>yhgcTU72=oU(~@B`Znp4lifISJSOy^|zZF_p)e&_34wa1KgsbS7B18 zeAdiQwu4JXNK{y7x-uzF3M%zm;F?kRFObzKm;O3aoy2*>{YA*teZ}*YM8NHIzd0Sqro24m%e9H0SreHkl-z+qNBSd}KYa1BG`|#gU=Jg=a|52t za%1p|Q-O?O{iK4v#%im2vAB5r9J$Pmo7Jbc-s#tkcl4YWUM*Q&U6XKZXkeyXc_pO9 z-Ss!C1s9lB?yx2ziY^OJ-7rp^q> zyyEJuA+On2+_+NN83&qxK0HCaRF!dTH(ZY>Gj7Qf%%{szXvgCXW3lp*D?O-vbf3|a z@c~y5w9mg+w|z41@6u#_`}&`y4*xN0D~*q9SDO?2+}=hRt2dGubLxuJJB`ipI=Q%$i#=_%y3+c0F=Lm-L~aLby7!)zruI3uRA!J)y{9_ei3=+#Yaqe|fnudQ9LZ@2$KS>zqSHEt6QHcew5DO?4{BP<)k*LB{?knJqx{%{Zc2QEJKcrEbl|` zYo+e#_zQAm@zJ*R#a7>i(WgnM*IQU-szoQ}WEvYZT)n@>i}&T#?t92I&ZG1iztPi^ z<%Na6RtUI|kmh{PDRi%Ea^~}c(4f=?;s=~W9?->a@1RpLloxvb0jGJjVA0=v4W0wb zH!f1kCBo?_j=(Z%;T$Q8%!%{mN+mh+D;xt&Ldj|ctxwbLa?ZL1*gtC&qT`7pI_PjC zG|(;1`PiUun6$dE-|01v3R--auqOUxw=?4T?1meRYAll~p9`jt$d zvz}cyYzdNQ4Dnue3*f3CE!UQq5A+Z!AE**}h!ZEDCryIUXvHRj(jV_C(@jt+T$etT z_#E(mY4VNvjT(}9N27y<}Y{W2K&wYgtv!$k=piWouT| zaBscDIWT%HT}ZuRk>&iSg_Ew^9esxLcU+|#EU(N6@Ww7IwD|fe-n;T4d|^RFT|KE= z71f!z`&fG8oehUZ@pW~_8q$=|?A=YL18fODw9Dx%V^p&8HqT=3#$4|7D-sg}V|w}4 zx~1EE-`Z|Fri(f`g~!BzE+)`d`1)oTO96SE5d@mS%xr;kV@Q&p-$;V5{wd=e&`!Z`TSGyT2 z-ajS^9j$eDa(0Q^Z%UP5+!EN{Rp&jnj+M{1{wteuZ2UdUMGz2Nu*4Pc>@!uj=)9P& z%;p?5?YH|iHUGE3It(1beoT zVs`nqJm1u;H0F9@i{1X&U*F9qN43ejv((k`=@q5y8$=&17N>p6KMyuqQ0a%1<51U5 z+AF@k=#ts9Sqrc}sX~lYyRG&zx@tyQE}~8L9-ZGgHX~#*<{&k1nD%OnZ=c`ppo7t@ z#m;oI=8d!SN=Sx+L1OZ~bEP;v(Mk z-%yw4!SNO3+q~Gycy6t3?F=K&)Yi|Yn+}$dBr94Y3AWA|p>c8JH~q&AzW+f5D#J+w z43xKaCG~S0hr=V*j#p;$kT`~i2`&8SdR!y-XFs)^Z0JrT9Z=w*n|GnCHHRx6RtThG z_~VAyBgvIR&^$iN6(3}&P=v9=m?)M4eQD>8B*zTsz2@SUk5fxm=Ns(h_^2(M((Q}V z%W7$P4r@%w=Gf!V?u>;EhBIhEvJTcYrt2h8z1&1ZHPO*0lH+fp{KS9#0WF8IJ<$tq z#zt*@uOAyedGc>kbirKV7sXY_W9-sr|2Ezb(gcUw)&G=9*>YVAR7-}QneX?3a(+_MawX_pWjDk z5Rf;NP0Q90sS^7fU=oy-?LmFRxg&DW3et99H#YNA0bgbS*cvorNP`f}D+^wNma^g} zH6C9#r}z$vhB1@BWTFsIsEKB)zGf zC|ST$=-TQYvg#14si}eb4`?9$`1s_3HRgMSUA42Z7|Xc=^ufEp_=1||L}RGGzyBhH z=)lDR*1+QUxb~-{gaoan(a)rA{Ba*49)`lBZH>oyAc;3jSnTcX`ExISfw%RN+Dm-9 zuRiML=JCoVj452OkquEIH*G;I&woI)+l`8GgJzgk`PFWOvwSD^Z!*&W()Wst2T3cDkwB{8Q zr~}EVVmqy3do9al4@$fd_E2(Ks$(l(N{TcQp$zH@qLt6=|M;W^S{`?8TsCZgd<%a$ zODozaqv|mKiPQ~hcvjZds!nTNFp=s*)Z)TI=4tizX{1MTce|&8H&{fLPr>s`DYQK9 zEkk=NRAgnvP5KMXnP z;W6CAWPK@geSLjsr)+2^mv1L`qkN+bin1!ucnoA38=mCrj>6=ZD^|EFSnjMz!Q2Mt z`5xzaAl=M%1})n6lnidxvB9#Ip;!1g{D5Tp8@#76_L%!CNRy~(@pMv3N@yzZ`}YMTn?ovzF@nImD_gsr z^IjJ$fsH9E=blmsEGnq$a{^ExU$NZ<)W`c1F1^7Ih^CU}b5lmW2i{72d+BeYQzI%5a;f(=_$ptu$70ba{GB)fYrgRR(-k`fYVrG{0&*9Rc@r-Pe4=5|1mg&OiYJc7giN%`{S;F+zN5Q(Vf zqZgO_h$a{oc7yh^0)8mFAM`oKe^6m)-DD_vHopx+46?zTLKEU-peRFwHuI}1tatAs z9kvLOs@%9QAJzvHb!A#MHZ~*%M4uWNrE`|g77DOXq5*Z22^ z4xB)Z4{R$(ISl%b8V{NGvVYG@2YL$@JSuF^$Q)#$R7yFO=ra zy9J}rucl}^z1L>zvnrf74b_#|nTB1`p8xncNBDE0#oGE)XYnQ1?OYSqyys!k!IVJ!erh*SySsp9g7v6&89>9*+RhNF`r#LkkU#l>T4do0O(eSN#kQ)D>j zW;z}2u(6RmvvzbW<@6idd^>mTbJR!%@I?;~T@aKaD(d*QN)glmJCZ*RTcFJf2D}Zw zKn5iRo4dFi7#9rOU7LZb{{c`Mr*D#M2~B*=p>KnA3G%_bTjP_>k^Xn=a0S3Iq-7@O zfCa8uXR!wkwuQ8YiYwrqNZnvu(@Z$H5O}@DGrpO{GpS$C z(Y}27GT12;c;3>z%=%Dpfp*V%pb^X5y>rLu*GrOgx_&9Tt9+|*7m2oH36oc-z2HxC zVNL-yzo=-VJD!?CG>045d5;-eFjMshl$A2;C4Y>aYfuQ9QbKqpF+MJiG*~41qY(_6 z`K+1EEKYtoIyxHZd3SJd;EaypbJ<6F_V+g`DwKAcSX$k%>+0)cZAU%7h9mSjzP;pw zJa{P-zBp!ND zOCM7ccK6-sQDFhwmZE%}2zjzGoR-#0VZe;q2G&i6<NiOraCsbaJJk{TsDaHh@#8 zS0C0s%^Z%#6_75t$_a7HcD>7P{YKfMQ*ez6!^R{V(z)xrB1wBNp}wEUygviRbIISO z^m00wEH%rT^K8I-FM*)!y40;;k%M*9137%SjIEipEVaC+k{C~b&gHV5?DC_hrvS|M zj1sdsAwn4pHs^)Syt_g>27?cl>Ih8d=I8go&f0ZORserg6_`ohc#N4%yWy>ly6{wi zmKDr$1w4yQ#%8r}_CK61DoVPryRkuhCkXVbkYRmGhAqQ#LwXXb(koP-T#8MJ-fgmD^t zbKUid1xb&ok)B?5+g}==ETEwP+#j^3QSG)5Gs*q4ML};w5(68?=vmr2J6FLWt$tYn z`fM#S(q_z&2{xfribav*?&-UxgS*fwkL=nZ2$jeJ!t8JPjRCLKWo5D%LM-W48*6Kx zt??irhgX#AHbnRZE^Z?aivk7UQ)eRx>0d z1R+Z2+-yI~v(_n%j1E!;)hUD{H`4@U`cF3@mRv9hMSH85bl5g2QWZsU|rn2c@tcJ2Ez&IEA>kd zS^2_3i!4%M2yF~*oPddS*wu&&AWT~U&wj8zwBLt3O7JuEN_o_NV{qSK$%y3ElVN?; zM~s{R{j_Wb^Q%X`16YL%Mx(Ho!Tmg_%>4k7*sd1E@n1Fzbxzu9UUq+L&;{by&7|FGI`uc1~$xunn z|A7jkhpALh$r3g;nOUtlgD92&5`!7yRfaQ7#979c?Po(B&XT69mfUs2u3st{T+3Wq zS_&!?U=EMc{dEc(@f}ddOtr>DS$ZLEqrBXQMCJG=peRZ~pgSXbP~NSVZ|`+HH#wQA zuOleK8ZSx{T(#Ss;4A9TY{nek1aW*s;{?#J@*z0TA0!JF5mTi)&3>WkFW3|oGW}ky z+OjGXGAdKYF#?#5l@*1M%MX6~?>~*$IR5GbrV#H-+ z(7Ry^NKQz@%6I^#;-?@VXEXuD<-3zF^~2?^{Z$AL^8*9``gsM~68w4X0Y(SL_YzL* z=0n1IQn#M61#8IL2CXPBIX>6VIoim~d|M3?YCw+{=g9>d4gnreD;Z#N5cEG(Y<^}m z=ptz1`In0^(RV1mo&Xx1p|SCKQV1&ie0^ob7kYD(nLnr;7r&xRbd1R|^6mti@zM>vMWxZq&ua^FgdgDHiUbpR z`z<1C3R!fFPSc`@HKx@IY|yqo9~Ki6)6qj5<$e@BbudQ{HzHJ}A3f!F-G1d4l+nBW zg8qPVFrU0&=N@3dl7c&y7X6n7Ch2fig#u5pV&uGOA%sdm1RI3e7ILkElB?PNPU(-S z(Nm8kahpp;*&`wS`+ZdAp{e|(sB!maUG}mN8voF8NCAXma^i@_BND(uK#*(+0bH_W z0?e0*aoOLZl}ms6^y&8!8z9#$!Uj!d;cKEedXlP=xbWu3da%x)cLK`Q-tH7%1(<5+ z0h;@sJqEE*N5$u}J;B1s9f)2U!Qd~C8qQwuz3>uyhlcp}9PXDv?DPBbT&HP58>z6$ zW!{P;LMRN3QOnZ>?9Np%UZ@J`{`j(jv}8ay$h(#zf!GXf({t7aN(XoTrVmf9r@Y03 z-90um3gc?GIy)PIG0nx!uD}BwT*&kfhwD2pS$vKHadP-3t8J^j{4yCDqKaYbEC*HV z-QX<8#I!WpaI_kXohsng@sncOwZjEKEtgO&G zm(EN~OuP>k9GCxf{7)c|_QL2QMUGfBrF^=AIp>d;EN|fZ!-@t6>y!#mOv$#H{AFLJ zItB)cva=s%5FBe!gCEPw(SXE!5Z#JPTDT8uYi{Ys-B-aPi5?yv(!9oTkKv&}mH=%@ zv||7~pqq!#Xtc~}N!)p8BYV4XT8|R;t*!|Gga5wb=WOF<6~$v^RaJUG0p6*tEgCxM zrX^D|IoR9h@bL61*;MIY5|GSRXwnv+@W=4_tVvj3pVbT24O+`aYQz~JyoFR7DsjOz z@aW|qFfmR2gK#Q^LAcH;HHR@#YI-x0kf@6yRK)@a&*Jk>Y;8ANxE8r7=ZX~^4o}@WB@Br)NOr#0PePQRdp2(2XvsHyHs|JmS#nn;X!bAHL+Ba- z-Qeak6o(sZzh!Z^1zMDr<)PXD7(_6Vn3qCVm@YR}CmxuAKl=t#7W~SD1>`u1QVruv zSL0qI>5ZTy>q~1*BvOO{QOV5v5TWsLaNzS(U-d?4hd^*1TJp1zVNeCdTB?I9_f)~V z97XvV0IW4#ib;FS*qucJxY0Z0iEDbJa$WUb#-f~?BqDCF9yX!lbG8@u zq%D6dJ8MrMiR@aURa^3cfm?vm@IfQO4;V}}tF}=*lbAwVRoPGZFP~qFgN6bmVeM^H zgSo|&L8kTqy{#s(5y|C3TNKIOPr*+=FBnw*yP(HxNY1yvzptel9Tv6;5K7v}$Vjiz zS%WYC7}Af~9tjE}bN-OFCsW%R0f<_xAgf00W5Ga({j%AjyGq~HJ; zftk{m~-&w2m9fK%fO5LWO2OMjGoVR4a!ge1$FE9$r;?)eKBATG%-C}0FH z5f>L%QNagGZ{zdX!*5Z}XYDFJ<;w9H2@2KK>n<`p{{aK@QXr^XOLbA7Wl`o4c;4I5 z5i~#D&|QovUIu{}2+wB8&;YVi0K=z>iNq5%v%kZ|!@xm^uH|2deOh>pBXqQaKM+h? z*+T+iPAFQ|Bpb}v51}zc;@#cdN(D8@Rs6AbR>;6Rz&|uJ?#<|!r0rhHf{9Ae`JpZN zN1G%mF+1BFD2XshVQg#+-c<*!S3I(tAd`hp!!O1z{j>M_`i6!8d2KnCcl$CCP*PID z2F9aT>iqWY@vIs<;;eojVIk0fig(VPKko7Dqc93czDeC6k^rp34;Hs;cwgSF3jLsm zES0y$iq5TR?rkqYU4lYX)&&0X{%4~qgV!?v%gr^1TBdA%o zzOD{}w_H67pqbL;=jV6-KJlM#7f;U_@|{p?xeH6DNF}pd)eQY_6PRgETXDKQW(YNe z&!@`JxMM@wn?W%0^Ixz#TuW0GO6`T5KlQS8>h84V>3?ev^^W16uS7i#{r4I0@c+Ky zf8Ezo#ogyokL&Fn2n+{~S4NG(?UKbpb}&^}clr0-+Dt*<{%PU(JBEo@5yfYa?OSh1 zP&o}o@BbO%MolvR^L77s*Y`i{&YxE!U5=OzqCY-uagIK^GH!#b}YTgrY5WmIBJ40~=*!ohUT<;9&o5N`5|{zM;cZshyznbJ~t+ z0*fMV=J1OJdFZL6M0RIUh5}Y=g9=$Q$cDiG!#j0AUhApK{*nK@R`G>oEmZR3!vwHm z>|~hd?&Bb24X>@~6qoqp2M=#%e${O?eOhR|IOu;7E4@{hu~AoIWL#c1_k6OIb%-}h zIHQjbw;Y|?;I}s%O1~0s2iQ7Tt}M31#yT%FO@ueurF4>$*Tm^r+CP>%4?4h#o zDk!L_N+fj<` zow;?c2{IWYiPjV!!=@*q?b8SS-TBnf00m|S1T6ac;Erv&T)5~j(Dsnb{G*CE+Vpuy zu+}_n9o}cswu&3&T4uijjn;o8C8;pmsZr)usO-<~?QDcLx;VCQOg|jWUtf12Autr9 zj0|e9YtSaFuJHHcW#T2~w^di}!wCx7@be{_WyosL&1%#Q@~lm8uRdVo+^#6dhx{on zBm_+saBjpUlJCI#=FQf(BGP?VfL0Y0C7yqFsl*Jr}#-%1>fq z4G%|0JU!{h#*t>S^_2{O=2F$>tQSIo=OHkO=D4o3rkC>*8C|W5$KI-+w_Il6Iebjve)- zWsV)-6`N!q?%-UR`fV_;>#C?y;F|%`PY=ov4I22##6h`F-xT^?eSwC%~$_g z2Mk+NR09ij+i|m8b!X8~ZVa=qYDITX4fb!hUc0thJZdDKVIC22Eu;TbVI{z9 zzqNJB^&50nMkG?GA0vapdK&nuVzNAm@HV+Y7Se?7|NgAkTU;phTbRH9z0tK}voce= zU3NB69|n9uxLC&h#)A7op#)(ZwE$8&Nz2YsaVyiX0FSy`e6@)xIcwOXs&X;JS2ooPz77m5y%UM=d zKaO?#B;y2NN_)%!z{VNZo~Ko{&plqtcg8DaR#_Ssow2No+))T3UP~) z*qL&!nOik)IGQfE+aBNbCq%6I2BM;AQI<~#aDht!giIZGQSJ1=J5*d4!PTc?J`WB6Zb z!0sUjQMPL$Q}XD3W1?f(5J;VHH2#8g5ZZjFrG>QkIN$4ro}1f&J%r;@Rh1eDRkTV?Odd@t&7qOQuk-U| zy3Zu$GKt@XnC*K?N{y}fl?0S?{tB3?vb;~;zt^gORUi1P?b+N2;KvC;)iyIQA<>_T z%=dh8GeVYmPl8+unnv;NzIS$lNW$7AeeZ%6pXJp4iP zENn*asqt@#y%?-M;#~XmF(q=mxVgqx`C~6(Zj}l2VDHvEv!5U#4q~#>ig$_h_GhwR zYes@iyMp1+P^rb6h=?5fYxOTL_Xs9wFT3sA*G>UGVy77{Rad8?5x48=!2b3S?N^FG#InvHCozYdMh81OZtmfB|YN)`5Y{ZUTt5%v}xp3&en3uKGCKom&z+t z;`E+M3db{Fa-uUO=gl&;@^)DTIr?RRRF}+f_oMNdnRA;;pWyD=GUqMo;Z}MzJT?}e zw`nOxjAQO&S%_l)co|}0vwn|_{xBIznNAHe330Jg{N7Y8*{-iatHnbf2i0#$yR?Q zW0t0?mPQ+MY7Cu)8_KA{KwrI^df157r@Sc|5`_4~)MN2uo<`G3UJ_OM5YVj?!w+RY zrsUPS)KjeU42)VVk9KYT&goQqs+8**iB7z+=xM7ecCA_Xmj4*vR8;k z{4N{w9^WJE*4aiU4SY1>q@mi?0iMyNCTv-JJo?_6?;P}@EgmHme0viId_Bw|S^d^k zI33ORU)bIxim6+(ELqxry6Tw)V@J*Kmx;USy(NQxhyN^vfpO1;5#7RNbO(?du6G0J zYd_X$XhMzBjLhYRK1)`Q+_ghpdk9bZncZhpIx7pU|()=q;)RVH}sebukSGJCLEJpcBqFs}+`)v=wC>eocx+03hw z)>pBm*F2He85psGaZq{ae9a0Jx3wrqo_J%mk@51Z@SQ0irjogtDbHdtUXK1N^Jte8 z!^^FY6&_Y+Ywg3byfv zRq8O1tkL*RBvy%)GNbOh?x~>2*`sa4-hDZ_q|zF~obZrd+FLi` z*3PA1=7PoMiY9%q`8QbYX5u%M`m$rg^cOdytLMvac(^pKb&^Vo*H(QGx6uu;EH8#v zlUQiScTu8z44?u%PJmGAl4shQX(qFVYkF&id?US*_*HCr!G)l>Cx+km+IgUu`#oX%V%n$9ek-^_K6FpStDuHI6t**B_Jb*d|A0P z6Hn}vY?n1FYgRM%jWMvQb?u{;^BpxM4_47jnLP>M1>C)zQRq_F)*wg+F{3+N(CqTz z_jn4b>;=3R!Au*h<1TsWEPpOosVK>HzW!CF2xwx3iqy#HUCyZzV!p5w?Q5Oj^z<}8 z&Yk0;a;Ce=NW#ujWN@{IaI{~>h99aNPjgGqM%qz z@0v>S?z>8*TUojm>;@s)I2@Iu@HK!A6+CiEx`f{nMqc4xFeLImLc-GQsM6D}ZL!VR!`WEu?=C-MMRJmK z*E?(pO}*z{yWM)#Ywdp#0x1gAw{=eE6tTB=dh<1zzW)mh)HCBx*tgA`VzI1TOEQ`y z22!u(y$Ij&#e_zbSqWzP_I*E!}H z#^us@zdHXv*Vwn>$TjxV3RlPH7|917lE;hz*zqVh-~kv^K8x9*?d6!ZrAhB4Qd`fA z*@DK=HE%MA!Y%zzG>63aY|j(>8pF%wT`wP6J+r_9KPpBJ-rkko%UsWYghXO0CF8e2 z((UqO{J+3=yecIwoA94t0{`)XKgaEVj=}s6IZ$e@-hgE5{ckyx|Np>#!CLmKFMq>e z{)_%zR%3%aCs}#apSPSHdWheytW{$$` zI5jI>=7Uoys4#DXbl=Avz%K((aNHKi8t2N!H`#lh99ffu-F(UUH$J=jWdH_P8(x1m zLNkHGQdT5!LXJ!lWuM;lmH5q_q<9MS9xnx<9EE_n!?JOU@d|4_B)JbHbBK_6K#+9> zLMH*uvp^RJ5LkN^1CX4b`v4>Mn{xt^g-B9j0ifss$Q$J703in(FjmTI0RswT^;uY0 z2%_03p`8HJ9W~o8_dF?Q18icaty#bq2F#5g1Vq5q23dfTQ8RnuSUte-Y0K{JYqrJ* z*##-`2qqQT8&bC}gMw6%PpSALB|0%?!v~dJUl2rHnl+&0(3v=q2JLR}#E#02Jv|*a z55s5;-1=;LLXjTtG>gcW!eVl_xQ~cOYs~f|Bfkcnw8gZ#)8eReVdd`kQH+#j1Jg$c zS~P!|3H!%kV)r~xQr>p9 zt%>8eMnpsa?YPqjzM}|0s4BN92J|?<9Y!*KKx!W8_Uf#wJKI*#r7$!o4wUzhG$25! zumI_UN{x+=#d0}=)6*B57w4NuJ0FxAH>f(B5*XyJWxZ{~`Zd|IR7euds$Z!ZfBo9# zSjJkN&Eq=Skz#4qe&Mdn%*e5+xEkn=f~Pe|_@XUOCDP19g4RN`l$A`qIOBE7QWiyP zb5=4fH;>i){JmT#vsT6K*Te&~^SPRK4gS<;1TXx;{Tmi?ZBTZWEL@*-=)brbY}#Y2 z0=N6#bAskpL`@fEv`n2`7D!k14Vl%yInyQ?0<);u8#Y-n0CXrMbtniZPaOhE8fQQ% zAiiM*Hd6#l?U$7+%F#FLZUNyNKtC{ASSdUkD@4*gAB1oWufuYnNUzTyI!W5+ot~A4 zvw@)!HSg{NYADdkJqU5Eo&%=7W2Ra=aRA0@UD(DwkX$r-d^s6&lzT!$ES)*=V!QG* z6r60NkLq9f&2G`w#4eb76ZB?6OT86HY&YJtw>q%osl;$tzMP3Q;1gwykOp(wJ(Iy%Fls!u{@Bq5a{-DYA5Lc$kh_q zS3>VMrV0iYRBv~593u7OJU0(KHUUd-6L3xxIBbU$mA&ty-l?Tg`}ED{kwrHCd3*9{ zJ5tXP)J_2Ea6a)nea55x@;V-51|+n!USi=CNMZ1vjP@c)TAbQ1Kx)jpwtH8f59NuzE2-jhtT z!U$X4i`J?Ym+?T|_|>aJP;=4LF+UI~LC$yF7fJ^V z@l5y_Or>V&sUi4=|2N;lo$0^gTgY zpAn1*J&4-Jmq;GKgQhi3hDzAZ&Td@meuR+Xu4cmQ92HmkykIgy!uyG4`gFS#gKru= zSZa|@-M*u?Kz;@gZ=!gDkQFCL8t56&=XB8T23EulfE)_=qb)5|M!>2{OI4lhoz;ji zm1;D|19r>+{ud0Igk+X}0Bo&9DG&ny=}`Yu#)Ahg>!#YSKwu(a4GI!zo}lb(747^h z8r5>Fz>Aj1(aS__ea=I^Ks?|JX=V? zj6w@Z+@|011_X5!AbzH`UkvrWZ&A4rjU*NF78^PtUlokCKq}4>{B~uZ|DWoQ`!5)e zI?c7HilRWFiUKMM3QFz{AS?l*APBJ{Pk?y+$;nA*>5%Nrl>Yv^)hmjH$AC?$N`d*8 zcFezt@C4n6@niDxy|eAdsA(6q=DV%ZPZ)EYiWNANr}%8X?r$o#@J}BuKYJQ5Yoe-X zGE?0@^)~H*7k&22ZvW7N9Oes^kFHB^Cb{@;()Mn2ZxGy^Nx0vdrWqPKbs|6#8+0cl zO)7c(d#cZncxDnM5e~u8R9dS^mYcQfocO~mvEJT?3$5f;WdymkGaXUOJJ`PWI~Hup z6vk@F2PT;9Mn_J6G9EQR?MbDE1z<=b>wi2!p^)$WG9%#wLvnRCOW9S3Snp}FvR-_o^#v3ls;Jwi``_Q{P4&;1Q< z-U4{-!Nn3yN$CDiH0|g%9`)1%F7iA64_>@reM+q0t@R-?vqnK?qcC#1#{G+pt0nd} zP@(hgw|RXBvm@!jL;eTF?C7Hy)LRcj&D%j$=;|w6QKq=Fgq;(;1fX_ku3BWrJcrmp zBV2M@Vlv{D%WI0=tX^{MQrQlA+bXxj5yOcuc@UH(mxDX}=xk1jn~VgxL6eBC>C9GL z>)>YQ<~~J+Ul1xV!%zsFfN_90#5qysf-MRFTp5y>yrV$OxL&Fm{w$ zpT5hh*+hJ*A?)zlFI}rqGoopZ3{fIoAE$6|*lx54K8X?oUa8x%CFBboyvInfqiA&t zV>7cs=5;{3eCHRLL0~W|g8vOG444wsP1AcU(}kd+q5_S`I?OOoRD#s;#s~x2*O8Ht zK?gzEq_UC&;ag6eiBfs1`J*cj!nU`!*K&bgv{AGxdf3<31^SFR#&IiK5@&sw&Bb|0 zS|E@&>_k=a&l1a2k}}oR)wQzv!f=-wC+R3Zq_{5mx@L08a1SQ-$tH^J-!)eMNVXvF z^NxR%L{ z3Jog}s_H92FoVM|ID4G-(s?`5ba;6e;jN?ArG@XO$LAZ_BScqf(7*BFxH z;+yjG|Axcs-DCn`3QNq?X?er;iUR04j_kt~8ga%{J~Q7odmjSI3bHJaq#wgEZWyV91>ebi=K!^4`LwMGV5CKN@HXyoZ`T>=rodqo~@i+e_ z{y~2}EFg!j7Nn-qqoM@@iW?c5+sMF2Q3YBLH|cLj7xz~ibA#OS^46Z}={@W0;8CDM zglDEoI^MfD4kVFtm}_m(I`WSSNYtEjN1RyR;jZdh!YDk@q1tO|7v-OKteNT#R9Z$o zNZLx#rl}!6U8FDW%}4AVxNs-Vd?&)fiV9E}qK0npo;L-kZ@8YZXfH3Lt=55hro5>! zw>BCk@%i9q(`SKF?pzjt(+?`md=(Tm!A*M}`3i^Lm9*GLoh~yTwQXufM0*o$MvFF| zfI`iWz*R*6>2L=|Do}B%1qD@rfBe?Z4QQHr0(lN#+yb_NF&tl|J+>pdT0S*EB@Dr+ z1e%oTwYBHS>3!X^2p5p0ZIe$X04uCAoEFf*4FMp9${CLAanS&a7 zk9S+SLHGjdDjETQ*(4G2adh1Qwi3y|Acl&6tJHmU9XgW7nJ_@O)X|<|ka-l^_w9o4 zQSR_3Q_X^4)K)pklm6qAi-Lo1DjWIvjVoNXzB-lB;01duWz0Pi%be25E-BdoWvfRyc+;uUwYjGuxyrBNhOz7=TV^d! zPgl?HZF0fek;J~S5#EpxV{s5$)ZJe!ksWJ4NZp~qWr$RRpF|0bA6|UFzj;CUA}#8 z3-Yvb_@|EAn#6$0(&~vcm^eX*k4)eB>_$bj8mnpzg_2fzn=MW3sUgKKwxVJ|_)1;w z^!Kx>d_!%W@i6RKxZQZ7$Hh=$ojqql11PF=x6>9GD$k!NKF@EZF03djnDg)J?$+il zuJin8D#k~){MkcNyr6P)$Z7pc{dt_fPWDczGOOp~#ohM&WGTD4>}-=Qf(y&}Bg+h5 zI5mrTQ6_;1IrP=oTv5!-vsqU{Hnzb^EIpkgEajT*WI{oIqyk|;p_@)W9`B*p5Y}c# z^?T2zlT*oZ3fOT;NR1}ih3C+LCvOII9S#LN&E+&UWp*a)i+1_JJv#yl&)($Ea>J42 zfLD!_JwvKeYL*yE8a|1Y0Htr|OTg}NPQFf2lTVr(h+Nun(vkqea4*vS5-6O4l9K+- z18GX}tO3A>TL*O;HG9CGizJoec4tlfzXeV|AAsYYy^uch?rdG|P+*NZAI!04HUTFn zIOuS=8eU!25ET^HP%zYdP9Ge!n=Uu4y#@=03gP<;ZWZr`>!GdFUkC^`p9BQde#>(i zQQvn&(IT2UYlIhE=!iD=w}h0f7L4pijY(p#65^ zXxux}%EGN4?n-?0(KNJ7E%>F%T*;?dQ5LPe!&6hE*`Kvf&t2pBYK=GPTjaKys4Zii zPKol{WzlnnKA{8uWGTEB(I%0k5!afgK6i#A?3TEXm1#vg&(j8+ABTOhpOmd+=6SZu z$9EAL%SGqzxjEOY&UgQ`d0Ks0zd7HtcvV1qm#Liotc~vo?R06i0pqM8WqaEB)wd;2 z(|5kzpXZIv_aFHuU6Vfsbv-9tM!dkW3m8`bG8(c1ViXfyR&i*-Ch-DMuv%pd9My%= z`j8fVpuJ+&$$ip>4*11AM>a+=j?At46|2?~43OqCw{@GA( zIlBrL83D8T=3l@o$wr>uqTH3d&RJ2>UbApN3+65gwMfdPDd`9-SWVZ`A-ybWLiQDn zz}D3B??xA{TeFI4vZ{M$M6$_;D8kJo&|IoM$F^{%{$+>Z09;KJ~NkK#rY?EN15d25J5g^EgT5O@#Mj*mR!=x4JMX}Q57U8JRv zxUz1?nFxbX!B(uQq^3PYWV=;Ha8~U(6PLd~x3O^(dlZn$o+zcbl>;-uZJ)3PmQ{9~ zpvILds@TROV2vMp@1&4gYO2_b0)Em}v~rEV8QcCZ9m2~z+|T>ZK%6CQ1}q->*K9?c z&@v@%N76WaTZrG-bq)Y7sA{6YxbbZdjdTeydQ=QjM@XyqWqH-qs)j+hu%oIPSmU_Q zvkgmg^IzE~D*9v|h?fto#pWCK=sk`P0Xx$Plq+%6srmKLhen6{43AYhJjZSXBG#7GJH+GJI_Zxf?Xy&i(nZOpUT(JbLqZK$J z=4#7^)Em~DPJge zOHFmCq_?BtaN2$Di4dt;Da40|E3+J|^0Gt)5L#fYD-`AUsW5)Sqn13LVkukMG}TD- z{~Xx&3U(4)Fza|RdF<%!+NZd3_$6fBOeML2* z_-W6>^g^D|V^NMex|ESq4V&O7uwJhN)~y?BzTBP_Qnzmw%du2NKS*)rs9D=%plrL zbZ<>^D37LcsqnJ|uHIQ6n@0gffM04(T&giiI3cGJ_|_P=Wv+k$BZI-~%5_8MJXu^FAb3cW#s7%)=nRiVyxaA8wf{NI!1-d3HD`*Zb<=f2~ zpgZqBn#SrAn1FGP9^`h3udm%(!$c38d0KaR4gH{hPnnI`0M0lUHlwq25sWrGG_<$x zKrZi-9Tz3#*H)J?n^fOP@}Pvq`8+<>rFGUmf~1wKc1V8D=bNF~X={qs=yWE&i===> zf1a`;3%n}`mp~kiz?MZLioJ|_$Wufhb)7G`<|uGY+^=mUExD5w!{Q{)uL8mPv`PzO zE@;SvE}xRR_6cC=s`w$vYlek2lctV$ATl!Sg;$SK3ws*?!Naw*6bspz^SS3U;T!G= zf>*kdLr@)seNP(gp==kix#3SFm>kn31~%+g>-+_ZNii}h4Qb%HRcEomF>wxDG(!^U z_|24IfVz&MCx!lO;1+sO*Qc1}32a6I@@}R#1eFTqbt+OuVt1KXawz)B9kcLhqbs}n zW2Ldfj3f@OEq}Mjnq~~oN{R_ECK=~$*1qR!yP9_5IS0=qvo=$9m|yeh{qU-%#eBx7 z&ZXy#cuIeK*JN6sdj^-CrbtV_(~y>9X0GJJ6o!0=1|l0S8Bt6lwBXpb;*@Y`g!YcR(|AHqvQU zxpSZz!os~35r^UZpDU@B2I^yTu+c@;hrifScjL@mW0I)x^E1fo{{Dq)W5ey?(OjHM zRr2ebrr0lE|8Y-kt|uovm2fhPk~aGuF5HSE9?HHh$!-5sIRzTLzvshY0^p*RP%ZTi{+YPV3 z;?4wt)MUW+d}RPjSSU2gy*h7gYIYWvK(lXRoHtU-F?6-#pr(lzn_X}|+JL|EfP<4` z16P{e%ogR+`08g+IRDNo|K`lqxll$q+UU$W_ucQjvPQ#Vnq>ZqVhtF_j* zCr{*^3)>SO_bJQ^UQk-h)MBK2?=JhPcrnx!kJSK0!_<vl>oUIruK%3yB;sUuygZ?HyxmEI zc1LA3PAuqC0yjr2Zr&~~(FAiG>mXK|xcFR%)0haZ*qB29;xbMv^C;9dU5jy>?Iblf zTAXR3YS|tq@U%$q+(}b*A|du17~U48!0Lsfaww-uyq}+f?2K7t$1;L zuygp%aB|-0RL$XA?CHZdnJyEWdgmfGaT&~bCV5AjC_hFm@?L(tyxbJ$6Fnx1^=UFo zQ3At#s7RvPQ)5AYMSrFWKc{69t{nH7FXN#?9`gPciy1qw)w90#$|~%A>4*(^ z4}F0#RgZ(Pfh?jy&37IrMQ-v$czl;~?`Y?VDm(8j?3WK9!VL&+{^S~%RktKNR$NPP zdp(#-kV@*_x=V9iZT8`cE0Zg#Zxhng^w|Kjpa6~D_CoU7=B)slns(*s@F0%7j!5GT?q56NOvVN zl7;MKr8Q0V&6L3d8xL}!-LJZU4AU#c3=+_HlW&I+4mc>%67r`CPe@3NjI^huYCdNL z3Geffk&Lc&8b?1n+CGTjIiYV4{rE*C`gHgDo)5Y0j#%fyeRR?E`EJq`aTH9`V{aYE z_@8sAJP{rY{>3qt!USA=x{KP50(yID6R7vXpGod#e2}NdHRd1N&*`lrGw?tUlM!I- zoPgZ9_s2>=jB_{kZ3?d9qM>$AvP*lLzBbj=-j%RUlD%+)I7Y^oju`dMISy<;$M}z* z^=__I4~`Z-f0mG=#|=A^CPU+1Pu@EoZuhqBb12Z!L9r8&T z2*la{5 zp75qqs%-Oy5JaQ)>J@42_p#$i9gwbus)pq)qv(iEQ$OJ@9G_9|6He2x|GHCgeHs+$DABf7r(VNhdM50{4{Y z==aDg%>4cwIL#eNA#~dL`3;MUACd2BsUb#sOYyyq1}E?>%$`0w&}m` zw*N_!e%#&9AOHPxo7}ho9&cW5r@`gEl?1c@+7)SL*vRBfuTJI1Uzb;HM?hoeGrqiI zV`xF%L6gBFNEcFB&TG`v@?Z>XZhxK>{`={F2STAgvGR|V)sII0_ig;2bdq6V2H9Z$ zgJJ-FQ{X2kzjo^z#56U(r=*;Ham`osaP`K(MDCj*|qtkPA<^k=* zx_jeZ(?>XV0>&Q`+0X=(>Hs~Z^z?U+2(egwn`D6nw*)z;PhH!%zQq6gqTm&11$;vF z8C4Y(7r+f|T(^CJ*c%&DLtoz50Os@?4!?GF+bYV?&VOerMLNpWq*n?>aC8W?@Ok|J zV(H_Ld_~GFOPwH74#~gOFFX;ylTeA0@f_9K(-YxtV9oZdr~2b(!##*v?g;$ z>=+Dyrhn^814eL#d3nHu9blX7`u!W3-=&tTw3L)acVt1$|4%M}l7d2{R2Hy*!wVK# z-?)h_^k)}DgZJ<`fN3Pq)F}Z~uL30KsJ@_aR8g~w?9KuMKo=;TbO5=zshX-D?pb6ej@A5Ea$ge}pXv zr0WLw=&uaZ3kSz55bw7;RPX8I;&j0pwzBeRG8j_fR$6u=KE4V0uCuYG9v^bcA#ZD2 zQOfcP>_cSQ{urTPmH+>Ix%%&x0z3F45RHlo=%ACdkmrBTAOoX}2-;uVec8G{*5m(V z(*$8aAlv@GJHU_s2&LA!q?hXi_|N}76#luzg}K13?=T)uTjD}E!C-!?+yO(UJ|++db7N)@>Aqn^MAbMBel2ztGx~9L^g#i zYkU&S%}`(okDT7OZzB)F?_Rh({^~D;1%GtK>ge`g-0tqEa5&h+ybN+sUrtZu5`4m} z>gKe&qT(X(#KKV`J``k}?ugv+q#&?@+1bMZthV)`o_a^g%d$uPo7ovoeUy z;@?)UvRAKSUu>ozr2Pp_3xRt7Kyd!U0Fe3G&*N(2xQE5&*WvgUH25~C{`#j2z?;`l z@}1ZLv=c}`ZSk=PX&I(L^;-v~lyuF9O)sLdBPLQG4vh>Uwe0AyetRz8GvM0gx_YCU zf;QQBhpAcH$g#+qhyK70H@rBHu}#}&x) z25?c7f_tn5$L0?6*>`z3_4S0k|K)r@C?wD(vh%f4=R+coGYl(_c9Jh1Yo5#27umlTb5M3mU9;0F&dkw>)&ZPO>nMom3T`N43>A zUW(euC?#x1`zWr{^S1|hMNKJJ0vu&u!OYan@jce~5^^nU3Y8synLTE6f!@?CN#G3OIx&lJ*(prQ2Fbth! z^5p-H&Q;D`5FFqxDpp`2CnY$S4^>^PF4d6vt>3PGs&cHrUsMq8*-1pJ7Sq$?N7#~{s;Mhtl8k-Ce`!yl z|2F0zm5JCMZFkXHw9i76YPjg+?PBe>2WmaiR+t<+rq`Gtt zg$u$8o7;Uk zO^EV-T0zp<3DfuK0UEb*>wG`U9={rf}xkz_uDPvpiUHK|E z`)^qJwtHZB!^`>pO{e4I%w(zS5dC|>s`Nw*g>`b>1QG&!7?V?FlS}TI2C)&Oi}P&> zWhgqYZOtosi`L@SEKY-yyXeww^7xWe5(3W4xJp(*ipIoPbHDGK<;7lN=`Ed?vUX54 zrNSu0>QL@r@$s6Ij@j1nc0}i?yivrBiKK|B0bDN9h5-5!d*J7Sto|9spg1p;Zdp!Qc z_9m{OS-~D^iviPNfTmLN@i=tfWASBECUnd(Mi-4aHWdzdT4qw4kQHzJ=4T6jJ#S2M z@${M|mo!pMwRCp7Ti*E!V;f0e^lwerKG0O1f+wgv<{7&3H+bwV)Z-|* z|DDOm8(EZ~O5&ZeaKyMC_ydShQ+q*6ON@*xjSat%Z|ui@oL2!9+ui;0N8I@g&PdL~ zm#4gwjAOw5c+v33wj9FX+qLD<$zUT)(^;T(`w!Fs;#H|1t7OLPSntQRzLHV@$6gT< zqmF7x;)oD2aj=)u`PE0;ZwH8nGUOJqn>VCD%iq_zS!}stmN#wiLb}qnbycUc>8Q%# zXb|W#%No}+zC0>5=N2-**nX+g5849UnX++W9FhZ>8{0`1jz2|oG`yzMCTbNm5g)Px z{6yHv>DQRX&}@nH!Ix{i8xoIHFO*X*9C}zN)3GsxO3;_&G*bn>BBrQHJK9>(}y z#!y!6-_IE7ragy8j(lF)szc}=1;8RTHLDM&R#xIWF(q*?MuAIo`-a`t0FPs}GNn|O zz-PHgLh&kb@70LFU)cM{56+s~zK*Xl&Id>Z2`g>mm1dceog+3IKs$7V3N#9;FDBI- z)}IUNtLB5xtxS6~;@m~gzHxitSZL4FUBGdkrcg$fB)L|5hci#Rrej^sz))*(8H_g>BzZUa=XrpA#iH+C=(WOo&*jSHj=U;jisbpCcdaA9HF3%A#d zs5;1IVfJu&_}o6XS@}?m4YLxK;1ZU3VlV7pumU~r5$SYGvnO+pFVKD#y{)nR_FBEf zAgu?rySnqPULZJ%Lbl(M4{yeh(mfMQZ(I5vl}Y86(Vi|YaDJ%N8euZ(oRrI{FqAqEFJ`0Jy&}&{Ll?hUz%T%zv(aD>TdEYpJ3BJ^TY?4$s%TPXNfIW47VB3SR z05xejvi7U<#I!qn0e-ItB|Gpd(H>^Vv$Wo8j$14oCoOgk`^(KpLoCXiPD(o6SG#!U zoFt&Y?7TzmfCL)M1Bqc1cT2PIeP&*rQLDDaP8OZ88NH4DYP&2*b0Atm((Y;k+2=4;3W^(`^}P;Egj%`JQsg?Uq*?;+ z$#GxIca&6PIg%pfAayLC8thuv0g49ip1vYxJDloko}SlGc4 zE|oW{{1lWj*~|lYcO;4?yTQZ(36`NgUR(aT!BCRZ+-fq(^U0`*Ipn;@W}Uag4MNa{B0b?W3W@m%dt&V##OkiETbRwm@-%Dn{${vM-8ej#eyOgt|r!Dtk&V z+$*y}?6tj4BT%zw#lzEbKFctoO9)lzhV^_CcpM%g;mSqIftw?uOff*G%gsy|W=n_i z*7zGqDs0wD1rUmC=7ML2a_0g_o=UMNJ7=;dCLx+r!3G-GV9g%6FOFrvn3lL0YO#{S z$vuG?-T}6p zMrChX5s$W#vys(v8tUPQk3j>Q_lP{ZN49d=7HfbIiM#pf0tyg0zwUK(pADa$sIap3 zTU(@cXL#1Qq`F#%wo%?zsf|H(E$`7=A_W|u3C{}^d3m!FGa;54JlmvbY;4Q=!PP`UzK^Ae+6Zq+=qo}ZSI`irD& z_tw|Mn>Dx|>j(RY38l&nPgYnJ3CViK!byO*vXqqCWCMR4p8MH*4)jvEIK(NQtmDp! zq~~60hkm~SuB_rFo-|4b+Q_8xIcRRN>p{+`o~o)#bHHbLX{_}j!55f39qdp?K+O0Bt`a2$@?!?9VjDe>NpQ%nJgUKmYp`~-@b#ru4X+P zv^uoXA4g-=FQyk&yoZUUy17@%!)!vnZh;Ev30D~6E$1pRzb)R~-7SE_d~2=*+~ym zVZ#KDL4~Rq7tQoy2SCAd2m|@lAV#@WMP0HsE;IcqmZ>LP?yUP@?t7gM9cn{OHU@~o zaGvS)Uf4RF(lUBKpTTjqciZjWng|;^kgO@ig?wO0KzFO$?x+|yKVLHfBFM*;U}pzj zUbIvNwB3_D=Vu<&-R0I`>RRpPm$aPZ5P5UtthNJvUe0NTmS3=$AfB3<4tVYgH^ok}P48}uEtI4oK>}dnMKu|-GxLt}tu)#=0{NJ>RYo&Y zHxecr5=r0o28|8f^{T`m5@|uf*ich;NMG#fh~UHjSVRVaa&(F%8)26?2z_5b)X`Ob z#ptoUQw0FWVI^jR_bw|rSxLuN3oK0n0!0|I>EC-~XC=9;-1%^x8Q&Ncl~WRUMpx1! zvR}K9ums-nm>I0AuA7i|bSY+>;5cd}S})H{77+lea-B!=AP}<$Qq|xG)VwCQe_3lS z{L{qD1T9Il@!mTWOEbyjT#uAJHD-fnVaTTS$cCbgiGG$ zL<#3RIXyf};5q#2>Jd39MaMB$dFS*%6#QjflS}@Zb$%67iF>x=LW$+QTXf!mT0N#? zCALB!_wn;~I$^cd6Dl%iGRSLTKX>=6(;Lf*bPj^u);m8*NjmnH*Dmf!=3=bn)79f6 z3|&5uK8xrooPPSV@!$^54AixqHFHv*2+XIe5|gB`H9pm{_hau-15H;eSe z;q9(zxL^92(Bu2DGg}0Gf@*smYdW)Eh^ga}1o;B7rO!eJQlD-?F_S#IXp=R3M4xhFGc!jd*}OfE2ex(I zk2hWWC~RuVz%W^U>k0&Wmy1vBlX-VrXAa9;w6egI84r$&ZR18Jqzh{(XX^BHc&z}P zZ7gow=uiXUbAsPl(7qw$c~ZFOG)?33$^x}e9s6WOIhP4O^@uMgdf0#{cKso;NTWwdS|6p6AK!m#> z+~r3=qtOqUWg;P8zGd+mh?;r@E>iTJ1y8M6P(>1sW0V0@$hKP|t`Z(lFgA1x&|R!- zeuRtpD`#C_#i@RlnPcZWC2B_wz)1^()iVvWxgd*g4HC|olvx(Iqaa?~&2e3SlDO)f zzwy#KvJpI6TM-a=LCkaiyFi*m%+-&QkH5z5pKn3Dc6JJPg??<1D69N}*5}BDpU;%Y zMTd98N48i)I$0qxrpUt)5^JxqLWk(Iuor5nA*E`8^Uuo43JeBgmIQj1KocE^sk@#Z zE$J1Fcqj8gEh=Vw0KK(qADH-{-}YWxe@ahb1PGv;*tRFf_!1gdKPs!Mhamwtt!*|J zA=-;qW67hzc0%jxDD`e1T{W|Q;%tlLR!1)l??QiJVYh=3t7n5*yrn>1exdgwa%c3?xn2GryY%aWZJV_)qK<{cmJt%4e%@X@IfBQ(oR@F={FW?&AB z8$!~b*H``m$Y^614juo`Gax3WZ_^f1njQFq@hZRWTsZ#j%ZKkT04lYXs$xMkgz;#x zLF~G+mNVJOJ|S3_yl6EPvk>b{7)mDG=1BBY!=@`}X8UIz_4(hkn*!u0SMhcDS-nsiHY(9 zq)%F%hdVz%KQO7))}HQ56TbGk9ti4Zx<>)2Rd6%I2m}xeZl2rHVQ~8XwE-CIJUbDL z1!YOkWh0A=i`V2gfE9`rJ2yA?#PDz#@H1I^Q3%{4CV*CMnOS={87O7U0WL_nxq;2P zK>6XRRD#o1Gd705fW+o~K#8auVOyt;1 z94%cqng4()N2CY2R3O!bELlGX6|Bh8zB*9r2*mY;g@jzDqMcm}DLRtRMw1t6i+bfS z7m)h%z;kJH5%v5W6lw#P1>5Nnqp0X;kK=)4peTcZ-dXjHV;8BK462D7H-IyIKtMpR z+aeQiIY}&QpE%f81;xL>0@IYP?8hPq(kq35iMSD!vH0=LT`^rIHbJq^^uG@=gOLrn zz5s%H75K1?vK%cXW##!Xu#z};LC3|xaXQ;W06BMDe*wnODW|#MT&4UDGf+deF;YbO zz#nNo1bjy9D>X>Arw(czfu90M36k`G0XmjaEj@``K+P8pD)xby1Tw)11_V;Z8EN@| zbW5Xy=9ZSSl&r!0+!m;{Z+X9v-%yD}u1sCn+Kfp+Kmhnl9G#sbE17{$P;5h}+dL_< z7|MNLSrN>AuuM5@POa}80m~0Sab}!DXt}O;(${h4PLm+-3T%0Ln|p%VCnQ2N*Scb= z-?l$9Yan2;$l4+%xcm_&x6i3%lir7|T%p%Ox-B2#AGV|U&6{oKEIJ?mNP z`Rjf6x>lD}Z2S8e&fz$Z^EjcuZHoJv6OPFo%2T?M+x>?!!_6_ys~BUCAXs4T$!w^h zhglrY-ueT1AW9XXuIZlz|rf6Zq8c>!S=VBJhSgE)EJlKOCceLhLEnq^N!qhv7Zj1*g z=FL=%hPbg;Nt?ao zjjnH)e}glo#*F^yTF=G)_@lOTm|0AjZQxU3&b*IaO)nvGnK?Qw-ixK$@&~v6a8ztd(bmp+A=&65x2*H6|6~%}RzBLoW!a-oJTNeW z-hZmJlS%mn*Jmp2GnB!B7~xYJjnOYWWzHikDYL5_F}X!Wk`kNf*VWY2xSw_Fwz3ea z>b5v`EUpu>|L@Zbn66=`?20kT4zSSBkiDn;rpwoJQs#d&7R{PaJOFT5g$5nJG&}!f z$E!BRVU}!R`$osZ8eMFEHfO4pxF7MBqg?xcRD*&_as;pBj}Bfgzj@@uiQLvRH*EJL zmfrQ6L*2R4s|xNwGn!rN&aq$>E+&$~!caD*HOyU9p1X)aCpH^CJv1)FAxL5W^vhG8 zJ^JUDbIh_$8!y{&yI1u`?e^N8K55cf#xjUT-%h870+CzU5{^2FE1#$Wtpg?0Re1Ir6%J-s}C z)V7TOwlV{iCm51ZP)SMmSm0vvc7#PzS*sSnFW%i&3{s|T_h z299-CbIQ2%K*XOM1HJ;r4&GUs?yrl-l$viC7^hRpc4q_G18OZSFx<({ zPl20HTG|sD;*(b%hBI=Gxrm+q{`&IPNR1Mg2gg9DnXI2&x<1iYb2LT#635{EJ6cyxWM*k>X@MQ~-QA1kRZa8yCs@y7Kg zpO%O1Wk!XjD(I|37-fh58R=A3At=nh3}I+mn(K?9<))aA3LhymH&0wP3A^_X@83Uk z_;CDUuR>EGv}>lHKYxBMZo?%koWH~^HP3WkPuwzl=IvT=NvmuXfR`O)E5ca^eY zI)3`5tb2V!!>xdYGvm_~8;j+*ckkYGy=eJwvW<<6qoa_2_~&O%JNTc5MvOQprte=9 z^z6`~??pP)gvxV=IH4oumzc;AC;M&_DjqVP?>v59*BU*pa*pnkpV$=;$W=IqLL=d8%lhIn-m(06a!ydd^>d6@_NAX zLfuYZJr)bhsr>Q7cHzUYMlo~@2YW?m6fgkXpbRPenZXN^8+~Wiq2h~IqyZ1 zM=`_f?3pvyjy5zlp78wHP+z~aV)l={A&88Uv2mAvm_w<(JnQAe5BRvbXfM~Yz3gH0 zVEk7*SrAvYFXQa%#E;re+@a_uPfkjDpROpctlZ7JD~=C?Ps*^?m6hfJg|}~0qC51J zyPKP*7cBbs*IxVn{j_(9;Rskq2t7*iap5%|n5I1~C~(8Ys~<3@<;KiT8&lJ-MQ2)v zN*`6G$+(_|)J?lZ;4;PnT-MN<$If*>0lxViXjVz57X@xi-W>_?i# z6qUs2`>YDhJK_7`bUtBV-0;l8hYw&g{8>V={J6V+@t0p-)x0U4jyj0r)#_r?NzPK%VJ9(fmM z@obCo=jF5HgZtR%N0NQ(-oF>wvxg^?UCD0_Iztn_m0Y9%%_M7>{cGvl*eT1VKHYO& z$t%Ql`s3tbyJ7y>6h)=a0#gTyOgm~ssuYauL{?NAz7~EGdW_g214dG;!-Jv+^!p=6Y zmR(v|yv%!={uSsFLAo!*q89G5UVQl*NyNr&;-O5ZCAWX1sf4}PWBF*RjQ@X-xM)Rj zSoG1VJt5^!+5T>?x@=XjXkA?$Qeo0nA6X=0m^nD&AxF!Nk$!z24K02xmW47U+4$OX z{#$;Q2pa2oPHat|yR|ycxqW66(@d}w(Xyrlj;A#LakGh${YN=aNUrfx*Plq!8Qi~T z05M%uWF&8>-{P-gie?jrB8^qdnlD_t@q#sEOffWwnfIrL#?0_=<<|A@Nd zSOK0+ssHiS!i~!OV%G}KP!plgLqa}fW%=akQ&p%hKmKTwY-V6&)N$$LU1R5MT%S*s z|MO5G2aa?H^t=e3&UpU(dVWKxT@y#?kCEDIyqL?jWKPxP`}fiD2T6*)`mX6+83~E0 z%L3_Kq3kj)8G~cgOo~kZYGzW+&S`g&+^)zF0rI(ogoGf-Z2x)<9obX!aN1`Xf>d@- zjBvXbr(2JD^&T){*!Dt=@Qu2}QW{dK9ml5?N8--HgwcaB_)%TpBGckhU5l-`M_Vtx zdi4rZ3+snHU`r+T?v1QWxq0*950Rqd;|C5=sjQ)|ek^o2d@!L=LMzUGN_&)sTBVt* zY7H^16a~7Fy^f7SJ!p>_v!WXPbHnP!EBI5nM=jDz9I8bGx zQ62g<4fcz@ia!;Ru|+Ca6v1ODI`OkA82{DEj?mQs8qif5o8|bDn!gC+gc?R>e6m~ax;3*C1kbt=IwGjq(86LBGl0{S1Jjw}l9HsYYnjTr z%+1Y30`LFeiSVH!vC5^rw-z6s@sVnjfRPYmJN|5d;A;E(@Zyw*58W;`A&8VYdp%_M z1CgyDzYtjv7Zn}P4ClBZdFI$-XBwsxuOMGuVcvZyhpk$yD7SG+A?ytmkwr!M3@#Hh z?G_eD&Ef@)B4O^q2t2P}pJ$*x6diE<#ECmjp9wCbeglIH3v1&~r^J3MG)?&(<)bG; z80L2p8MBt`^aK~pz1=1Qw(gdenUl-!-o3+aLaGSy`OLxZ1dqwx^_61uR$^?Wn+p%L z8=NoeGQzFk3dyX*v15+on-{(+a5P;ZaK(>YJ9sN_C0BX*GE*GPfm{DUa&4wsIC2{m z>!Ej9iJYX-q z<^pN>MRG>bx4ZdId!eF&UsUk$;X@=K*ukeJO^_zRl{{BD|JJ#9{Vq#0X`A|ln>X2g zmg)p<8RZ!`wPu?`!)-0AX>3|rqpRtO6CYC~>>SRXeX7Gkc<6bT=#BC*g)F?vjlD1W zp|#ch?@L3^(ZNB^rAI|yKR#@jiloYYEZ;L+@Jc|jtc>SRBe)AyRaJnPD;YeyVcoQnvTH zmW+q*OwIDzr8m}&S6(_EU}x+(_q(^Vvy+yV*5CmK`TW5SzGcv7dit5K)p*|<4H@!R zliXdW*w#;R-`-$O>}pJPYCh{D%%Q;)`mKanU1Ln9xTB)ovb@M&r>#14=(l4CG$a+Hyf2po`Or2f9 z(DFHW`G=FE0gHbCby4P2h0<Ur&)u}+V0u@7tG3p+*^G`X}B&W5E&b;(NYD8b{ zdb3`M_l8}7jkPsJ&ne*OB1NP$hihvNXw5Ksb)J()Md|#_s{N_D)ShRwYk{sEz zjtG7wb6w~)-8aO>XVPeh=3^PbqEDYbb!$#PL?t{cjt~F`Z@q_qkPFL|U{T4}9W}H7 zB_E+*AaH4-1_0uEAL<&{5U#oCi>Y$w?-$H?P7k%Hg){7W-~ z&-!7HL3UQwE9(VA7yFYZQ~A%t&Oq?*@naXnxk~ScyQ`|iNA4i#8}_JYR9&1I-S70d z2$0mQBbkb;U@l)&?g3p~T-+F@Uo!I^xPANfO(p+@FBtHRrz;;_+s3Nu0ibhFwmB>t zv_6r?`FjK7mX?(C`_pN69Mgc3)91tzkuTm z;559O5*hVlo64h!)NVi<-kAUC^=FtjM&Wy3S?##0wR9?{&k(ol2&PX>Aev`2zhFs8 zBtvaFDUW~(#G7ODL}t^t`{pY)l;MTu9xWQ#nla88$mP=WBK2IQ@yU~;iznIE)8+sC z>BxEO^rBf%1Y-93Yfr|$k_S?@Mh-;FkCDd2uM(NNSty5i=GyYxsBP{*9GS^qoxQ?? zMFWohE<1hS?M@}6n9ApWq)s*fhyR9CCF$)`p|pR0F&*!W>Jy4?;>ltMx3k8!wm*>j zq{hW%@dtQghVw^knP)U~t*x!K)8rB{Xl4!=YvAhgY-lWwKsSPi>E)0RYMM$y zJuZFh+oIFHXtsSJ9376&1aA33;WL=&mFriGH@}{otVybCY&>%02=uUimZ(#!3rKla zWn}aK?~1jnx|5UhV{p*Idm!;}vPj;eN3#p{L?qk3CNrtL{S(+4`+^Mdh9b%_~{QLk}3}BYvoYjdFiR^>>;P-6SI8(|eI9Txi zkUKeleg+$bbXD%GE)eKw4n;XA((c{c(CgCH-i~_BT-kVKyjmu!h-s~uHh{pTM4USe z7n7EjPD)7V9~^8rJP-S52v|G*=xF;Ri-3Rt1IjB2N*QqHckj+&;-$imdKMOzX3Z+# z*}x0{Vb0IbdwYA^7M5T$Am?b|Ka)7#+&4Ej2Yaw6qnZ>K$8)O_Ry1JQ$Ao9R}B$3lkY9pTDd0U$k$d=)2es@uFbkqbX!-0omnx>X8PL>jbA^DNwBUIcSe2g?SG$cm`riWW^LHX;p zR{Vjh+qb}9)bhqG0TG{EHiM(<61{-*V<7V}oUG*~<)ES0Q+|wVE8*M%n1d0#E`EEo zhAS@Aw1=)*Y-gCTG9Yvb+jqYwG^zvy=hLM=w6*b#SGmCZ8RvcC)r_t^l9FuhQ|Bn% z+J_6$x+c5D2rpe-E(<TKER&#WpO+5>_7BSnQLxkgF5r9*X+4uZ7d8fTk@iHwsOdm0i&32z+F5v3pgA1bw*_+-g;SRnoAh zKlivanI!8s_jocJKhyGpm0XJ>$c&BGx{z*XES<3&_0ghpmNrWeJzUM=ji;XoD#taj zrw=Z__o4|>xmP!NaXn-7<;&cmjwqgW+TGd}>iG4!D-w`lG@aMP%r2e}vxN1XxJ}hq zDB?9(b9ILo5~Sw7BdOBB%Pf|?xHsIZ8@KSAxWqoA(}+bvbtg0yc>cn&+@$=+#-;Ss z)V;H{3_Io8K7YR7KI-n~_Re++W|Cso-UpZ?Q%zIcuP46!D&1Bgu27@APx2T&iXFk= z#`lob1Ns8H4;S6%Wv3N&@!BcLq6E5rfCuI-FV`9y8}Hkzm zHEz)FZfSt!LJ@3;V&rp=-r|^kO@t=I()kTP9Q^6^Lsdn8GoGp?NZxz$w!&sfVc}mG zk9zLR8CgW9K+708l^#Yh=dgv9K;3Ws#_j$7yTdH=EB<`Oy=PQj(hYEL$(wkC0yLa#2L{98?T@7Uv`%iO%>Ba`SywKR0(fFnGZ5}&6u~v>! zdk;p!oqfoss9NF?*VD7brlh1KBv?N+sTdDgAg9!dw6Pw@)>HapKeRV|M}ow8A}b|q zz@fRM%h`sOi3QWt8rdh{=bKgEy}Y;{j?Wq&2PIf5tg@5?i()U_xk&Qf=Vvb3OPmh% z|6KGbM(I%gBgPWvrv_~bq;t;BIqNa?d|KsEd#W}+`5^SI>&xaYFh&2^Hc%`-&W)jx z=3@f@>rlw1<@=S9l9jbkAnvZEWjfw%awNd3#I#-;)gvzm;4+ate|AhDg?Ug;H(4fr z&8&8O(tJl~ERG#Ub2o7BHZhNNclBn>^8)HDVAk7(3a zWjMT6SGQTt@A^zk3$%iq-Xj+dC-cypRkt+tTAFj6Z^SmWCYs=>zF77|#zgrnva-LrP&RV7W=NAlx0B6I|DuV0u!MJ|668d#&k41(&%RWYZ+(drn+~pv-9hbJQ z;3tX~370syZ)atFN5sl#aGy}g`Qfb%euc4dCx{}V71JNUXqm;40<@Id7!((`Ny=+t z`R1BNiNr2%MnhBAOXccYv&>bliU^HRI#qAp{QB)1Rw?Ge!{%$<6@jrTQ@)1|UGXbF z^^!WKga_DojN+dToT@vO&j}*$uDA1^a~l1gPzIdVH=*wM^@pN``m4Cxz#WO0w_owu zjlwoPk>VqlC}G=?{ap!haRo>*-d8dZ*IuI_bBX?sO3uU!8}zXhU7y#EK*@uNC$q8SwXm zN0mNEXu>S}&u2MGf5GVV!)xRz_VepkKg2JsU!V^k$?ymhwkA*!$x0mJ*0qSR7eNQm&uyjn#z_Tk@GGr>Bw zQ$IY*PQ1704h7!sA-7g_$i+Gn6`N)AS|TI8{${1yKs^fdFo>f+QqLuIe=YYetRLKG zpN`E~?3#c6T*kY&8FdN1YxPoO?T_vz6H`oHTV6@-lo)B{=_r75fx*fvV8x_>+*#Lz}< zue|(8rDtD$)x>ZPdIumHoSg1~j|)J^v!`92Cdfro^KEI>SR@xoq3MA!DTPV=?5Bqa z3^$W6q_2)ztU45bfiG_1a-_EK`F=p@P&h(u9f^ZWkY#WL$C8`Ln zuB#@;pXKD(Qhu3iy|9Gl)$JNPTuMqxrgv(^QMP+N6c`jLB5Bh8$d1#>8R}eLqs#@i z+2kVXJ3xdeIh>-7K8B4a`#m&m6*Za~PmEz#SP>b}9O1M@p$(}!-A#s*DQRzxWL4^p zkp00GfQ>Wv4jh1?0?hJdQSzrOHPgNRj%1N0=gd@|^(-@PxP%Pb#MJ|82Hd11C6WC! zPX>OttyLYi(f3D+U3vTWbwMKfozjO79r6L41K8700|*9y$&zf~V|>TJ87&E644~UA z*(5mAHILuaAm8fLRVo!5s+O>!Nc3&NPh^;{3Ldr&)7!TIlV$8`8i!c(DpF!TEv#JW z>dNBq^qRs>KV-sNSy|UlhXXd$*Z))Rx+R2*Lay-r^OI780C)_T|Eo(imf+)b5PU$} zrI7t1BJWQ>X;z0k8l@zGdFec%e7klj{(iB>V`h7j4Wfh>o(5t1Grisc&)2e8x|&I!OAxEu8NrENjUd8a*3 z6WxceCSXYF$LZN+bj{hD);RU2G}_AE&PRdF+&1Xgvn*}!YDPm+yp~e-F{GA%8H}i}X`l@M(=a)v%CDh>zzjmIdUZb5o|* zvkd7bUeeBAfup~GW_@j{4gEIpeh88tcQ=l&yWKvTxG3ZCY{0r*uv)XcIP3Vg!vU`! z+@{waz8pyHZE=)*(8s5AG8L4F8!H50LTL&`I{n&@}x3;m4tkQyOaLaeB z1h-)op0oD-dt0`g{QNPHP{4*jxmQ_HV2HPeU~(9`FN~^%%^ZwP2p3J;liUQ~yMfa! znv-f@!7T+}%4ufg-bsa+7pxIt+^ln1B|s*=xitt+KZoH%y|?}-yxBZ1Bjs{V z+h}V?xm^lEys>D+dYt7A^v`7lWn^VLt;{O%9CfaZ6y8WnO{H<3LHgjZK8=mUwPVgh zhikU_c4AovtYW0rB;xt@`idSQnEd;lDY4eDLly#O-UCrwq44-vz@YrF1s<*}jEF%V z`zdeT#b6ub(%0=FYw7wo>#il#*L=1b^iDtVTSk>dLyx7ba7|8u;FRDOyzRit`cuD# zX^DjTAlmse!Q!b6PMf4yCtMkB*qL#SYif~@ROmK8Vr1T(LF`Vlq1&)wXaZEai|2W< zz}t81pnSmVi6@Eu`}eOO@FX(wz&ph}xnH5Nu6=J?yx797@vfAWd|bQ1JW&L}5S_^L zAPxWxYTIn?Mk!7jeOyOmt?$}=(~`~GT6^1ZftaYvSrKPwiQp^WUL?P-kHl@PtAY1J zR)a;*PtUlSHR2+3|G|TSWWa1VF7;>bQD`sMUV&ihVfyIVv!wh*6#mw2-0tzSW1o*L zLTVV)Gep6cU*=CvU-J5_Ab0mrmLTTUf8dHkwI7D0!H|DdF%H-GW2c7Cdz^_b=lxxi z?rnGVkVZ~()6}>kDZl6U88i}KWha73(R1vpv7X+w_;?Ao{#ptWk8m6Yd(Fp{NVOxH|>XPbz5nMve41SDeHvqz8is)pz6%>zq^83kCLb^f? zNcar`h9}&qJoq!X=TPXoe9?UIrdB{2?ZM zsKDd!!DTkWs)$*>f&-gG{S7YE_eBuZU&_Yhq?;7$OBtj62)~Y`E2MCM4M6c#lbWqL zN8)1=s{{yjZmqbXV>ODdt`9zrRFo^$xB}dsHez`LPI1t864k4a`@*+;^_#8+Jt#kH zV{_-rubdkCYL+cqkZ=nK3t#Pfj=XfYevaUNdj#c_*w2sygb`jCp(7tLhpanY=F1Q#Ne2Uw3xZmv$t{0ol8e*nY z*CHZouDELXDo0c5{&9Tq3p_6p_h8elK-4qVRM3skB|11bAU8meNG87mG@{@$ZBLG9 zv8Ti^16MUrjQH5gNli4b1+OzU20y8c%j9$O=1rj4r{{S?P1n$*-LUH&uUcI}U`FD` zrKZ3)NS`PfK&whWF7xiGbF5<_Ka4Zrx_QUl+dh2Y8IK`)k{3Eyy+8S~l69_immQ6} zjrU0B*g+q*Wv{{XXnWHsF`&CMNKccG%A<6t>%5*&)EtoMK#z+CYp2a6Qh<=rXu*)<qWvXi%&deM6>X~z)r8-zQN-QS%sxNNMQ=U`~u}CE6s^q3*>^5 zjiNHz-98bvK;EUwRJpq1TUst#Ee77Cy}kXxg9l@C`=GoYh*F1Y2^fyek4>+#;i65x zvyHEt#zjWR0J12mtfd4uHoE4AQ?qt_gaRMy=V)i{-8((ry^7B+>dQR-FvFa~=6C{EmmPD*$*jM?Is&WK zQ56`7vu3IOz;*|rGEFMkVzDGLI*l+AwE(;xnOBsa6<`XSXp#3Co8A%1edRmI&4H8s zTI7QO$?>(QrnUrq>mv*0k{SLh-_Jg(;2%#M^^ofZn%n?(T_s#YpfrUObEdr9JOtduP=+mheGT`MMyNCtl~? zfvb1p>t`?j-fWRM*a0xTrNH+A6vE2F@)zBG(jz?*nK1_{G_2v?D(%CE^$%2liny*d zlFE8}(gWtcrTHledmdudOFA$fxHG6+nS48Kb7m-K#K9k!(aF@+8pam20rh@(Xi9-F zBjXg(Jd{H!ChPYit0)8PE@hFsn6@Z`XeLN-jRiv0kO2RoGrM-V)+S7^NL0Y?{HOG;lFxwQ62<$aO3x1#4C+>YuVR>9d~q!YiXrMimR~^tFUJq zHf-1`Y$A!gZY|x`yHP&eC|a#cr&MLOaB{x^hB53oa3;bLzw2+IcP*j9M~6Klaffi- zr8OTDuTr!l9|Yy~%$ebzorP0VQ`>%2{rIgFR|HBh_;3T;^H9Wwd96YTYie>b;j%J} zjjQXE@*GY|l>mI`E^Hjerku#HGBh?WaqT-0BfIs#XmZ~J{?9bIl4qGUa^VV14UFsB z^rb81O=TtkG0361gZU*n?51a(oG3-dej7t7qHR>iU+*O4HM+>&#(I2qlrFhp<`tc2 zvy@q))mD%nkp!l92a<>&6?pqRlcx@prOY`Zk+L$S9-IHC%BEo}CwC0dY?CE;D6YSS zXC$g&Aj_9yt$O3w9#j{`-{;=BQ&(d&v6gz1Zov5Vey=@(^UGKmtZxZc0K+eYsxaQC z3hoN2RIP6^p%Ou7&;G90g{Cxx;qA-2W31(fQ({mo!dXIs#eHtC7U@Z+BM`&RXHKaL zJJ*2L5wdXVP|)vJwZ4L33`sTvmwOan{_=d#1a_S)Fb>r5rKLYPJVj{;uZ0eV_`c`B zGv?+ltxA>fT+R6&0-rV+4N?3T^8LO08`Fktq2ro|^JbE-HCWe(Jv$B$-$&jFq zV;-z@S_(|k{A^*f(r+IUHcU$=mnH&qN?7;^%NrCg_Df3kwCEV^SQuR~ZlAtpF=p&{ zcjjOj=pg6h((>uz1>4+9Oh?*NRHo=NG`XvM>6Vw$Z{E}nyn`!%&#d5m>8_Ojtor=( z8JETMUEzK=+2zC-eh9y&GxsT*p7y9Px4`HCWaTX7+e@b(Ogx-dPCeyVb?}$9W8d8e zGs^u>%ewT5H?n#$JiYehew2eYl>@=V~Bt$=qkn+>%mXov{DyML8= z$cGrEviP(n_l2_&lEF(1M00}}1EoWtIfZGXA4r)3CUB+eB`qMkLS_fU3f)z)c&?)g zPsU1W6mZgO$MNp;eW&m*L>et>Fq7k#7DIeh-$8?hl>dr+)-v!l1I=a!I;Zs=d33s~bG`BBUuS`Q{=!FcM z%Jn^h_QHGaxBsOe3VE!7iE%ELH##Ds%48~Hs4KFTATrm@;7>y3plgZgOP{SGBx;Vg zM5y?G*lqZ?bKE=OyL-JW7thYphM--Uis0Gtuc!L%R#LipkYCVAffzdT-%rIMlef7C ziyy}a=31B~^>RL+mJts~Ux)Bic#(E1G#!q6?P}V7!wwaOxZCLm*$A4Q|6z4u$&Rtn zpeU)XhdMP*dB%!_Q)%WGdSn6=;vhkUvQUV8Ju=aKZPCg-TJ$Q{$pPz$Ase>!6h(&E zOPW1&8jDSGY0);uX*%tlXR-u8Ncc)P5d@RmzuzDo=~=Fm1ZSg!Dw923-u~8g#LG+n zwVx`l_Wr(3Qg9iai&HJxU@&Iy1h$GHPci+kRbU!; zCHh-Ki$x<3y%2;Y@y}8N0irFuN|i-JdDw9Zg^fTs|7mqM{{KH;nF8g8sPGX^iOD;j zQmEqUswEqkL>?OCKYZs{xNqg?T4HFMjm?h{hl)@4u%?IqJEEW_^r#x8iJGl3L>;VgCl4nr7Lqg9_)t`!~Q^i)DPEY;a!Sm_v?Gd4=wd8R$f@Elh}63gXp=%d?cRXO4smVcfTcZI zneNrjg-j+zg!~ZL#DHBk`l9AfavD8Y*W?D9!p?^V4;pRb`Lsq^R8PIipu2%c|JpTG z-v;c=pm%t6@TvpO3|p8bg@=j6K#jF{N!J)y{7;LEvv+MITHfLFE}!)G_ct?3!;)-)^~u^;U+oe+Da+0ssH*$= z%^Sp9=qB=iP{q>%6;VtDr zj*mNtpm!LW+t!AU!N~3gi^@|IzZJN9n)LVBW?2wSq zA1$({7;L75aBkWG_tz>bAu7NKT5@}kqjfxH=Sk$#!r4Y~7BqG=pqL0~O5h>|O+HS} zytP)3dRaGu9#lJ7Q#G}V)xARiNddoo zI@3bHz}04zEBriyJ)KrjW_e`>Yk{mC6aGM}d#Xd{f$htG^r#)ztfYj#+CGi__bx!I zXonEqdf45)uywdiP8d!q|H+e<0XHxq)jM9rI8Z#u9eWYnxcb4`i%VvPZx51&fwh88)yM?(f@chjcMq({o2ar)xFn6sR^c7fML;nXx{roJFEyZlcA<(^mmh)>F4SEA|oT? z`RZ&7&!jO0nWH9$P81^{_L?(kN#8Ew5&!cG+bF+~p`l=FSIP;-nmNr_O%q??S?V}oc>P+l}iV6)v z1Md4dZIlS=f4upTN9}YW8Rz#9k}swdxL=av#h@DqnO+IeVz$Kwu)+NdNRHQGJ z>4etyd6r?Q6m)^{@t-u`7nX@uYl4;w9gS*+@O^UwbLXGSshe;vnq~9qt53DuH{G}u zH$(XAl%b1po~dz4r!AcB!Mi;&4DO$~w_517{PL+TFdRt zc}~)dI5}E0M={Zb5yRmQ9~>`!(^TWpwb$IUAR3uMaPKXmwqOfW?GQ(ldob>G!FHkV zPrc4*k9Q|f9`pT~6CCRz4F((@XZS@s_NG^bJSa7Z2|m2bIxxay`%07O?#r$Hl`sa) znZNgJyTNyO^U>lxq>C?DS<0Cjd2%>?eqJB$*cbolUJwWCwpFuCi6S{$HtmoNdbI)n zGblj-mGtkHkpKD@OIkz@|F75o?Khek8rcgA6*;7BAcAUx-L`OR_Ov!#Bbr3$jw(``06e*6)3mf+b&{Wn1T?+?Qzgf5Q%{tL?2 zuQvUE_>H;e(Idna^}mnoa9N2gL*tZ^Qj@=r^y=7upAkakxJuzhA|vo^*16<)4SZrH`?Yl^uF?Gaf+ZY8h}qTBunImPMK zNUmjFZrctji?h)SHC)LOB!P$RHjEfbCOW%&^6H?sN&knlBQpyei+xy3E*9DlH0CG# zqKfXLM_(KwE${SX<jj(Z#iHu0kNtUcW>7ESUhA-*hX!&Z!)(PPpBtyY+zTfKwa^5afA^5#9xA4JQd_rLy(*8=DXjC7y@4dyLhb1=^sk(Cu>3i5RGnqzJEJgd} zycK0t`nBS$i@zv-%WPb8@g>$rVZpgR>ABVC z%UY7I$JiaOKYOFm)`srtN)Jbxu`1J7=lu-@{PDCGlpIJzq;#00G4Z4l<5!LO~g58mi~a zWOFdBQSd4L;v~jquM*YiX#UL67))aahxR9yO+{F1Tz5(<9{_0|J&9hPFLQEox>x=bPuB1HRy;N4*P>*`xE$Qo z+gFo$Z7+v%^bLzJCUmnW28%L;12E@IGcN3m>OhVe7b){@lB!mm@KEAHaa(}#YSxcw&mI!)qUz@{pa!*$J%~R9@B4-$yGDie|tR7#7Bn_QY|n*H@9IpEDHvHpPp3JSTrFat>cnOBME6&~TQ^5sHA z(2xG_*F*w3IzI~oJoShAProMuz!A_1a&*!bfN4^iHa!%D2dX!jEVNv5mls+V@#V{S|2o4DlU_Rh7SH}vmq5Z+KKVAXNHQf|?;JbC+_wpH=TRFCmB-D$?3 zZ;p;}Qh*8*ecAW%v9V%4(?bl(S$S(?_&2=uhHr|9QF>n8``gSE*`rq659C^BKM5`9 z;8e^?(Q@nLN}!spxj$Y+{L1_)Gku{QAt_;98@o6Ec?i>oPJ(AA_s)H%A>pT}v19Cz zNAIH@&d-CBdYp?FQ7^cA_in~5h^0IQ8P-Go#K2l7=^Y#WhJO|iRJ%p@CnZ~*mm!Il zT)2JM-22uk@f6U#wX)42;DiX<*v#w*$@P-*<79ymQ((MC2c$2t6cBWFaKX>lY;yEOM90FE1*T2#`|FrTU{oy0TQlzO= z^Oj@s@>fNu#O#|h?i@~DsO0+Pzc^+aw;JF;TwA|Uo)88}%Nkw&=t`?Tiem5&$gETr z3SQ8P1JT{~{Y@CuZF5o%;e5Aompt9d@z0k0D3~^mQvg0>p#L{I5h`Ed7FB(uS!a# z8INz#eyOIVb@P)JU>(CFad$3*`%0pfdAPasg_l|+6OU#-${?$AcppEDjeQDC(f%$vvbcn2mH?Nunh$26f?S7N3u+bi!`dFe+CX@qEIBVHYVKD@2o{#!KX-xO~ z-L>RW)|I>RMT6B$-AbOa6`-0hlZ}#2j1?W^xjPSgqc_#SMDFhne%9RPVLO~Yrnnd$ zyfuN>(L+#se)mqEc;yoe-Yv^Q{brdTmu6$DzAGl6OS+;C3nWNwfu4ysV%oSbH4-}G zn(54~&D2DMPQZh8xvjgkKGY}fMV*pQOU`S|)XwgMK&C@!%I)m)THL2kjYRE<;{$9T zGxnrmKs>cksG+pWdED&95&rnEET~G>+d=;3o4sT`>%`avRLQbihW45B_j!LCaPzi4 z9A*ih&C~Yk;Nin`J2%{vJ3sQw>C2z-?s0z|C}SuP9+1STrz@@<3Rxc-OX)s1$D!zx zzyVsBD|^jUITxvZRp;+2a!b9jI&^4*;^QyBCQ~Qti_yS|nh@nKoZodw8A~`6d*erV zI5@nfC}oDmg6dj@3Rfson58y<)3%$;%}b=|nu!$~5_kQ?hR|F6`F3zxPC`VJOSy@?13NxTj96t`(CCZF> z>C_|J*sa}Tgpk`B7t@R*{}v|iGAQVYw`1+dc$K2@R#7EM2eI~Fu8$b z(2dgXx51yFnxR@aJ@?_T=!|n&ZfB1^D>+fri#weHC2Bmc3Xn)yPPWcypRNw5S*K@C^vX?Cjf_&t(JxOygT~`n?5t>Z>u^G#%+71aJ5$~)uwM&*zcR^T zi3ghw)Wbez34$iz4@zbBfvdRgPfYSaL~aBf34kE{+Qu7t-!6r<4|$YQ81ZN`0{A1; zK`kSMslp1o${PPysXs?}u(wV42t*7euwjxoX*y4C|+fuF5n-Jf5B}gGy73CU%8bKHxo3ZfH%>zG*1% zC~0F@f4cw8aoC}kry#?EE;+n7Hd=1hXz6vq8daiY476+w2ZueBto&at8XXg%Oo%X< zJ;45rkB?tnXs>#Iec#0Zjoj85)YH>_#~^yCY3~D+q-mLf$rOzHJ!TKMczOHY?l|}J z)s~?^f$vYnk`+|--nu*-d^Q&8Bl7y<=(~F@l}dson`g9 z;W*nVaK*4%2-S>UjjEL5zyxrD&%2JqK{w9@2 zhS6_xL&F{uSwTDzcuZLrR1*$Fu}whBwC?2bV6#}a_?w>})L<#i*;YF@o*|0E7 z>4r>9)FA1NWvEO11`CvT@C%lt?c>LmKHTNT>-*Fy-E>zChIWIVin=d{qWN3o=WIgE32e#sT3*L*Un2Cu052cTNu@Ns1)>e&mfs|;VxdJe;BFVPAU%x?(+2( zMNcvN3O(&wadN4_9-xSy`&Le2=5wOnSEKnC)_VsQYNa2j+R%~ohsYshIf9s86$tGV z-UJys3?GWUc~b%X{R@+DvK62^CySUZz%7690?AgBvAkF)ft>?dUkj*#9BMd;_8#B}%k&`ZdWH$heQ3?M`(DY*Hz$8_L~Z zYr3Hvs(4FUj8ALR77};S)JNYywU~*;zTXPt%MG!CF=BfHw=GoGzZWubuH3TaBP$Cq zpetOlnjLaW9-uBw_gvloZH^+b2h&sz<;3Zor54Dt(%0~7VYnG8>4s+KxA+gjc2}VL zCSbn7A^^nY=`?5pB-tcdITK8m{tGU;ytVSnCfN2xa2O~_21GGy^Dd$FN+b^nnrn>||E zdq{VGJb8_UPs~S$iqZVCxSLG#LT`>47}(MiC9lL)& znqBro2M~8`NX!!_Q##^@{q`ek{irfW7a*PBWHj<)`<;7MSLQ&vdzWTw3c9kC-x>|Q zkhJDEj|Exk*Qypz-W^@&UR{}mLzy|*z3_>m=7_I94o+>8J_`k-eg68bMW<+r0&nXI zvTV2%7wX)|Sgm*qZIPC4==sRPP;a@k3H%$0hQ}!evZklr#q?jbdN{-WMV!PP_2mBj zYmKK(pA^g;HLv24Quw)A<^}QY=@KM z^~1I_)WMLIyhUUPVqWmstMRBIczQ~EG_tE;;$K3*t`cF_PMc&f9HG*1z8&=~DuNr@ zKx}XQDo#h887KzN(MPFxa10$ zK_XR4ZdUSoQi6lB=t88lnnScuG(Yd*L%vY1&@goEfb$L^mo+b>+D)z4r2=%&%_%My z1#aEX&rc7Z_6Q+qJEXf&q`N`7yG!Zr?r(BG z@8@4P$6kA_HRl|0UFT2{RTyg41$WkAC069E8L$fgNgx&kM7x*i$DZPo?EcZeykEB7 zuAiAP&wNL$ufS)8zzu-wZ(-~F^MOq|X;%$D5EKq3tJSwH+l@WHU8Ee6_i7tw2hF@=y2sK%NB6BH;Z^#EsUZmu2#OfL>G-LhFOi)M0Ih!Nhf zIywwQHiOR`br|8hzSU0S%FGO$(-t21<}|I?ISkOG0tzeu{6F8eU2dFqWod9dHKaHJ z*YM&AvwsUN5#N<^mjEboKuZO)!3;P`#UAcJWC5rrpojT0RU*XDH@q#)2pGYD7P&w! z6BY8ph;?Z_Pp>bu21cm!t>K<4puNrsXI@`@EjzCp2%|6`s13VpPAev)4fhF5G zza8QrHXY4)*-N?7W!KlisX9}pXKOV{ef52PGf^*t#YoI}uLKJ)br-A6f1ty+fr11e zJ%EECdH4H^pAM!SU@$;?6$SzhkPw!q&*ERf+6WLLcUx-n5hU|BNc#T$`-{R3_*}q= z!=CVPK>4w=zcez?yqWC9) zIN(#rvKY=NfogdDq1g1{rK`Z$&r-?#vPbeevwdq7BN-d>v1S4yDj6CqXy2u!C9v{q zaH;UvG)a2|l(4$zK-LqsG-|J%CkzHl;a@^SKnA!q4#k#fb%KTr2kKF`8M-D9z2HDp zSuX?;P$GkdA>9p-6}}B-LC8q_n8(UpA^)Af*0%l?;QGF-Q6J^*7)@Kj5IvIzPTpk!58oKXSh; zoI5{}+AfeVfR$=ywY|0Vg26??ea}wWQd&APW&N_akonxN1KH7kHM8YsY(WCyS}y>} z3Fkb15u_SJ*d62s8k`|W)>}3qp$u%9AEJ6;(EGWWdt%TTUliBiXa{0RvsVKQI*k{g zuELI*ETK)i&DPU~KxX`)1p=YD$?l@?Oi3Ws1a31k(;aAtM#7618U(I{B)hTGScsb) z9S7a&3Eg6vJgo07UQ88kp$^$wLjQsx7!wUc%`iqnf ziK$utAdS;HC1!Ey;hSg)Qy`iqSiOMt(gc7_(7u!sfPBq41CX3R-UMzE_v<{a5%Aij zfLJ$4)!%;gMNr#v>^15dz)gz6__6_{iF`$o@U+X=h6U}rKPOE_m|mAt!~RL^m~l{W zGAI)sDIJO(18 zK80dFXkSuzaHmW8Foa&N7|2C|T%>XN2ox2Qjn?4!RRkAo6<-cV*12E~!Ek*fjRZ_L zGY~z7YkKib_W+1Z@{4ls&Nq!fUp3f za-(|?C^v%$Ap8*20+f}N@xmwwK!- zeqoa)K3NSeuN4G^!0rKh@ZN201qJWUBHj^igI^GblqjMDBlH=~-;Rr@&XUs48d^6$Ur1JvLj413*(wm?dYEJ|*=49SsH%4$& zsM{u?0s5}rpR5A&7e^(aGl7uSnqfy@UPZ;kNb-ASeYjhYdy`8RUs_+W?kOFgH7Y0gf=3HH5E$*WoF${%n zyh$i@#Qe7GJLz58{O@Sj&n+jzXiPAlDUIk=ll;Y`}2zaYE~ zG;qz3GiK~Ml0K?QzF%Kp+b%iBt}_%1qe8^`Y&_%kUqoQL$278fqy%T+N00VFAx~o5z ze_-!m!Pl9`;@0qUG$Bn*O^{;h0bxh-a9HHI{0P3+hic!uY%ED+`0V=1p|2PoG>ZM} zU+L{x&I837k|BVj2!hLh?m?}=vG$BnW7csFc-d5a|~JOI2!xC9>IhKx92Ebs8F z(LO96;)}E{-qiZ3VZl%%J>lw$<^nNluLd%rj!l)u-OOx)!_ur#Y%^3l*6+)e@bI}u zJvk{U2k{S`e94JsR&0>E{Cxh5#A{>S6}4p>E8T$P>V`U*meuV3&Ue9`h1s&#_1b9O zY03C?bM^5o7C9IWzX#(-?IEPdw4=>;y^v_m>;2%c^}1B*u5N*I%SbmDRt>7!-NAKT z)T9cTHjcwUz5L~ypVkYEG(8n&Y@t@Tf7jGqZA0rw8!Z~X;I9wJI0;Z;1Ib0q$qW|# zCp2UV4j}zcz!n{sZ|kd54J-u;y2y3I=~0GglX;qc6O9?e-N`{$#Leao=Tj87=Sz{5 z*$m0HgSTB7H5n~`FY()Xc2lYeRhw)*rv#2i=2G6cdbRdg=zu%(bJ44C`F$Ecb#s)d z7;UfD=xVUX&tuab@}|d%rKMg6M?D&vIbOrA<@69{^!8kCZo)v6`?ijb?I7febvDzU z+3U64Oo?-WSavwor?GSXY44!LM;nE471Z806O&B)n$zlRenKoPLiC1SRO{Um#m7DN zY33eX&Sl6(6bj!0_i^2(oZv=<4J|Fz^&t9IUEVTb-58681upoD8DiXllLWVw15Tz9 z=uuK4_VJ5ecT9|jsbB9k9#Xc|-zv?D`4MWDQlFh=3=B3=^DiG@A=_HgjOy*$!3$Gw zFP)SdJzz&7s72IpD_wMiTRc$G?>~iyt6PU34E%7q)=>M~_F08QKS_LY!lr7G+aID2 zJu0~4@MzlQe;l4-F-U+jy^LFNV1k1LRX@3UqF{yVDklypjs6Cqde zO6eIhA}N2(%tXiQIo|)_^DIRGF68Jd*IQy1d*{{QAhyZ^=|-NIlNC;fy$B;*K6Y>K zr?uBMLkxX~1n(x~yj7Wc+@w1pE(^~+U9z2Ux$At7UCXFJ<~H$}{Dr%oSHe(Pc|rh? z-j3_eU|{$7wGjr}M1?yo2Xf?qy2Ry=DaT8gTw#>Em^ zz7^FSJonVzRz`aTc(ie*D|dvuyXHXeW4Nm`CFSGc^Ipb1{IZvyTQY9KF8&FTh69<`R8zJEfFhy1t74mWnyQ+Ko-tsu@yaWZn zArluDC!N7J&s7EHo8;zp&b9u7o`FM<=#b=!l&bW0JIj@LM@N;}>9i7A?Y#>RuVY&i zxmw>>OE_ZB_G%UMBjsj~?YXwp8Avko4Jr}%+BmTgFUfQdlX4yije>FS4cp1`MB)S` zu>Q7lVf`SG{J4Wt*A%xcgX`Y9tlM7shLgP<{*jsO+%U{UiWweqHF0aD`6qld!=tRB zW;17>v2)T-ybjW?py6G?hUrWf&tiF|L24JU{G{m7v}9NPIEf4Ok%$Mu)<;;$eWp+Q z3Get`?n|rbeQ{a9RWTJyVi<)P+tEYh2NE&l{rZchhq17{BI_7x^&Y+aw55Jysj~%r(vH%1r^#DJf=(xVo6HXg0AlOC%w$lu`H1rIg;6)4Mc(~h4R<}Oxs_=e=FX4GKE)Fydg;+5@nw4@2yf6Q21ceGc^gJP%>xwxFX4FBsNV?AraSGUzP*%4NZR z*m`jx_xMC@W(GfKiXXvmrkNMK;)N9Y?E3)N;uNst)$|jNJMnkqD(B^ zyAbZz5JD>R-wZGiB)g#HR&fQzU!I|9MsCtNgiu-j+h*z|ZB`bDm}h^JldAy1>cM;G zqPBJIYuRkM<&4^bfM!*VmtNKhy>qvcF5j63cuqwM?Uhk=wK(?Lahxe${FH}By+N8m zdw0j|CBJgln`F0YHNcBVH0SM{R6Q>d0rvUOy}OGOfpSYAvuk{{t;%s&8FY-C(93g8cba0jaJ zTw7A7HoSpARsAW6AVm=}L_|%gIqcVSh}e+gX;lySQ54m1 z>nXCU%V?-Z{)ie^F6*V%_dEE*f7g<{KJYY?sk*W;p9fX`*81zcp^GHAwo^OGamgCC zS@y(cJA2nZy0^~trfUw)DXmbD*<19Dixb|cultp$Qs$`l&t>tg77|^TbX%3scmH1t za1)hC05*n9lNxU#_@r$nXD)I<=$93e97bY5RL3guFm~sDN1u;u!Q3O!2-j&wG-7{# zc%_tr<6)}(D{4Qj$308Qs`eTnl^)<2xgWP55k#6=A5W6xrO2IwF{s|)a_z(oMa5*S z8#OfK#7JjXy^|tFMP}B;V#C|&pP4b>%N$`=Dw**npyHJS5J)d7Jmi<2q~LA8oV)$u z3t?qk6jy@*r)jy>xF5su`F}YpmWQ{A$tIy~bA{DBD+CX;+=J06$bX;i6!(R*S0S?Qs41&d`Y*b1=6qcEI&%9ZOP|Ce%?B zouXPV;Tau1?)1SaqfTGDo!Pqa>HDZl)MP(o>DZ}t=ep2nF9>$#Nd^if$8^s4=xv6Huc_I4? zZT|}GCc*MclG5Ma$jHa_2LfGozIfa5*Y_Wqf7U9C>vrVf($(CDV2~sB)!fe=pvQb; z3a9vCza2!+nS|;?R~KDWtMTsrr!=Z7{`Z?pA3OPJVL}cUJ!*a5?GMRn*-`KJk^0|U z7ylrj3n|@I^!mBpHp= zxOAFehn=mpHnRdQn-*zQlj&aPrbnzPgNzOW|F4`<$GlE3HB~Fue6+guiIi=U-L>|W z-z;xBj{hBo8IhD1zxeC-v~g7d1|!`Axh(p1T^1z@)7G(5IxK~|Z`}OxaIIQt1dh+i ze18|uNSSD?-Y)O%+P9Q{7TueHg@IHl$-}eoz~(lQ3`YkHi-!`>D>D%Bv^L0J%5rJi z{GPi~*6KYQ8WI!5x2y=?a7&K9_7uR+QcWmx<_WS}(oQYWPzmEIm2i4wqZsWCZF4mH ztEb}TcqHH8xq6eEc~10K*=bylpSW}4y!X)OLzR=wr|!mDiStaJ#$#n8CzoTzO)q3j z2q|EmaxcR&FuA9`A^D5ZeDFFsvb~nk5T5=#%}PPo=KeS%0BAWWpAo} z^l*RwcII%jjw+m~VTQxyu;O;xzjpdb-%>kS8#n} zDmWRj;D3^~9NY=?tCF*N64n%0V?6hCZl=prj+fZ-fVRV9Q{@3|N9!T7#-XqMvN#EhF zEJI>CER~!VBWF8d*B#@)_~KMKo=V}Q2>Rw@gHH(e8ZH?f7#r5h?_d+u843(M1@1MR zer^|IT7EGxJea=ZOTdOIQs(GJTlZ$ICheG^GoDvUF(uGMf`=0NO37U9&a=c{tjMp? zQESG+&2SHb7MxW|(~1MM$VEa#nF@7D*gt_4t3kTiH7)QPbfXpKPdw5WeyWiMY(uL@ zBC2}DB$^6js>)qH`*PXHoQBv45E1_bjgn(HzaNUasX1Dr7L%9pHg#l@dY@x4*H>D6 zQ<*}UZamdAN~&N##pR`=zE&@(;5jiTJ!uI?ChRH0#rDF1KR^uFnzv#Qvc2`pym zk%lV0pZvQ{=8x}S2_-vAL}Oo5KtpD^(q{$tdwG7*o8qH98nG{JIOrVOVVyo0HZ7Ng z1n4ejt3Oz|W&*r?eb278aa9C{f2z)V|7hu8Y@@1o&$Hw9@tyY432j?n+xD+*QQ^Rw z``ZK`ez#De^88ifl!C4N^d!r&SWX_8>jsP-RpL~5-)KQQ2DB?O8;Z~&eU%TOg;lKE zvapov90BhEs6;Pg=0LU3F{*SQNCzH3e5C5cp>&3;)^LsP+ z@2GYk6;Peh<-Z8`O>)z0jXP^0%4y(_%3=HW@@0tg@USvxP=qoFQE(j%>z|kr6Tj8T z95|2q>V)Q7*u3&1r3YFX-Jd|_J`8Xe6$%icA?oOK+qW<*RfH6BrVtS!F&J&D3ciJ< z2YsVlOrzYuUF7q+$Vd`Sc2_5_z-dGX2$v=hZe^sToTZcL$UHh%ThNt;c%54Ox6ysQ zriP$>*j6587hlV1i4V{CWsn`EnX16}!-`*ty6^bsG|#P!fG;4JbCiDp2VlmTL$%JxYL5@_{dOezpMX@8{e~yZJiNcuSH1$<=gD9I)Y?_ z`QJ}U?(Ud63?ydpg&_Yj!U4d=RZC`=Lq)|V+}642`s=Xq`fPQZ2OpF_xgOu!ADjHK zPRa?e{*~M#-zv;aH|{G2I{FYVqXeCv+~XG|PEo9M%!>Ahf7p-{qgKxZbbU#5X20n>_i&cLjuM|+CK2T!;&PQ5)_R{@u` zvVl_T%bF#;pW9ppaikB-D);Es!e>bQ zp>R{e$fT=Rb;zsN++OymV(gMR$XwDW3jrBM*6(P0W1XgdmYPX!-Q2k_A_zvpnYS0v z(~Hgaop6qE2gbo44t}Jld7q6?r#{y_ZU|{{g!N46&TT4Dh=<54V5zsOp#e_(Kys+Vbex( zrf<%K`8WfwpDj%{`k}&^O|Ypa`f2qPB~!%?Dww^8s;)8vc6bl(BGeYKQ4+q z@GX6Fm_{Pl{=gvVV2Dz}7uetKnoXli9x74+I7}C8TE+-p|R$*ThV+0ORge7-K?EN{a5a zds+D+?z|Nqnab>N3WF1u0Lm*TA@7x?htj`H=xgn+{-jo@aIb55#>1KT^#NZ>!2>|4 zR8%IbfyzmYIMg9KkxB3EZHxh)e{@k1nCS*EB<1r~pv|dUR@d4pVA0qQx&rtrXJB?J zK#U$cGyusB2K=kN{r$~g=4wiAe_AX_^2nk+B8BE<8^NL?OHTp*BQ$l9j~byBCPwP2 zaOz+9`CWXFdmqIUER`?)i=aQo7iqGnLYyG@?e*qA3cTw{7^O@F9-7tJ30A{ zvB_yk(9L(&d{$ZgU8abPAMq-YUWF;lZ6n(-zMcuNzKROrB?yoyttwgO z?_4$tElWpZ9HxC-Er;^wxMiAUPazBAV`IwcGrM}|DsVZND&&;e@xrWue($sfaS2Eo zmRMFhGojIPBt_zVce45`5~boZ&l6YHn>}GWkjWa~o{7BejwE6nGxauh?9FpU;vWm_ zde6fC(&)B{mQ$IN+%D9+vu?=FxqK|VX^s){{$<P{~rS?1kiM3E-hAVWLNC)d$q+u2JC4ez2FY#41Nhf{`pVo9by zt?L9r9nlW8>nGz|KfXz+MMnmHK()SgTP=V52(I~5pY+YYdIk-9&rw_`>6-fO85^BU zCHIL~`wAR8O`4s40I z^mnR~6uw+s0^o=yWKvyA zcYVN?t|Ub~`Z=^%>dJk{4O2xPyH#w3}^f*v}|+Zg^>SR*lSV&<8<-w}F8 zlACqVOasqr&eutqq7t&j*(!xamJd%xq0o?Lld54%|5=_%yLUNyD2(SD6C?UqonvQ^ z9W&ed)E^;ulx54NI@gMmDDP(tn;z$DC*?l9?@St%%`Fl`b%{z?_^Rc&h>s2tNSvBa z&!?)p`$;01O-ZgA^X{Y>X?-}Bopm#RUlHuV!C3jN&Ax0{zx+%ze1}(0sz+!hJ`>Ym z`x{kicbp68*p64100znIzDm6CPi-_xq4zFac>a(qWXmR~6!pcR5d#J^Uh+j@GNbbS zu~(&5QLGnnBV=*i_EKrGkdMBy>Zy|^6dJ@Ee$HAnaov>^Zr&xMA2iVp@P5N5b0m|8 za)ieARtAz|J8I)}^3Bd{O*-R^?Sbhdisa)`HsKYd@PAxqd}EN`^#|~c1__Z-WJ{5v zak-x8AISWW{s>0NzKx=`pcd)_d`>4OEJ-=;9GWP1J|nKuwDr<*b?^1l>TZ#EIA?yO z%#qkl5t^j$_z_T^jk>>!Ao56PW6p2a*}moae;k^$SeY%`2MHnTXw+(bgwFPJcZSu< z2t(v9!|jkJ!l}(H<69Z6<)yUI%9Yw$a{)P1&9{2&%PhNl1s{Ai7oSWUmzNul9UJPK z<98@A@otUd01h1JtvC>idx9%|wt?dp>smGC{_)?OvwkU68x2n*D-0H0WkY9jP9 z7^9aJ)Vy;2)@;emeU2JSPE3cbl{6gPlw9!oAC7w{!l#$6vK2-t@7%>5lmB#DV)>ex%`*VX^T0&PeK^;e6;ULMYH8wMGQB` z%l6l~k6?Y?EcrkE5D&Kh1A(AB%(Rp{e44{YwS@e+p)OVlo9|(XD5S zV?SmIpR?D{v4%yjSsR}XKz(FuVHRQ*g8xX>^)sB<2ubK8#7V}yi~>!Sm*7!G2A(Ve zJN!tuiYvmhNm<}6@_3mFmcZ0gZ#6mx3N~8l;TZI^B#m@1?7yUfs3RW#P;^$UK!2}* z?5oFY{T~G(DA*(4S*seDJM~-l`ATK)Ul|qG&RQ4GAv#_x$>8(^qEi(`M zgDqwalQUp8Cc$f2?KE)Px!;mVXvH)w;SGz$DD>xa59C!8a%pyz(`j1Y4(p9EFPZZX?Duvzu@p6DL_HJPF-dMA$5ig3|H@xG80 zhn_qtx+O0PvtU?kn!0e9=+7Fqkz7rcL8YX}zh!|qU2~d`247&Ue{#PWgogG-l%R9u z8TI5f7Kj*IaHfS5aXKe8N>cfy68I9NX&Yjj7mykoK2Rh|LCOstP?{d)mK(lp-@s~X zi+-me-XT(ffk0=8(D*7W5{Me0S zoZTaPjpv7%@7WI#o0f|aLebbEcx3R5DKl8vRxm2*Km8Ihfbz!5DH?6C5?C%Pm=uDB zs_DgirE(@j6vFutA;_KT3<>q!1ouY5T0p5hs#T)8SFJ?T@=q+)x|Y-`CQtA+G#y#; zsSxpRWoP8xe4`;4X>9)@*IT??u7V<)@aw@dP6;}L`3F3F78YT3iq7TQzB6fsp`IK0 z?;fJvJ?XEKtSaj9d%jmB8|N?bzB4PPd7@!E&&x5EY51xtJ06)Le7LU%+O@>oI+>M2 zjJM3x@UZzsg)C=9k`kd>n8Sa2<|aF+uLmN;@x^fxRekX|&(};2Q=f2(7Ge?wi#~-bU7Mdu zGF@OqyYjuF&@v;?xF#QnFrNPKJ2sR!d6ygh$Q}hg$f%wiVzjk$vE6T1%7`(9bSPe^ zZhhi~>gGy>Y7e}vzfa37Gwl@Fu%5V*?MpOt#D61q|PiRhn!IslV z?L0c72D*Di%Oh??gb{2u!@G4U^ic|bStlLw`R+>D@ZZ>?@A8z<7Rc%F4G~l&`q8Ji zsGE@+OEZJHEKHJ?b;Rk1jx+vL78-WgfW-S&te6kSfk^0QBlW0l+knx*Mc#T5&$sPE z|6q8k>kh^AI{2|{^PX`2SInW?i_XhCN1fEyH=44V*tA+_2&F`kn7tw7nF@LC1duEl z6%?j$;V+b<9!_4B-Q?u{=yxfL{9tnNYRg>v$6k9vbwXZx44hB zKbOTQPItRS^j-h3T>UXOAX?BMdp_OvqPur8DBi9a$w;KnHSpJDbzf_}@a!aSP|-#p z#c+esl_3;bC31Rk^)%ky&^aH1o4WWrT$Z-Ua=DF#NB2XU#b`yc-12=v7_>n`VS{1{ z;X|%?2bfGaqoI7hbf8~D=9FGVnLVIr3=O459VR4WPK(Fv;Y}-Qf*SUmP1&e3fd=nXp6D z{_4|D%q9DPM5c@-)!HvnMPz}Pq3?cLbL=8dj@_` zbSh8ZKHW%gin*EyvP_^EU0I@{HMB8f!72C&@`EuUC3v9PQqy$%LuhG8G$+~A#snpj z!uH8>o6O~3?WMd-yd^fwOg=S)z#>Rc6*@n~s!r96fy`hDbe6%*4xWKjolO2|-X zpH|w&*BIpi2ZGK6l%Qu!GPUYhLIbZ>6`P15h}`e76jrlJ3BQ|8ZR9ZoK}m}ewC{7$5{%RFjasId7Tfuwv8sMzl?9%vtpV{Ds}#i7055Xg zN#{dlH>rR4@4Lg_N;EK;qn)dZhgbc4qvXo@MZGH6hVC^Kp_N(+Pm7xqP(6n=_sZ{MsoLg7ul1gbm=YXo6Xy~l%K?fd4aj}ANUTe1pK{*pRD)y z-VL>so%#LE;8FM4EB9KG*4u^t!fl>b%uYPodX!!JCL@7>E_ctR5h?|hc5YMijBO0N zWL?>=m$2{+1_V;mFyK7xb1w)SYdkn^HHt3sG#MMZjTq{>r3xUZjmbGO>!O{wOVIV)0D-dzWyN~ z6`wj+j4{jcEW8o@_Ta?!&T(TLs$jGtP&~dUq5R;vUYksa$LVpDc7t;V>}L@XP-rGU zAii+rdI{U=3?QH5B!oKIz2p7n3;z*~9C92a1l_}gi-l*?5QqkOD9GO=58KoW2;lKm zn>;G|9adT9piv8Sfu)YSMDVZ(4HGuvki(SPwn=R=h%-J-9o#ey%ZEqWEEaixZiOAE zbi6>=IV|Ln1LP(alnhPL3bHA#k2>y%CZy=}QA%#D5|i%im?b2eEIqJnvhQOzd9kSa z>^=Pci0G>Cy~l%C!NZ9ocI>64p^+V?TnTBVjxU>Spd!@~Z^Bp~GS+txnA>*r>E> zvfK@$o-5JKKoXvGtM1n_@VcmQHNi)%iVCGQn)ncukJfxVrS6VfH@6YO1r|@7Ugvt+ z(A&7LTC2)%8B|rVG!nps<1we;>iF%Ii{SC)ecos5s(EJ9SGr@O3by<)E}cx_M;TR( zuHC)Pdp>8#1MmJ*ic5T_ZLYndYdD=7IXu?Y^*+VKWsJrvRaMO^&6NmTd!WW6qJn?3 zz46muS#o0gPnKfKdcEUFk^Q9JKx#NYii67VX;{MH)pSzFePMIRJaLT}S${wsB%6eT zNS;SFx#NCyt1NkJGNd%2H71(O{TP4`pApU^Lbcj$y!iqwg#ProribB_3f0G|_N-Ael|n zK?fSuosW>O;n+eQ60iHXAUI?cc9q5Z8_ZFqO^pP9-|Cc2vg44wBcC_lvx9#e+H{}U zww$V-^O$z_5(SgnqVxA1tPij3lF%yWR^=fp*SE28f~A)77C{Bml)+Y;XwZ-V2+pC1 zQgC6lV)y^o0ys3@H}kR$+HZ!?Nw^=@utU(0dhzei(fh@X%P8bd*>(HBux3TE7sK+# z%@9C7CczG&)r4VIj@gXrC$;q!|HIKJ{-zK)uh+#`BDHxwNG`ZX7B!#(E_=VWwl`ThPjP6~ZB@!*bs7hUjB^<4trPM(4j<9dB>W&Lu@9 zOf6*$wp^yT#GtL=^T+edT^S%pM1Z`AqFZ!r0iO#z`+)$NI&TfZ{@hP_NH`v4lxK4+ z#-G6u1(C8kCSCQZZ0JZ!B^AdB-Jk+9je|tZ8{eV>%xsG6Do zy%f&Z2sC5ba?U5mSRcj|P*A*xj&#et>1xy7w)7I*dX8Ml4;i_-i1m!ff03G1#_YJU z3_F)P$9jIR^%kn~pWvv(pQ{ayZ?4`u54WwAm19+-ri3IVj>mtFpwE9kmt?+Uigw73 zj)_r_mzP&lqt0h`ac7=Xnmr!$f_e=(7h%C%C&+MVS{6=8)uJ@ln|1v|GaT~!v#B-X zWNXhxI7?K4*VV=eU%=xe4W#}{Rk6c~P44y>MQ>Yba>EC#1vGdD#_J(DUbefbDT}{) zmOit`)c)G*c02Gbo0noLT#94l*uOHx`bRK#;E92v7y`k=Ol;zp2~kfNU8zarNRW+M zfPv7FwFIXT4W1{47{(V7WPDtT&5ed6aHnH3;G{=GN8Sr-X`N|_#M4qe-EFDObm}1A z)nr6wI%=yFLIrhC(!&pA=^=d!2`>)iBKap;Ziu>{j>iLzLG*yG0wq8miPJ^ z$!PRK$;j(uUC5r}2o**|vqSKhl~WehWFoK8Tm@!^zKmby%Wg}j%1~3L8|Yft3Z7%b zv-DzCHNDHYq{`4cE1123wZN-@z=!V+ma~@PNy{IaeRmGi#yJ5IE&VAo1UXwK?W8ke*;n+AbmwzC7 z3SG2D*29ot5xXk?@}ar>w0-BJ1NMiQwcM(&9p=Xpli0B9 zeLUh<-2@+}7AdOAo>5TUZ`Ac)BF9BXPGSbF5D2A&+P z9R_;j50XKGv32q6ym6?w?NLhP4J|kLSgK|3v%T1=bH?zo?r$LNnq{->)s0iHs-$@7 zdID3OeHl=n$$;Dm^F?gBJOSQqDIcg_^6GX&^X?=ym4xl*gLA6cw0dz~%P>35E}_yC zBIIhl!Og(gK=|($rjL)7jAu~zkd-r6px67aL_}d0IED97ZT`@WC~?C&i}p)QDEq(Z z5V%&*;FV;WCm^iwxQg|gF4}99-}z$p&He~m_;vd;I|s_PTV^Tsz%oWZE^TpaQreHu zGg1F|lH!N83%GVa_t*i`?EYgWjCSx1zYa*h0P3p)bJ|lU%@Le& zA&DX}<@}hZoaebSx{F10qq0+Gk()xCOR*79q)Vj2{xnb@{p?K5YrVK0)L|r!9+PLq z=q7yCs0nU>;lVY@QV~N4O^C)Yp9c{+?rL}JGBV?uAA{`ms5LadoODN>?vw~s9_=S? zJ;ankvdbSKr5JjS&nl++4;lAw76h;cvcB(~Yh=4{!a+X!6Ty6TFsUlwpIt_7eyi|z z+Sw(Xho7e0k>@p}5H%Cu@WgUq8$pa{4_D`7)N{jXhjnIapAmLX3IAxx zG6j~tnjnTH87bnW70O`lG7qG$qVj(Uju*r zbS^x~gMh-=MTEn)_BJ#C)Z_*qcrTLh*f zES`|?6MvY*Jsz#+RE&XZ=DB=#62LT4EzNlPa6UvNbAYB(H}u7aj1wmr7%@Q&w6XLD z9xkj=c$4WcK^pSbl>y{#aQssrrwg(m9WEJVrq!uWHOZ7R%6IPrCN!8YzRz;6&yTsW zzue2y_(ogn(oSzXj_S{3W-Ji)q~I(|f0Mw!rWD^0w-qHFPlm}npX4Ka)#de|@Jdg$ zdju2C@!oDZb3$vR|9pf3>qDxGP?GmU59sKfQ8~)`&#GHgzdla?naQz(KXf=5wY~zh zQnsSJsukbdd$;KuOZQnm(E&&BY2upc)iiDgGVjG&AF-w-2kGb39d?0ALjRiAtd%!C6t93BnLlMLmr!tl`L^!k z0P|Bp&c>xdUKk-Krq<+86y?TvN))%){0%ZHBv7TO?t!-NxwkCnb#eJMJwuFg&A8v8 zVd64;@uWDS2`m`vYAuXRp^~;1#v0vDhJ<@J%3`lrVS8w^KNMrA0Y#cOl`$MXgM~PN4^JPTU1wEVB$7 zQEMFY{W>~2v}_toz#!EBymQZB9>p_2L2%lxAVX3Lz!3P8x6jIWLx)DaH}9MH!=ky7 zCy$(3cQ3`>9v*MEIDbwq(>Gp#&z>D^B3{2|WkuvF^<9UM7Clwy|H-hw_3Fw9kTlhJ zeEOH+G9pF~EQ15{l=1e=kdxIRuOYOYYN(HU>-t{TRpCDqLvWDtOx2VGE%om;elaI4 z78ZKbY<{O`sIf}bN?B446madeYSps7xLH|&g;zMfdFX<-h5}xC;H*tx&;ZzgEjunS zSPHmJU#9N>;Bx=xfbO(>1hr+>$aR}FHzYEbCT+RTiaOs#gJawCu+NNe#Euk-Y9Y}} zqWBQzV#St=bmp19HJ^Yh2W_T-!gA>p8N7`3dwtst-BwC1y!d@LYor+E-n9^4G{XvJ z9>My{pHB4|!*=@LFvT`bC>(ip7jy2Z?(;YGW^l9Q;b01!dBJ=cmEWq|6sCqUfE)m( zAA%7x_h1g++|m-C{A+w(ln{q|Y#^wYL?yL4caI#d)v*wO;=<9|eh+w|W9s>kdPT zS;eUL6!9E)^R2D`JE z-7{7$W?LS7_7OaO3Wr{7`|#D1;p)ikL#{5yv>+nIUVs!6vjCzI4g?b61)AO4gulZ5 zpnUzc`Ful*{SU!dDU!!xaDAWulooi;wEy4UBKIgi5bznyycd{{{om{2pzo8su6dmTmS zo!CBn_qp;|icRKPhMFBV^>)I%A5)t@)){@D@?BIw1EFI3TJ(H4D29H3t7%JP$&3W< zH*XY+G_j~nn|9l?n05E%f{f#3&cRVxXou&+i$w~Is472AsA@Q<9DM8ZU~iOVP5Qrg zikfb(TR&#`ZH=jXo51l^ttJuT<&j%dsJn!+&ySx!abXOGp!fZ|e{uW=bKq?xeoXAt5qlrq9?@hSEl}MP>)X z*`=tv8%srqFM7STu{&+UA?q^T#Uu(X%nx-h0fp|GI!Ey0yyqAOa$dz|h@D zN_Q)*bazO1cXvt)NJ}?JcXxMpch`G<|L1zY4i_^pXUE!WuXW$|-=&!5(|j{oQMS}L z#y0t$n5b7=!HyLAlgV#xb!kix7i7uH{?d;%-@4pyJtIwA`(sGfo>uSTz^4Dj8gREK z7##>%a_#wJnfdQKBkcD|vX{r^Oir5FIs5UeJwB^xspZGaGO=cG1mQk`N25^@aOfx` ze^HwAPsJ5w(6Y(pN1inoptG6|7kYMnm>vt$U4KxcVKM!0?=o$hx^Zf0b@t?QKG%iL zv`3BaR-bLzu#z_Vvuf+j>;+M46(q_)frdj2qQ`D8X7+trwbygSwkz}`^0baB~ zFG2@kqiv)={salj94>bLt2x z$X#I2!LySp@UIj``VqFHps!b}?0u}AS2n_KVCXXTP5z7RF>3Y!$gAw5{MG2RG#m?# zu4^Ad932mHK(e{c48nwrsbT;86}>{{;88Jcu=g!{zbfh znuN8Hax%1c{GM4wxG*3%Qqf_WqlYGxv2(-Ime0+L(1Rsmocsjfco7#;r5CalSt$<{zACU z;H+N@n1B)-@Zb_}G{|%y-?F%_XRjHeVA(hN?`~s5EM$+j+&Vnt02}V=pyC8YO8~DkQ}Hm7F*X%j>WD#hI8s zSBbw=Zf&*sD{YMG;)#2dsv&Cgs5{hfp*#(rOS!UCKQ>N`Ei9Khti@^zB+pc|XJ>NT zzqK_NUw} ze%44i;xLY$bNawl+K<<5K5cMz#ur7!Fk6l9_$-6G2(!rMFpN{-ljf z&q5SBeE6I{Fq*vjGQy*5p0mZ(B*0wpIJ>Z2Ad_|!OXGYuwsM#Cso;tyb)ZpcArO8& zitgJOb%X>9!b!IB&+jt7NveYS^?iHjNr6B6`!B65fD4GcMWAOVzdtq+cmi>^F#a9f z=Eq@!`^&Gt^9GI=gHfxNP43<+GJaqgMNA!gU0t0=$G>IKw|!~xIi!$y`Bxs@p5DXbgm2uz8(JBN_Qfw`nzq~-l82s7onzbl6z1b2`Hli9|pCBR&%IDqs z*dT5OdQtF1ceywsN;A#}V{&yIsfX#0Wpxi_Mf*Jy%my9+$+Y50kpMk0qB7H`pvVK_ zXxeXE0k=EuUT?qO$`TOv-1IqsZn^7jfm7MUBCQ;c$f<|<8yF1B@v&qV;=+B3Z;R6j zT(9S_R=PKJ9R&f=Q?h<$vG9JR^AWLt@KQJYxNo>@rr zNCJPi>dWf^9vVr40l)uVdb|!Cupzl{q&Npj5?B21T_F~n+24EewZ12n7BK*@Wu7NV z*-l}OvtlDmpm2(Q@8Ye@tk^N^1Q0w0_7;7-g);op#HaDuCACIH zIsMK5e3rvpw(!qrF75=k#GQ$=p{5?w_&i_84}Y6pANRSS3S*{Lcz1_!H!npPAD*&7 z?UY@$ufw#5bl-*V{Y3GON<=81@|A`)_9;jDRolwrp=U;j*8ideFO#!&yNZ#ayU2$- z@=bDYNjJ5XP|W^BhmXYckU2fg%sDghGB}Xl<6zr4^`w7SinQG?rbt0^G(=Xb+#vh| zhW&20qV*5ghM5+~cAfIdS+HmY?WX@hfByDbl&P;a*5j}=-Kw3Q9@P{j!F)LB$CD~= z3x|LCDKsPH_M-D4Fkh*KJlXn0YSaZy`t(>7zOtH6CR#YFM9`RNth3#gJjka))OdOx z5l%aKhBrJ#_9l+FHW39e-DHQHc`RW7P#%+H8ImwHXh2uGDaqtXY)MvR>g`ezV1AzT?R=(eFDfI=3 zRSd=axDkXFaL|*r=12r|mR*udqQ;J;W7x-6P=ePj;b7t;L@y+DuE~zqPD}aQvubo| zLKrR5Whm05OOS^W-$MD_HPUg5HiM(;xv9eSpnYska5rKmp{FpBC0{FmBYjbK%Ibl`P7w37k z(%>)Fob7bKsdzgu9g#-%@eiwr05O(M_Du5j7xaLOhI*_XCsi9VV6pl=&G{3coX(>J z{y->X=8B*3@?|xO&HK<^lXZr_jzmN4PqdZEd6K$&tIG6Ecl!q}-7tk3Tzf#%bsu%$JNo;D$mOlD3<9$a)ryqRs=Xro8y&Ng2D_7uQRO~l6*nQhH~Y%3T=Ov5 zL^Wb4wPYC-l4ifZ^pd_7+)}*~xjp`hzIbq^3pO$;!zO12L&c$D9^lxJ3b-^5o z1XD!Mq4{>MK>l@}5*k&tdC*tj0DgID5dXMVaXwv*eW1IU5(@CCoU1TG3iX(w??l$V z#lgu6V_`-J(JN7k$m@h0^?cWP%)`gpCSYWkPhG_^nSZG+Lw!6M@W9SoysK`t-CfE2 zT&;R%F-jZJ>^KU)J!&LuL2ADxP7@capzKwT6upN`z#==~pkc1Ofxjq~uzNeQKogtB z&A9lhzZPjinPeT6wXs0I63J@J%R^!<1Jy(BN#83zN$2u?u~{A%!uSs z^TtFpY?!el&q(=dJ@Hs6kYn{8_P=F(hQ(>e?K27>!(4jy;QLJm zG6tY}CgSK&E2KC%Y0fJJ4V@>(ld+?+d@O&V`Tw;5C&%+1H@JG1N^YSW(c-t6Lw7Uc z=6NnkVvj%Ik-N9=7B3e*^58bi;0)Yi&tRPt>TBXIo0|ud{@NYIH@R#sL}0JlB9JX@ed_yn#; zQdM^Yh;`h3%0@6zxiPnS7=3Ljo~6-g;(K9Tgh&1EL2Lj#uGwJfk|p)YC3XH#4%cny zf~r&W_c`Xx%*aVgaM^(|8JUsRLnFM&B&-Fof8H4Un1o1Q)=Tos`D8}BTFbAo*AvhZDzKZxMk|f7(Em5F)lgl zcCWPkN0T?`*Q?gO?Rmue?OQgEJB}E|Lj?~zGPP|=fynA%f3<#!M1FO@AH>1<^)!WY z5>?gXsnMpTYnXU~xG;=DgdiCpYls6ks>ffMCGi88R^1ht=DvD1oD{ifX`giL=U&41 zpO|Fs`fMG|?)om8g|KpQbBBr}qfMqIM$=G&`xmEA*@JKY9PXsVF(&%DF>6{zy4|>} zx!l63$)qe2blPIJ!!$Iu!5>eb5^akD<90VMzvoQYjEZ(xsxq~nwhdd)f*Y#l0NEn5 zlV3Md+H7Wx%>x8HAGZH`2&GKshA*xu`50W>D{g$GGM`CbK-c4<&5Rb?;_J&t(20p^ zAJY5Gs$)%`-(W8>##rzYe?jWYr1MnV=C+>|JUKS=2=cFAU(USWlGn|cFg`PC?WHasQgbVS^xu4F7u>5*5Ob8-->QbbaKaq4!`z8@Zg9Ot9UOFLPSFA*P zmkK}T45iMP=BSaXiX;P!%c{6A3__J(GWZ;|ZPVJ9JzF@1$mlP5?JC1K@Fa!w4`HUZ zs=GfO6S<}AoJvrlP56esHp?HX^kPrJ`5#o>ci#4XWjb1D{C8Wzp_swYrpuX8Ej&W0 z>wkj_n0Ljh(ajzkCAXm}YAKg2f zAEk)|N_9`4WCwX8#T9oo9Jhok5wV3FDT77%Th?-5v4=DQdxD=? zs(!&@jQ467?9hwf8Ciz`Vt#7~+?lj}nc;odj+bYWII??a=~?^YoR8sr5_jKYq2_`oDRw$FHO>H(%wPxp~ zetw3{=(pY#oDtnET}1wvxN7{_U1G3oo%W;EQlr4oWb1irMCO>!>f#mA&K422`%9jI zK>gj-B+*(}tvL7|giAopO?>6}PSAI7qN%`+J*+)s9o-5HL=CvPk{0}g3PIz0{>|-zby+ce znn}U`N}udm`6}MI^N*A_@-~pzv>qwb>3W+@H^zIasDp>So6b_rTFHBQ$)%=G$&w`n z5k~UvvH6sh6Ka@79#HhFONwI3KI#^%Uk2u9R$dL`5 zP4X8t5U|BWsI4wE#&!H8IvbWYO2>V0ZQlBP@GoDp?eD2tNsGIv`Oc49%(x#03KVc% zRhnNqxzdGaU%Cnpr%##wZjUI^L-W)=WezX~47$ER(|>&8vdDaBCE6W-B~XL)ac8Mz zY|fr@dNAawec`ZxtX(|?*SI3ejFz>%F`z^FfXL%v9v89l(|%QNnVGlaGoamT=FCV_ zOk#awDyK^{GHC6kl{uqnf}!9Asf#!ud1SXB)64B@_xKn-bVUI)NWYzCSq8dH&(8f}#)ykx@fQr(ow=!;QSyI@tR z1$8pj`4=TTY8$_u{xTrO)T1+r1;~hw&>DB~xpXZJTJa;C@8Lo!!J}^H6oQrwxQjl( ze%dvBvXArH?UW19k|W=H#;OiM4Wo;+Ty@Ppm_jC5s^X5vs} zk18?7d~r#Fkl{&IhZl=_i#5jPrmY#IcKP)n66qTUfDg*(ItAzMRD*|K^y2sIE;^JZ4YUMMM>l+ zyyt@8QfP%3wg_$N}K#G6Im1wPa; ze#80!GKEWunP2iY#`q1*7B*_KC9DmKhJK8=_a&S!k=;w*{iX=j;T~VOINrw<&#+Zg zvV12&&=oGjp6MSA1qf09QGLz5Ss}~VeMg1|PaNZqO5mT2qVF}n`G-!|)Q8cX@DpCz zNCEE&YWi0EDH$+E>>}*5IDi(q!zs%|Q(2)W?T|8+dJ(Uh1_ejS@9&u1BNQJRYX&#k zn{dWZ-rQ1hX{-{{liK%L7ZC^wyU%7}0}A8X={|U~A*qyx{x;dCwhaw{=LbX@$b?64&3oLI!n{B8YGTF;L=D>TM@uO+%D-NlqPkDFEKQ~`n-;<&>$hD4$X$!7 ziOb;Ksi)1f_x;GR2sffNwgZuukxSaSyZIasWz`Ckaqwu$V_#p{0>Saef4qd;rP^T; z_Y-sy$r4uba}Aqu@J?v}yaNH8zZ5Q{eh&@KUF8!s2i{qyUGEg2*y^hRqJFy72!>44=zrcBmoJ@1#-sNY$y z%-$0sf@a3pA!K3pVI>uD5RT|3$Si(cBpLafns%06QU9)(<##7EFp(|UCnuw{CC_%} zJv%SB4BrI`Vn8H)MrWeV^CtG1%NA1oQY7zloY26h07Tr$7fT5h!5ct+rFM7L!>k9?` z7<=+Kz0dRp!X+t2c?b5)yX2&J;umn*7g#fz8lw7XARomGc|Y1n0Z9+=+4{if8^va* z3vl{RW9Np@*po!n+lN%c8#NcI$Ka04VpTgv!o)|S!QBeF?nD}ZV-mFb^nP2qcZ$dC z)O>7@1~l1Cy9T3!Unpn;eq(+Su16*J_{HabD{T%sr9e9O-EsApK9coobS={mvmTd_ zqTPKNtKbq9O6=|Y0TnlP6Bb>Jqql;|3bBlJ{r1CtTQ zx22=43w3;0pQ6L6l6rp6q=R=VMr9~kSd#m?rt5_57}Xq5XxzyzADwsX@FSGj-8&x@7 z3~uX;MwFcNrbCO%$Rjcu$58fhX+Kwlmwpf9)=1(gxjd8XLq}Q)n`3BLyMyRHTeWPE=}uLt!46dkk~1c}^1=XgYTRS2KkoUa;b z#WoZEfOxl|;MGUjRAqhFA1LlK9pHFqGqpoIDh#;1}t zs$D)j$F&%j4k!a?!VBBI)cSv8l2@1isLnSGn@tzr%Ys)7pd{kI;PJFr2&}-c7nMDc z@?FMksAZ%mcgvCSP@IRrqMp zNf}WcRjL~AX8BkAk2ls_%KN!#i8IqsrfR+g7>rNK^S;C!pFY9%y2=H}X_|`gDI`d- zMEV>rc0O-fHa5#bp;}fvbj0Mmnxq?=FRT;Qx1J@OgpEcP$CVwS5(LddbYC86IkPHY z1WVA4m&onoO|4i`aNk#^N(}Fa)5r--;QVBCgHvB%aKF--*4b6r+xq%@`AL6yCw-sn z78aDrmh5q#GHdlbNV5%-X&Xt%+rQYRAA_i&7@Qp>1njZL1_r zCJZ(~T~OO&WG!qvD(f}eITOs*q;$lLIb*0y?f5C?Yhz~Im8v#2Bhz|vvq6cihXedo zjgcIM;pQ*52)p69<+FhD`E~m~>+Y1L<@T#>3J~#c;%)7;bx%CvFBEVC7JyAZ4kB(y z`K|h#p9L3X&L31FKmZ2-R8S0st{0s4M?ZT?`lh5v%GU_#B`T_jpV{%WVL#@ps96UkNh`68Dn6FFK>?I+ zQ;9uSH{`MOD$rUp~$`3e@n`)RAVnshN#mxEd*dN$NAbp{2Vp7~>qbP^5mXw+Zk2j;R#^ zi1c4=;!+-I3LQdgwP2GdMO@CDBv1XW?MgPp@PF3|yqkgMf&Qo0NndL)>k8-@l;Z5( z9`(E~g@!>ua5nASL4Cd=V>6DXdBZGU#VuBmTZ8oWGo91H-y#IytLk@>8-+Op32Ssc z9PoPr?;ZfWpkj zyy^4s*sD4yzw;9C8>jEIn2igNajq__X?6=RT?sZ;@zrOx-?md^RG?wSt1tcNz2kP) z7}ngGzT+i~WrSQY*O}m*EZ;)D9s?yv%z}`Ejb4P^O>$*c`K%mlUtl@oIg0+hh5W0j z&T|62COBUF&&KZ$%AN5&pEZSVpyMy}B7635-+lic{B1@`U%}GX2Vz9~WoxK&Vrr@y z^dkHm5f>Lne?y~{Bux)h?Rf`HT;pjMZ;^R=dU~={FK3=?e7lnjYxwbJ3j~Jj}p77lUaX|T$6(xR>a^k)2?#5;;X>8@UaV!;hDV|LbJ2SU! zTUE<3;3ihMWWgH5>t|x>#{6+2oN%Y8?9m!qOYg6SOpvL<4(1-82~0y%4M+3#NH@Id>2*LZ{L zTn@LGf+0oP)D$5)5t;!cKyvM&Sf7no%|F%{oyh+_)|TAGUu*>2=2=M} z7DtdPGQtMw2Ar0DhNksMaR$w&B*Oimr-u;CgZ?}bcs>^a)(L*Uz5H+;O*VsZ70o+| zk5;QeF;ahq>#8hEz{uGg5pzrrbNEtu`GsuuAA$lg#p;VmNUu63S(>G7NWH%S^ z{;^q`|Agt;>;z46{1?o{`pB3*T@6=JPIaWJsTBJH9(|;o{7Y+1*D)*AzlTdIo*Dpf zWRd$IqcjF}ZfYIzQZm$%H!Y&QbT3YLYOzgo%k1XY9@t0h|O)50eHT z;I`y~vpYg?QX*Yb>?HS4%W2T3`luSSe%Kp*#G&>u& zR2M4=2L(Vg?TbChvEY zZJ>hFoX))N3B_o&;b-iqE;y42gA+q-Pk!k0p(!JknV!Mno(2&_e`$R7i}~RVgm7jy zOX>FVSq{hureu;F6N`a#0b}WJCgeO*dQ1f+Mkc49+naQ+Jo*fH$;uxRm8;bP5R{nB zVNpXWmI?UBeg@l%N+WTql3m7R!y$_FiVwG6(({B7{vHt(JXP8C%nxl}Bqy-i73m|Z z+~CFg3qL^y+aY>$6eg!6K4U7U8I6UIlh+r_hIOZ$*J+CV6w!AjZ9{VSr zN{*1zW*xNMFz9me@-~Bs1c0gY-`*RZ_Fn`B7Kj1x=l|x52$k>@^Yh0u1gS6u6_sG- z)8pgc#UJh1N9(j{m-L*q&TK4dprO;sJj>ctI$;55n3DdGA}eJ_`5XI!&V$SoLK4On z0;b(5C99u5^&rNkrly2#1|1~T>CC0gPh3P&9=yjN)wP>d@8pjv0_9wDK9_~Gjd~k~ z>}nNk!(!Zz2yIontCCpW@r3^=#6=R9A90jb)`x1hfT+Ch`y6DucnSl^&K{>{j89zn zpFt|MUA5ST%`&O_UGL9`^gJ)Zu7^ zqh8EP_~h%gN5-+0j|&q8ySk}*W^)xG3m}PW;u@bcdpN(~(BTL;sQX@c!8ZwI45J79 zJa@)L--t@mb~}ibAS^5|XViTFJx&hJ&hG@9rPN%f9zexTRAl7m_N_Av71lI%7Ft1l zF{MiC+lhV|OMd|mEuH>jGSDQ66e!HU2Fe)K%q&caGn)yih>qd^WW{;xI&C#LL!5QR z`2K6xL)?Je-)5c{n=63XsT_^^oP6BZH!sN?Ss0^APVQs%tgCUZaCf=)DHaxL7)NIM z=3uRoYt`~_k@vJ+KaHq^GZnJ~P?55caikjj{!DrZnbJ zo-)bMHx}cb9)*{w8E9#gIYovJm`dEib1jMom;MOk=$Mr=D%KVs>k6D>>UdhbXY>-Q zQM4oNE#7t^oh~EkrGiJ+Y8p6m*QrhC`WYZAX24gqIlD_P`4dvjl|k=7iOZ*xTUO%& zO6|qO#7s=&c=@%yn1Q{kDDQj(5UmMw2&y^%o*R*TeZ=|Cvgv(Woe4s8cfL%0Il)`I z7vCH|ibH1@zokL6%yiY;dZ$~ec`P|hkZt+30`R#(NcODj>CR^phVRfd6%D6r+&qPG zrefmVOkaMhJrSvs9uCXL_4sP|ZQ3!R|A5!ulldT`{4qe8ZuLv%6`it;6f)ow#00Vb zeQC=a>auZcjn#xMm6|6&__)A6=y|JZoZVQfKUF>vO@#mQWeu0Z zT5q;gSeZ3!pq+UgiDZreo6I;O505l<0=3R-ev6x9*z~?ThHFuygIlG#jMA`*Y!$IN z6m7VjJ|kG}zl|WdtwTzL5)V-2fH0*)LI9v6<{sOC7`6jemjJPaT4%>s#)Nz+0457g zBoEC#Ws9_Uu5?4zu@)cS0#a5l6_~gP1w@ff(#aqW!P+ppFJNX)(s@fbGvZwotVX#}BBCKfC(>wE*#BW4r#PcRnq3`*H^?5LyVXDNFYY zn82M^{Q=v@avn-|F`bsQr#qH#zh^!5MfZ~=&1E~1MdKmGKq~Ha`_1uC@TB z6Sd+)fdB|p3q+!1oUJ}%@WX*7wl6z#Uj9W}+vTwqh*6F3)5vHdc?~~>&ew>U5Z3TD zFWfQO3RgPAH2`ob#~}#6T2;;Hft4J+w_CM-nm;4LdqsJhRiIg6{s4<)pMQ;Px&7#87etP^*ti|k#`yshb4X%#i&MYI# zeX#^qb$+(P`#%o$7|ZJJhb_dn+u@PX{h}GEa!{SuT(Kz9FTD zDva2r8?m&s)OMZ6==rp?R#rGbc-Pp}^mfVkHo0{Hq?c(E;^AHv1*zjrr1b%)T{D^; zGu9?UDr8yrpF5jfgACYUfy8%1yo^Pao%90K4ZFt=#RI7O@4cM~ru3Kt?Ng_fe0pFe zT-P)uv*Z);=PZYL%ubj4n?3qE_i&e4vI4UC~8+a zdUWFj3R>Gh5#wpw+bgJ3Pc(9OcSphJJb%6#3+~bbbRqdLWI{Eb2qH^VL<1FTh-1WG zQzo>6ddO_KlznTG-vgSYS}4iy#{&c?8RqtlaZft*R#1}cWa(cUa zfE}UEB1vW8X>1bPfP(vq^At40Yeg=`(gz4rxunru4o!zbDir*DD52O0Aw1!_)BE zkRIRri(Y3684BMBGr_!2F4vC%WEi}q_l=eL9B>0#w|r34}=M|tS;<8OO3b1^kTT8*sN!-%+b)S8p` z#5d6@GcVsIcdb~MNCP0`v!5lJwga}`lh}l)H>i19XxI$%)WemdQ}?#WsZI`1zW;A; z|7I1?32A#g1l1~!hl*)G6h7yQ{BOxY*t&3Gw_4^bO<5DbS=KCel;M`N7biums;^mU26@Qq5E#k$FJbMbr};W?EbR#NY4t@-)mSCt4qci048dj z4KAg(4!XLYH(?oQ)RyO&dUL1^nd)G-lIW zsfHFu4vMe=R80(KjPf}RExs3#X2TWML?h{z`}M z(sBX>>C3q|LR9#x;2l%t#<#ELj&4S~`DdU^Vo!{@4gKL(p=CeL9}(~RhfuvF7yOg- zKmIg$*(F!v#b--?K_AFi$!qQrf}ym>UDs%o$VNwCif>^&?z+EY5FifKu1JW0k|1X; ztq*0n9x&_tt6$HR)nowUHVV6KaBV{Ga9?$p+D+6*yJ`Kti|*xHUtX{Yz zR1QzPXSz_eNJr|gHpIR3RDBKWC+)fIpa*l)Mam;yl8h?r!>?t_zZk|$+-W7S_@=K+ zL)1bB9)d*Nk^W={cy}#AA;T=uh(@u6alhC`6=Ch5ZT__Rq53=)XB~z)3~9H)w3Y=N z2BO7W;TB)1)14VYwSP7a&dOuU@8&-N?QbKwxS$j{IPQAnKa5`@h7;R>2g-g3eJdED3YUd z!H`lXdjimb!ZaU7Z+GWIqhLO=ER02S(0h0$f?im5)_vaVDkjC!JrU1!PGI^BL~#iC zO-9L+G)is?;o~y*y47TmU54)ESbOp`zUfTg)`x=ENK##{7_yp!JIS9tAA193b!hhk zd@Rbc_Sh21Ljp%oppqJK06d#rF?li>@6=K^l4OUMq_@deQ{kIUmSV6XT?vaK3w$+z ztom2XZcb-5bo)R&)z-ywfS4+?JUXS)Cx`EL{)@d#=aex8 z=kw>!h+T+CNS}x2K0^?DA%FfoH3UfbfMI*D|8VTK>kG%yd6(01ePSTL^*j z;t~?kgnS56V^@d`>X;HdGRhygiftF*DteCOAwBnDu@ARaBRoA_AUtiy#AmQSE$kv>WHvxc( z>hdV;e75~GO! zBpG_S+0^;oIje{<5X} z{j#Zr{K4alrLP2drrYzV5TPj1qF#;>5;hW&O*N zbAXc`|0;?f9{&1oJ^CYB!VFW6p7=!g(t9CzD5lMe|5V54_gm4}?5`)*-f79ciPP`= z;!waq`U|RX4F;Ca|5h~eZ#Dk(Lu-$-^{r1UXIS$R_g9&39yT_pz`l0ZZ(S~EI~cg& zc2B6qH7KC>2aQ!z=4Wf!WBU_i6#>`N3@Y_C+Z10>Pjz{d&zjLww{|16fbNLJ$~&c& zF=WQma@EuECs!=`or`f|Q)`tGgEUweCw=~QQakJLC+t03#hmFkn_q>*uxz}VNPu3H zcX{?Y>>G*!=Ji8v1f41x|P_uiWfa!l| z-%2BBfv*)6N+X&|bSm!eD;D}NE6cpdDU?g7#tk{2 z=&Utgcb#`HY;QfyBx;!TvjKCI?bU2k3a*sMgk2lML5gI-Li} zR&G>bQ1pKGx2W+KU;KOjy7uRbBb11yGQGO`3V3*7M2(rvnL(YiHSRK51{Kq)Nk_r6 zr{uqMBp<$QYEOPSNdvP8Q*r`Yf*!Y<;f&gi4j&lyZl??Z9DtY|)^{~jI1z469c))o z!i#p9g=&wSN#|v)Tq8pmeVI7oS#a{nIe6#-d)Y!!V>hhdq90YFFU-wQ0bq!1ViKeD z@vhq4(9^EDQ5gz3bRQgVF61I{s+S zPUD)4$liZ0?_o$@hASPsw#Z|3fRa+%0PjW?fIiqp^s+C}7aQw6U>alIe-H zPyUPLgN7<~WBae9B(i|cjdOjK0O2fpJoGVE;r{ma_Wk{Rusy);@eXv6KP7oTB#Ekr zU~)l$gw%kT2EOA&Q)bWgTxPe};LGrdlI;9px_et2M&7~it1#cGmAQr01cgTI&WG#eY6Ly=}? zR#Cfgg8FTi>q3?1l!#)*%I=!f^$KzuA!o0qCqnBCAKRtA*4LwKV5Fd>RZ1;MkEL;6 zzS`1z#FF=eP6t6%E|Obs#_8`;tg+a7XE7>14Di&Y)DeukOj)h+>4|)ZMq<*eoTa)>D<*6P)Z-smTY-N1_O z!(P8I(KRI^r{cc&gVNYg9Bo$by{=6(F@kaS$j~G391B+J8AQcLnpEn(@MV#c1^in% z1?NVZbt_k_5_P!qn&+Ly+9Oskr|t29=B$ryNThH1N7!gzbR2SXxd3)#ajllvuq^}g zRh-rBP@eW$EQ=YYStJ)<^glnSrBdGGp)khR>im^^)w%g8Qto2xoNj}^${7~z9H&Rb z#kl(7F;I(9*go#Bd#I;(G1V>SyM4V4+J1Y&cbyzsX?raoP2S~bOMhBR;GxR&m19_kA@`B9`(=C;j&3f*ihX3V_c%~wXHeo zZ_H(0!Qd@M49#a5USiv!mk_-fDL5!W4qYt$q@S@$`}o;-*GYT|Q!V%ewC`jCYU>T> zkqF_ed4Or}vZ7Pg1ekUzc>d&b1Ai(~J~?E%jAeCS!@IXp=T;EDl2Yz@VqUCVD%rZU zy83GUc56K#5~aMY|IVloEviGTUTM*RBP=g{Y{x1-nh(z9ThJV%f9~xLDB}e+H&0-% zg4a%h3gz03TZ_QsM6}mUvChboS!PzpxGjV`Yuc){<`iu9sYg>T2`(lI{;yOur5phy zno&si0jJDsw8%PX+95BVmHuP&$_a^R4jD?2MSdwLVcmW>5&kND^k$^@54B~}KP51+ zx-e4gGBAw9{8Zp)+*=F}MqvM)7~60{Xucnh-pf^Xc*)|6K!^;%DdJU`3n)(?SyyzRa+=L9O@>Y_G3vQtqz^ z@`E>M^`0zF>xGstAa5f*xMo&V@4*q7)}z5=|E2lTrM$jsF48Ur830RL=XgHZib;W<&Gld)y{(q+HKjd?-sOfK453qiGo8Etk2I7kVofn4JQ zK8H_Q|Btb^j;gW^zXlH=AuS@^As{Vv=mzQT2I=k&NreLn5|YwLcS}ik98yX|x}-~B zZr43CA7ceuH}E;PG187&P%&A>Kg^69 z;|Ee`nd6twbg#@$M|aq($v%+(TQf9lqRT!l`!R8$$GPNZ@3Y=_ zrJ=%l&qOB9Z}HQ7Gx>N>De0#-vBEMe>pm(1axU94prf1A(Wt*mPAFm3VRZ=Ovf z`GpIACw+PC#vUyHoUa1x%?9Z=75QSdV3Vkjazd5`d^D zOgtK4>QU2Km_a6%A77dGY=KusFLkk*$&X@4om7&kWXU-U&(y#Dj?_%%pR12s`HIah zgRDbx7G!Kj^yJ{6#Mc2H!r>dj7BkSsdT5eiue#+MDW=D!n>J!@Y3HxhL|fvcS>eQt zm;aVJ`lFG>KQB%@Svm3kt!s(TNpSY{D%m9u_WWel_@+B?GPm`K0rT0|n()EQ!-$j` z9F`*yNE%By4^I#iZC@16)Hx2)yKXN1zw%ze5(C$#php$`de3%npNJe`)_ilYgFMtc z*Qt7%S_w%|bB1gm9jTy?;jz^1E9zw1i$3u)T}SFHD#v}pHh)YEy(SyziYUbdKR#lW z7Hek#C7;-zk6)3qF$Sf@w)8-cCz)#SR(L&<^VsA2E36XzTI->9HX@LD5iBWNU)f+Zm>vw$S-BnFXyc|WfagW zZFF*A_PeqSzs&Ob&`&X3L)Nc$^l&oy^D->{#0^)%usiAaS+A;ktHl8+%jxHZ3jCbQ zQ*;Z%&DF!fdGkZudcj#A!cvjMg2?ijg!`!nS2Rdd3D!=8#DhO(*+}NnFb0UAl=_!u z*H`RtxGZfXm(ev-&jc1};?f`G%P9}?D%;eSJP{(1-n7)sj#BHMME=<~b9~k%esUc3 zw+zXPwwFaL9A&i#1smM2`=T&awrFOp&E9x4mTfuL=&(sd^s#mIi$+!n=1uH}JANG- zpis$Cl@BSai-7*_e%IAoGIA0zRtqrBsMk?F^)R&d4^{z8$Ro-&ZG3rB*gtx8di9+S zOv>chwPowGg2^|D1A>QLl6QMap9i~E1a)b$%i+~R5@pOGiui0UmW&EyH&XekjLflT z{S-6)W2`Ml>Ng4%4KL6J@`~XGx)}B)Ih^gykNM^UcE`d0f>E4{bDJl?m}NsUOwQu> zJhX2nQCkK&z7tW7Ux4coki~GeRy&lc16LsO$LhFm=qMu6bwVrY6i4--P z;t(Yq#N1~(=mp`X8J;`r^;sVYN?$TV1jb)sI#Ld0WRnnk$8{12oF~=biLp2YF-m4A zabyG|znePo#ww$yr(qD-`8S*WjPp>RPoLWIZ6aB0bcd6{3vFLr%mf-Aa8}VJi_Cz< zphPND-$3(ON?9H@1Yac*iH;{NL?Y+UTHA`eGmFK{LGnxIg8VVA;rna@xl(N&=-(1Rhf3dY6%E>L;`A9cAF7TNxWO9uGFEUD+bFb zlm71eB;v55eeL<0n=`!qBa?X&HO80^Zb9sESL&6-aW4aN-l|Ep5K<|bl#46M(>-_m zi1W|IqpL(dXM~@)7`ZAkj5bDx5IrQPYiEm^J40>W1#8+tFCSfv5rh)g*#ZV%iIz~U z7K?YFPGVGuEYbefA&}QIhaA>##J6ZKqL*bX6htR<6W!7KqPfINsBMXo(D>ln3}y*q zHVe|WBOo^z6N&RmP4fp0aS_Gzp$bi? z$YO$vS3XDxr9hORpN_$rUE8k|`|uXusp&b(hOdYisPeGO3TW==lWpbsAMXtd@&ET} zRCqZ0Bst+#d7Pip?|HFtp`QdaRKO*nNPQDi0!^8AZyC{f^xyB^pjXG9;S*n8M!dGh zEi34d`abxHt3~%F{u8iJWFQY(JLC8GAA+#H1Gai(`VC?N!@IEj#XBGGSpB7?|mdf!MaNhf$<8bF2Pv zxuEZ~U6jy8;1x#0Z1nNWRb|8oU5LMrwwWFU2FdtCQ;_PaYwBM;noql2?q58SA716j zuUyB?^a!&5By|R4kmma4ZeiJT0(L)ME$=Go@lGrdS~`8Q)SKg~5vgLaf1QdeL1dwq z47X%Pqpn>T;dtJ{tOVy)QW(&{l?bJBS?bCBz^Sb@!vV|pi7+F|+VX9mfR@^(RqREY z(RHvL7yq#Y`i1>To?q~>z(1o>}gEJ;t$~Hu0m&Ry58^V|9o@l1zT}paYt=)AaJkj8MybDg`Cb`VWo0+Gt zUOajPqg&cefb+;hOrLp64V}N5AsN1b@k_5>F2~1I8>9zlC1Yycq26uK#*ZwZM%2{h z41Z4K@8p27%qZllYH2}K@#&fMFsP-}UdpH_!SPVSKS}8m>Lou z0oLgBm{(^!HASPY)>TwX%-^L~vmuIP89s&@aptPBkEbC|Q;X&SdoEc=PTV?a>M3l@3c#y@;*XSMSxMB+;_VkdKrA`-;p6=^O(1-l_Tlio zo!XhZyf0kK!ouB(|&%>l3mS9&AH;DF^!HW-I7?3jWa%!{{C;MZ4WVAG6%dNdb&{uW7s`C6rGGuy2nAs76g<4oD+kk1VK_mxlBFR`Vjq%M?t-<~0iR(oCotKjc zMpuU?Te=BU(dSR}{GZS}uv$fuhIMU6N=C6nVe2VpeC&b-mN^l*OB+TnVc&`-)Lg4w z_B%4FlT3H3Ot(mR2AO5>+KD}z)%00Nr|7E+I~cY;L#U2sfpoeqEqkvj(GpANO@^0R z#Xp|D2oEDd>EoaFm8`EGUvABY6VKKdg@y0Hn36%0i^g*y&RZP-N%1Es~7{H99r49KTvGyKj(faEP5w^Q5MV`%m2-di4xXjiisYjuW`Z6 zZ=n$lM=UUYFs+a3GUbRQ@$2rI*BBG@tJ42LM3WJ>q;Pl3s;`O)zGPd+H$D9X5y5Z&-0!Gq9b4bPBuMk|B5){&)yoPgtu?*p zb;n2(YOwLXCdNcrFOzUCrIw!;+E715s7*?#P5a}{B!j>x& zHak8$QT}WOkzTT;9&ek0O}OjsuUuPwC|O(^{s*b;A892eAfe-Z7^qQ%@7Urnzr)wJ z{uXwao67aSE{k%+@9R$qFH+Pm`0M6iSL2Ge+fAkhvL+=shdARDll%4k<}Yx^RHu;569oU=#^3uj@!sr(aEU%yZ$N&d$yh*qXz$9+!K9^YZXBgwL0M1O&s^IWv>Dmg8&Gk zZQ&e!k-%n49NG52_eo^v5vrYJy$o&F-*+k9!fnoNx_97b1!M>A)+k z))L9CgCCKsUuD`=rdRt?Im4!Q;pfkvfOlyG@2g|gxmwpp8WkY|V&dq)+$r93pI!d0X zX&gK3{)biV-4*~aKzF-%_!w4eQP_XE!z8+k+$5peUSHHqOJZC`c%$NIY z!>eJIMDfrSAR-QWW`>!dJ7u0IPQoR zp0t|cpkX*}pKgM{%(HKFmA*+^z90~ewp5Ttiob}2#wiR;yy)hzVbXtMG2&{76PVNm zr7kH+Yr}`&O5`$5DNE0k*bqj0Y&C4Ca&#=?+(d(sI9VHU{ z7&*j!gQGvCHW@tF(%`{v@BU*9I6_l*7anMB7r|+0&RgoMJ*uVGK8^yM+yU1}I6`8y zWb~twXp^3IKu6oYQMhOd@~5>u{;qw%>vR zti0WrHtX$KKb{CfLdE{_0TqWLAGNr+SZKUIQXtp8>+EbD16@l?%W9+WGcb`WFE595 zt{~trVRpZlqIvqEr2pQ2vGyc?LLDzApGhW}h;T zud|qiJW_d+6!M&rXdv#Mq|+2obfl_h5HOzWUvdkeR%>DQr7BUzjhB?Tkuk`rtIyeK zX}ysCkXbPywL3hVVXyL@;%GCJe5K3osfCN#f2Zq9PHELG(wBRrPV&;q3`jwY+3j97 z&JNKMxM3w)rTEf2PQ-r_6xec%+0zQaX<{RZ9ZTm^Nyz{H{d>Ao%MQrnTKK)@{1srE zv@uv$h!#sJdVjn65G2v#4$c?UABrqkSIVCn(o8{-KCrI};v$l(svqlLPUrUb2>zl{ zxU4}+>~Zi-u1BBU`pf7MCU$I(wHvs!C8oSc}Lcsd5^ z)5GtlV~?5-xmw4iCUERx&#nLirR>ABcTQn4d2tlq;{OpIa{F)ZBe%rKJEo~h*_il4;$t!9) zaatWMt*kBD`1if$%?AyOg-Yqk@$or~@>*Imz+9To@u!qRsshK$8Wyk!uU`Lia;{+V zmm>wl)wW#2Pb7ONt;CYVc9ky=)(B#x=g#wgOfD=eJi@kpapZemt?B9Mmxs%@y@VzX ztL>TSRGwPzw6%ChVo!vEhglm(zHritic(rEO;6Va-Q8>qr@*s!jBbT2-c(<_XMj_j z&kLl8ZW3_wJSix2ag!D9OC3V~fv}M0K)i32ftB&|%1~9+W!ZC1DN|r($D^bKm6v3J#Uf3jLXFuA_8(8X4Rn%>Dc?Hd5_OYa+4_4mNxs%^mhCP&n59;R#UOc{1mt~SS>gwvYvizOaenb!x11dDy zTup6K5=Yo$ue=cv>@RpK@mllkYhmHGR&|dU_22*`SS@;O6dcV&?o=^L=o(aJ={)wy ziw7tnFc>U`t!109<9ZYXtH%6ZCjyNNEUkdcdA@e zYyZ_6ljpxg%jCDU1e5#|{o60zqGc7cPi!Ln*cTj@;Hz#*w)QLYBKT8CC{>307=Po6 z-yT5dl?kyd_2M$;Cq{jRN7z~j%se6nTqg_TJ->#Ro81P`0mD_Rfr8ytv7lc}bb-2W#c z2=2s^@47X=R7%rKgzfL|S6ru(51D4f`t*yf)HNk;x_w*7;_XkZXB6gLXyl)$%B_d8 zLYcUnstcy9S7&}vge1Qvx+O4@J| z6~Pv|Keu@4u_OcCNR(X*pn}1$+3d^=5G7mz(^ukygQuccKm9BJt0ZONiD_vh?)ZSg z@m_M3^=`DlWD2PHD_y|A+e=@Jfu4?1Dva5;ATtg|!G(ZLna4}tKLhb|#{LJuqe_tc z9k|-TfC54U;;3qkh?NmGzrSaes_*d-@=gt;)rY8fBRO^HQv8|Tyu5T{`s{DUK_m$a zE2Un-OHr@Eb=X<{L-BTGreUGh8W_*h+h!#s;Q3X7EC{UUFCN>1YV%$N_BM|hEuH$h zI!$fusnX2~F25?Um;y)8^fM(0>Kyzz4k*BkwUd2=+K&u*GAZawJVIwiv>JnTeX z1AcrN0Cq20neQLsa)t3rcN4++u&|@nQ#$@_fOn_>A08h5>bsc=Iul3;W3)r?U{z=0 z%mJGu4oP#QS$gRov*Wf-tP()9Hc{CY5K0fkq_7{E`o?@Y3;H|`zt%k zPeSDb?|q4_Nrlh;0zt|IkQs|{leB?S#NOUsS}ovDyexPi_~Q&fVF@Ia=#av2ChBk$ z(U#qkQX4Fwx#|O109m{V1ULc~T?hp9uiZqTHp}b9TH1P>A@u)F)2|~yZ$hnke@oL4Ji|uze8?77-pB ze0-&HTJ!-DZusX<{kZj!Ob3renQ;(D+pHROx@Tp+O$ts}R zr}vN{9!5p3+{BU@S(ct_QY6hFvFA~+{%`d(lAq^PzT8>oKBlHz4Iemw)&iek@S-RR zCu~1}3n)1{vO*Z6Pe6GM?*ZoEQ%D+WAzthI`wlHmMCcJVR$5xXzg+HAw_Lk&4udl= zi!)KrzXy&V=U*<^m_29_wI;v|jV4QQd&= zy#W=<_S=`B`IZ&EdDbIaZ?zZ&I-fjiKjWu-mh7iJMo@+&rDLp;$c=iSOR&$yd#g%er%YcXEx*93#ceXozQ3XT?Ho7pKtAcY z6&4^dG&J-rUdZjwz|@p_n$IZD+(cLyD$Z2cXvs0|{aiz#P5c2vTG*=Olo`EP%|7A z6;U={r4$mTLN{AGJ3D!K^d4sPp5&5}lGlOebaJmx>l$hrMY>Tkv$Zz#qF4Ck)*l-` z<3ID=F`PtZu!*ek%fw-MO)e)m0vWY^Vs z0ExgEp2Rljq;CU-wldtYtC*H2tR90HpL1cq_lmEz_wPoqQ|6xrYV|z={wpU0h{)G* z#k1QxkKK>BxwQ|v&jwaf%6pCQQNS(g*$QLs!m)4KtQWk+#4UUTq zKA;+o0a(DVFmCDpTSW}K(gvW0fByr^=KlvNBPqM!AhJekOMNE@scLS=j9#zoW*CSQT3MCv23vEbs8G&ZK_QE`UG)#|bk#6&FQ z1EAp9@Y4fT*zx;kwA;sE4S-X%E+k~@8iY2X^JxtbFpwUR8zYzhG7`=Izl`MYm2X|~ zzw`4fTop?8sIO4Yp@Mt|+n1(uy4G9_0mfnFlLk`y;cADdt+>EUo++%~qsy-TCF=l@ zdWNd@Wq6Yzo8Kpnz#{5c2o(>{3jr1cxPNv^0TB$IzeNFttiAj`WoF(1#hlf}{=#F$ zuymPz z+I=Gli=oam&6v&zpJa7i9nWs#ppAB*uy~jHf&oGK*pzdSk2h^=M>Tc)v^SKBhK|Z3 zZi09;dZ?|Ap8>Z={G%KDd}@3xcS_c?FdfO}|865D|Np>v*8fC)Jz+G$lw^-K8DASF zB_(Yo_<)5;jvfJ_B8iRc2B0k22dNRh8cdnh1k+yKqvR+;#biZ zS2K<{(v1~-t)s=4P`|o&p&b6Z?#cZ;AYeo)?H@zMjwwL;4 z@mI6r9Yv1{=YP}s+~budLH^~t{J`lOZ>u=_{UGe>bePm(=r@*FhP{!0dZHh8;aFBO} zO+V?wp9_bxKY(Di?Y1-kV$VkkrRQ6t>9Si~(Ya)TUi(uZVQ!|`SAby}xz8_mTG)o& zexOsVzfGl!?r>|SP*G}QrSF|8(&$Iv?N=Tm;A-yM`7TPkK07^KR9pM-DKju;G4@%m zRf?@tEPk)S(jn^W*XHF__%LUWX16EQwiYtUw%=too#AdRCKhiwZql<3RP~Y{`3*ks z0pJ4v&Ve`%j1oTn9(c1;v@lT-gZ%YU8*8$LX+#M*qm%Uy1< z*z0XrV*AkV#8+*w9UT=FY+Z5-9(IMmEtc!iGWIFy$dXB<2(xzC7e42eZ)$l7L%WC}RA?;~>BhTH zxp~NO&=Qhoi3cWjJklmnM=-;2Yemo6@w@YDhM0aL?w9`Z|{vH7dR z-jc?=|@Ll6h{b-qi@VAuthf z1{*Ek+1T~cUTo_C?0Dwry@v({lS$Mr?`w$|`lxk^<7=PrLwUK>SJ4J}f$I@ma`-wj zH1QgN0+iY_e9Cn&Hmdx-Y0(AqYt+7YwgS5F0?vw76Xxr zOO9T1Vy5V*+)2KGc4_4;shAA|V7clh?OR@cVAXgVqiXY=&eCOxHa1qE6N#9ZK0&j< z7K1#FFF>T0(@Nn&nSkLz;rchaLfabl@M|%1e9^wniSDa_`|B-u7#ILSr40BqM%m!J zdJndan8Fm~<)`3q1ATpBgehb$WZ@yzQ8f&Bf5AD-&&@ZxN{%tuyQhIPk>i5WVi>7F;kZ@RDYD)?>! zy!kV0>1+eJTcp(>RCmBF>0vX89O0|aTK>RTQsKkIhW6gv9mR%mc#PAr;sfwhLM~y8+Q)*Z`HuUU{rPUQOxpGj zj|gTq^zLV_#VA(TGJ2n!`u_(*kkN5}URi538lBm#`Y-4qnbiP55)rrnjaXp#8bBjA zm84@VS6N}yI?M4`dsu%wW{a9;sL$SaG>ci#l#ez&jI5$VCkcm#61=% zFJrVslIh9GiN3x*L=4WYv6H%xBl)>SVAEpmqX&;|L7DmOmjyd}M|OLTuc}41yJ z5I*C9gs@@()_1wSnar+Xv9g8QehgjN4hhn0g1JBnD-1@qFC;8-Oiv_kOl|lNg*n{d z>o&!t1#Lhc&M&|YCjL?i#m%MY5gPZ_;x0(x=rgLE3I!WrX5_oQ02&f_d(pf3OgbKS zDiba_ZVK~PMK{BI_O0v?AR7KKR~^0O=jO_X7#J9%QgD-%qs#QxYDrE4H+BWi&s50= zt!=aT53nw$zN)+}3MZmI!K3e|U|Y-PpFiJ9e$LNB9e;BFJSHI_$t92Bar-BrV`sMu zIKFQa80Bl=Zu0WYRKMsmi&i0M|8{1mJ$)_G{U6E#$f%3UaxRX0oG9AZbu{X)gD3iW zV_QwaB_z~O&=$%WrG-{W`%{n!hRI@(Y3pRwRxl#^KK%C0wdsYXtm|W~tGw&XRAxZ^ z%T;t*Z_4pv9Z$T9ntRdwnzAFfH5by!>gAtW;uNPg`GqQaOJNEvj``Phh?xso0hNd5 zoQ^CFHjMoxT^KI6`4br%dpa7#f1C^qU$^qY_hV(e2TxR{rs%@&6Vh9ik}2&So`ir$ zM<@!3w$32gTbicT@>-U>`ap#CNz5{|`LSGY*k-GrqZU1M4yW($Z1@Vz(KyOMI)V zOO*Fg%d|sJH_DLvWV7Y>oJx~&q}0Gb)Mpf7Wk;#)>H;s$a6-MhqS$MxTG+$!Fiq~1 zg=cYIqUcB)o@8=6$A5@b-pBXnT?mgs@>gi%AGQWE*DOg`$=Bmk*rT8 zE|U==Qdw;A2`o2%XDpF%8TPLj4i3tyY^nB9_Fd5w%Q&t1iagg=$U`~!tBEXbv6Ru5 ztnn3@`U~I$_I*+&+t*?y>tWB!;F$n>CC@9%$TC`u#l}W{hI-lF!m20ITY9fCSZ(#t z-r?C`Bssb(nb27-bgvynT%PoFmRqj6`-nIMIG3*{n9z2~C$LJrCbGsP#a7fQZNT(m zCSn-xn)x+?VgS368kG1uC*EWU2+k)Y?f-z?$-dvt_14#M@ERTlnX{Ut0ECEOFzt<6 z6>H7%bn^>>ix@m^rzK^51r5cY9e;sxlL(?n(2FO|_~+XFNsbJ>5ABD(Ud2=$J+DDB z%bdd0maVM?{on`J3aXJR{lJ!${Jqui?#6<`Leqa%#w*ccrgeZUht296$Z8gIGu3Q=~H^|H+CH=q8fc=I-GMnF5^yHIfa z^1U9%6?xI=y4WxIqEp25aw+iFCgrx$p)RUwQ_w@R%DHaW(U$hoW!)=mbd;J(f!rX? zXe$F2?QrFV+o&$6l3$f1d-IFTyDzp8! z)!q7&L$uaLpS^5-+bK>%o-J8s)UISTbH_P6kn}soQEN@m< zkcdGNr>2D=zpM<_9#6vW_SSaiI8bxW&>c&dW8K=wZ>Io2KKgYwlYa(3`J#k;<&!5KFDAsa#G6U8`w7wJwrr|Pwzn2n*twGf?*yL2| z8%1|d3oL{d&DWm2!V7<~_E%EGq}5E3uy^$);K?t&jt==b-w@jb&GNmYsBSp@Q-}jv zEMafkaYcoYM1;^oEDIkAio`eVxkjd;)|`nX-bH-zEA$-w@CI3$2lR*~GCqC$4s?_~ z?sB!c?nq9Mjz6ZQ1x{`^)|3&UKoa#?wiX;d^74upntUB|wIyq0?ki={!JXoFN@OI6 z{%s>Sv^y_SuaTVYVI;NP1;b4GB%~%(Qc_u8?+T%alZ3#_XQN0-kG_?v~icecnAANV{vDyymWLcBpjn^hx(GN6U@D=A5wKkW-b!t@US z_uU~+*y)cWN8)XT=1m69R2M-#dra%Y%}E2>DI6Sc|JWK<_llT@V!1;)TVHF`M6Yct zLvT4LSmlB*Zz;c37Ilw-Y7w#Z&Ra=Iw6c-`ja5-i{+Ji5W^{QQv!go7ba< zXYc%PW#_Y;m{M5-FGi+khdy4EpWdy{L3%ni_1X&1AvMs7UJf*|`idh>d`J`HOuD6e zx#)LV`8NX`F9l%|-i!{TjZ%9%6frm1PeQfGYQ@|v>nK+am~Z(ASP0M>DzDq<30pB% z6(~>9sS*TsGdGj`HBIK!G0Wb>zE{R3e)M@7?b z^xdo6JwIt_WDdbZSFh*xB#Sa80~TYE)wkbCLs8o|e;g1~0YCcIEynJte4Rniv0MR zw0>8xC0z7&VH}8kyg};&SS@6Trj`-ljYpFw`~jT@W=`bTslx#m2{6@GwuYZz+s_(s zN{G&_3X$!O2jZ>Ni*Nn2OqH)2vx})2c_MC)JM=1SYgv;i1;{qiF3hP+aciha+BEQw z+y(fpn&A48=B?=M4SJE?qoZmzRbDNlLTo)2E?<6y>>Z|~?QfpPdc_dnQk_rlX+(Wb; zIitL*PQj&jP24sF{aPivd^r;b#lnfi+*jJ`!ru?lo;A)DX!Up*gEtHOB)q zxe|3P$eXUKs@!=FZ8T0uZurFbp|`nz_GK#{@!gxLW8b+7BQUgv5JJplwFFoi&>>mM z%MYNNj+F ztI}_eO-H%4A;w0H3T4~lPnaUiz+&aYru&kmtsc9n0o4>Xq#PuM=Px1DOyjxSNMf<8 z1YT~cE)+*+5Kf0I;GMxkGq0|`xyVoYBO?;}g4%q*tviYpVj8X=-#hd10rDtpA(v26 zz2Hw|*;jP+$?-uTgZAEu7GVZ*{p1PYA3u#Wvq_r;f9l;j6~5WdL(6$aD}xs5a<)CG zYql9a@#m>Wtk2jRsxC4En|c9`dn5l=#Q`4PMQ@g5ov^Ow+Ec-sM5E10YCa({Mj%AZ zaQK9KmD36;q7Ki&hF|((WutwaI%;EPE^q99y zDa?Nh9yw{Idi@Txh(g_RHrQNL_alT*Vx09*&@YLl&MYR~ZNX1g38P@f(n7joL!hk$L3W4tg z9QP8=RhoQFOA`pb5AZu5X79+iUu}L{9OOr9P1WcNkt&Llk4J{PZMOSj zWRSm1I~Kldv)uQqS(p^$mAm1y)$syuGWNaFde`=>JC+2OZ&P+lctn&~|8Ap)tc2ML zy>kBd&t~t)o;h^Iy$syLwbyyoMQ?X=v>CHhw2*vTK}=ez!pSY!sFBVM zo5hO@&QK0xTmt=am4?P!%yrui(e!o1NKWYl!?wSOJrD#CDYzlu5YUJt-@9(PL8&JS z612M^A=zg8T8T`#P#N4=h8SaKkGIK?vp9KN2x2FMI)uPz{57m?(q@_ik}W;=4p-{E zuV{ruU=(kSz7|5ZzLw-MwlJBPdw;`Rm07;05VF6%|VMx~Q;-JqsR-l+tS%EKIk9_CB0@6=h}4 zl!RT1T8QH{>2G?4uD2)W7*@gRBeJ5@A-FiW2X96zG>Gg(% z^Y*Zvi;BF|yaj&5LPBuG$q?q}5)q4q{wO1hMV8pPp+SBP@X5gM)rMb(a&`@oirB$J z$wg(>HO<#w19c-r?f;22Q5j4wTXBVdqLXW>@UEu;mPEK|%4qz4XEx4GQYMw=uvj+i zGY6XKq$lqC2GYe-+^M(_Mx7bXwwR|Y!JA)F;r~qVAb9qU2#n#}yMB=s&gfB+k(?5^ zkGG8r$~MNvwYudwZ~3e{TN+~8FuJ*MZQ|R8Cx+gi#5^R5gwRo;(zr0zxS;6%O?r+~ zVv`AF;Lo*i&C<8MEsyESOdFBBD&*&Vrk|&=frw>qcczrRb^kSFU}z|Mc}p8`lPAOM z-a4d@hZU!~u-f~W)#v=V#0}a?(vHy?b5TdydU)cX4l}BVVAicvVKw?2rx{Jwi5YI0 zCsbWS$|$lhd(vTK>A(-~&)uHHIb_oC6`2LdZV1r1@P;kv)^8NVjXW(p-Y)z7S}O5q zr1lsudEb2H$@yPizo%v}^_tFv)p$bUk`kU|@r}a7r?Y1m>gJ2T7RlbvGH>NazO-yO zdh%=F_#iP!d$Eew>*;k1kXwF|KwXboeiGlc0Rb)KMA}B$vTNNv8WgyzMosrijQ{ZApD41oF`=VA5DW5g3$S9J4 z`jB2+%2Giy5ctMfcXI%q>lpA=!d<-3|QwYHBecxT$3~9PezRSKRVX zGoDBMI7KbzfgGMX*L=)m);UNl^&W;a6Qt8xgePrVBsq1jX?@$pFP(|24w<-IKIBZu zpH87R=C->SnrY>4HFz`1%CI!Dul6UM@6V8Nqm6Sw=Vesld9=I zV`_F6Qp}AfS!&2*nBl7RJoU9cviLY(&GLI4ILf_!E}Gox3uz%C5P9`F4oYN*nr*za zigbFO5&<)7d6Ea;092u^H}J(hm4jAGK=~m2 z{$+>O*i(?mlHclsiV1U_i@+vv%(!XyV3p`jWLPHbISrUnD9os3jDCuUw7k5*!q7!# zKY6Yubo7G=K@qR_=ZbW~u8w=z9*tyqg$kZDDK(iGO1~T$d7O;BCeQ3ZZb1otFL%nO zM>uz`*MgIt6Wp_QU{7R~QeWTL$?=YkNb~97@9S4uNgN{MR*R&uRvrN~5^vHg(u*u7 zZC;L3s^iz*dt^E9$kZh2Jf-7;6T#l)@a=`Ow?B$n+vlgI@CRbY zQDteV!n{tRre9-}dIBA%tWRI@WPKDys2C87x7p(`gqP`7n{Nyy>FMb?HQs`%(=CNn z`)S){>Z6%Ws`btH1sHYjI|A7XxZdtgKqkL{@I0CAqJGLx$zlzwFqVgjwJ$W$LJ~=7 z+BvoY)Su~h%o+`z%oj4=`mJ4^I7{4Ylc{~+<$cOG2H(l-~V2}*tWx^8DJR* z)bN{EI$Dq`ZLQYWJ9zv8%ar^8g>>_P-6-AL{N7N=1@q7|X=)E7nocz(+LD{9{?F`a z*P(yQS&%v}-sJ1zQy%-hkl5uuSiZQJ=UEz;%z2=X?id}RgP>5`3*h&PVxaWDnL>=} zj^GsE7K@U^M6j9hC*dCbE*?>G?_7D=JgcpSpz!5N z-QRCW_o|6qa`p>`Kc$QMx;r-s2y@=6!4G#}l4E3KBl`Y@9z7x;aS)^qfSqLOoc8Hu%7}xN&=CD*U*XWY(qMvUZ6n%k_ z6+aGfOmA=mOfp;$6WJmUD#Juv(zFujKI9S!qVfi6_+&LM9>}rlu@FdrsWZ(xWDAGB z$Oc`Or^D=4Ot9)vE3V2ZD2Shfk(^IA=jSHBA+O(ND%&}Ir$9e1ObFucH+M@zjp9~9 zZ4!sqa0JP!?UP;7HZG33nnXw(H8irjK)2UhB(y5M1aMxV^P~*n_eOGpy1nDrr%!&W z%jRtP!VB`(^ZS9qR+GM#BOlB%H5E@Hy?ae1tP2zXhEe6-93*XH8@YE5=`5>|zuEon zR3xk#_ze9E&+KN--4!3w<9O$`+~ywW&(`wSt@NGSwNUa@piF|AbLUCSIzcCc3_CkJ z;5>DiR<*PUbisk@3|5<}3)i)Ue!tX}_D}Oqjs1+Uo5VP&MN1MMcjwH&9s7_WjNCZK zoHX-7BLzgD;6V{WeY?^03sZ8!2m|+SR-D7zCofb`%*$pZC@F6uw_9G$`-U-!=`Y54 zT9c?y%ctcWU_Yr6R#KeJ$x*sZ8|`HqgI4@%K)B9Dc^2y_<1FrUuqJ zSdXJ0auIp07b@sU)HBMS{C!}g!^NnZ1UsIzZ_dXdGmI2L*CFT)Mv6B1a_(gi8R$RrSqM9UZ< z99?*XJF`W5U}UKOm4&y9ir-C#<@Fxh-dM+99}>;;hx$f1X))w03L>PcbM4JmlQ*8C zIRw&l6#TNN?labD0Y*5|3Fn5lj!gcCnDBV65zMv9hpo^$Nq6)xt0B>gmP;PY=Irm* z2UknWT3}MCsg?0fE+clOqZbnI>YGm9E#>{gX;9k`FJ3deJ}@+6ORr%5LUSG z5I1kRGcTXlP_&<>yPy1m@<8O>%NxK0(6I~?9poa)x`H9O0Qa)|lGo@IiGya!%gP-e zYL~KuBdd{icj>#fr#KEqW|Fd`(1h9W!DiUuGz-CHl7ltt;#C>m&s7ti5_V?3bw>Qf z8p3btARLdaBtPF+pU8VL!Lap^-pym>wei8r(&K)i9l~xy9nhpncwazxY_KG*QYq9h z(&wLRaaOrSYxdw!JF*RMf>3uP24FmLr8QH9o8}HL^T|C%A+2La$I`Ylzv!Mt`+w z5T1cR&5_TO=KFyKL{}g~xuoA<4cBv11QW1DWV_5)o8!%3 z)aO6v$rx&uo8v+Fe1=KWI{7PSYGY$#ZC##o{4KeE(tuET#+Bz%EbrSqccx`^p24di zCxVauwo|lXe5_v1qgKw@7zh+JFEG{+<8tt;@|Hx7Nt*B}%Mg*cVVuq^HGT;RRG*?Y zoO6(V+*$T5wK@)p>li*=&J@VS0XpAbv8MNeiTV0*$Hf%}V5>6tk05HvipN%X_uVY1 zr4V2piYktpb7$12Q8(57d5R4QB+WTLzV%6zElN4~B_v^056Er_R8|2+7@$z$=881b zWC&LdJou%E!6qAa7F3697;cUn<*7J)!yA!TQDR|rvBw#CuL}wm%l$;y3X??#Clq|} zYyXaUb?TF*C+A6E^_)`BH4J!DUKJ3vHt>6%uagiA*0K6zHaT-YSdGfXkRY^>7r&jq{&_CywZ9GgC8*{IB2Eo zy4b574uwHUkrve7SzKD8CNWe7Fw;5{3%nTcA}tY$AMqTy4*Fjgd!HY)iWcBWV5x-39;&Vx)NYC@-wKo;=0u!?pk3gWy8A*OSuXlM79gTs?}bG2_Srw6x(`# zWbfm&OLGt88(39@eF`)RkDDg(s`91Wime0_2a=~1=v zN_C*GppT?FKTH}|96gxi4bM7w1*=GIrNn8ED)jxrDKi0BR zB{syP;Sshxt$Q9o>F8_I#W97kYEB14-FyTCOI8hZ>f+u1;{xO*9fo(d{+=~22r8{B zD{i&a6@qnAD<^^dz65B+{ZVdQ4AS|&S>b6fju;3u|_oj$W(0P z19m|TbzL!ihR1w-@j7Sne9`yBS}mya+;0}h#mDrbR0{xgZL5Ie!GbM(V0p!K`3y{G zo`d3(?NrW5r;Qb_I0i(Z;+khsf$WguV60MpN#%>jS23Ej8tKG~ipoZ^-Kb_%p~L)n zRc~fX+|Rd1q?U{8%7>(o(L1MB4&QrZN3ZtkxH7JAV-cs;A|__<7@Z@o9aG0}Tv58x zLmvNrNeoeXxu^OVENx!9TC|ufK%_dqaP_;U|sS^JdB>^t97dkx~fuY@Gr7RR0 z%eo;cRQgsT{oGrj5rFMge4Ufc$bY1GU{^gJlu*H3X|pOu~?Zy9e*{ znK`BF;cgRa$jPhG9N+twxnW$-i6Liu_B>?0eVM-wluqvwcZpJ#1&)f&)}^yoxnk-# zT*5e9IuCP4<>C-ej&jkad#2YX3;9gG6YL@BL~r~6gm&R`Gtvl}`hMv+S}hf>&3vUrsH#+`v+d=SL?uBmX zQxZ!xcxbcq#A>z`#H2ZzyU!294#p8jyiDU*01xY*5dnZtG8&rt@yz8Y%}K#U4XNZt zy_K>%N$V_ky$It3PO+_HIdK!XQVJn$=3zM%?Io>#HvY=Q$3kysrNX1^^@9-_wiLFO zvKQI7cQOr0(Ct~GlAn)Zd$l>82Yd4s%u3(;Gm4I=j_QD;X!$bHS}j@&pB3j;{DsOP zlAf-%ZD<)Y&O8@m*Wq%YQ z*}O#&j2?Y9D-h?>l25S0G-tybTo&4coX8FGj!Ql;;tx2?zBu9>(giqt)X2IHI6Wb8 zUYZ$!P96k+?3)4F)LAkbsr`_3^pL)YOlL9SV$#q0vcEGD8Q4lL1L6xZ*@d%_-ZkUJZZo4U3?Q zR45U2*{&tK5AsS*eeRr|aZm9^8FF!w8blFrKTeq&)<-}gV@6%*v!Q4yXe6pXwnjQ1 z)uwjBIhMz7(4ErFboB+WG!2jUS$`v1uGt}uo!F;ByUHt~kA%K~CY(xa@XI5EN`7je zH3+V_9eXvKLydnb3C2LC|F6)}Af2?O;-qCg!!!PN8rKhECr#xJt)o%Pnh=LSI_77@ z%u;3fap-2aW%lwopgsw&1^xQuN?K$##=kw@A}5<{OAv-e=yuC>sk>II6v{u*-4-5LW|OWe;F7 z|5xdZ+~ zr`5R~P;LWpOi+L?!kGH(8yt*XSPxSw3aIHD-I;uOxn`8*@a)N+c4>XmQxMV%ex5*l zNIWwRgukdvrd+TfsaMT`&RR>dG!4$8*c}6s@Y_WH*^&jL79w~TWkrrZLOKh}Jrrsp z!O_MO)lb*SB6zEAeb)oZ_O_To+#50W#5@@EX^y!(mFH6ss1F|0*F^XfCAb4NA@rZH zbzJ-Z*L&&w7AX29^`GAk4h|S}S{woK@_$EVyNh+eZuVilKLS6yhmZTlQI7!Uqp)Y| zvl071Jy!pS}Xhq;?u1<9mZ2<7NT5Nw6(KoSU$t1^zm-P)z^gt5KUv2o#;f*okm z@=M6>p|`8i3B;_TMuJ19CjE|y6{_4r?YT;ZbJq6Q1^`Q zZSp57Sy>z-I3+fcb~Jxwz6gGUIr{{J%3*VO1izqL3lCZTJF9 z0F?UO{&Y#~Ehy+^sw=w{6IF=+bqhI(L9fGTD7LMQR}o`odU}66;{^a7-vO&pEJ$Az zz>CED!V>Ve$R}K30B#%a>*|OcwSTnhy2W`P0xJEAX{N<;;Mh$HzGcIJ>LcK(W7IRU zb;nRF-WY4Q0%|DjWNgl*y813_G^Czu2=Q{&*Yf>U(Xmz*MBY7lO%cK(EFX=-Gzu`L4^qJoyVoz z^UQN@T9bAtmTsvgfL6Lcktunu3lblisQ=R!lPpP!Uk1#h_!1Q8!kJ9S>5QK?H+y{` zaH{neHd=`534wCIW->hI6y*T#Q&uc|t!INg<;R~(;TJOt@DoqV4=QhF%A$#}`Q zNZx;ZnELjxdIQ*yzec?uMgi>HvPZLx4$qCJahLb=i+8z1<0b;hg!)?e(P6jZ&bG}h z=OoK#Zu;i3B#j0=_4Bdu*Vf}Ab`@#=NvWI&%sg61n=UCFGw9|rY>?f}D>k_A(MiXm zX64nz2P+B@D0tU##ja*K5zG)lFw)? za6ErDY%8=@-#0(!G~O+)ST6G|-JdM+!_@ni_2{2ioh$qvQ+F15*CU9`%DULDtBAs> z!jfxHKFpRn8Yma_Yeo3n%-Q!~7}s!K`wS@ZmqPF7Lh_Zi3(pIO)-~@dY;Ob1K#exh z2vH3NESjWzBf_MdvLxJDA2VW9={`Hyhxn#c<-y~mb+LDmHQ{hb z&Aq}`7)DMY5Z;+eZaX!|^v2FtbzDpS3k)iuNFC~s;&w{Ha9=pTWO^k>!mD4S$Z|27 z`}8^pG^%iy*%%&!bdsG@h8@=Sgat}2IS-?qWcRjE^PIJv`Q)35r{xqeX0n50JQV*l z%XBpO2T;+@fbiispStgkjvSZsXFdAIeP+{AQL0J-ZIV^VinuII765 z2(2c|<)%L{tb}gjOEiUM8#w)%u;pK~d#bx4(9;6l8%8Z;Q8S5E%U^--o$$h}vW87_ z5@3g(v{t^Fv`b8sS#b`(^|=Zf&qb)Jd^7*`|<54#t78)1lFx4&lclsoW*it@NJz!1?h-FjXx$2_KLl_a;2 zO?PDqHW|k#4mYWAc%Ak#wB6_4q#YfV5&(o}9HceZB?m%CM;eYf^ z_*x6j&imh||L+IGM_%^2MBsyzM(4%-G$KaQkNX-iWYyJ?*e!#F=5nXHacrEUk(*vu0?bEk-etDGTwpNoOGPNI--4_hTZq9p7qKYQV^T{y z=<+Jc+oRtx5zq-=0K!@oia2v;N)G6RBm48Tl@TmQM)F>xCd(LNw^Zj^k-WJ%!69o== zk1UnNF%B9Gq2qVt1gS%)J}VVF3~U}>DfTC3n9RJPa(~%c3)6EW&GSaFA0?jY_Q&OcolsXZOyB|u8M9O&rL+5H3$tdH-`;ffX zHQ@T7!AoT8Xk1Yu#~=xV9ftVmCzcVF0-^w2`b*~YyC!1x_f*Ss?wvVpE20h8clxnC z(uK6YlJ#Qpd1EL!#mU13gHQ}Ag115&3!N*2R#najz)#2V zAL0GPEc#IrX>jZ-YGENYf8k{&yJx|CKu!FY8?k4VsTNqSpRD+z z!%7jG`%cef3*p|OYM3Mt>Xz$H*zE~z9-ccb(0HM^3S!jI-#)mH6YjJYBKL{qEw)*( zEg50Z%Qcf9fB##u>e|>Ad=@@|P)0&OsgyYv3AS2{alwEqJ&-Ha5h6`g`{=-Hck^T- zM_sH|156xTe0Sc=cJ~Lqm(yC@j1|?|=+XyRGObuyL6yulp@ED>sv*^?xsf^3Z=T`R zbVCJyEMSu9mA@=x%B@%#wDXcLT3v^WNpuQKjr}P$t;KOK10hSJgjV z_EA7&RATa=|5>#va*UgyvaP%iHkc3j4!&6r^=Ey^)lq_cEu>vu^Uj z56D49OnX^RkK@wo(a&bEF+%v}LWIKITVD-pE5q_A}wnEjQ9mtvPB_Vr^T7IKD)Wbjk&S zUx6va&9gjsbdB3sf7b54P&yr(4d^_>_E~Q>P~WHYLY5WF$uE8ava71rjCaB$y#(|*gW^8{fgbSAzBpVv;WVib|Tsobw-_6E07g*xd3Eqq^LC$zI-x4OC z2pY85u?c(cYt8t<53&MeFETlgOMK}r4xYVDd8&%F-wNY3-Jd}MT3Rar<;{c63ET1r z2s!~MfaU%;Lc#YxO!qu9!xnY99LEtT!TwZKR2*hQnpJiyOm!E~SzkhasUbJnS1D}$ zNY&{(iy}^#8H#$I|R6IhI20$MSM| zQ~44rkEI@_XM1(>vXI|$Zv$s-zfY7yP3UGn>U|JDks(_r>i-w9Ya}Bz5G7S?;p4D) zx%Qh&Qmup9$6Fx!ht|ONvp3}|$k1_Q54-Y3xAw^@L<(zX<*o5xj)YctOd|*O*N{Q; z%(1qvQOUcB2%@+5mX+DRWl6;-x{i%ja=P4>$4f&|&v^(SKPv>K&y)QFi@%dxY@O`E zvcH~?KWkpUdY?dK5L)3EI~P46x3A(8NRIeSQa6msbptyy)soYcZTL|!R+XB)Ciu^u zRw4RqMLEGr-gO7HTekoV=(8|r)781ygfOjD0HjeAp(P?chvzo82ob=r9J+}jfQ zFME*2bw)2kI0lCHP;?!vhw+~C)r(+4wF>c%+woO$(~uF>jTpwyy-C{5R2eKkgvz+x zToXeWa#AiS<#vggaE~InczWbCFYNZ|y?*jGopf_`P$-!up=+c0*=-kg6*>5opZh`O z4?n*@!MY?&3-LPX3n#qi z&m6oNV!vR1`vSqwr5y^-EQ6P&?y8eP@P66C-E918MftDT-s7@l2yLv14AMYwCgM^Y z#^UZh`B6G5YGDRyYSLt6|D-!yZ2$9zgGdx^AQh}~Swt34J4UAOI)T73sYL&Xo_s0A z**5*LwtV?y<#I3a=A*sQ$i2rOcLLetkLa=ok6yiv?@P;f0#?)m>K`-tQj-k7#Gu66 z`ARSTgt2?87v7isT_LD7w>660-(}FY5U3l_FYG#m=H`3dG#YOnGO>;I^-)c}L-YFl zbL->G6nbR_V+rN!;X!`#&920IVmEBL*ni7k5owWW!HS|2v;F5XWDI$BSz&&Tp#DXo z6^6=tvi4C`ZLS$8l5Sj80td$w**qjIkNxBcq z8f}J-ueakwo)YL1Y$BemT1HC9y!&K4^Y%V3!0KkO66{awmf=iinHfa|-$&!UjGi{S z_zci^;f$@`B-3o{K~=`#HZ~>#oOW|Qwa}cpn=)DP)mLub{TutZ&6Ab2JN!_>duOZ9 zAIl>CA>NgaYRO)4LfY5W z-y)u$zTCDq-@aAX=mKJahsz#h81S8^VCG9z&Pmm?)-CUkevXc-h=0y4AdvFuuewpb zkEME3$Kmwl)q}W;-Pt3I-vwh-+SGk&Ddzh|5Sc!3cU}+i3xlT*ugk|5!uEc8Ekp+baKcKj~3R8vZXqcUTs zEccU&Oc7M+lW3+CL4qsAwL^tRw9*0kG(N>s6wBC+>-H_X-Lkk*r9gkHQIcrCx+bok zkOBBBD<)rQ7-+{KCC$Hgt)fKxg*0wuVo1gEamD!)95Nip4&*h6c7LLFYh=>07{}bi zePJWBwLxSzC`kW+JfBcR7}JF3eua)3ttMyK4dHL1dW${ipm4$*6wBh@!-xH}NT*%y zz3upOMegzJJIt^>xgSdW;9G>@KDfPOZ83jCh#svgtHXP-U&^T!}5e z?Q(EMQITUI$(2ja)v)f@&K!lQ3&a)}2}xm^wgHlQV(3_;gmTXf*;3|5y!v1NyASc) z_GXfo$^&=dD)0|f6rmyvWxqK7pc8(?AL~#Fh%kcDThlbsOQia(KtyU|iU_;N})H$|6kd zepTN7E{kTNqyy&sl#f%Zb7L^RP<6?FMo^De=<@Ksa1fYi*_R5H1okK%>CsKaz8lEo zkD_a|-}|=#z2&J#ru7p;1iz>=^!*2RH_!VBNocHD?U4p~BTpWmBmLd8yr8^qF$7)a z02wbX((>G0UPlb9O(tlzM5E9g97Gn)JmwOGl=Wj=j~7KceHheL@w~Xcukfy>I=|_? zrcs&7c`j7+7fnxQ2E%{&7)=P44xV7($PL#S^?fiyCx@52>DD$Jh5B|jO$6glxdACg zAqG;`UZh?!v#=-!*V^v%4Yz}Wl)-rt0j~IT1iYU84X4kKX?IqQD)vFU;c(xfub^bm zhnP|!AzGKn&{ZQCMuAso3&lZ4ycPeIS^sQYU<_-DqT9WLEa8$1Vx{8bH6MNwy3N|y z+fCg5Y^ebJDdtM;+;YrczxbE|-D*!q(;Pm|DO1^?jSd@C%|2{`iAt+IJX_kpF}7g^ z`(wlvFixa%FG@XS*J(7U$4yxe+CBiDnlB%Ie;XPgMh=hMe;aq;MYSSX`lPqbsd(G7)N*a?$dXUI*ov_FFsWUiEIQpuq|vuU0LM6DtO z&2v23QcDcrJ{f=cg|?tX1_`p;DF67mkK=i7)coR$rNxd!`GM}dZfFb_spZaM2d?e$ za~o}$)G!>Z3jk)i6BCb|TX%lFGXRO;0Cm(xsu*Q=Z}a*^C>@5bgi2WX9E&xgFE}c3 zkp-lY(LRFn5j4MAlZ{JZ0Ez~Gme)2JREhq3&FV9J`%r~Ovm@P*h5pxf6AS28zaZ!L zcU_vs>e-c=Bzy0!Bn(x5-ifUW%{G6dOMj3uNSrn53=)Y$_m=fDcszoq$T*siwp!)8 zSRen?uVKd4dd+#Oe6f$L%@TwDr_WK2R5rTZ(si>s@Cs7oZ``rVbLqxWA@vx7kuo;3 zn}`}&KLGpG51}-N%yiqOy0hz^G@a!lXp7p4`1~vrXXW9XACojM0xwE+b(~1N3@q3s znxzwb7Ym(LS9Vog#3T~G>0QuMnh!jvFSR!x6iM*tc8PhEGGgdTs zi?2R$t?M9zenZB>;~c7Phv9PfKodEzr+^>@(6o7N4>(~cp`f(FtZZWlEse(e2{~ld zzU(g4TgcYe=zi@={%ZOu>1>3(PMpJNXvI>b!1;e%00A4T&{O)dJ0aX(*B&~wJZt-X zu;oMvY?{+fYe(rHlUTrhmoD=_Z8YGk|0M4r^siUrX&fWVlkU&8>YrVjm_a~J2c#`59m}6$WEW0rBDb|R2`H8{2{@bTk$Rnes&YnNFT)m97 zBzGb#@#A~e#?4hltSz=Jq;x__yKGugUmgwyVG;441ZWOy_r9@JA>8O(x5JT8 zwrrqZ4D%=N_kMJmsL43Wb_n%>SmPQOSRs7iKxjS?$;FiJD`T=38CPfAKknLxHcd7r zGw24yFl~pU<8b?bU~gR$ft_q@1)n+YUv$P=sJXrWdW7>5@ki0j-1f9PZ>-vTgG!^S z>ws8wvfE$y!{EkEVmK=0!R30n86E*hsk{N(UP3N=krLE~Z*|nF(a0YZ9$Q*(z@oX` zCoW9|Zg(Es@UnNcDFQi!6uV6_;W;~{-6vaN9tVCnYH6EN@CI(5Y+^~VbN*>XT)7!7 z%PUB7=J-kRX!0k^CPj;+o4EP{Nd{N3OkD`w0)vS+rG9#VYAsE;Fc;Fglg`i8B*M8} z3v)V27&bOq%40QRZ$TN{vw$gxD)`Op<28X z4g{t+V$D3iQK)Nu8F68IcpI^F_uUrYCpsoFM~tg$)LT{x2u{Z9J^9wh-5Xolv~=uT z2o+#EiB4XgBp&P4mFMEKJe2PeD1bedp`Djc260h5xga@EV^CTKJBY0k50&!#GhD_~ zN&O|oM7{+U;2@7G6*IKcmx~7SgIX5NKJHx&2vGBC5-TO2cCDoZt?o#293nEfPr?hh z9oGpt&x&+aC>0@m<9Vem2P?XgaCC^~K#0Jq8jlsClEMPC)lRLe$?)m3_j9uDRG}bH zOSCZQ`f(Hif7za zH{X>pn_N8GtodK5NQP$cJ}J6;osZ;4{JpuTo>BsUGXcoH#(V6iW`>%^k+oZ%zhn1l z0bqyzB9N${IwqYXxzgMnDm}TOMU3xx3aVrHT8d(s?dmH;narBvW|$>qgq=UCaX?Ml zk7~f~(?P%dNg|)RtN{X8zUgRy>nPK-KIVn{{GTWuK^Ljst92(YT2>uY94^>uV+|La znR?x->#jR31-FUIr{AOCls}fF*jqg>vIey_M!5VGY9?oxT?T9Ssci8_Nl*G>5s|5L zJsBT>8#<8KXAi|-9iJ%&;J&V#67v3+6(SnwGU)+_v9@l<)@?2ZQ_11qU5w!^LAo1( z*;XI_65_%-#0o#0^T&2OORM(F-?L1c+%AI74P=m;Rlx2@&Jt&b7I%$&poVGnX#E@J zbZ-AsklVytR)&Q-u_WAqaE*rR=bH801^0c%QIxa_)P>cmuJ&}i|2r+Se0NBUVt-HH z2c)-pn3A22#V_Esm<^$Ls@)bMt=||J#<))Me=t_m(4(ti&;ZEkSdYxV+q(zRssMv? z;4eHT=A_w6_>jez_=G!B`?{grvO8muj?InXyxk-EQ8&RNbz>EeDOS3)v6i)SGuGim ziy%#)`pyZEg3MECj)X9TV8`Sy+_ok&oI%OPSR>jiNk)YQR!ZhUGa6b0>ybuo2}9O@ zLwGW+d3VOljualn3N$AZ~=(Ps-bl1No;zN;4^dcNrA#~Cn6Q2h; zCfHPy5?q&M`#UcFW-)13uh|j=6%_8&j=2r>e`W*Uf@fR?bE8m|FKt5rx$+zUnGb2k zBwb7>$>w&DAhSeguX2uG_EQhn0xlpm0V^yFQk|h4@xMCCmz zFGVy)VkgHy;nkUYwf5h1{Y*DkP$Be|V0zrpDLRSRK@x|>EG_HB2I1i1np;}~vehZG zx>Zj>*lc5gMB|_y)DRKIb5U3oPK%l;N^BROfh8`__AoFJFJg8~hkZ&Ag8By!i-Yuf z|0f&4Ti6Co$%+`zpUA+P<&L4*jwiJGVm=@pKx&2dUZpBNQ@Nr^kkRF`e{qdm?zN#Ga1AE zvjgvXo8yV-zVfi*{Mdqo{00J*fH4J3w41T!EO6e9u`M~|&YbD?{=(m-yVx$}Phl|R)Vi~E4Of@y54IU70Re|kmD)X~)lHy_^-Z8$fZR=oDm%`!ton?Eb21KGTUt|K+k0T%vTl=Y` zBV&;`Z&metj)fC53`Gb8`cuFj@wV&7V;NjNU&1Ab!^%UJW#)c2Rq?H-3i{R3he-lS zxDH<_H~Nz>1%e5#bC}leD{t~YwGwD_=6jxeC-db%>L&yQ#En;gwdD}viz|5a3R^E& z)kg69$;`gQtrSZYm7iY653g$yh7h3U1ZNR0DE^p?t*^6!R_iEKNUubr0|aQW&9+K8 zuHOq*4UiVa7YNLqJa=_b>9h|HyQ4{AIo;>XovDnPI;oz z;wCnV!%}AZ(2l|Zpxx6J5wtpOXXA1w3M#nIB>t8K4T9;KEAA%dHUB!Zf4qY9<%w?i zWCNd{htsAbzl~9B0celQw;Z9fApOSHltH42~PT8B4`ae3B z_g~lJrzTJLA>~jwJLT)Hi)H-sm0HHeU(!keU(;!B8-)M`bIhbiaM0V^8xWBTh=cx( z3lctxkQv+M%Nu)|wULp?!U&^p0I+@N3A1}E#D1d76HLPg5sY0G57RNu=odiGLVg>W z#Te-?Mk^drOvQs>Ux_J1owoVI`b_cVw9PbZWQrC71c4J{3=QcFC27Wq&f+emL<|AEwt-MKDErsl-L2tPqjNTylumYTql|T@o&c zmU>{0!*NTDZk#h6P`Za48h#hIU}swxQrC+O)#WQgs;3?p=HMJLO`qYOthTw(d|MkE zFs<%I0#0bWnSLuSsb9Dtr674D^zl2@$?f;M3uZo?-zh*Kp)O_Q%(e?kWe8;m;WT-T znivPWt39YAUTV9y_Pz7&-!;D&Lf9LiwHHzuMb}{rF>s*zeNsoCGe#|`>~7z9qJo94 zl9fTO9|LVsnQLBqp5frHoUv;wi!SXCyg%<8?X?&p*$4=&r$vZFKrpTwLnjn4psp*D zWv(GG?IX*tYELj)Ylf`odj!6(J156O4Q#8$((uGE2EZ{T0V-TLi0m>TsLuTYrDCn? z*XftsntQLCfr+Z~Y_3SbCv}n zvM%0xrWjkb_AlS8-D7fNyS_w*dURhHP(T#QQ{v&Bp3Jwxg3aicNU`9OWy1+mrCHcD zp81daic--9PQodKgfNtp+&?@tHZ%Z1Psqr~X%z2Ir2Yz@Y#LWC9w_66_L^StKG#vB z+AYxCyQ{|)0Jo{*6L|$G1lch}4s|oII_X}bR?>*oBOp-053#8JIi}VR&Bpp=ET1+7 zEf)LwowJvTu>%-&RG{o)X&pe**3e{6kp~{oWEDCU_2aaTFz}p(Lirt#@dUQ+&?$G>z#mseBuPtH%6FA2th(U3;KjXUEMXI!J}{}{+XLd#v}y*nCD2BpD~VVxgIm#mW-HC56Sfe(Q|-Tc z`N4kyWg?ZIB;r4`tiP&UoMnpu@B_ymhi=*dXMFAU{Y9uvsIM{}U_N7XyR-Q;7v@ai zwUfuyn?KEHp*Fl$lbhGRLu!~U!h!I4dmuqRQ?5UUDuA~>*n){K22!6LbLTIWa^?N@ z55z0niXG*Ccyx@@D!`0=R61++8(UJOA;su=VG`KGz|Pd4=s=)tg~91d=@eo$xhX`=K?EXI)p*ZC;CbTBtU446|IboEH&c;>ToonKznQ z=oR6xAmi2cRbN{G$25EH5BQEkwuxWD^Z}X*NPh{EB@|n+iLk1izSY}$+LR$9J~47s zn*s83*jM{-L2b;Q(7eOGPOePRmqbCc=F&-E3kxVcTPlEuik+Rkf9J}KwPjg|!XJft zXv+?W>XVG!zH$Y^)qf?q5PVZHbfI)ks)m8hwy&aa#uSyLh_h*Q@4ufi!vF=JYTjnj zq5KUK>X`#xtmtzSoqryP=$4_Vc+8!dW=aRya&m{DL3jgT0yo5SV`Nu*zcrF%3cytV ziqaBHFj!);tv8_!&n|%Hn4c#VwpVfzwx-6@v1zn&?roRvY?nW|R8Ax78578fH#r(5 zn0!PQ!0oRoVPom%|7a2Z^!Ay^ld9TOPc`*Nj!?=R(h+PqX=R;Wp=lA0R3$&BDYP~M)Cv2x`+x?U!Y>uSyl!UJbWsM1Bw_)1(oSc8lLvzA9o zxm}G~t+%ekMOFqh{9Qx8WT}tchFCe((ADC0-&$3@%wVGE_RWIelDj35P#vyN}U3yLR2rHQAKH z=ZNF|$n&up+7US#76rvI>|=GsNXJL;OO8pg&CzVzJ8{cvWJZRDNAk7!VO(VYjt{p% z!8ShX7MdKXf37m+eB?mj(Y{It9$!+5syv6D#lM zTl2wEznbkmuW1c0K2;A9f)NHjO)JmhKi!3tMYSWjHi#D^e|Dg}Ca|Q@v>BST@-2 zVt6u|JL%H|>{o*DLL6LUU-0%=yqBaVxy083`eC$L3{SNZtYI<$x&FsxO zH?yb((m_d$&d1N(4}Z7g1sOFENon^;;UV1u#_Og@|M$RIbTu_SFT6+RrUBh>`q`)k z8K4BXGy#COk>|(>zqv#bzC`$^bDhI>p&=-{4n+!n06OeJ4DGmasUqvqFsWyt9#34| zF3>?mj$o3|nBQ}XmD-qVTgfoq$)i=vYdlVdVxYgj;&M)xPjr61W=PFJ-X$((&PzxX zHv4BPQf1~Ik`=>ystG74GA_jZh)F{4$eb$(MIXWIIxedXNL9o3KPre97ZY0ta%j|L zfq~QS6OZD1KD6S?`WICMl0={v^r-6vuAZ@xf?%MbrTArFQLRPl(1*I4EuXsZ=qHDp zOYEaeWv}XE5MPeD%`8R{^o9vd5i)s2lp#9x@@y&*%^tK_6g#(iqu&}2OxA~{@JvAa?nSPBUCZNU7-L^+Sd&k=5N}WcjEHc4pNbhM?kMw` zgleD*@zPD?JXpAGu$uB^57MLtl3yJMep~B>{cqFlQ=+SAkccg3N8Ax2MSz0gQ3L?!~Z)q7J;ItzC)6b=EoF~k#vW{^58 z%CDcJ%zwawbonH4{n9G-?X~RlFgS0i<0`TizpS?sqU-eo^RJ;Evx7M1Bc920?u~3c zE^T!}%tHJtag13$0J&iw@T;3i6V$qT$}W#-yU{#PX$(Cu{UpAtDR~Y5TMI?I?NFD! z^C>;Tq1+|eoMkO{v?e*?yL`G|L$$D7K%Z^@_HH$HGmlHHkNa!DS3g6Y-N~!rM>Ih* zw9EsrKlV~rxhmUt4v;=8tpOo_AD5Uj0uCa79>8GHEcD`iJlx;&yC?8I$()pDxi{4CLv_XeRI1| z1Z}>JZ3n&ytznf8ZN;z;ZxT9z7n+*=fCMSQ@p}4a607&ZZ}klQ7St@aR5j))|GBSo zk+1@e4#N<>pm^8L>3Ab0O z65_dC)XrlxS*`(WEgo(l7)Xr|ewj@o(=~#pDUO=~Fgb<(b%)S471^n_=Rc(vpe0B4 zxrgyb^^xxUTEu+=X+h}& zApvpVric~|_i@d#L|BrG5FC^@)6YVwJtXtfIH`CyR1-p=o^I+iv`Q&S$k}=`(>pB{ z1Mp3q+uJz1vvGKGZh}%X{$8nzrdt(biAV2gc?qXyN+RNQ$!ZQ;ZoHjm z3kTWDYxE+i;LuEEDLn(lK6vqv^y-0Qi2Ut#638J!PU4>+zc3+Z&h^}n$%4JpvR?3l zgiHbZW$oBgeVHou;`~0FJ5{ZI@s$O;`PnbWfhxj5XZ@(hFzswZi4-ELLvalRbA0-< zf3Rwsko&qUv$@Ia8y(^ftv?o~nmQ3DKJrJ4-}@G%b;XvAnOs@x1{dCqz8X2=o)+NtJ~TVzr;#-l2A;4Suf4 zP6xhqg*68So7Jve7N6qtv-h|BYv515A=}Wy(It`Q_Vq?z`Bk+E@yHR6Wt13)TB_<$8NTxoz_c zt;eC()VH)tgLEF({g+swAHn1C}?Q3f10vWq9@Y2 zunNEy$ux1)vr=b|qF=4icMvMe=;qwHcK_YLZ=Z!eb`|RSA&q(vgAHBwkYjqek(-l> zh8wH`I894SW>PAGLPBR}XN7#-Zlg(LiK8B}+hS(5hjiYrHd`?%ISeix4%Y~J+=KTF zTqS!M8g96z-grmmG=BK9cs#XmG+g%uSa#fi`QUqtTPh6L@wb2ec1Z|02o7a@BPVwi z>g3Qro4V;-pR>??@0})R&T!}5=gS8BFy^DFQyTN|L31VcbD_);miRL?0yvGJ^GaTR zk#@P60$|Dln`-t|Vk4N>3H3Be@(NWFc-e$q=fiYEnb~ER}lZ2%^ zR`v4&i8yTSDBG#LjhQs>-#bk!Um+;Bj_TPBe?6XP<_qro?;t2h_ajnzDno>y385#_VL%iP`okHp|1ZFinqn5dAE^+cfqKi<{ek_}t?@vvR4->SCY8 z=2lW5ltAiF3Grt7!y~!XPO$N*tks9j4wH@s-QT%X7JoH<7ZQC~sT(gOdll*0!pQCC z{&BU<^m&-1{xj?=Z$igj!p?~@7DIxr!F8l>3&(WXI26H!T;0>B>m{c^rC>adEuNC6 z1@X_veRfqjs!WrMRE5-tNw@ZKfUOAnLMC~ApJ*^gL|hhsJUD^T3?={|vSfki%N3lU z2$EO<@6o$Z#iQ=Ie*J7CJgw>H z=6IqIOo6`;PM9Q9bLz8(5@WH-XT&Kw4xz>XHSXFCA-4^T2k6ADZJ$ycVda?TmrpHz zj_z~MHf~qSit*J@BKK_O9PVDKd2BwfyH3@0?ve9vEr8jC{Lw?s^*jw@)x&qcfjjk7 zPLQsG)xBOHjhQP8(yaqgWvcwU9hd&7qlMBkopDpdTNe7q+9nexq`O20Prgpo@dR^V zvB`O7Krp}ySD`1z&A7QeSN*Xfwmv=x@xWtvA4=#EEEK@3DNL<(r)~WJ?08Rv!J`}Z zMbngqd6IX&n*4KG;2lX*NZOKSzlelM{70=LDVv&hN?}{Pv|f8NGu*sSIQYqIQWj+0 zGs~c;DffKNbpH1B6RYjxEJB_7jqx?gDBGN=X+H*U7=u`z zuB9_$td!+D$EdJdUH7lu7V6=F(mQo-Z6{MXuv*3|w^5LjYggInxwsts`t=IDj3i)e zo%m`-RTaP39)$)u@N2GiUMLKb52 z^dJDqeT6Cd`9^^+ukwLo`UL$|=&q?x#LdRTpSMXHX3}g7T+oLVP$*o;#l^*)_fDbv zyN>_}61q!C$?66KzlGGJmZ{rrHwdp3KL3?{w;H4{zqI851sWW(xQ3l4pQ~9LJaTcNu2QbJe z`kQ!o4?|S9w(h+f2r-uS+}(C;$aXvcIe=`{<DA3r22hgwD!Uftc5aTqyuT}R0Ln9S#?kM zT0qDmPSpgAOJRO~jjY`_Z{95Xa5kAqEF1MDAONd&N>o^wGEBOAiV7IEmasBItsAtp zT_d+apdlD~oE028lYys1)`y!xQhgYr5~D_>UGcs6LfKb z-<#c)sSv;MMj7;)`SF83#8^qGf92uD2w3Lkm)cJm*k~tmtU$iR^gedX!sf>~Ud{}R zSZSust*vlLTDz*++}zGh*W0>6Rr0sQDe+~%OEolNKR?vd(*xZ;CR4<@TUHtWZsn3c zS)%U_ujQUCf=+z>pdF?~Rtsis{EqJRl)is3W%b@=X4QxD+$X`3pEENvGcvv{?;)n_ zq*S;PK4e?Q3^}^p%s~8n9KP)F^j5NB4*j!tAKit)8W!YPA!-AF^LTq0M9l81588-7 zRgNBc6pNt{{AhG$h9;r|Ajkns5zx$lIaXC;gcI*WILj?GVq-TNwCUozHex_T4{ z#TVywt@|fZe0aVBS-PW^yMOI>Ih)yCX?y$a@$paaT*OqkR^h;I_PXa|%J4Sh1o`Yq zAF}_QBm`{onpnddW3ck>Hc=RkdH)1AS)Fd!twio5*efkwGk8_|Z2Ds-x(acI=+3@A z#p1E`y%RtKh}ySiaf&&>yQGZ_vP=YmBoXuf_n6)dwnuRacj;2ZH?w!nlJBV(a!U&p z|BmJOJE?AjY*Fy8K6Gn&^5#*G2c4&FTEqrBvT88u$-H|lUDJ*wV z;W`;8d%_e3aFH!ymOW~x*h6SL*t$q56ZzXe8Ql#q`kEJV!rp!7&!VHnlKGNFhvXbC zWKeJP6m2?ozp<|sy0rVPo~JAFLb?peY8M>#m-j%*gs>08*XyeDtW zKfC88WJzN^pQZgvwdg0+`Km_<|1dmxj%A`{;)h4jy?3uD8J`gW)gnLq!zD%43cm0d zNO9o7HF18JEC=Y39xBO3#m?6K>gz8?DX`y^Y*bce?cASUDz&?!6}RWI~NE_%(hI7^K0c%XyHs&WPHh*)Vrjr1Np03-3?&vJ}Iv!Y2j4YfFo^2 zE4EGY^44lZPo}Ot{YY;~men}Wddr}e$t~VVcTD#OhmFjA&*8Tm1S#hYa+D z369!?(jUqVN@QCKQsTF8J`lr&+*9LC5hf*>d3i>6PXi;rAsaW0k zZ;9hJ%SoS1j5Sn(7W)vV!XEmREa>OJqcHzC9MqwY9s;vjI}G43DMHE`@P>v9?zEF0 z&@y{*?*t@2fu)n`cX5&_6Jb{V0ubm6c2Cmv<7Lq!1PFQ+<>ko@SAc*xKzZMQkLj1k zNr7Qn-!xs!Tzz$+XMCi4V!idZ=9R?{7{|tQCPnXYZHZ6u*OQ{ilTNU~xxgD+wFhE- zl$rghtZrhrv@`Hp{F&zH@=3ZEj%8Kuw2#|XO@Wc8ZlbD$D8nsyP63Rc2xv$hEGe#X zr*=v|=6h7H+0B*`)F!%9=EAMq1+{@U<24${MzNFQ`PYLgb&}x3IL>u^`YIchhNJq# zKbdDuR!SZa=>yaS`G0o4ox0rk>pjOS${b5=6@~a@G<usk%vTTvKbl^$jxsm~((ZN>WK=jXmvN{9ne3+}`g98-|afR+AK!u)@v*i8Bm<gN8A_+8hHe>9=8WfGrl&3w2Jlx|XLm(+Wh#o^P*yq}_& zLqH=c{P^(=h_d7SB<=Dfk=HsT)nZfUvNXb{prL^pfHV66TtY7|uRpxO3ggAO%ub;yZG38Bci;{{0I56>pUM;97Z%FLXJzk4I-GVbk^&tmT-MCqag6{dn0T8z*_g?*)eY(Cib9p|4UUv|85%b$!cm~Zr-U6qWE2$H$ zs1ZY)Y$<;6L2YM(f2Ghn%_z$`ItY#5T|fcKiZ6Ey?S0nKjy-|zFU<8IxB-#w^iymg zI!r!Xd;5({;>#it&EH4W{~pr;JCwcf>ai#QposIf*qnfmh5^(H7ehmkNmTFxZKw<1 zUdN{_v0Lc!rwAxD?IuyVgJEcBIE$uy>hm@ZUnAb}(w8!WYRoAwN_L|hs`-Wg$S-jg zB+t$uh!q0BJ~Wo<1(-MnB>o)@m1ypFXpW96HSUDj!+IT2-?hm&%dsQl6ukctHYbKa zI{Xo#_o*Xv_zwXifOh?zH{X0qcaczunfzwr=zT=fIJ50qd*9wTUe!t?2*dyI@NiO1 zP*BiOiSX+EG56QL;cb$*L(SN}0!uWF0H8gM>b1iZ6vAADNJ1AA8Hlj0$>VQDB^~OK1alOW%;ElQ z{bLHE38&(#*@pO&`)~%7?vNl3h|7 zfB7mS>R)<`Jv`s`o5@>3x60jQPupG@%p46nJv{~Jo9IU2XFqa84+bNAdB&RZj*S%t zwJ#4m>qjM|JlGHl>*v0g#=q}{VwtD?)jZm4*%1*}Ui-VWn3bDyCFG=ft^o|Msw-)R zoW}|M-tC@0CVmDz;>)>({XgTBdi15tpCM(v7tcUraRZ=COn(Bu;}%f9a1xO!>T?Rf zKqnjh#Gs8y#4z(wikO}?F=l_-=U&@)tq#{##}FD3h|`~sOFyCS|wS?@E{Oy6R`JMsJL(sly# zz>IRCuOcUcfZb!4^F{aVq~tFvZh4=#FO<-4OMDT6Jhf16X`=^uAWNF#w2djRSGr?9 zvnMl%2w(o`t2?tvcbFpYFm*;9RGJD^#+Fiba#KgRxthr#pSh|PDOj;+AmugMYk4WW z_WA`i=GAp?_uD)O9&;#o9Bhg#Ws@pnTYL5_rj`Hc8-iOFxB8{sGSiM64kNPt?QTId zS6&S^9qp0!A*$>z(}~!(1(x0X%*TGYI}NBn>)o{Tna+ZG=RW}|_DBIKp$9;dF;^U~ zu#Bz~dz|QDG>a7|yYA{;;XP!zzR+or(c}k%Smj+=KCtg4hdU<+Mc92m~p~*GhsSKo279A0u+M;R2 z7o6PrwE!?NA=GB727W5RmsF_EJd!rH*=pA~7TdijCH)5fYLkonTI-jjTZDv+v&v9` z7Drk`KiOkS=Q~ZOW#5l2oSpY4_C)%JwY6mUM~oszJz_I_>wu#03Bk{RNIS`y3+8FE{!xHo9V2fT=H+ z%b4o^*%ROapIaUTD*3FbDT$seL@SAU08N@E;#H}AYKp3~Jv-ViPUYN-1QCxOU2nw< zd+=@uc9Vphrhd1JC3QLYJAfZ|-JaIl{0#ua^?P6Bsx!B=w5W=S5=Bx_(moQsf*y=a z8z{JibUO@ww;2cnkaBoimDIxV&b+quFb_~ee%nXB+gb7YK%WL~A(p8L9VnL(%c=RP zXq9FOpulN&K^r4qpbGo|hA~J?5fYwsX*KME);-<;P5n9nbwTP$JqRV8zBRgAH+Tbl z%g`m!%{!*o45-52z`|k9YB(J!z5qkS4{S+0-!RXY@dL3#^(y{6DjIY@E8s(oQPDDG z-KD_*PlwWJ0PGlOOy%L7hJ!-;-qoH(M|4}DJTWnV0ps`UI_TLE;Uh0e*?~5#_;`7F zx3e0~rnX5!r3jzV6Q!L^E}LaLqp_aUauhZEDmSr;9&Zw#Ph=DGz74tB#8qnS;x}gZ z4VRe+f^G$QbjZ-|q8s#p#40UOL`UOs8;2-p0+4MP^1ZdS6=?7@4rll}ek8f4_f;^g z0z4uE@Pm_J%q3q87RNvfRI(tD#mP>ozNf1|>**kLizfB~FhOUu-*KSdF+fG`OIBk$ z5}615(6}ems8*Y=lBEhJ)UYSxw=Xl2t(tclcC)K<X?q8KiJ=9x6QJR65thC>_}LV7 zwx-o6n8Qek@0FSZzW^J?wfu4P6!dvN0Rs5P$jHdh(9q0`0dwq9@?KKoNs^PNYVMD1 z(0U2v{|j}h%*v7K%o=Q`B6}`3^*X%zh^k{3JSbq+OY{{2FPK5`ehHR_3ysXwrw&+EPPfbOJqx&<7D2ZV*FAjscEk;w)3001e&Ue42jhYd|Xf>J{WV$Ir* zw6S&CBdvV{7&dDCd^sgRq?VG`g_TjT=@qyEef@K5E=#|Hg`X>fcZ-ZR)9IChn`S>I zcg38?4nNdCCR6A9doPqH>x~vIajKTp!oC((m4znTm!)(+?5>j%`ezNg8blNGnqauMGy0b%a-)YHhQ$tJ?3wksMCXghE#8GWS@t#cEvLr;LqFq2LkFvaVAy+yGc%RvV_pH54&J+k@`sYsES^s6j&1f# zF>khoU~jk zDN`iaB&Vjq7Q}%pWLGO(c1GdU>v@vNugp&c4a{Ww z#ZUtk9PA;%+66wD%M!6eHhYJcCFf?vw<5fjb_zFYUAf%#-SsT&J6*q^*7NL-(gu=_v|Vf4Mts zg!RA|6Su}ci&v^Adx)Wh2Dl8#*!a@$!7sB|a7no_S1T>0hR9A~k%cc)6piZc5)aE9 zN_`e;L{SdII~d1J8{Mlr@k3)~^+7?FvQEi3@_$|eJ%RqAaQ}6VV+)Z}v%^@wi!G!W z*+aa(Xi9F5;sp-J3a)1_uA5FQXzT8qjPJz+$%+VRQg2tzE3x;Mk7t3>nFk%t1{}7pHtk+N@*;~rxPc?USo!OkF~BRNTdl6p-A+) z3?NwHejLH`FQ(ZZ$GP+TUhh#t-30b2sg@0nOb(tr!ZZBANiHb`>r2HX_Ky<1jA>Ft zQrVClee0M)OV4}+oSlEF{wp2gZvUm>_x;J`Et$E*m-_vCtf79*P)`ddUI(@rMS3@K zi6(hpbkCnK4eQ?j$uWP1O1J2LXp@vC!s@rA%G1vg& zZ*^E)H8@QY-0z?stdVMT{^55nV$MbC41-GE06?XkYfbPxw*V;cCD=b$KbppPQXLTm zF+e-V$}OInW5W35hk5W?Tm3ij<@!1S(ZC-iqxjK-B;<0$(jJ zLlzj_{V{u$Q-+mfSbKSIqXP##_eTL(2*=80sWUS~Kg&`dD1~5B0P}a*F!#;fYl#K+qKA0%Dd*2he35?;-MUoI(mRNRf0@~oj%Xi(Q*?mEx+#dZx(f_62f+Nv$KSusR%Rug)s#q(H?y$#T2)n*lVfgT@6XWXA{y@>soqOfJ zGBPp>!v%KkJc5F29{T>@Aecvh5vY3vC?E0%e`WKxM!N&5qXl z6mTc@_&y%E`{2O?&`rI@#oFH99%L?ahSf)}jRwP5K@61y=RH?K&+P2%1k8H%sKyad zC;PUS9CKZn*_7J>`yT8cpUx1{URP&ctg+M58e8g3Vq|2@J%S2oK;E~ourTq6kBe*Q zmD(fWZVZ@_j}O|V11h3PTN+I$KSAX&fOH12R)83hot^D1n%2MEy;!z=c9VbaiXovK zQ+JvC@CWHkkWjvZgD6Up%L3y)ehJ9>Mk`ob(X{Q&%}wx&t!+wbD*GLrSUFQ$dIro- zDpcXfN~%9V)ut~1JMAuZo792TH{`ts^iT;&O!wm6az8&mKd8)o5Z!6QMdmCC#c3gQ zsmaL5C@A)P#QxF;+*{P|a03Y%PlEMW`g5hzT`BocG1_Ll13bG&*fAn*d0Dc}X9XM$&eRhOd*{Lt9H|AGoQq|pTRpR4K(C^&8^ zJZm=Z6FKP|1o!#F=Z((xUs9aD4ZqTKu!++8y&EqhB$T^HaF4TbCwSX;A+`Le3?T-4uYY5i(Ut8)Asi8v%Hz532 zW|x0!0ZQ8cntS#%>mMGJ)8Gr@K``#q`XXI+j%Hetl8G!;zT5H8n}glev*gz;|7TSS ziaCbHNYQ2*tb2UzAB*(wME}28h5vtcYzj#165sQ7#)h*pgSy-2q?`Bls&sF!!Wjz<0aPIJM_B(EsQ<_}Co@03!r3{<-}L1;x7gZ55;Zid ziC&O@F3oG3BX^7+fn6)XVshf!k@C({!e}Bwv&%nM0X}aVK@2fI=Pd}vu4%C(v#EIn z?FkM?^3%{~~Jc?=(=rIj0T9py!T#PDXm0jB0) zTspXaF`c#--g{~z1~su6dk{gdZdWXi@WmRPnl@H;$bDj=AcT18l-2Zp+7&N^25}Wm zDC(7Wg2RkJ8XHaTOWF=wOx#tche{|vWEV|j_bH*>!2$;KNbTN?91-4wKm);uY+SBF)!4qJzVVB&&>#~<#r{Ld4+~r4a)H;Nu!2Ry zvdRR3)Z1C=6_(jD@s70gchIB<zvF=A6uZ9yx;6mgYd#_Dw)J(Dy z#L#a0;EN7 z-)TR4i+dd!z4PZgZKTDnRvO5pt*(^BBKclLX?nK~L2A1fC*PrTLR-H)_72lII1}L` zA=eRC&x8!(FkovGXfmremKLbtJp}xvKf#1(=`cshy+G06u~R}Y^26{zsUPygWP)1ApU-qW&#_7xUGnmgF*xazv|ZksnKF~^jSU0yQCjXmP0%Fv-ucm>D8kL>hUryU z|7iLGEEDa>=Oo?=H5?EFgW2_ERaqq+R-S282z)h!X5Xp}l31_%z(uy2lAd0}gschB z=6ljS9(ArQd0|o;Csu>dM!b2|laRxJ?cWpZEt+HA<;%O_~qH^ByE*>9$qKD33=brJQB@6dSa`zxbO65_ECRW`0Kpa?d8IowUVuTlS&8F zGk)o__%JJD#})y-ji83XAwJ7M$uEmr3vd0LehnEA5L}!GMZ3Pmr+_ryFA3d7`PI9b z1=3}iZaW`_uWsynAyR6E;f+~C4m*f%3#++ygoHCr95gRB9KisoRHVC?ka23eIWli? zv7opVA;!_P6Z&=XX(e|mW?+L;DToj_l!b{?F^iuT`46ecIozJ=7a!H=yCfBsa zybv=P6|RSFM8S=6%ILTi+;*cZ>Oown1S@9d?CD17OxzLwb(IYFh1WSDffwCFb~ki( ze$e)|-96wv@X)>re=l4WJ?r05d5>#%4nax;OCJD@xXaIRq=*EBT4hO_q-xItV zeW}&x8p3?1`0%07kgMO`=H=O;KrUP8jgyOM-AXXe13N{@p2|XFDM`s-?}9TEzwAu! zrT3;GG#2-KvtYHU=^HCUpnzB$IXIDBbVqB+3&T(!@U2zSMQa;cy~WNeMZ_vyu-092 zbBjpV0pNA}*y-cvexBaB4U4U^8`BEcx^EF8go))y?VP71k)`O@#4*!D`R{N>B5+bZ z6Xyzjd%>fj*ruIHAPi)Wl~6aMU)ei1PUuOj16tiwOYdwpBBSo+Z$3g*lJD^GFNa-n zP5ns2X66LZ%ic4hvy1)|m;Bj`mDiVNl@$G+gpr4<#)tJbrzr)a#+7zlL=bebtS~APg2&CMYyBSD!5*^mh9y$xW!>-g0yP)~}rj zYPxA^pJV>so3(LkEJX_ijo!8MVck2V{S22&^`jKU*}VKpi5*ggy@n695Yp}?I!cB!nK9Aqm zr^7Ej)NGtgGH{_Mna?*qj5YM<^n4_&l(Mt9PO`ZUgpiY1L!DCOi^~&Ur}Cq25li`&YZA zoRyyVV`G_SH}9@#*URLvk9EPJi*5}Z&33UslmFq-&z(*k2dU@G>S<>~lh&=MZ1(*K zVX;TM&5|7wg;SRWnFm`BYGeHzpaS08_VTNan{T4!(t_Yr$@&X)6Jzgjvr4swTEr+> z@ZwyZSzOZFY-X|xPH{*koMg_NhPTREZ}O1q<>k|xSK918xURXB-y1i5Dhqpwb<5xC zy*IIK>gG^Gi*FD#dV5nKt7Rs9@-hZlgUHrFqG&2SxAT(Evb=U~*56s>;P195^3nZK zBa3ZfsGy?xUACto=S%1d!e;^NLYd7LG_!yUSl##F(HJ6_KxZMOI7e?R-HPi zq^J}R8>&``yRRf-CsH?KpadB+ejIB(Wgb)9&};#ZLS% zEfI>ywt+ixoDiPG#$x&6*>Fe#t~b~bPi-#7?6XUoft8Jzt#j@vpP3<)m>40-89p9+ z2#-FPOkOvc>iQBb5}W49vAifkNT{;Zj_Pm~o^{r(=;=z%_jMTeY zl+|o~6)|}K`DcAZpsU~Hb1Elxnw$~KS{9R;U+%I&j7c&i*Hh^0^`~KD|3{`d4 z@8Y&w&BHlB&zA-k{T&juVw$yg*l4?OUg(IL*q(f>Hg(%b<`+mWZ_zh{Y3+8C79vX} zer#ld>}*EfJ4o{bvNW@DRZ*8HGAuYhm_sU-lAkZaev)FUzSm+VW8?d8twG<#9^BXl z1NFet&ac0f8m-`U22vt~u>j19N~f^VvyXz@eBwG}NA+h1c7Mz-oxR{F$B~*svYIPV z;<{~W4w5KQ~(Wk@|tCic1nYCl!e_f&Ot zipE_{Vy@O$*XL`cpna(DK85rbGlIva4^4xNg2_}hE&3J;f|3*0a`$y;HU*~0IzzTk z+X}+rdOL~C&zuzX3JlIZJUTwzTIC}61?zUsn$>mp*$NkLST|MWHr>>qx3rs_4@+*? z>5iMK(T)G;Awh6|G|p@N^QSuJO#w5f2>7a9=>`P>7POQjZz`kyFkAc)9n!-#N`Hvm z$7=Xd?!r{5lWKH-RlUxXU*OIfc7PT{o|>_+7tv={-(#WhJ!hNyax2SfQ(jMC?~T`@ z`a-IoB|U$i6ETa8%XWFqk)Ew5v0l&VVlt@kJe!L<80wWtNU2?)i>L}D5JjkyUN6CU z2yA&<)YdfVggc6bV&k(_qNZ&)PH@l!UFaRYqjIgTZSR@xFJ_+9mnF!kPhQ&Jqx!{+ zf3I?o|VsQ{AyBlksCP2J8rB<^U8m@h>R8O+?)-b2Mj@_|> zH3WlySO|c1XE$>+{L~k)J*aC$MRFCK#=o|c^eZaAlsBJb?%0&8Bs$@*)#s%{Ah5Y; zjUvy_yr!vV4l(GiYYJHJiL|9%E(>VP)&Gp<4(6aGn%)a;ULiyLB>PsTbHqptFTQ+A z9P-{(SRFNwpZ3Wq965R0W4|iqTM2oS-1sn;&7F>^9o*0L0)hBj^dLN}J%GxXh}xs6 zc^Qg>RCOrgJD1P<_AFt+Na+LZK^#VXuQ)Ny`{b(FC|vS6K^Aph5E#x|V(ii7=XeqW=$XJ*?^%k)8- zUoSPBpnfGRrIv49N|HpI5zD`QXtZM1OEvp`?~Z^B-0MUZv?XJw@t8=eex-J1c%{j4 zX!`hM2sP8)_^V@UR>(EM%4yWW1*Rlct5d(x`Z z#pr8nUn^EIZxm~hQ;F-(D{rkN3Ea);1%`6lbydC50|o2XJ}}*S*#lj}&4I;LYfs0m zwiZ_f>^LC!U5vUEsA?l|Nm6QB<43>N4kXahes1;>6Vd5>CMntF!=YQ7=xCb^l`Q;T zb#R;Q?RwAObzKkim%PSjo@#OzvJeihh3$q2ZP)i5C4X~E`Q{cT8HjWVg#YBr^r6V@ zgs%KliV%pO-YrVr-@A>QQhxk0sr*=(7%F*4je!C2o4oolgA}^tS?_%AL~4-|YX6vY z=GLPPh3h?AKENR-v?Lm)CBSOZRu$N5UQ&dY>oAD>X|4U%HOMwEqr9Arr|PQOup!r3 z8MxjkTGEBUwD*`_w)PTC97*lX%UYBw7V*ufHvOtxXjV*1bE=w!sC8Vrwo_cbki?WI z)e$tIl?LPE6$%(?NL?o9S{_bZtz6j?tbLZ`y;CBvlpZns?#$HZ74=mgg z>Z!D?`rUn{N!VK{o@;u+pWmYsczMgx`N3{)=W+3~*&|e!LDZM?anZpQZW+X9`9+f2 zv6JEX3xq@;Lc%zpCyqKZ7iF=hp0(pDm6AWT{QNP-YP%EsHPV27(PZl@0a-)pie=y0pd!LTTyjBFdsgQMc*>>J0 zLZH6Plhd;jO0&7;hB4t zaM0u|;QGVwCB?s7K6p*Fhv$J$bzsla)}QZwo3uVS)Fnj|hE!1rC~N*~=OAlJ&j%AZ zD=ZR{)T1goXdh0SIn>lGn|5!sV5<~PR`xryGI{lei6fnmsoW)c#B0E2hHn_&=<;i) zS0-$(T8!7^Q+vE;cUzRGr=}b+VWb4gnYhRGoCm8&OHZUmSnWOL(>MH-YMoG-LsK^A%pRYr2yH{ zq&n6v)%(vS#qWFU&PQoPzTQDLD$$KH#|&RDp}jbax#ZY>?pF1fTZCBa{J4I}NXYmA z>ndnpS~i0wY$K>F(@d>u@JE(->BQ|Q&DBt$ z=^M`nsT%1|t+W-nK3^Wtwb@^=^643GU=_G_;p8jJBMFIZ(T-qYQY>+ih|zQ7Ic}Zl zSh;Dc#(NW}n6LDB9E8zl|v5#UU%(Y*0WkY?GeYCs;8})d9vGwq35jc`8a=dm-~WU>Uzo!}EwnvO;zD z`vs!-+X<3o&g%@dnDui?Ag5Bef-A8G1Zdy0ducA%*a|)PDK(}DLK`+gCQ?7(LS#N0 zPAPs~7cKm|wIJ%p9O|8u?)K?r((UND-3M|z!)hXJMam}Ml4wAF)f`UwET@XG!`M|o zE%?B+W@yKKLE>qkOIR(xE)GRekgdyB(WX+6@b6aJz@iPb)BJq#qR&aStLCM-loypl zF`FyzBL?#FM4b&kZ??5*@6pg8V3UTsZzsnBE0hg8fnCl|jv%bui2?Ff{zK2rFzJSK zB~fA>sKBY7YR^u%7%!S|w`bPt?%*RYqyF$|eXk@O&9`pU`1`kR~Q z@72;SmKkUEx(BJ{0|F39PBS)P?v$PbzFz9#^ts*1f|3hEqx>US`x~{7m7gIHhHvt$ z`p%t^1?#~gPjn3kC-J>V(^!fknwkO|l>ejQ@(a8!I;5O}7b@UGd-5Qj-Y4n$4W}ZN zLoIqZcF?>#C#}kh;1g9X2&XVd>306|4_JyXo3=;`l3#=`ha#G~$>%LQ$ox75E<;A( zV;hsUmA1S@RH3?~$~A1sq>-JwHx-n#yLaB>E5zL%J4e??jaGI#dS`U8hYCNt0;``a z6LJ_#t6S0am5DE-ofEQhi>JWtRWPlM!PleIuzfbeWoo6(Y5Sf zWm92~Qqbj@LCWqcxxTg*@E`4GV_P$)Dx8j3Dh*fljgv}yjC-G1t}QpOPcVhZwnYwO zdd^gOM5(uP3G&{jrEOTw4oBp^1jYh(rfD<|V+<9qxC(KI2KNtE39-uguBrOfkE=QX z;mF<5g}yOqSF3*h)<^JVb>`Jv#|%~eBoE{96ItU)zGV-cqba9s?pM{P|f=H`JHd@sH!7YKA3SXn0_AE@JfDNj(y3UT|H7!Trs8nN&(lo50&}U zT{T`T1V*m~2eL7^%sBhP8h4uoBGwMTmaL=5BDEabF};>Y8ND~Z%p8p(o`_$0WgW93 zIX*M6W+z{*qur&0qC^eQI-0_Gd65de+e+sah-B>dFXMFLex3OQLf*^AniF=_XteWYz#c+jy<}DV2k(-ivV%;VrWe&c${jDx zeVzthn+;eA%2JSEZ1(KKCD0+tf+ONrK!-tzg3=b7zA`g+w5zGd;=r$G$= zM(RwYg#?Lc@P6y`&)Aa!IGi|PtJy=$~mZLs9m)o{ z7^P{8b>+W=n!y=Mn;XWD!Arn;u>aC-Juy0u#Kfi6Zcql6I6A2guBHj+Fa3>fRfE$!Rer*mGh0b1-9KpO zJ*!Y=+o&P2$scLyX_v?;&@%8&4K5u;Im_E3IjSX?OR9`TmUjp%@hp_k^BnvH1 z)jBbqYxR4v4@ZGNyBoCb9=XL159yuH<#x=%GJ$^UxN~U?T6!NhToEU%0A;4pxqQ-pRJpd^Se(#yznl|PIt{J{7slFgh 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 diff --git a/review_pngs/seed_15_before.svg b/review_pngs/seed_15_before.svg deleted file mode 100644 index 44d6655e5..000000000 --- a/review_pngs/seed_15_before.svg +++ /dev/null @@ -1,481 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -4 - - - -6 - - - -7 - - - -8 - - - -9 - - - -10 - - - -11 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N2.0 - -N5.0 - -N6.0 - -N1.0 - -N7.0 - -N9.0 - -N10.0 - -N0.0 - -N3.0 - -N4.0 - -N8.0 - -N2.1 - -N5.1 - -N6.1 - -N9.1 - -N1.1 - -N7.1 - -N10.1 - -N6.2 - -N9.2 - -N10.2 - -N10.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s1__exit_right_1 (right) - -s2__exit_right_2 (right) - -s3__exit_left_3 (left) - -s4__exit_left_4 (left) - -s5__exit_left_5 (left) - -s6__exit_left_6 (left) - -s7__exit_left_7 (left) - -s8__exit_left_8 (left) - -s9__exit_left_9 (left) - -s1__entry_left_10 (left) - -s4__entry_right_11 (right) - -s2__entry_left_12 (left) - -s3__entry_left_13 (left) - -s6__entry_right_14 (right) - -s9__entry_right_15 (right) - -s5__entry_right_16 (right) - -s8__entry_right_17 (right) - -s7__entry_right_18 (right) - -s10__entry_right_19 (right) - -__junction_20 (?) - -__junction_21 (?) - -__junction_22 (?) - -__junction_23 (?) - -__junction_24 (?) - -__junction_25 (?) - -__junction_26 (?) - -__junction_27 (?) - -__merge_8 (?) - -__merge_9 (?) - -__merge_10 (?) - -__merge_11 (?) - -__merge_12 (?) - -__merge_13 (?) - -col 0|1 - -col 1|2 - -col 2|3 - -col 3|4 - -col 4|5 - -col 5|6 - - -row 0|1 -row 1|2 - -row 0 grid - -row 0 grid - -row 0 grid - -row 1 grid - -row 2 grid - -row 2 grid - -row 2 grid - - -row 2 grid - -row 2 grid - -row 2 grid - - -row 2 grid - - -Line 1 - -Line 2 - -Line 3 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_41_after.png b/review_pngs/seed_41_after.png deleted file mode 100644 index 56c1ca5e98a99036f7b4f154bec10254e7f317d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211363 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

Ul8OPtt{`TYY~qvfx>$ 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 diff --git a/review_pngs/seed_41_before.svg b/review_pngs/seed_41_before.svg deleted file mode 100644 index f75a4d7fb..000000000 --- a/review_pngs/seed_41_before.svg +++ /dev/null @@ -1,674 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":696.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -6 - - - -4 - - - -8 - - - -10 - - - -11 - - - -7 - - - -9 - - - -12 - - - -13 - - - -14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N0.0 - -N1.0 - -N3.0 - -N5.0 - -N9.0 - -N4.0 - -N12.0 - -N13.0 - -N2.0 - -N7.0 - -N10.0 - -N11.0 - -N6.0 - -N8.0 - -N0.1 - -N1.1 - -N9.1 - -N3.1 - -N5.1 - -N4.1 - -N12.1 - -N13.1 - -N2.1 - -N7.1 - -N10.1 - -N11.1 - -N9.2 - -N4.2 - -N5.2 - -N2.2 - -N3.2 - -N12.2 - -N2.3 - -N9.3 - -N5.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s1__exit_right_1 (right) - -s2__exit_right_2 (right) - -s3__exit_right_3 (right) - -s4__exit_left_4 (left) - -s5__exit_left_5 (left) - -s6__exit_left_6 (left) - -s7__exit_left_7 (left) - -s8__exit_left_8 (left) - -s9__exit_left_9 (left) - -s10__exit_left_10 (left) - -s11__exit_left_11 (left) - -s1__entry_left_12 (left) - -s2__entry_left_13 (left) - -s5__entry_left_14 (left) - -s12__entry_right_15 (right) - -s3__entry_left_16 (left) - -s4__entry_right_17 (right) - -s9__entry_right_18 (right) - -s10__entry_right_19 (right) - -s13__entry_right_20 (right) - -s6__entry_right_21 (right) - -s7__entry_right_22 (right) - -s8__entry_right_23 (right) - -s11__entry_right_24 (right) - -__junction_25 (?) - -__junction_26 (?) - -__junction_27 (?) - -__junction_28 (?) - -__junction_29 (?) - -__junction_30 (?) - -__junction_31 (?) - -__junction_32 (?) - -__junction_33 (?) - -__merge_9 (?) - -__merge_10 (?) - -__merge_11 (?) - -__merge_12 (?) - -__merge_13 (?) - -__merge_14 (?) - -__merge_15 (?) - -__merge_16 (?) - -__merge_17 (?) - -col 0|1 - -col 1|2 - -col 2|3 - -col 3|4 - -col 4|5 - -col 5|6 - -col 6|7 - -col 7|8 - - -row 0|1 -row 1|2 - -row 0 grid - -row 0 grid - -row 1 grid - - - -row 0 grid - - -row 2 grid - -row 1 grid - - - - -row 2 grid - -row 2 grid - -row 2 grid - -row 2 grid - - - -row 2 grid - -row 2 grid - -row 2 grid - -row 2 grid - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_72_after.png b/review_pngs/seed_72_after.png deleted file mode 100644 index 7c0fbd7262b6470ab5c054820e70704ccc9f7483..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130064 zcmdSBWmJ@H_%Aw$fg-ka7=VI=NJ*oT(k-3R0@6KL7?gm3G)gx}H;RaWFmy9WH$ykf zxgLD~XP+;7op1ZBmn1nuc?N|-kw{C4DWgy)@=&Og!$c?H zk<(g+U*VsVMlzCOC_M6CLRD%g3Uv)7E%rdwHD+Ph#kG6#0Kd{p(Z4`{!Ixf?{98RL zS@G$6LJFJbUtT6^S<-Z?=M{ZeRVid0;BOn~=~2oiymImGOTu+OKa>OyL7nWiS0A5G z;evFgxo%B6ggAtR#)K|=>S(a7QcMfm+RLw2WA+@-OM_hIZP!ZRT8{p_yEi3u>VLlR zxp=1Uzps7L#0aSV`}#uIZ3DvpzW#dYg!O-4imHC~A^Gp?caN{+5&ZYH()(jP|9yFl zS*aGed*qK8!~dx_Hwkb=5$WaXRdr=*uqP)a-R9%dR8v!HYHsetR(WiU2Z=O|+KKUt z{ktv{5!IPKr5x=Nn<#Fpa7Ou=+k5P=Q9VTfOA$yXQ$JEMQWpEQO4J= z4{yoGv<2{D$!C|3eyO?AZ3D^l*RPKcJ9f%N33(Kcjg8F-jTq&dw4-kQInRWuH8;aQjn8$k*vO4|&3qXU*Hj-;z+J)Zh`LiZ~6EORTYFb zKEYkjl;E50=7Rik$s@>bc(Bc+-}sWDetBCuRlQU$7wQ5gGa3|`$xZ7JZon6R`2&od-2

!{=~}cBIT9)uwvK^y-x>+Y1;B zrWYb^XEi+&_sA_3tgoIq85pq|h;<0Wc)A#)H;ll@?#Tc*6 ze(ybd2M0Ap#cKuqSpJ#(b|rdV2b|e(Qlsw*q^6`}M_=k=?6%^F~)(o)0oC_-I)=;g6MK#KOtLlaiB;= zNh#QSe?@X~dU}37x2DHs#EZ{iK|uj;(a{8&|T=4`!RXN&hGp>kYn;oV!L<9AH6DVrn> zpyF-KL#af!n08XxR(`4XBWs>@+@%>Qcgh^8W{?S=fx6Q3Rosuu?r*Knvxx9;%kM8w z>~4<-&HH~h%AYyh!}VU((7CuAlaaxEu-jXsZefvrxDtfkrosPxb>0zIwdGz?V%AbfM zr7#py30s|h?A2+5HWhLXQ-74Kt+OyIQ~n}MOwwB;=o-^MpOtWBBc5vk;cU7YuoO;p zFX_4rCpWX#RAPJC+1VA&3oiQ@zVL+UfK|9Lh_59)KNIVM<*?3`iC}ALZQUG>kxN*bWpn+GZpgHw5ln>7a9;xvuNEQh&W(ZSYQRC5#~{x3tI6 zR(<_JoH|idLc-T@MJuEySD(%i{zXR3yg8h;sikFO=dqO3vcOiV$U(ZE`z%8&T*QN` z(hN*IJnFqV4oCOuyf|=TwrqYG;A`f}a* zd3cqZV*Q_#59saXQRKO=nDt~jBF*B`r{mFjTf;8;vC{!G0_wQxy_}rVu@4Ds!X_pr zGm{beJqKGOxj%o3#T#d8!M|(SmFCl+=e5!OaRBD5Crh)yac44O z&r{c9u}FCOVB(fYyFPwb1GX*i?Wy)e$@xHmC8D{ZNKUg1=ywlFyqZ}{$VoF;Nd5G@ zcb*2&3h}2oLosjVn~q6{=Ove;dE`*d_I-N?gU)$FOh!q%cZ?%aHj39aj+9lai@v^y zn5|Tl)2#LE+z<>0^g?&|?cG%#TM2_3rJDm*P6r#kRJ2rZD{<&UH>bq`?j#;L#?YMd zIp%{|1@vk^{`)C9@;H2F{2|w04;IDe9+ORB!h;v@lKoK1~gxoTW=kQ?938va-+8-7R znU38H7Z2Dtz7A{+_4TvJ5+6C_c{V^Em~sf!D=a#Ce%PiJStVN)xN56XG_(QVwd&}W zDSqOE+C-Y-{0>J_3xln;qhbTz0E~6W#vmL4{;R92UDaM5y52jJ zj46ymyU(Rq#oT(L0`sxSwYPDxt&JuLN;B$P=|f|zdJti$c^ zEmbJQqYuj-%g9VRR}@)xGuOF=LF@j@JF;K;eEclhv}igzaKa;TbH2(9L;GyFyxVrk z0mF5ph%8rV+@G^6UFBAdbIrk~_5rkl>-EYGlwWdd4hL*iJ>1;fs#Hkc42}Sz@=5GS zo{Miz3=*ca8(>a%uii|tJb$#P6_siOkG(k4=M?bQ+Mg36*l8!fz+SW8kt#K}Qg>b? zt+ezB4Zq{EK={Xx7gP!M;Gr&|t)cN@VekD?Kxllh#nd8n?B9><6p_UV;P=JOdd+-!>&d1HT?MX7 zyub|80~lDL=7uwX-kh>2N};tsoFN&hhj*C`g6Kr_ObhzWChQVsA6b&--Gl-$zu^tF zmV^u!bMNT~eFA~Dp+4vm#LR)_B`!F<#o-FxzbhU~WvQ)3Yat9Wg_hkJj8^}TK~~RP zX*MY6kDAyiw(d82(#G$(oj1Dk$oDJ3gz zRr1bxRB7bsq1fLSe?Xn6?+*HUTR@c6#`R zAF0%j0CB5x2xrwcy?^Rk1EBOzpFhtOU`z|#rVGw-VH^^6VujSRwUT$%ruXD@l`5*v zi|n`A?MA=9e9N7<@1|rRm(Iuh&GqZSuC`rU?h&6pnGcscc@y)xr(AR!58$PjCOmac zwZvw4pEf==HX9akf{{gftI(FtFboYrkeQj;JS_EqC;vdmaip(wQPVt8dHnc;k&)59 zO+>Cj!Ys2tse<)jadxW+-jjriM;2C!5)1`lAdzj_%a<>G8el(7I9JTa8r7NG7)TG~ z8%xFp4HlRw91xsL=QB1B>`i7n*xle9LJvMGc{8LA_}jQ{WfbaBJbpj5)gg-cP}D)+ z7F$`?$`eQ@Lc6@Bb4I5&2Un%0rrtgK{YWqnc=df1=lBV_pFxX{Ya z%UE1M7n=d^mdDM{z1kVo?-VP1Sk)A6jxiaWf_bhcKEbLB+ZsCdmF0&IVbv{FZDIM@ ze{enhcf(z8jyYc;;_5Bxw^qj=9*~gr5u5z2eStNSlXI@nHH&%f>mtC&DB&{n{4HC> z!aW8ChBvg1M03nTWjbtpv90cY1rmvj&v>GtXwG};cr`p~r{>_Ao>z{rBLzG@M<3c~ z;!2Qw{ez#MnyRYmG@sm6bi&0xC*7pe5-s(&tj?IK+8G*t(I*(R=DBn8=A*&lXQA|f z*<>o57gq(?g@kkgPxQnId7PcD0YYB_0B^D&w`_#!dnGnxeP=p;zAxX{dnJI9`!R4K zRcQ62>(_yRbOS-5a9?H>ix>7l6&4Gvo2H>O3;$A9@W z04&M)I6%p5`DxS}BPE;e{(2J%Y!*-y;j|mGOT!h9K78SMTi2e}AoEMyAhVmh2 z{8+#R|6l*sc)V`FDA77KeUZ8SvksRh^u%9dEx z#$2CL`^m?3Yls8^C386Mou0>fQP(~$z(CJ7eb;OQD8$|(Z*)r(mqp0Ed-u9h73gZl zfj8*+kuy>M8HpO;cUj5;w$Jt#Qwp84WXRqRhWO@x_x0W2xbu}hU@M@598CQVOIpK- z=%e??>C~P)Ay?IwNW9Ik^C#Q0U7T$82QfRBAZ~kQe0L@>sPJhs>Ed9Cg2(2960k%) zz>z+F!rQsssBpk;P+bU4BS@d?VTA~)e`xFDC?{QcD_fPF4C2k7lOI?67+ z`(*S&&&R~7rn%JiVIDg^a~SUjx-1QqwKiyHtJhu33=0dh2aE*sIf}D^W>S?;QB`Bj z6TP`OI9-54`dX#i+J0;7UBid9?S&F27N)#ykFU9VR6>hJB$Sau2aHg!t)5rV)8_CK z!`>>H^FP#JPgSX~c6X)7Q9)O9m>Vd{99>ymwI6mKeCBkxXxX%RH0MO5P~84H@)yAb z=-M|jcsIZ{UmqMfR7b#j)y+uu%H@Xv*V`p`TWr0@Ikg7s(n_&0 zfUt5$>)!4yip*yftPfb_p77Lx*6H{DdX!$oaD@vMDHBxQ{u`tfRvFubEz$>}@%v(Q zUh7J=4F^DHxL6c1QQR`x#nz|qM|pRpDFJpr*Jsn4qkGh@4*)B8Cw|yk984V=(jlR~ z-)4qy`|^ln5ElB|(HoiV``A8EF}$}&PsMug&I<2I22egNHJAW3r;cC2+qm25`;9g( zP6@cHLX*Z2pS3W7SovYM=~$pp0aE`q{p**aR{I?zROBha#X9I=px!xOh zV4so;dxJPt4$$>jF&>TILSu1n&(T=Awmv#9Wb%Yw?(yS$EOy+fuq>#S;<>HVYsc~% zO*;H3IJIQY2D|HyjgKE}BAeJO)(HT`%6J2neCOZiu-q(wpbPI+?@Up7Eq^~15XgB2 zsRze4VI${)6f_Nv%>75Du>W=!i3&lzW^K0Yt$A$Veu8;GN<%nRU^ymgyp)uY*=Fq^vqlF*=Jcs zR-IDCM9H9YuB|xlEdjtV!Z#L=^qdRKQ=k>W@N4B8iPw$;VeLjJDxbsD%pXpSD!}(F z^~~M%*+jRsso8D~eG*r{eUJ`3NsWjdiCq)MwgCVVwjK=X2=6aHs&ljS*jmblu0@5_ zLc`LUFYJ`J;@}XQbDABgsTrw;HbNff0Y5n98IP1NVp5hi5DiAxx|3xhBpS#wfK$Pm z@Lk(0wjI%frk7{P;kLQZ@4F|0-*>?6SpWd`?L6Myy#!K~QymE}`Jw)?mP|k@841&Q zdPSCDqle~bTTdA02Q3x0C4q0J` z7Co1q`jC0(ZH3U$UU^tgv~YVB&^aPI`QALikgi|jjnyvIWsA^Zi^%FJ*Z=YL>kUMW z6c*1E^4KINWwkAzWfa=zQW4%uk&XPihpQ1W*n2_xk+`I?QZQSuN^3gSC2k~Nv%oYR z6d89Qd5FOC)YR0n=@XL^sqR+}-xP0MK>VX+F2ha{zGo@E{`m3GX`xSPZ5q>ys7^t` zyHbEvH~DzExz(B@*n0~w!kM-;2kIwIoItR@X=_Y+Gh4+UoSTe{%*HP&+vENP=}?G( zn;dDOQ08`prr~bGK7URFjHdu`9x*S)5s-&(8CJUGsCRl3d@l&4(e zdB|c^R#Ac4m0ad9O{rJg_wA`4Xn8bs(}J$c2|TvgEWMfLNdO|>yHUIWGnEDxZ1^m9>W%8r9K94L5cu#ZENphE0@s6xLO>h4 z+;aM@d8orQ2Vb5b-j{Hmnwp{{eQXOnNG|f8I3FM1Twi`7jO`^mv1CbTx$^ebG=UigCbJ%!6p#XohzEtn0R(+WN>~3(qw|F9ls{vyzsF(^>aYSrC^)74?sok^W864XI|^R1a7OI?FDUEogh*f-WO^B zV#Q@MRO&wH#2@PpYn23dWqBJ!vN=`*Dpu?h6&S^Ec6~h@ZVWc}AU%dA>*^i#84xn= z3ObLzAv;;QtQ0Ze_lJ^$a`f2*G;4LhzjXt&|C|faM|a;yed>osh^%oIpBl2EamK6yi~c?nt+y& zOHLodgYdxZwY$zgoz1%noP8d6h6V_kqbrZzp0j{Dcs=Nxu-#uDpx09gY&lo1T$usk z{j{qm5HWtczoJ!(Vrw3Cqjp_48joH+Ap6CA- zvKSqBGjlWTiREx za=bYr1k1&ERg zpa8(LMGn*QfFtgt5o@@!^9eYUtNDHNH!TOZ+2N6-t1g< zxzDrwCs!_Cz8vl>NH?+Q>_L8m5S1|d5f3{{#*`=eD*VWPbRdleLq;}9kT7XkbYj8R zpFcBbdebVpg|x?+07XQ$N(T$55q4iz&vH03sO!L*ta+%!tx@JLUPe=om}mY^7CF+-TO0Xpm9u<|*)ul>8epi&! z^iLaNp@E(C=K9z#0bopBNY&Vsr1MGwa)v|nH9#+u!`MO#6+bC=fOb7kBXmvsG!au% z4}IV?<$dBp_iwaZX3cxOV6~<_iYjH zy+NGs1aMn5INy`qS#!9NOC)jp8nu=jK}Ff+xM@BiKkXBDK-U1xU8TnRU`~jajZGeL zk(!#Cj#N&@uDttu3k6}p!K1^6V}9(OA$l^7peI>^l1UJRNRp9}k?z~0Zzt{UM{(Rk z5uMw~oh|ycuMygB-Sde_le1cZb5jTbxCd{+q$%|!Mh^?wXjdsP(M3^Ru|CP8hm>dQ04@<{;c znQD#A1gl)!i@*tF8&KW1Y$C$K#P3G!0-D*rnyV0V{|nR$DEqEk8#C>X%;LR@zZDcj z3y7i8G}3n1IXIL+^sDkcN0Z_2e-`|3#AS1zO^#3niJ)UG1fNk;$z zg3p~m*?su%{{3l-fB-OCt$@%&ulcB~tPFwxLAG{@JkqEhF*mvI-uoW-BZd9)@IawO zA{c0IHne=yGt{o+3Eerv+XZdUssCw&bjX6Uhtvt{&_?>qZc4|88D5#~FgzO_GVD7G z0-&cmg1hE{U;g#;=WWn|pmUw$&yjkPZ}dhz>&eC0yDxdXb{*pv7Z$7mzF65;3?oqt zo6^yfI4isFC&*?1Qa@$Bh*Dzc+V9QQ<~^8XN3TSV-(_GBhkQag;sZz9luJWfBhFx5 z9l;kC9z9JL#sFG{I!NC)XwJbDPEnku$wJ~F(BAz*LP9F{z#`{%oKcjE7uMy)x+a41 z^~#3*Q<2b2vlu%}6TEAqS=1F&whT<~+a_zCOz2UR01l^GqI=V(&rcG1LLc`kF0mb1 za%lzoI~5elZO^oY&eS0N4p5lm5!M49rqj}pCd3iCKzjlMC=(IFC?ugV0tiU~MJxmO zCCGtY&_g!>Da`<0-P*zHfTVFRQWgRD3W(|TMIIIcP$*=2G&MDaOBk}jqXkgE<|YgG z2wN{1-aiw0ue3BpZ|`bE-N1<8b$~B<=YtlB6}SQ7uLZboly?n$5I_N80092rL`Z># z(GE`6D=q(}6!`bF1ETlrq zwS?F)Cy=Lr=p-p6N-)7vhP(jcOVYYc1Sbq~MYq5RJP7!4&P-pz(iP39>_x$}ekiN5 z@zfG=MarVjnonwZ5)7K$<2GO403#-&G4$43)^i2@)LnFg;|)QG*o9pL`jVcOCIu^G z&21m?km0Uz&Mle00ZkxSl-qmXHNIFyMFq(p=)y(212ilIS*d247kpA-uW~k!l4|0$ zK`BO9BfQ@%2pzqk+taJvB1{~#11sT{G@|B%c#|4@Q*xJO|07s^a_&%$kpc$K#`Q|C z&^ICa41RxF1i_Ab)O4Jt{!sTBq-{#HLDBC8EP=a>2-e8L0cFanF@#}*R26FbWWh5> z?OxdEi=oFk@7;rJ*E`BDQ;=yYw;22RJ|x4T33QBX!1L*VNf0;tDNi&KWts)Cg4kk3 zcvZi-3F!c#if8&jF4!Oq1{|H^He9MJ}gT z`*$rL$~vq+h0F9hX<%YzW(6GhdJ)03U2aco!0q;r?Y+v|WbcW10tYnoUNgoeG(0X}_0?r=xbaaJZ@;^ZBMNl+Uo0nuv-B{%v_+`r#vLiU3*2^n*kyzXVk+RhZ$%P5gV4Z0p5dcd4hBZXUF-P!&wt=z z1~i(i^u$m3ND*`6!I{VD(!)KiF9ku1D{J9~^h%O*Bl?B7F$_Og!l2(_%|_t<57?HD zq1rw@tRk<0OUc$O_*D@L)CcM)Qqr--!m#r{j+^KFTbfC`_mo}tI7jE2T?fj+kgQ4^ zBR+FxJqW%3$}R7O`rId0gI=8^X6nTJR{@EjM4}JZ;AhT-}`FoJCn+2L>t*HH7_I=OiYX2mO z4YM2F5y3wO<4>FEn}TA8@$4jrSAT92>hKFTK@0ZrUpmSHz{q5}RtU{t%;QCEE zEJ3GR2mIwOc}pO+H36^Sl+O1JGitZ3!yS=9=CBQf-f7sWmqIwDn7w-Yhgro`JyE** z^NiiD>L#0Ybe31(bTJp|-N}F!G!kZebzXQTwj?hpNesjkgIC7a@jHIM_D`Wi3(c+d zQ?jyTfz0OT=Z9oS;sASYXq7u!-2cJZ)mHtd_}Sp6n3$ozhqC``?W`{iYa@oc%N~sF z*&VirC{_sO+&#na08}Q({wk?~tvY$*2&Qg#k;&3=Krv z)25qaO#0*L)2D?sZa`l~@_;pKR<}O=LSk0XB5=cOEG%3x5!MiM6drVH`R=~I{XBjV z)(aSMw%_?aYu5s-_be8Qjf)a2v2jyXSMM2QLvcm;PKf}w06J?9cnv%F%w?hP3nC_Z zJK*15BHqDh6i$htP+!H3MVd!IQ-Cha54g9;ZuDXOuV0q%nq9EN=OZ}lC}bY(-b0#U z^UC+lf9qf*{R0zn`dY&udRqGux*K@aN&#daNPrz+!WsDpwxljswmeS9LYuhM2c<>@d zK2`W|+ZahDn8mrJz&#;KCrDE4S(xFzYJXMTv**-2JuCGe6qi8}**+>FT`?lCwp;B8 zY|mrf9D7^$fPl*UJ3tJ9DB;R(-rX$Z&ZeTQDhCldk7%;3gRuAY+$OIMLur!(Br*l5xAxRq91TpZ%DSiV#%vP*)N z?603g^E)YGb{C0N!rg1fSmK&77~77|sB2e98quJfZ;|FU1F^}}KX?o=)iW|IPQdOI zfN@{bdOZ*Uai-N)At9Tg`&AJ63&~(_Gcz@H$J}9Kvr%Mmvar^dP=2+?2?!xTN?+ou z2;nsd)t*b-4Z#8<@hS#~1#*z0pnUDdYI_8KZ)$o>Bk0;@rVqcV@Yx_wO+6!IBu1;o zG<9?qVk>rF4`8*U5M}_o!V-`uwgIZYCAQKHo0$ckbItxFJK-VPKV>+rWzv2YdAgAu zth?@9eUbR-uq4PM#4q|{f6-=v+KDs>&!^Ca)uvlxogiBw-7SJv2yQTjZ{;X2qh8&-ry(9U@Xm0g_M|1;vX6^l6C z(j5>JN{3`G_{y?Sch^YOY0kZMY5!?w`QLy5LcTcLEY&_3&jg$s;M>_C&1`jsTemz) zz#utu<_x9opHmk!S*v|$Sm(6!pJdQ}*Df%(1SkVt)BDum~XVkOno-{c?e% zo?aa6;zF-IXB?{(l8FT>oC1>h3`oS^w6de_KmUqZl(8@bSP7tN<%~8(eh4{`wReI?fq|xJX)+uK8O{+aS%|p^XCi1AvR2fJ<%DR{{E?aFz$Dg&g1mW)qT$+%V}i zYY<|gP$r1p@BN0z9_>FS?RR8PD8+-whlD8+hyv1pmjs`O;Lb!S3FQl2eRN8`7lm}d z97ZgI{ie7XdJ0L8)fyvr`{NBUgpa*<(}Ay}xh(`yQF?yt2ECPGDICwpz34s|!a`E>1Q_Sb;&0{b8-86@`R6p*3WHts<=P0s79!z9Q_frr*DpZ4_ep)qo3hBTWcw zu;c#FwMTkEqposr0T?g~61fI&CZL7;Q|nq)?oI{%qI*ch7xJ+l_z_Ug+kxDhxh{c$ z5G6>9A`(yA!8kNOySwQ7a=&-=Xvh+-$5-LX=h<2!IVF+co5Ipa4Z0@IYf}?IOp5dv zk>vl)V%{H~^_giKi^$v>q8%cS_u7m^_!v-&Q*@qr(>gA4%0KLh;bh_fiAG9Iom$ z*bd3pxdPXhAS6Lw@eGM=p6mcS^{>N5Sw_ZV^xoizC+W>Xt!zXc8hIuUU}lZ##TF1s z@?TFz)EppWew61*Hu0-RNNJ5pM0E6^bv=MVqbfk78`aLpbs&Lq21XQ-dfJXHWTCM- z8oj+>{*BN-{|J${&r;J!k9je;c+QP77zza9Saf5&H#u8Ab38(17sM=_(L52p$!=-igG7tf4aZ-7xgcQX5Z`e7DS^3fM18-9IUG?44j| z!h=^2D<&x3u#n1x9)8aZsv9+5K2-(e6qI^qkT;~IrJ;x@L#*ZuG4U(QPRk-F4sxKQ zt3Z#2hrDw9d+I@!00S1Z3xuKsQuB>Di1S_m^#a}oPMZ9lb({kf4^`uVQ0nwbV`C#| zBH@FJ>fYYosw`jWpN zT2kvVFBaR|GE)NTS&LCVQa1pl`h@=(wR{i%AD>idC7BkN?JBv3{2WLnig<3I}o50|C4K@3KABW zK1&*P@uCt8wbTe8N)=X~Zc8{;CxE&(@J|5l(IJ~)(jydY?wmW*r`*Z*v-YhEAjki% z$)<$2U&WwVy1mbo|OO=UH=BNJ&!f^ZqyulFoY4^bL zw>M_hR=f95ZQqLKjuo%hyapi>WJVL7=%+lrA`Tx07dO4_%)D7(N*)~zM(i}(UBCLV zMa=QKSx0yF8A6m+wYq-ord`D_b}$|!MSwb6&Jfs|IQY0EZAZ@!qP*z8SEgQLZ5)hP z@s#d90Oi|@0%h(cA9>7K&ZeY7Q=JzS>!^PNB>938B`@@S82vv-$V534|KHDz743>s zvy%FOkdz9mum0!H-vey zJH8O4A$|a~dANUO8SJ0jZ9ky+A+LdqDTo;wfEytW`|u(aNe}ax zJ}`Yi`3?1q?`nv&AR*^j8#@4>AEYyx&nBAAQKllJL=1v?B0lwLp`k$VL zA+H0=6k329T+$7iOBb%fK5TQGL8Ii@VOWrg3Nj=JtQTkPP+TvdBZh^CX8;(5Lp1@8 z_szc`3;@opfmGTCO~4WI{!(uV6W#+kq~Ws{1K(Q6eI1tI2S+JUv0ywHO)&jYf%Qg8 zfL`H3lD~faioD=70zu(>sMev~mdHE5fOoEdRSBv$z2M&~5NCs#OM-MignXGgMvv;B z&(s4vp*dw-y)yKw*2+@RJJZe;5CFUlRUR^m68zMKqO3=TR~I;ru+88Agcv_HswJVY zP?aY-Ks(6pF|sDtVBTKq15STh(Ep^4@V+>V(JV9vnBJR-c^AKt>eku-kC$beaz~%-jOgF38_M>p-m@}Ao@CdZb zq(=m8{ty}hmS<#a45uP5T!j5=?!7MJv%DfpSF37Xo8Dkk5-M|awZ&T5_WZHI=LkiQ zLjwt+mDhwPzdO52C+Z5DUFy;S#osFvcK3fL6KVRf8NeYh^*bl!m7r9cI`|!4KFLK6 z8|MbBu?u?ZW6q1`8&UhW!!{EmL|KaHD|Hh>KKX&N%n*={9fdRS?pbSWZ zV!i%3yz29K?*N!q(3OU4N?hV0mkjd^yLpQ`wR2Xep%eCpg(B3$PIg8V>c{n%o!qH1 zZcM=w7Vqifm&uUUin`AYTGUHLP0iW02mN(6C3oP680>eLbuc;ZdREqrDnjjoz^S2t z^2VtHFkTZxd;nm=9@|;m`bmfqHGXpw53JO^F&garPA?paO^+>^dqQPKx4rk)PmC~Tlv5rHj0&?l0$QAi51WQ7v{0F zbTAykfr7fRJD)obz!wK=1_#;3mzTU(@&6 z2m@0IC*%!M`H?(t;%emx_X}9r6u65~Uyyt%D|+27g-D5Lq8ICf5==j|C1dxNH!wv`X#1fT_t0niqr&k#oJv zY<82HT}=*DTZq?jC#Uq~n+!mRSFI02yV8b^fFi1v$U5O75LG8Q5!dB`gm zn0%11lyvvaUMw7P#JPdT6{_lW$Eig;N3cY_#Hu&&JPzgaj+h589nh?cNJ&xRsy7M-5CVxw$lI8FHb6ps zkY#l(fs<0Tr(98@1*f_3(xZ(>gVA=Oh`6OFNRx#W_vxvG;HzdqmzU7&)zsB@W07tI zyCNwmDZwbC%J&_x3s`_K39p!65~fmm-|;!=4ipTYb6pxbUnk7xvAB7PY(}+_aMkEx zn=S7VIA$TeD*cVr?~QgU0ZQrmr~Te1$Q-nh$6-d0KrQ6X3XST|058<3a^F}De7)(p z*$Rv>t^gjb;Srpc>7a2L`T|FK&A~In67K<`ZMBdTRC&WseGa6e#=ULOxb}p|Q2JM3 z4w+e4x*!rfHe5XsA_KuH8`mZ1>y;x^x^f#s#q??;anI;MuLQgVdt~wh3+kHD!$!2S zQ=ru!a|>j$h;9M?f%tHvH4k#4`0VXW8Q^5lwjd4pg-Ipl_P>1x^&x%jIp71Jk^F9} zNkHci6&dP8-`;iRUbdi>$BFxn7OD+|HF_Z!ev7G82?G@i_y`gSMn1cs!vUtK z30M*YzrgxOHWi#gpuEIm*EFVrY9oSXs33As$U6!(k}^)Cz-JgjUGc`;lG%WOnoJ9% zGvcf=K}`qbi(LPfIs*!IgSBs;>^*hE1Als^t-?tGhG-0fbED9HnKm( zd!4m#CQ^L@IU@wZ$$Fo0kOkz?15Q)jXFzI=1%MH)GW(~o(+fjoogQ}-;n48O^Rx>> zJjTDy!XAR7;`B(+6{6x@kO6V}MPc@P(HR0&9)5#hW@_EtVSf^L-WU9@b4OR<2d8p} z?VDLQ;-({wCLmjiFa>BnVAPU!ICNL9QHq+stg$|REde=0f%s=5>(^+JybRHy7Wwcn|{MJJoG}Y!LRaY zwRXV~h{`p2{DPTC=UjK@1_)U_JD<~4Qr$%`HK2?mKpM`#s^T2nQci*h99%cLyj1h| zB{3y;J*8cS;c=b|Ct;-^W<~6DC4?cM%YCFTvgnjRbW0{Z+rGR9B9KXsebyC6Mg=VT z3?u#xA#&@lo56zKfWyh|B@m(BmVi7qm%J6W~- zgBZ)M@C+qt2UaqP;#yPsQ8nm*bcy=3+8}`NgVl(db@|IDaBNapC|E#rDeRA9UO%aLL#*KSXqhdIUlVqQoP;ImEG%A>y`($Ox_yoH9*F zCPb*}t_wdOdtGvE(XdGCDjgkr#V}iHCvpNf{tYc;C@)>QM6ZTPZ8_F0Is=2UaW_&H zdwy5~I29zoK%$A&FtVZ*flUA|$3ZJcbc=WW!oV}v*33KD@<8aT{&tfh3hfZrJ|)Qh znR?D5F=zTZB61k8Y8T7GCj+QLSmbH`6C`%J8ygC7q=Q4O2ael%8saM*FjGnJ=>%2~ z-~=jwy-@`G6nX}eIUx~EmFG1gDEi)XALQ`yRRTdFiIw2wq$l@M1aNUuvidupe0`C8 z!6)FZ0LS%TJ_OOX4H`}z3mVf65XSSlvI!KxY^m9IJcVC$kNpEjNQz0DjQvJ-j}vc@%EL~ zh9*i^GM-y5CETQbOqbqYsVe1>Qwf$5TXEG1mP-2D{`E!t)iZCdoO$zM=@w-`;O@w2 zlqh=gK7O**;#IbpW;i-<0+}l2dMDj%ow5#`7->*Lb1_bqF%kZPl4Wu)9c=evFT&7^ zB|bhE^H{9AxqvPptBqnWU4^9ESgxr-@-u}qc0F^zD-cSwr}bQZfOzL}a&jkdLU6uHyhO9wvkW;yDBXeN zNz^jccW}rwL!nw9(FQ{-;n6n&athxI|9C`gQb;r|v7|%;+;`EUW`euNkNx+7JhFi9 zdeE`aX2ziHyMxi_mqYhnOjTb$cX!tveK7Pfq5dp42e(fvb7ash^e+Tjn!Jvro4 zG;*DpP|R6HMQS;@Z*@=uEl&A{2t?zXlBBn~x@oZ#C=NOd#@ zsLS#>4eN?H@f#N@e3cw&n!l|cd)oZXB&t5K@O!w->Mc8J%e@!zC;k#KK0o?U7*y?R z2uh5txIQ>PfB3*Y$E9%mzFR13REp+>+f=@zTS;uiIpgBZ*REB* z)C@Z1G4hRtZGs>{_J932AAbBRa=zSNS3`MZp#eEYiG0us=*tR$wb4A@I46Ny{-$J-c0yRlANkO zShT$pE8qN_x}OIfhq|jpjn4GL(ZTCQ%RYCrp+5h%4-&^fMHAT{Jx|PrbvRqshImP! z$?JbnyltzE5}o~Dmur6=E>{}gkOBZ+9#VzR`ku)PZKw`=uC;`$dgKzIBm&26omLJI zqH+6HTzia(AZ871f3|KJttecE+xF*dB`=)Tni0P%j$QDe5kvo#7{9!_}OT9}SCG26-znfDSc<=D`GcXA39cp0nqL1CyaVx4y#s{GlJs0BfCG(Bl5vZ(k2ip)NmKI%&J)8YkfEAeei$8lB)yly@umFqCPd z7ys8Pit!ZoUZYnoG$d!~LCx@Fz)Vj@_OM$Mj1?x-d(SBt(HVpr)%cp=U-fF)#$7S~ zLpj6t=WrhjY(rzJs3wy=GIX!rz5Z!@+sY(lfOpNjal)`j`EyPp-(K-!%JChHQyDqS z<=~Lyyd5&1TB55IrN1J?sp=6)ffJ#BO zw(!Sj9zQ?-I-J?qBgmX~8~Vh;S&hC%4rBFVsNT45EsCq3H zHv>V2b#{}|cNA5Jw@RO6tuGrx%tO+h?u1H$j$*GMkMjIZlTX@w^v9{_>gD?w}9t=y2731?}qIh?PV3z1<9{(1bd zC^tp0ySRMilY9r;;BKy(fk_m~^6a7rD$T2mwkiZUJT(VrXW5Aq7-rKF13Qq9y#cqc z`R-Y~Fa0lH932s(nc;U8sW+S$!!*pc{e>H3bv?>ENJ$ms8OSd_$9y^bXgaYa=u1CyF!dhsG5763Ke_$?dm`C{HKdz0&2|!P9PE zF-lJDpvw(J2!y|_GxVCgqffEo3?J6>D$ae5$;r|2?x%WkWL6&e2)&qeAJKsj9RtmM zGoUC6o@1AHAxN9zTV}8vDOJx%N3|zQ)9Kf<8_1Oxa3l>^{x5a zVXfx9fnM&5-7f2YaC&V$thsk87M+q8-!1UbDR1{Vn21rG*}NFFB^i>`Wfk;3t`Eid zs=#z8#Ul7kH(O##XeW3yX>OKG3!q^YK=LM@(r zYcVg95mQV~W^l;R6}x+YX&rRDR-}{~>l~$}r6o}r`)qI*&~+xVwpNow;=F>4)I0C1 z^K*oa@8Lw)iGA{K*2W!2dgUq)k`6|agmZ1**_>#Xdb%uRGmiU1yZOc<6aJKm`m|Nk z7(Y#cYqjv&G#PVj>r5CKKH*d~K5f(1`$1%2#8u%X&o_guA)nCWx4CdZ6Ab5=tCrH| z_8*~8FT$PAH?QpaKBth`J5MgJ;ut)|8$-Zq(eb`y=7ufy_l9CV_in&NrpPi0dBVr2ZR%e(ARNC%ea>Q*g091YPC&B;edu&h zw}}6`K8R;9!${Q2S81J@+|oM3F09{*4X{7wsG4qsB9FA@5lDG<_Em$8OxW|whx7Tx zc%K(%>$>)t=sKUvMWk^wbzZD>ee5wDk_3s>u*yZCPzSxz(~A9;QL^9kMs^CTtE(rT z@kJaPe`Q8^>jg;m5tS{F<=F2fQIQcbC%heCNY1}#d~5!T{!nJIG1>3_tvL7iy%A*| zZaX<~`NKk!OA9EXxWg)cKvU|gn~>Pt(3i|kf0}M_@4c4f%Rsmy*L8}6mUncy#AKe@ zGC}2UmMPOvxC1v^iB69a`~}6FhCf#lFS_A9`J)_WK}I|1jgfh=`sLIn{W8R?<`wYk z3NiyzaAq!;zPr1j2t9J0rVs5Z_&7SR*mh92$7`iesoI?7>#twwA=ej2TofC{^nX)* zd)6YDA^znfE5<3z>1DgYJeBZI>UKPx@k&~C!79ForsP1BJ=^Wk`v_WP>sjtOk(hUy zBD!C8=#)%5qn>9`qJEjOEC%IirY1RvN>BfF{lxR7KFgFL=D>LOkfbhQkw7}cqK`j) z(vsDtQp%TOwOT=wH#x~cDkma%Jf$K3Vb_h$JTa?h6`JmgbU#@(dWneE`PR&0=R*kHiQq)$~6uW zauyqOa&nsezu0@rs4Uy}UGM=>5DAg)kdhLS5-E}HP`acP5TsK=lrE)1T3SL^1XY_MVxwzigIky}t6qec#u0oq3$c0X%2b%vT0dhr^od z9*Oq6eBSMuzjL^Ebd&8JlfHq$VtuLL!*TU>O~s0DugqQh>hhQOiKFhKr;}x2ecOpa~&*mC(2(np>B{xg|suZoeRh)BuKpXpgqw(xv#m44RJH$9caug-@@B^j)hI;03hIq&Bt8w&c`Y+ zNe@9?v=a_I1c{A}5eg&q?W2gP;@vhibkptTq4_(m-xqn64Zc@tQ@X0~trbK#7|OD< z>KT4Lmv&Eo)jmDv6>a>gnT z`@=h}xt<%;16l%$0Xm#|yqK+8vw_AIfR0gA#aEvvvvbx*zM2`EDyE+Mm+sI;H?##>#0tH0S z^t3+P15Zm&5OzICeB-4zY)wTSlpX|J$7^fe+5=4SDne$7>@gYf44 z3rB~|Ck@RnZw5(PuDR|l*L;{Q=;Um?_$Tw|oiXACTgL^Nvpt0QBHP=ek2qeGtbHhweXBZ8d{w((=PButVdf<4LF0Nk zz$tQg!b$JDd^q26ob=5er=hgiMWlrO_-8OOrVWF^E+b=OFa>S2y1w2!736${SA5y* znnF_Em8qH|VqMnQ0kH1F0|PJIH_i0OunjX6ck3E2=o!tE2123X6oPoygLRT4#z(&X~uY5DPQUA3h6ofsmP+~nnjUXLd% zL+5k)jwa%iUAxhq%A!yPv%g)bFh@S%r{XW>cBVfUvRhaOn@5lOFO*@IVrMokKN0Kt z#-nOD7Qf_q{679#N4^ z8=E_yw+>454IDS6lIp)~_T4Bh5&3h0U@^9LnnkXQUuE5AL$X@wJZnQ4`7W`VXcmCp z-K2@f7ypd;9VIgNg)hqfef*cUsQW%wef-mCnQkanyFkZM5id5IpM{+#5&z`KS)^!cOM){h;d0HSSRluWPRJVdh_Rt}+}Od9wZ}(&ljd z$GfiA90REzcPgBw<3w*L-W2P8`?S9*U0ZRgW_@tFu5v3OW56xN_s@wK56p;1$Tu}l zhkVkkpNXSD+iPCy^-9hwTyqO*VDI=Tst`p$Bb>S6v*CR(IrdI4d);>{b#@s+;(hRR zYW&%Rq|-r8h70Xyd%lR3D;^S4bLa=(3no2UUJ3`Jkb2jxr>FbjaT8==q$L*?Eyt*f zF0es+dW47Nxw1m(LF*t)`zf9L=|2(8X0wD$Y6r?O+v`uwkKfLDpDlWdqQ-ekD0Cd3 zCqt&)5Mj!fYfg5jA!P7|v3^ss&uTB7`hA;Jf;>UAx=lC%t5DZYg%`Rv@+`)#LjGe( z3E!WNH_{p`YO82H+i-hu#(I=o&r4<)mTC5HZ38Lc9T*NAg8FmN^mmwA7=fEguN6Zn zlc@~I*hGA<6}oO;2KG$1-S#~F$@%1+p$iE&u|?wa54GyVM17uhF$(Se0!)i5&=5Xo z4MdLnbFXCWpl5FI8bC$>Wq`WVUi$etl&=ho9wfoK=U~&&2yPuiSPTvvw0} zl`=lgTJ35;;mJ6=yt9NTP0Al1&lHMb7<*|OkL6(Tk!f-P%kH?w9h%MoaQJyZXwsm_ ze2^YB7eLrzalLu|Q-I}qaEA8eO6dbytG0)M-!t^fMH|p|xyHWI>8T|T#3Tih^RD!7 zLAfE_yCgp*iFgOy|_ zD{#MC?$y!Y;YlYsLG#J%trwY-A*wGZ6foIMr)ucUBoJ<40Q;3V_uY`Qv$KO3I#uY= zD0rkLlQjh&^2gin&hbvr+&#$(u-u?MFltBRTou=$a=>#V+_j5o_p90V8iDjDp40;@eT8i19H5dHZ0WxB|OEVpT89DISeo zYj`uw!nkaxkbYp5{5ZpIkG8Z)c^;pr?JFxbF9n#Z3(a4?7#~4kb$?(7uPw9olE1fWDohkZ?_(&5BBTujGvHqwE54%FZf?B{#0pnD(r zRa$LP#FyYI2o9o~4-mRRn0mWveF!LC`Iy#G65wVNrehi9?+GcmB5o2>mA@rsIb&fx zm8zkFU)#-#N2_Yb>3OJ`Tw#%_ksOp8GLorVpmD8OA>oF{&o$5Aw9mPQKHqTGS!QWc ze_PR>MMDv0opLN3Qzz$m*iY4;G=^fW%v&Bf+vDceY`iJ*I=NFp_V}Xegwe*w8&yqT zt5LUNFXTC|Q*0capLSj+4}goMEyU(kb;6H;{>3WHe2f6`h(Pwb8_WsJ9`Dx1ym~#B zBSauB9CdfJbX2z(>_`wTb&*kbLHnAOfb93;YxU~aR}%_Yyk64VH0a&d9=};p!Pr}R zQ;&_mYL%Pz(^T|5Cw6SvfHx%=nV+kc0|G3uW2iZegCTo2)vH+;2^+(}A{Cm(P_}wS z*CM8d7*E$D~-}>1_A?7ST|?dVgEwTtw{g zLLnW@FTzY%+83DGyEP`^viuxj{zVG9m*#gYzIj;NZTKn_*PcA3som}Z{2)q^lu&@2 z3*EPNrQ-YkwN_U?^cLEo0qhquhdvaiaag_Jbg+|~-HghCCdz7xZRr4;#BT)zoNQxj z8*8bDFfk*rUZfPfy1E+UV$rA#S7a*MzMj`OTWPOJnO~bNKrwKIYF|3p+e1#q7P(#- zfBcBb>4%?7(cP{_2)~8b*HE@|Mj1b;o;psu3@lcn#a|Izn_z>=oYBXKrK5Bw5l-W$ zL}8>{TZ3YxWl*xiBF1pTm(SINzTB~Lo2Cgn6+tkR+nE)j7TA#z;>$)m$itW~L468d z0)L!niD^J zflA%^SI!krr+MjhWH28J_5Ngp;wRyZ=oy~aF2E>#GisFgA-`03r@Ps7<)j|y!HVy2 zkB=XZm&YFrXuqtAgFLM8f*6NG7{a{-iCL_t(b^kTjU{wTX^c% zQ}M_0*%(FlyANI^H@E$8XL<2_Ty`U&Xs{TLiHbA2G3j?SWs$7h@d*37@8C++rO^2^ ztq|CTcST=VZS zihB*|2tc!T5|Nf7;1gpt3*)i}3Jk~Y8W^PhXg=}vn}QaDyymQoG8fqpLI9+tdP8PN zbIwoqKUe@DrWHxkmXiyHfmWiwH7VrF$-+t3Lt`73DeWZ+@63L1zPvslrbiicOE*$u zrFTv1)yH24pOw>uj}%L0wsOM8uu$w}PE{ud*i$Pm`apm6j;HS1C51siu$S%bx;0;a zYDeD8jO+^wz6v`7fQ(m*|9TOPj0r)f0Fv?%q!)=$v)0y*J(3%IS11|r-z7g` z^Gde-)#H02V^AsYdP+Brp|i%+Qo)53jE|p_tZaXd{w*LRWD7G6_0Tdzf<*;QVH$0C z05H3q1!S39F;UyAl%lM`jE-^_ZV(M3ffOw*?eSs8@pk^mGDC{#qO=A_?g&dIG;A&rm;l5y#(58hv#^wTl+%#9M; z)%E+0guNppiznjHjP_YkGKqPW-Ifm5fijozH)=zsQUwGB3F=g#&ms==)`!h7aWYfC zUNZ&y07A&@^z&gMo~?|N-x-JK?PdlzjHT#=#*8Pi1Q-PofkS;7<3+`8lqi2kzL?z% zW(4Do@LC}Qw8-2qi%$@=9cbj<=qdyA$eZRrof5}y-u(=`y6l{B_|g~P{s%p3Hx^0! zaO%y>oxnPv%x}SEecgPEya=zZ4@Md`qUB)T!wuPZnzQZg5LtXLb01V-`(1Wu;_=Nm z+EoI@(Z<)R|JlI}o=P{95c4gL_+Nfb#9fQq8P9#%;ln9t(!ptR z5$WyKztb*1=@&En`7=Wg2Vdz=oNtp3!2PN%Oq0M22X`6a6t9<~6z1*ti?9Abi{2Hc zLipyl)(Q-|S|>-dCnd<%Uasfn<~~M4k|ng!1S77$%c!ZTEvIVyuKn;#hen2)Rn82d zf42euj%bO*e#QvT8H(8H{igOlmO6z%{5Extcn*;`Db`pGF0!pNjqi8Kp2BRi;-X8dehp8s~Nnvxp*srWM_L$%GvenO?_RX`YB zJ`6^+Fwc9YdwF|f+x1B2Xy_#@Vt1W^tquLM=F7?a9^M`Ny^L&wJECe`78MT+SixFX za0Rx_Ys~Ir`ESbl8$Cs0A_VGyR63bgfbDD;h;7=l(cit==+_tY+FIO#@Uev` z-2WsH2QvT0aQpE=IOPa}x%d~Z#4%CIAE7dlS^wE($71(x8M|qOlaQ1S98=(-Q(Q%p zdI2Wt0RRaU^M`PQ+h9?Va|lLcPa=_{-@{OmCb0XqrfQl3behWV6(9zwAAE(>Vs zLjNgj8({sDz zV+=RGe1wNSKIrE&SsTa%r`7yJBHfJVao^F#gWcQy_;)(qTX?^(fT)91kGO!g zy^k@$as{do3DzlKNH3>+;MtQewN63$DZ(p*b)L(1Cz0`XdpnL@Vh8Eed~z``B3y=4e4v36@#E;J3d`+t5NDs4+#N~KalOrB!*enuWB_{}8d4i8>qZm)1 z>~g&BzHppm9yL%sW_lBe$>HY(s5sv$@WXuWJ6ZJ<4^^%8&pBq+dj z_s0yn+1|#c+xyYnH}RvfUKQMHqemzTzqG=2r=~xfYbj=ScZ<$Z_#v}LRMgbL>x?eY zMMs128-rZ01OQ=i+mvrenNNnSdhLiAI)(sByXK39sjT zYoO=G&c>UeiHT(Qfi%_pBe^))270eKRQ$XLr7OX5pb@zZ;v_U>TK3^o9ki0a<6ZMQ z^Qb(5$(?u)>S%ize3L*c1M^Rp3pZppPVKwjpn{K@m`A$M^5sU!8xgOLbZ|QzhXDrw zV+eag@Lw?E9UZbW;HyMnlJBVB4<_l5+kv6~iP>mNy{D=!xTudpgEh+bzuKqYjsZt| z%#!D1v)@Vilt|R&F;^w~o^M~y_%krJlsf*yTHIJZ1i_P^8|gf{<&tbK9Rg0i0Gq;U zvoTQroE!vP;Q5>{zH`NARV!mKSbRH6VoKu zx0HSM+vw?>j(|bIs2M74e=;<^DebedwIOn2sh9yM}i^PG3Bt{31SAfNxcJm^3UHCi7>sI?c0LqN3RlR>dANtLfdVF}d|C)U^3_%XF zg5B8%B(^7M4z1@8mgOW?%giZ)#J7_Bm#=61R(`*Wkkju#iSYRp+fou#A zN52AEMPp49)KL!okvuRB_mpSI7@TX7mTJ{qz-v=~^r(!^WA4eVF;CbLN0eyzaRn^y zQeYp@$TR{$X4*Z8;<%&jjBV_eeRS6vr!HA#H?a-s)~~1Ze_ABS5eOK4*_&x6HCkj! z*F<~G3^IWIGC7e17GCYk)+h08a4a+S8mv=90A(F^`~k|0e*i1db|sgaIJ|uu$_qwW z>heZLMhBy{?*txfJQ#D`ih6Hu4Lnt!A@<8Wj^+H`Q2{A>H6oUgjfR!bGdcd1xJ5@8 zbI?)e3sm$jkP0qx)2}_#?er z+%dw_$<;H6FEp+0BGyv@E*RXd5*1`q$FUTIG)4F3m|xVndSaemZG-N-(F>69VC}@yA(SWds`O@apWpFgg zSg#^55>utKC?NII)Be&`m~{NaNlh&p!B2zg2=`SNL6z$peYS72iHUCQtf70)~JOwR{|S9&_#30v*PF}V-W9)6lC^?Ov< z*QYAMyp&C7em82@gy;FkNL&4gdlZ&_Hc@U2D7><1hy^~sjTOG$q_W2o1GnSaPq7V(BH(%PA(T6NpSA5 zy9uV=1$c)9r#oZ30k-5~o$)>MAwJ4(Y~nG5wF)WpfPtXedIt%lX#dbza>F?jNqb-s zK$t>-vgwcWcNiCNX+6)jOz5}&lz9bsu6FhY{5-hR;UL8q9|;Y6)d^-=r|_v%W**(A zknM_o9xTPk>VV}>M5SQxJ&+vQ=OqRg5;8o#h8};5_=iTTf>^eq+EO^-3=S3M8kMQu zXgS+OKx~Cd2N|-F;Nnkl=AE4FH_ad>2&P=1!by6a%AspT`6tcH%p1!1)h;W80iE}h z;xDWqP-5UKQH()A07w}Guwr9Sr^^S8q}ws4te1e~7=`JAU#xt-z=?e{X1JY2(>-!b z-R0F*eS$(Qn7^%2KG~J=Ls)rXHuq{_S#JgOniK|w-fc!!R9U{IBxHCX%z@E@HCN~$ z>OI6D-S%M=Tnjdxhv~G$5)h_pBOw@)*a725U&EX?7`Yvwyp^Z&dJEce{>K6130-2I z_^4Y@3kBeZ)CnVjlbDuHnel0i&vocdlfV26nqp|+K6Uz%Q>{7s`7**n@&o3p{U{es zpfdD6B9A-PTQSeCVA@Z-__%u@fwA%2MQNI3fKHjt_#UpyBmyV`fEKU^VJ5hGS)?xO zmXla^8Suk1N}wUMr{8V@Z2kinLM|#U9{TfpYh+@g5dP(xkt81;WKi5R)E}sQ`hgc9c3G@EI&Uf>JF8T9%TOxK~&z? zgw8ucuFRKA`wc1KaLF#uD&FzI~Kh zSlso*6#~HLhau8TVbV;#SFg13{z;#MEVP}()=&Po9bQkx9UUDZ3vaegewFrxO~x_W z*J8w{*w9ljUhI-5pGs^Eo_~rYvI8*fn46w-zv+|T)p(r`N`x(@vXjMiabNmxm)xB8 z#d(b}%oJq^pN{-l<9j@eKYEN#5s>Y?$9Dhk-5N8Q0*C(INT?T;Pa6FO_^ zbWJ7J`HG_UkWO>5vTTCoT_}j$g}Og*4E^_SaPpJOQZML^M-}k*RKP|nHacgctb#ob z)t)@-?wWO*M9jSb;i2@rg^tLZv*69MFoXd(PYBcjmg1q1{fm&lT^Qc_Zw6@dMq)QLsX^}jyD1mY9|dhypm zLFZ(cUf3j_F?}h(&(BVR>&VkyF#Onm-7_63H>^Ds{7|<6wCZ{clzRY8i&!JzC4yLR zga^BT1A)p?0#tUh5(oysNB6$G5lj861&b_HdU$-i0Q?l9H_|{eoS8yc&QjRWU;tdw zceu#3l$0)zZ?<584;~pD%!X1XSPXa_!$si}jF$cEBaDbLD3U})5lqxT;l+x`>Uhm3QObv31KU9f1BKv}}$v2nkoz!kq?Y z2Hw+8&OCztvAcUMP*9gT2)~9GagyNPZD2-OUJ8}w2TCh&hw!brnuRur&!_~lN}X!$ zrt$#!&Pf-IP&^*5<)Lh1?WT}Y3^Jtx7YPm8Xkt2bEWk~((@)Y%F0Riun;s#%54Mj+Ui=tIB$a6(X3s4P3*#4U=c%rVv&`d1mM|6@k~`h*yL~ zR}vEw+fG5*_ye@Ja{-L&*6p{z%z<#k{J}qS8`+6DuoDa3!HDe@c*j5B$b$#!aDVj; z4N!0>GNOZbpPJhYCGH+gEloHfO}7{ye7_mQ4*@k zP}NQCEy~ZAgR62fs-3jN5C{f~5J9s}$dCk6b7e52!$}rin3Z)4i5jhl{pTEvbfB03 zrXf^X3f=_;nGv1~#GjtwmpeN(vA;#1K_w}}%A@@C6Xlsbs4!8yZ~lX>Mxm5x{)dd# z|Bv?Yf5}Hns%!>%+@JIA*iQf+Wt$X@suErg12FEHR7f*6$fH#2?dK|H1wEk`wZax1 z92%E^Sy{vFMUB+tN{JKc+IcEUg$I5<@O5kI%$X@-_`nfa@Hqk>RLFM2_;T=L zaJ`i&`Rr0=M~ck_tl+*180{;RocKI@P65}4m(aMQk3wm6{(kZmx10uDZ+Hrs zDaftoc{qu{^pUs8vDLJ#t87bXTu62E}3cM#fljg~XXGl~|3 zck&s)r{01pqGY7wO?MKmN`okEj;X@7!l=eY4cj6zWw8d$T-b(Gn@_$gU10V8GP7kB zUj(j}f(D%LFvWe7`SG~#5#}rk8?;_Ub4`S*CVAy|C4RWVdnP}Vi0R9z-E21f?H%l= z6KDgs6mM&CEX!V`lBUMF_)Tq_qB7OxK*Qu7JA^x#1p;^JZH;)$ zTXN^pzqnUPyvb6$3*U+*y-Ln?f!?{)BCzUs zE_O22qjv5Hs)8$O`f^3$#km2+yaLSNATIpx^-p|at?3n#bm=W}qs%sLc!Ou_Xq z;K=i$GS6AM|GD)gM(tw=4doQ{&NVzXJr$deOuXz5n+{^nx^q|wE!mM*Qt!ObGZ|Lk z*0D7h3x_Y0gXJ8K|8jT550;REEl61<@{^X*A7KPEIeMUFK{=m|{;}d?P`3VCA&?V> zD=2OtJ3_`@du2zB)9GuwXLuU`m?kPULVdtomCO#`aDH_6v1ACh0#WfTIkiJ`TCw$L zmK`yXmu}v1ZeDS&-kiVGU>Oz{6vA|Oa1C~FlQ)U%DzCmVF0P&B?(B(pF|pjAU$?eqab!phydnpw zGwvSD%vvA4KN-$zQ?s2PcCLD`>X|}j#Bf{IH4H*T(#5WkAL$ayfYBQnEhYcfRpO=q z_jdVo1M)QexI+2H8n^c_2V;W*w>FL2yDvCyX8$#xfyv0hQ#G5T_iUtZsQJa}b-6be z___H^h>EkmIbMfLa-d1>&o;2mH&9qACtwzWl4ZkW#&qWE)FQV~`1~9ssS)VcTHP^G z)O>N#0L%ey#!rPn35O>YH)l26`b8{vt8KmalqSC%Y37EXg}1=6UV~*#!V%Re9HWa( z6y85}V3G;Ke$!g9^pe@TPr)bkRsEvNkC>P=C*t7Thx+NU35NL<)n`!tt6PSi$*&rf zr2uA>TffMfECFWl4m})AWs3Acbb3ssdkzzupT5=6HshEe(@urKB*z_?oGB16uF#q| zN?oK|dtQ0JY5IrH2oKmMWhponyzhmvMTQSQ9pUz#gtT_1U%t$jJIR9B0Kj>Z*c@dJ zAKX$%e|eM|Z+sE~;}%6mR47!EG}s?gCMQ};!4eIaD5$Wy3Ih;VD)O#s4rIx|Ee2VB zv@tFi9}MjNVVpmVZjS4`co|MPCh|7St?AblQzklYhiJZ5N4=rwgc+x*h@goIDl0|p zx05W8@KKrf8*-ti4dNbevN`QODssC4XE*>c;|i@xdmIf5Dwghz6SXb87SgMh(s>^v z1mvycE2Q|8RUsEp774O=X2vIV?Fvnzp2ThK1)472@G`ovEA`t{xyFA&E4)W_-a_A& zH~G0Hs>Nc_^H+=!{Ba`OC~$+(YK8~O2HHcSf!|+p+4gmv6{^D@(*71Fk=SsMvFNs5 zs`&ygC7aXtCM~j*ymfVYHx4J`AFp5AIsQR+qhXBnwb?k4%*k@UN5BQ>K2rZpNm`ya zeqdzrJ-M7KB&zi@9i|X=TXW;D!l6;d{p;QRiGIfUE;Yxmd*sfg{k(Sn`VD^ADdhk8 zrP90K^uI0z|4N{oe=AkOrd`McU;g4>k|W!vz}a-19MJBDR){ZyO{VPe?|m^AHBGEn zV?P;K3HHTXoZ5fhd;i|0xbSL`W;~|$WBKKZyuMP+TgZ+5%eUe_(OxuFikaYV#s$Ob z9~$v@085>3>2pnhrInEuDF;|XV#>cMS*C??MX_lzQP|xqaK8U_S&E4YBs{QaD3m2~ z4B>}8S%kVs{aQI2o=RfuuTg@+jxKZ?unKu!bwq2#cO*GeWV+4&R3wi23SXwzd}om z9U%6GX#UJ|LY3PW93@eL)dp*>owJibgN1yJIkH%jv#FB)DvoT}kV##_=vp=3i9XfRMolFCDOpp2{KA?Dx*MTv)p zKrOlqrCnhfI{3GA_+Qfs7%~LITh664@9=i*uy=>yLZFo8tPl!yE9OF~oX8*TD^OKW z+yYZYOpDk8Vt-4$1v*}xuh-$hkioq`O_LVw#icyN{NWrbQ(CkQ3ndxZgTJM59v%U) zXcU4kfoh>>bxloCZmtaUWkE_EI#A7DJQnc9fYla~c+1ybj}aDZgf9N%5SjOd3{(3} z_KR?7CWKTHX|_Vk2*wW75D_R~5=?TzgF#%hr_p(&sseTS35|`X@Tg4rkQ>VExLdCS zG^f8r%f59LKnL0$1kgZ4=_%n& zlFIu0cDIp^-JOSf$BJ=j(DXOxeIv?e565?6x?TbBzXSIU7K)e{d6WXL2g#>3O|A+| z)j$V8u2F@ZWDq9(UPJ58ZQS+pixBa{iT)xeR)E~_FI`3MaKL^V0D;C&Ka)x;l`k^x z-1Wem>k7m1cn8M_r2+y~d4f&%8Ns;YYM(>J-`5*`8{sKNGgYI6TYe+)Tt6te78zmw zb4kOn6)p5e3u-fNx|hD&&b_J-gD9sRK^KZ@vj(1P#cLuHj||WVI7>c_RJH+Uj!hYq z1xisXuVPhywRyDhB2E7lXaQ3XT^>D=@OG!0l}!i*1ysL1AM_!t`)P`5tNPmGBPfTG30 z!$juu`XzfALGYwnfOlU5IG69v6A`)AN&c_^k{;a(3x&$EjoD^;P}!1AjavLI^|oY- zW@+%}P?<@yVC04EQUNBWUmaM2L_`|TY*HTLJu@!r1lUT>mw<=76qt&pXK>h`%xr5f zL1(TR(aUP80jWS-WKzIuzGP_Sd3t&j5YJ(g=;#c$g% zhD z7KH&zNMkzO@$CIiz@7mtOKYw-?LiT$U&h_dO%VBF;1FeIVFB6~tYAWVSz}{5Aj$>( z2r)5Qkol6<*QWxFy?eD&j=#Pstj#o#!xyCKT)GEbnisJ!fX=|U6Vyb{L0w5*TRRBU zwW)yr+_+Z854!ilJ_l7};y_^{qpC^(pYkFlB@C)$G&kMwfNO3a*f-`JgddxMPMavO z%wV8Y^NB%BnL^Zq7uZXm$H$+I?Ro~p_vU*)X7+)4WYTa(0GNY!-ej|b=*U@ME5hKP z9)yZZBGk^^2=lG2mi{`{;Ir6(;*LwzYq z7@0r-ZES)=PC_EByeLeh@#-FCYDfq>rt7PXooDBXc|lbn^TWVs_z$4GU}k16=)d3h zG8DM#)~0IvZBGzJWSgC ze@X--A~19<2$jlF8`6v}ivXap%b*u_kW?}DUi;EC#rb5$LzGCvoe4*(rKt?aQ*bip zojrjowxFzR!-0k>GOy>mX6DhBb-~~N-2aqIr*ddQ536_P9G;|&4aX;|>%f+*4*E24 zC$b?SULvgJp&=nm>fYq3t3&yO2v!o+0&_DCAX)CJKm*%rw@4p7QcRAF%wYrT(Rk&3 zLO_Ou13dSjqz03UCk3IuEed`5y~7YjaYI5wL1pXl+|DF4>KvejT}xqZXh?%hG|WNk zOV-ix8i~xxPt0WKefkt{*jDR10v+%Ipc$_t!nN)Z3^?NC(~0pLb)NVU1;U{6J3_|0F~tPAbQ6L>{Q``w6P%}f6V{x zsOqI`gZ!a+=*r%@bB82~PAm)t#Rl01rt}?=DQPdz$l(QvM+&@is1`61@LWs^E)eGB=NEVG!M9&6 zhe9|2y0GEs$SEq~`Ul}If+WWRkZrYt^tvf8g#(zL!dm(>Ex^DFJZST^>vHB#&*5uw zeiDUA#c1GHWaQw$1yXJ)L^^H~xkY4xeWLs7t&2ZlNZt(Uzva4INdmSBIsFLSP8HW;NTJRRsoM?fU~v(6YcNb1(`0*-e1Gv{_YF zbCStu=+g`h)R8)*gY_?}2L&`45`N;ZwK+kpk#Qkx?ngEDMr9>i!kz?fMM8#$M6*<@MK`vxN-q_)_844xs=mHNI7*% zKR}_I5eE}FqOK9WR&5|l6q%Ajg=&EUF)-AH0u&2VvaK$e&l2~G&z=#g1<~LwlRgB% zZmF^K@t>`JVKC%$zWeufb^y>PbrCBr0g9IZ!fWEG2L(DuIGoykOYq3OkGw&luO0Ly zhLWDdTV8&EQjh%zqy^5OVC5MVF2RKKV5zRYlBv4|&rYM9_tKDhZ?2@n z(vWFiuF8gPQCV3huyn!;fsP3eDA?W!dj7I_47xI_zZsaaTmCr?%%){JA$uAKwFprj zu%F&Q|E5~AC}(mK`w*7bW9>~RVzWR7#uPwlpI2ObJE`!_0nkMZCeg{k@aM7Oq2_=R z9c*{`*nZxKJ)(7z(xR%Src=uq767=DY1@aszTz;x&|FBK0;FClq0dJ7OFzXhp9kpC zp4ZHZ%U3`Ze*m=YvU^4zXt%EIG_I@8mY+~cRZ2E-c~29?169f-)6(25gEOV4wB zuHy%V^0bX#zkdA$Jjgsek|c2-5qKt;w=VM9P4YK_+=DQPUF3fl{8HxvLJj5mCF|*G zw*?Y0->0cP6-bnole^5pp?GuzEJsfO9z+1FO(?2&a{!;g9&WCd*7)!tlz0xGRA{a37Smq9dt=4h*NOS)Ye%$!L@V)jovf z_+U?<1N8x9)f|9jDF<;p=GFS#z#sJtUhies5A*_A=hzbZ)Pndi0goz=$j^kui9?H)=#< zsM-e<$Pitw{*onWX|V|~e7x`!GS(6A3eFaAZ`ijkK2J-db-=uNaXncHw5^w}cUHNI zVj~eQ0X)Wy3-qj){CEW*w-g4lL(l&>iAN_awFpWqGH_uK?*E#zbZ-B8! zTp)0tXPWru<>q=CRe??dZZH9DK+mESgcQgM0cPkjTqHodt|Q`*QMCLIF2YO;(NAxx zNZDlzT9T3bv;M2Lv0@rlQ!rKO4F6D%L_rwB$j!wB-@8sHfuDi*}YjmzZS=;#jnkonJr5`u#jOuC6@6f{lXo>hM6ePLMgKY&oK`8RkgsM z2&cccArREHuDhLi@YZy1T9cNPG!Q}?FBWnL5)jCmwkL2S1Cv~{_3oZ^7J9Ov zT|4>ox`+tX#KeTSLL^8Xl`R3oaS2^RP7opekJ!dzK%o2trgi~?30di3+OsJwUqEv` zr6pbH5uJZfAR&;uMZ&$Ed648h8QWsdoeSgELFoU=rIKIK4p|bzyC14KIsECO)3a~^HK~lQN z8MHh*xND~az*iX`aV1((MvMNE4|kS#cB~>(g2RBKO*yrG^EWbJ-0CCR)5?k!tbQ~^ zI!xg5K?kt~3|>>mAMkRgpX}a&i`V+jLUU@9gaC2>E8= zI=E)dpD<)V31Ughptq-!o083r1Tl?Yfl*YQ6OA$jWhZ1UKzM8uFkOPwClJ*JA&O*8 zx3%ESAo%nZd=$hZ;$kwOD>$}7Y7W$;@(K!@lX(LV9C`)D_#4!akm}*YV4)){cEHqn zkZQi|mPh_jC`j560(xybwH(prJkpk~&Et0V;{C6{mqB!C2&{J|9E0M>kML}KVn*qJ z6SNHi%$owNOxZsoNdFzCMFO3Bi3tfzY;4$&0`1Ri_>PsDR|#x3K@R&`zq+WmGv1OC zj#_CwN>f4MJQ7=!k&y>5WImdGXG}g-!LPhfJ~eMo`xCghb5DF3 z4ULQaQnwpE#c|!*fCn*+`jSHG&6+S3I&Lg^mF$>RM`ds zqHE6K{HVt;Ul0-%)q%)8f8m+Y1`E{swLRPsR&x%?j67!{F@vXyi=?Cd?^F&o4$*4d z3YwB5PeE*Xh-fvK47?!t3+QX(VB=JY>q z9fqqK5cvVf+!V-_lK8D->UHyiAvQ#|8sPZ?RnS84VJvvmf)N?7q^0kD&rwTkGu?id zlp^qZ_oB@0dBuxZ%R64psWkD_|udMv6-Rzc(%vq2zg*a(6FAxiS zKWzGo#KdQU+nxY9cUkxAgplkIAVf!)S8Hm>*i>KsEMm8fV!#3FLihuW%m7l|T9unj zI4aTR1iwTg^B!_O)5?j-MhPMf;jom&CWkabJ-n&ft7l#Cj1C@9$QsXA_rBShbs)80 zcX(`g7Az<+bd{%fsv;`p7&W+L8gVP#?pGmT+B>vOAfls)W{Lp2GMT;9f5 z*7cJ1ya#FWhCgCRE=ly)Rh1UUb}1W!rE?z|F~L!a`LKHlJeb{wzl9ntlHA)z1!v}+ z>gpT6LK|3=$Y1b}1>UT_TM9z0#W#8@cCDDFIJx`>_B5YT1h5;<%+~%EV>uUW6 z{8TsrpR*PeVz6qbdd1VErH9S=Rn5>Y^#uL7=?RQ4mEh|qga3ZAdE* z27woehy;K%c;2nS=evf6=+KLy>(LxxnDF&yqv6W}{@w;GY`@_!VNF)azU=LdyQceie9#rdxFg4e* zGTD5pWCv#G;I?@jS7DMoymM!&^trda#E>tPU{(kiT9F0-Tfyxt`>?+cfEChQ;5deZ z9VDA`-c=ZakoPMt-~%xs9s;fCEP`OEPiAizcz6ilWuI+4CzPd!$zqtZDk?6)E0nFY z)E!yjx>s4b$Syz-iC;N^2W1ZvlW1_t^2ie4%V6N%%Vr z0XF3H!NA+D9xP21ak|<#z|9Jz*I__i0D&;@H^Uxkht-A>OIS98m{?l)S2r!IN=i`4 zb`Yi!_WZ@XVG5^`sdg$70&I{($p**BOBI<#5XwaIFJdK;0fj$maC`ZxX}HM#nThFH zYz1Q8%rP`n7pYbq3W$-?M_Be8_-e#rxMJ!hI6}1tB?+Z~ken>}_EVdI18!vVj3_P1`?DlI2>231@Z8d9%rXUC0VU}a_f@Isvz{`vMrEMH1EMuDOk zb-;to81;IyP<%P)m|!p2m`Sh**xFC%D9N!NYrdOwH9H# z`XveBDqvEs$!IVrT-x?R&NjnO=5jE!A(!Fa^?)_{fKqu_``^8RZ9~rEIUvRm|3CZT_OVxRGaL=de+_A*4@04-EEP5*1<3y6hj2r|A^X0t!Hq^#g-v*5d>K?2)3!zYzBc}gmVIY~KByK~=L zB7f+7<-{juL83s~|K{REp0HswK_nVMdsBPHZKG)~J2MjneCjF`_bn~&!C=_xI}pd! zp_kYh)`BdfH&EH;`G2qg@A_dR|Bd~O2pn6ucx|`C1s9QPj$frer3hR=mBSF`x1}ZI zkj>aXs8%K=((stizx1D{!S=HX-mz!WICk%H5lQ=PsFMQ2Bc8Pox}qgJ597{0OM zA~I6+2rLBPgmXaBVRh4BGBJdG_`mt@RVk?5wnD|V9AtLkG?R4_Q1D9n80zQ*gXzt< z1}N;_ACGFMpa_U{tEK#2o5Mn+P*ImH1hg&4`8)m5Aa8)2?v3Y`75Jtq;Znzn-_S|C z3C&IF&xhbU(4`FoFq(xT+O>g4Xd(@grkLS$ zPd--GAh@tF-PeDklV%zMxyo7r>eH~}V?_jb`Q}iI6735>d(2vW6iFmQbna7Vx7MB(pw?g3_B*(xSyf+#K>7WWYz`5`v4A4i zt#e|52|X+n1Pi{=Z=iBsb~O>{xmtBzA_}BFj#oo$g1G42k#O>>9T50p@H0ol9x)~% zA!%800nZBpi;UoWL8eb@FAefk|DaX7)ZTL%B#!Wy&9;{ZmdDEIp^ykps@!oww(;cn zuzcbne4SnWbI_+t;=PAy)thn_rCalm5^~&m2VrDsvqQ>V(b{0X7a$YIMoq(%=Ub2h zJ&GcgA+ol%Ufn_{7<^uj*j)4YY070(PvQr|md_ItvHwPtw=SY2kCveBSB{{(XQ3Jt z2SzlE;vu8d>HYkN5zjyMRPi!^DIT1)2AI$Yjy( zhET$8y3`9}OP#>x`g1^z9)dkg6r67RhIK*I{dfNMpGP@WE#W zgp&{=voSchPk{&sf+7^s zFx~{INK6!HaD$6?JlM9*sOEsng<_zEp7vM{15+6DU+<$KY5(rG)x$51ln|D3Ym22S zvwi~Xzt1uB9OhvZKUg)tO>A%aDJYv_prDz_5SHzAZ{7Or*Fq+s&q5s=2Z8e-gV;LK`?X@33g;qz!)H`N6EL)O9W+&L4 zlSqTv>;e(u7I8zM>I387Usm6C)QXLbjLc`8{9!}2EIQ3YK~Jj_gsdUv!0^`@Nm}}P z^Y0O3T6MF~>wx~x$nQR=TSg>{dh#I}BhxT%^>#Tse0Uu;M$UjoZ#3vo_<ffMgRQ zRl?NX?^^K?9V+M|O&CbQG(i<>_a)NxLd+nDAvaBIY8T)2F}!o<+sHz_ql79%K*q)d zEq)v8(DLwF_lC^gc^HBPFbKtiGB}T+sP7+-hcor05a3mCnS)%Z4Wcr6 zSweyy#cSD3B0ve%?+_T%fRop1!RPw^5hP@f|E)+W@ zjqvTSZcdDsg?ZKU+W7xrI;+A`u13Z^{Z)FRzAX!`Cq z)_^^5<%xtgBy8?CaC$)`&iw0#(ABqKA~e_S#Goy~%*Iwc1scxt0))gwGE_Ae8DUAX z1r5NktfJ8vD99Dwf&xS;ZSiTc0k%^A7U-ZyAvGDOEMa|qKJL31uQTi;dQ^t7&$TQM z2_P+~4GiF5r+Yi zSNZw1^%)E}P;exGsoLgD@Ea%;R2zUvmkKz~v^x3MT|tH>YiK1C9BSB~p?EmJ8B0n= zw=ND}wHLCV9)D<13iF<3z!!rw@%tUckG8d@L5+Gfu?IE2krGl*i`*!#(mOHJv$y7o z=A}u<{x3UOE_@*;JNvXV14TORT2NiX0TzEuNQ$!UuT$WOla2*26dYBoyWM>B1TlGE ze^VbL`ap;E?@iT-CxL2u^Jd4o+XC$3Ht@4>CSO1k44fL|NW+gR4q*D<_8J{3Ny5)J zyo{JAkQiCQ*5_+%Y9&L~^Dg!E;uK8Ttbh0UCUmQAk;u4avHO9n6RT34hvzYLDq#N=+DuuE^x7dv9Qplz~u&YOt0_-q#Vv# zHe)Y@40b}fto{DWYE-UB%z}2w6Xj$U%+WFI)3dRgWZa^*GcSaw9PlWKEDw8*i}SU_yMwSsu#Hg~Ycc zK_n6^!m{lf5#`ha&0Incdj^U*MhB+v0cffXAzwQP-$|NYa zgR~O{%Eb3K3$$!7G8s2}k?+y2x zhi<2FnXAOVOFq9g?0bbV0}gHl=@`5??-?VIg&+XQ!NuocQYolY8)qIp<2g?cudL8Fl0!4h2O`fo)hqsjVA` za}n$BHhS#M$A2gXT`yU)WaNmDQ@hsx@PTe~hw+yB$=lr>d;IWt)(a;!2BcgrSB$UC z-38C#A=(+WcoR_#Cd-G@m?Q<^Yx3;NhlN73W&Jz*_?PsRO8=U5WVpgSNM1$de&<*v z9{iJth}1dOJsZgw{SM!2pi#?(XNi8qAVKdyV*pDBI53im_`|t$r~6(SVnx~!H+K5L zt2R#RPeZ=T}jXLD$`bcJ5MBol5mU_u&MW zu}OmLz5~&GgAPK;F_8@>lg%0`eNp#W|0w8hAadHtoRXDoP`Dr`2~5e!ZInt$p!6h= zZo)koKOz+&;YJ8i4?v1uXQFt@bvqUe#Rj5U+;#0Mh4FonjW|b*{Pvg^q6^G-`_B*h zDk4GBFJ!=IKLrVaMgHfa*eelxE*#(Qv?t!a1}gztQzViE6*9$L_8b3w)?__(?Ciwu z5k8QKly1|UN3KSMr;s_Ms)%P^AFfP_Q0|(&6kbPGq#uCpLu$^ql+G9qVMm`ytr=d^$Z+ab^uq9m%$=nt5>#LA zU)8MtJc+vhxm!aF6K8QXtOJn`2r>`6m7jI}Lx#A=cI| z@28b}zD-Sec{IEZ4R!tXFowQf@6IlI`;&%BTU85_6nivwKWlt5ah7yxn}Hz!Y>L99 zR^u)94-go~E)n+7O5tLAVV%dvK+TEhN>EQgDk{B^kw{mTOu2nK@y!Gdp|&yDwcUH+ zS5it_#^c z$CEaXH89j0Q14hCItaPmUyXGa*NF_zn3eDgC2wLGazt2D6slZ{yD8A8%pHym*MBY{FFp=73PTnI~LHn6Z z=L3DN${xE#mrh65%`3e}>MQ1{YROJ-W$fKZt5EQt50la{r#8gN4S#BxAJszE!BY6!NFSr^DQqgN3y=;WMIs>=M4Q0 zU8Qhm6cl10`Mwf$`mFq}l=jT5-y_&V1LsWV>RQYEfSIrE=osGNXrk zzkqPqyPc=c(5{N**a{Z!+qLn-=zWnLbsj(R`rj%Hy=eYR;i6*5$51bM5LqG>s+5Dv znQm4IveEPme$KCWZpc+#xRU;AC*5_QLti#3KBusmY7piy7LJbL;S^K9(-91qjmbe@ ze^p=A-?rh7ariM3)!HSgj16Lg?+y;K ziA1h-7wtD$6gqEo=Zut65C!8i`h(kVlxyv66G)ESwe!W*J0{JMH#}HE$=wI}l@44ugQOEK~T9(qug6*UOd-x@1$#AD@6mPlAWoTK{ zoc_ENwpb1}F5rAr*pjh(a{27L=~_0g$I1J$%!hnfmzvy!b4zxbORi8dm3*hXfAD>W zmmIk?DcUId%0n}GiL<9)@1nE7{ZsqC>6>~Tn>nAIz>+-R0P!gb*k>B{f6bg~JT_UkVN*i}EU{uujd%GUUFI#rnN6(z$?Tlzh6 zmgm*Yda2F}(Z4V?n-dr`-D9?+U9~8c{%7Y~wX6)v_r3-rawmu!?7%&}TLV*vJU(Vr zLmfo@S)o1?Kl=s`w=uQCnf}hUKRppLwENYZObZvblhE|)g$|&cv$F_R$aYq-2Ly=} zuAMANEq_#EuJkR&k6ZRe+EFvx9i;z$TcEgOQv6#=`-3~nMp4_jlkwIsL?7MuaPY8J zy%~9jp^TUK76ba*6E3Yqtwv?mvL@slXwZyr)lXe{C2H~V(H}F?wxSmsUc7#tC~cr4rNwSV{|M=()Lq7G#b$JDw7{M$M}r0i1*>yRK@;2PTS~(9uBn` z{UcrW-O6!ebfREnk~tCO77yz4_<8o7T%+GK6s z!e8H%1=rb}{i$Cp&FSo94LhO_zvZFd{Wa*9Ro&dewMEm^L6M^E={5~vv!kkehMxuB z8+og{jK`J>`8e{9dEho90~Pu#=DVciXm9$+iJzdKJ6)1@gwr)+<5@{Dvi8r%n95kz z59FbWsT0c+Zgu@0d)62a*0TPX&gXo@VEdt+_?J`iviF$e?+mn$AC-VpP2j47B=?ApE)8B13y+As2G z2LC&O&Exv@-RPLeT~67SB_P=R ztwU8uFCbrp$;^BN|CMT)l#(LrDns6HXq0X&v}a%@KDux#iQtg|MLc-$U`)-D`|54k zwHtnCDn?UXyN*olI(;Y5Q6=i8g;qlOX3=jFThiEr)2*t#9L7?88)bH` z(MIKrT#;`sf0cayQ2D(C>XULt)uTy6hMAx8Ikp{ndFa4Ix@+_A!8^r$MDHegvldqQ zp|zz0H}p@D33c6~m~js4vDxzNf>N;a{=>>eJEde*ita4OaGr7?r~BE$$(M%?J8g!lR-9H}xAHmvzWD0a;z!}7(EU8) z&rb1ebL?>xw=A~U?!Mr@!(qJb{@X8R7otOso@qJt>w%j8sb^E zv|m{|M0R;e@lO7`+PK3>qa!0~dPaBI6)Ys&L1j+XHvh!^qde?rwG((CQ&5P`8MZwI z-~n_666rMA*6q{F>UD2Ylkb1LL1oWym7|h(|J*&+p#D-lS~5>Hj`9RG>-XoWF78r2 zwk5$)KtbDAO4H*cO=U%?vpaKt?L)7GX^%157p9fB*Mz9=Ycrp2D5&bB+ifqgs&!6| z_5*6vw*f*|I)g6fuKwb-?#s2+P0@X<@<7_Pj4$-r$z8aU* zyH$eksT|1ZyGliV1UpzAm=HmFD}veO^a|D6#eZ3J`Cb>ieP z8eK-k=G~9SFZ*YxxAl~qIwc*t{m?}zKiLY?5PA+XJI=(0s5E(Lwc>53Ctk>~#mj!V zt{toYn%XwlD#A&c`%14>J zjpNLrW2H~u`Z=w&%sLHZdGtps-Xb0bH6u;lXAdA%IywRQ23#TLW+R1M;o=I|wll@G z=4<8mA6Ykz9;28E&!3UFQXV{c@KJQfw<93Hz&hOtGHYl)j+}(ISII|Ai`+#|mYg&Z zy+4}w4IN!YNY?|Qyrt@W%m-Hy2HL`KY!l9iQA9p{7-OfUwy+V_w?C%;cYMbg05xZM|s`U z=lc-{albLOEO(;HHyKLZFo@kD@BLw?lVJcS4g29rv^6;&-MMpz{4t{dSL8|nn`F~G z?{`L~-;?>`*{hM^U(FadCz_v^)~PM&e6OkNnP&JH?COV?k5MZ0eK6tQ$6X*v>Xmmtj?Rb4hOM$i zfi%{CDom3v7tn)ex80-%4|)U1&@g&(#lz9zj8k_<;zz8B)De+osjt#K-5(_+?~A@8mqw?2+5HR zU4I(c!kJ)W(rZVRHq@2IaIIqRb(4x9-y_tz6dIJ;Mv*Q4TDNUDm)?;}et&&G!+>F< zTj;#K^<0r@!a_P@_JP{ZeV)Ww!+Iu&?s-tCjOph@^r6T2t$U@whU)L{SG`XYbS>{{ z%L@R$y~NJSwHfHhGyvNG_DC2&Ov&oA;+7oAWGLX)zT(KXDM|ABi7x?~8eFs&@2$v* zoiO6q|M8Z#@4#;5c6t8m1EKmtQE5L)7Mkv^$$1w=esp_K_F~`Wnxxu-Qie2xLS(jE(!t=}F8bs4i1 znqyHlX0Pk3UHRyK+4X4kC*IDM5#28K+1)Qp+3Q~Ph%)Ef@ArgdJ+6IJKC{;58@0Qp zW;~|p)l)j5y%%ks?f>l1toZZEk53aB6WZ)IE#E71Ge+&2vF1Ksvb1y8EUnHZfh|V7 z40}iT${uMac?%rhuA4%Mjg^p?NM+&?cK-fG^P~KXWN)gfRh?ot!e~YKvbLAo?M30- zwaw>)gr_tf?$uTM@Pu8oawbXkR;HDCitsZgp-@}KwS|U9kHoV+x%Bh-NQVCuIPBm= z8yK&vmYviS}PoqzB+;0Jv4QtnOy`2j|=?4O#PTtN&H5(fwAS!-X} z^BbOr3P$&o_+Cr)oN#{Oe{i9%!hB)4IYi#Kcqi`ks=&6JHf$*-a+$>{drr5}ZFds) zZHVuG|2s$ZYF$-&$HY^ES%Kf`*B=-HZ49f>pJI5@F4TPWUP>%2cc6Om*mn=98(7P=mpJVV0cA<-%e23!PoY}EY|^UZYuO|&iXTd zKwrrh(1C_LmK#EGJKj}FI#%_S+Iq_u?%UombaGf-!)k+i+@a_n8ri+n z|Cn6~dNdo!kemfwM^Ck@>(Y;3zXV0YKacjp8l2r{I}2mI#Lu6`^j^)CQ+3T!!@Fxk zGyKCn%u41ouR9tuO5gvzFf8wzx4DPSz$>tWO_l}t*DOgSjQ(V5sHbn$;FZN`E5pv9 zZYQgFI-TuFQVz%Nx3)Z%}es{Ab5+DNPcQF=PK1Zhx)VXKMIBB_=kFsE+z167Sn1U-O5(h zac7hDm!M5Ey(|>To|IN89=b^E0~-gNe?Vy4^<4 zdkHMfSi!NuTX|^?W4a{I-wzg99RAA%P))Np(>L~MxA=TZ)~X5@x$3dY6-&BJbw(c9 zxrkbQY3NFBt6+Qqy+b0+8H><5C+VFw=Npxu&~4eoz1pO86&>e_9&Pt~tp!K^#XLk0^R$!MtMr)%!KJfVW%g)*Y9s7N+b{#H{U7! zafxF()Bs&k5OA3Rnwo3aFF|b4yT9L%bV)wrpwnt1_vc5Q#(F8E8&})dm?1$KB-9BRuLB^C2LDEr~{-TY)|YpajNSsu>C zndd6xqJ7I3uG}_W)o!LCk|MyXCXDl}J%zVV656T+P>X@Zb~i{U-vz{Vu{*-xL?&CE zr1u7j6X(o4DyH&T7-%Io7;{|S5v4YNj_g3~gxe17!JbVy{nS@u<+}AOZqk_TR+nWt zQ=wo)E^7Gs{T&NEhk>dT$pIbP!-gNqPVHpkq2_%=KEBeeoNL_2mR`glELr1YQvUjw z(SVZWjEZ%1@4hRNcTsAo)FhLmf&lfNTJ`=ho^PB5{7EGywd$haCm_y z=2wbW&Hrw{3)k1Z1h}uQO)sY=clGLi2%7Eq`SSFb*o$&nX0bKe^N-8~_rDX{R-UYL z+k!2Wk80_QB$b+`TwiK-wqUOt2JD)v-hX)II$LyeCdn7(c?UATd#1w{MLAK_?|npEjm{Z97WM z^EmdGyvV_s@s8~g9@#&(?wBYkVtlE@?DyljoV}jXP1@QLYxd%$UuQ#;TMnEW`6@rBLt;}m$iD&%ssr}ew+PlS7H-ShsyRgcAZVWCCs z)Ul$NGkwC@-kfj8l|e|lDHs91{gX67MnBv$Qg>?+H<$eUOS~Wv=XMwS+W$TH=z!AU zXFYXvr`4|Hbgr;ggJBZWAeGvh;n#3X%zW?7uH0SmDiJ;{W){=MJ+9N+NK(5t%ISp3 z+07=_Zq4ZY;~E9TZU>(i3ol~9TMx_9)QQ)FSu0)BJ_7|-?sC$3-?^dUex!kBj$U+M zdslsMoh$F@>&LxVxQH5ycpK*C_N?{*#kX!c`&OtwG&W@aX5+UOF0Uy!SRPIjy&KBpo2vR*V2Fm`M@SAcgs9LqfD{ONU_gj?bEX#IP?Z!W&0-74`tUY6LPa&lp{!|zVNm`-TT zHgU5WlIuC0nJ}=drT>p8BcC#9FB0ZnB|r}f%F}~qao{JlM_>v_Xek`m2WISrV%JkR zw0tTmd^#6qoyCb~0b1EnD5WYa=57=)Z!V}@9*W!kUMT~-1vj(jfHeyl z#zJQb!tz*NSs6$jNVqI3bOqj(7UAJ8Z-`*6bB`J&N-x;;-y9fI;)^_%7!H%SVc(dj)v=bTtfFB8)CEZ%H-c(_e=r=p6( zbd3-JsbQ|iB&$D<;Ia)6!pL zMRWFJ4(wy&8^xAy97-gaG3j@lTM6ugn4w1BuWYif{A&6IRdw|{sE~{>er3jH%lnlH zaiqKY=^eue3k)Gyew-aMz(3VD+$q$l$t zEkr0MJvwhR4cM{A`Lo`AkPv?>-;LWoE4rahenbhZWn_7x;gHABt`aiKMJ|`~%%d~a2D_=he?dRHL);OG@753bRJSbMIBwDe zyBP+Q2rcv*RVQvUy5geGD%*$EWhV^zoZdTnnVi~B;udv>Ps#lC`&OyueqL+-vR)_2 z@r=D$h)}WSF*hzQ@%C@++QL%kNmwd+ znJ=}a@GOrQDZZIiH|sw4rZec>>H3t*QJi{julR1=k*Qj^??B%T8Y!Aj_JMg}(@O^f zPTe^1jEVg9z1Hce-lAx8IDq-41^N>h!;e}LhHwIFz*&f~lL{!R-~SNyUlLb#7zpp3`P#SCbF#UW zf@bdebs?U5hV%g{jiVXE6T-pQ($6%V-KD70%K=Hq*wAZNZKjR-tedJ94cS_69%1z3 zVxYzl%=fX9*Ef}njEq94&Ybd(@$vD|E}xNS?`Pda$~<?A zR_B#p@kzV=ol%2=4H$G;AfZ}x=W9V!^~06=6zWYRc4N_pLL0WJ)i?+es`)@xp7l)V zT)i3vVqX%BI}Q%FVHT{4qKj~%M^MsKRgJ`GBqtA#vVN+LW4Haw;@K3dBMj8}FPhR@ z|6KT(^IYuJ_WR}I9Ir7}YzMAv(_9w0l+t@c+NQ@vs}&{N^TNoV(dIE6PQ7^9i;y<6 zqYAoi3So=CwT{IHJG1ptiv2%-`O*m0cUeE?QztAv(Cq^W@F?NigWjm7va;WSrw^E% zsw%j0rl+T8;Xfe<*;mH^fPIO%xfgutc^ct{liIT~?g$5-KTcwqP%nwigg!`$Zq_;Q zu;STG5$d^c3nJO+>1srnJEVYt3TKetx_9Qs#>x@Ddq@EaE1DQu#+e4|fdPFgb92ct zm+)kDfp2VjW@a`A4rQB=NTHnxE)WUnu7vP|9R@+qozp+v&;>c4{<6`=#>QNs25gBI zFhmC}t2zSZm90XJIthPzCVl9p7hz0O#C0J}bPfva?kYKO9SI;pHBvWxIN$p?Qz05i`D5kA%F?xn}mXZIPJt5)dR3G7G(6jks;cs>PMn+>dVz zt$r9?oddq!6(IQX#S2p?AdOE+0>l}g#`Nu=gk|ap=Aj2rZ-#g^1v%Ngima?`SIIFr zNKjJ_R6@p@eT84z$S9_u*MyJZv7Skaxc@*dRg54%e*%Pq!EWobe#ImxC6w(rp>NTa z7FBZ`ml`bLmLI1QG0wZdu#^`8F)F4jXJga|DQAuN^DTtU4Yq{|=EMVIVOsLZtrmSS z0Zy^vJ^zs1H1qZ=`tZS^I!zYp{~6>|KcLTnmo7 z^WjP()8PgaP55hOk7>*PvKBtt#Q$@8v4i@N;RpL_kJj{2%Dd9oE+2XRP)06+W&H+v z2hZy}4&FdDOK51v#yPMNwgix;c@BmVV*D4D9FUcvPEWXOjI^dk6j)&@8q2Z?EVVvu z>tp(b7YM6T2r2Yik|gK5Y{v(#6}`u-3NIn9R?h?S>19lk6T(=B6bP$WaA-s9egirj zEAF#oEnIY!aBSdGz``wBMn+99^;La?EL!AQ}nXf_B4XCx^1 z=L0n_Tu1<&Oo&%Ihx_{Xtl};fH`~EDgV5szw`Sc+LtK!8tiG|(`*v-$Lt(+$( zg%;$dKm#=2?`QSPB&;~~rjVfv6T?C9AcrJ4C+)4IRNqIB);)Ehb@QZ|_NI_W`Ph^b z4ZYtZE!V2boaRC;+2mtFWP-IDtKVl{`9KbfVH5t2@jFqVeLKT!LI6Bd2DrP~c8B8dDH)4wq*yI}j%&RKL7iAzj4)Ovg7ZD*Ot{sYQ74I%pP^ z(iCUXxVf#lMJAg62}=_tlH*N^fzZjzgjEI4<^1OEvrgMcCJ%KWHCb_BS_VC12B5+tf9D zpS9(Ap1j(epq39x?kv&eE2wWrB;`jg=2(!Ksfl*qm)hE(=9%F;2reqbmhYBmujw4E z(0yh1ODsy2bKIC*s`XJ3D+~wOho{>7I+2pV%P_||+=Tz_>}cyKq~+8R)1l*}rK1xM zoeJUoX~lS%y5cIgZ|A|8hwS=|8*dX5juM_t_etft~(sm*8uF-Cfp0* zQ3CaQyE^gtOc6nDZbg8Kkp)klH#ZAj!&Hih(`019v2P{$Z!j%a5TG}=spj+Nhodaa zOp2a4yw@^P7oX6Cp)MDL0{;OphAzz5V^-!*> zo-^BIATgBVoAxHDR`b+=Ow(YTZCLOr?#`e1sOMh|2;;g{5voE4Iz(06+=?6~zK7W< zojG$R#Fmm28e*~^+Q<2Ho!Nx@NO`Fb#;@9`=8xHh1nK*AenvJutRL;9(^XC zC~M*0+00wKWybSDHnqVYa*ft;H9GphybX?Dyj>p2MMXJ%&JYkkue?{CQC)!5YZtk?l} zS<;g_Gc%)YrG&+dnab?+VcbH>M2!XPR2De?_4#R`4;GkvpiAFU{8r|m3w z+Ucq^&2++lAaf}`#!$%R;8Xb!p#V}v3^|cmh!VD(cu`#xqk$LGu6O}GQ~5oer`kL4&08d*CV7*7j?r6|@Q|z;)2&KYvTxLe9y#JZ zr4~^)I2Z6TxMP@q;!XD-<@v{@&xgMDSK#QvRyN%+Us+ih`=X~Nq7w#~5p`9%G*aAza;;PjoVdunJPC7D!U}Io zRn_CYyK^jpINI1z>1LVp=!kW zhNjhz`6Vrc@jTnX5y%_KGYkr!FJt7v-oG&AP+X{& zeN&<148h7}k+Ax06qTYi%q-@lN@&7d3fZZ!)muh4%j`uE?`2}8bCg!T)>KoA(n`|K z>qH^`X!K(^ET4j*4dxE5kAf&$K89wL?ODcktd5tag{tADH8}lIOTpm>(u@0BZ<3_G zz=IqjDb@x($SVr!KG)Q=;Hha|y3{oify#ix&GIOF9rE><0ExG!Y=4;y)klph4?wcS z3_13?^&8YD6qLP$+|s?|y1tQ-NJj|cRfYK~X9^#g{m}jt?puIuJUkKKpTCSqJZ?67 z;eQ*7lQK<{CiYwB|G!7z#OCI4BSc^us@Kk9thdEj=eK1H2wO6Ax3#rJO*8mBoiS=c z{TQegb7mNzMGHo?x}qX;7Y}@g{UCBOMFtJ%qR!-{)3al`s^QbqgWW6G!H^2ma&X9I zPsG@BK6FB6Afj?XU1L&NZR5@WqKt_R&8DxJauS0XFlfaVb3$S)h9C6#7*NMSB&ikL z>Ve8vaYrKR&Q6$z()~-Bn<3Z6+r;1PeOB)aA~E#e`gPsJkUPPA&AzNoiJwu+&27b4 zWXIYn8L9gt6x^ax^m0a^fi&jtSG20oNXVfQ8EQ*>lcHf8%!=SJ-ZMfb4N7P;y*!^#@S9V2f4?*vLioZ3*i`wka~z^ zRM;PmCL=z55Cv(3pS-Ajcw1HM$&)7+*~v-!-XN?GL5jzLJG`?|tW*NkE;2hD$Qb3O zSv6=Av-4k(%mn&mIa+{u!j--q9#5Jz!;0KjoP|o~mR3eOb5fzw_xE*)L?p+$VD^#E zh@j_!zJ>aETN+*!@EzHwm3%2r9s5!p6K=cx{V+HRb(Mz&77RW>AX1R8aXfZ|*pQ~W zdNi6ST2RD$#%|G(sQ|SUu{YE3X3~9#8cf|DPLj5^hZJDb(}1$#*}FH5m!|0tfH3^R zeI|yDfKgCJ14wAXpjH-4c~1H7*4ezvB{U*pVqDa9!TQor_wsDxdJ^BC;pQc^qq2Yx zqQ#LRTmGe!#Y^22hnbm9-cahwHVtMJceZPsMlPV8YQr^nweJW?>MdbAiE%gk;WsbO z1^%iDiN`EVPRmrBsTuUD#^)eJIUzCUB!*wjWOey{+-<_8rwI!UWlp!s$&V6#GvK_K zV^AxQc79kYqAniQTT}OUKr=uXTrQKQ77}qiB=t+vk5bw=$Pju0GjHAe7g>&4pZ}(~ zs#&{%B*mpy?3xEqfnCAd+dEj)(K5*>BxmhOEIR)~gdyYFa@|_))r{6r`#t0^!`YU| zQ+;cX{B~~{#G-NY+iGf0-TyX4n1Nt6J{|7<*K}UQwSR|vg$l&dNl)%T4=&KIg!twA zIC5;trmj~9nPUHjumgmF#q8&uV?MzABEg<_$8pr)Q) z5_(GQ+Y%Jdo$FGO24k4MYkp1{SZk!w6XS# zvw_e`IYS}%WFxU9NKa&rR>OY#yz|#}Ob5>mDAMyJ*Eln3(vuNl-itf6P#qv9OzQJ7 zkPzsfl$_j*5vYMVINDU%5Prrm4a%eIAY>bnNnd)C#hxSNpsgLm>N+Xy$0qq*95b&H z0B)2v?O=W0JoC4wu%D?ket`{`5WXIv7xxJL=6-TBLe3g;!^3lwMv2*n(G!g691lMs1i4hRi6B?O?2 zCPXc1H}u3|yz7X9E^;v@eU#7Qkc|Wmr`Ko>yph*Bm7)ss0o4@BhD(z*Q8zZ2&1FkiDQn$p7B%VWMS=v0)eH-ofTzj#?WRA{73rs<&_w;5 zi4hg;x(p1@5cnEWku8JR4Xd%9t0$k_&F?#o1OktLCQ^!ldR`}Ejx+Xv@`>1;8$MvbNVss z+&x{<;fk}a`hC|qtCAizM=`-lo6zk!ln*cOkUBtIPyXJ&17uRIeAIV)K8VX5wd

pfvO>TQ#{>udbTvyAg zuV};NG)P5~64Ed*IHvIB)2E^S*QCx^a6(xO4;X)A-j z0W4r)VWFc!(M?Unr|x>p1mdj6IC_CI7pZ;#sd)A1>#QB)`X{L3?@yoh21E?yx0aSBGEdg(fhox4r~pO5PY#U?_wwIj zJ`2Lk)2abA0I&tlBBXjFNQ^_edEEsslxF>5Bw}?ZqVR+0*^OOXB;gIXnG*LEpit<7j`qZr-4_su?K1fZ9-#`-gxyr!B$w@puAW>QuFSfU6 z$OxSV;3*{phdJVeM_~cv?C0QMQ`K&gL<|bcZ47*+Df9!|9P54w`xBmF7+J+P5Z?>w z)}(j}Qg?9cs1`&zUxbCFK>X*$%a@L`&+Gke=R2c-?#y$CmGb61Mu=&>gyw~@X0^f zMoO7<62mqG{0Ho2Y038e zybyE- z2?IUs17Ii_rOl^!5uI=xU=Km$Ivf-A7kYP*I{JkDaqQYd-UmOH1OcO@_ zhPkD=IhW04-nr=gQQz-vr20Dp!a(aabq^*=?Tf@enBPT1CAGEM{0J$tSJ?l+)6HW+ z)@RmNOF3}Jw_C_a3)Dzug%BNv4&2aD`4=`}nR4yFrw3|{hyRUSq$h#@=l{L_i2lzr z`L|O3&w}{Rj`{!Bf)Kkb4iLfm*Xy|9)#KDSU@KTqb*u~s`!iP!N54jhCXptO5T}## zx{U@V@6T;c)_dgLc^sh+E$4lx)&W+(A;Q5BW?chYM^}{Ua*o1iT(i%5fxj00WkeBw z!agZ-6TSi`^_cc0M>xZxxbL&RkZlnWWV`-7^=e1^;SaL|9-6KaJ*HHtArV4oD+XN; z`!@aW2Uxj?Zy`el4>Wvl(V65!3jB=XF|D`-q$B@wf?B@EbFmG zL`vU9Srdl?+7xFQetUEzk@!~6bs#%mJhj!OqthqTu}GDZy~;*pw(#*|>Y4~igP1dZ z=Y+M<=Eb?`$11Li_EkO6Pi@tA8RM^6$XG1fQyi&Z7A!n2Ly!4HO@;rhiNa}6R9A1aoVpcDbpz=aypoCHJ(9_n=e?8QN3LSo zDAoHB1GCOq02ENcz3)!Pxo@yCqC=qcU~?>GD9vUr^zSK2z+ilSC)`v0sL~2zD5&U7 zKvzy-E$O{Oh2}%-eKz+C5PdPWxj}r%Ix^#F2^j6RSeVNZHVM~ULPmw~djI2GgeL1t z!sZp#W1hy~ab=A-Q-|CapPnDlpeY;OA-SvyC82OY!5~NTTXqTO1a|RJci$ci`wMS} zD0%kA#Jn&I2vut%BQChCqtoi0VcH|PHZ93XM z(QmU2@MAbGgQtoi_nRt&l_rUO{V=t_oJC(c61Z=KI`91~WoP_LP{1nRTM%aN6pRBR3&~|af-LW7puF~!I^djLk zeA#{Rr_CTQCucn%SAN@HN=1;yK+!E*HoL979#V?-<=ceVXQ4U(rMTprjYW`*M%ps5- zN}7NcusOOm#wq~94q``Ij_Vy_>RC9`6$-8A7~<8UrPT^vN`qy=3!?sPZ7o1|Z^c1o z5*X`{1j>2T$rj=3ORV-^u!*YW?SeSA_52hZqPpsD0U;o04?fg;qfyMfO-oZn!aCM0 zCPH)N<@4vcSCgA*MF_JIZGdoKF^UtY{a>g*(Qv&q!j8--p5@6ok(+hg00KHM00jVr z;T>;lEm^e(OXN+>skxCBMIhoOfWhBlshsj}N(|Zf*>yI_z+yfh=#Vo6-Dc41A)dWL z6+q#g`a(iCzA_M4JleH4LRyK-1Eu`c%mpOA1gbG=8?h8xkP0DS-g@*pNuC*g>nk83 zbv%mYtfl2U!WibVL;Ll>SlEe};ntl2#}3fT zE+del*#^rNB`_E?E?*8K3`U5i_DViMq9}sK5ITBK&{AY~Sbe2q;HFjJFxKcvwt={w zBs{c0G%p0;q>yqUT?PthL3M*o1koh>&y!dX+0^msZ{{4E0Wqb^Z0r?bi{m^P<_NjZ zH|Q>kj8~Sm7S9Q+^lp+g$$HemN4)}*gjOK7#Pl^7qNp01#3f7{V;wg9zDD$s7N-YM zXI74-VuxTE^bAAEi9{+LZqEC|1K5g2M9<3&Rm%L-I{D>0Gz{{qf^!y!9{5uZqX_xi zUgsW%7?E@89WEUzTCE2I#G;80DyoD>R`+o)DJjgNw18wZgLgg*PnL(~Ooj|T1e|PH z_v-k;@ugXakzcHnSW5oxvF5e{4rD{B$I58#smFUyp7FUl1jZIty6UATyb4%?#D5k@ zuR(jSzgUuR$wJ#B(`DY$0!#!<{k%ejI#4_Z0%o>zFLfX@sGs)_9_v*MNivOM8pKF`^#Vn)}yA+$0!h1C^V|y>iE> zcypzQ`;3j-`kMieBJTT?Nqvj%Ik1}L^ot>tE*a^7y5-=k@B_*N`;3jnB*&4?W zg6#J`w?UR4rSMxSuF|!NI3hHOye9dkOMIc7F zAjQU=>(WSsn_)rC0QOL;PRU;_$0anUbTduV%5q`(Kycf77Hb{5+@P<&r6^7k=N6hp z?_{SDLmnilqc7mtSh@n$HQ%J>?^)(LjgN-?iM$eII5%w&Vri;4*yS{M|Pq?0LJ$v>MVYE5-C7a31#e!fV{w{Igo zYb!n7*7M$b^o0-FTIB7#0yZJswPJ7q9FP4dijVvG`4QBLPH?y0h`Y?OZyeln+3u;{ z2S62XO!&D#PMJyQ3}*+a0`!-90KeUXXd9V;BWT%TC(Qf}5`H}+t;YPLAgR%_jgrLXyDI07Kg2tLS}rv>l7h8Q9#9d@ic*iQa!F)K= zlx=}CYpXqLO=aFxgg4>m_eT|!eHn}Kx``<5aBlGTCtIwG)uoa(y&m|2bi28i7+|0- z1Hy{G1S95=0jmYh5dD`O;xkV~Cm^3W5^VksGX1X+C;H2NfOfNnU$)JG=R-UqBQ=ysjenVJ_bCYG#>SsB}% zUth5F>xGz4hc17*z<*8}I-N^VkfAz#(zv!6y|h%qax$J)Uy)@;BgQwBQ!W=|YYe)< z7N~oKFf<@6F>QSJGx|hH-=+NM-HIMAw&4qOF1y@-n-VWkOHXffd>S3O6W8QrsskaP zI06QVZ|6K_BG|)>jw)FZR+5Be73!KQ@p!lg?JvXvcZ@HVjQ9v8z0N58PHd0Ab!e*P zPOKNIp%$71Lb?s981hHU2f<4Fb_(-Y>_@e$Ia!3X7SeT!@C*w>2KXfNe$Id}!EDAs z_A)KW9y$B*n0teTc%vH8>5M+@Ygf&aGlaA5eC{}o&P+_&6|Mdq-BM@4`i-O0 ze++E%uwV_4j|icW%eFNF`S{!2^rjHg{|oPmw~{NvDu9GXoAcHWQ@iydJLHkvfq2?0 z5xg}^x{l4L@Mb`VRmYN}pr9boPMlewN-3b?NkF5?RFz2srdH4akwZrVJxSt(0`!iG zUpQS2xf2(uN}oT9~@<{X+qOf6y7kq{|@%a6zo5 z^RX<56_a)A=Q#kz+>(+808{Zqyrd#q2F1Y*vIy4+90woQp^AO?L%GbW<&*_k6tIM*`LlkRih&d}dD^_JgyLn>=by%m1`_WjHL&%+Mcyx$GyzfOlT;4q`j{-JU z$oieAX|Ue9s=r7Of9#C>2f*qNYccmJzpAT5{5+|4>pDt*s>-HT_p}|zDZn1MTi20^ ze*o`3M!)c>ouV`kGxJIj5b-CT$yb=1R4*$Rqjt*wU}`IOIp6uwyz)N27p=r!duI3( zLBx3{NNHQW&+E0pMC;CneSHGNUq&jbVt`3%$L`UGEPiLe8#r1$GIQ!?r}jE0#`ua4 z@k1oL^)`k$(VpE2&JF;Ws|+dGdmj1)WE~(L8!0mBAIiJF;u%{h+35|Le57Bjf5pD* z#NSzOf24Im!xY43bRw@47|g#v@(RS0SpVbs{Qov`mRFb|Uc`OuOyK0>Wqu^j!|A6j z%loX+Rl!fEtiPxG3IO4euVc|8z$jR6BaJ;c6Z1AD1ux(Qth_Gv(&H6)6aB(^Stl`8 zVrij}3k)WI4XVQF1G`Qic*+~jLW%`1u#3rqSQbdRKxM&tFK{-)_v|Dpe{mUn2jw%kJ{4EjFv>`(^#qoW5|R@=D1`FSkzqWC&}aX$2f}F#b$6K9?Ldl3 zQZF?^sXES2oMBjao#;#9s2*H@-rI;e9?%<_5tqg3&@=r56bsb}1nv2FjLJQvGS_@}ZF<#FNk?mx;+~fE^ z2B$v{Onu6>@Rr%%p3T#ljs6;Xbl}bsou{O7TeLYrHr%hNqNsRKn1Cjo_Yo_Z#Qx%F zVGw&~HqmASGK!D8H>s3N<$h^P_4wdE*AKMGx1 zGUBz9XewlWK|~W(v_fF8Oh20bBiNOeT3P?gbkF!Hq+4j5&D2=AYXD!-fg~oa-Zv9;c-~v+`46ai6TxtXZ#@=zZv4!Z%2VA4 zW7ccI%4^;@eBYyTn5LztA9-1_{N`QpUo&i|D)Bmk=IXKPD!$Nr7msfp02l6COgEcA zM8oI=s@LIPAy(Qz%#b~x-P!polvu8IR>VRl4W<2uMfakamf>tngJ4x%grp?zweK*( zf>7=+OO;@L1>hE0v2jv`*Eh3l-q>YM2>C;6vjN|%QuUHJiXxdJy@>!W^7DV9MGIEp z2p)y>oLx@Ie9?p{1``5fVF8s}#hX8Lz@jU+!9tJ5d;<;DJ1cM~yKhzVgz5g?g-?;H zlUip`i2Qewq+kF(%6$^N$BsFcn=5qW+b6lbh%Emv7htJvU@G(S5mHl2X9HNH*_^G_!B%LJF^_Vh0WGcyXBlfWI_h7}EN<%C2WY(MZA;EXyu zjZF>|@|^MD!v5}Azq?N2a3M+E|KANjbdD?_&ZB6`?*tO~4bz{9-2>w;^WBbF7_(If zGz}gnf7%#-bq>SfiAcbkx;=o){-dl6Zq|K3JihXvV+QXq>Y||jZ)~fxZxD8~Ro<zevm=`2YVQw3nGa&Z8!#Vo_1lThs@+ydh5wO?|9?_4*;#}@KEf%Z5J(IT z5U>IA)Ifq}JmS)`6wW?;hl*DfCn4fBQCWF2Z!1Tm;{r0Fl{9EwV zVI{Aij_uWGL$ERl%BtP4`emDsbT(BGD({sLRMsFESwKYy9ufWlvW)PbyWVKA9w)r# zah+q`1v*TEH%)B6;(Y9`0{7d`oa_%W+~bzNfmiXPNb5%3ls_C7Vu#}YT;TdhhKS!u zA~4j4)yoh7e*85EZxbVXIKIMW76_gY*u!7=l`(OliHU;TRX``^07>#8)!t=8(1MXb z{D+pL5(qr%@K{&gbh0Z8ai8jY{@o{kIUlmVOt{W!SGi(@<1fl+1IGdkwB>Z&^5rdF zFho0C0h1_yAy(sB3FZo3y~{cUQtH0kfnD?I*Ds>|4|;F|ww|tAt(E&UllWYl5mEkk zf|O1$i#=9aJ+xr#7#p{`p3T)W^T?6*Q5@1s`^vwqJ-dk_gUp&2=zCx$K|HEjaFsw1 z07W;q#@6C{;YC2@+W(T5Si}d^aU3(*#PEa&e|)OzPi_kgS>iF-VtGn!-RfPoWeFXv zJJR$g{x9<0JDltHe;so|A<;Qb8XqPP+5M%+xPZ0a1k$Q? zOq^ZiV@NR8(XT_GI$(reczJQ>N56^mqiSk_R-tR;^A;5mxctS~EXa26-G#9Hv5M>V zNT@Nyx~ozlnS@4)@t_U#P!le-Z>Mm0id-w6qUVO7~|}?x_2x`ilAk3wPiehU@uyqW4tj?{H4Hn&m!DS@k~90WocXd z?>|*uZZF1M9bYab;*>%O!aZPS&eEqD&T4Gn5q5t!dFVoKqnVHw=ZtzN9`-ondn_l_g(mt8)Hj{dFby)DnbcrBC+a!VI1J4@I&;#2%t zcChW06Uy76$h?%duzO%BppVP7-E~L*=uwr1ThDx6$FnVd)3ci}qrWw6O4_e@PyLaI zB-O*EBUVu1VN@g>-_fdcFI>hpnx@=WelfeJP%60=|1`|s)23ap`((1coN2hoS%tgX zmoq-GZO2jvh!Yy-4QpQ)#+ck}<-!5W9w5SciciiITmqO+V&2rIoo@YwDR zYbE5Z!NSJmu$5{#GpSz;vwaH1Z}AE;roI?3h^qY>w_*}?_*lkrd?jD7y(Jr+GT3`S zB1vHh1acMA)yeOvN8JDUX0TKX_6&3>7o8u1$NbsTWbu8^5ry>_(Uh5~=DsP7x#M{YeWAX;N>&w2`zwvqt(cNdO?=Uuv5n4m zU)RquG*8ikx-V{OGg?eSTbcS?EoA$5^$>|JsmjEPi0a%k9+LvwK3;T4^AJ?nO_DMS z;qY*q7cbPTy%%{ox@Pvrci&&~hvz1$1>BQ;xGo!-+HJq3=_oh*Sp34tkSU45V&1<-vRCBs)_t4miwe*HakTr_;kNFgV`Zsn(oK))$3hDuJ9~PjBx;yR za)C^2y}Jb+WlelR!r_HqfdY=hQ$PA%snys`owfMuc4_>)o^kw+5-GLk{5^(qpIlOm ziVmCFc08S%u|9cB^uC#{P(a_y&!V=5`Q%t~&SWC3WX?P|jrTtgxuc~om&+ujWYzH0 z6H%H&hrH?P?mt~Io>F~QHGr=?Za=M zfu_^Lfwp6%B$#q*Vy7>6-6-#e+K1Av1ZO z{U`TtI;YevtJA%(y@j7VesLOv?>>39&7tGp)~Ss*n9j#$bSqg6JPs7O(4g}9EyD}% z-J+kaoG>-*?3vrl##WdWW-@GP>XFw!SaXplrf}?G=%hOHb2n|#`7|A^h1BhAvd5LP zkC8)vqeUDXm&>(1_hCTYFv}&7&+6+}cQ&`*_Ou-Pj~()+t%FJ8!_ZL1?(Nq`LIR)c z3TfxxVM!2c$(|tX!fX#fv11>}m`pNf)mE}fPXPHTg}p9XeYYMUI2kI;iz6z&5WYVi$`2=sN3&gxJBl6kb?_V9mH}vVM=ccJLXF z=0UFX&Dk%yZrCMN+4Aj>vWov5@J4X=mAiYTSI`yMa*a}}S1;Tuk^Whj+canTX}>8W zSU3b00k z$(mg0VYWCs`I0bx&~^y$=0V1+w4y`BK$Bl~kjFA#GDv3|Z=5U_pV2Y=J3ymlyk!0M z@_j!awUS&k$}O87mwf<@76Z;0AT4r%ws8Vf5aMvaCVbKhJ^uihPoPz|HEcPK=39qu z#qm{mis$8v4B7{R1VW)g!G=Msf*$ddQsd<xZj^aOV=expQeRxzv8bbFfmYVf=WBMHT1;!{>%`{UFBTFw zXt|V9E^V%o6rI}7|Cm)co(7-q3;#CAgy>o({6?Ma)D8v{52Gz92?jBl-u}@o&+{)j zsE(xU?XMt9G5e;)oo$)CjZ{odb8YtKlNPQ%=WHU+`FUuPOW3`HDrT1lr+f>Q&249L zjXIx56?^oK{BiQ<(SryqILg7dx#OQoI^*lxm~!lnv^YN;*>?AzPb}gV6n1Y}oivRk z&cHJ>yl;%X^%fc|B0ithy1Sh$0xmL(d$gz(j@K?Sw@PmkjTq@q%P?qt6UBqSMv*X$ zeq>u5%8hnvVVF&%FdG#GkEdNhXT^*EoPO)l>DSRUub28@9F_5@m3`qlzU#?(7YQAu zA_c5!Iqt8s>!@yMwtF3X>N|Y>WfW8aAHi;4+I<-WGv}1-vuO`LV^DM9;L|#W1!Lu_ z}$EYkJVz?gvZKh7DbB%>2dl&>qzZj=lF&LbG&aV&zh#R$vvi9`R=3+D^5^% zX%EnHN=3LFxBXj#1|*K|rJbKr59Hb=B_ybTvp?+J+SM&0CYDrC@b|tWgkRV*a!y{E zbzd;|zZP)^9DWR$j7l109`w$yx+YL+i$g1U<$#^l4Yqk5v8cL&vGe%s;M7l2lZ6A; zk0IBWt2T*OzJ2?)j#QLjG_XTVOb-SpC_uQtVu>*L#COR`j zm)}JN>W2yv4BR&HRX|056Crj4pFs~+6*Q`E zGRne?3TTruH5wz5-6GQo9}9CXRaEUGptph(^&uR#Mwq0u0DFizM@`1^YjQdo=Sn+a zi$NGP0uh%FlA`A&_O#X{0v?ylj5MM+w@c+Hi{BTYf1U-|2~ZdptxnJ&UPa4COfyW@ zqXhMt@E+2tD>JjfAY$*C+wk4&+L>p|#8}e*jE}IGh+{<72lVMWt~=>?z8f6I_U$`& z1~pxX_lr39KOd*8WSq(!EI?%zM0~f8wt&ZoAl~9Hl*skQ&K=LO^E?VNfzulzS&+7C zzl1jJ7LyYay6yB3P!)f zn|15fiGtZ>Q7}B;<^Hjub&CTi^!sw5p7QM_o>XJvQc^~Cc}6eI?o*0F+UwJgNPN*` zd&Kr>rVz7!a(`N*-UOb8D&ZT zQ;G&pphh3a9!OFHJM+TtaRfuTD4m*+a7*9$YuPfu4I$P1<$H($2FOEE7RM_v$}aNex1rERu+9eByc)#ku(}X=#SlyM$p-+WSorl|^h{q)3(|#*E{B=j}Yi0d>+1#eKZwgupf_`6? zX0Y7UVz^w>g9+KHXX?hUa&7DLe| z_KoTum{$HD_p@6@x{eeSqWbCh>-8qW)(wb(08!lbFrtD3_&!oI#t!v|Yq~*Fkn(Ro zCwl##$5&Q=!MPX-qTK8iRKi8iybFqN;e<}KN0p#&z;b{cl6vd&TG@pYgm(-MRQNFZ zMd@g3^Qsii{;nov*d-Mr^o2=Kq%8cYlofHbK3C)eIMtMJzCf%b6x&{L!eVP;Ghs68 zHp6V_&PwxVSwB^7lC#jya-1w46|yqs%P5{+r$S>fJi zdZjw+x5b5h%l>0&W79;eSm+`LQQbx_$w0nsAZKqfxooa*`2_@d1lHC1uFi2ScWLmk zvn~!k`nJhf2-|=ofgRPDcs!}C!yP7F)1aFrU|jnC!W#u~s~_T8LYE8w_4D55^}2?J ziP%|-MyvbsVNp1Mu1!Sc7}IhroU+;HkSy7~Mhz}naD4MKX9ssnZ>%O2KEQkS zc6?T$u>pboXYQ7-n<|e8UeGR}N!!Oc;`1W;_p(*PKUj3h%3r~CmZWj{SV8GNskNah zLU_>;zEAd%qR3U5$j^3pkZ&PkwWOJ*H8f}m6w`6>N=STK^M3sgK)(S2-?BNZEG_Fm zHqVB(QlJ=JU9nO>of4Jg|Ga*NyfK`H!Xv!6>~bJ<1O!BbUEZD>{_Dp1fJb3r$;Sl0 zdsTJ0m0yEJRpw%Pz|an*U`Tb(%2ouq;4_D%_1Y)84BPCOQg41`GtPNt{`g|?Gm$-_ znNyBWM@6uWi{rRgPmF~qo?mV+W+TsY<;S}mHt=lrzVP;Oo2}#c39sh9qyNjyz<%~q zW;-j*VSkJxlUo|*xZ<)48%KO>KRuZHSU#8DL3N!W(Dc9-R@!5UV!u!z!9 zPFnt-r>}U)Y*j?OaC;}q4OPrB>3=@y>;AFtgUuo9qw2TW$HcZZ=`cOJjXxJJ!q}9P zck$;G>%dUvi>wT%o(>EL*jC0PGo(Mibe-aLM$_i)q}YWL{b>V83y&qM9i%xP(|Y)x z!Ax%D;ytDP^VtjW?jKKOrfC(%?V)0J&!$Zy<+KCv-XXLjCKEL+L&H!Z^cy8S5w?A2@A63u zAFkW?@N~1K<4Ze^SyOQbvykgO=T2$?qVP3c+$+ej8yd|eW5?ph#`Q>2ooV{2sp9ez z?|csR5%Lzi-UiJrj-y+3KTOh^z6${6A0MIxP~x&22yUkQhK3;Tkvj z>+e<4)hjIO2}LS{HR5!^n9@5bYj3UCj-8#XW2bwwJ@z&H$VuCwQ#2^9N79mI2QV%v zp5i@u1K6erjNhAe?b#o|+cKdcaa^U~@$}VBZR<7774feQt@EixFVqq(ZEdL+onR7+ zxJ^62_DN^U`NH>WIwf@Zo$gg9-TvP4#B!RdMK!qe28Rn>Qi(`}R`T zsIWcXw{HGW($wyzh#%irj$ghE9>LIW87!N@#NR};_1)2$pe_{&s)vromu2!F2XAha z^b^~cRr>kUisqkR()fxdwmumtc@`x7tHEjiiS_Y*EWbZbse(rGWuFv0n= zma00wmw*!O>YVYN)irLCOnaQFeQC7GOQusVV8=eH=ELXOr+LNl2F*timP<@5Z_Pis zFw0sp7OG!#7pqF8r>?3sZhe3gqjvLlgGGcZTiI(*Ba z6<6a1lS|f#NY9x*Yr9twP~AKs)4{3ngtd4}(&nU>4C`{=+D#W8zvmd0S?!ZPN4vLr zzokpRnfm8ujVgI}dhBK;-!PK{-{+=V=``@{fNXOGF4CmoQTzmFV;s}I-HpC?Keg5W z%upTd)N@Pcp?VlCuts!9uez=E%<9sS8II4t3YI^f`_8(zCo0AEX6RsyT%e6d;Lw}7 z%*luE5{0zm?b0#>eFR_hee0gVj@Z+SFc*+k(w82O^Uytz*kzR^vVH6%>+o!RgDu}V z-X5}h@?#_}JKLQt zbiZ~$lg+T6n|&VJ@`r0bs;~8CW6plUoOz=|*Yu8~oYbJ~aBepScGT2T9A#{}Cigga z)HrIsqzaJN-skz#4*43HN&W%GZb45(rXMvQZ`4}cv3uGrZOi%g807*Kt51!sZQ9+l zf!vwRXu5s~VF@`9gbW8?P5nv!p;+p%E8T063tM`QI`jzmYbQ!Aoq2+@W_xbb3p?m0(p-ejzr47?of*D z(t4Yl4fR0y#dq6`+e(v@-(Rt*sG?=ZP0?>&iZ<(8=#zC0rE5K>9aRmWVO71*^LFsv z{dVQx%JC}Ot<^(6{Hdx^cZyO?^+RA%hj!s-LeIuc&7sk<(K-HNBvE}6OQGMSA~;1c zN%fv?bA}sddobU_;9zTb3>1F5y+bm`lxz%kn+h#0a9X`_^0*g@oB%TTm35@ZshfJ@ zQZ2%54O>kNXw{I6wKTC*ja*Sl}M)5p_Jm!CnOX06|8~^#xcJ`C) zxx*_ztxglj$3u{FU3>@>Cu+Ovcu5o$1$iCzO_nT8~!oIeR zPH{QSK?!!7k+93GqctF>|bJG8h&ck@@w%1Eua>mtc?8w*%>;3YMl@t z|F%CZ93~vFz3Ri-t^=pK##DmJ9$2w7=!95N*dls970J^^{^=0V5K)c67cgsq@PzjO zOtJ(szUKGKVdYoVA;wOR75&)z?~Z;h&<2aO<|4cTNGE%hl&p&O!8|-p&x%C^h7whs z`eM=$#t&RhXdB87CC5vH5{RH2zyt1w3rHi}Xu^MipDXF#K3NUlIb1qF|6y!>p6;7R zuWiB$Z*nf3F@AwNtoak85*YUBGsmhyT)Q&OVwj;6zV96)ACn&14;H>Xryi^wVI*1e z`!@5Auu8kB*1R7Q;$^`xFp#SnoKPjaRw6-Eu?`QP17%3EJuW6jP*zrUK%5-(#OI1d za!wq$E|ReyBz`ol~+!H z?Q6EDZ)e_%{!^e&Lj}XH;%)BGKe`-)^XgKlud|ADpH6_8pktd=oXVnE5)rQq+ZpNU zZK{uR8E8rf6+0h+>VH@UDHXuE(!fq?vlRP54{U1*!<_GME|rR^Y6Gp<=dU}@cN8`k zTs!3|Pp+PEy`Cffp%i|HLQT zd;QGR+0^Sn*Lz)KDN`+Kl zLY4!zGp9hxdL2yNZ)g{DXs4 z1Ee`M6gFe~MB&>{HlCP%ng3uR{VL!i{qJERnC#s2#IFSAYn)fUGhk18^B@uCH~>$R z?8@N-K_w?U+o3mdEv5&{No$M=iYM>yo)A-O*vt`SR-3V@uI>+M8ThI}uXJAGKr*^C zaAw$w*O6a^@3{(QJGocB{$L}!3x?kM!Ow||m`Fj2YBy7_gqevnXYGT93pldxx~19S z_Yq|MB+TDruB2td57v?O)8kbmoDIVxu^mS{`{qUF-WE0Pdr3~z=@1xj+H*XYo z!E2BRt)I30i+sT1i&upW>SpitT$~x|ur?;{eq57R;D^XDQ7jN*!U$g#6#eIxbXaM*C^%>woN@rcTAUa@n}_YAr+lA7UDCa*nqp%)Z0- z2(zA;))wg$S?$$B${8iFRN$x+f;)-Xo{x62R{oW|<$DP3Z=hT8erV4kw7>)K8XRiq zgWKBL;%$Lmpx6auz3>c`W4;i%&80F5Wq9rCI&eIB^!KapJLyf32keLy>Rn*{q{_~`2PMPH-dM>v?W&C;8vOR%MP6JPDqHq22uJo2Yo z$sz*P4DPM@&5B3rSO_zq9+{@X8|6~}3Y%nt3LdPu1HOFwPOHB*ZB{w6IKj$gTSIrx2@w^%Ea zXiH`**9}!t*IxRujiFKY)2C}O$_(wl#_`Xv#h-qb2F$qhe7GHU&A2p0Sh4v(4?eHg zW^dZ0Kc~BVNPh`vz{foo9v%?pwN9Q_`#=2llA&&s{=~ovT*-gtL&^b$nQp2ap^U;U z#YuVfnV%e~Ak-<%F-_s;z z_Q|v8v!<&DuW$Fr*{jIBWf6@ff0Ii)E*tN^J(kv=Z8sXby>!_@#r$*^N$nZ$o3n77 zUrFiH4ReKQ!Scb)|* zS*Oj{qOydk2;HvwRIxX*%cJO zU6Hi{DqvjRxxkOqR(aTQxUurf!|j*!vWsMFE$%7K*T!Y06nCFsrSrj<^IXY9Lq!Z2 z;1Gm=8vU6memB6^M~SaQd?kguo<-}oW!e|jE2izA+s`D;m9#u=PZat6SK|!TpR3G^ zV3e|4k@IMaF9R>pZ-IR&*3yI0?~k#+D1XI3c<^bz7@Rb?zdYtV^!QZc!%K#-ziVqW zRm}r(6UXnj_olWzHBWQjQofd>l&9W`j3mCO*x0S`4ibbq5Q2Y{Q0_XaQ0jPLO@%}V zR|c`h>q2C&+*RQN0Y?r+h=deNm|U63e|X}4Ow*Ps)y^D=2r z&#YF4t-Sk@=DrKQhoHQMi+R3z>B;o_QpE<#gX4~*~(`y23f6cF=_-;tfJMA;nGIhsA?Zd-ezx7r%WhWh;Fk0jgv0e=2%5)uZmSrz%9A3{aBz>m%=i|)RO z1qBi&Xw7QG1zL&bf}xle4}UYmNJ7Gh1lfdFkTmt%u#eC!2B|`z@=u zh%Vpv{b$AMNUcqHta-|Hqu6VLB;SAg@9%{!9Wku97|$QmrZFp=i2WAdcJfRS;_`me z9tqC#7dSao_J-<{yVN4|t3VzTe)@F#d9|OtvA#2S@)!zD$`1eBgI!OJ!{K|PHs}51 z5v{oE|Gm100v#Np8)KUJie)Wt7Te{_E3?g+h>SYYvZIEI{o7GzBqTDyRW^ zP4Pn5x8bC}E=z{3ydY?s#{YQ3GRm!#N~(`o5(g(Ze?94V`Kt2|)$(N}FIRb%gP(#- zfR{N!W%y!2VbA3*ZYg@|I>VI|Mjij+ThG8UQB@tt{TVZS;f2ZhycZ9a%W0JV-Gs9! z4d|PUp)&St+L4>W?d0;AW{EHE-+#%gbNtWbMoP(>r4J?+dAx4r1aO5?3k{Y3r%Tu* zn)x_s0^ru`m9a#%vJX9kyV*~9S78MN?{os5+S|kxOSt8E`8KpyiB7@kZ z(z1!XH89CMeGAL0;$3ZRNc%8R6T(3?0YyQ>jg;`Rzhb$Jf5~lf_doJ! zHAe+4*OsfFGY16`7EnJS48Wnvbrgw9-UFiVSzJ z$FZz|Ghz81cB%YKCt!y;@r-LukSFXs;0YzM4u?R(6J*}BiK};j;tr4`vGeoMC;N8|(4L1ulVP4+_&<#YNGZJC z0$u~K_vwRr-ghRl1a1{rM?M*(rlt9ti*gj9KE?ZL5KHIWSmZ)b=V+^nKzIzG5jE=< z=>_oq9fw`cn?xOMJI9_`SJd|h-|a{nvM++hr%1c9dv+#AVd>T!b7;e@LWv{%QK?}O zwDvj*=!qz#H|{cwfn|epzqn9HQe%oje(>GhU?ELUc`Qu%{wz#PR3-ghV1yg=;K7!J ziPEvDlBom4D&w=#YGtznJY`M=Cyb{H>S3jlKrEu~J`#Qezf6_Dt^LHq#IeJ%)e81I z#xC=XUo&K0Za`d)7`mHzI6iY44S-Wu3hS=ECi;wY^O#G>-CRjBdw&hw$M#JHK* zo7Cu&Zd5=ki3@S-iA(noLnPg#^V&Q5j|F1PUW7fcl2 zteRn=Ljq>uri@yYz(lMXh$k{}ZbIyWCrTWm!Z`4!Bs9B7Y{8t?2IVY(4~ZOjRfm8; zTt`ca7!b<{4oQ@9OT?qLggwc}gls$pDn@zpsMtQVx$4wIQ$imWWKJs!uY+5<&x zjiF=bzlD1c+wVMx^zRRX@nMZ7J?+zQEh1tKI)8*gMh!g=6*utgq`Dj-bNb>wV@ukG zL49@{ne|A?jGf!UOy}r0Ja_xXcMgpd2M77hy6n|$4bW;$6YzhXbNVA(wZba__M(m0 zMH#h~H{=&>hCW$D4%=KRwi93f^`r71N>NhhNBD+_$rVv+!(9QATUUbx-pw-enWN^R;i+*QV3#@1KzwMyA5ftNIKsvaaDWY8-VB>Yxa9GG zY_#Ygrdfmx&SN(V3p=V__1a-4qNr>FG{wby`DUk}MNL=&L6Wd6xK&I8%@UW-gzFg$ zHQ+xL>Kh6yTokTY#6b>*N%}sr_0UBl%fA#MMKaPS!l&Md``>tJ7E)5R+T})Sga=s_ zNIbgBMhy8JFke*z=4X3loeL06Z#m8%2m>ZPaCcvgeXuF)$lzHs;Oh^>=bMq<$g==! z3D3I?8U@5a6W?*U`yN>#Ne`m_oK_QU>AiJRR|ix(lXD#%eyBqvXUmY~GKRi&z|j+Ob9ISp6ukd)K=E@b9S$<=%pS?_rh^^a zxBIp5d@O-m1TlFAYspXF8C$P&Ao}^F2xD(bTD)!CsUHR35aa+&&R!8P&iAQ(0;(mv zVzfyS0Ybo7r#xXA-T~UQ6gWQ&V##bqg-a@#NF{5Y48z{X5gp|Sahs@zfUuH=VixU) zjn4g4Typ2@n#a;QNBt%9AVNMzTCy2>c>jeem|c@2%wzp7&f3ypPy-mU((<7FL-}OP z*AIovZ>D-4RnCBbr6RjJT?TiN5ejEwfXR*UN+OhzcBhcDzf{9ZV-K{QQ|a$Z6*%R% zYnx;3#A#;}HG}}MlUKluDug+o$d%vUeHS7i^K`-SaFowZXH6mLH#6O@;oP=+t8Is<=y6!f>mtZxxxWkA7VgsMios7n zj!QKXN)W@K{-EionsVL+29XPmUB5iP#7YTy6B{n#Y=Av1A%GRlUOV({)>ZtM%e-wZ zoF+H@I>$mZ$u7C6CMe-_F;K4@NAyz%p%VQfW499X7LVC(E`I|KCD&csIQ}lphmjW% zL#gMgetJx$lle59OU()c=#dvwCd9%<>FT|;+%kOR6|s5-IJDd5^&`3+hjuu%`1d0y<9=;G- zgSBVLUKuPyDba9n4v+qEK^A!!mBZ4x-1+I&Qq=&$FT7+NxCC z4@s%g_&u2**q?EKo4C?_PmDBEkgA5`(M@vwaT@ya@-NLxuNb3KmOBgrC98pO5i)03 zPp<5sBzyTDu*i9;GwEg)lwj%|K9aF+e5=yMdD}ruizXP;@u?tBJ=s*dL+Z}h=+oDO zf2Yhql_iD0tYXAWIA)D3P7=mLdMk!tG@M##=hezFalcGp&Ve8|4(Nx((=?!*et-9L4lFJGoqt>_~P%w8q3_3PzcK?~83vMska$E)(!C z#0ss7%daU!dfo5Ebkz6b{8tlGEO(B}gOCMCbt9{Q8Jyq8NjUyBjCw4%#wq2)cy#^= zUEDD3PH;_$R#_=|3c?XoB+zYGFQ=&XB^oO+WL*7O8`zfXEfMrnBaf~mFdHc*oQjSg zJN9)p#uj5-@>c~DDb;gL_L@;7Yem!vuN=35l|gB4$LgBW;X9RM=Ur=L7p_|5K4_X= z2YjL~%Tct9&Qw4prBxLUtLZXx+v;$5F?WM}Zs32WdbG_Bnr!`^yV01{Q?!ApWg;g>Q=2`t+jdSTQiGd)ph(P^pjb z*;9>+2%&(KdI`hQvDG+^EU@7HRz{yzN$Ko(<%g}*A{XGimCJ@%K-6Y=$zx?eM zDMzE%8COP1`)~_f+DOYH-(TkC-iK#(;tq6)y#+3XP$<#uIypov`RACxb~V+Bs-=Ob0>{#7w=C z^mstoSjzGAnKM=(J-Z;3NlNdpGh$a?_W-H1)p%chfT61?*KFzFsas>`W4hhu4?Jog z_UlVPzoWPJHUriP%5B|3=H9+_fBZdWpAn%Y2+!zrXbC$zW4lfD4+qRO~NMf(Lrdt)`u*{RX?JPj;xPRnPomc97<;|W7)K9{(?S)3m&w+xB&$1TDxc#r*o zFA{mcd^!8)Jg{noZB`D)X3+(4pvYm!ucV7z#PV3ht*fMM2&#n3uX&QSfi&1asjdYH z3Td922owIATsROnAiFKn@#o_g5CHC~P~5LPpp%v~Qs<-?9&>2&_<{V0T(@+(mZqi+ z8CUtlVp-5cr{Xspz&0>E!WyOo2fBrn)tr~hSf&1c4=fsIhhEpV$af_F*{XINX14CGw5NAudB5~$g>y0(hY^6Gw>REC|8ae zY7NW}R*e(}OXp8~#Xf=AQF{u@vC>YitKCYJTl`%shEgMbw%NJUmN>&am2=GM4$y1Y&cs zreAG&ReR*!ok5%+6xmcNXkAy#&dGV5b3|c-DU*=r3-m5~A1TX4`T1hhZT&Sl3S9Uq zU{v<=VcON#k|RWF@+f2i9mq9hLxO|9Wj7uzN0haxRAlq@JtpV{vlS)V>i6#}EF#^` zuKOGYzqgjnwYjwAmWpCWfV7G{f}o3erA$YucoYvn)O>jcdH^*##U1Z`42*nR&BrEYfU+x%S)4-?xUo zRb(p@+OZ>Rqa~X1b~EldGxtP#;{5r{o!!WnZnte59QE?`^|b_WBknRTh*q)Jkxi^d zX0sdW8;%pu)jX1Mlcan_W*DE4z&e?;dYzen?rzp?M&}O=Yj~G;d5!a5`#!AUj>l_x z?p)ULNz*^CHr)>lWO`^AbN(@WA~v?}Wzf7zD{F8jfYqkS*c6+T>kkP8LbLEUa^V)T z*mWdRn((%RXPo%upI;w^bb}30C-Pz1Ab=0X*0bwC#k`H$fH*tdX$y;Ph&C#B<$Y#! zw6nF{g^qDeB99QJy0AyeSuRiKvjUr$mt;jEiOHXqypo&9^#}jJlup5T%zLw4x+3$; zRhbj;jnmZjBCA7uV%z9w76cQg&z^0IWu745eEZa-`#xz1d%`^C|F+Z~q(1lj$L0Q+ zDOY6RO1q*SL`M3P!)sQui`#Rjp5ajyEl=^_1sUS38|R%(hmt*JLhj-*1Dew8Kh)OV zUZ5|;z)-(ZIH2S^aFArrpXhshLy6060~QAf&j|PTht?lxIv;xH8qLNsPBJj#rvq;d zU{rpJ+;H&gZjZlrCbFt~UO|#{6CpDHgwP55m#hB#4k=}KJleU6_m*Hz%q;a#*M67b z;o+if)o2jfbJHhkdq@~JKO!Gmj18JMFL){2NJ zA6Yoc{cP`?-?%V8x?s1eJ!GfBbrSE;v`%pQ_S@E;_%7NVS`79gq?v)cBq%6IsT*tg z6DK>j4Q;~xfXl^;y*@}?3=V{554yZPl5|X*7=x2a1{Ctp>zHBFF&FHCou@v83lEEu zva>hH{;krmANnW^BM_sbX;65*p1U^;C(&nLJ_6jl3QfWxH@5?5U9)}r_GsO}77SUf zgCzd-6NMP@%jq~IS4LU1)vw!KOh2KEfep=*lBiRx)i>n1x8IGyJ>=K>eYH_pS&ePz zrhH6O)BMSgZ1kiv;%tD}O5`l-%#Yv!wd2R7v5nDeyt3i2Jj!7y8E6;ZnLbjh?C9X| z6$;$kT|B~Qh>d>oyxT8x6ok0N-D6O9;5D`!g+8SW=0AJRf04dARn*DhD51YFxtn#c z^UE|<`b_E(4Mfa-HEQ8#i&12HU7%%=2nWMkF*A@{^kMDdd%d;n&jkOq2U7w}%^@oT z@?<}K{(P5gpZf*|*nSe%@vj6p$q%~a`%R!n$!y&gGnO~^w|^uxShxz%M@ z_ILvF>qhI{N?gv#ANQFL0!EZ6gW|(Rdk8lCwwO|s9lFVKs4WgVFAQbX5@?}4u}H2~ zwHR8wH`u?DMC?;64cf!e5C``6d4T{56|uC!-ujjKZc9WF`DBw9YzUtmXmxvj=1WV9 zZn9}9CtUq=!rPtK>L+hAFHBWh748#VQo>1&3elH6I6tqD3Jm)nQG*>;cm8f`#h|r{ z+6#VXSoIg^cH&|AMn^}-M@lSzf|z+yn5Nt?%swAuQwAx3@V4?}_i}fyxmzszIDTnJ z70(2~a`82CE$w9ejOB4*7gd`|?8Wb53-E2Kbiqw$dJ~VTI@$nEy!Ec*XHW_74l3Ga zqH~<%m(Dc!iJ%BRO;4wniCphq%7vWQ(#nceYedMW{2G)qh=jcCbkBf=4SeX6J8htN z;es$^*!9iLH__8HUaWBL0pA)Z$e8R68u!L7mw@6=<*j#0L(L}cDS(ELD2 zO>+Y(&+yErjGV4Xx$bMw>GR6B*>e~lWQeY3`9S@-p8nun@yoP#Oa6Udr@ymReT=lR zwLK##87&h0TOys;!C2#MyQp6sfAlRs@+=q_?gg2%l&f|N>nbu8Z{>;p^>F_(n=LEx zzFJ3{MDA&8`C7g@HK&G&r0`7m%L*PwW)T6N=m#oKDEsS}6j;+3t`w$bz2xPYUfohk zJ|v>mEy4Y24^7Q?ULI9pE9Nq)H*vyj9}cd^OuYTi8Fl!4IcguEZ|2_1>Iy;E8-zS* z$5(28YyN2!`sV8z22EN01x8$1z4GDZ?|=2F4HU|ZSdC(E+QgipZ0@uAgNw_u`Vngd zZos8BNrrmve?NcEv2*v{%qJ_h`1)#v@Yb*LjZ;3VTfQesaP5Y}tdpWg8og2n_o(lq zj&_RsP7z070-d@Zjlw;yIF z*S7Q{m?P||P9E*jkIJoOHhAU#{HUrjZC{;R-sM@|)#v>BB#&y?+gCe7WBCgOH>@T% zD9DbL*qOM+>fniOqw+z!j0Ts}E~38uRh6dC@QL=;*+@*w@#G z@7@w(eEuMt#!QNx4u(5Cva(!q8a~-YMVkv#54BFL4Ds`wekORE`Oo_gA8y84iM!8= zBavV-7GdKd!zal4;{vxTXXegl2oVrS9^0@AZ<&S0&`qV}1dr;`%$?;u7heue@a)^i z`-tXU|ii_EAM@QjwNExVo$}#D+e0Nr(O82(9`p}s({J1Ag zI0%d7t1OQG=X)n*eHj5ouE1W_zTgDDf_NnF?CczU=deOKLQAp9ZlJls0FA%*^mGAP z#7D>p^Rw5QZQ8WySxn5z!qjIO84MuG)gR`GX4s?76doRq(4+{<4LmJiy)^7HS071i z58OcJs;c9V2R;AMqetnGmoDG35;21{f2*qI0}&oPM{rr>@jd9kuc6i3&xLbr53>!H zJ&lT@fG!eq>+YHr0)Hu?7|NI{1LH@pJIY!-Sp`i_Fa zsraO%btn?qONPfMCx5^0sp3VZ?(-dZT;FQ@9Zmw4!;J!dJ9b=@+_o^5`ue&$gkZqj ze-A!V+}X3@V*sBy@D6+qM|z*58iX#96hk8;=y{I;d+hs0Po}Nr^r?j#f+eVOtURn) zhrRcz(pwEdiHVlh*4G>RD@a!vV|G=|ZCqtFwY5IgJ=Z%&dzbG}utL8P+LvbZsL9|W zZwb|SRgzh@bve00-po29C8gEcbqvo7QKj2<spvN zzb=1uD#FV2urHdvUL4Kss8=q>D7&#U&Vf0&f!tcX!mIh!^>_?x;6zSMbt9}wNkkrR zZgSEIHn^wJsJ&1;=%iNR6m&E_@9*a)Qiz%V_h38xw%?DB{y0S@w5Ilcl1iLXCeBFXW}`DGudDtL-}e(9lb`mQ6!0u zn=LVj&P*+!g38}=IrPKzhaaUcJ(AaWBz=dc9}HN4CxCIq$A5z&LProw+17ufB2RQo1!e!g-(z6l=ch{lF9CJi|7Ae^ z|L7^J9`r4z$0O0a$aGLYl3#^wJpY>C7VIi~UGkpGE!g%PYd?Vj=e6|wZ^N_(&K~WD z@^)5}Y>Q8Y{vbCy9b$O=DL$3!(SqgEGI5O(eG&($;}fl2%bW{NT&+W55X0*ww}-{c zDpa%mjDdIiaBkay7FEBII;h!; zUEtfj0s~B%zs;B4^~u}J5E3fAT{uaF0`b|s4*^d z*hVn}vZ!Bhu_vmtxvlLs!OdLgoyAW&YpRn(L%;a4a4J-?lrl7IxehvNe7z;cYZVWp z!${fzTAy;=x`NV4kqv8?QG^P`K{J`0d9j!! z87;F8slG|J#R%LKPxLj3zr>2^5`B8FzH8#3%llK)C?2m$MF}I`7N~kYTIdKnkDRy) zR{(i#dO30S+z-mPv!6c*X*?QtsVq0hSMbxGg2nko`w4P0d+2(W{kb~u+wyg&AqUDW z$)k@BxbBCS(y0UXn842yzYO=A*@E9WO3N|Y(NiK3B0^WAGz5E9;dw?zmU<-VVu#V*tg#eRw>oE8j*htR*_7fNI+t#N7mZ@EfNA=87aH+qa zotI~Htrztg3hMW-fd5iS3;aIDQB@>yu4U&5!1EMO$VO%d^h%f4jd4djc)+mF2Q4v* zp2Z$Ag?|Kcl~cc^@B;4Tb!Eq)0+J~++Lp5p<;8MraE}=n+=Ad?=*x@EwFjoyB_$=3 zyHD&S0002NEZ`(2n+K2D@4m{;d@5YFY8#fw8lH%-1C?Q)&!)N3a<#3d_ zf#TvOfGw10k`KrS@R4WTknhV&1`q8gBJcrMfFfsQwGFaKnLdfa)N&E^uq!_vlL17D z!bWzqbV0^5V)d~8v)70h?Zceq4H#1VK2LMw$j-~czw!nad9>N1g+pWT!|gH1mPpSH zN4z}ERx=}2g#^E)pvION9K2B)785PC;GobVRauRv&fPK7H46?&250eVwq-vYBp*C} zye6`C)4sP@mx69%3?Z5fX3;N)yD%4FEJ>sLHZf~Sc7s^RvvqLQ&%Zox8358@Q!5kc z|19;EApburOnD~I4uC`y%7())369|IFRD&bS6m}1T`iN??d$g{Y5DXO(y2El%OXpr zUPckVbc#%x%%|CLuwI%zVPtfNps2E?s3K@q28V>K=v(73Wv8Lun5}gy{Q!ToP6fqj zt*|;%VXBb_O?f)!fXhCbQ+20!S~pwD;yG*X1SFGD$(f~iOiA(TYsRVzr1hZD`VVNH z^b$QpmLZ_7K-g9g+;9+6eI9`yO`Hc^vC=kF9cybuH(vMJ(HZH^jt*PnJZD!n>Xp$O z?Xiav4fA=-qjUUbVxsUATFuC5ZlK;mPeXM|<~s;F;^9Z*6W6LY+Q^?%3Ha(D+2tVV zGpo42L2zj9%eP!xo*(4v{?9*o4;@{1*dP~ zr~CJ}48-1-{vaR}L~rrgjfkbUMD<;#=VwN{bKC81L<<6%+kRA{XT!M-lVB&=94Jjn zybZQ9#rIQ0V&XfU6Bw)duFpN+jz^MP!~${7`q<7c`^#l>4}1=(H{O5nKsbhiPC2#`tRLKHC}oIh z&z56KDD+!LO=cr>V~&*})@)H>L@2yLdU)6ub>u^HnbHl8&G52z?V94P(K>JN_Hbj= z*H98SdKN-cUiR;rv&^nh1kwB^ns!u3=1m!$!2iYMMthQt=st4T$!Wic`XR91bL~2A z19fHfHs@xcc{MmODaB|+jpQFG-p1V~cVUIPmh$s0uRl}(R0pXa#a3yO)XC~d03Tko zG=QFbs357N_an0$=y6h0TSrMxlS8!u5(@f*G;I+wXsq~X@0qoT)=1xf=A^mpvR=T* z`9&yc-I}L)qP@OqAG)ozxE#eze2q&Si2A!l1I)Nt;JFotHyL{&R#H5X(W3xJ0JyK{ zg_H5{HXl1(drhkdE%IKnXA<0S9f&X_sIY#7Ya4BV+`cfaqYBb&=cq_XZ{IB`taX&4J_qR@Pdn4WWokWm)BpW5r{>&nv#kJs;qKRM^NqCD!O6AQ7Rd)XXrt%_&wyTa1Rrk;xigF3WL5xF@z z<^YueJAjIY>`46LcjfmE&obH?l{Z(B7|yWbg~QbZ*rq)`zNQE5;?S{kK6O1e7@Kthl%X-TD18jd5aWKaFyaU+Wab4?LYp%KGRQak31`g*?M6^Od@ZVS{Kng=(P!x_j6#q7^ zQ&YgT3V@H3S*0{RX_0Fsf~c$z;VEvzOGVULL=fFEwDDvhG*$~;V-Ui|eC_+NZVPWh zx97-tg{wYi;oko9bK|M3*P7$+ zD*83UZ=WIX+oXuoOG$l;Rs1}%(ge>n02*A@_4BU6mzOJpt$EA^f5SYYna+zB(R<&W z-d*Q?$j=|&UE-9w)s>~{kv0=&nNf;ySen>a8 zMsh_QHypY8RdaGEhobh;d99^KxI+xnVxkd2mUi#lTP05KdfV}~DJCxRM zponw_#JvTGP72D(S4&Z%8)iQ#o4_h>JNX7)U9xs=*#YQ<%ngAn*1PyjxS4muYQp{{gLGd{hN`f5HaXCWOx2 z&`){40g6UQoCB`G8xWlrU7N0Uxeq}0x#Uc}Rl(c0w_V_L9tHklDLOTf{r|gQntMWX za#>0hQJ>5ePy;;SWv%-^?-m$$QA;b+Us_%+n!-Csz-5!Xa+U-5GD>#dgDmQQ|7=vDY4x1VuMsPM1V5>#Mc}_8j#T^Guy`UgGnwPJRbp%`F@QwPr|00Sfj8aOBB| z!%9qTAS;q+K$mKvWC6yyE~7*o$6BOfbG$W*GHJO}#>$ZIido}02Hck=1+pHw%mA$G znyHu;qzga108XcmOjYKD?8&V7&Fmh zPqRRrXSFD#{NWSat7A0v!?I_UXOA&#GQ#zP6=8tCNOp3<(0OYv3(QCB5t1>vFUbKH9I42m zs{yVQifA5kho8_Rd=Kgdz(j)sbq*TE z7je@v*Fe+Ow!Wy{3F zM$aZqZ(4Qh&?(LwLJ$^2tUtDoRn`LIMfWAcaLOk>!d&+bCFGk$Y)@5G08sj`BQTNo z$DU7*{8=4CLBjJ)2SLau{Zghh+1=9NBo`$OzkDvkWc-LAbS+fmHtp%$yMv^;Cbc~# zR3FB2_wQ4bceTq{**yP&)4}SFOrTH;L7IkD0CJh4UJfoeE8B;2XgOjvHKB>Jyu8Hd zuSC2@8>+^NZ@)C690Q;nk-y5cY>~t$DSx#ohmo4-0$3R2zKVp1{N>)2d06b(?GBYXgD-y6Q5qsU9|9JF<+RNeYL zeD+(6@kAc&uS+P_mofSi3)5q72*hawq;_lft*PI0TC|WVgw#5K-IfS+j39g=om+WU zgP}hJUxEdvFuSuI+v8;p4!hNw4ttmMm*D-|!=t4ONF|`8qFJ4N8pg;&^$t@?{3j+w z8}f(`%!yOP?vS8Y0KuvNy69#Zs-TCU?S*zgk|jU|hoxO{6n%|js%G|lu9-4 zG7*QtEyOjl0!YKD{XsA-F$aW!CWNo{+4E=##W}O9Ny#_m6+p&Ye34>d8n11_nC=-} zvgZ-FdY!~wnQ-Z{I{00|zL#J!O?G0xiZ2y`D>G1{&F%^IEI+_<*cym!Y7I)s#=d*7 zDT0s)QUNkIDEGwmx6k|zgwdTxKkO&UeCNAbt>fg6zFb}+xUU&!e)#AKvMuy)U%>$@ z^11-1$j#~%YJl1945ayc7V2`^leJ0?CWp=#lTKbi>n?SIjZ}U*R+i=x9HLrb*q;tDR2< zgxA7zx$cWMc&EH5Z(RBPS%^>k}H~s@#Uw0+|DX39s0rHR^U}x(s&;Op~LfC!%&G1D#(?`jE zSevIU(u`CjcRn_YrVXu$I`_EN4=UJ73K^YrT%EWltD)XkTTaTmju-Lo@3Xc0KEZMO z2`H&?^Mmb+))o6Ti2wXcqkz znAmqJcfTlkF5|CQ-KU2>@8=U>|3hd+;NsMKeQqTRdb69@?!bFZ!dza*As3;(PO@Gk zv;(0hMypHypoR$j(-`G_OXp70EsVN}^z-b}rNd)6Gc1(x^;~a8F9|Ls#3{7X_#*WxGe5JZ zlYCS0cUD{C>sf>aa7tC4x(xHOb_CIQ+`U^3-UZZWwd*Bo{LW$d9$`>cAnOj!iiFFT)e9CvDBoXnYB1-= zO)I_bi;0Qcnb2DO5s@F6dXglS?EET3{`k1Dl;?XcAq~@og$U1yGR*4*$HS+7^G7R} zN&0?1Siv8#UT~`O56Ctw^RTMhBU}Athx(_Doq63Sb^j99s$c`f>$VU7K{HZ9w5MeC zCgqLyqwt??owfi&-T+QE7&Kz6WStj3SFI$_Dx8Vqv+yT%W>Qn5^3z25fmSv z{u{IYyRDG&ND|A|*cf$=by|fW)K^W_AcSD-R%7If_t$!#pf=0H4CDIQ8z*|&8xJ>^ z;wZT-Onm68tUbptfp3Fi%jQpqcQx#DSmqSm0W7y&HW^URR)|}C#du9JjML-U`J&?c z_eygv&KB?;O5Wq4!gG(+HZXF9ma9*W(rx%rK3&bG>G3xgPU~8Fe^LKj4ZCS{&Bvmp zT4&{kf(z^E=$!-+=yIFHm92&9<}gZrGK_sQ$TN!uWZwR--7;$%fu2_}OP^TEJ$XkD zIxb@uQmvpb56reoM9Ju~51kxm1|B@P`0)L#YLWHhf5h?;HaTk*q`zqAMJAF+<(~jM z!0FV-&Zf<9fvJ*Q(ro?hK=WEvFpWt)@e5(!W>OY~sNC5A4*StyUg!Rg`fHtD3E#-; z6K~q1cW!Y4I}Zjm#GnZa$smxdVVVRRX*)p%$)Ntt`>5p@*g8wB9qF?rsn2D4)}DoO z1ZA+3?LV5ZBfO&Ey3BXAewJmWZ`bn9O>f2NC7#S($HUJ)W%~R>q@#`}WS4&kCBK8J zibh6hrj$@)Gd@%2G0(SD0r94hzaN&U^vyCKYPypAz_(zYT09=PBMv8WHGb@-{9?c4xBU zA>a`tq}+dP;O{!as9Yh~$C{58U?EV>CAGhAiPQeOP)3fYjj8QM$_5u+t@qe3ePY5= zk~jpQ`<~b7iJn$nUS9W6XN03&)8wie`%vwnbT|1ZsJv2q0(ti7Zi&pU zo)basRRw4Mp$~r6`o0%uH~EcqT7Y#RUM_k^**T1nVMLHH9Iso{?Va!`V4wK-8S{$b0nf&Wx%7=x5`HMrS!f4raYTYHKcVGli z9}0IAJT=^04gSM}%kT6v$pE$;eX~m?yZY(ZC#DNm+pt5@aK?h&o$Yo)*W!XSdz62F z&umCP#H|UwMc{6`&E(#{&4m-Q6Ze5R19?jr<5GY2XZ>SZ&L|k17==ljth{;0i>+ba zJ%*{h7OAF1Z~EB?!;6$7jF!p2-Pn1YKpanO_;^?N;k&Sl*rO(FTt^4stbRjP=nrUr zX+qz@`A_7FPbse}98UYlV^?3_%=onVwN6=t^vZ_UB-QG_o`^%wz+0%sh|3QdOZ={V ze(f|X{}um&`s5b+6@4lrr(ph#Xj!ZGO8(T|SI+TFt~ciSYEo@m<52j<^gQRRBKaQqcTz!2Vg7+6%CpwOG&N8}Uw3Pex$_qF zY23}F`~|hsJ7g?>C$MvZgg1JcGi4KhUiE(V9&7bda%H9K=mKKtj@)=}?yZZac-7t9 zpBX5`v1H#E?Y~cO!6?PEVHMHODC2NxF*6&R#Ar+r(s>UjV^`ha+Kf&UilNd3pw-AT zmKL8SY1L`B{WLuGFu4|W`e~p{PT}eq?r#m91^uBMl|x9DDeXizV8}5D1m=jr9R5Om z-$=yILpeKG_gxHQqN5+J?nna|*YoT4h8I^DV{-l1`8kS& zir21WM4#NAC_0Gz3)Y$23W zj+)&o2tL~RnU@rZH)Unlfyhb(kgHJ_Ww>E%T7JuiJmR{?%O1gugdY3kvYL8nq~d&K zbMg}!uklBiD|yoX+FsP;$;CI8TlamZLc%0(@c4J%@E>lzv>ME6Kcim(o&LrpVn?dI zln3>vvN^9%Zs&jl(*hGoz7F7D7q~aJVt~z~S!2ig(ST8H!%n7KM#eRa(OOE6e7a@^ zM=0lDZVx>MtR#}Y4_yg^!&aL|;eXA|v+us8!?l_?>tq8#<;lfWXhXncjdfiMmqY8~ z-nuXq&@eMW8?T_-%F?n-$SvaYy*p&-#9ajSv^io*x*YHxe8U^wnS{@~+6Mb#7D^ue zHnN_%$fTViEiOLle{?j!KSWs~mr3)lRCCpNH*}VB)^6!j?|m*h zn#Z1!=L{}NT*1{kNjcy(j=o?mr9j@Z*8Wbo^>)+;#g3&WY924CK#QtdjMXn*c-KAn zOSIw|db8~E4?Kf|Up@7E2rK2u2a-JuDCwL>S+@zj4^n+k;3W_cQ$!VZfyS7f5%tUT zj{W_JMf#7tT?7qR`RwoGbP>>JC5g&gJuM#&D%&KnH(UDdY^d^>yyLmmJ0+TGrR;c- zm(e8shOcpt7a39{&hb*53m~xnDtHi<`p0+|rvM?sPQtWPqbUnR&o;MhXqkPYBV%L!!kB+ODAbU>?k^S_Z6*%FJ%QwquEmd!Or^-{gY{rG z9NsnfN`5$Ya-ljGZl^5ML!2fc{rd6nd zCHYH4B}U9&G`Vd(j=hi`_NVw8{AkbtasC}DzPbE0|J=+6!MK;~31cMp#n=2=+z*8> zaOn}zO$#eji!N_>cR!zWoUlO7F5vnFd4^0E=)Ef)2E?py9`1-;%Eo4^j-~Q41B?Ko zB*S{g#$p#!8FMAlZ@m{$QX+k5Ir#x-(O_L(zqU>xo1AkS0fQ#JFzC@D!$1d1gB*^J zGK@V7NKZ^znfsfahPwJD^r29w3_}iIaSH8jg#hC6Fn@s_Wtleh4>{EwPs0qj&zlyM z_xUh*l0Cme^mu6}RV&PUAmHhtbOP~G2@T7NPU^0Wk>rhTHj8qL>7h@7S}dcdUs7w) zb;xKI;2}ug>AS1Z`Rtqkgx2ka*}!~+aV?DnJ}UQFzE9A~yGYkNPU)7SBt^}n##bv) z+*mf;w$Dd<+Vh6(BIn^%ImkCQU28UvW6kP>Ys9gDQHh8x0AdbAOQ2(-T(zI913dv5 zl-LAe)dp@i?bZTzTEOZKfq(&B(%0tZGWH6rJ`#}f-nyX_%WKDMphnZzUO)DtlW{jLl!g5M_igN5wD9vJk;};A`Lxhi;O>}UFF*F0Pk|9AP;@%ztwG1zX4 zKsO5N8F>+ANC8w|apTZuw9R)~8-K8BM@%CyYDd^g<&p54E1{{PVs4uA{sz~3`%4&%P5{a9 zDs_}n;FH#l-m^k&l<^{4?9^*~Z9n_-`P6KBn|y@uC&Uy|kGv4}ekg#kE; zSw?oh`fRa2v#g6)=Hp3CGY^;&Bm}9mJ7fn$Vax_*lE2NEFj|iv^HAP^l(y~74kdF; zYootO+~p@PBk$O8H}$}ngY|&yBSI6b^bauXf`y_AxUlgk|Kp23#qr;B6cBX%mW3#G z%%nffgn3xsiiNLMhZo7MZnteGuYGz|eGqGv zt3F@4P10BII`Zeq#XDMt2DB?XfL*gl2?!;~$ZL{3I;9U3Dk&?Qdr^0Etrh|h@lrKh zv>phQpircGC0|Qz*bJB3uTskB{h+0+Gx2*q7TCUuZ>`=iw8h$q(*eF{N(RpVBIXY*TfW ztrauNos)XP?M@KGe0@V$;Z*^d^i`Ic8)alV?j&``zcz3M7Y5{no1njK0V1`%ohYKR znl~RGIO$n+NMEMs8!2UMd&#+^GoxBmuq1NbKCNdu35PAN?_MwyGksBbdg35mz*WJc z0u7bTeUiNIBBD$A0^+3>{Nvqy$oODe0G4?w&vF9x3UWe#j8b4QksE4&lb{-Oae&H} z9w{D}_9ZO(mc9FA5z$02=E}Lg$L1jnWJ5j}oB^EuX7aZCUpWP|n;7W>mL}VBS@*|Q zQp-)HFZah@i2cy7W1_lS$@o~dxy|zVbAZ>RRL#@<=h(uea8QWnQ#JS=!h9nMjP%~@ z-~u6#w-8-`#5~657byJ2x3b$}^TD;*&N;8(aqURETS6xPu*;}8ZT@~)99k26j+N9R z>hytw^~39vYsWug__Mpp(BXfns4QUAy8uKOhqZpLC%l#RSdToRXtABs8ZxpvdLk5|%A>zyC7WLW;} zVu)3(6wW&(#*}*Lc_>b;Kn;m)(jXnR9?Mkj{JCOL?t9Lk&w2Ryzqco1y9sw{WS;Hc z><^tP9x7E+&~^jP3*6&XG1z(MFX_G7Xp1(V=qSF9LM@+IPSmywxJ?0V+L^y@j&b{b z>IyBL_akDmrw>M%7*qWl<_khfiA+BKlYj!U^RVOzcQRers+ z>*|$<)a-98Z3pR)b{`4TBVUCNADX>|HT5T=W?La$^2kV+LKO+hFgy|6dJ#)nZz4ur zw&rC4k%b+02m(XGFp0p~g}(VTWjXOzkqZl@9@Nxl``_>Uag3=jP$xYKF0>@7D42KF ze$xKGU(y6xw>NM>vYwSnPV(!Fu-)ewObd~WNFNFg78LMifYzi(t^g-qH4cuK>^RVhBEgwOJarsJ?N!?1OHYY8;RLFqd_^?ndTs zr|~i``J|92Z+-|UvuAYfu`+zR%S3*;Gd4U_z9!?-VarFG{mNoA84Scbz^9yzF@$L@ zyyU81>sZ(`@Nnk4xMdMiuOl+wa~=hBiua9r6M?!jJ7t5j)<3JCf1w`aCWQO9bi$zT z$PU0~AKwkk$$|FXy$L<~<%Y|6aDkjYf-i4M3tG*I1*NYU`ri`$z$(N=g$qyCV8S!C z<6Q#b_e-oKgfD)RXH(Gp9~a=U>)!Iv%L?n1(lwamZU#XkAdJjzIqSwTLo`6BNiP@J zwJNUyM$ruPm<#AcKmd?IMU*Q|-mwsm-xIpU%3w&8CT%iar;}G54tM zA0aHS##voH=;le`72=ZYSx6sekS+CqN<7kafzj%Yjz-WV{rKH(VUB*lUGI z&0qT$oKlt^TIN)dT@T|9%ws^|rk5fe5~I#)FVEz5#k{6Fp$iU{bpTT655s6JT-`&H zC$Ib?JsIh*+{6G?%~H_XEY25F^~)ewHf)30mBYLTCYQ#NETG(BW7ZR(Mqe|Cr@c}c z3@P6{)Hdbg)i9rH<~1GN(P$y9ul4SO>t-ntY-$C{R{Nz2U8pmU`+^BpO*$n-{8?!% ztGAxP3!w&uylH(<-Sg*PuV^gOQn-4u=_f4u{CQ8EAIPOO3ruqo0KyMVc1_o%^x=Il z_PU7Bd{bFp78?wlvu-P4uAuH?FjaZl9RHw++})Nf z9WQ?*5bVmX5epsa*0sP42@u04%De!nEO@?PW~h-%8iwv(C^#++1uinUmUM5o6A9h4<>@j-}ZoW1lB`~@%KQY zAas8IMegSNdZg6|GILlcQ!}%zuR7>R{kAr z&wqxm<8WaBV9VLu%9`O1Ol5&6CU%~tIXNzjY`ud<7O6zAMx%?8y2S)>`M-jECM0Y+ zLvDQmX>5W%|2dRp9oi8o-Ow}});#b@5cJT#g;TNd{#4eBr#6^6&PGC8~1R}if6!}(1PXjkkPazt& z)q9$bV}`0v$KC$S-LR~{dh)?jJP2s$N1=?mZM)1oe-=ae=(HL%`~r`80~Lq{|S;GSi3Shp1@DcMHd=bi5-!IDwv9_o~L~vTP(Ej=Z{zd%>G3L!Cv~iu%MA7 zNJ9)^NE;N$kZE|;s+WLYz|cK~$ZqPVG!tq6R^VBuk}THPZs~r-$yYCJkBia(?y_;B z3ocAF7nPdYI5<2&;6hZvb@Ro$wv+NN*n@ws!a2J8$SRE1Q0?)=epji_;&2TAyn;!Ngft*jZ2RLmoNS>B*N0SmPs7p!9Ctt>T$SLzZGVpld z_#x5iHmvcJd&pcvWxo%Fx+EHB@RQ9Qt67Pa_f^d z!uGVl6L(qI5Y)&`OKZezeYB_YPJOZ#bW`#c^;SWF{sZO_a^TqNTr{|j%rH3 z=>x|q0)-6?15hBaPq6Qo^jM!59Qy_^n+m~h8@>2HkQpV zn8QOCT+~5y3!y9`LYRp96O$yOc8HmE2lYcwS_{de`U^rc!s}@5FLhCjC{#p1gQj$n z>+&t(589w85ey1~UK5Zypp$vS+g^h%8{EXbtCY@Us2W0tKXYEk_T1c5YsM!>WmBiqutt<9}WJzy6%bcZfoHZsIk&Z z>ts;(v;WdKUg4%LqM}#*M?DlO$h>JZ3=P3+`zvf^YPwBJ{O~p6nRId>0F(~Ch0k`| zLe|2N8@Pf}660P8<7}BRs$P^6mPvW--d#}F2VX?6$^jJ%dD_GJ3nx8mFjWk0KvhSA zE%JHk87A9?obouB7pO+g(MXVV(*EXk(&DxI6a<(&)exyeM8UPRWS6bl0nU|WX`Q1m zFPRNaKEKF7EL2#DsdlmH{6G9X*TmhQ`>uvmQ^T@GHDoV3wGJLxPL3Mi;F1LO6xFGn zDRh1aL7ZK=1g*(Jcf!$Nrck7lS@ED<)h^J8zJj7}6K$X z)t~@`*hP63oPhky3UF)7WCjqUV4%8Z0;h1S?Cyxe&RbJec3f0vuFP`&GQNi2Np_*S z8~;3(^7}$ZzJL4a7@IRpez1tftS`z*vg={%upw(pV%%=e{%q|*}M z>m$C>aG9?GZEjD@IR}KCtAOpROo(qX!gXI>2ECG=7zM zr~s>|!edVQxT_A#NA!bS)bDvMW=@%RYTqjkEFL4s$+nT$##nJnUE~O7P<0bkSlbua z`X_d@lgFMn}h+rg0gdQ_oGgcA!43gXx^Cq)lUywxN66-p4}|Bwb3b#N4$3p+O9|nu8F$F!xYK# z^63>mXg%qKl|aKxm|z-&u7Jxumk)W2Z=LN{2S*)S_C{o2?D_Mk@D~1s2if#t!W}Jp z1cJ5tmFCeLY%DiAimryV;2Sx{W-NJqdPvYXz0g{w2QLJ^#>~rR9RE%&d~!W!-pILa z`E|V}Nss*09P~QTBkkvxz60RJ$^_!Ip%Pa$SqK|jL2LTeJ;UO$x1|}bUj8?T{0t|` zs9GR`Z42bj@WoU;r%`*#LltEb=Q5%w>9PRx=;f8k`dq(FUszGp4J?@ePNa$ps( znbn(t#xuHm7|*ZqT^vOMe)X|if&}9eo#&|f_guXWip!T`FI3i2yND~^Ll!q^;RnfE z{+RO}XZ4P96{IqUwKM!{>GFdE5MU>*+5Ni}4qvB4UV=J!fr&I2L*8RQdToM$h(2 zZ42R$0`lfAB=g|->w|BFI4~rkSB*=N&}h!B%AP^YgpwgLW_zuu#)zq$arUK|7SbZh zeTsaV3|417E^bPGWT4&G>s5IZ3++uy_Ucef03~xEDFoVe_=4oVpl2|+@Pq(F=0hb|DL?L0_%3uuN-zen4;zsCruJoB@fV#kZENZ# z329mKAVh`NyItqLeZAd^I?RDku+XDYV9N=Le^mWo1A%!mEiAI@fs#iZs|%CPR^Nx- zyKM}()mig=v*uat`MEF9lhp9*SaZv{y2nleHlqqRW#l~1DX%Sf^T`lNhb;H@4gESl zFSiz(F?`hwvDib!s9!92^O&-;^Y5Gedjx5VY%3|X-69L{h-I#Yew*UW&(?L96W8Q; zsCr(W1o;J=K$Cd*AEtWFF9+-bSs(uV{b)?3Bxjx`~YX{nNdQ7_n-S3+~r(q zoTu?x1B0EjF zIIqQKWXoi5?qYer66o3SvL$HT^lH{Hgog=UGv^p6J~nHqVMd{v1Lt=q zUBI48bA+&h5;fn(Ejw05ZBG%S%WUtR&}F2epg;%lLg>@Em=g$&590|d2~ecoE0tox zR0~u59;$)-^55aW=SsvC@5b7(b=aLv0g*)ix=w}kg2MWQ+;lLZ521mLnc%^I$$OX@X zN2S{E=-%ft0y(Rsp&TWn(sph<(&cx*6a;sh*$fjdP0zwquV=dAElEWI8kTz8j2H>V zRH(`?XyG!)T%y)3FE2NPkqwyj1UspWPok-r9OlNx#`TdXR>SX`Ok5)*Z4$ppiQ@d{;N)~C zybTmGWI(m@aWuB>=bx|c#b!u)f251=O$sxgP=)dYB)*#Mo3DEJD{5-n`~bAO z`LgsO{ebzAEEqA;fw-8r(#{>|*B&){>x%8QLV+eW4V8Nu19KEZ&G+Nf64@$w=0nGo z=mfui)vg*ReTQj+s2~cF9&-N&pkE4_;a^KjA1sEUf>I`B^;{k&&+{DQ~Q7y(M#MYqe*sUxEOs-q0(QM|)ST5NI#^4!-&Z-vB=SaVgC4HsyX3 zDs-3YiydH?t?+$Fo7I=$@t{b{C>{%yQ3iwM*{P|B7P3_4fQ$q-b2cdSL9;U(+8a7Q zuaO5x+SKLD^B|J%p#BR8%T<5Tx9pedS-*b$s-&hC3(q4a0ZUgNnS=eUk3dI~iZ6yK zhY|9W%<-(cc++A2egqVRnYy8Fe&N^~h6Jw(C;}GS`Z! zxO0CSRdt`V|2|=9<%%5st}y@dP#j*!;b(}g%w-m4uru2YxIkF@1r+mwg>NKpj-0ax z{cfnr#sTA5d8s$bEQTNY8D2Wfip#=?v^>oY4t#4=DZA>uU;0|Pd#|>0Cd&?vl;-2{zESc2CnRL=Gn%~`;Z*uEe&L@WTgf7 z0|Fe;W&mPae>mEIVz@UyrCqvP!Ws&%oGA6;P30rdL;D?6JxQ?T$A=%O2#HQ-Sn=xlsReh9?-P z8*qaeAW)OsfyF5%Smwc3&WVlU3>N570wYQIwhC-3SYYrP0qnlL*pDK33x_^P6~M6n z;P`lZ^mFnD;av6IZ3bMP6K`H~=e%TN9^f{N3(wel#A#BI_tpF%m=CK(l6&`*$aKZr zlePQXC2y$meQqo3ilI%@yn@dYA1i$#YV*Dx8fP|dDJ)d|>p}|+&7`&h7{$9#Q(j+iO$_&f0jCxz^KlV zRo;PXc!Zw!n$|Q95c@4o|IxDC?(Xj74mhM=w<8B>GB=!Oq;j5t-7kxuv?LY043%&m zT}b@{iubSx*^wW)c^SksGLyC((R;ibgPm&PAKQ8F-0nDO0hI2kP;E_(hw?J=)2JXK z#7l{D{kfXU+td93;;gbfSLGgf0qHLVa+JAp0pnf)ZPOe5TOgxHJ>+`!OAKdrvCXpR zAU^c3mY$KK@M*4@+QfzICHb%W>q5yjZbVr&Ud5GF;mdrVm2XFeT1<$A;QKw1x|NF% zTqOGJKUjjFVa!{UR9N>ndi5(5<+9N4X{Z91RI$rHV!~<01^4WV_h9g2{ zL|c=)+L8JN@#L`?+7=zIul`Pt9Jc>vlRFMa?Bh28ychMG`x2g@eA1 zo}nD41WnGVvA%RKjF<4B8Hd%4a&_B=l9ftZt&xq8gcS$b9!OyzqtiNjRm!=}Ejmjc z#!1>|zr-=MdH2Dp2|;pBqT1|k`Pp6i`^Z85s5{sh!z=s3bNk2Jt-QQ1mj8Y@VdH~2 z82lq8MGWl7uZ2py#2of`WjfPGJxc5vKWZl%Hd)yB^}dab{FIFHe}7POyWH4p{UrAM zyi@-1_p+Mr{N4e`_fe$OXCG6@WW}q#fnIUC8YEm}6PS3iA&mQ9hO5hUX8*}>B~W~? z&8wnB_svfa!V7z7D`9eZ7334V+s;fYgIdKoFy6sA`CT{cs9#KfUlU4KjQuZ9Makfv zUB&40mt~?Go;|nD&)2=Id#o{?ym9stbPW*Ku=;|C$fmsmGY(J=beXSmTp#G6b*4|w zLH-6R{L$@ewtdZNAi#<34moDYBgEt& z4~?aagM30v(38hVO3WP9o@1+JGvtTYJnilgP2;lIrr<_B;s8Y{B)Kh+-LPH_Gud~) zu;G#jRVsjeEfAHwjzz#{*Cg(Iu6*!smqeYA1w|6?oF>6Y58ipN`{+GD&~`Tju^MoI`2)mvh-%XTd|7vW zINTp6F5C)lW2FgMuyCRhZ!=JY@}Bm1w8b9$QeMNhhFgR|-hLp+IRKddwW>-ZR6;aV z!eH=}8o6cE*=xHwG_11HU&o)RdlE@DJxCfN^dKi+#r$unp&9}g?Zx)EKN~Y2wqj6} z0lzHRjodRU+z%ffg=md*P5iCQQ_PM4{fE7D4iCu|8aMN)eK3>I0?A%Jz}663qU^LZ zIOw=Y&s$G6$IB4+(HzFGMaF9sF zyaD&UBNgGa=VX|q1F|41&vg~FV`GL*K1-;?B5Bg0Xx*_vvD(^bVcLu_$Srs}qhU~O zF~yH&8^T=JPa7(i#7yvlIP%D?s;t}vTx?L-Yh#n2CgdyRnu?g>%Co5P^y~;af+{WV zbdV{ad7F$yU~(*d!|S-gCO5sN=9iZ{41%nD34c!6zXj^h;1!|8D2b$($eH044_gzT z^Y4>IuvG9ehjg*XV#15&U6Q76n16x=c| zM&{!V@F(J?Bi){)M*Z>G-d2d$q*txOifSE;^tZkY`9qFH?K;mI;dm$+p>zLs z{z=NGCn+b>zc>kyJx~ey)Fm(|EUCzsFbqQ8sR$K0%=Nmz0hajL9~CUQ4Da8nRposJ!7~wn({!fp&05Fo(;>IX*^WdSZw@M=rSK80+jk))JxSzMe5Rb|2@%_BJ_vHhlPwNf-}Amk-g$APuTf^cMH`=S3k<5I(xEzp ziKltLS-@1c55P#o481vSL-h;hv=AQ$JZ+BnE=V2#!MkpYoEY8;XNiV;wCAc7x7+$| z^}P{?y@ZL47e)Nn^!oyX+#PeP_Sk^%s?d3q`!O1#c zmA%liwnt(wbnNy*pfI34-SpdoXi_n=hjO9384)yDfYP8*4G*H*}@*xZ(?E#=rOfLvQWeD$VC+X3H2meAY6pzknOdkzbFJzc3 zSIh_BskDN_W;a^ozmvq4+Z1jrpqak%NGba2uJzQ2wLJ03;s};XWDm6KY}nnWDs0jo zT1`Q74GOz%`gU;v|U8;MGl9I(=&Z$mANj zX4o1@_Th3C5sz$LygPRSS2jkpUtX?UAO9{V?6v9dofCGpr+(aMg0r3RO6XZm=ixgF zOulL|p6$@-du8 zu!40XoVN|KoV@qyW~1?*-hIU$@%GQ1sf=qIFI72D2aah5*0qkYv$850a2l~o@hRF? zF3TYICSr|*)3l!sJ7ksjKPGNmq%OCf{_voJBBB0e_P5(3*IsyJ>7I0rI4y_zB@+Ax z9iotCa6PL{psi;OSd`usp@K`82{!{7RfWV3W z;f`w5&cx}RJ8RQUtp7_NS%V?#dM3#= z5q2Q(Dzbx%z9``b#pr{rnd>c$gQ^-Ya-}irpWkl1&~{e}5k68zT{{aQy^kR4CTEfa z#Pb`QdqicCkC&;jvH^axccBrv@2TgS&+R*b3m^Y?u($5KrvC5x?m`;LDaCjH7{56u zZ71^XLu~$8Rw-KZpyGps8Yvbw4Mk4R9%35Rfs`K{y2u@&E>c3?7!+1E*!{L}{P3RG z!2`y-35k>wZ{_QE1it6pX|Xw>9Z8_nVI1tq8W5v(@oG5yyP!Q}^~fCWe-9G(8TjI+ zePJq1(=~rKmwz}9ema9?k` zv9Y??e^7_k6;V06Yt91sUSQ)G^o5Rn{qpOZb5=L)*Wj)f(Inv!Y@>C2>#v92vZEc{ z{_&{t?p5T)KkBFib7(8Ki3wnjr9^)dBdhr_S7^dpU;hX-Y5~`M1WxD;7^ToRjfm0fsr@PH}UH@j2 zoy$T%Y?OCHn$Jb}Q@;}At_7()TiE?xrzf#MJDn1_Q^_s4-5(ZeMocdWmR_lFkkdfB zkdLD}>We6S3iP2gA(AOMIFvHV#?_8O_W1(Sn2zVOU6*fZvDEu(#gpd0>>foxb9Oh) z>(N7zf-#S-bLpdL^jim(#S$t{*1Guivq}j1$lSPpKUoB{WD#5`Re&5{cg&$xsjLHH z5r%52+J}OnTGm^XUGc)jx+lj@r=otuP8a^GaZqPzQCjPcW=-GGVnJ|%Lg&Ga2qBa^B z-8sU$kk3v&z4`P0`1a)2{}mwhy?qcdpN+*^ge+Bz*R^SMZb^7eCiLF2s|qY5ycJU6 zy0RNF#V7c{S0#AxO`=yPQCUFkiH%jMXI+(g;Y%6dyZrqWj2>+f%1Ao-&Ekn!WzYzg z!6|$xnpCm>D%R-KOV^L6Y*8Gu75KlhOLviZD$^FlY7-pamqau*u_46qsCjQD@B!cF z*`Cdpucg((zUT+@J}Z2QxvLqhtfP~U{J*dhwMo)0Locs4MqPP5H|(^am_vJ}hb{fT zpDOVjrAx57dYG_JGc~xdpQVzQ+oh0uJkM=0uEgy2%IPaBuVfWVeIA&g3~zx-Bld=J zYPY}&cYIgfwp=4x z&>0`d4zfHR_qrY4hN}#=TJWzC$&vIIt@phti8fSZUAESS`u?fkv&(&+SEqTQQm6Mc zk8Ch(Jf~*Ot)%L%Ky4FI1Be(yKhXL-h*CYQPxgm9oF&gov3@{|A31U2i;nhGqPQq9!bux|5*Wy%3MrK%qec-Tf?_({Yt zCe>-B#H09H-rUWZzs*XumA*GL5EojwdX=Ke;YTWy^`0^J6CW8=$1{76$_%C#|8bQz zME~wT8Le6GbJ-+HT6$xf+L+J&q6KNc-ygC+t(nfpbkB4uUZ88&Jm2`@qw}ZNGW#>! zCSJ(Tj#@y*!Tl|XH)d77?LEr9A}I1PCk2+5d&IoWjg!{r-==@WW?WPyGqk79Eks9b zB)FY?iFV^VEcWjj2Jh&%N5|El(tCC4$iYEn?iI}IN)OJi-16qAI9J*DREv%4*XKL0 zz1r~Gup>63fmmj?FY+figg3z{*uC3aEd0xtwNEl#FFZe?GkCS}&|0Z|I}=7@t`uo% zJNOGdaM*t}Iy^B(r{_qfj!96z^80rhD{BFf$@IOk7{D}|%)Wk@vOB`P80y_W#=DCu8JG%HT%C}1>b+#|7mN4# zg}$ckKU`lSSk@}Z@1xXt6sUzvc6+nsqaVq=x+jpS!YkBix4F}9zV5zrcBQO#Khx43 z-{~r-#)(Oa-dc9`?un8(9v|x!=tbqd|K)O(Uk~Z2MvS%F`in6mP83I1Jb7R`&(@>3 zG%JS3jhP8_l`{#Y;5fctfPtjBig(8@9IRR!zbNg-egA-uHZYN8Nu?Rfp*2j78=M3K zigM+MZa)8?%HDDxh8*^g}P%J_`FYgwbk7E3zr)=y6jJ0Z&M^Po^- z+B4#2Dk(&q8e2aA#a=_#!H4>X_`KS!r>Do_r_11zZ^PO>^+q&>dI33=_h1?g%FtIG zNk>dA^baJ#2Gx@r_;5M6Oz!~66Ae$aea#F82R38I@!b8D#5`X9r~IvSwSrquA=n-( z&_dh5sXNARWvQEX{|Tfs+TC|Rri``wq)RyxuWtt^#V~k9+kD*yltddcF3{3J^7@RMtz^Qh&v>47LE4{I$^y*^#JeS z??vAbwoj#3>~yuzl(-C}`vcQ=(MJ3zi;D3md~N3+_?lYjBanc*EDA4HAZeEdkt=j5 z6hU3s0r08NZrcg9paWo%7Fu!v;YR3*8R|bxZJo5ciR4Z3w&!J4urPB8W7)MuG~{+? z8iK{ip?hcyUjb>Vc`mVNVk2v|KeC+k%_IcThsfQ;-$4h^lR&8?L8h}sU)4feU0ecp zvG}vtw<&*Ya1-b+iJ%Sz*?!PwU8>^?+vYl$Ut%P}3Ikr=aLvbc(!aG1{p(%-9{q>iSk(d1Q zY7m+e^~$+&Xm<4VMJH(wiz*1TG}v(L%}0cte1wiQ}gXvVW)uqdXxt4jlkeYq6V_ky}; zxfb*2(Lk=AQ#&uALr(SA2%VwUqp*n5(m6CG0kA$JK}MsWLXUBhewioD2mHcT7s!ng zlpZqZ(f97{fl8(~eG}J`RY5zsufJOGybTS&R_Q60p`%gXbBiNaX3i){CfYIuv<@U) zU8hIquF?rbo6BKmrCk9&VHuB|C&vb-j$i+D_G!avAU8^U1i2Xjl_3mT^6hWsc?L_- zHMF%uf2vu3!d1kt=tt&e>dXfhZTS@`hLRT?a*rU>Vg?2%c0wq29ts(k^gwD4z)xhj zqVHHEbOU7QQ9AF{g4oOoLldv@@i^_I*BlwV?Yccq zT6JdJoF}RM)%`YQAfBf|m?IgD=#ZZsVyndQ?(eC33)u#5I?`8oRP6`3mtW0L0H9pJTBKo{D!jKM$JT9aUS8HRFArl@R5<1_29u_~4)wXoP$ zS(+#WGAd~rjbqsHwy|lhCaUxWFl~Fo^{bf?CtP};EATQaJ`eS}^ zV9M$A1}=65_=;9skp?`t?t+Wo$5C7F>N&(l9+OC94jkqzI)CMk@#sRqCBs~qb9z2y zEuk4$t&KP1!S$xjw;!juuTMH1z?lmOD|bh+Y_%HBU|@brmPWfI6j0of+<+ei9}6i0 ziEb0YcOsS(Z|@d?$Yo?=fWW`29=1N z0Me5%7S*!k7dO&scAf#V-HMC9&5Ar67kRkH;DVvw0}|X2(^kB_pAIe$ZS_v@GvE-Y zV-tj|@P(~#M+_85M(@V{KXF}1Z|EFM4q=fy#;3r^K;}mcd?`?2R@pFc1@)EWPF|8p zce;8PI1I>T6$eUqRT0~h3wnx{7U>L+X=sWK4UHErY(?_GKw;rrUHoIUKU~cTWqLbZ z$85N5->H)ME8=$pXCr8NTAXz0!Zals&E?XuyhNdkzpRJ9fd63(L5krPKf4?BkUhSD zWQ3cE_qOk5t0UoS!57g`S8tq#@7ICV;q07_A%FMw?NVy&M)b++QuPIS1zp1-9*lQ@ z8R{3YsXWYj1ufL(4^jsL05F2^jK2}Y^|c0ePf+nd;UkCetnDk7Q2&LiQ0Vo{54;q= zk^1ldhdwsA!46gxKG9o&e6vB#3TF<@u1o}`0^Gj}(1c&B*?kK6csOry=ucQr(OcFH zEqKk+mR&iAcCg^78X|hds*6cZ$L~GoP{FvZKDxbd)9TGbddLoX6VAzM!{`l3PCqRr z?icMws>9Q-GKUk=kv7=f-k<=?;nBuJBawFd9Cx`Z;Oh}7em-{34x4;jK&~cy81Gv6 z^^onprcKiy-m%{!KTpbpC;Ko> zY4N47Y`wC3Q9g2(q2W?twXwuG41Gu75AmR4Z(?*}O(D@aJ182PPY;(#{XTYYW{$-K$jEt_RnZPx=@SO}3`)Jax*# z`PXr&UldMk2{+%%sP=wAKaKM+SjGyyw;mp@RF`f#c_KWP4LmA0NY>L*XYX+K!3RMD zAi)?sC!h>XC@Q~gFaMJjLVS2S_k`OCizg?1Oi!D6%+o~#v3fQJ{`>uhiaxL{PE}<1 zn}g1Y2Qpp!<=EusWYc7u@?A)5T)l)rnQgSXtZXbyS#IpH=`z>)ZhYJQo>}`646RkB zl`x;DN*2DkACu?c>_v=zGm#@!8Vc4A!PYx#bVaTdr``K0|Dd5s>5&ag+2!TkAHMI2 z!X#**2p6}c8F;Hx=YP3fH~6X(VT+`qsc&gwTFclN(A#zk;^SFk8;=D+a&*N8hdb9mG7$1}%n2F1gm ze)#_%|6epFVaT4`SdnXqJT78&0yO z9`*f(geaZ#im2Zs=(8bXALFaEO1@E9h#w{@ISd^5ej^-rpW+i2w$AwqDu#yOZ_~El ze)%1ri~ASHV89HR$8&WmnzIl5={Il`l5|uP6RU(4UYm(kX)ksFbPM(FtrwX2J7HxF*L+2?+9 z#p7oip7A}?&AZ_xzBMj#N^-f$lRERjt72P%UrH|7DHRvA#v-8HT*j*AC8tHvDXwi@ zjKy0!ciIFs`n#Baq>Z-yc;xu1k9_MZci%WT@?+jS#h-1azV2DPaNex*!_Ow%M2j+< zx?9;HolAT4eY@Gj|5PrP&^MsQ?rTZd%u)@#wH#DM9Lrg=sfgMA7qyu`Ik zAWRtS4C^<+OT-~SpF0CfUHnI%r1c)S@)C&Pih%B@3;K-N7NgH{qE&N2QGi&_qDZNo zKuk)d`<1}2((b0-MGj5Xpx;9njBXvPeBNdc>JAr$7Ff-1sQC(BkO{;es?u!D*bnFo zIENyq%EG`j;maNk$oAs^P}1yyy&8#b;kmme6D=EGo7X%|sM$USK2%HT^h9YPH#J`3 z7nWBJ6r!-x4i& z9O}x(kvS3i`#iY(fGO?Rv15RHt(2WP>dUOhzoeRgjtv;DD&5`!=M*{q@(LK={6Lhn zpPoHdzmsq_(DlZLj-DS1hz9tS?%w)g8J`ipMQ%J>p=)Sp2ntCZDfN@V2wDv33dOd zGOiYJn;4M>uG;KG`J$l)k8+gNB+NBT>z&O6FW(fj_crYOQhY8bKBAw0+G2@q&t`l7 z2ha;J0+**Mo5^Guf%)SI)|05~*Z=`zv$ABlxw+Yh$i3)*_zFE+H1#ojTOyrl|$;I5oJ!rqALB$d)1N~0f5RK$No@vVn*H*gVUDT)Jkwp-nR zr>&s-&_Z>w$svs;=}|S7b(+H-T8XWfReYshZ>k1jR^JMW&d*o^n+&OROM}i?+##bZ z`AbOO!`A6|t6T?pGYbn9d3pJc&Q4Ki>O+lo;z}==w=L-4UVt*(@{b?=QSR%riON76 zTz;W|+r2L)I$EMT``Wc@v(hU7#Ifk;SEmJrn15E|-b;%Zii(OLBKl(LJ%Xr2PWKPw zIRn!l<;a%C9!~iDv=O~pekFAdKMx;CG1rFNydMNeB2lb?GMcIcLwVFfsG(6hUHh@Y z9z<+nKMzymTXI^{Ams8`f7z=SOR`;hjp7)ry1KdtaqZpRkOEc28U1CPhe)4zHV{B{ zoB^XxxK-MKVHmZo6+IQz)y@hP)HeJ|!(YU>K%#aGEWMK-CO@)-%SN)XJ-&I zdp)*mAU4y!Z=3JMO}|gqW{=yGFE3dqefKhtn>cAOVcquT9=iR=kjf|#h+Gp9pwS`| zS@mwXst9a0C0_iV+L0%U>n9GlfgJB6rNC<1$TPa1)#PUqoR4lqL0pnH0t~V<2_1g? zGs6mH$Pw7&%{hq`a4$E+ZCC;MYeBvs4+OBgAPMp_T1tWfz)3Jd8GZD_hlLQwD1Z0P z8?zi~Eh#j&(IH!VaB%R(mb9s{&hna?Kr~E_0KXEDXaSmKB%XYGAG=kcup$r&tS2uz z2wtfkYnY?WzFu@lDsqaQ(Sg#6O`0bMc@pn)vjf~XC9I6FYnP)-v%Ps&Wdh`biqMQP z_*8jBxQ3uHz&CO)SC(!RF)0Z|mHG*woURo_8rcs;!X^_z55Th3w+^mN8HZ zexU?nEwZP_vsGA-;+c%<)n}e-On6N_zV(GIzl#53c5?oVdX(B&^<)mWK((?MM%wY^ z;b@Hl^mgl|=L1XkM=jFg1}|#GnRuBs!t#^`HhPPNYYYC}eRH(TJbm(sY`aFZ?%`)SQ~ zk9e`s{E#W@T{20@xSd33RAu#zJ$^BMkUt*^KJsMyy>G5aP}wVV*Har)CDaAvAMrV*n3T1kDsy0(Y~|TGW3Fe<_yqDwJoZ`8WE>i=gOwiTnEoW!WXLmq7&sSvhhUf9>-t5c zfyj_Eh24bSEg7F3P+n19ZvEU^aP#!w!<1t$E;R%8LX^3qQOY$-?*Y3cxIstuP z+~Wb%2EhW{hBOQ4T)d2xLWgf*7IWJNZ&HsidK0>b!9sJu#$YMfRU2E|#rxgJjW=|u z!8R$M_-*i$@3!DB!7f;)fq{Xr`}gnn9L6mH+v|%~aTOG+bHFyr=>@4+u(dyaOhjAB zWh*-vV|pL&(jmq4tUA~p8zAb+7WhN`-U$8t$qSC^3ecgm`J_wL-v8KkDj`dzc04r%I=*hNba>^X70!-@0_^l2tA>h|225>^V8nQPI))%*puaoyf;9SYeo~ z81g-rmT>z+UV|64_oXNggyXH+5=L$?CtA&*d>eA5E=a@pqAd9iu{3BuoX6{{!$QrP zOSg4MA=Eq607i4Tw(TX`4z}`JARIIz50j<#hs`4AK}Mwreo-O!gHpKTUi9fN*^{X# z1m$BSV#{;sJX(*$p86E|)KA*cN@63mYeq889muY6Yz<<6y0o?r>TxH~VVA*zEZhmq zBjOlHR>>byft%;fXStI=ox0aAbBnc6g= zBTu6AkGi2XZ4=I^%p%%s(xwxjMX0ba3+G0TQ{mrk&P|WoeX%n|5Z~8#BXVuKuo<$U z(<6HN;}ejzyK2+LVDC7$AO96FyBEq)(a8F7k3XF9ZJ;JAu&_qLlafT2@hRo~{=+g6 zd<$}3!@u(m!CLr{?o}!<7>Eu$Rb+?Zm|#L7RwdG#AA9M%edAT{ z_t9tJwze(y-l@rs6`|7O9PdZpcfJ}A*bCM1^C!W=Te z>g92dqz0lO+~IVawx+J1i@8%mVJH0*m!m+ce(j;|)wxf;SuKdsuzUJpwul3kV3^Ct z_zls$=&nFY# z-Ab}Y%YY+Z!h5~XtF7@IYt`+eYLRZQbucn`r%PjVaRp6pjDxC^mtDV zTNGJr4OW5uB81z%6X6E@1K$L(U@*>6Q$X%$I`MQM{~$8mDWm8QUIn z4BqK`$8o7CwZ1lJ;WmL2S8D@|3cIhlbcVzfa5sBHu>%7|_6I}@fqgoJ4{8MttqH8h zXcNDj<2wfx6&1MpNL~6Om>lr#q0a4H;izxGpI;)TpxxKl@%P70nO}4+7k;(R?9^pL zA*CNdBlmVayd%6CdVVR08?)R1`NM>mOZ4b}cF218ExI~aonn;F;$^TP1-2Rest?rn z{>jYYoz9p!H!wd;ppg~*=ur{eC(laJba*Ia8i_i5ZOA~&X!#5!>H^}ahtIhNA5A#^ z$}*P-c?qG3{qF8$^QuI&ZxBVxOl31OGh&krb3Mpz64Md;MfIP|ABW6CA?EP54FRv~mm!szs#{*u{lKpnnGj%1+9+!R>;=6U7-AMCwe(M8$9}1UG z51WCvTwYejf&o4Ob`9KaCFsHx5dJh&_DCZJ%+L? z5}s>dDEOn6B`ho(ObjdhYhIo5<@e1`OF?7u#(74k3b zzXJK9F8ue|$v-f-A;&iG14@9DB>^DA7VV}hYEhR#LOCccNWExRE+sDsF(7I5*6cy8 z%Rs)lyLwiq*4iDd1Ch>GirW2zcMBGByIa429zzHSB*uv3nmw$PU;s{`U;B(>VL&4m z0)n0=uzZ?5ER_)GjH*nx%Y}p61l2z)kgsE`e0ss!~oLeeKB;f@aB&>xX0Eyr2WHH?}|mYDk=I$Z?mWu-SvMng;yQ zoRakH{@ZJ<@}IsXZwYLh(a6EI{jsaGA|hK4vKzU=;qUafmX=OUj(gEjag|@LA{PW* zgh-e|IPL9-ziRF4gXm;D^}w^q>ePoatMtH|y^iSbDhj{##yS~EXtc_Gaz)5jcLUA< zf!zpN5a@S##!$6j0|s)k&avy9&R|`HmApjUbYn`VXz#Vx6TaJAGiy};5@-FzV*T5J zR%0F6H;WI5)q00a4MdJ!&mOsc&fy!3h(N@-Cfsm=z8;TVd2Gds#GEr`W>Ou8Ei8JL z%6an0W%cx<4&SY26mY3yO)pSFVdmHQ%v)$K*Q5gdTkEe4&!#R@TzPvbW$hMRlk#+e1&jsKfn zx-c(uu=_1SFzn9#cUy1p$jKsHgts&U#OFwKV5q&C*x{S|f-KzR9^~q1bPHIR6+VnN zo}P-c$`v<81b~;?wmHc6Z^UACc5xQW@oJ0oYvW|gu$XGGIDtMyj;P@z|q(@-C9pR zd}`T9<~C@G>+FN!L!ZDdlFJ3mMH^=w3r%D&nb&1?_1iSzg+zuEgG? zFGx>K9gh0D%#EGeu%pzRWK)V#DiBiUy-B^!ZTgD!Zj;v0)GxVGzx~@`*Z+KsaK?y) zku*tHI(&!zs#3RIj6T#riep3J&p1(+;mAg|eYaD& zr=M}S-6FbuCfh01En%dQ0+S+?gTQ!wo$3=g+t0l>Xzp0M;L@0%yvXkLiRUgq4h$X2DlOZsG!!+rshx2?gi#!%~*v+ zi^Xbgfrz)ASPmBA4KdLZMR{P~sllbIN-~Lrjewo1%5=6zZh|eOmmw}ABO_mA3rRxja!@KUqtgrp&Z^(t&fXl?@$SG3$8_^h!G zA|On;b=B3@?cu%@OgGS84qH^CWuOlbg}{hp6d}T4jB54v_V)aD(dwcod?p(X(Yfx< zo}OA(*MIh$E6|i?RR2mI?;_w7k*jL$51Do$5dBvUYBLU8v7n1Se_Q5;`CFM5A}0^B zA7sRqJ)6UsF?E^qiS<$TgMXkA>XzYHRf*T;h_1MO!_4VnPHBg;5KX>B&|@Ox*$1al zQh%(>x8%)Cg2u#uw)0urCCV=PkVTTpw;a^e40kSjvS^dRxy-+gqW&J6WKC>-<4rNL z7$(}}@!DNn!!=071Zff}PAsi0WTo{Z;O%_ULV0EdByREw8w)=q;n3UM z&VA%)w?OWPfJGfOhbm{M%l&g)&@m3Ctr?|z#gM+e4NIIY-Xa0XH5Jx_6f}RqQNoRB zAmQ+{Prx+0W>ei;k~cvhJY&m5q0T6G+y%Zj{3YW)RV5m2?NY|Cdo&_NU`LU6Bqqp0 zs-of9h5iIjS0P3p#9_opi0ZjI1i;AFH1to(-{#hP{V#zNr$#r;TMHsqmgwoBv8Xch zj*vEs&IUGMRlKuefSX6eXg?4*kux<}kd5Xy>0u-bf#rxg_BG+YBM`bs z*>&v)ii2bWi%w8i2swI4l_H_m7c$+?EFq3Ja$P1cn4{QP@6g$(G*E;57vO_d@Ux2{ zUN)aj0d;4Gw9mP&>nK%R#UVA(_sWaS$AC-gnHG_rF12OL78u7<@RSLV*o0CBB^X1@ zqrR^%I80zLC;ge=OpZyLPeru-h^3E5AHz#1dbzNe0;jj1=iE5_^>BhyQ>TY$kL02#ddQ%Ge(FM>_Z z#OOmv(z0296lmu8g-FaW4a zQLu~@l)$2+qDWSuAEAmdKuP&n_pE;{F*dNd)ME031up}cfnb2A8(*XM*B1VewaVe+T89ob6V*dj6R;^&T-5s2 z3auvi>vrV=q6axNNkTXr8CGJTI=Za6ILjbtHk!M;Qx?;fNN}*He@7$9qMi4%5 z9`w(-LiolQ;T)3CC6J%JgDoN~GLm0CQn{GC?r)R_0t|aPXXBO$I)-&bvU>1GtU$2f zvMfPbqz@`T>jC3R7?x7LOrSQl(D%OHB4b`Y(OFO7+ULFtFq)PdjyV1H*?`T^9jOu$ z^oqbxLqJ%Lf&OrJNCON%Syv}y0@ML8K|YRjTV$|MCD2UN%+sfE`voM1gfO@Waf#aA zK1hN|NX@KAijhUXFmG|es;sXUfx|RA*N^LA-xfuJi;Ouz$;iYcXpG6%d}`MaWt`K! zt>j>IcAn>^6OOKxZ#J_E7J6w-kL-q_H%7x3*XF@v1OupVMShCc(X8+`T|3*&6$wvI z@oc0nQ8=LlubP08(vSqPaL#_w&&zf9_jxdGWZ|3dS`pgVf|?Zrewx!+AcR|0=n*&fW#8)2<=Y9r05gSNbFw zQ@PV4JQP@r3@zczeA~6;2_xg&P}7^W`JoGyUCyvG+3g4aHbR+&6`oa^omDno5sO?Q zqS{f_&6(5yS?40=8}8~Uei+hI!V4ni(@s`w z3yzD6Bl6oZF&%eXiLqz&Aue_Q+t0H3T@(nPcZ@!+g2B94-xWMxkxw`qBYjE_M^Q zjntN~Wa0(649(|rfs?{ty72lb~u_Jm$Zmr)-b|Clx;YffZ z?I`m}ha~U4=%OYiMW<71KiFpg{~=5xlBv2dpQB}M{m5(g8416Vt(*TnX}GM|-Pm}} zzEoUOUqX`mNz8HPY<-3m?|s6yLGNWlt&8HY@|^s#%OUBS$mAPGMT ziT+!}`v;mRVbgXHGO<3$a|jdheP=a4>SZ6_^l#eG!T96IWWV;{4$#tbepOoyuT8vM`>=F&6Vj1ye2pGMP z6)BJJ2j|J|k{5L!Cf5*W5m+J#*&FlPwB#C9u#Nzv&Er_-Qk1~(;%k03pQnhVl%@x> zrz*6Ssk1Fw{?FNafV!LS=0Z}8(3L^H~;fZWa{m<7f8q zlZ+2xEA_avN<|J9ktf{k_)m$p?U-b)xn!0gML^o1`T;C~lQq;`8vyG|vLT>qk!=!! zQI+<^*yDY*lTPq5@XNBQDnG*Id;a?mL*&n=68Q0_u!tWYQWF7d!DgFcc2F6kcwie0ln#E`C zB5AYi9(~x@>NDwE7$lW886}fSZ3ET>=c`z!kr8N2G^rnBct9DZ11w zKg#;#3L&WuSh%D z^iXz7W=G6Jgv<+EU}NS4Q>e56&s@7Y!7EI*y{?;|EgQXvO(mK+s|6WDMCIZTq(d3NoY^)Rw@Bcj-HQ!zXQm25kyVMv#wtL9}URH zWLiJX9!L1cdFuu_)o#m0|0kd!xz(R$Qbifde2{+X8yc4noC6QEko%naJ4_kX2m7Gd zCxh5fyjzp6HSw=fOsRo8e@hEpd`xUda$K%KOoIvHEIY zbs(fBWX^chm+Y0!=?eM~vIgRFEBQ~-Vkh5(F5;Ga$D=`RqG3nogP~gSjE-dVKth}F zJOtx~+*kYe<2LbyiKSGEU|yb7Opfd${0XR9?O(nWBe*AtL@W8v+>b!n14Bsf!}sKT zbGo>-4R|zhMOD>fnz5p+mMu*viAsmT~G-6+jM+P*k>p(4d|+^nBsAB7~62 zqjeZ;f*yMM!J!$tl2C40W$fD=^DwReamIY3tW;~s>_YYJglf+t=eD~f9ZZORAjZNZ zM4K=B^_&hgB_jhnZL(LjrU8N`?r2-+}%rR1v z-EBU(bz6E@BC(A~&J+TYR2k1e!kC6r-SylaX6T9;7PSObaZdv6Oy50fRSnG0cRFfe4hM1Kb`bF(``p z-)OlJ&oVkXx_x{UsFytmfFwIbvhjp_Ap{mgXW({Y-wSp7-zdoldfDGb@qoAP}tY5;^C0qj%jpIi` zAux1fjydZgyd&lq^m%^APL73yVomaL**$2LatjhxX^rk z-*mFQn93;^?bW#zhY>gjmx|35E}2`TZ3)8A8jyd(s>`*J>{^W?@YbyuuZ&jtt62V#-XD3^N(+ahEgPhJQiF$AM-wD*REZV-*4(4 zMem&CtgN`gLdE3j)2A&g9@d_Dcu*j!${dqk@tMIvQZT=EZOnVqv60>frpf-na?Gu$ zY8G1g{)^qASj|IQeVd2J|TEiDnKrAK_PvDG&@C511$UT&A1ePj0cjU%yl?Ck95 zjEleQX|~edrk8QH-{xp~t=+;_7UUpSESmTJg#cz{tj)f_N-$zl_nbe1kjfM=hOg*g)x8LA7N=i#@9UP*{%hgf+jIw;s+>IEB{(kG& zM~_e&{oXV=p?|+xWVxzr2sxwXLo$a!&&sS+3}>OF+WBsMb8|Sf1E8KzRCMFxmlSj) z5$CdtXRlR+6e_*B-*IQafkT2Tu%MOh9Xx3i;Bm~bw4?;}<&a`obMy7?SsCw5*&)M2 zL!g5}i~95D`$vnqTX|P65?tr$SyY;zpTB$J>aWM!LMFhq(^R zXVdCSYXL#vIhei0qpp{ZEm|JWn-39RX^tLV<#08_`s*5kJ9n6PGz$Fqz4XU5Jj>?J zm_wShBW6!UMa7(pudq!pSVw7HsV~qo2`V{=huC8B>9uI3!Jo{Wu<`9Q{uBU&l zCD;4T!E+8mg=>!F#8q^f?g~(#{{(FTj5U;RAujj!q>a($>&N_yBgWYko%zBy z7`5mqy?C5Tzz9znu4Y;B?o4WK)~ZIUl{feCoWALKbsa?sq0t=r3YrrE=Az3aJ-*^0 zLU3%9=X77E=9Ux{2|&V#wEI&1($$sM+MnMujK{&IP|!1selPpWay*Wf@4&*(EwQ$= zgz86fMg}JKgTq3*66f2=MO0O3&z(IhHFlqfpLcGfC5JUv1WzG-jc-VnYOimhG4uei z-W{da;R5he*K!G(Hc#?4&KEln)^o~EKs{w z=5+NPW9>wtLRa+D;?8yanz`CHNlv#h%#aj#lOtFf0>Wp{hN2|{>S?evxVgBZ-kTy_ zZfanTRVf>ywbi$LY%I;Z+K!{gnv1+~%uXNrL*jifNYi>41_2rlD zZjV6uF~<>ut-k8J0uH5C`#{3VDRXaQc3K+iboCkMs{rz#)L_MSiLbY+|8iJaS$XP0 z)r9K{r(Zk^lXk409`3219~WQI`LVtp7gtA5#71$!mDk6{20P!3+o$XLDDb9wj>f+f z$d_5&Yj?~=Bg?{b%kl+BjviHqDs7`UY}}eEvxyYM?Fl`v_DVRPyvf{Xh)vajDrkU@ z!2eo!(dgvV?O49<1>emcem&Isl+DIf`bJ%_YHH66r?#*s^_g+gT8(}En=6!$Pc3?J zwqlS!LFP#ula-YH!yjuFeF5+PF_bie4XQa5jDT@fqA&P1b5M%?>ntk3!N%yD=B@|p5T{J8Au>~HVsuTCBk23qokZ{MIb#4+b|@wzNAj+3G^X&JvM L{~Gs;!TJ9M+p_WM diff --git a/review_pngs/seed_72_after.svg b/review_pngs/seed_72_after.svg deleted file mode 100644 index 186ea6788..000000000 --- a/review_pngs/seed_72_after.svg +++ /dev/null @@ -1,249 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":124.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} - -Candidate recovery fuzz - - -1 - - - -2 - - - -4 - - - -9 - - - -3 - - - -5 - - - -6 - - - -7 - - - -8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N3.0 - -N7.0 - -N8.0 - -N0.0 - -N2.0 - -N5.0 - -N1.0 - -N6.0 - -N4.0 - -N3.1 - -N7.1 - -N8.1 - -N0.1 - -N2.1 - -N5.1 - -N1.1 - -N6.1 - -N4.1 - -N7.2 - -N2.2 - -N5.2 - -N1.2 - -N3.2 - -N7.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 - -Line 6 - -Line 7 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_72_before.png b/review_pngs/seed_72_before.png deleted file mode 100644 index e5244251c9bc94812185146eaa2622d642b27d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173421 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�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∾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 diff --git a/review_pngs/seed_72_before.svg b/review_pngs/seed_72_before.svg deleted file mode 100644 index 76883e33e..000000000 --- a/review_pngs/seed_72_before.svg +++ /dev/null @@ -1,352 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":14.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":122.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} - -Candidate recovery fuzz - - -1 - - - -2 - - - -4 - - - -9 - - - -3 - - - -5 - - - -6 - - - -7 - - - -8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N3.0 - -N7.0 - -N8.0 - -N0.0 - -N2.0 - -N5.0 - -N1.0 - -N6.0 - -N4.0 - -N3.1 - -N7.1 - -N8.1 - -N0.1 - -N2.1 - -N5.1 - -N1.1 - -N6.1 - -N4.1 - -N7.2 - -N2.2 - -N5.2 - -N1.2 - -N3.2 - -N7.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s2__exit_right_1 (right) - -s3__exit_right_2 (right) - -s5__exit_right_3 (right) - -s6__exit_left_4 (left) - -s7__exit_left_5 (left) - -s1__entry_left_6 (left) - -s2__entry_left_7 (left) - -s3__entry_left_8 (left) - -s4__entry_left_9 (left) - -s7__entry_right_10 (right) - -s5__entry_left_11 (left) - -s6__entry_right_12 (right) - -s8__entry_right_13 (right) - -__junction_14 (?) - -__junction_15 (?) - -__junction_16 (?) - -col 0|1 - -col 1|2 - - - -row 0|1 -row 1|2 -row 2|3 - -row 0 grid - -row 0 grid - -row 1 grid - -row 2 grid - - -row 0 grid - -row 1 grid - -row 3 grid - -row 3 grid - - - -row 3 grid - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 - -Line 6 - -Line 7 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_77_after.png b/review_pngs/seed_77_after.png deleted file mode 100644 index 55d9e3996a5f4fad079754d0ec5584b2f840e70a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234174 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

^_n+f;PrFBQX! zSDofIwnA(kaNNrg@21aRCu|u()Y&D%WME(*fmF8~kXq{vky0-=qRKZs(TSIceY2@W z^nUk>KpQ1|FttnVH?5};hu2^e`o9}yU;cZ|{nk>ZSgTl%vt8OYkyo;myOiclyV@X= z9IuhtV@g7UPy)Hro7tg8bl?gv77KH9SwJrRy#Ccr?|KPj%2^kCxSOSD3ESZothhC6 zM$^P5#;qOPh-0x0!ClLXpNo0G4}1?jR-RF$k*Oz)r>>$kKel#(3v=hp6%T4DfH@*% ztz8tnQC|P-44P-1d{-)IKD|(yrWDPdHwCV0^Ej147><6im{?BE+g|&m*;!}=fXxFG?3FUcD0Y0 zgkdiACDX^qgn46%)Nu1JFx*=RnSw&5Znh|EXLP@pNGEr&vdGncf46t7zbMdCkCghx zD6@l0hQAN54mzpj6LAFL{KkYGr;P#?Zs6b>C@QI;izb_h@O* zSCvJw$C7GBG+++y_)1`bQ9H=i&a2Z z-EjDf{VHa{^%ZRZMX*Wrq&m~OyPh$l(rb7q9mUNz#ET3`i7k;YZ?eXv-+^d@hb(uA zjIh6!SYGr2rmfxg$B6Y>QeDn~bv?3D>I16_2GgIdw^kipTwE;RP}dB(3r7#xKpUMw zO=q}kY#mE%=Y3L&{r)H0B+B{6P+QZf>PvVAJ>RU_O~aCXd2-S@BJ7|nPuFNlZ4GuG4T`jEd&vGzWZ4820662_V@D)wXaZJtl0Z{yFSc$Df{zB^E}3Y5`$ zaj4w4%Wo|9k7tkA@S9C!Fyo#;0N?tLVJZ4xWrGd1;j7K_7Dn17_a`50#~5_d%siHH zR~X904C-1v24-aa20CD59$N)Pe2>fp9|S=;?^12-F_!W9O| zX5IGg;Ful1Q-cxhMFA*TkbJ5I_^HR&SKqPKi;DQX-K%%zkQ)d@ohsc4m7@#~9JOJj zbOxV{h#nb!=Fur~JDdkcMz|~l343~bW9<|s*sCWZ<+IK*w=ll?QL)fFQg5sGJ4iy+ zAm=Z}8UkB9LjXL*)qpa+4&|$vA_4Y8mcQIsMJ7@T3*h(uymcD7xkb?M~CsllAi;?};IK?DvU{>UM}y1`unEp$g% zlG*QYv)zh`Ra@=|n z9UFNKI3dyFaNhn+h|P>{lEx2upaUZ@I}K}IMsJL|QDC9&R zp&jfCGIz{$fIvvMo_tYrii~JB9A20TDpmwF&6Cz#=P}!JXwQSIV(D<|g(vNDV3#5( zoNWF5Av%f05uw^PHCj2gc)R2aC|p$`WiY9j$_YE+QvuXeg}B{2#4?5!>Xy&~eo73g zwi2fez>%RP?dWD8Inz!qe%BF4)>0RuWH6qX(%3{5bNd~D-Bz7ym7Ph6#WN^)osyc% zOQ3V*7U593+!RIWvx58}=deRLLZZUS!K5@R+=ekuQUphCSIY+43`p1KW`3uiu!T2^P$|I-Mv$DCFf@X`58iv|DW?Co0U%lsgoWuQ&GnFX>b2fh%md;?jEEGn0^m zSr$@;$e?~b9NL`V4ob>25t@D=;(ybQTv)U8gc$HT&~r0t7cvY};K*$16xyvB$DK>P zT^9j%xne#i9{b;%!NAOc*B1^rsR|Xr2}dw19nhw{>J;p<$tiX2T-+%#L?ERsX@Bn8 z>jqvT)NzCfBMiS8mYVJ90+bfu0|eW9co?JP5jfDh&U%ovMWMKF^c#DpF|)<^THK%D(*CAWTTJzd>4XuRFk3)RS}QbY7&11sGjb70RY8%G5h^8+YL=<`fDV zLa?Wse^XaDL4H^FUo@aXY1@zdIc-3M`c4Ej+0-eh_bEuJbb&{t{CpHOTV!RV#~clw z#oHP&c5!~T4&)gD#^c*0Xc2viyaX!da!l+ zvu$b8Df8A+3E7r3$U|m?o`X|ngpL*^Vll8ddxCO@q~A>LPT%3-F)4>pV3Y3i1(m#m ziWkT*^htee@>*6nEixsbDk^Ll1Q?8A$|YDSsAEFhSWWBHm^?4b7t9Ub#BZB3pwN~M zIru|3GxZdiPQs^a3Rj;3$49md4aMFnh{;`K~b? zNhIG^O^X=ltzxZ9Rto?RDXS)&jM9lsbXpY6i^K?m3GJ!D$4}MZDFAUSTPI8~3&U?m zCcJSgm;WJ7UTbCZ1yWl9p?hX5;Ckgan+_3$c z8gMSahWWo&$fx<^UilJlxH_EuLR{Ld_Z+Do*xw$UT zowfE6zsh(p_j!Bxfu3>dR2pe%0xAw>Dr3mB&_KW!1lJRkKabZq4K#O6{!+nT(3Jvu zISyj9g3(biiQV6pm%HXINU#0B-{)RfuPZPTMA(NX5bPv{5T}thRzC*vaZd^qa3XT6!CIQkBkFd0UEZ4@J zkKEKROu^zRw$-cmlK)*(qN7>Qbtlq>6BmfhYt^th@mqQLHpKBdU)R^yqYN&}?Gh=~ zcuEa^UI;g*pWX&j@v%6K%u}r}nU8~$wW5$B>wMwSIs?UV{wXGynu45Kn;<7*CL{ zGKJ56up=-w@bm!%_!yNWWn7>g?bR?$Pai2bQPCo~Lk8cgo`P;2XhTxd?aw2UlOWGMiCV#@svAsN9 z$Xihg6-U9aKo^5Aj2Oju?^J!C!||s;lm5$7}Em< z*Aqy128|49eA!tOV#~_%Cew|(TGLyGG3fA2>Od6waE?aT-wUx^bgO%av2S;wLt6@< zM$``5aT1YPO#lm>#n7i?N0ak^jxD_D;w$3}httK1c4@x0h?&-cW=!pqYQBDS9{PNu z?pu)V@m>DY629cIMA?-;1?yN{sLR1V0oNuwaFHcg%}x1=9!9 zH&r0?-)*lioZt?;JEF>0a?m{PJH%({A)W|mTEblwq<Zs{Tt5y5#oU zIS*aa?|tY=Wb>p05HXv)|B9rE%XcgLLm}vv_4}J8#GOt<> z-QecnXbV4l%K7w`0E7-QTWBJBwG z5^XvhJGx6hxTOKVCXbhxT@2^5^9BQi)2uTsVqzSO%k3Hm{Y)Bm2EK>{rRQbKUxHSk z_t*j1B!6L2P6T9^PB3#*2dEg>?xbjDqx1T*6`+K&geNFf7jZleeNx0sn_yALUhL+( z+G)w6*_5Iuj?vAHD|qEd944#Rn)`QZQkQ?0JM%iUK}BoVs=$r4F3w1+d$9c&(5L+1 zh??7*3Iwog13211@b3cCF+cA6J7<9QUX{M##q-z7Yfw9GzzYG7eAUrIMugD`_UGyW>pw9lG(cB?-Fjdkn+>R$pGi)2L z6sfPmf!Ap`wA1O0r;J{uP+GA-2_y@eezra0+{i*Jm@Yg3+bseOVW78H!!7b#8 zQV@q(T^F1?CEYF0Mxe7^>d8!kW>oEzPqdmf**#YC1BMpj8sb? zC<)1aw5<6|_c9iX-P+pfag-_r9wcsB4>YGu}H6fUK@lul(y!vP0r0Mkh~ zqT_Kk5eWXTd9T1{f=xk=M!NcF5PSP(%VuzO`!?`7yVKe>@|@Y}!Vtel779G)bntcL zgWEjFFMl+S;SalB@;P%0FuCs(#JDHZ_uklo!Z(07-t*vM{W3t-wF0mAq`h~l1dfE| z7zmgTlHMK?Wx^y1O>igHa56BWmDPc}I#{_EEqw3(Yt1pL_UAaveP6qm4jN4E2~zLH z?a)g1s!3JN=#CFa{?05a2HfC-ZK)t-$q2gx)8W*tEb1*w-*E#jd{3g_kBZ^K&?4~! zKB=tVA*th+Hy66$m5QLZyyvU;&ik9lo3DiyMck{@!H9rgF#9Cv_h127;5HzCYW8D* zcAxv1y*m5ZKDoh7GHEh)iPiz>zgF<+#9)GD6^3a>_lTIwIgVg|@pG6rW8t_POK#Mi zZ$_rK4vP-|a6U(LCs(dIZ>ZT0(fD;NrgvU<5^&%1GT-N&9jb6c{SKZ(q~2TSw6u0( zZ2#w<%M%2b;+XYAmUo|F(LlCSiF(bbcKJ0$Yn^jUHUvmk!a zl+tX$Z0(t*MtiAbiMv2~^qV%BriELSF<;>Bj>XqNvi4tJ6lt@>Tr=Tpvoxv`7RcYm-GHGq z3ucU84|-kL!5~v$gXra)n_UFpJO^t2&W^0s?>=5Kc5Goy>MnWRx3tJAc9@_XTk1~t zgb8lU9eAEjKRizvt$jMGV2Z&%6KS7e-+=pZxayauf@neQd{+H3y1!`!iX7U*L^aFn z*MNUY2hY9T|K&H3a&Qx=Vk)efD z_Woa0x&Ozz2mKgmC zo#j8t6D|DY807ZDR@XsI5J}$lrs)LpQ z%5&fT{Wj3FK|3vYUG}&DJ~zraX=KL052mH1IS2m_hG)AFBKGauXAM6Ik7$(nVMEFa z%fx9$hf*X?M&UjFjfX2OG|91wag39*131h&j#Kw*S+BM`>EEA5`DR}~IELAZi}tec zK^}TSM`BMw{Y9wq6d2{Tckk#B0_g;bq$Q z2mV07N7L!_Q#J06+r?vGebDwPpt4)_2s_(;xF0Y|e8CB*;biYEfMFGAQE*v#^m7bi z-Vb6r%o^}}gIk2qVu5Zgg~*1mTJzV&&EVEYI9sL`WzN7!?2X*&z^1P^mg(qt8cesW zAjmv6^*-^LQtprY9F6HAY@`5JeEoW031NcyeHplz`p7zP@gK z=Z+}K_v~h3g4gebZ|;(Xd9+@RfnL!7`aC;$KtMUYKDl2*>OKPtLy;|Hj}BEwtf-35@`iQwpaL`{p;CgIhYD|8SpL`U3H8 zkVdeBw}e9JfM_m|_}5%V-rTf@5fD->@T~-JgHZDijkt1<#?~RcI@5s$1!&|0b|+%Q zP#BM400zaUehp4>K`bo>t`l(vNKrvi@uQhLlFhIbNG`z@)o>laXqiBB2HUO#PC7xw zDy)CJxJRp0r&(F+Gc4l| ztLr%iZAd&p{lI&jhCz;2>EMEw2`0DzkPpI0FHD4NSH_!6Awvt7oAvqgpLa&hPE3xA*OIl4oU?c96U;i@D&#QD|A_Z8Tw7HXxzPrZnV(Br=!kxH*TC~wAA}+ z{s%LH*q?)E2hMjp;x%xV(s8(=VEDw24i2b4pd+TRtOD_&obnIWv7$At>7xU~!^sdD z&F*)wfjKSjuD3!x;7FniCK7G`Ig@rMzgF2W{yUm8La@K><40ZO*8@DD&CgWOeajl` zjlD;N-lJ#WG%UsP?PHqn*$ICtLq2~4Ea%I!;9#8^|Orf5Mk1Rnt@-^ExQkS zhT~+;O{OQcuCSD*Q}=R0P`*R8{MuPC885?6q0f&wbLchK0g0fizx}IH-t5yAh%bSI z8wPp(P$-$hUojomz}c~ z2U(s3j8^0FG^lL28G~R;FDDKJR2I+(c}`5C8(=niO<2?f2!l(tZJ=RYT#AB^#;E*Q2sdG}0vj6v-8SGezsc`+t}F$!`OuzSm+t(3?7d}N zl6Y#g1f&~;Aq1pjBu8@I^LFjE zmwWB!`SAaLdOy7U`0X{am6`j#uj`ECJdWc^@jf^;L%LlcfS5P9R>i^6wih_78->J2 zh~mgX0Zg@mhLl_>T`3c0o`v-!B zGoA7AkX(SA#_V&-?lZvMJ(eZNTR94xz5WFD9tsVS#DVV&L4+sL8X=H4tJd(c+}xEZ z+VZ;xkr%1)>^R6daj@!goZ=%I*P5WVB*k<<}>mCt>? zM%NN8LKZuL!mhEj(Lk(${z47(lJG|GoCuNp2Zhl4_wOxz2?=^FA?$9tR;@?BENlMh zYY92xXcJ)RYiu8H4CY3_9U%T)J<|#|HF&AIjLch9AO2yxQ7=jVvAeKLg7;kJHgLF9 z?cCJvC-5Y`ogRi!YgsPB`{2Oyz63#pB9cLVrRov5;xll?_YdZU;T@&d*x1`P znP<>IvPg#Er;w1)DCtX9g};ZZ39UX>22O{WYu`it3E8fkrcnmnR{uhJ5E| z64bN9=+~C?lAr>VV@T4@brLvBaN7W88R(>vl9JYUT_lYn_Q89-TClMzU}HzXqrR3i z^!B%>+~rU&t7*v-trd7g*An8LWs2}|*tHekJ4F*USzGhikCDh)(_Av+SSPu_9$s(= zdeJ79`u)pxZ&t}h>GAeZGS0BVDuT+}?zI^Y{cnX*8^y9?1%{5GjS=$y%X{xJdemDG z$8cZbeZ})sr84^$94Tt)cm#{l#$>byIRp`J;8#O5_+LKvj>wtclqG-dZ1^w#Z*|^p zKX&%}t!?`4=d!;Iuz&mUH^$#S`foq~|61dn{hvQ%+;189x8Gi?`2Rlq|7CYxqU`r3 zz!#V`4->m7@^VyJQXo@>X=E!yCkj38D;~%O4UhABQy>BiL-P%dKUCWA;zUEAWeK!N z0%g5ByR96*R<#*lEZ>@D0@p)cZpn25VEQyHRsizr3}LialbZnZjGIb}*8Z z4DGthmuX&d=y>vBHgwBUqEa`yFJ~)YROf z%U8}!R?ZAC zM{uFLzP~KlbR8)=%hDma0nnY%{-Z1%X4Th*JaWvet*!g`G9KqejE#+P(0(ncdk6r5Ua0nj81JS7;)td(_oup-t6#^^R@KP_O+RLVxtywoI!s7m>OH|3(7pPxt20{9)s#4!U4P1Y1^UmBj! z=nXtT7>{>S!!m+09NMAAw!G#Q)H*N$;F=IGvABW`erBW+g6jgFZv+BkBX}_V0pf{@X*Q+SQ>wF}lmU%t>k818K^{kp zF=W6ZpS~GfGlzbeQgcyG@sES60Ho}u5o1^kI0rz{jZ(UktN(o)z17l3ErZlmplN`S zZK^7Zn! z2$agnN=(yWMB5Bw^?XpBv1nJ8_T~T(vXx25{zmFPzTcb&8WCuhU>k87joT$y%++`g z&E4U1EUjIBiZoS-E37s^s79c`focf`7eMQ{&k8hk_c>A87HAX{GW#3%V%arg@{}_T zVd3P@Nis zJnZA+10QIu%~<#rV#N$5?LrPZN4@# zKxaB!+R6MVvmZFk*K^%Q7q6ey0DfR??VZ$zQ({{u2x=!%N0$H2Lf$JCYc0%npi40V z&%#}Egtdx@J7TBF+`kZ9 z``VisDgmlw1i>6}2h7cPaY7K>SShUnmx2EHYm~l*IEl{M#qVmu2!AcCr1BbK4vhW| z*1}SGs??hT?;-N_n>H69pU>VOH=@M3YDNId7l=@;pi%7zX(eZ_y0!O>VK$$DV8-Y1 zZ;%Q>d2UUOh!xP#aF`h|m6rw}6>R{W5^@c}^srIAa86!>Cb%qPq0IGih}+sFm}Pnd zPmxkRq$}Z{ikBeG!2)Dy*Y9k%B>#X0c%^81r0_i0vcmH;uUsi98FMvD)q)xyX#nV9 z(IggM?L=hl?BwoqR8|)6zwbPICNz9E z5j#ipugQ)@$!HidAJ#7x0)#^#7nxH0fgSb2@5c@z7Jg-#kc}t`2wH)5d+USuRL!mv zK1cB@5kVs?C>2ibUrUMkdX#?nO^pGUDws6=QHHQOV+WxELyB*7yzGt1v?HT6*C~}MWGS471GZl79l4Z<~7d~)QLMjO_k&^Q3rZ>~)fp%LedpU4 zk)bINZ6oMmK5EEXv6Rn&xd{Pj-8GBQA88O=L3x@u2Dm0;xR5@jcRI(|!J_Vbjd$6T zD}2SHmZ`teU2^vmdK7Ys05U*tL&z=k6<#8H+wpjp*;{VsO0HKHkT-|3BCVbOspJRewk zJ}AP#0WGteaW5bFEb}oUh>QM8CZuiHC6dVssB|U%h>wRNrW!F`*DBt4!&m}!fe=7_ zyLK_#rMQzX?;$aBZ$AFO1Y%MwJw&~-2_GtizjJLUHW;@jB+qcR2k2Q6$+mKTM$jR> z53?yup)I8+84jB8KWPg9=c2E8b9V(8(~yddzEOPcFdAJqGr$Wam+6gy&hdJrixW-p)JwiyXC21xzYr>AS#50P*zjIACXAExzU6 zt|zz)J~BUk8wd~}n32eCfykm1=R6im+i%nf4!*#qdWA!lLdPQX!mvCXiYoxc>xc)K z2x7qe&yxggccJBTENh;FxO<*c!|LE7pNbwN+3C+QxOD z?>Y^iJNc3rc&%UZfV;l1=ZUN%Z-a$SJgxuJr%yY|vfzK^Us4@{(nGL?9Ql8LeLX}Y z(*73wwg~$T1sJBaAY*9%jHfNF#=Katy$`jCJ?Ds+EShn!>N!F&yY=gJ+v zE#TjELT(%BumutUv-YZA<>a|sivBH7Cj5xt;~CQW{D-%P86*g(f(J-~RL@E&Scv;6zw^#S=qh!pD}hOleHK^53J6Ye=5 zjvy37r_O%|YRmj992Nk{y&t|JBUoW6^+UQDG->##laR)9_~inD=A`(51x81L>ye$* z1r|Cw;~`DQ*j0!xs8_<{KyIwlfEL7FgsXv6a)8Xjya6dhK=hzEi-4=rKxljnbraDA z&9~t3DS)u}pnyl_x(Lgy9ih&E#cq}2>9sozlrR>9Y8S~yl}m$!(BY3K{JpqjxKhMGZTUKL)8n z>AMEJc79$k{(H4qfBy)9E|YX2K8gXhW;n_0SNf@zJgDa=aiC@?rar}v(mzMa7AjE& zN_ar20H}j{m9#XLIj8grazaKdtREK$39@JeIs>7e4Wg{0R ztyi)FSaE8ip%F0vVIP9vp-1%{V0*tFULWbRUd6!yIy#U))0Kdm-Mf9OazD>=m)MT= z6oIZKGjg=irNw{evo7R7q!y$m2O1IpZ$@PRD+TbSiwp_5R6}b6kl57N7=X-n2=0%t zIv~sxkDp+1gBdaMfvdD-i_}MrE1<*b_)ZZ)ip<)fDnfX5C7AcrVH-NsOp4uJBsfMu z1B2s~((yZd+v{DofjOQJ+FF>$r(@o;zahDR84gEErYWX9hmX(^K*I2}bAY`7@0}_X zW+?#lUW9`Ty!&eS2c(cBTp+QI2~8 zj>S-r+=7g6;3OjqM`W#0)vQwS!3%y1phJ}-^v^`$Q*EqBoe4%g`7k_z!mSK5Vg2eN zzDs&d7UtcNriu=hrZ6{w@C8-jpfCm|Irg47V$3>khgdr}bZ0A@)x^^Zk8@K2q{$AD zqU44b{r22a_3q!3zd43b34q%4t5sOe!!iPFZ%d#%S(DYN7%@p40g*@|f+x@qS;=Ql zIB!AAwSx12Qa2q`QcG@IkM=T^n1E&r#R%W@9llHeCg9K7x!7AGG7c;ak8R@1)B}kq zFksgf2{d11_A+Eu0Ysss^&N!31U&07`euYsSW-EC6NQF7SOEPRM?GFZb2BB5#Y^ea!0vgszh>pDjW(vh)58Y-4`_Yy`-8 z^1(|`i$K5b=vO-O<^zs%3e-M;!z;-wLhoHx>9!yb zB{~vRO^d`mJh2YDx0K~^RXFY#94<8T5JmRC`h<0)_}VqM8#YOuhOj4zM#f0sNP~ZC z;B=`Pc$>B$Pz$7Nh5e6QP=h4E$w?2d`YJ)gEw5T5$6$X_f{f~t$kGt#=fu6- zHR>B2uB#^)V=ah9#E=aQ$q*l3B@h&xnX!(?S4)l#yJBUGWiP+De3bCWwIlZ(@7|&Q z#C9^!okr}BLx03xJa*Uk66FIUaiyadj~uK1QW|*Bc=rhXafWvd$6xD(5)3^wUY2o! zL#!OI`}^JL5-J(|^Hr`cLbO};8FrmzoAbfdk4h|U#*%f})697^9IL(*FQd&ABc)Q7 z?4H&Ad{*a>v!APSPIxv4)D2oxcGM5H-K!_{&kM87X=sc$jo@7`KqS4++A;TcKt*0f zT#@Qkx=k(oq^A0mBoiZx->OGV>9?ehm&g-wqiY6d7>ZjL}!=Y zq#$NGef$f~<63ZYewRl&j^FS$^$M=lILYJb-Z6n2z}+#VyZ3w)VGBwS5kB>!^Yb9t zup?~EKk7lUcxSMYRC!R27Ad93kE!e;m;Luw?OO^Ty4L&*tv`xl7zx>3&hQQ z6KaMF7_i3RdPd1%3ZoQyuzj@b0mJHRsGP+Gh=aW_*fvxPTidR5A0Gr>yaNyf&o{*Z zE@i8wGH&p7q}`h!G7 zwWzT0i-T4bu&{Q3mz)g*DyCQ&U@PAHm*t{2s!q@uSp@(6<yysMa~9k#+evz8bDhc&9sP0X(+{LBo~?_IM~$bMro686Sewx*rWb8Tmt5YuoNa zKh1eE!@|xZY};PYFscy?7qLkCQro`DDVw20ZZP~(xFJ*{&fZY;(t%Tf4`{O zBYk6IIY?2|unSnwJ6LQw18lJ}7p!)xbHR{Z9^AVs5Y_5Da6CP2Fpy*Y=p1tv!;XB5 zOi6#jl>r^590M0+4Jo@W2-sdAX6kUY9GZE#fa6JmbTd6^tg8{kb()}D_z3<>^d@jN zP{Z=>F%j3eRJal_DiMcm(6EL03n5da)dP6;4j_7vSRip^Ig;=%&%B7zSYIKY7!bD*2CL_M5GR^#T;$So4JwrN{a zOUqveW0>#ugjXja+Te1~Iv0VuG zjx!#X45QEOEfV%+s;z%HIqN>Y^7r8FuaAiQSCT<3`1nOU8kHd{7 z<@7DONoZyVupLh~ny9s_0Ac~M%x!n2@C0BD}^^zjfP%pv{s|KBl> zDG(ysD|-K5wMB&B|F%TFfo4Y=ruLfB($a<)fYPDu z&j#4Gm7N%lG`L45{4?R%rv#+Req4i`5D04oz40!{T?|aZ!s&$oaZs;t%uX8n#{Y~` zUK-RV$`%&c049r}dcagV8?4SV9*>8Gg-tFyRV`}qLs{sDGj5Mc2DM>hJGAhtYOly^jdM8g{AwWu;mBx#^Mc?+@g! z*WM>sBc&Fga9eN!dyDZLc(fAe58Y|t+VI%p+hN+bhHB`fz(CSbpf2kxFtcm^chp*> z(xg23GDPb7W|t`0Jm6EzK4>0Z-bJX9UeGt=JhrQKsHbkr3<-GgYzWcw$mEg|VHzkLkdefVL@1#2TPd6OEVW&GF#7_gqZS_3WtgkEO zIUpTQMx3cuohy@QC~}7}m`zZ5r8(n4z~2K!bL&oW@BF02IL-n5uor+YJ_yH!-9#F0 zHcKe%A|Wa!_2{?eXXSSRFWg-oL}B5`a)n_6ss}o(1c+gIUsJJv-9#xVcNzr#`}<3` zZrwx2M^CB3pYhFhF6#_!MConM%s1PRAZx`GZaZlK!rrhPW(ap=dfmliyH#h!NkmIa zYX{7`S?k#m3t}R|Ll#gfQ}7H9BC54R{f^*xN18^<-h)IYWN)Z{)P2g*+5=|S^ZCMX z8yYY`-|Ycktv5Ktn_mkg@(sJ-&(jS*g20e8h6{kk4Q4fIrlzKTyI;%fQjuSU>H(?6 zCbX$2bfH1>nf}2+q=*Sq@ z4fWOTsa#kmlhUNF>2KIO92||^y(U8RQjWQo>x41Q{WknrLm~t2ws-wpI^tRF;rF#}hYQ zZrNY~%f^gPuI73FDgPs#>-NBWo)6Qod}k8nCw9fq0|IA1_Gew5+-+GD{h5X>15U1Y4&7$z6@Iwa{)a$!d`tO1VMY5dQN)|sHlwU4SZX`PlZWtUcbdMDwhDzp+q=EW>oc^_$Y zS)d&RNzmR$M3(4>iFaLK1U1Q{{6DigQgVazSrUz)R+Hm)JkkAtE?+|#$2ur;Y}i1* zHVh&*8!tqkw+a0(Q#`=ZGN3a-H!V_)JVf^AolRVsn{jVGK zY}Tcr;SAayNZ=r+?&yKDH&dX52LF^_Sp~3-Yn!ZTgv9m;4$;?Q_rN>}4OSb6EXJ#~s<9V>?EHymycXDF(g@$k1lxV#Y^JXA z60LCPPFtpmAVzXAt+QI1Nz_T-`om+gUUzMu-uafG_r^z$fr9u_lBw>-DD;Ku)$V0c zQBf_$0GMTKSE)mr4w+It@9|3jRPPc!zZ(lD$TffjX%y=>%Z)(XTpm02s2(_}IR{a+ zA?2DuR0@*1ki6>(-ekyPx(Vd;(jcHRWn^Y%I>+O};Qr`a;n}QApFHV;`Z^Pk*^Kmb z6zqESD%T?9y&9%g(Y45#^15C}{=tpC{-TcX_3*H|$27A}w@GTOa{fLPg#Ab`0`A%( zSnlTY^Yb6qpuF4Wh1|Z+4XYYjZ6fStnR( zKSh1F4d18Nd0XL=K3m9y*n|DNkrkT60}28Oo3S^|m;X!&J)puCQ9?kU5;O2y1s|!v zKQqH5dYOiXrW{UB*crty=GNpO)?eVK@P-}*&SHH~TDO{(0xtXpC*Aw~C)8bO&#LJH z5CPgI41#64pUiUyAbJL*+}Q;6ktlMCtPSyC7TkxAB9oQ>o|(d*2?(a*7R%8|P_V$F zE?_ahmfKAH#RW*ug~Pq?f&?*0U0t1i`P7rTE{^|PQZu`rtExhvdPjmq=*uJLZwDqK z$nXwG_vLubi`MVS(mbt~QJ#BIb1C|5V@FAd+U~l%7d1ic=kU&1sMP|_*PT{@R3+)z_DVoU7iA_^cO}nG&7r zh?;77NL>@B*Bs-p^d$6lx(f|evY5cS2ov#UVVnGQ3VGeT+26x_qo~a*EDw;@^zc*IG~#_jotJ#$-oTJkA{ z33Z8ym=x={+S$~rnOJHa(0?6{(`m9nB(00cTygY4JsszjfJC*07vFu%iYi=+*9K&W zOdXXfs0sS(W>xxwWhJ+zu=rWDLb=Amtm_HyclZBM@9AnXv!o#Ag~zH?r*jV$ayO83 z5`Snq49cqTaQ-0pVK>*&k^{^}}SR zC`nmZQAKF=zzo}KQ*yILCX1A)9x(6bPkVp!=1o^{YRZNOl{H>VOFZ&%7H@&2imkg| zTDM9Y<0(}nnf}F}>x-cMHp9}8%1pzt5X{ddh9xQjcKKgKrSyEqU%4F>e~&_6CvfVE z4Ygr`8YF$cS#PKXZJ^1`G%w!c_tB$(jMXx`zQ0n>PRthwrwNsjo+OwGvHQ+vODdwK zuo;)SALlrYGY`Y$p;mGRzZ<(|D4!CK2NXascWLCk_4vBruZoP%i{j8r7m}mT!ANx| zp%HOt=mVcefLE@Is4_n{Q#M>1c5Ba=kt3Q_E~6lL)G(_uCB}NQVK^zLB&kDM!Ca$= zneh6}gNi@FnZLqMZK)B358x)SjE)Lz!GVQttHrUB%*@Xgjq#hx1Jpzp(;J0^xSx;<%L=3iE!Z?6xF$RcwmJqTn?7ItXLWwGU2wrWHCvRKBcm~ z@i3Gt`R8^PJv1L#?!1bXG_S>u3RS117}2*z+U^{^Kw@^V9(mXa#ywv%t-eh@4bdc9 zY5GKXj%-WyrJVS)i-&X{v)?N^Sv94gCcU1iCBau8BDBabbn60h$#zgn^;-0#gS3>n zhiI&Zy1IQk_uw3i``%e#-#9lL73_@T_jN|WL&vXa%2um{{to4Hl~N<_ki|y|<7Ue4 ztbluZf4JH6ZdP(V43#T*xxq=P;)-t1<$nMM>~xhd6?%RN8DmXa@Sdh_wk05_|4!wT z|0xZ=l`uWV&vWkxC*HZ9e&;$J?DSw1(_85l`(w1j(2se)u2b16YRb?;1U7)anMS34 z6JQO!n33toc+806B(?2_rLdP0!fv^H-{VYGUg-VssG;a7wVt>)>WHz30xxnk5r}JW zq>&jY8Ig2U=&|eQ636?^8%}2N_WRJA}~_5_{)!xyFpH( z+-ocvj!eQytK?dxhCXKlnIfeaE*xiEd@&t8@WaWRqJ`)ld@D#RHeY9szv;unADI+m zF5!5cP9UD6K&~nbfnaac#Rl=ZX77X^h~(nspH~g;$ohsWFQj&qWpUrbZ60pS2@XhCJ;z zOCPlfuznSv6uM_Goqm7w|$`qT01TwTpy-g?9GZ#)AxyH;u zRHslXpAmmm?P-e#iJ~iJ*R{#q)6snK$aT8^+JRAdPI(Iau>;^Ukbw-Q4^s~I_a}qZ zmNA-MQ9+CM4Ux|kon=DyEBBf$Bj=rqS}B~=mtq#O_^UqJEgiPL{(LAfbLLI~kNK#a zxt+8|nVgc^jeIQr@ZIUyAFl*c%mgHc0u{P_(2l+B%x@)IJ5sie-rhROHyrtbiOnVU zPWc%6u|*K4#a7Pmhm)mDdrc>iadt@odrjLI5jNsTadx&N(Ns_2 zoeC)V`?`6ya_>HUi5<#qP}ynFL6vPp3_eT$gp<5rN45WAK-ZofPe9-=r0w+}Qm=(? zjfL-&YV5m>M1yVHWCiF=1bs!V}BwL2pYjL5m*tsE6A&)$lA=Ec`{2^u6J(;uz1Cs#Khrg zg0w5bHIz4q6*Eji)q_HeXfRaYN^9z6f)z%4a#WhCg>}!+{d3Fb{7PJ~Z7#Xa(b0hW z5Yk_f-o75*IuFJXN`hllQpQm;sv#%+HH@kAB_)kE0A;b6BSH0?xN&6T`D}EEo!SPE zW>|Q5=#nzSkXFx1RPmb3!!li^AziVu+A)lbD&^A#pEyHi{eA}W4EYbT6%)Jpw)5y8 zjeo|FiL!c6O({=bZ4t>^W8<33oQ>JH3bTfTmI#kOM2FfD6?e=xrMsTkbC=X1zV7f zVW`E|&_S)5j@@0;2MT$fyP0Z}h!rYvKigC&0YSLuhrG|1hFL>oT zd7?r8gag(>GL^HR)kW%Tpj|z?Jv69frc2=SueT4brKvshg=2gLqS&ZGZpv#ira{$1 zSr;4!lq&#@YxKdQR%xn4qT|EP$6RUW(@wto&By-pu4_#MI}My;U;E<0KP$J9ThfY< zFL547FFai3Rsu(YN&wKDUk!AsUc?2_6zqc<@>nbnTVL)qvn{t(t2i)|4leIiE^3Vo zVPRuq9!=CO=VI^Um70$InE&ZjzKqzAZj$pjuMchhB9+gYjH=6xtR#v0tt|IqifN0*R$otgoQzeO9)mcB<)lF{Ofp!qHae1x+fI-3*y!)uH$9f+FIN z9$x``E^Zc1!aclYqZMBJLB4kHFai6P^FED$(LT#d*`H=(7R)_s7c)obO+K z&ykbmbxPgBV{_7VbSwIjP)*)O`G(@+Eq)6dIjeZ`GzEuaM(RE(MLeeJW>elfv+FsN zZuM09qc#oY#y@i~9-NZ)_@nj%4 zW(9c%!y_oUt|z;TtJf$jj4@U16Q*Om%>FozI@S4Bd&h8d;qdj_{|sW}&kWUIdR2{G zgi%8;Xs{f>A7BpL-4wVe`=Qm^fNp56q-H-me`u^hD#fIQ%a?Y8NOvuhtgL)5mS!jZ z0##wz8zO7{h95#ioG0M>{%+x}4;}Amg~k)i7yOy9FG5JfLrKJ^Bd?OD%>S#jv!BSB zo<8@5e%jznet`+{?+O@)hWcI!A`inkR5rxx;=QDzipM&)o@8u)cIA#&&8-&^kQJcC zBue8f6>U$=O3mqvzx@DXHsBlYyam3OGdB+pz$TL5Y8Jl%VP6#tdeu2TekoQXuiUUow~u^ect{3igU;PYswtVMdLkmva7d5MqTwEm=GLz ziA48_c%)TJga)u+iu=B*rZzV6qi!AJy8iAV(35Ly#R3S>(X)>?YGjoM|p@?nf}{+&lLYAX3%USHM{#c zS#27JyN)9rb)Kn` z7n!sqb+7T2ASWPm4%0o;vx>@d-zJV4b@jE`X>d&~8CmRZT2|R$&QH6IbTj-xu0&`5 z5N(bbfJ$wA5t&cT_YMzd0H;?LMu5Baa0~_@q$^B;u%CTCso~@}{*^|WUj0WJu^)Tp zxW9QnHPAxq`Pq+2os}iZUif;}X`!00)t+wJ8vL5=W^qyPJ-VN$!go*Mq0P=&tp@!n zy1Z||}WcXrv ze%2=%f#v1pM0o&3^fN62xGdiF73%6l>pip!lgJfPs4Dk9;h%s&Xn%jzzIdz_hG5m3 ztTBu%&Wx86{$RM!dbE)Fk1WTFQ+|d!rpKoZF768XQdEysFyur!xCm{8^G^$%uMgmL z6lNBPf268)Z8^t;8CL%(WcB+U3f#Vv<}~q%-6bsB|52h;n)qwsWgl#7OR{7g)#1n& zS#dd@xRK;4 zY(j1;+1^dLEbzInKfG^jwp{R45iE0o05cnJLSz&tr$9kJ>!GVJX204x#@;v-j1#@oOD zm5zAyt>$;u7wq@)uvw)-p;Bf|TU(Q}0aKsy3TT9I$_Yu!?~R=nv+hsL@;_9xtNOtG zhf5Ay{o7~n-)$2nzthEpQARKHe^nCs#_?LrwB}CJSiGu}=Bl$Tc7IH+N!2N+C%ui~ z;OOpmq34~OK9|jLmpTFQg|XNG3`&m)@`SgV09yh5d7X_wchYU$Dfw;yx^KsEz9^LP zTWSHp&VMxz6Mqp4*!A{IG!o;+yOCrbdoeqJ-*CXF-P$qKLcmpABD*`rb5$X+TtRSL z>IhOctjM#ED)y{UrL4)6a#h-3J;o_KKjvCdv$K=%0oXg1(zX&TPC;-7k&h`3WSen@WlOk*-|2h$Q0MJ+5s(c}+gt(ysnNEt2M zR(-<1JCrn=oMb4!oE24n)l@J?IRKj$elEkE^_;nb{ZdI#ml?hoWr5f5%n3+O{ZZ)w zG#ncCq_kYbbO`~cHzD)ih1|zZT*vA23Pw`8ORGBq<(x8!`Asp*%&ICjZl#OoJoba% zaO;aJHY^7TmP(B8uE>6$8SQ4V>uTGH^oy~zKw-!`i{{^BM;;~nwY;p?qX8d!Q!6Wk zeRWwkGv)e+Cl+FV?s*bv2UGJbMQIDMcTcR`^c7<%DHoMgE`%Be#dm6+MwU~s^ssVPtBZ41iZ`K~KJy2XcQA0KsY`YO0K1=E*qWDg)bj?EtjG=H2049?D zblHI8H59JA`&vO3=XQvIT+`k6EarND`|#lTVdU&za?2xw5>* z$-x*M79Q9v+w^^N2^}98G>U!hd9gb6&h_{3{UqLToIT{!i_lZzej;i&K4g)HSp~+w z{E(Itx1(%mMwzMASUO3S;&^|79;56zp>T0~>6@c&M2oNKca5+m`^Q~V6$L%TkI>2} z1sTWB{qHUiap8o*Vuo8zJu!~yy;8)pFytjomNUS#X7QktzgN*46f=C((RkcQ zIK4nck6NyvUq)|)7#!`1a;Z$-PQ{pNDR{0JsQQd;k@+%-I2DgMU*=64*Zc6=H*vvw zA;~0wGcnK4L#i`aP{mO=^A2nFo$HJOyf)h5KJ~c$$z^1vJ*NaBtfw;AnA6gu9u$A( zs^Gcxp-7sDrrA3Vqs(mLydLy!+C{rLPhL0b`g?YL@9ksk!{Q5j4{im9QJyfx=;Rnh z4KEmF?merfXUiojbJ%IQAR9cjgkKSFF|ym~AoI-J)tP_m@KeAr*|i17al~h_#oCT@ zo$sQhjAO|&)}V*kS8s;5W)|E^>F8*|zT7gV z@G&*LnvorlQJjNI&B+mW*yOHScHqunE*u<8OX10onE|wJ zQO0qbkTmDONOAzIgKfGvfJ@#3LvwBFPChyUU4^-?a+G}xsLg^Crbm3d|B;daoXye8 z;aV&;RpD4U8^&!Ed(?q8ZHhRQXkf!|pgryDiZQvZKuOE!e))*j;`C-AS)PLb(R$pp zK`^9xlNzaZ_seOT>>1|lA7aSIsJ>CWGp3zmI}|L>uaFz(6A9sH&opaqk5_Kndij$8 zN$tY;#sQ1Fih7e)M96Z8Z%&)4smUsLyX%T^_enR3Cc;DM)oXRw^sL79=Q?&*Snt}^gwv;08R_NFnuDSAYGDoTL4-53wW=4>*J;P? z46U_lq`c%ev@;Zq+sATb-8ZVvl{ghTE%>TZ|Xc$^>?$dCAv8;_C z0YUIRb2Ar>eQFa-d{gy#-Dg+-(c}^kP!Rc$hYIZ$C}uClR%1}YGN+|~ z;?9z$xFc(#b!Qyfv6J+yD3u-31*t*{yIuR`DB0!(%BOkq{P-7kQuJ1W=Xz2^eC%6{ zADaqQ?zwFJa7r$kdh|d;=d!)SB*w}74D} zJhL!jn(0>YsED#D(fx8#+|FCqh1AxzS*7tJt<6{q&h_B+s(WT;i*E_pz_%g|2FA>B zdW_%Y=<}3(wfSXY3Ei?+aiS497JjpBR< z@WLo!;Bb5Q46w2ShpH^4J@2WJjuMGyl-HVHaiN0g(`*>>hhq4LEBd;}xDyV55%8Sa z%=BuNUZ4Ya!=0w6;k1RFBO(I>_s zEZ{>f4AvYJ!JZbrcIE`CYWB6}EFpmuWuC>f#k3l4jY4pj%R=kyFP33#kwzS!3WnVM6N)a9>O*0K5|V$FK3XU2e@x$kFm$bG`XzGeaCfR ztY>NKdwJ=tL9&wp`1L{I*_$B67tD%hXZOUAk% zXy7kAYI?G>k>ZE(DzGg&*v@NjQGX z@rpWB1I_~giw6DIhk|TkyiIps@SeYSX>q|+f{@0{EYYq0($#aFUC^d=7nldt8d z1tdXN1!LA2INXL0rWzU0tAPyyvRJj;z_~B&dlJo5iOv^^gkQkOFQeI|d}f&V z-GF+|k!`2LEXt8-arpaUPv54Bh8s!@TQm)x2yfins49AtL41{N{6>N>TVjdR!X6%tMGs0*EZS{ATIO6(m9uw>U`mvX_ zw^ij>xzCT<#;mbvG#lBKZ{qjG@#Bq^29G>fXw9ni7&zA1r%fpz;dbmeN8MdgH8U!2 zp1!m{nNn)blNz|i>QG3=qT9{xkG|Ygx17^4#&&2pPv3WVc$f=LpugMSjT`3j>C9)@ zu4Wrt-XD17ESTe5x#3Z)N5Lr_Y$r@m`#nTfQl`CnH%5g}^xi*^B7$0jl6gjx-Et%c z_Hj$Aloo4K>FnDzEZb4p@^5~;#FwH{+`dkdJvNr5B0%-sI2dixe0<=`@qre9p4O~r zx=ha$gHX29H`y1BnfBs38EUvKH~!)Rtk2@*JQ#u z?KuuAr#M}w7TK5wAL()I-R3mz#)L?2F;pAN7D-+Vcdv)}%MN1Pot985cI7?rtR>Kp zG@gX=rf+JM3dd}dIrFuTl^T6sj3$nnX;b7M$ljvC_;QVr_!ySCFve5$m43sRCVlZo z7Z3B|vmUxzf0}gD4lCyA=!?N|hZM5$6=-OQs9xpO^7IsXM zYs$6p!Vssr7Jj|tdWV*mrr&V|oiXGC#oJA3CWGSrSQDzM$s2El7$1nZxL6joMp&0C zya-Uzprf}2DmBnu?$^*gC4v;a1MacuL7p3lKnn|pU};fs);SG87jpG{(H-b@avqP^ zJfq`o*G_Pv?M*u+;;hghOtT!jv*sn3#XX;+KRL(WhLUv7vp2q8X=# zh9mtSRfIg>Sr27f)FPw4vB?)h+}nl8ebU9OGb&eAcT~4LT$v?WDXga6&%O8Uq6D1n z)(!fS1jOL?Fr^dVGt8H;LQPS(tbCr`?U48VP{Ev|B_QC#jW3Q4|1|D&zqhK8pHpbz z(&W0i?yIRb_u{N}8Qd4@x`VO3k{9Z-x5Z`FtG})37G(2bNuOYH9m&$GSDEH!xkjZk zgreW_zN#@9bnH{ad~oh%F^qjU1g%X!$3FXX%qw-rYP#+H27Vb5m(H#nv5&)sQnzy! zCHBRik!rHfJz3d{tY>@T*KBAvT$smezUjxDBS){`nWfV6^=leJ%+>+30eaLeqhbbX zJ-U6}fWE!mYS~w0-WkV-eP)W!9LuZmX-pG#9Xb)k?WEqY%vSZ&$8u-hZg}DWvnAPQ zT-rf<5vN^bH;ZC*lBPwl!Y$HADSEC$TbhO1qrR;2^;F3^y5B0!5#po|NUxvyHG%Vl zb+icM$!^T}!PfJ@RY6$%0`}yk3nx2VuCa4b^ZmAb;H7R~d%1m- zQDsdTa+$KRO%2R3Cm~M^H zK*wcI(d|(yhTRq`gH9psjt{*CFHCWmH}Ah;I^V6CO!H)4dOm(q{}a3avL6CMC}&#MkU)^>U(u~(anDh zM7B}F9_1j0cyTxo#MjB5(056oW%ymvg>g8%lag6X+el?*O~r~%kwa@BU3-m5lwhZf z?RHY8w8+<#`|=w6k^P+8BTK=1XntRym7F)-fUp=l!vGkpX8x) z2MNQvd*5iN{&O?kPLsNRD~m(`!408^MexdPF&2+j$dr0C^R^XI!4;q_2KcqZLg zUxEA7m21ldB40CvGAlBb&WTG*-0qyV{nZ~JlLs*Vh(g3t_Wapklp-oCvR^p4I>!ED zV7`6FH`iUlVe|Q^#k*x{1sV>$Dk6!|HLj_Xd7r&!YEIv--Jb9JX6U}`oTO#P8l~Mc zR#|zsxx`T^J!7@?hYcahy41u+eYu3s%nNx*ryljvI<6oqtAJKgQQ=Km1sMXGzUJgp zZ36G7n4$tv-uTKXFL2tAYcK@tl$>Fgsg;n*#L`clM>+01z~g^Ze4jT5VSZ^-im3i#?n=&cF9+ zd#ADFKpDSHi_aFxbtxL(4&Qot_J^QA(UNC=0ZUq*iCWdzj@2{DUGnAmw^h?b%MorN zn#^+fH)mh;JASb-opY8XS=KQ4sU4c}Sxnx!W3<>J8YZq_IF-Ua6v;>u;Fx{GKX`HC&M=`sRrMmcGZB zV(KQnLs;#X35{Ujcn^%}FB~mO*aHpFPz5<-5l7}yV26B$?V4?r>vKw=F+RS#^AHpJ z5%i+H_6L~qM;Eq2zEE-!Gn%`ZzAonsI55mqE z>VlP9X&3pjXhOTJL!_T}T4owJyql?33>=4^CcfEzfWa^I)X8>+?(E$X*nE0$Ot%i6 zyt6-q+QH4U$5s6X#JHTsq;6_*>D=t4+#I3R$#6^$?s<*nS6(NLOdix8O@o^0?3>Lm zob6TEQDQ>M)Q>qLP1A<%k)J&92M$(ml=D8kri<`18<=qz7REi9KKu!7QLUF&U>Nt9 z$77B=xvd4uR##DyX0+bQx%bp-qDS@k zvZrKo$+faugOsHs8vKPb{FgtV3&?BgCj)F;`!%vspa<~Bve$w z5irC94*H<%f}Sule((E@s@=EmZ;oR)Ou1!@Ue;{uwTnExo%rE~*+MECS6I<87M+4c z+oZlEr>%*OJ=`Hjc+uAK(0dr)ZW z=A~4xovAmjmfZh`y|)aja^1d%7X}t~5F!{0Fc1+@8Z1y$KrBE>k(L(eurN?iM5Hkg zBm@EJbfX|3-BKd42q`Ja^^Tjp&)G-M{{6qb-wxNlu8qZdp8L6pZ^U)%EH6Bl;jl-!={=(8xX!IFN$!s3b2Wcv9^7Dj z?6Y`Oh=fx8(UYyzT)krQz&`x<16zB2rD}t@Sc$jR+0?HxXt-w zv*#w5G5uCcI<@7Q*{Np2QIJYFNPO=q%gbNjAz`+n69sR0kZlJmri*k0Sm)npcZokIS7a4kmbZ*kR&bA=CSVz#P^}N*ysS~lezH29c zx<0>T?BRO&;-%{ss#=3w%by5~bQ!@x_dv|rbc_t7 z!T`jrHEd!ewncM>CsURG#Rf}eB`|{WmI_bM>(VB-Zi|>prw2!L)2{h`X7aesG{N;v zK`ozKM(d^hnVUL?yyiJjBqER8aFZ!}(kfe-U3Yoe-Imt}y!V=X&WTtg#ea9^;)}TB z_jPrATQt{wb6PrQ`y7E4IU7IU-&3KcwmeHpH!>hJP0xr!5Qe99V;RaxAGOtNZW#_`x+E zdvo-HBCB@Zr>LS~@F&j*oowZt2>v5LUp0E|PMgo4uXL{NpGw-?yYogvMAO{__TuG+ z?C0LJ1&=)mmnQMo<>K#yie9&LRG=aqOXd_&oSxvWXcb9FNFbvvx$e`#0UOu38I*^} z63~{IwRC~zd=M3kv^r z9pn0H@JvQ9h@e`Yci={+m^vM;y7gbGeJcBMcB=`s-;p^dERsi$h?aAn+W0(l`B;I- zu>0mMJdO^f_qPg|+>5i{x7;F<;cI1;Ilt8F-6ES5L#rv-rDbJ4bVn&k9CF?P0Zh#m zcce1j+^go^`@lEkGH+e0h&+{BTK;~G@LB5N1vkQaGy@pb2nsYf%H|ge2@1{@ zQy2pJuyo^uTMfO9#u_ScS4)DKJtFFk7h4mp!jbjVqw(V}=<;)94j)^gWEORejb2J0 zmXB(G8*$b2@uP&oMlTNOFYW~cj^k<*S>NAw3nb1Cx1MC$^NuX}zrS4Ke8p{v{vMa? zkLjSNYQ<2kU{e098*c|ze1d6n=D<%f(urBKTX|`VImSYl<(VHdtO+mXzt2A`@HoE{ zI00dXAR^hzaXS5c4q^sIlfp3Q+T9%)Q@m)=rQNpl!HM80zY6b}X5+nv@)txV<#K8? zf(IW_^Xn$~LPotytG{$89uBx$52Zr~2sU zdV`x3sr5reeDZ7F7tK|z>8%(KqRDPIZd&+J#e40{h07RwR?=`x050?rDn=TK#*r9Q zqCmnQ9*S z&TQ2SW^UEpOjgQl^S5pH$lEH>#g?G?>4d2TEEmOZm( zG@Lp_KkZilV8A>%wxOtVZ()9fkyn_h&kwndaI!F84_kgyzxM0s6VoD0Z$covJGKGN zYO5K!_kkq!{5fR)Qlp8t``ZSuZKtWSnf`Y45E}bK` z`@|`|uca4EGpZsjG4w>n3RhMNpFC0V-Msjjmq6!wb^80Y>8{hg&H>66+4YQHEBDQw zbbYKrVG&96$q*(3FRIA6(3-)`4Z_RFYRC&V*!?vdOn!;4lk19#iXtK+JgI7!Vw%PiG; zFULW>Ww|7?-`ZY#Arm{+pu#HpJ1Ub(XoMe=OfsUM#wLsKrwe}V6|4K$Y7X>J{=tI> zq7FX?vZbyW;rTfKU0&)}Iyn7bxy z9#n#ckjt>Pls`Im_snzpHr_D0h#mVx@PUh>b?J_of2AD(`aUVpnfZ?|uaD3ge}@^{ zfkB80K1YY@-PCKvmw)uWJmS&8Ze(EasOKtUKa1;1MgflXmxNYWebqjouQ{;b2035f z(T<*A6&h2r$y2HmXe%_5^igVxV&9`IH`nEKP=AL<57UiU4hp+zrqZ*RSM&|1u2WJ0 z$0bc*e&j;A2!;slFeEzEot@oncW5D#q&mHImyI!uzSm|T&T|DGqFY`cQ1z|5zj*`a zwrV@&wF{chRz=tBy;xt!Hq%7^^!Z9#u(qF}?=Wjh+0U;@%)*SVoWmcsnoXC{&Xc(^ zN`TqVtF!y*-#5I~pJ+&I*bum6d)|H4m!RCN*?HmY*|jG2K~Js4{fk`dQ3`uXE>mHe z=~LK1;a}mPVR+fSk8b|yL; zIdYrKtM)c!h>3GjCSDlPhZN|;3K20e{fXk!C3i~(B)I%XBS(vByu^o{n#^~tI@|Lh zYwMvx7uEaVIpRxr@4(XkaHqlVoZN@!ONQTn+CY>EJjor(i3tgN8~EPs-^n&D{4**g zMTF*~#WEc|m%>;O3!0SRi$9(On>_Jazs!g`@<#!I#Ip0beQtMkc9xR4PJPTRV#DNb z11T9Jf>w}&GJtEarzq{p!tHZPIn^eEaljlQ)*4L>F*I9Z#wt(O_T!!|S@d~8b!qdE z^ApjZCQZ91SHJXn!=~tZjv<8wd_jDf{c!V2`}H7mdESd7y#`);(NG3H?XA<5SZ}gJ zxv%v3p_Z$-wc^-PL|z^#SC^seLGlcZg&gVgaK6`c7;nU;^O zkG*%`GAsEQc23e_jxr1Cz^vh2lKIN{3P@|`-dBWP3bgH`LqkK;Eh*2Wu4jI*Qp21T zWF^D2=zHvj^%D{kyWwQ^av7&&faS8GKX`6yOA`2GC~{5UZss;%NCkeDoUvF`{ZP77)%)wJ zl({>5+s1a>)z{N#7h`3e5Pq%5oz-{2B(r~qe^J5Mbij0(z94PS=7kIT&hxFh+qN@m z)KMx-)s$IdGILj+`H!I6B|9iQ$j>k-UMyK5xb}fePTsAFi#hxj6H?7&KE5`Ou|*U^ zW&HQm6Y{JYovIipTceDW{rV>X(#B-X*u9SnH4w<1&#!qsR-0cVph$NFVl0`ODigtv z71}eUy3MKKX$b6eN+R?+Zm3 zF;z_g^KXZVCWsw0B)MdfU@j``ZAdxoDTr_Rht2z&GQK3@>U$m@-nhhtq2^IhztXBl zbhQQ=jgL_i@Ol|71IA*orPh`AH?ylpHI z>+i_C#7t9TBA0*BcK@Pv4ndla>=mFecWm{26_2H&%R4j|u4OPwpLam^y-$qM#!~|e zcsTb|Jpb7;_m~GuaC~z#TR8Q=1K|VwGYs-4AhH0Vp0BZ|Izl1C168`8>U{fZFiZ?R zrXQosk@fscP+WT9cxc5GB!P$A>k@b3S>uoIuGmJl;xO||Od|cqSN5V75>nvUcINcy z(*riz+AsGRe+hvov$7|gV+1lVPUXk1bv^Wi?<#M5$l*|BVMJNeS@x1kHYWYYJrsY{ zJ)+cDm-*Q)@r_f`^xZwq%(PVbK8DAo85S1oNB+#PF&pJa&9_o(gua^{#Js%nFF{@! z;KE*ma_Sqn(})W#W*E;#qxE?Sj1W#(tDyebFo=-4*a<#u{XP)^zrw*H-FraQ= zTI^I!J_*6%Ycls)Hq|F0U6zFMh&&QN%ru-7@TEqr%$D7vd_p}cxJWl%fawsFc6#;1 zL`5MO11&%qHBc@|xvqmD{0*WZ2%JRL3S>kuhM}G`KgardcHPH)4+m(IEOjLsm>>t10i7n+t5zOgN(w80Au7IvO= z#)tWr78ld&Q477^{W$;AkT|(}(V@?KxMZO)R|R_?D8{b3d$>vDK(e+tM-7CB&t2iz z5hzb^_R?Zb-%RY}6DJ^8F zn%LfoZhmz1{YGXKMqekLnj{P3-ofa{%v^Uxrt*E7EuKrFaiKXo1PqD-#gra%%b}`! zdgl`V^D>t(DslB#qo^u4zG{3Q|XbK>gv(jlGNx6 zZ)am``&wg(%{e90eGfON{|r3|x#_T;hBGTdYB!L>${irYi!%N9MT@t|9U`fnucJlj}!;NPrYoE6Yw_Fuudt%`CCE5Jt zZ1NW*VL#dl%6d7P5q_&BP5#9NupET}5b3SKp_yrH?S(7l{-Th{8Ixk6XddNfwP?vWaenoP&ZKP*Uv1Q9VF zAgTG6?C6IWvKLW1^&Fd(_WAcFeusW&BoUo=NOz_?A;h?P9C^U@is+DgN~#MtpDoq% z{!$|9o-@Z9TjJ|H?VmxY>_sLU^i|b)6+_oCP~>&<)aQ1(w+a_r5)hsI9)CQDZmp)2 zXxsy5-w+}<=vlw^^YJI59$a^cSRiG;lypJkFWZZf9lmSfTgY43mbHRO4N?rIfK|!_ zFdveAZSMKFOLw<#-;UNn7<9ij2%GH>qP2TvLB7l_F)U2<`snbQ^!XH)R6;e`i((q7 zHMCyp;~?vK1FI~m;$784GiN^nK*4XfwoI}q7(vK+pb3HiPdC|7Ls4kb2tqizOrf?ks|~r8-y3cdndG*ybQ@00QpNLiml=j9Zwb_NdXw?c}gdv>J{98`u*lVRm+MNf;#Jk7ME zXztlFF z*_SzK@_=;@1P6KsT5=?UXp@-)3K*FKXu^aOtK*{j>PY0TOI5o3?%~b5Y>EYo0#1I! zQ#(raTR{w8ZTG;mrug(ua$2_k<=T#rpx?kX#mPCUf?0S*@6ynIO^;X&X`q%_11RXJM^JyEgeKSi-O+EkU z=wXc9TQ$Deln*GPM@|Y4cD+e|ebTP5m|nIy{kB1pfEUt-ZuD<(?9!7c*aT7^lnGLwa@Dbbi&eBHco#*q~RjB65g3fC>=lvF((CjW#=TIi|MqxESL zVNm9PY+g$%p|vU|H=<9fuMJ^aRk<#7Y6vSlNMrf27w zi9m;^mzX?03;49w&!5QQwh1$Kn@Sxgq_0DV&~OmeYn{x*>5oJTvPdk*&x-SKN4*Um zG+XS6W7JjBv`hEq%P<-*>bMO7E(FqD&d0vC=?TxzomyuZKyhj6>fP&dibhuhC8?go zT_V|dtefdP5qz`)kUdt*_h+`*{{H)_Uso{Od=0M?!8t?a{JFy|cUQx-{SA;~oG~|- z{NR!E3ppEk?iQ^$NJ1>k{gOa9Tmidr4wc?nx#d!QA|Q+~Sn!1dY$0+di(U6JZhC<2 zM2GM~zTm-@7VrI_ytZYDFneMzf7*AYWzlAnnYJdmjZ zhk!sDh{>9^&0|ZNw%)YGi9^ve+l@xnFJETtYtK(1F@uaCJ6|-;Vu|Y080JQC1Ok%^ z+wO}usZehH7winG3%6|G61s<@Jah%?6X9kV3W2htfI;7I%Li;Nj0099gTM($f~d)z z*3o$dj+khmZp*rphfkk=jGwt$GDyfYsJpxSp0~&0&C`n|jg5_$CV8lNZEJUphxXj@ z?G0n7*hRLW)0*qJ~Sw#$@KmLQbFaQ7zG!769dQE?Kg6#iBh?X7riq zNy~LtNai+6xw7K>dGUbM$p*-p$26u{AMaMZV+$dqwY(UCSatX2#aQK-VCap=mOnp) zy900~qO*O+4$F1sj5;?g8NOaRYbdot7H4h+kJZ-U>;eCp?5i+RbAMYpAzQV?y# zQ2j_jFel>k{;p$z{&BoJn9hBdHM3kPJJGF_6#*5nb0w0KQN&=uj7~=M$?w2C{ceay z%%FJ&*@0V^|DGpO3fkZ_e$L9u%A*}4>3e|&3=9%SKB6*3xD7KHe?9_+W+)tEH-=lj zcUD5m0l6z^C^3x@8*thx*x1JL5^^4n1cVloeh1WJUQve zx3j;Banw*I{;*ObAJ5RNx{E9Yqf$u2U%Gwdm$P3i5jc5?>Kl2F8@lHW|+Bq?R4RP)b`C*D7}G+`R>tkT_QQw*BA-w!Y)k8c=u1DmRrpuUx{{W z7{o_W=i}vi>kev>D{AtQG&#yilUKv>=r>f)9)Io+GN*e@jZlWzwu5-ylRCG$gpuJW zh2QIvfN#K8At1Ycp-AnMOU&6t+*iB$9u0KV{Ml@8V* zLp?frQymj9V-^xBnXI{`b4$)ArI4wXPIIvj>5;eg3BM&|Wb!9Uq( zxUR=Lb;^ME5`|nf3(4Onm2iq9C#N`pCRVqyc!E zWr&21Is(2gjAM<{@ManJd(<(L|= z`ZM*=`7cT2?2XVjc5_|M86AE)?3gE9TbDILMGsGlZSVF5NdS<=u?Wm5(L4SOc7Ntq z9aV#X6PgLPk@qMPF{cdkbLqTuUi-Pmk?P~sHt^g)?X~TB>rmedB=`D z!HNRDmHz?|*kfX1YS4&5*xDau^m+j$;B#t^UJ1&MfV@zHZX}?5$_fI$-$!ljDoV=p z=CItmev+uB86rXP6g_m8R0tW!k^p~9MT`6k+OZz}UMJEbLy9$IQ=y0^8fZ)*FD!%R zYADH*UcHhIqQOe6Jz>-9EgT*_L}8UE6|USO^C{67FO>qe>*+&>ZXiQNy+&PibMLq0 zuA+uwq+5UVmN@oVYAy7j!g0$$6jlOPT5d6S&rJ3!VGA@d&%VJ1&yc@T zI_bi5XV2cMS7UBn5Lb7ZG@b%2d2v~SMP}Dt8`o=P%iwo1AtBj~^8J$X7-4Y_s20Xe z3_NBCOZ+;$#c_%QCfWqa5ZySkU`dWgf?f$nqg9O>QLip`0xYIm#3u3c>x~x4b!u~j zeMdrrHwc-i=8sHd?lRDvsM8lb|6>Sks?Tw}uv}6OHQ4?*|E8nyZd7-!>rF~wZuJuT z&sFO_!VnQ}B}+nV#aRH%Dm26#^@~IzXLg=@&0ZH& z-KaK)cusbH2^QoZQufv{*WQQF_Ked<=hr3{9uKY&HzET8N-t`WzmUS@SpTknHA#FT zjFeAWT3R*@0^`jyM}Ci3qQ&ATW*tqOMa(uSb3ZQ2SuPcYKH^QQRh4(17n7t2NzW1v zB$$X>hn}Os($Oduno<_N}j9vI){GAGZCL-&JoSx_U z#p%m{73}TPsB6FLDMhP>LnD5)J7uE2B=_R(bxCvgGe720ATZr<`SD%t4Tql*Rk54e zT6yNfU>a`&O#qBrB^(7m2V1R(+#V*mp946?@l{K+3*yN$7j&L+cmT}c6isf)4CDp% zafTDTm)ZpuL3QD-tf<`F+;p6w=eir@MFW>5fiz7HFG#W+_Z)^&tUgj6&k!8n#N!2s zk%gL2K>wl{PFSje4B}UVS+!W@??0ypDE#w=bpsF=fnyLgQ^FTTEayGX_fwUh>1E!J zTbJU|6{(3dSLA-YDVurg#)XG_O-v#%(w^D>)M4qf+9_v2wxuy5^B`h`4mJlAizOyH zU)s`!tvQZ&Gc6`w0;Sdt{=X{EQMNw*YYr==7*R*X`&GS3+8fQ3L${aRswXLH9!Xi} zti2J3@Vw+R5@lUL*0pc7Qt303$h;i4i;t4qgrYfyH9e@;n_TuQT;s#*f-Xx&bL!%z z;8&Ga-{%xWGvzD{e);B&9F!+^DRUzzOo{_G0J~7XSb?~dpp169s4+0 zca(bY>q^QRGqf%uQ7Ga(>`H7vbjs-^LiiJKH{_DFLzQX;OTc5EsA@g5+jYp4NnN3p~F-B35h{r0JjtErhnID}Wb3LYyrbsF;L zN7|6>E7#+k>*vj*bY`5&6Zs3eOXVKm<^K0VmI zi98#rhQ$Qd{*SL`C$Jgd6`mul`EgElD&yWD^ITSuJd|dC^g_qnEY_!07+tWb$3?nl z(V2(y{7tuUPy{e&lyE8EGvMQtCproD7)uxqfw?q4XD4tM8 ztx87)*` zczH?JL|~;A4)kJ?7QKUrLU=rXXk+S5RrzXx*S40#R^jQXE|N1C+`;8_w`A zCq5j-an9hTu`2VZ3#-jOWXU(5#0Qo{cVe=ON8hy#Zo`7mOod&HW zz;H}==DNmRbmLFsb9u*m9Os-!3)`)AM`bpzL;@P6pQ0Jt5xXh;fbYhr&qLz)(B?5T zWWf4pRaii2UpsH(x}LE)gEkQS5RajMH-3HPxutvWZJhj*DkN{`-jqx^c^J)FusW!+ zq_iUmIQl^Ac*Sggw3*o>Wgtg1O2AVHVO=+tOP1oyc~0b#&|K9@iEdRb84|Q;`!p~J z)YPJTdFJxtrx4SSM51GvGvv}59+naasiiKYBTscy$Zeub=AAwIuAsiVt-TbU>H}X7 z$lgNXx+kWUWX{-BANSLfDg0ENc3Wgk(QcC8Ka8h5ZbGZJzaY8dzA+0k!`vMH`%Xo2 z8|>wui_G+OJh8Kz(Vn~&Z8g7U$#qK2SC*Fhcu3jV|6SjI4s!S*i))g@(KX*gXx~1= zicq=KpWocLWZ@cG5g7x2#ns&U*kxKNup^Q2oIT(L8eTfMx?*8%2ztZg|D3V6^%;AYYH8+(pLRBGek?uURh%O^~-BZfPQxlr&-p$=_ z0Bz70EjhQ1x+}vyLof?{2;Erw_ihHWIrkhFnS<>a6~Gb%gZ+tiwJL~oKgb9W~Xg*U=|Ka^{yd5MI1qa48c7#YSmv#@-l?r} z?!CyvpgF$BQ?@CaO4g?(_SiIDiEUf&o3Phv#+XImTTV#rTL#l5{A>8X{2p+&=Q9Ot%1TFW1bcqxyYYPtl&~Rb_rCCRG=b5wq zEXP?q2|t_=6HxL1jVQx7Dxkp7bPKhd9w0Czqlc!RJl+zbwucz=S60ImJyRJszbPp1If~S4`!ULkhxyMF(j^l2c}ssS8)bsupnFSpvdAy2X}ZZjp5Cw zPtz?pkE|AuP;k{U(_a6KIeF=9lko2&D|@3QJ5PiA$BQ`P!E>$zOz9Q`G3$R$eKQX( zk;r?nUdduo`NJ%wXRGvY7~qcrSUZ^2k2yL{_h{6RW+mBI6YrNht>8$5C^_2H)OP2j zS%^?>kF&w0nvcbxlC|t}b2k^CXDJ5mAOoebsFxi`07%9)XEZcoNa)JyNhOU&pqc?g z&QrB?`sW^iFFULPwm7nnmY)`Wr=tQO2mrVUgTSlBxqBU1nFq&ln=Y$WR$Ns+!TtDA z<+zx@$J)dV?)GXmMYil_>_@O{or4$e&EE~r8q}jNjA2FsEEYtl435Y4LCiC(4+kCg z?JOB;OEr0)ZB4oLUkyH>zbbFdEXIGdOMB$CngiSg_dBXS6{+Vl6sfQA{DDHD7B0Is zcfk**YZKKMOpC;DioyrwCrKfyR zkZq^U>Q@JK4U#W`xI>EHegr~&0Sp9n7Msq= zOz!^#@*9>pIdiiZDPVX>NzLlXtYruU39XBhrwPv;z0Z4zxs>>vfcR%ueFEi%j?s<69W~IFqW%@UzeEjAf2v zjv8Pu!8gH;c&?D1uNCuRrv(q)eq#%PREdfeZ|}PF_2_(I#bHRm_F$c=&n{WK`lo2S zJmHfBNfEdlNQB*=l{s$N6}tRp(~N}>d37{90hExAK8Ei$!v*5ls~-hZpq%pAWx|Qb zQHp6f;Lasu3+hjqY%F8d3wU(;2ny2V#`5x0r#e@jj6kh8Ovl^$q*BDXqO45uEj|NP zIKcWA`dEhjScli54p)$DTZQMA_W`cDXiw=3!^6pQ(_%pjZ+^`BVI9@Ov-AA&`@D5X z(m-hV(Cow!;bFN!jiv`ToQ~qa$h)g~j(L)ZZsq@B}^{>UTuEVr`??DDo6R z48xtG8|3Pxrd}0$J2&i?{2c~XdVBx%zqkMtcbw*bQdKPHthq7&=QSH~zQQ<*IUAPd zEX-klRXl&xy|wM8^1Qqo0yqlt=7P~THtmT4B}a9#@|0AVZSuW=vj)y6J{t!Tt3nd70e z&Q&dzpgHYn*vE9^eH728d2YBXnz@UVPf;k_v&w}*H2l*UfM z+thF+p$>kz_&jMkNG-#H#Ukq0OT4u64kIz>sYt#vKrTAq{$EW5z+~#4A=iauCA_s* zL}8Rb>~CB*J;+1HnrAp2wGOe3QBSF^uD*_DFsFMRtt6P!RZurxWx8d#b17Itd$st9y+GUEsWsoTQwH9&eOW1c8Hzc+dLx&>#F|5zG&_4jUlmr)pTS3 zPd>Yl?oO)D`Zo~~1Y+H_k5Nc~sVBG01e=$O%D*Yjpz za8UUZ6NTa$6qGB{o}Eml91clue^QPH$g%AgR8;D;J2h9h*6w{h2tW|e0FAuE(EZa< z5t+OpS`0*SAawm-tpqASR+LqIyvPN?ny< zNU|%l&9(o8TsH=tMp85}F)=Wx^HePq*`ZRgpd3Q_CI=FPBpcihZzhDL5i}Qi$XpA$ zlo-suT)&LQenT@y@ukcy8sQYsMBvi` zbYNFiF1&K1{#WAMUwg#m1#e;ZsE>i)d}eX$s*z+ETclaXpd%R=@KA=({AH3#*0P%# z8Id7`1ZVn8z(-`v=w*F|dPVzACbbzv@t#QgmWtPXE}^g_pd1C4MJEUlGlV)NV{ zxFG`vJf28C{OjS-pRFE|fUi6Sbw9JfC;eId4~e2(jJfU`{P$?2SoNHn^-cr_#S%14 zSy&T@yzjbYvJXLTtqJpD&F^;d$i{+k=`2`W;h_VU48Uzct!4*>4a>Mf7%p!KV+_MW9(88k8U zksrjSRs*9M%9VbP7VRHH9*!VLz0emFrNj`!nv;?^lgWz(O|Y%95MKyF!%E|wgMhD> zfgd0|kJL9pf$}|M1d$q!mN(|cPYL%q5$vnkaZJ{eRNchj6Raao(Yb5V7^9PrE7jk+ zUYq8g@9*!QX8ahP@%4mr1-sI>^*`orvf1gYF#q0v%c#vR+!`Gg8J07Zfg9h&V!9ti zNlvzO^VrZjeiUJZ_IcsDDD~F!!@S&h#~rm;TyeMWH-3!1ezGgb>y*+nBbG~>urN&5 zzIQp~9>z};J}W_=8cM~`0Wpj$h~p)80MpS!xLz3c88GIsvDbKTN=Y&q zo(QWDklVxV%qex^x)i*f!i?llu8}Zf|Yu%eH+Cht4|9 z+wseD*E|_(wwO|oBPa)>vp(H`cR#1*xbjVuyjR?syf{1DBep94wz+vTtLyHK!B(zX z0~2$zH!hh_tFbC{gJ=dYlW!TxKeN56UsUh2 z&vR+Fbp}9q3Br&wjU5#i72xs_M9zwJdFG4%!s|*Dm6VuGlHg{VXe`@(RbEgSw38_r zl2R0UoQp#pyxBpHwVC0g`Nv=1$^u^hBH|aQ?|Wem<&Yb+sM*6Bii8aY$LBMt4F})Y z0?PENyIyIm6h@V|KliX0wR~Wnx=^M!m*VQF`S}m)oac83mlxcf2}`%3&ppIEz01X- z9uhWS2_QMT9Z<4LC8ypF#8Cd@bgAdxON$az(dy zi7f*~xN5%ky6bkX+__R)c_xB?e4Ad5#mJ(_&m(5C1O`U=@VK~B zgfg_xq~SFfLC{{1;2i_lb8~3qFRFIVG@ix()sUT~c2|QPRdTeON&5RXmNG#(1Y~SU zBFH|g?F4lHb+c4_Wt|6F+7%N>q?Kkd!b>cGKMGX8$ue(%3-c}%KUPc-I5H|#1 z0b3S7gyNnCMh&Ve`LM#qHC~HaIlY!lD~u1$EO6zX(4e#fb^ebQXOFcbVZ2~7#1L2b zCsaaRtWmX;llRTdl_B1Z{jt$xT$0%Fdgg}^CJ{_c1!y*ZrZ_ug1BL$hepid7MVZhY zQ(N7|1g*Ny5MMbQ%P8Dm&G>jyVF~$jKx=x?!?_X|YE^A5i=+nZETq+0Q9J={Ei-7bgS9+r}#f*G0$d>D}ceF&r)-LDher~5*mF=OE( zuoff{1NzWzfY@%nE9-=RKrV0Qv3DvNU3c(;?!VszPbf>suLs43n9Jjeu_1SbN^i^HQ50>^Jy*C#=o}H3+=&SGaZ{mQT_| zC}zhHqn};p4lS9ceFZI@j77q1va+G!g#LQ|c_F8^0T6H;c)y_C zWU*ZrjJaUB0fJ7#`3n~y2Akp!^v)aslM5~dZJ!=l2+h~|@N+@?e!AtwuXt}H@ZK=q zF!1vX0eZ+RZbFW7AND*lynfGn5%52>mU`fIT(U!t@UQNGZbGAGehxH9!RpN+1LHT=N2C{wSQ@(tSv1VS$)4Ma>%Vp zcK?=AvELkCvKKuAegDr<#8bHYO}rE{_Os{CZAV@P_Eoz{fviW#E=~RCban^APC#c6 zGwhMzPok={5L%RNjxmib@R;c=eU6*Wz%wAw4Vj9<^4|2BOOaRc)(HpU6|Fc!W8x;$kzF;~2q%MmF@+lty^Cijc$&w(zFzECm zqrkK*+N#%E{gipR3*#zL`45ZiEc7(42hSFW*q2O4dwE|(dK>X3n%UtB!M(l1y3IihtW>UO-8jPRCHq5oWrYBEPs0XHwst>KbBZ`5nw zIF_-qw|&DRCkBf0W_4JeGA&;Ylia;^I18fa0z#BLJx$Gxa6qI-Vj7XZe}QEV>u~ts=Pd3GCaKSbJg4%t2W8Jdt_%2qoAn-olSf%knfG9K-=v z6+uu(J^v9~Nlgs=8j_^qNA&)r?9iL^FEz_jZ3RiOiern)6blJ0yz@%*rcJ%mNDjZx~&smG$t7K0^lkH zC(Z(TNjpccx@5VmRuJFK6L{qmQf404Nsc5$%Mu$_2SOn+`-N^^r5Nw>khp+cU(h5qrc?x^PH})-=4QFdmvaWRHJHC z-7_*gHWpT-VX-{2fu$w*zrJS3m%Rf*72h0 zqOXoxc$m;tH0&O+yZXKMQFwUx$ENbhdw8BR?c*te>FAt`-~}en@6n@2xUzv|1nPu^ z+|2gJj~~~8Oc4=r{`*dI_JX+2$SxnAi+qCFkV}A2-7>f+!Y0y+ZIBEqM(GugvHkA= zZDNx?tok;&+*vkA>bQT2RJyb6%p6L(^xu-cns-^(uP+1_!fR$`Ch9^G-;Q%p%HMY~ zr0cDfegs}|yVq%X*|TSDp}iiDBIILJ^`s}c;BVt8@4R$;Nv-_XQ;0KZOl4wX;vG$N zY31kVe|TD6go|ul5IKjy)(NfX!XMcz5cDs)3}|rm>eVV4c2+V+j#SjtB-Pf>anTkK z7Y_gfrycgtpFl1A0lQniQE%nz4)m5??}um^?`fP(&f?At6x|;}{}yd>;nGJD2^hBk zNT+~+fG18@J?!_^)>ear^KKauE?jTUMe2a^fE`dgFkpto&&|st#ClxG$EK!9Kip1J z2W|%dA9mU9EnBv*ZrD(?EiAzE?%lihJv?ZTJw>zLEkpY2Li}r2S66bS&!0cXwgeSb z541qHjJ-`-y;sG+^Sq2(inkl-c7Pv90S@RmtQz)UXhg)vrp=Vk;aOQy7?%)fxw%>Z zi*z+D5KN6rxCQ(OZ~kUy8y=gPbfNL79Q$C}E=qR8e{QSSxE`{0pG^K&jac!!EKBa)_ChLyaq~_q{k|uj`spbpdQ2ao?HoH;q z6ZQxSdbNF}uhH;+MdRf?kZ^vdqod=tdz)n;r}P6rj1KPZVs*c^j!Fk+UW-w22Vu*# zfxGp25l_HF06$$<@ZUOnHwu5waPtzQg!7&^obzgdRjWIWoYk^f_hF3F{RyqaJ{a3i zh-^Q0-@nyVvsa;S=p7py%d~8nF7~ks+Ijc0=Ta6t(ecgC&wqFR&508y+JIynO>0#D zZtSQzK0UvGLr`$P#G7+F09PWnOrL$^Ha5a@=g!@8(LcMqtm}#eZvS0;*xu5v^jrl5Z5kCz3*DYfyMR>cDGs9Fno&lg|-Py;umg4@bqHFkK2Zh2pFO#0V z;Ash@#s-{Pf?xhd^_i`pI#(I~#zOz!Z~t#iekrd1w;?*aFMR)<6i!x!DjQaT=oAh% z@u|qFQ?p6Q1EicnCg&B`go9&NWZmi0HQr(G$Y+|>e{@+RebDD}jpehm3Tc)D=~W^> z?B}=#|9u+$z3Oi}xp{ahOp^2*jm^yXN9-g5<#`Z-;~Ceje;~v5K&Icp&~SV2Rr}mp z9Jm1JUm;1VyBu0&xN~cDZF6(*wQJY5xcmG09gD0I4Yd!GyS<&$aWLd^U8bS;%D|lH zO2Y*8%2mQnlCpn)Na{l^=4k33$NM;hStcDuc5%?4q~?PM9Y~l* zLfo?81G^(-ElG*N+{;#I_sM#)j%_d$jjFx8kER-5(G`-F<=hnfepp<#Twm}9?4$X} z7y=3U`hvO{dRRj;<_2O#90EUefwKu#I^n!=(}+vTqTfu!XK&=Ve1>|7oKT~esbkLt zT=AQ8J$DA*BP=$VzbyOoL`mJZLP1JGHV!t?O-6WRNM=5PIxuKUyMSO35QC_KzpQ@A zB6F|DyZ%F49t8jV!1H6e-&qO+KE7i?2DmX3aCgxCN^FO)Lt$;LkMb6Fp64>Zts{P^ zDLc`5M9PoM?b(9f_V|*_8go9xPtsU@Ok5ZM&m_YdBdCpULFudi_Q3+L#;T#cn`Ny4l z)3Mh`qY#}xs1=Sdt?||o+4A~leDE}{KY-4$pch+p0~C(1F{gGo z*vopN$JK_Oo>b`3)^{ZDf|I}}4ExwKd`jwHFDwu|s|)h$eQV}}K30Ig#4LCf(fSAz zH?}3!ccq~N^25`SRdGmsR1V!m3UOO4c-daQOGPPX&Q|%;kVq6EEA=o4Iz%KA#?dA9 zZ+o+lYIen4;^}WhJo1SH%yCFyqtINHwE#Z|FW64oANf4A3>w%W@@b8IfzYyVHxOjo zlY8R!$`aw$`%MYxd{CvPT9(IOu8TwLCy5fQ=?YK^JZ5L&ICu8R`8QWj81a2T*W96U z>~p)D#?(a)STs_7Et`MIv;KX{E?jy5t3(DrthPi`ohnNhwhlx7%>iRUz%9f9blLPz zRp3!Ym3?@z^#|IF$=0~6r(^Du6B8B?ZKZ*&`5B&dz2d;Muw9FE_mCtdcQ0Py7+Wf8 zfo{d-Jx{^S3$x~}TzDi#`5#ZY&${RxA~iYcdEec=qYxhT>8)-rjw-T?#3o+t{ldEY zBl?X3XkrsSWphZ~Wp3Gt$w|wcr9#8GSP523LAD2^Y}tBGd)cOQXRE~c3V--?_!J#< zV$5!sSZDt$R`}=b$JfCQgy;mf1CvnjRJE!)i~55W&`N5$$SMIzNy+|noQUH{Wb|Zb;^PoD`}(?BLvc-p zRWMi^0nRhyMdpioPuo6r28#4Is|t|@&A_2 zwQd=|3cbuOgG&lBJE+It737vh;_q%>j8aJuWS`G?35FnkJeJV|NJ%{=Og&~ST25ZR zxb}EjqdcNgWL3e34ms3|7+|;g0s{Ku5c=l6$ zN`mQAw98HDBIw6DAL$UoAOX%^X^t|C=xwCP9zJje=P>qh0FEhy9d215i_J^+;$0L+ zXI$2kOu#bVMe~?>sPeP|PyjC-Th#;DqbSiMA__2r=10UZRgz2^cNbL|Cj1EOci=($ zwZCX7yTm`9b@`L%js>CS01LaZwSb#dvfeG19;1u|Q8MqTKWqec3<$Xh-sMGH91bu?h@g(9bB9gka zV)_pI+hbe)d07mS>N8rq2EGCf^uwz2f*;+qyW~Pl4R8;Lmv}L&+iW60uZ)b0Zd4iw zslfQNK7IIbxZf_ULZo9a^F`5WOatJdfIJqDQ}|`jk&u=DM^5rOH0L_ljgtW}V|be@ zy4nz-{4ImdzuDJ1wF6UTrv zpXPTvTCCpBw7JG%QcAE|`E1qoz8;OTr^Pd;o~>-!bnth_F)V!ci-;=2uKs=nBsAX> zx{hkUIaipSy&oT?7pSeN`OG>U$F54=2GN?*(vtw{%1x5MG6}+i)~lAN>KQ=^T+AkS zS&%JbVJrR}{zixDkUl$`s>5XJ4Ni_vbj!lj8?B7@1ka7p66o=}O6W04?uJV>P5${} z*0Znxo^mdT`>qyQWr$2KV+itj$VIR$pOcfe-eWb-smsl9j7CXJ(zA#NyvT99_KJ83 z%4^2XMHuVr>*w~wzo|pAhJR^WBfhR;(J4?-r7JXLuyX5;*biE zdvnfzrJ@5*E^f^B#=Rv=`S`BLX&U&`xBXKoH^8v@pEfe3l*&ZgJw46J!s0WM z06@+#K{wDyv|2c$qs-6!T&9G&i1F08(9m!$-8nbmTGccV{Ax2Uvtb9%|5{dxi?y1H zcf1T+7+4ZqA}ksK$K&h1e`FE^gg;~efb-2cqv9Hxz=n$f#?64hEQ`;cJ^Q8iDj64( z4~u`6uq@DiqU7M1FZHzjc_h5OS0`Wh&D90K`%ig}q)q6J>&+m*Sz=0(TZH8Txy_-e zp%UEj2{}0&+74}7I7z_?n00z$B%>9zX!_bK|5b~c$nX!6>SbVHAYhW{8=xEE&1x@x zr3BZAk`_-Z1;i=~6e%>gG@rcp;uEG5{El!s3X+NGAxzrq0@J&3;|3zhkty2~3)mh5 z;cv4Ho>b*a{(2p0cPIdVyOPSvGX%K@o#_%fkQu>R8R`me&WU~V%l`f!K<&Sm)rIT1 zdJHYp-=qMvr#FZ|0PJ6E?a0u(c=3gGgT9~zQOX*wP*CukEp-Tl;jIJw{SnD+hKiGr z+>2-!?eoVi@C2A0oN3pX;nEAVs=i-?{(BqA$x}cJx4_gEA$xto)gediP#Y>e+R6iy zdj~X@OZ@g4;RC;5%*`JiTMP^ur@%fA%_8pVg?R=uVZU+O$+c&vb-v`B)|aG@my8vM z&2=5ZRv)j;lk~1P&B|ala7c^ewajJJ8!lds$BswCIjV=MHoi$?b}x9g`58s~t~9{- z814Qf=`&4LNKKzMZ5(epgjc6V3X^Q@Ake9pg$$m=Je-pgjIv3KCd2BQcEvyM6yeGm zXlIL~60^nVpoj1%n!<(X8T;F1NYZ?|SiU`9nHLQ1ZC$$UP`V|vbQww|wKt)L zK;uK19=C)sFk=_{scUR0d!Tm7tABUT{=MTU={HdDK1FFymE}wAe1W8li|m#3F>%l( zNVYnJLCSRIQvv%n93m2rb~St{ZJtvYxBQHkhGcDylcSfvyxWG+K?Mtb3+1zC4HLfH z7eNARXZgK0Ry+3#vSson4xy;$k~MW7S4E+5ggyQw;javR+TuaYzduIdz5kD31@$t9 zF~P#QNM0*yK6b4SDO!h`hCooG4d!w72Z9|CEXiBxLq(pS!#QKt4=&TL{taUzBkgD- z6(hm+Me$aT!ch<945S5jWeRT)oARLl^q8$kmgTa9EoEYAL*3dR2oymAx_e2Zj{-m{ zAXkYA7x{kW*DKwd9!bUiy>9>huHO?QO*%LYWCcV;{Rn?@$UUaYaLMA8m?gL>lRXHH z!q4E5f>zWal=18$vQU%c7S|@9bCFeIeMpc|*1BlN*PTEa=ox@9@bNMaC$FrTo-BC_ z{;xJ5k>Ol5h^py{?*sVLH2AzMuQlNzKb1cz^JCM$uj21-vfn`(u1zUx;w*$nCaC$~ z5Iup&M6rkyHn+6mB?kwGCR-k4{J;eSWJ$M497<3b!rw5$ zg_kj|0dj!c{p(jvoZCplJ=yOcCavdjXqEV7X5KJJLiA|>4RJh%J`qFB&(6*cu-|^~ zMbd3TJI4DuGbI%;A69xt`fWC?Jg&+8kA;!!cw@iQ(-IWxB7iAf-b47MR$1E=)ng76wrG@K|Na~Qu9fR2^s)<2`pzCO%yGl-c~?b zpHx)%IINd^X(pQi=m{$Mnb=tr<)0JxQ|Osuko+-m7m-t3!^*}c+9v{bUwHs_lB_2k z-LlUZx$&m{887x+zlV$2Gl~P*b9nOu(#VADM-bq}451DXLqFjzn%6(3;`(vUXliN} zJECEVw*oIf8&N%Pp6PAosF`d?vo?i@?ltP>2WCzUw#u+wta)4>J;G-H^}=@lSZa9= zLmyupb*vWp(pC+YM4%$&+r1s0RE(FFfCKgeq)A;&<=_}OZr4f%w?nE7xnwhkU+vNX zmm#A^L1N^L`Q#c;f9|@OqlW!ME+YB5LW%_V~tuk2oI5hKHA! z9Wk2vtgO9B9iW;+zkPGhN9ye66^jsYx$)0y35<&*5#u011z_{HC(|YY(0PFvL|dZq z^PuOYD_4f!CV#`LY=JkiNQ~%7Sk_9SZ~I*(Z`rbCeEOzn@xG)$n~h+9ZQwo^ z{eSGecUV-{8a_H|)a0lTD*-7g2qI1C9TTJsQWOxR8)?!60qM;cMX3VPn@W=|Wk5PM zI*inzgS4R|WfH78vA}s8?c%`2$^Z-Zw*rn{Q(h9OS9}N7626y zy)T=sm+3yQ?1-7o6;DJA!o-!Fnu6vT8pFBWyFX3PTfz~@dP-b#yAK(KREe* z99W*0=UfiI`wKAOtOtntq~`y7L5miYG@H-hnn*`E1pKIfUGGy9!A^Qd(0KJ(%iM1DNt|Ld3g zQ9mC!sYGSowjv~Xbzwi&NAA|uQ$J694z%?<_3+k#P`xe(*Sx;SqA~Gtdy1Yzq26=* zuw{~hVC1S^1uAenWVQCE5W`L*fx-Om<$oOdx8MFZCf`QlpXdLL$v_eotw+swO4U=*?`9wrS zrl!H;LXy7Utw|B0QuvwmTz-||YTk8FOq);A&idRDr?CKm@F1dGAuq^8|$5s|g)=&u_s;pNXDw}ufw zgpOHAV<~)BJMR>h9IiUR{pJ)fUzLMp<7=vc{nJ+1s_C`Ek0Kuo?*ycW_u|DM zh)IsgTud3L?jOLy_Bg1j1;dUa+WVF-(~qBzgACmi(pT8+(F5V67wmla(a6e%9pfkG z7uuO)Xk!$~AvsF>hbn;f*>rDF-g*&)E(jDr)l)3B;Hb&kT44}G*FgZ;v>69|gRAdJ zRfs#h5!zP-3A7uzWFXeo1E;-RbP5&R+;c9364Kyk>)k8|(k|q}#@+apl@&j7p>`$!Y@h;9&=We_vI62M z0#Lm$;UNXvXWL*D7G|!8sWnUnM-+KR1M=bC6jbFN3%y~Bp!`19ZFOOGeRsC<&XZ(% z3ZhPX#N9(ho%?&&p|J@s5V^0XwNGZaZcp*$XOD-eVV?}{r^LEM$vK}{BHZ%NpFg8~ zq>lvJou>mOmTv?j8OT|EG1yE+1(tjE9VP2C!LY*)Sd8{eJKIoz6lDc%gB2}zTa@go z0XlUW{sD8Sl)!(D6{fP37r+G&I&)BV4d>L#9gsI%h`;#3UD_Yoi_2d-rd95?>UZ~p zIZo8reU27YsybSMUSXfSVK9mc`|x%@anBx-XWh<0fuc|UC2kMe<+X*_RXLK@$ync= z`#(6c=p+VDA)#YHrh-{uDA&ubl}DFE8ADh#g-s* z)+hDlK6QiHfUYj&4@Iy&9%5AGh*{n-J&d41+t-}>rNRgw2sVPmW%V6R`Rf5!l)Q<5 zsoc{yhjQQitA@F35pQ6lbCwJ{!TIY&8tJ2%*6tQa+>r=kWi_Y}BbO8ETZ&Bq7lv8( zwFt4)bq;dsa8#~a8+^78hYARgA_sZ82>Ko$9m}`o?gz~pN2vn>?>K}COV96c`%b?G zKoHdxZx^`ex|7=1`#`=iSwHUuJjG1#+P~UX0t54s-*wXKY%F|Wo z5g&$R?y$koy6+6yK{x3`pj9p>DyrR#69bckHe|8EPz4PbNyS9fVG#bUAZ`~DAVdUJ z;*O8s{%Yv~i-qELq476}3nDJH@|Jo5J|lt>PM~R`f|3l~B3@`;YY2`FeqaUVyK;mo zI6gvTE+DWj(|btoFM#f3uz=pm-<;jqu#KWpjQw!<4CwFxjuGv!8!Se`Uhyj8eOi^B z^MTqCPjoJ@i5fhDijd(PgC*`)!;T@^%7%^aI$#t-n{3eTf-==$kXYiw=7J(@ug&{I z*kDw71eLvAFxOETeA}CBWY+d`wXJ{{qDS5Ou587m9X-l)I%hos904!K!UA21!j~dc z7hu0JR5t_DhM)(QC{-g}?KdCra((zrjo9Yn@!x6zIADQ5T8G_6laWXU+TRE5EzdeW zbdNW6Q`K|L+tX&(8K#P5AQ2)z9C56hu*Fjs(d%;dUN4BH$}J;OXKX zIP}BTcm#+cn*vx1N_$E$P~>ieL>v-;X@meqY%s`!3&T#nGe~kQd_`7(|LibV0!Rgv zjT8?Iz*JCi9_zOm?*C<2@qDNPWP~MsO`7Ekp@2G0T(2;MLM{Xg!sOW_NfV(rQ>pXc zO94YwhU%q6z+9tpAA(y4f^Gs~y8s&uhRF!X;ze7O^*sBD7G0aSd;8p>;B5{{(1KZ* zV8S9-<3J!}8^p^oI zCMkQh6rBTHhl(W3KQ`<(`tLq%sJ0ElqR}F|HUSP z&r$ubk*~0_YWw?l9VfNcYgdX+z~9!m^=fQKT+_h_JHb z7J5;^3~D_JauZpzF6r%2^QFLgWCkZwlL89DoCf8kCHi5;6fhmzXcQ`xV9Ap`VQ|Mf zBZspdN|wZzK1m}GLVv!*hyR_$j@xAPwyx6tpuD>XSSrZ{ECY%bL}Ei(P)%R5UbaR$ z;Db;#RRd^6C{%%n0eM9$=avjmbK?-6Saog~B&YbM_~zh`y^aI!D4IclBPz&;K?3VJ zJqw#^@;L3jxoIBHKzBobsQ6SSlMc1F(DCf0`+Vx~PNmyaMG8s5fGt4Ll@g3R45mv!qdX+A?d4xT2X=O%mr#(Ve4q zC<{X{PcCPP1;qSN5LW@PI;vf5H&-fxpeXsA5BoZ@uz9c|91W6G0sg%Nb{a+({uTQ3 zMy5u}v>wRhgM~Yy&`XYl*xp!6IWk=})!vgT%zfY@b}gKcH_r7yt)nj1*z1AZPSa{U zvgpr42+4C8wC~nseqtvwH~O}wD{IagKlP%(X>F0NN1Jc@2mQkIG=j?_JajqIdlGC4bav z%5nMTFT$leesP1HoIx)Cfq~qcb=o4=OqR+sC8B=(KOM32UF(UF4^tY7I$Oj(o+MmC z`-3NgUo@sjJD5#OgXMSyR~@^7#Oe0?boQqY+LCk`#S_%UmjbTvtNY~U>^g+Z5jj_Pafa2G2Nr_R07 zR;Dz}i%^)WlUvxDerzxp-pb*_XSqv?#l?)1&e>f4c?Z)FAS_p5ZPxGbK5dCB^w#dN z6x){#SE#K(!D`c>Yq>K(KX8xSu`SX6zHb5NIHa6)mCNoJt1h`58I&j7DQKm)PQsNb z8kR=Z(wyv~e8}?KayE6KxSyFZDIqYwJG|4n5WW>-Gnykp^5rlsD|a>GHQaJ^Eud68 z6@W~*nWa_I#eR9a(z6j&ho@jq8V@@UfC0BmUBgiQw8PvOeEfR4Pg-QgGfsFIXQg6^ zf3#J`o7yD=ol$)ma~bVEOays{fXeH=hWi_y0|9gKxq_6D0RF;47yiST3j;e% zRqxCfg*;IO1*G{IiHILCP6<2BDJmWJD;BLC1zYZ#)U3NO(A?r59^$uwhc6uno_J9; zR$%gfdymzltA>WUU{51rcN(@9@vBRRmTu3*` zi}VD!M=fZu1<{$S1XbxBfJ&fJ9SW6QB>p9_V-fT;0XQ>IticCFRM^XsprW^jD@WNU z?8}4U?wGneesKq*jk#F?WhY3~44Aq`fQOYa?x!j?3=jd0=(C6)nJxD_<13QOx0~?Y z^G%8?)RXhU7y$DXsVQk;AV_t-emZ=@64j9bXft_Xy z#*6BIFMqcVwtxNq$(RhjCiM2lly_=MEIs&kiHmXnHiv9Fdp7Y^`MB z8^u{0W?64{#0WGdI};yF4Ep^LrF>NW#~0CivCr?f_m%!Ro1uT8MX5D#-@^0gr~JRm zJKe`LGylmVd^hCjTUv4Xf+VNl<4PUk&(vEP`kAVZ>*-;`6q1V1PAqC&v6z^)Ynq!5 zCY&GW#^EWj0%q)weLGq79R6pOQ^M$*SH~s{ntNVY{`DuX$hv=1KphOeP->UY<`Bq%eAiwXs6s=P6qGT^)`m&NIBZekNFTRIxBHF$6Qdrr1E|t+YzuIv5 z-#&7%`4^Fv6C8)===WU+E#Ew;)ACB7XUJl!FO9Rv_4oa}-%w%`x(DCIoi`udrtj@I zk=|e+u=xa|`+?5TUz}2+)1z{%_TF3>uh3?d06WR4@7ssDjYUzzgufm)AHA9zh~kgt z%4sPLWvJUXI7EsKoUQxp?cEKZf7e4CX>#ot-Md8=i1h5SwATOYW0hxLwM=}waCptj zRG`|s^_TA0mOmjBY7OESb^0#?8BxWQYDk z`-KkA!{+x4r&71`IV8rdUCrD>yCqhaOqeB$Z`St&HgIn)ntzFCwp z=Obbkz+KaPbm5mbFJty2CHWm^O4pmiPE&YbYtjnvgK>^5$Bi!9R%ZU#NDd&#ID(}U-x#=Hk)4Q(Xi7|P3)RR>wcr!YD zBu6D*mZrZs+?c2AR(J012xZ(07b;077H>iN+WXl|O)tE?MPrX(E*;SE{l}$L9^@@2 zoy11La12eUYPso|9@+iov4FXMFM0T6-Y9ipN*B}?AHvYwf2nTNSfb$|>Mv-~k861f zB-_DY4JNaJbBW!2{jj={<&2-l?B$6LX_s<$?rCu~^yYYER+>|H<+R znDF6Q%speck1jNf6PH*qvF#PbLWLV|Nm|Q~WVY|ZhwGxT|6CR3Q`*IRp@cv;);^)$ zK9`p*v2i*c{5ZX6-sR3RGy2Z%$RBobo8U$!0;g+QnYtiOCOzXNj%iJ3-B2RD%(BPN zDI`_2eP-Fkn&OZVl(OYyD(etnFB&T7%_tegQ!()(Ve8y@0ZdG+wxg%{o;;mf zp)aIU{TOGi%2q0BOmZi+sVO9-#7y=oxP;$JQJ2`npDw9*Ewx_Za9bfxir3n#$`nUs zJl#XN91u|8!NkEEl_Irt(}&&p{3T-OdVOkBTB7I;?A&Nyr2G3zb!DR=`a0@98JpD5 z=FOm~L#j`tF>*IXy#C*&_x-B)4cofB6DhevuH8-7Ph=|@&v)|&%wBOH2x}ut#f}B( znFSn55ur@S^G7q(&+%eT}@MvC54nC8oLi;vx`pu%^5ijF6$?U z?l_B!rw@KV6eV@)n*^FP4)Cp*j!YT__#`hYrv07$1A$y4QDJ4aw?J!c%BJqoxSCAI+UsHTiS)EOE78>!h}-EEagZ-?Z&Habzv-eR$5LT-NV{TtL9Wn~#xE~j}rB(AS%vL)5xw!+qk zN#rok(1dvRtvvtF)e|0{sZ+!qSJjOUU@8?gXB9|3J*raqe7MYkaeG0o^WmNMy1t17yX$_)Lc#M%zK#Rhd(u$;R9Gy2Tq$(bT@4DoUAC6Ui(Wuz))uZ1`3pL?U!WRpr%mp|m zi+f%NEpmS71NGfH7Pj+$QAX=J!iWCD;@Co+In<)^#AV2re9W!kM|DQ&+S+W~ED7E< zuvC=Tbz8@JiK3ENv}{vn$D`tNOSA&6DOoE|Fls)fBB+}$S}ax}8lLzTGNn}RjTRpZ zomEcRgVDW77n;>p;-YU`ceOQBh4?idYCYLH(eUfbfNhU;RTV zwmKOOiGry(%%FV~uDOkRMt<{CfYFo?UsNK$lU5psHFk7?Ch663exI7w8`h6jQjtN~ zZZ)r~Xg?sc9Py{>K(BgOU(CWEFfb)&WJc+|3%niR*V_xp8Jj>#0?aZ_p#o+zz#UqDm+GOR7Um9>ghN}8T5K#(bMdU ztZO-`eT#Wu!xKV$JLRe6?8!#boKD}79``wl#fa$c6m-ISALp?%9;j8TPr zUk{m=&fYKS7A=JtrbBNo_BRN5Onz3=H#iv)YnXS!$jL@Is?nuqb#_llOP*tobM5iL zTf82LVY3hQj#js8g`5oMUr&Bp(D~LoKv9$j6LH=@=shi^Dn4m$bc?l`+JqCY9|dQo z+LQCbuJ(82N@KKxW@$ES*dOr=s`aeOqrhfzy^y7GEZ?MqQ?uoqW(%igE2m=Re$i~L zV`lc`BoReS*z}f!rhhZ{?xE!mRo95pShSMSxhKRXytIrBoY4%NwPN} zV%vTsx5dbMU!N*v{^w|2aMsj!?%gqps2hgupTxR`PgGdS%ZKyAGAC!T9`{)MS4 zW>@kh^5Bal9$Kp>@P{O=ESAtL{`2kNZg?dx2n}!A#rd<ZMy-KXJ@-F8bA8Zx(>3E-i!m5Hv9m=$q`+P&r4_?{1lKQ(HRsCNLm2Q_@Ks50 zak4g%qGTTPU)~jfiD7y`ST>#YHNkzDWcH`;MgbIG^@<@mx%ifzk2(Hw2Kb!1yzpd? z+j9H)O7ge!c(!Zmt}XXw^sMHqKI_p^>bzU&B`O{kniK_puGcVjdb`k8vfeb62Meqz zUC6x4-Nw$`zqw(;px-tt#p1%AGGAW)(h}*e?eIlyqPVW0pmUh?5x@X6127TXGI^2Z z41p=u#9{WRMu-b+CeEEDY`jZLynRRtf?QQ5L4F#q$OI7wPUMYUK3Z|jFXToaGM|2~ znsOArHS$&QNZ!_$u!H{7R=#+K zH{w=$+hx)&tL}&0$ZKwJlq^UGUs;*zFSSW3xG|cW4#6%y)gHxZ5zap9npqaU0g?+7{NB{D zg(-sdq4ebodue0y#!Dr@IY+E6Gq{Mm>)ENEcQ5?YAag0X(8A$SHI>5!K6D;~x|!Tk zA;w9YTsbdHRN~U6zLqL_MNZddFOTG=KPq?K7@bwq*GVI&(uzLKVqR}8vv#dBWNr;Q zgQ;e}7i!y%&#YMx((7=zLr5W;j6X4CsQDL0Is2}YW)#GT?Ha z$A6N@#pA_yeQpw4mM$c7*Q8`uoI>8YB&}oE)MqBCQ6{NNZjOmlpZcFwKf+HGVJ@`N zbL``NJ^m=HbK3r_Yk|W#usWblb-vUD>pJ(gkV-FXk}{L(aEb}U;q{X&?zRxCOHlSs8i2fA&tL1 z=D)UDyXWSxeS)u*k5k9yX)zzNh=TJ@2ch%>+z1wShZRxJXQAc~MIE^hC$*|}@*-BPFNBVLcC z5-#0Qkt+)lOm4r|wa-(TY#UHT*`nJfzj|_=R9<=5@x_T za=gTx>=bc9Tm85L7eYvx!>HuHWX#Zw^BX>D|Go^~S{NJe~)P2if(TGg{6P-RJ!Xn)GFV(wb$ueLL4 zZMLgBj7gT>90xS2*^t>sdHZsduTIAH+4cgS)mGh9pZ6%tAa?8to=GCCXrP=YX}&q6 ze~-<@^9nND>*cFj%MW~ci6+@EcU=lz;*pFfJE^_DHjr^*;wtJd{P%+>ms(OY9lalB zq{do(h<+XvG!;~IhO$Y$;UWc96(#?OX*F~k>7r#DoulFqe3fH|01dBUNGlW1;XXtq z5KSGQ$vRrgn(~dg`7oTJt7t@H zQsee)*T)rdwb3(4@&wYw74ozDgx!EJE|sy%Q$KG1h1O^5^+jVen#Q%%oa6TAF&CJx zyP8|&tjXg5*Zb}f!(_O>da-SPA+csG!HOvB7zpXD`(;)4H*xdtNo`aF6yqhRP!T^p zdO`2@MPAmyUs?};|a}5g_W;O-0>Bt?r}7T{MT^aSm8&P_%4`Q zdoQ#uaZWTH@U*a6(}?jP2XtSR*gq>3!yFwrHh%OyZ69A;P+vkSwU8=PmgyWWTfQu% zVl-}*+T-+S&LW=?4JKL5x!-50pAsC_879>q-?%kv0g)=Y0O80u1!j)108>(FbA}#& zaJl*LGlB>4rY6PheaykY@Z^iq@Fu=KAujB__PVf6ck7;rsuvLb&JK1{de^)mvo6?b z=j&QBD2!<>UcXZ+z4Z&`!tYL>edx8?*CGvV>Z_J!ySiWaf&2Vdqii0R1O7^>=B~<* znOaQNhn}U!Vt+t6)pMEDUPgKx%DCAM5c~pJQM7HbImu8u`r2E^G1y%W(YHkqz2wQj6XjhX+ zYd+z1VBq#Zb4({=@y%0O`3+k{bmh;F`tY~vnI)^5o4hWGdz8 zw2FkN7)}j;7XqH9-^g$KL<&}X!a7$5d!Lb4%f41n*?c}9#YT0WTQqn-%IYu4wXK^Z zUAwa>tPkEjfAjSZHg_lVZ!|VmI5%Rw`2}U8yVgv_7M9|t6=vkQu(_7YPFWFRQO0>y zwyQDP#T;zqIEQn!V;!Fs7DL1^iiLeiB9LNhHqh2{xKiI^0q+V<*Y;8MmDQ5Q2hK*0 z)+uU`^!O^=8^08Mbe{lKgA%@+Ar|{p(ag)&2jz{QcH#Q(7j)(|-onsizf>I=GpJw% z>;)GqmOF8q(PQAK2mmliFC(MF4-(IE1Q`G7nYjnhQuL@SI+;$hT2(-C8=WZkYg2%% z5`*CuWt%F?BvUz@f*=k(xMjC5eLp|PjC37@G7ur&T+^LDTF>ib<*DN~7fxmL-jzwk zFfr(CUKI#BP#eG41?Pnxy3gZ8RBQK$t>^x(sUmymHduqjWPZu0mtFFCE3?E|*`)5b zFl)Sg^{#QZcp6(js^AM=lTT=!fX~{*ZAZBbpUxF}9^)||Mqlf)q}LyE-CD2v#DM3( z3-Ki;pnh~T_=YjmlMUQil3sS*Kll}m8=MBuyG+kzO1>(fL#?qmQa(%1$mJ-?g~7Zr zI!4m2-#6Kqi$b^7dHmI_+PWDITSnC289&P&Fx2z?3#tX>*ntr~0Vc*RSJ> zNb&R}f7*amzEVQa+swe2K%PCA#y5pJ9Pr9AaJ)EySB@jq7bkLz{B%4A0oPIxYDsw8>j$4&8^tR=_Yk{`~=QJo!V zj#hGYS!f7Sh%)o6ovDlorJajzKcbVrnVO1a#E8D)FA;NRJ80hPnjbUM<0=+{8X%!Z z!v&dye%oGtgtQ8)xP+7P>B+G+fZkMothSDWH+U_YPfVRiI)|gW(YqeFKX0pCI!TRw@cA+?aiW^?jUHOWQ zH^raPTA18x^*Lqhwp{Q?e5Oe7tb#>?WrEg72sOTrxx_W)tPDEHcMq@O(68GeHuH2h zTEk~$^tf^ib>wWnykIV}d>w}KmF=EgEwMh?@}EM1_5o;yU@D#Ywm#Jhh5*RD~(iinQ?@Bobo5KEk)S}Pt2G$Be^id1cg z(?<^dAQ8JUMS5t#wB-&Byan&NfyAUqU-7-8)zso&yw3c!AAzny@pM@YdbaHdGZK?y}M62z#jbCd^Sx8lJPir;%>yYqNDTC$VMgJT7oEyyp z#YeyT$Ap5Gf9|LgP%o?qz0jk(3tGB_@fb)R)`3P5I)^8bstRHTq53cA1BOc7;+%$_ zh%eMIBM}tk=xXR^USg|}1&W1x8fcAy(4Bp`S5dtf+XN+MOm6`D!~+b4?EUkaiTLiZGOTH--MREfS~ z8JFFNdP_i=TiCl=q-~W_Sm-#k0{xnfdd|(xHdU<9Y@Gq6Wz+g@C>m=(Y*FYx>%aPe zO)?1eU$VjjKRnyDZ)yPz0`N^ndtrSbYGx@q_STxg7RLba5kpvzk~NzHw@5#dzhObF zWi(b}h_(y^!`dVT!+%uf6>wgVM3*xt2FKbK_2xF&Jxrh5qRiptBo~5^A`utSx@4vx zLo1IJ6=DbKjIc0shnveMlD&MHv*R zuPj(L6Lrf*xvXm~^cSNFhFa&x@bU2mD-R87fcdWC43&LWA5(@=Th$_Hr;Zmffb;t6 z5n=tM1>ji<7WTVX zKr7;&Bk>Zh4*JWv;iJYpu3EuHQ0-SVSH5nGmmnK~km*pdX6exJqRF&$)&QiaoMBKQ z3B{n!XjS&yDdFnt>%#`mtwYZ|q<{qMBUY?Nmaa$+1yR`J5Vu#W*xqaw+RPyaEViYm zCmIo^Dz?@u;tf_q4X}=mjviyC9;^pWa7Mf#J9-cuQHKqnnZ+$zl#fMOusWP@ZX!yO zix6=OI8!z0`lK{qak~ul25xo+j!JE&Y}wcKNdnnZ2)c2j)eTH0{FFYq7=)=+Vk&?w zzW_?otN9}TIGf6cW4f+EA+=;?$21y|$Zij#uXfHfJLF!fk?mY9KL4-PQJGZzyz0Q! zB3_`1d^%xAOL-c>VdUMfmWz2*j(V2(u+G?uy%TXlC?Y;g9UiVGBqCu3 zsgl3O(Gzr*6!W@bF5XMMYz1oUURMHt^{08PnhMRPTQr{ zBBEYFNTLYIj02M_ZmD~A7G_ZFT!S@b%o?>qfi6oi!l(sPhF(d*=o&Eaar6WBtx8At zz5)}j{2{v0L~=0_pRcOYrdWYw*ZEPbqM4qnxHFPca~Jn8@sH1`}Xm|?07N^E41KvZSV+)-QN+> z2d*(Yp|`@*vwj|Q7vRo)@Eoq)DEucz^g60^oyT@tiZVL4l(p5j6#PN~V;|ql*BL$kF(f%W!?M@heZ_Yk-5xnpFmN z!FFqt98cnNb#Z|q)bY85H1$MNvp-wjb95}Ek579${lN{Y-c^dmpfgkb-MlXGsoj7I zetX2g$zqdiXJ>}C?`R^NhoxnPVOdRW9#43DW?WnxC$zFXE2syrw2_&oWYCzH6a!(q zyePIS0+dRhe5gq27?1R;s>KYhDa z2<~sC3HnKaGnxPg4x09IE>c@oBq%=Sq^utsoHg665+5H+yUkA(tv{b(nDtA z1R|KCOylq%=)Axuwa8brK3kG!^ZA|n`Ot$N~$UwK0vSSoSX$6pmV1yXqj7#V1otAe0g&FtFB9XaZ>lHWd^d+Y)S{I}IyklfncUWjoZ>TAvV?gp#P zxKW$ADQjwKDkSAu$Vd@j1c+_hvEOAW6b{?WgRlYdp8W7UUZnNchxiG5z4MXX-Osi& z1;zNfMT2+tKms=Hd(E!}D*|RN=ogr}fdp+m(`GZ%D4S>d{oR04f9(;lz{Yl~tgLMH zEz`!^jX|)lW^?QH6&v*|$PLDippMU%_jDq5^mb?fx}j+N!v44lha1@J8&IOphB%_I z*Y*kub4I%Q6d+z&w?=Vy7`I+`t~55U3rQ-r23Mn46eI?o45P3CsML;eZVR;=(6?@q zeQ_(gVl}#SroV~~8kNH;F*v_F1gauU?* zYiJFmj>GaESq~Cx_l+5sLra_+I^8MOKdmCd0(e$G+BQYvD=u%nmpamGuC_f@K8dvQ z9e+v`=<~l;n?>$G1Zp9+$koQplRyU#d2l4)2jU?h=o{#fjc^CDA_M1*J%*!?3J6n8l3zaE3SO36G<=VN9LtPs0>V-(Aoiqy(#o_H9+-v@^@ zGBwnWef0A%VT16ts6DwY30{6~mt1kuJ495^P#x$k+cOnu3PaDwT#(pDfeRDJF6My= zdNKvkVl)H^@l7OxLHz0>(G&t#k8m&F-^jF@|6dcP8MjFH0i3T(UdNtFJ8swmciwusvL7*BDJ5PvaL9J7^KPTrg zB8OCg@+BNWLU?tAO)3&4R#s$2152^4dApp6UiR-Coo{tyX#{0%YqJ6m{u6l@;xN;e zQ_m{&h8{(_KWO!WPdEkYwRj}b3TZ$^O^#u;a`Bj5S&hH!u%Dd-EIX7)#7=JK6<_1< zh+2gtRfu+I4Jtr!1VtH6$b>^)j-q1}YcCXft{0kaPJ>qmX$rpbauhr*;8K;_laAmJ zY;X>JH(&gxYUgX*;VN2gHz1^z1O*x+$VRP*K$BWjlOm}hIu8OasNDwlScz$})Pk~W z`$jK*Qx`g9V&ku+w<~KO6FCa&RtsqMKs|d3riWhG<`in+35hEHb|aj@M_(FKI11`h z2(Rflj0ndGeN3e9kNq@%W9^ zMd(752OUJz1mkyMXyRI?lO{@rW4UtXxyZ&#FDl|%i1b>{(vN6x9#zrnU&2)-9Gn#5 z_k6(PJc za-1DO&v6uNqd{?Tad#6e8m4;BEtqi`@lt|<4jR#q#Z$J!W*qyy)TR=W=fKmq7CIKM z$fYB&XR~jxMnFX{HhQU!lBw>jsve~rAh`~BN7UNrdKW$-$1z0NV^$J;~&*HcKOAjzf2K4 ziKeQGIA3u}Rj&iNZae5+GNuPYUF>r_;q{RBt%kx$fDvp!KoQd61&ua9NUlQ|;5e%3 zNzznVjZsbIPo){cLvkDGCS{xA5)`i^{neSh0B2?@o_M#v6x31;D5G#JBmn|`W)US^ zD9VWj5oM(6y*gDPS<;wMKf172GhBgHGg=jaO?=WS^fMdXhh?Yg$W1US!^&;3P!3-fW?K;l#R=*qBM`CRtzEnH7aw( zIIiD7n~9w=`OiRjEl#LMS8a7?Z)!v8swpwIiR8MnN*C%_YLT`K0tHZ~RD`5ZyN^p_ zgOR*!zJ;R0HU^BL$x>@iQXbpyF}NRzY_V+HT!W2|28y6(g9LfDJ!)|2=R?*JZO^N~ zgya~(JfpCujwqoMKKi7aUiEAZcG}GJpw1?4nK(>G&MAUW-X+I-jYbDDcwsbugjJ7`o z%ppO67a-`Pvf;kDwiRC{7MNXJyeLH}x2XAT_v!mT|9JV2Q$IfTdGq{_GdGOxW%isq zPwBpP*P=b=jPdmI*tPLa?dpJ&xO--yFCM6i$|Mezzs!Bix%>3bKVnba|C7^kb2F%D zV9ca!J&dq8KR91Q?g!)uQxtF4L|zw(&#UWP8U`AsnwC~1i&;a&#q;ORJvJBndO3gm z?(ewAMKq+gZNg4DMJ?WK;YnhcucBm`3#n!B?F0YejuL;E0{qmOy}pA+w+|M4MN^~_kdheC);Wz8g=R|pkPcGep(R`PU^YinmJi|5!bu=eVq`iE3=2byNqe;S-ugS_KmTRvr zHWe!IVVFiPSy?CETlW++u5_8??cIn&pfjs-%x(G#P(gBmwg)Bd z3K({InW^d0P4hd&@a&Qc_YC9_D*!zcZ0RKuE}yq2g&+oDm1446FQ_AC^2k<-C0rDt-Y9LL*7WgUwYbEsZ{F^ zQ5(bZc?z=!RPEio=mDp#YJcJdfk3GLY*TZm z@JetKG~8{Bmoh+&cN^eDg-`f?tdSe{f#F*ytC4{Z8KHVg8VR8 z6MH~AZbL$rmX^lbG}E3QK48Je$LAl`pHjLMw#)8qC zYw5FVA_k`q8w}je>$>sbz;n4X|BOPj1B56zV&IkY>Q&7g zDKik3&#?z5_B_>QJ>yU!G3{HTk$(MzuM7xz*DYeaUL|bp_8MO}jyvQ%C;Nn_3Az*i zh@--IeOkR!=k3bZe=Da3enxF+2^G6eg&vlIO8M8nNP+RctySujQx(X>gI$B5`gvN~ z`J%o%o6xI~0HNnSz@h6c1ua?&RmX81D3TI*q1q9-6nH*|rFv(91vI z(!KDIn54u0f@%n>k}4Ma1e{O`1fe&iKwZ<%uCBg*xbrtmP~{3WX6V7n0n8=)tFJD; zl>jhPHmGWC&7}{V?i%RVZ8ouUaPWD=30g&gX8v)k>hHh5fDRW%SXD5vg<_9E6z9x) zb6lOdzpfMMc%yAepRH)@VOPL`wYP^Mw`XS8jO6iid0m_^MZ)XP7WOdYkoRIv-6)r2 z4|XdNv{hrebpE^P9{c37RDW-8#%bwC^1)3KWZg}O9s(1?)??m#QwuevXJ*bUxWDV8 zKX%E+?Z8>)kKv1>_M)|D-XE5Rd0%M?0~96Zn8jiSJ6A44PuN(nGBPrBd?tP@W^gC_ zvb^^{?fiRjKW6-wKviV*@Pz$yK8NWWfKjyyb8~RCwxy~G+?!OdSOjyKo}0^ih?e&< zTK_{IeR03P-=_ykgt9{)L7=p&>&WB#@@(Qblbjnyypba|!Y>yn7_T^A;7Gl!E_{5N z?f_h+8g|HJKjswonVgiXb#2#ea*8b2d)Q4sQ z&@bR>Fu%u!Q#*l>o|UDHtmDOMJ;>t}yLX>j_~-H^;qtXKf5L*QV8OsVgv$ahOXCj2 zncgBb5dHH5gMJm!&jo*C2&_KpFk1~lRuaIwWb#BU-+~} zni4RsJ2pBtHVHtx|G=Vk87T~KIffS3JY~kmJXM~UpP4?ue7yDGH~+h14kcnr0d%}Z z@|Wg5&pYLtG|~wO3Yx>_T3utKK-@Y65hM^YRTmHt=qs1YSehF!Kzx=n zs;wQhkD4(9{&-$W%AmcyUDWBz|HIy!$5Yw1ZNrO3X`(Vk3LzO1A`z8YAt_QQDzh?6 zSu`gzMIu8HG9@8%gGkCe6iHE;LMvoitZzG9_x(K2_q^Zxy#IWEzJC3#>WcGR=W!m# zK5W~z?|T9o$JGv3QbHGUsZ<#2^QnyWH)&!l&*fXUZUr8{3e1+o1u(x9H-Y*KS2ODd z`{ck7XCqAHFvC1n9bH|S4N^Ewq@iLaAn}@sRi~wucD_;lP2Q;d&+#17%s*aACx0Yu z*Vp3x&bNSK=})ho)c#3Z=J&m4YwMc#XP5&xrCNd5kUhdZ+VSq4PU-C54y5eVbuLON z27;?C0vX*RpQ?PnFIn(y(_E$g(<%#!>N(M7E^9NhN%R;A1v*Be71Zx z-~7UmoaFUQ{czZy9P;l{AHmgk46XELj|dA(1Y5mNP&3$J;y9IB_Gfg|y-{1lcKCCl zH>UUGQD>)@<|!z_nUqbB^;_|l;}Ps^Y_l@<$;%#4F zUvbcO>uP)Seonm_ac-*H+tt<8AX~6fIDfd?Vb7jRIL5|?A{rmG-%8o26v+P|gtqSjrm1}v@>nR%* zOU$!N%+D4CJo)0w@F_3L%zX4nc(&JfE`>VN(PamkZJ@KbKy2&Q1(Nr;_U~Sb{bKX} zjO%+?08Cll$s3$d9`b$-`;zkzpPC5zZZ9%)EZMt3D3t!$${`^tA_~q1gTf~!CQ*R8-*k{MOS}Mn!s{vAw=n6c6#PR0_f*OH+e?P;>o1rD< zcmJc6 zoH>;Pt_#f64g?->cv*Rra&sNRwx*b=-3Vcv3U+-}_ZxHdm$*xH!tR38+@DexvR+<~ z*g$~5j|T<@wB*=sDs)?qv8l{{xWCKT_2>Kku_>kni~BH+tRBfty1vS+tl@!$6t&eo zH~OsTUq{f+xiv{ULeYo%?)Da*-4~xz|K`RoGJC&jc>Os z-n%BmayV0^?c2G9be^9q{#Qz@D5@D@D%?J4JIt9v>3hxMztq(uzywQ3G#p zvI)w14u8J+Y(bwt7en3RaWLcUs>QGN(Syp2g34j`f;|yvZ$ZYw^!&Kwr=h>ksZ`O$ z%efMO^*^p*39UmK)F7FN2v-MDTw!5hr4_m{U&7zvAMS;=FRZxt$zi3<$qIl13A=r! z`!LC+aWK35%kWfqID030;qu7Y-9~)7!|8J>;`05Zz0oe8x)UPOz!%JmS>7Y~$~#@d z5xrj+-BtIao$0Nd^!(~mjlhS;U}r=wUiLvwh%o&$FGBsQ9J!Y)!jU?SnC(RmPri5W z-WYhXci+zSfi^sX04yo;jSLX2Ho*`j_B$R6w4A>EwII=ndz)F?&>%l37>|$!-`Rco z1LciPP40-CXV%$fWM#GDbI2jgIc;sNYd6(d0?OVUY2sD)hrBlnRL{D&$?1!3+0sBP zU&BMqt?)F+ldzK`%rWpvQmXHmIEQ6M_^wKwmsMovAp8h;(>Qd#(~MOn2HFq%$Xdlg z@%!in|2RDz6JBDTK|~@czX=BcK_OG#9jc`BqNck0=+!<{oBsH5I0mG|SfE#EAK4;= zTD@7odGo4PMO|Rva%Cte?w5JY{2lT}7p7eogC{>d5P4H~`7-l|IOXEb9?7Wm&e-wF z^=F&G!)TpZq6R?8k0bsSbH^_wM-fgAj`4&^b&1z^um2B=#QI1}ZCjiCf}K(HYL4ppEenI^>?mfw*UUHk z&Yfg_`qw4S#g7&zT|Nv6s-WU@nmyC=Ijd>_Y61JuH>R#x{n>x@$^ z%Bf7o+LEH8_2{T<&3i#)B{y!CT)0DCY z1W5x>oyiMtM+gXm5%jTEtpVMv?K08Z{>z7@CZajbz1YAzs7^LE_1L-(u#DOgYX(4L z=_9s}5?TRN;{5sZ;#mvp^`6hRg>Kp>i*U=S>*2$_L1lF*jDe%GZRqgZ;~8-ZyUY7e zwFsUUAyb|g%~Eiaf{e@|c;IGW4}$H~jYpWxR67sH-rs)u7B-f};PzM^2wUof6M)v*);_gC)!6+6_n&fv=5>ok#Dgg4g!0uDKo~U-&$ZF^wI+B>rb; z*!1ovhgR~rM*x;qS}j<-ydLT!ckE94Ir>yPriYWuC9a+>tY9Cw_+Wg*Ux-A@rf`06 z6Ughb;Ym8ZhDof4a0|Oou+?d!p#Yl-V#F^$#_zs=|6Y$(j$P&0SkmPA{^Y3X*;?c< zx-h8EFofO>3E&{eyF&n4k|OzTlGp)yCz0-^(PHe|Z#B=SJh#`}mlennqpY z;Z}Lpr`>Y{I-p6u>|+JBS|#zaw&7?REZoBw3D=b*UWN1b$WqG29T!=>@y3H_x!nS&PVwSdIFH{&3;u1T z#TVUE*|NyfN2cDjI^H47p=aHnjhC9gx)d^hIkAx^p097QKqhQpr}tnc)!vMbn$452?)E}c`iobATC;=cM*j#-h&+GT1L_Mx$JFrhB>0#2^+JtkyD z&->)Sv+abRGaXQ|I>IxL8@<;}m-A5!*InaTbG7EjE#1V*6H=-$b%VDL>9GvR+zJSo zmCSPd_~fNlYPc!;1+sqNNp!-eCq}Zv!^5xg%QBfAIDuC+{dXvR%b`akz`9?i>Ex6J zQhN{35M<#bI>%58Ra;xzBC!3>?As&(vOI0tv9M_0(36v|>4g0KG8~IhUpha2{Ge7( z^ZD>=2683hPIi6ui345b?)2koeZQGM+}?61usZqmw|cN?ZX`;5b(Mv9W#TD*f89e2 z8)h!*y+U7^TbXt|htJ^~8{2g+23xz7s;JfHSy0q}D zaos?{7s?j`N9Ho3>~^1gsd`d)1C7X<6#C~m!i)c z9DpqKuXibd{M-@lCG1{6F%76V-i=A&GU4_}LGqB}ks%g5@=meaWn{)NCwu^O8l&y> zdgj7!F`~1_OMbE&{+>PlY+7N2GnrP{Q4Et&NyN!uB^V;i-PyXOY%{Z#3rvNH4R^0^{ssovMC zRGKUN*T|iD&!ue`zuRZt3LvOs8E~ag8hUHggU2sVo^T1PM&Q(RI49u5PZq3W!NDXN zCRakE7gZUwUL@engRwC;<-Z@TieQj-&Bm&Rjo#rZTsog|Wftd!y$n3Ix0FL??$n3UtqWHULKb`uPOYM%kCml{YJJP}^TjN)=YlCtIwZvk!zi;aMstF4V;- zx0m@8Ll>%a`plVujNIDB_t7#?mOhs3P^BNpn%tV_(AP3eZ9+N&Mwh?do+%;ap@G%q z-`=GN4WuQsx&f3LzVyPbrB=apI~Kb_1Y{|6SX*LUcC`4W2KPJX#?Ur#;6Z@oz+Yud z@MIq!?mQMgHa9aesHrj?rnDhMSTDa=_1C|(0I{hl@l?}rS;!t>RHxh7-oBW68zxB7 z{9tg%nfLDTfC>CCGLB)PN!a^AJ&_lz05suxQRN3_7_ZG}KvaOwtW* z>)1q+>eZd?ENZ!1fxhC1V~)w3d2b`%KX%}vWZ9(UEM`WuA*t_~pntNCcNF3WFwVEr zMGcY1g#97d-%6M)S`V_9@;UbxyRO`L)k90o$art#dF05EVpr2D!>F2;p{wkwb!+_R z24O({>V{85?{s|xm71P*BgUY9cHGrh?ybR)bL%rG-}w^VCyk7aMS#}=Z4*^iHbc0F zp`j@cS{HAOd=-?7EX6=WVg{GoHU;a6xeY3|Oj5{w{v`CRkf9_0w z!)fs>MstUp9JdNW8{iq5naZlEaHpHOwQnG2#{`XsFn?FtpWM|(BOmdz- zzl%GUsHtg+`n7Fv?4sgc5?qXVzBA=3%0aA}vjNPz? zkpps*mYS-CaMpfe`oxaj&AnTtUD)34T1=@h^}KffN?{rIyF3G+A4WCtLaW%dBqgJC zA?Zxr%lL*2mg(%q#&$Tx*&Sjg1y1)L>D}k4e#E4_cU#wlR>qzFr9I`}*E7QSmtU3o zd||Q3eYf!1oxQx;hUd>0I+f5gfOz<<*?No2S;jzMVwS zCOj;T-j&-xGJtks&&u~Hxl{UBM4Rubes(Ir8{Y4+oaUv3!@8$@7+{2HzC(1ERn&18 ze;_J~J_kCkW(Utv9haHWeOHz@-rWcxOB6TxEf zLq-P=vbpUt?SPHy3QoampT^kOq=%XzcJLk3h$M*%^e{;_vy1j4BZDd}>uYPtJc!%( z?`O7|U-&Rmxc+R(L6TubIsR%&2_d_j*f=pMsi?NW6&E~5kfW7#)D5*|#}AiIm@8vk z4ry?EqZf&=M?_SsM#zRt|1}~5$ZQAl55U{SgD>P>lT8dY+AVgWeVX?(s~6(NcJ-zZ^N{SI-jH zUOfquC#o1G`>1PV5Ar-@Q|egaf{uKOzxZc`jv_A&50CsV`wQa(o3-!Pu4vDHSghXs ztTjCob)po)r}n`?Ko{ z)S9Y8Oq2?Zq{>x>x|<>)*wD2rZ2LS-bx|0y38L-$6T;uVyRG44!qBTIsHYY;Z=k6D zdgIdL)n&ct3OPcK<(!#|rhWKHv^fePog1PNZHb<8w8-Tey|(AdVt13&hPGhUWpd%8 zErlk%0->JEDL0dcv$iaj(Py#N+c$TrjotZuBO8Lw?*QUY6?9k`W;FD>T{lXS-nvzn zOxg+DK}EdojZGuky!7hEyCdF7t?%4gS62Go*L_CgpL(e}`Rap&-7Md+Qtvzj-9p+H z)Tw0T0hy4tr9F9KfLYOpF)2Q3XycrRWJ7m$bD2R8(MnD^_6g;!JpnYQEf3Nnr><2L zZ}w$!!dw>Dx@|b@L11p`QdRLDOWjTXy|27V_`tp9)7#H>Xw#6{f63an8yqb?_?Z5a zOKL4G3x7hR-h}D|p*%XZE?%Yl^{A-`U;Y7Ahxj2iha}V|(?(QUBQ*Ii=4S)1U6w_ieY$^NOfW0{lVH6T>rS z9uXJ%{{8-*DVU{Q2`u}O9+ELTh@+aG**2Zp5#tW2e*VlZ9SP3I=0F#*r1Op~T@d43 zV_aNa-RYCg1SRMc{@&>8F4;1jO@b#r3rwKnGylbhZA7@gQq1AmB=Vg?YwcV#soMPu zTko0s;E|vW%BBS5!96w*wgdUF+|PG#)Fb&4mp=C`m9Nyv3CSgAaJ<_=vuvVt1Uy)c zg78i@RUx;Qx3$7XZ*hX$yAL0gO?%-kXiU43L? zOFaIF?21aYiVO~2!XhM<(zK*6gCBOn()CY#Mk!H{J3ortmKPfc(kA%XH_hcs zG=I$3df03@G62x~FoZ!jUsCFqA?q`c4UjA998U1eUeSgixYv_xOEc#;>!vYVSqwoi zVzimVFCtABA6DINZk4(O@0Ip2&C(A1}Xr9Ew8e z#Xm5@CkQnX$&d@a^`egTH6XpyFg)YqQ`#l;sHEgLR>^G6XR|Gi2sPrv;q)W@r~=y- z47Hs-$%rbiK1fJNsIj9#joFM8!;zO?*}M5{j+G}vKkUTz=;qI##WCOPbXYFn=(|-H zDAiK+bLp7}A8Pc2--;5FfaJ4tZ)R=1ue&%-O+KfAPx&#DRHmmNLgGamamX=o!!Ry8 zFphkZ%nRAgJk@O$1m!|d9YuWC3LaT4XvXe$xk9_9@nTU%(HgzLaUYG0o?r0OBH3;0 zT>|eIVv=_YMuD5THKPNhs|oJJzyG+cp;vcoAe~qr;xjW;KsfE5R$+?jg)lA^twvN%5ngR4 z@5)&Sg#&rQ#-jr*f5}YqR3C%GnrSRkQ=wx>%-u5X4G%KsV6pSUu}{b)L;G zw=NmDP4KOBi$m(am_Q37IS4ax`kJ|1;RW)Vf_^Np4Oq3)!aw3)XQrqo{`TeKGHyHb zVzs$b#_aCz8#&I0s=ACi{yv%eiFttk@;bXP4Q)bI5l}!|!hVVY{jhFOP|#Ytg?m@O zo7lx}e_HX?WVUPd_BlZnuBFF?TBY(On?HIeqZU^)C?3lK1J|mj5-{0Os1{TXM3h>E zA8#*oO+h}6sb50nAIwt@#5^KgUCoRJr9J}O|DM9*lIN8+fZ4h!q=m$z@OW0J)b48! zGcxvDT%=t?igQ9~hgIeB4|k;>Hnl162AjyPxLJ&{mI2HFG{`nDm38{8KmvHMqqOus z$-K1^x2}@VGE8$r1A*OsMqAqeZb2>rC6)k$^i zT*>EOnc-f=ehx9S?*V%_4zOc#os)`NUnqD$LfnE)0+;`Bxii>3$C$8ml&zk6$x zOc#2=r@*zS4fZ5O3UwfN-6A8?G;*&W)9D@|&m@bx)N2%0n&68o)(eMJ38tM+90LfH z3KG?-?FhUv0W!UDkG!*8WlvN>CZoM+xyIS% z6FOl)8c>2`#PvGk`pu}2s{pnB|@UP!_28t&FhJ$l$9J;VTRUa(h z!k;uRVnowh;5FD?!mo7#T z;+@C8emOt{uoVbGRR}*J-DMpaoAH?_}{ z`jht~=F}vnIMnpexFQ;Ce*JE4CvbU`_+ew?6cr5HBi;(GodBNTt6xv&KLp>Ngv6JCWzD{`ZN5aXK>RfdGd`IAFn&w1fy zu7o9@^|4&jOzJgbMB8IOqAV(ZjWQ+d%C!0kJ}Hoo$(J$HWe-r1pm$){G=h0Q_3QZ= zo*TVqGT}-a=t+7z;p*R9H3g}w0UnY;M>Ik6+c=}yk-Nc29gnR<(ei(>V(_bh^ ztWddIS@-76n<9t|??gx2D(!&T==5dGdV^yt{$;@p&(Tu33f7id@=UjLk%892Y;$|F71GlPrq`!#pLP9IoUXOj7`zZtAy>>X< zKfP8$Oso+B^>?UU;F6x~=2Q*v`Uf+pSkKUgY$E5#;lrotpVN({%6m4^znVRUMiA;;!!v(tc4elQA!KgywO0$H8|!w6{YZBJYQP z$d`M2gWcpWTSNE{aq8eRjRApF-DSGMRVG6?X0ogn1!QfdOHe4iqF3T zhdLX)WI5OBaSx`3)&6hTh)JZ4LQX)oy-qmfxoN~L5@fpeSlPw%Z{ycE1>P}r;#nA= zu-*&+#}1F*;YrZKR=W4Bq}Zg7qtX1+?d845eB|Imk)KOvzR8WZk9oqKzFY6sMHSAG z-NV3dMq}2~;p61nhust*wy@YDFK-MSB-2^1qf`2l(Lp1lQ-O&ni5ZH@Xi{W(JfyJ8 zq@s?adV|Wb;;)xkNkBKf`NYoqdSvauJ+NM2TR_?9oEJQ=`!4P!tRYG|(~61|GiG)L z@|z0Hz@&fs38=4NSBhgpFUkW_^I0gX&zHqo=6-VcF1RE-;8%@i@ONbqnD)t>jv><` zw>07owI#Yn|D~K9bUWT*x-rKuHoKx)ed7ohWwmbg?G%lzH5@HnC$MK%WpZ+hN#zLWGefrI~`(Eb(l zRQF+L?6NM`%#ha-vAT4}Fj1QPY7_$e*>xsUos(Q3Pvep3} z!CdlIR6m|B=zxz7>THoJ{$kAKBi_y0vnn79ALMSn?@XdFa_Tj1EQ z16?I*V7z-K2_lAhM#ZBftOtjxP8>y06;RCf!^K^QypCj=w*0Wxk?5Kk7_ck1`vsK& zg8rd)CBz@)x5g03|9Z0hVgeA+?=FR>^77r>?@Jg!)SumzGtzA?VAs(aOqD`AgprBj z===BiBJ!EEHiVT-S|Ypvf!i}lD1jmgvqXkY&|Es|I7U7?72vfE)!xK`Jm|P4^sQ-C zU%vW*V^vp&Ep47zWi(Tb#k(Eo2kvfrIpPJx&DoBH;`R%dX@GWLENydjC4}Hp64PQ5 z5)fP#>6Qdqs~8_W${n>^Pp6dX1gAx`Zb3cJ);=qyb^SHpJE-Qf@eZAcPLLgmYZHVp zjyi3tEzx#{D6?Y=5Tr~R0ETj{ z)t>npUk1l{d?`thTAA}fMeycz@g!&_FW0c9GFv46;?tzaSAMiCX8|@} z!T!svlJ%ISdV<$?^4kqUhIH+8WVPC$>@E8kHuKcp#7dz%`#I-DcA%Bo6uvw?9e_0P z3@>3EKzX5O5*#3+f~sdhs-gl1`yfAg_x$d*|0d%6Y5@^v!BAfw`Q5Y6ms`kt30y>{=zcM`1Z+#PZr&TX{HZ#KgpmOiXM_{=zwr9ou#fa4&ki z@U(opua`oaA?Pu7^R4r;LjaNb;K3^s@p|M}L0r-gI`_8Z%l`)OQ|vS11st0Y-$6ay z-Q6C({9VJ{yE_l~F^wsOi8q^=n52>l013|E%Y{qT7%e$Qzsm7J9)Shx+4}>L&h3bZ z9?wfzLtQu2Ikb+1-Ay?QMWuDD^L3&AvYFvS`}SSIZ@UgeZ&!!*bw}->Q=*!uBMaad zom7SOTF5J9YNz2Z?}MkHhPaP0SSX1Q9d`~}cHT$Z7dr&tc*sUjX7fZJ-h4|Sw+xBB zv?XS1Fgok?bgb83R|ry_qjj~?+UoLVRTRK?wr{q~D?1`QB@#p-@aHIe$@XP(1a}HI z9WF2frUY45Wb^j2;Vc6y&ztdSpczOB$Iva=c|;L7l455xCnZ!tK$`j-l7g?yh{`755W z4N}rd=)GCxo(7VO5A^cuUP$_KzC|~)%RqMX>I-01NC$pI!pe z*O3W@7#%r6_#hiR9g(!5x+4LrVG3zfID~$Goa8+O=RCv@_MAn>13BA9p`PaeMM8E@ zr*`d(5Yhj;%W1}UDMk6H*U?f{3i3M9;?AttSl%Cy`NX=`HXtDvNZXt^pEZKga-IV< zDt_ZNTlP<8Ci`M5O;J>*CgSYt+NHgiBOs$x+2jKV4>oHfEGu{hjg(}UU}$wS+!FMz zK~_j((D37cjCHLMl$UtUr@6TVIkZEpM$MLxkT`5*_0U3Y47lIGyRF%>w_J~A9ytJM z3+kndQRbVClF{`of083vZ8AH(dV(s0(}8Rkku0M+K!`vFW|fyvT!^BbqtxvFx8PGd ze4GaD{*paQ^yxhx2geCgVpe9Y1kt=FwF+@qi?+!9Q@p)Df7(GBLhXH`z^r;Ktgrl{ z=}0V_!)1`=y@r{LKS%`-A_ZAtg)mzE5W)u{&?RD>wK2a*#c)Opi`vz;!J)s4)jY8m z4-+!cPLb2TJSR)D<%R!5 zLo`CbT3|T#kQm;RKO1M^5|`xRZ>lPAQ;mK+&+ZP}F?c#RG$I;Qnd?yr9LcTfAyWC` zz|9qPS;>ZUOwS{73Hk=t;!Z+J*Qzisnqem2&|Iv0>rrPr35dD(!u*B z0Gp^&*b%*-#KaoVPXPW$tmpLSSnPAp5pxdB1(dxS1gt#g$|ltRE4S|NE|}V9S%p9E zdH7z8v3I{3n_auPoA(kC4~nY`_-;3R8~^LLK=4sh!By<4vZe4{(q|I~M)Uz{cN`u^HJw`C0ZQopjLvxGt5riD zg8=Ya0JjU}EsrA%7SIV~OjX%-ZjO$bsCZqI63P6M#f`aXx+K^<7fPp2sQkz~aF$Mc z`qYpJlTprW;XbqT(%R36lcrzu&n2Kz?~Ru@NSi1#k7&u_Ur!}1CIAl~4Icx5U|$`+ zSz|pA*eoOoX@DESy;0XJi>gU3N9&+U8qtMRa$9rx&wy(6hTH?X3Z``&9MgxNPk5J_ zf`7Ewg*XL5I0s%7B_G1kYldM(-Atoi2LsBg0piZs<>8#h&@y1}%*2Q>@P3QEDb0pl zGLgGV7uh2Xc$}FjCw!7rx8cyF{Q2VoGJ&vzPd_+eoFP)s-wPu7W zY3|ChC2zWrz*dN=q;K5-3p}rw?X4a9O^4uZW*r9;ySh+!3bZ&RLIF(ac6asIN2?I` zW1&J=n{XOwy%yGXeK(d z7$1mJ`ZOuO70DFTs`cLr2}CO%vzVeKO*{&grqZjhcvNxvX!!Nz-0Z)t-LJ=He}6Y6 zKtgl-OF#9eYlr%J&(*E?9_wY%b{mIg`T0;xAc#6q=^JLcwdv@tqF0krIsZih0(4FT z2`|Fmu!Ca;;brtcy0g&ytgzXwK_5CUP}zkD(FOt$MKJ1tRiLihvlJfIAw9^FDyMJ% zS8$|JQDL85`Uu%~x#e!MAA6fyTL+K|T1N>A1*vjsmLTK4x9#NKlsb8^**R4kn$U~L zeg&_B0mMeg(^;SMU6Oo03HJqge_Q{xTftu@kR!=?L@S*8>PKv+8QR)aUVRO1HcsS_ zIlzLtwEX;5uZ+UNqZkBwd2TA6aTIKBWV7M@vWH38kPqxbs874_3$neIw3N8^;m^b2 zwc!5aE)4ISC&H?$rOjpB`szJ;ky*=q<6J{50fWZRNQAuJ03=Ig53oWz&#V!~NvuGQ zgMgpV>a;msyHC{v_;4%I_{J>m>*irYBiI`QW;qCiF$WxuqH^|w2YazTF3XQCR*UNx z`dh5p6`j@XfPywsWC@>n9HfX5N`pv9clhvTfbItCnc0wN{+I3RbGaLNad$I2CGB0o zsHJDlj?lsiB4&zlD$>T$BXwc$&|K#}>sz}C{?ToyO4?6z(LO~t{%QCZAF@!O{EGS^}X}IvuSwnqq=S_O1SQ}9+fThyzTe%Hmwe1u-nr$ zsoPe^X=Pa4P9i3~DMjBHlm>thNG>0vlZ{`;>ZRRhyDKbU?#QDBa7Y*;W-L}h;#>;J zf7F97!W1pxwRUPB+gBzWmozSR#TzFIQX3fKdy4LM#e2E{LX0DpK#VN#*m047#K! zbYjnO?ASqATJ&)^J5h%JwqYsUKFGE8K?pgXzF$fkcC-zoFtD6Q9@(>~oX;X28Q9pn z+S-+qBU`n*d?xM_^lb#7nPN|%OuNr8UjGO4rJ&3+9w^0Dh?$qa$fN5oWe7#Yk~!5U(m`ebgr#$L~5_E zu}W?Z%ys0<&WVuqvpH9IoT<}jr4bUBGW2TntDEprVv=XH07P0Pkb7T|-H*Cg5CL z+u)s!q2NKKO&{&GzF*v|A;~;nb#m*}+^JO9Msoxd7m+`PioShFVO}#ZDb@TBJW;B~ zJFmwPX&fCvwN%1L4V!Oq)J-oH0Ga3BaA z-eEJd&eOD2{HTzHS{^^14hu&rx{xWV#yf)8z*SK|lnRw08n-O7k!M8^4c;m_B?WgH zoTT;aS?5X=rx4CSWC}tr9YjugV&bN+Z6ZA2QIX-10yl(0$WCCo9=uq$TG&-Dal3HW zw~4#CV={7QO}QKD($*_#1kKKRe(sz3u;i&6Z$MwK+x5ACxvg>Ff`b^Z2}%r1{`fQ9 zgI9izw`nt6E_YdVP|Gxb0FJA_Hpe-#s`b;eU!&AbK6)Sev|Y~poK$XQjFw*?GY>nF zVy<7w_5U# z2vfxx$XM0ZUwhSVMPIU!<7W8~n=jMGaTMB|RI(5DWTkBURMO$0B-aTN65(`MP_G7GLX#0G{xuscbYY*+oHdMCDNJeda zG#mW-+s*ULOcb>R|Me!V7Ymo>@DzYRzE!w@;+GJng7#JQx&K)fzY7oRxAgbA_*)*` z5p9D(wg)9Bs&@0W&A=U`k3RWI^Af$zO1Zf+rHMNt=GU+1OE4{|l#RP@mQyHd@p4~Q zQ2dO#b@!tH=c%b6r)6{rs>A=e`j7{XFIe%KQ`^yQAD83|z<@gE-r_|5>cWKq z49eKT3VjM?wRk0I3`j8@{c#4F^HK50o2A+FeAs+b1p!iQj(X>7G=56O5*jDPukQi+ zgQ#6X#e7vySc}~q)X+@%+{K+O=kHuKIR3b>@RP|#w%Qe|I8e9Eejw>5d)Wkb1)Ci= zMQF!=mIzZQnINKpmRQBD)|1>jIDrSeDTIB8_75EYQP=z61~i$gH<#VF`*0>#oI}^3 zxW!v(11jg29cQ9g2G6f$!Q{@{>o=5f)jU{AQ5E>}VKXR+gWH7askK;y9-6_%g{mQH zbZoDemUQy42@)2&FG+Q6z58moOlhG@8HJ+y?0?xA=gH0xwJ)uId1^a%fY3!>>_LFX zRr^k#r>K5z@MThUn{x7+w9Gggc6FrkhSZ~JOL2L53Z?qh;P|_KH=Xc?s;TLM{Mp#- z5GzS2=g49!{j=EZe#UU;Y1k7egwtq zf)olo9?W-1%$0>G*(Px)1Z|Kcc*!s6o?)e2N?_Tcxc#-%7p0;*Ga{MD)LZ;G`kieJ&4u?aJUPd#+Sga!ePfPQ%c-KSA_~xKNr@5>xpM?;{_=szFX31bm9roD`~`Fa6>rpQ5=5Ei}T{_1u^|iH)83kg-?)%_P$| z0jltBfKGJ!MZj`T>e;ongAmaS+0cSg;+FdQ)wq_b5qT~tJlD!@l~;S{+D;c4m%gjh z4>+Nie(8!?e&&~*lMB(&gp^YgkA$8U-_DVWcO-*2%rK5ZMG1$18hR9)0XqW*VhEM% zz~CTiXlk?arC&^NQugj+th2y-{DTj)1Rn?>ofzn1Xe@9MR7e{jEQI_Rg}o&)ODQZ> z4m)rgB2*_Atf?V73Z!3~fSE||KCp4;&Ye68=Mqo`1wM(aFSI03wag1!;=JV9RF|N* z2mgvH5RkWNfRxfK%BheGw?S0j(^<0N(j*H-Yeyh|cL+St!jL&uWxk#zSFsCt#W?~< z!6*cV+Tr)^-E#w!09=3@R-HZK!n9Wb=*Sho!u%$+&R>zVecZI0q^0-?i%);^@a28AfQWQ4(`a2sIHc zP!(2IY7pYxXL{@)@;w5EfiC=K-|Rnn5f0aF%!0O$u}Db18$JIJ20A87nLPp9u0I)a4;uBMs8^;IxVcCtmc`P8aoxpk3D1Eo!c=4%$y_@Q1T~0 zbU|W^;-k2znNs3ev|e*&ZlsGtkM+IDxUQEo2%BZAE~w*ebZQ{kpcbL9c#Nlawyd-9&n7y;2b!K@5gOR?g#q z`YGD%BEPqZj9YxuQXBJDtE|z-Rs@J6tc{=YL(E(#x`eW6n(?di!fm6L`xA`1oheRc z2Rs+7kd?Q+s=o;vbzCp5R}1_tbI4Z~hUd z!lM=L(Yu8Lg|c3*d#iR$iOYH0fLC&%=u%nFqCpSIa+Q0osRNIPvmT|VKQ8`~o#%bf zy*A5r$BOaJnb^{aiKHf?X3`~qnbL-~U!QW<`KyVUW!`ITZ+{F;4^*SNXn=JpOlsRJ zQWt_h8wrHff3J>^b8MI8zJ9RZE=UJ%(p0 z+&f{`9 z^KfOC1w~Z3J^P#H%%VWOin;*<=uwaxzs+|nMctZG{|1WAci_`x0|<0c$Uc6MxTG^2I|RY z4;g;n_R=#}CK_k~pS*pN3+#OXj>M6EF(%P4HGxEE-K*Wr00SOsuzA*anAtC)lCFJX z%yMqS^gepkIe|GN`7*|fK6QE~F?d`Xp858%`tzi}AghgHER=VIinLjpOs+{nQzxWz zwJ&^F$S(V~Z$|E-O}Sq~(B#phk8B_3o*@{}^ zCLFJS-fh6ukr$$Q)^!^;v$GtyC#ww;cqgkibr0f_z%yg~*O$yLp>UZ$v)~HqQ%T^x z8Gpz9-If$l-j()1F2tWN)JSww%!KUK`1(m3!1dzv1=|Fqec8EY@0Q=#dy^r$q+8#; zduCN2wW4c4jgAkhK67KQRVq2xYeEZtfb3 z%E~F*=r-j#A%9s@S5(x!i&k)cfHws`I@?Xrtbc&=BDJ}tB^jV*I$jshUHp{Y^^;tr zw7{W*yt|{{SpzNcL+*rqNT|GD+{MXo_wW$o33`l_y|IPKZ;#cSkimL9+7~<;XSe?Nx0zMVi@VQ` zZ<=F%@%!QIzO&e#Pa-2ZxUVN7c{MH)OJzzk(m}r42>BUono<8ipckxXf)bu90MEr& zQTK=S+FpQ+m&2=*=C=xYE)Rg;pYk(trD)-T!kUxxN!l$n0dz;%7;y2@!CGhDp{{b3 zzAj4}Busv$s*J>EWDlONr=FBeWcaxVP>)ms-T$r-3<-=;|6>Z*8R&Zsp&2ylf9H=k zA4QZ0XRZAeU3n7EB9CYJif7@#vyh`URX?|BJ!65`TiF9a*uMU1m&IE|W3bXS&b-(q zX^n@u8%XeQzJYpY@errMg`4p|;59^Ro|>nvolsozPx${%U zV{rDFZigwi_ZS;T;c-FGzxDgGnj{x_m*@8N*ZWfZ{v^)6f+b=4p+OhVHW7b>U&M&J zcj_1~QRPO5PF3tQwC%Z*wT!YhXevV0@#Nfwixs}N*V9tGf6p$lW2F^%qk~$)MH@zF zP&C^*S)7~bM`>t8tz*1MuEO06PRs}=`Ig2*Z1kIN5D>fz_?s?^)6>2W_k`ms%t}`i zIEZCaJ)nTXD&DG-2@jXQ`u3!o_PnULc&phu%4xUB-zRZZ^!?K@K3zdthS{x{y@61N zLiwRNb1f`*Zh_df$)mebwGmzsE0u5^dkH6uEavr-Mn#GggS9{Pne%Q;T?oC&NL`Lo zLY99+_gQzc{O23yUTQw5T!tPUQ58unx8oVUS!l`mN{+jbtol>~bp;<*JqD|O$igC9 zO<)r-g6k-$+!#SXDxLNw8YHK0f9x#5)GS#(-R0zN*CO7qCfmFG%G}TWt5;B+g*;UcC6Lv`ZuBz}gT1HFx16!QuKY8ptER(28 zyNVX}da9O?KpO_hIwhxH=84ct`Efq(L4yr$ZAq*W?!u$kE|su@O{M0w?17_^$tdZX zUsi45h;X%C^6#;z=)X9$tZkv{POLg?iHZ1;{>OnPa44#ou&r)m{FDS3fo+WqzN*Qq zRcb`mE|cbDO5HPOqTtN&LhA)SqKC9^c0L>9pms(4JJ_0L$?mhK0SP2*w_$7yOU-#8 zUSnywR_xWN($3(AT0(~8^5h8Os@H>Y1P|Z{{^nHO8GPv5J&LL$ZKgme%+4#Po-@@f z-_cb1%>i|UX14k$y@*92MnCzdbdPW ze|L~sz7JG|b&O+&imJsV>5? zy>-}yMhG^6;cTyfnnt)xB{<9tVSEdH@vcK!848`*nNPgcC>`>GHe zUVZ8%%ht%#E4Ydq`=52wytZvhuBUldv8kjvD&Chg5mE72ar<1Wibi5l%%e0LS?@+| z`~Q5-1YV`OLjqxMqxrjKmJ4!)V4%29aL!6ZgUA#X1SdZ-Oe?u@$22k--Sb|Np2wR+ z)fsj1ZBaVO(@J^@yhnuCw-lL=!F|6@TRUW-z*}pdK5gi*USnoSLbyp9dL91rWp_(O z;R5tF>7}J+hWf9bf~7U%N7|O4)kv%S7)dg)N(BeV9^LqL3@Dcf}SD`0$M$m@;+QImz=EBI$Va z!Ei@ab|0FNgxTIB850pll6tX$;bHR33J04mtN?mC{g8nIVpHHk%8pGDcOdBY=#s|<5NtW zk3+L+c~dkE=B)~I>{xc=wNGU7>;ePZ|6;@C-i(%%I7XiCN573G^uxTPmvZ{vnewW0 zX4qUcqe|EIZZg9hwtMJ8Ae5Gtwnem8AsCI@(V%9mbA&2y9e?^L`8OiTxDP21>BDzt zzcAo6x!j09ly)1@t%(s`H>K%i)64&|QQMzq#S}y~1Nr&+Om$Em#!>6~&&M5aTd_fw$6sw(@GQr)I9|pr`R2L!qzApLb_G8?wLQ&5 zJkoRdG@>{cG4&bJD-LSPzsJs?&)G}+D(62xL!0K9QiW%;$t28wzEatUIt(Mi*tC_a z-%R(2NXMYPCJH~fm;e16S$*pJ`8cdaYpnJWw2-l@t(gA%*8|PB`NMn9V`rbQ(oQxc z`$gLZPJYxWb()q2bH2c>c^H2QB_4Kq{|z(;dGe6biW5E4bTcFi|}jL=zEzwk0H}f`4V-bmzk{E-0xJM zy0u%xul>-#$I~78=s-7?6XGNO@ozR`I-4}5SiACuJCuQoBleM&$kC6sz+89a?@f%` z)aRzC+&9@9-=Tut|L?EBg>M2s?M5H0B6L3+%|8~IjQLmV_b|t!Ol$1?az^5X_nYvx zQZp>4eUtC1Xfjq&3=Z77pBs1IfELe~iXR7!zj8q7nJ?vW&{6WderuHKYNob4;swFX zLgDJP>7gW)AU{Fpg-WIxbQk4N{}L00$a*F@?#-HhH$`ivYq0BT0^64hemv8W596U!$6D*ib$xGQ=&Nt%zAQT6 zi=8EQ=iR3>_a5PY)b3aM{-t#ZzUaQjWgMaOC zeB!v7a=QjN_7&|BQs7M*_@V*g#8E0l?l0vo2@x&t&Nj|Z=G3Xvr0OO-31hrY%s^J* z2KmS0k=(krnW9rqdKVh3zb@kedSFSmCkCdB7TU=2lz5mKFImYO>L%bZ#X{8+p2JQ_ zaHBh?{wj-=;t5(jF$voI3s-crtCSQ+zz>H(AE}0IfhALm=1R3-XRW5KY{Rrp89=kR z1%9{XL%HU^4vbObi7JN+G3Z+i2_uhoBP7!(BwMv;X8G&4+%X?2dBOeoy~9z=zCGI8 zN3spuClf03=Wv|pL{Q%-$`OG6`K1t15c$cMi=zj$MOvFV_rh(OJ`v!d_=y3PTPCbd zi^!_zaW2d{wypYZbMER_Pct^M=n91Oje6ynWYkrhp`t_AL;O0Y@VPg^=`7ON^Q?mO zo^=s$DW;C9W0m<-^5mx2# zv)lgl<{&omZG@i6S-VibKUm{o5qh~?nK)ZEb>`eivM2w@sc!yRHLPl5^{MTPB4l-x zdmJ9wzLWiM*~-GOuC&BWk#CIqP?}Ng>k}7)dlpUz%!oxON4CzKw3|iByoj+fu9qMg zssDD-uTMX*%D;Z{`{%PWpL=(628Qj1Yd^oLeygmnn&nE6%BsoBA2E#IO}UcL=8o*$ zzjd+)P)sZ6<%?c8i?a76hLRb2eQ0RZhEZ?pO8>mu>SAUb*SqfGiLFEYes+6E{`T0f z{Ovdf=^eRnp*Sh-+HxXd#(*(Q1-ksQB|m?MGG^+%wC0pD7uSCI09fhwqAa2af^bGF ze1q3lCR7R>hF^9!0|IhBE~T~gh#8806bCbMv688H>k#V^eQQHch)NcyuZY+TDdNXV zcGqb?kfyv&j-?$M(EimYvSG6R#_l9IC(_!4=5-u1Gnz>Y9}>`zRwV5H6@CG)$=)bi z-duTlJ2wJ>oxx4k>!a@Pud?7WOa0(%W=vWtqGEU3iBf`5k>P^j-t9Sa>~eoS^?apw zP>f1qK!omOM~ajlX)#f(R-i zC=C+QDGkykDUCEpcXx*pN(mBD(hVvKC`gMmCm?0|K7dtzB}$7IL-G@J`xIcNH{p-QXj{-amFlB8-!}diuvj(*JuXM)JoFT%dLk`i*tZW%>;w zAp*f-e#NJGY+2e{5p8CO)oA@foCy8?o0)-rJ7j53yzj+?rER63;@q$)0Lp$*g~gE^ z2zk?DWf<5cjFRyLc^y`a)vJsQ_g=W;U`enB{KcNS?rYE5GQWOC<>_;bc6BZHK zhcLZWQ00R!!J~RD#L2I<>Zw^bY)fRaCTBhS#YfY(~4996H)iPe;X*`A8GSQxC+?QhdKm4U<3$3c;-wRB#ih zo2Ak>6!U}4|86Yc5TXjR1DNO?;Cy6$E*;c7eMlC-G`e*cju{K*^QrA>2)}hg7*x<| zs(AqmV3?r0X2t*_Kr}kB5r0c8NISIZ-%P;}OVlU?W` zyv=v+%Q<`dH<#3z3*jt@J+_YTg8nC0RJ9nzl=bU>$FhdwX{s{ges#{daw0NjJU^&y zxv}Mkc(oc-nn%#Dfu83fcvAxQPW@G7XY~7bC@}@B|FyLz0^l+cv`9ytP>9Y+b%sfd zEHH=&4wJ=hI_}a3E#eDNBrWHk(-M+rsBqwpxJn|f5QUA7yKuUuD`Rz$uV$jDJGX(u zudF?ivlT}F9OSxS7K4Zd!j6Ps5@{L&4~h^LOwGBp#+`miMzx;tXs%6UUi7D`mV{Zh zKQ;Rfx3?08e{Z3$da$l&>^7`&kBHqyKgGNwWdK8y zK~UuF!@;+PB zPHn-b>;&0;1Gj)@|0Bz1x(p0w76Ut1{IUTq9+{XBE#N_-Xc-W@wlI5)U#TNayxJ_kPy}#7#T~=1` z$y#d-ct-u(y_KuCi&|ioQmLm5z%4_m5d02RIqvfo@QJ(Oe~}5T|8D{0=q{J#hWMxR z(|yFxZcv_j1eDJ16CXj-!Dv%)1Y@DF(WVuy!T&mk&+vPR4#5pZ2QmAA0nO>%TE}r7 zgv=~^_XpzV39S^pA~M%Nx-SKKdPS({44MP$=+{6j+5&eV%SU6Oh59R0UcVktN}P}R zAUnb&ct@-7JA?>e5!a2{%I@z zAl>%Zy8Wt{WwK^Bkv&`a%;V9$m8eqWE>aayDea1?Aq-TI9#S|0AM_L|Y&m$Rpu$B| zK+t_7G+Sit3&kbzrYs*~)^$OM0K6V2SaVs_K;r}-FPMw5KIqgN8Rv{`58(Y>iSx}S z+2B=q2vEt4OdRsNf;;w5s@4~o^bGh>x$hMIYYpsB;vlUDV;B9zLf}^GBe@BM*Xq;t}gtt@{B9nF3OXP^`k*MhW8fyIXe zZ?FO&CD)&==6O=I3s5*?p*GkF23y9)JBkaCj9CNZKAmH*9oG0*AV>+R{eiulBWKXx9%y@it)u<|l3R)t?z(IS$00OhcQ zHUSA-Rv20pj6=+n&Npl%`T{=1|E{kG=cSKe?r_IjF)Ti$S^BU5o@I4|HtrNi_-dSO zo`bhl0GhoA>uX9Ezz7de@89M;IeqH>zo6e-140q&--2-ylapbG!O~P~GDD%TLg8#f zvhQNsCTiYpZ8>*p!A~v!EP39NlrAwEfXjUjo=l z2&L#61oAe+{)doXC>Rq+W01gizjTGBz?b(@@0Z9iBW)elRXu>MlcSAH0@74(H$o0rH4^D@ z4q;$L28M>naMuZp3Q#+osC>kQLYP~_ntA0i+UI*?0;;SP->yYSLo)`rM;HmrU?DyL zq07@N!j?S@YF5HPM)K#&%J`%kLg=RSM<8FyhXM@j>4Lkv{NdVrLV45!MJ3F%XO8=Q z_Q2l&c`SvYr4Dn4T|pQuNf7Ujj~_lLB*JANQSPpFY8U`Yh31-hDhy^NLYhI*_RI8@ z8EHLuA$lSSzb{eXN@>F7eM8{l*!P45K?KP9D?fm59@aaEEE&lR0!IjgKmIUQ{D-@V ztmN5ToGWf|!_fvW(?W9FuRmL;1>l{S!snO_9liMFfx6H$@lb$i-oL__X!RY+hv&b( zMlSSX0&#p>g_Ofjh1t(ORsbg+aX<#$T?yQG%q4i^C2-tE9pFjs)8V6|sTT=2O%wvv z2ex~^#6plh$%5+ABWLLz2p3`dzr4*^znULR!ukt_<0nI@&4u7;W zIAAbqbCl26_P$?-i=5o=8dn6vU>4u3tVqK|$nB(sZu4(7+$4L5Zjy4BTa)?X{D0mO zR_m|uFjvA%6K~qb+Z*ehUnwQr*lrLI#UHn!JsvD?IoL)#=s>tsh9re17J^gyZ*a%# zWdXv*_UaXhBPsoLY_y`!j|^e;je%q=8IGQPqsK_de zR~4Ziw#>ewKJt_;*ji$ojyR?aE&`%B+lTBw4&Qn^C~Cw}#{)|1eu;M8I1DhzeQGcG z?p9%TGZY(xh<_?bHI>%Mj(owgCX6TOZX|Sd%J`UE`N!AniU^XXa{y2U`{FwKF4W)n zkT<8>EfO~FP4uusAy%*DMST5;Rgl!ArlyVE;9^6zAVFji$b-3RiIbN14zz_yy$n;81&j z76q-m&-64TEbBka=sDKp1)}G8t@F0GZe@;o1q^w_@MwnYT%MA?~G>1n(eJ| zs;hX#J9|5(BNUUMBa;BF*Y4B24Np3baX@wn5_#$myFG&GRH-X|LKr0Hf0J-*IKN&Xi7Ov;=UhJxSjHCHVXb&j zFqKSQer*5IeW^EevS6?jSOlU2!=udyAM@k(qtpWPXAj_W0Klw>IG{ry#XDe;AxaZ? z!P%wze#Qr)#c z7J&Hhk!uTQ^(%hR>jt;0u+fMuI%}pSaj?Fo?*XKR2MRD4>ZB|4+`9eWz0xju$2|#e zM2nSwHZTcM??a*t$ESCP=RE($E?U#-ry(8vIZ6LYvo7@s31Aq()_%TxuSEkMNk+Bo zH(*>~2OB!($|a;K^N!Hf2C8^@C3xE-{j}x)?Fa~}%1njYxI%NDAX%PQjkiJEgP7$a z^(?s0898W4C(XMpL{83Hn&*c=iAP6dipI{(K&gFQ>=D0ndpjF0|fnC$dg&p7Ns z!|dVy9NCAUpt9%rF8JCm<380cySH-fkVOmp$B(%`;B?NC$b3X{5>l#dO@D}Le)X4C zi@GVLy^SRaRF&)ExNo?BDjF2!Sa@NJ_FYBUHmrjquP&RiTxEZE$i$yvxmf z-VShUdbp;Br8LR4-^9&za~VIc@=(B4<^5weSp(AKGgI_EB(Wm|6|5+RL0)Xf3fO8x zgNW_SS&j@X_iE22G<6nO3A2*W=1V13!&+5mZjqqdZ|kX{ zWx)kk4=@^i=``7@wk@QuIWSfOYz4AWuiait>UZC{;s2}3F%zzPWRB#-49&Dj!HtJ+ z%vq=$_Ygn1UHff%bX3rt8}9_cnNbf0Q86%1IvA(N+`X9pD|jxEODzXCuqoBr7@fz$U8oa?~W`5n`=P%xP?txUe~1Ef3HBOM398WwJ2= z4m8l8!VV#b?i!-s`DCX=aC0UZ|pC=KDCX_cdiH#kA6Wir?=jg;C=w5l= z99gQvo#>>u&YsLnM^PiVYUA?`^Bqx6m%ql_Pi6r=1d6F(+8pN}* z$nxa#sx|3TpeL;d^GgB>gr0$!n^{h(^&!tNh^;ofCImkIqKyFu0{9~8pGyEyE!rz)Jt%S%aW_$7UO6k znfGH*P}a$n~D=e|%%NaGV?w3HJ#Tv9bVD=vDolw;SnGn<%R z!UfM2PTmn;K)Mfzz0-l#ubF<$!Q?apIirvQAKDzLI;8JR{Dkz0j|nKcSP*oZtWT9O z382V6rHr(*fWY#{l$yk2em4A+b&28DJI8rTSN%BUa6@r`K06APg%wu1yaAuH%^Am@y&%k62P zI9h44W~Uldob?qKph(t0eC!d`A?PTO^g^K}guDrg$FBRrBwVbdnhR_DLa#ClU$<{* zMX+9uFd*NS!j#$p0oDj@R_4oJB@?(&}CxO@JRn6YhSa?=2aR${%oP>T8gZ~+wSEYh8KY^_+srXK;nO8xHHHRGpd zK&e$qM27QFOZq8v@goh{y5Y=8O7O{W4kB3evw{Zp4QI%4pFfz!(??l8N0Unipmfky zD-kiRJ_mT`En=GjE#Bo*%C12q1_CiDK}Huf=pR|d>599@T>ES2IH{9t0*K0QaqS#C zWzqwx2_)`Bfqpm=K_{P4?F0hE*5A|DwQN`Z`$&%ym`=ql=`f|1~Vr=Yc2Itj7GHq-#ZOteW?jdRk+x2p#Bd_20^3>+%iy^u(r-15H|8s ze{-V$x6!G`=OIxkj5?Mq1U@V}?bh$^V&sWRzpQ}2v6^nW?3WEVg}!TuAO&n`FxxOW zofth4l{?7EIcjIZPKl8#_!mj9dD6idoM!@4P$+M7;Hbcl3P)_UWM~t1({DR}GW&c2 z*t97<_nS+PEaNeyN6It*4p)K6$1P~QpvhH0d;pfv~ko)$C&3wedZVlzcP*VF3^^3w|^yNVe{;qhhppR~vYBS>L%EVKhis!XL*(+-= zb&U}-lT)$mcP-u(V;+}C9~;gZw14O|`6rA+^uHSlRAA6yF@OX%!Ry5+_55es1qM!V!f@UvW@zl8!yL<#V8*8z~# zg`E&ey9!8cFaoQxekF=6K~*kP9~TY+JD&U~5l2qMl(TJ2t&h?cLlK=7S9-Xve?8qz zyN+O6rs3QHO+MFCE}w`HEmJnx!*K*)RzR<4B@PvJ zjA^=9KgbI{r+r8zI}tTt%aE8EP~5rWg}f)a7^1!=li9)^U|hC2ZJd(BqZriGaETus zEjRGZ^26Plx@SI6n7%+LnUdOn2tvkdDB0=%h^hfts$goap8|6!Y>xatBq9o8F}JW^ zR*Q}yc{XV+|Cl3De}lqTYLeU+1l%M%$v3S4~4dr@%QH( z*c!j+TzpXix@jFC9zaikKBmP=-exnkL^h_a0xPE+W{p-=_c46i@VA&Prd$ zSV+RHkdrE&#KbJce&xFP;cConIW za;e++>pEHU62_u_@294ih&PdRuf$M4lZ!KM)Bv0+iG2CRM1iw@*Omt}2G5SooQqvA z{UgSd>Og-o(W!!vOrIu^@$+xJ`6ct*d1z#Cw4POq4h`*Tj#&gz#&kzo6O)Ld z1q?QjVLwtr**iIbFv1@Ul=i`y?VopVFZt73%E@v|{8{31)u@>@zsZ@4C91WfBM;F` ziJMs;6eqCutV!iGoD@Sg2Tl8kCOL=On zNa%vIDNb`^@7)0-bt7f_<1nnRoHS~)AKU|4s=%@e@Mz&Bsh?qjcTn(zNp97Do z6s*96nOCUWU{LN62N^wyyYFWJB#o_f`9VmhnX^0X;ndT!r%~@a=XN|AnND|%H;b@u z9@`VIc{y27dqCTVR(gYglY)sYrD5yO>@poaOfX~Ze=Z(A(AhdFoT}3{zSimB>fVh7 zr5c)LWv6Q2L7(G$EtNl29ek=)jBT)*G~PL^9I8R9&NpdiTR^pDP+ z@TL+wR;)nk`o*CgPeEN6by@!h?~9OatnJ&h#~6e1iD#z(9Y&@KveSuk___!vuanuj z4H3NoE$#naT#f&axME9A9aJ)VMVvv3i1AUCRUeXan0b!aae-L^1IzYYc=0&zj1{D@ z0$Owb{W&Bd&}z`xKfM**O~FfJ^D3438^y#}``NZeeG+B_^4sL%)bA@;zq2$eYx=qZ z${fDU5S8A^n(g$k|Bh1vXE7$1SJf*c*gr0dd(6_pw@7Zj?;P0p*pU?AYQs=|=?CG! zF0f_(Sz-P3X*r#0q<=mRd1WO?mrO3={e~X%8kGi_PE*miiJ+{_#XlqhLGI~ zvI>=;EeQ~3{7*rU8I)qh@~``)B8|y_A3{S`r}XVt*rbyC#@Gkj>6#zn_!-DgB^6r# zRDu4uioD^y)IxvnBa8K7(M`W~$p|3BfBsY5Igre6rn4nCnsVMB^RnzF{eQIYt7(7T zc;*+}YlNQp^i@BE;z?Zuj<*B_8DzGxo2_Tk4OE^zpO8bJ))mE{dd72=G%Ag*nbW(q zCF`Lm-yG{;`*Iw%ki?TX`I(XC5|13sk)anT`n`S*hcSROKPxO#bers%tE4@8^6zc_ zcLA10#>dO#sr=}DTOc3)V@(Y)JCM34rrf$H$?sLz;LalcuV9$02YDB$LX0c^#9JJI z&LIR!hJ8`e8rY}+CV=7_h?RYO`p#h!Nwt5}5}R81qR4MA|5$PQJ(0rPQ;8f|xfJB8 zF)L0B^;l?6pP7*fZ@TPkW44@Xm24DvKLL?A7dB~e{w~RiQ-5QVtnpKa_y^>IyO`>- zXNzn=jGR1U(%D&j05g#Mb8;bR-v0i{WnzWsOSyYzq)4bBBA{9wKsFul^UZ?=oUfpy zP;w@b^z3ysU5dU3%j0QM`L<+bS+jCF=j>b6<}`KQ^k%14P*8N z{a-<~tIaC|5~#*z)cJNFj5{EO7N&m_Eg>zyR;E~KH_C7oR1WQ=S*Nr)|CAAwL#Ex! zMI^lRweed~n!JPDjpyl)QmgNdr0bkWUSNcv=jw2U;Go$P{0*^m$h^nsGFf@Ao=u$~ zRwfX|7BhqD_E=vjDVuAm!@Kz7s5Ti=^;(+$k}FSS%gc`Kkj1F4O?t~?c6GPKbkpwz zn-yUnhOgE`(QT*e&ZSRjk zLX}2*PWRDbkcu&A(#>FgSwv)>eA;PP>s{U3>Y!O-_P0( zlm`e5&TjVF|1a>C$vvJW;!_UC1V}KUI7CKA7m!oH#>p{O^VV0iUvE>9*)x88W(&1e z&vBUcTJO_71zBZhrqfoXYMuNc?(x{d^e8iL#_4wO-be)vH3^y=?Q%T2q!aB$Jnq7P zQ}3jAxWjFn$J-%Re^05?8BK(xN`k!&rVk#eZ9F`j?7{wV^|R@%kbifGFr!&LVVI+L z(s}zR=~u-$QR%HJ*etZ)9WFjY<`zKu$%R6ENic5Oci{%&_ofTFLUjSc`4$1R+$!4^ zIr961m?$M|S&th3F3=`>Yn7@>I%SCZ?c_@E0xKb#Bs+N`NvDxtXWqb!t6mu2e?P=$ z_4{@C>svXzG-cC=o5Hv<*HbVb4>Fz#xALhV3C~E}6JT8bA{Bw$1}>K7?;l4*JYJpa znf{weyWPZR@sOd4I7KK>IA z;Mk{-wuH+gf0o4xay!^>atU!JH-Gey8_!?K_??2)T<=rgF^`9ldFmAb(E>4tf&veBC= z_9k*J!67zQteB?i|E)Mn>@4>bbDKb;rrVO7ellgc7u7s3rE#m!^U9CaRFVr}paHc!Ai#BlEx= z;wwnyi3HogG~@xy1o%JI+_{F&Lm8swdvMG{yU!%>)FL|Tl!ZayOwYL7HPkXWwWWKM zPbFxXH)qgBd^g?HEoU3N67w$rI#7X;ktSmjXv{=E<;fhKV=xVv5VGxy;>unSbXzvwfGr_E53r>l zLqoKRh{Gd5u@O6GvU2Ggm485ly$*?XngIa;#&t+6%P1Cpa^wG{Fnts(~rWXwCcCSF}3Oy)TTgvkx2PBg+&gP(1}ZJBfu( zPA=ZXd5pA%-G>rQizhbJQzhIhDQj9r2ALlQ1e|K7KVG4;#nIHfnxI&CuEJS&F)r`+ z$&KUWYTWw6B%cZ5!TpvtRr-NG5(2em8rp(=fs5dl97NG!1mQwq0vqse0Pj3EbZH{W zb(uB3N)xVdr7pw@uVbyF>5QDBdO&f)re?FNbSC+!!8ID0+-b$5&A!Bv{}#qSd7rx4`Oh8z@yQgO!caL?sE zqcUF`D*F7nUD15K>N!~Snv`8=Hm>{%*Ae8s@e%)g-^6JPh<=`QcYi8HFcn?w%9Ugx{3D zO2ha<6opOGzN&D_(!Q9>j6LU?1`da=-4=)y;&kxoW^;=PJTbrwnwe!YImU)~3dw=c ziGS6P4sV42rFc{rucH-qxWSpfOt1Dh-X#S0>rt8n z+%tT>na_opS%#tEc(PrA&NSiO#P|}7;Wr;9eLy8W;~kJ1e-@Kib5DFU@##dQ_EfvDp#zcwwCd%EZ zS-bW%rHR0Zo10L7`Jv^Ti=+m`gLSz-E8q)H4uC8W^?D~>>_E@NPgbL|p&TxS3^m-@ zDY$$^G{^P54Y3=6l*amhEFZDd`WIo{Tq=ys$}+`Vqpl3t2p~ zF!c~MO9%4P4kD2Vge>|iFGf~6B`aEPS`3Sj3EjNv3QmDHG757gN``yxHUGU)0Uq{1 zX)Ma2{dc$9FDI;+(1epx+DSxoJD(>N2~*(Ww9Nv@xPU=@ga$l%CE@8Rc7*N20Tz|W zA23+N+5j^ZF@)v_+^s8*=^d1xObh&6^W52V33(M78oEIBuAJ59m)jNKs?7sTog^UO zM7TGvzsfrx$@xlR^;YNHU3%PRk!7`^AadS{cM22Je`I#k2JVL69G98z3cqP?pLh_m zljdfDS?@DzR8-+a6WZ{_t~{aJbLU(Q7Hztk7t3N6MegFSOT8Q{$_9%C@i!VmTwk0p zWiZx+N=IrW9Na@zKf1O&TV|AT^G*4Yp4^6~g5McyHudqZOjDV+C|o)Aj*J}%zz|$3 zOcI21_}QZ^@IhRTATiE;`}T&CN8WLq#F&J3hkNnZv|c;kp(u=?{`#?*bE1#WN=j8)zo|6|O4FukoV=2zfO((GL^!(W;K-Uah|43`C^A!vaQ&)@#`KpLWriOrT-{Nj+?%5y^=?D$Oi<_5n`xL7;5dRX5*KK|w0@;q*!+!?}{ASoD zeW;cl(lx3TazRNv`9)Rc&aGB~`L&AYH``L84+tm&tHlv#oUxBfc|`Mwb0R8)S0lu!PrbK58G$&xJ50(+NL*nGo}rbjhAk_g!2 z!ZRK!FA)`a-V0bQmmsfAxtjjLF)mLxZu9K?IM9kTI}?3!&#sR?SUGY|Q%g$?t>7(H zY(l&ft1}+WjAv{q#)ccky{|ecPo~DN#&QR5oC|u>wErCsYd2*{;qFe*m(kEL63Sg? zt|v$)>_}%}Eq{l`_G_FViF;^%=z=;2c2~JAMIq$|VZXqo&z!g=c>=VCh2|HJU-zab z-_goUBdWc+wU!>jJ}R+qh||0^62}m`m>+4S3f^o>XaCj?`Ov= z|9uoh&SqVC{_4~=P_@%FqMMi}gyXs9{u#|^h&o+XOX+GwwvDeYZuDgQI-6wQTgktv z`L=NjAt}HN{fkHHb^D=qPy%gYsfOj7>DzyxD-_LlH-482&2}<0!Ptlj_r=`+T!pyX;N;|?(S7!2RrV(oZf7@*0mTB zWZ!-65O~8M^`J;5xqGtZi{rS6_zH=>EG)+#MnXBC)?aJPWcum;0-ok*#DMjHxtMGH>wU;gtncSW_7*P6)0>bQr*Cth{cozWj)XO8cw5Tkf^o#n{2cTjISu0n;%N8Qcxz zmBP2VULBfug|d{{l#j_}{<)0`v+1z;9&L{$Cg=8PFnT4IXh3m%#k&P{zek@%WTkMY zGoFTc9hqoCKBUOUz0YjXzV9C_tO7IqSEKgoV;(V5NK zqAHoNYI$j*Cpwoywykhe1fS^xld`Q^+QAJeX_2EaYwP;GS}OX!lz=E zJ7C8yTPDmS8p*|C{qEkUE_y7cNY1-=%DIX9UU;5EVbp<3{4O1%D}2OfbG3NwWzC+} z1ItFOZ`9q7wk(#vl^HIYmJ6QwUT@v@?AxcdK`(z??j{oADu2&#dqU~3xjPDvSlaS( zxwiyEXI3v{p!}0zRT<4VZd{S|#KIc#nRL#M zyDQ?XujF$Rj}RY^@KWv=aYap=@9o39XALKD55F$Xk|}xQGMcj--3U)J^4~T&2jkfn zIXPjq+3N47>4Zn&Gn(|9<{&shFm(zkN02o}uJf?9d>4icpwf6nLi}`-;gV8oE zErXpKqOtld>Fs&@=}8~BZ!zq2-WObX^w^`{ugs9rFgAm7^RnC_$1E5ot9W@8XHMJH za+{#Gh+oJMnMYR^hz)4NE?-`raOEoyOy4kREXW)@B)sANz(3f3oY?c{{ols6<1FWl zNXZ*{&2>XBqvCgRaxz#2g17UklC?!fF}Usy|Atee>l;OhUyswJ3;U)EhC^ zD&iD~>`>L&ug6+@X42yu_R>6m5^tOgU{rZ02eKr|^#A6S;#PSuqx(hoq`G&~Nz-tS$B4QqNGIEJB&uQuQ@hq=imdh?= zm5@NK*3C~bC$8GZ5`JiW0ACay{cYG(G;V(=W5a$|5+p_#M=Fm{58kYXCfwI_8Fm{4)-+oiz z(5|p*Y++EmtXfImLF{T^O+NnJH}nSTPZ~D4F2W|&V~=uMc~gcl2fvs8=4iM4A)#2% zHaCk*`XDIG8XU5Mx<2`^ffnx$nxc%9*2YvrDl&6MBEhI@oGeJ?W@L!Cg`3W!2Sw>5 z)o4{#{p4;Es7S#X)%W&u-K;tO{wsxzz*}qtSXquSM{y)v>jLwcA>95Qw33OGh2Ktl z^3H=%kukWwBzM?M;(OBGg^04x&~ooLN_6sOY~xXEmb};sj?R~!{*axczal*;UK&us zm(^qTznVKgIU^1_8S;a>?33Jn@?i0i6x0+$L|GfkQ75ZPkQ zAWT6Lqfm>V`t3F1F>b3PPSHc&ZOag9G% zla{N$x^|ZEtB5$GszRhYD=9F#X`8zSC9J*KH{Vd=mAp|!8Xm^=tblvVN8Dtmgywqe z&)DoRU|(D6NX@MR;U3NMw2VnYQb$if&%^%n+JBc zha6`2Q++VZ*E5Wq5-wr#i%BHlj-B%GZAvyTAWzE8GBbUh8CvU=Ob=Wj*{@yyu?g0u zpCIy05b{myz~|2oG+w8P{0~B3?Y&qr;Z7hd!8>HpHB0`+1l2x$g}UWO^vx2!9DSye z&c1n0t$ZWN!AK|atJUJ-jiUzhN!z~)8TPz_ z9h+Sr7qR!MV2_DTLmRrVA(7AS|9YD(-P?-{hv&^mO+`|ZgfQPsnNS zi>>V)^5@`hDX-OBS$PZ1CXa5(i$K1^VE(d?=kS3J$y*oCn-wv|4G*Lv2@_6D{7bh) zl{`69R0rSKE>3)P8+3zz7wha_~2iJ3rF43@nMiJ)wJd>3!6P zdrz!#SDguKsXHho-Tc*jvC$};Gj};VxpzIyUuAz5Z1ggEeK(x6d79n=h`|h~qj;3> zFN@usog?U+IgzdyXrRyRG7`fX2)fVN^iij}yEKj-q^)NuQCX3DXYF)1H@`Saggdo& zHr3OLD4wRD2euObs#LFkouI+49hNEjxpUQ4io453mJ{=pezv#HWpcd@vCv{1Dw!r4 zt=^nh5B|Ekem}2S{ygOAIQ3+0$87CBo})f43FWSCf`_gAP_vBc#cJ>^8pg8efXucz zQXWN%5Fo7yfK3J`!UBu6(jTk2d-%yyNhWu$$#ax;p>$f*(*#|vFh(zcjxN2upj6lv zm+)E1N>&;Zo~)Yj@j;rjpnbm#Te{L-){LnaCDkP73tI0FF-KdvPjsa;)X$4bFYpPU zk&G9+(l8dp-M@3~K9;8To}^Iu7X2>+ zi6xy9Ev*|JCZYMlOfIKn%7dr!Y~0P~gi|*%s#m&}uJ~}^l(?+-gmvg11h)8y;pNdS z=*s^)ZCUaU#TF77ls>`daua?QoH`FrFd(Z}pS3lD4!Y`(e({Ty8Ow)f$3CA3W$(NB zLpSZ_tA5Uqi*xRx$Y~P3-b2@TP;!Tx+#LU^Gp^E?ISb|tY110KZw13O4Pi3!<}fqg zqqs3rHqYug&+0bID%|=Bch+RqqT_x{>A4%_mEf0T3&PToQr&vKJZj`8)oq=oOOJbl4*YNBG2FezoSAGl;xq zA#9`=bV=-2l=*YDvoqV(r5M+{=XwJTHD>P@%rRr7H7v@~0kP>sr4 zG@QuZs!;Jq(YXXV9P1DIDL9Ezi5|Myac9Wi-b<^XoN{b-x>rMU9XB${%#)n&yi9Cr zq+8g!bVZyjro$KJfJdN~6WyrFQ;$U45zac~Do}TRS#dNjIp@FS7Ip|@+7M5hVyv+u z*yf6??Tn&|A`rjHFfGt;fh`@m!LYj`*R|?LBL4F!2nl;NfWSNhUF-ao7+=m|dNl^|s$+kZ>m3r@C^$#}@r2~v;Su4VxdNCYsqq=Q5yqmo zKU#9E-`sBhk!db!b8)xQhpNMNnzwU6g?qAd-M)Q&JvGo_CB{P7%FK!Z5>-I<6Ibaj zZTY_Q?)MLOr#^NI`pL>(zJv}ugygMq%c58piMI(V@5vKyy&4OSUPg1FSxlCcx*GfnfrHr(b8T5a~=`r#7^Vr{68Px1w99L=J&zD zCsz8l6SGN^2;4U#)w8?JY^(a=jP*mlK5`Jv_b3U=e0$wqy;ChS?W>U8A@kG0FE6Yn zwSMT)^Vo-b!KZb8!xbL_o3}>)4(um}Ja`;B?9uZmjn@_}WnC-%9B;(8xNh8UCfM;I zJdogUELyscg~Y-^zNCkxSZeSo2?Ky1*K++uwZ5g_S5mtE=+TgiDv#>* zH`i$rJ3Nw3+2hpZ$?bUr<-d`AA`V*owA=AUomXxF_svg(H~npTgI}F=|64Y^DcJ>c zW$p_(3k>g>pM`4I`Sw2Qx;qR9*0q$Ph)|QF!k++e_aPyzOOfZCffL8#A@{o)@hh^z}INPGb72bn@omhqBkU z?C(^f?!1p9&Bf~d{yJs8)Zpp-0iM5c)4FA2-IC1o5t%nu3mUO`)o+#0J9&6PS91pL zZMcJeaRJhemViiIoXeHUIaBH1ST1NcLTSHvdWfQBSUH(btthfL(0|a+um4GmV`tYx z>dDU(@BD;01}t13d9J%Lrn>hiHy?fAtJUx+O$ZA3ZEL4G6D^RE@{34UMIVzfOLH*z zgu<;NZAR2sJM)7<8*cV=R_0@%k(3EZ=jk>poeOEbq8JVS%&1p-^PYT8_fV0cE$a~l zafa|&)OEM}bH`J`0#pZaN4)zASH}}GUncleoc?n6f6*&`n=EWCY>4$>BCC37s2+1){&q9tJvF-W%n6Vd^ul(_AYB%RL$e65rn(o?L#V(!4HI>Je zXPS0!z~R09Yas4zz_k&VFQqe=nOBQE25qwAjCt-I?@~JddR@VE^0SRB^^L};SGkQA zS3z;&(2z8C%q|OacgLoihQ2narD-T|hX8Qf5>c75E$2w>HT2 zPg8Gfu3R6eSQ;2;&fc<*%}jr6YB4Y{mmMHbr>*YBlYIBG)r)qC=u5+DVT}*Qb_Cl) z35=cooyCr$r*UpD5c&%A(y^tpUY{c3eVZZgKxd=*UQ+lw@3iE1fvKwgrYRoJl@PylpdFDxTjlXMM*i zd&t;ASKgR^`PtD<%rPN)Nn5Oz6k@pxUq@LKw751E&~?n`Z*%myzDIGA z;BPXMdbY6L%yV2aj#d>8--=?|9Btq)AJuj1+#y=bT=Jb$SmTh z3Cvl$Ij_#{`$ftUe5my{jdN|S4gF#iC}eCtc-iSKWn0`#I;$p;1fymj-?wI;?DMkn z=zM18F2zD79^FDq{~-bS_jhmbD=w!62~^LLJXD0H84uWT8iZ^E2J#$x9^)zDiJSZl~^>c=`7u)B2)Nj6}pD@CqW0x4GJXyMB zfEp57-t{ei^tGu#7?VFkhR~Hz(Dle`r;Rs??`7Mydg=__`(Dg~yOgC{w_+dayUyy~ z*nsM$h6dHi^q_)GN+tN7?6e@&)aT#t)vHz`reArXd)MNIIOi*ffrY+G67Z9@nopgP zKU(`oGv^@L*a35$#&?Z-S0ZjEJs)1nZLA9KEyph}@9X}yyYTnZU*AWcrZ_THyVCkO zw-pz2nt5R75`j+avH?3_zJeR!OinZWcg zqZjLTA?4fNa!u?0@(1I`jIVmjhmtc(3YuaLr>FWGehXA@J%27!(DTH6q2p(gi5@dP zPRgy$pLtj;?$XIv7@0vd= zHYO!o-&JGjM4+9XH}J=_@8@Q7eobDnG-}>-aYsjYAx$EL9d;$5^EVImY65RvC;lcq zd__@nBz|(CFqg|kCP%|aQ_`(xHpvy{WchaWozdD%ZWpp8m8*q9m)$)&H>*Xd?lD;S zQobzPv@w>tGo`I?>$Wi7{@I4#E!I@2eb(<+{IYwqu-H&o0w{E0T-8ABf0LFfz3qU` z!MLJxs21A=oE(Q!^f+i3Z%@*?nNnKsBHP>jeZ0U(?|vb?0%tlM1!6J6@z3Bvvh^%}0G7Av6EIJk_|ja?j6Z%KG4Jlm_=~ovYe8LvG26fuf<)eEiCFs4%Mz zTYe8|n$Wb*E|QtqW+=6$KJ|5;)EwI%vkPOi)ACFzulCVw&L@_=mvr#Dl>NciC1nSp zilnZ4LJLvP9hHqD%lbFH6JFgranmgsej;(lLp|VOMdRPPQ7j+t>fH+rPv=BTGp5i> zUwiS~475cevi0g;^D!x`(Mb$b@E`xBVt;VSt2Bq`+xEGB(kk97YMd@=h{_v|} za&YcVa~^g6mvy_=?>)x@RgDF5?1uZgJ_aQnQm-)`O3-ws(%TbCUZTa7goLmhfTn{8dknO>ym`iTassqQC(sU5u9{*6oOus%>`uSbS;=W?|3d7O%D}z~2j4HQ4L`1&kGd|b^` z`fgJG=;ii;u{)Xn{tmho;j`O^I}TS{c7onB)~LbY*(Rqp6EA4bh?pZ=EH4LU%4_+| z*ek~G6V*&Y$cmQeLawmJY0hk$>>b>bE3Y+TB{3zfmLWZW*t?mCbesDlW%S=VeSGJV z9sCpdYc^Ds`2SlT<9Zgi%)jx(36MvZn;IUJp3Iz|p6z67#4@q{QnlQ??>kU;tz(#z zCN3Yr1_ynpR7{rIlkfdJcsOGDM&Kc)yN4hwY2=TsqwTUToOs&^4Iscnj zPMXmS_88e~Q2nzzPIgwkXk&e0=`d_Yy2Qu1Z2e69Iv@@Kk zj-1uSMk@_SyQ2uq&lK|IXxiU@iq87_sX5dxhk5C{3;Fn=D@N4BD0hbUywE=Rk6%0J zU5E4zjR}7oBref4=vLgMHME2O7Zx|?N})nwL%K#8iEp0o7evKz+&yk|mRIe&HsEkP zGLT*P(JL_V)_8RE8ri3b(!>|1R>igs4!7OXP5-Q}+p20$3?%Fb#~W9JoSm4%NHBlr z9F^mTrJrZ0jB`8UMD^l}5XKGO zh?}(k2VGwo74;i+OLv2mlz@b^fYKn{-61U@-Aad)gn)F1l$4;fG>mk2cQ*_%#C`a` z@BMPux@+MVRQS!zInQ&>KKtywh=JjH12L$ynmyZC`OM|ga3g&G6|nfgHm~ybKZ3(6 zsK)EpqYAVLO<7@d2BxFWR)#3+jYn4sV%xVw#rrERCe)r_Mp}hvUgCCn#lfq4^G()? z2wp~OTU&DHStu0hTpWiNTx0$&Z{I&`dtmY++owW@Rs3|rOopC0Ek!pn&tx8&GCwTl zFytIVl$uwTm*U@W=*V~6q2+V@5N7k~Z}8k9;by5`xW`Hw<+rwh z``=^pDKy^NecfqlZMU8Y+EY(~sc@GxSJU$+=l`=E3d;Hw_p1k2@Qi|yPrX3g+A*c} ztswuMB4)1es+*3Le947Oy_+(fLnqZqgS^J>Y_J+J=Y=g!yo>KHE9QmqtZ} z5s8PJ>NZ>8P&cdzC1nV4u-WUCZVk%`3VA$*w~wrV20*y2siMi=YFF>Yb#Jgk&BOH3 z9xov&G9CmwRr53DpRCP5nl9=pX)Bx0%kb-giQc zxdE_8^?}Y~;wq?^vV1%bJA3rmjaGSvCUI)D969WKhhbZ@?rb&zM|C$@3*pN@u&}L- zAdDytXrt6>di~X4E%!Ox%O78uE7M7-fa>mEx=6d|UB8tYZ{js{n+vBU-7O=3%T06n z`qBUFR%qeu(P3kV_pL%a$m;K}?LYHh`5v>x7jS(k9NyV2(oO0H%sSq+v%kaZWaTwf zOMYnjsHr}q>1DsHhq|T}o`O?69RF;hKJZuck3gi~Un5Lwk2bo z3au$CV@jOFUq6^g{MvBrZEULV&flK7Xm{)16dy0u6iKQ07!_3mg2)7?$ry zt&-X|woc@4>f*8}6ZlUvYisNk8Pha!rswxW!tZU)l~B!Np}|UDd3%&u!HxF)G9vD+m~~ zY}gT8eK*)o*ULR{^_C0{S0||1Odx+@*4M2cX!rdBttKz6Um`Nr>}nO|@Y;3TExcK3 zjmM+yKB~Wjw-J?LN(`<95aG17GUJewOm>u1b4WwyA zm*QkKEgWB+ZVGC1dp=h;^;{rrrX(lV zTh&Jv+71*9=g+MaHers#qF2v@ zS@dDmmGt}d8qw$c?>A-}4TKU&nDtl{`l`c?w?0dy!;qw63a&utVfp$T%i~LcxY~*W zMVp(cx)$Dp^<|&)!Is3XEdSfe=97bejQGkPU>@DqClAC0Z0zkRJ@~b>PH%*+@7^N> zQj`|yRGk#evKk7dNA|VDUXU2MFyx&4bre+u@TeDNshVqKELBc1=$>TV?#<2b%0spF zwg0s)pQ~tUCsJM2A043?ygAJCxO#_k;FweXCwQyS!)%l^&Khf+bXK?uxXE^Ohy$hv zMBNu4Re#2+X^$SJ*ocU>a2iG9IAq)6(bAkUQNx!y=@|NZhiq4~z1c zW@-mJaYYA!5~uKi%abG3bcK=c_CM)x581erMc4~P#Z@~lUfZTS4$3O`|1m}i zQ+#oGoK~8mcPpf)cB5s0AP**EJC>Lzb{d#g9Y;Fj znsi)RpvAUHGj|YuTozq?`yMc6fVK4h0HZud*_+V%lbhy^>%T(fAuNgn?idxT&^tEJ9aqSn{AjYIZd)09swm2hj%op}KLik$h*yqv! zlu!T&Fkn}pq_Q%*YIq{j_9R2iXFxlB1+#T)(fHW3m-)P5Gd)|P&Yjd^hJS(5bbm|u zV5Ti3um?$6mRt$DGUiD`K*6Gy~i_Vo8&Ew}%%B5uUaje{v z{U1>6eVS6Lcr}-nE&vAY!Q7v(fLv{=N1XNsDs>=bo1*;obipj|<+z*|VldVEfnCqM zn@P||4_4&qyRQkg40~_mW?FFu%U#Y8&(T;Fm0zO=V1x6_%>iSy<=5ALxlGa{^h=f| z9#+y#w1c&0DyQ%`Vb^mn3i)Z**7>EKF_OM(*D@6?eAxbiVhfs}HBw z6dy0dXHVx};X97gXUc?!+@)7NOSD#dHk$W}XkL2%s0$xEm(-c4&53W+Ty5fdCEH)f zIX1aG#)q{vri7ug`lmihsbyZ8@Z+C#{Iw4%D>@&$dfV9@mw!nuk-B0urs|AHRS4c7 z*98rh_Pu#^ho3cPq}=h{A0}?mxD+x17BdKdr9A?Pk=rPGza%aGf6vbsCQI304L~<^ zlqMTH>krd0zRf2K`)~sWoC&f1d%l+0w;GjW)L8;bCL|Y{7*4Mp;?&jfPmwhjp z46=J-u&MZXh@V<7m_gk)V@@w8oBz7SmQEIq=5DCH_phba;T)zEoVQ7x5#^t_BKtUn z_;*Gfh|IkRP4^HjdG@HxZnTO$J|KPiK;YP)`#pnkZ?M~`zv&=Oe)5tewSRS_VSV42 zf=A9AgplYRlt0V+mbXzrV;QQ9{5OIeD7v))RWt*Un_iWyswkT@AK3iz5zO1;Lc?z6 zoS=(N82veHJfrG@@B}(cgRiV|`QO2#{_oI3-B4dPX8CLXX4j#|+T~}`{e>Uf*$*FW zUolDl@Q?3y^gB-%I{Qb5gb>`yxaSD=^_u~4KyDk)tT}bi`xl`a5oEMp;;+f);Zl2M zLo}^$!Z@hwSvZI_Ixc;KIsU53EYGDmtcxyx-;*)d`m;UUmGe(1-pH&k;MaMXETfdU}*V-rLF#DfYA3~aFMJK6IWESv7OxCmuD!7a9!X^!a4cHEL%1ou@f=Okq23g9v-( z!*i~+^lSu^_CsEP==>&la~Vs$I#T&Of~UaISv`)NK$Nv7SfS>miS16Au&z^DtF0uq zEc2X?6+;-s$T_oO=ig&AvXJwK>$;J=nct0JBsvGGY|S{q^8QiP8BBe6xW-NTu3k4{ zT&D9<9lPC5d%Ewfv|rjPYCWn%#V%cioE;gX#SO~KV_t)PDE|ZW_c~Rb)%3fmzYP)5 z`<_laZL7|e$rt|I$)GMG75onw0oe5@x*&AQr{DA06sit8u5H5|2>X!iLY zv9?5-LU@6H%k}FoHKHHKFP{`ZpR{EGryk<0)9M50Q`b+jxh-dBL1q^lx0nIALzpBJTf8C=Ap%UCzK4iXF8Ap8~2_8){%R zA=OW~7+q2;o)8w|j_0&P{Cdb` zExt@GJgTtNc3Cn9kZ>?7r~83uAJ@idoNNg2tqXphJ@e)yf(~l zj8Kek%3MyOvmz*JhMw0iW@0Lc;OzUO*Cr;FK3zBBQK9{ZPuB{ofX$on!eov2YKo?6 zOZ8EyvUxoh<2=~oJS9JWt|u8d?Cy8s0uKx}pUa=dhcNG{%Vnvg8bGYa_VF)m0;~&N zqv+kANh$GQki7uHLJ0b^=+o)!pSym0{{$kK7WYT;?ArmE>&@Y8lVz1X{@pBoL};?H z_P~QNkF0uyTo=zEJUY4er9+K<6Nj>#MGU4D&yOaI)P8Ktb7ddhS8gl~LK_BrCh3vA zT3O5ZDbwg~V<%%Op{$~UW$Rg+E2?3^!sQN)>$|Wle!+AZ$|oveW?YwwGVjf$;7JjU zTI{ORsJh5@7iuIt0$Z4qCq?_F%P-r>Qv5`tUuMYvGyYC+;fu`{2~YI49l}?@qL@S zSp9Fq;>BsFS(#>c;j3wr5AUK}{Da0akoYSGBJ4|D;ClyWi)Y%>FTXV7y_fW~#8*>c z_edHdQ~*g1T0zo*5*FgqFaC`THt;n-&F8Gg`0dHvxWDD`Q81zY+g-57#J~+QJ7g!{ z_EpW6Cih2W-sJbr@T*5?9IYqBt&f-70K<~*pTn^gG48(j*iTk<5`uu~kS^!tA2L)v z*i|PQ>pB{SnlaA>vs;5Lhjew7Z!tYZLRXCapM}%S$Bp>dj6u-y29EP{a_-Y5XG0!* z-G#1-rls%6Y6}U|S~#CzHg-0aiwKK*V+7%wjRY|HcL6(i)nGjn9s;agL%?>`H^ywA zY7Va}FLdPYlYf`lb4gmEdfKTJn(6H6ziS2G8EhxqqAUIGzY;y$ zW;~p4g3&yFI+mai@FF!(3n$jXXa3oKLSOm&Y15~;iYdFlQvSW1>tcF({Z$1uAYzi+ z^4?rPHNXlIP}SK0y6c<3&;|jt0EjULVCCpZ>-Gt85Q8dz5UHwVC|e0W(W+~XkClrOfS9tXzP>yk1#lR! zr{H%f;CO>>(UFY@DV?0+?CinXA77EQCRCO0 zd`lVawNYSJDUQa)HF355Iw>)6)lERf$*mfQfvFiA$5O=>G}@X4%|yy~7>jin!)?~6 zuB!>w1}F_WV9L1RA2}C4(L5 z$77J6$HIE2kL_qw_r>c_|AMS2_ZB1O$kWS7GxLcpxqGbzvMk*6mwmd`<1xoUW%>F~ z<413V2E>H)yTN6n!JaFRkr~eBoEmt|#38*R69Lo;)m&YMr5<1Nl3H0Vz_QlX2CB}O zU`YuPI1>+K2|w4;nr-zL1qfM3^=FjE>Nm{qLgV*Ed7pVHv8Pcg&QZnu6sqOVz8%U9 zcAu2Q>aMLy%zwmTE#GzzOA3#x+qWlZka9~Nrae*_Rrg(|KN`v%%#`p}<9&#s+xSBv z_I52LspGjjGR5A7Q*RmF1|KTQ%J*%_o09|StQoDqjr(V`u9pnNZ7|=Wk>R=`!ZLR&C#&zf))o7z=d3c zULB5~y;3#gpZTRKzjxC6QFP#-VLYL>(%Y5rs{981mu^M~M{-4~0;ll9yCIsM^dGy$ zh3}Yn&K|cH7iAdz^h>d3qohkKTK_5Py!Uk;Gb6{oRPup67mcHjW}axxHk*GFEBe3( z+&9=NV%_7X?*PzMFaH8}pmMVmZKvhZON^7mh$rQx>Y9dBH6LP*S5y8pBPvS zIbBfZ=P^M9%kkF1UJ1Ru2E`K3ge01cXc0yyXZ>-y=%%;m?OXZ&Sa$I>H-Y+t(y!OE z!L3E7yB|I*=wiTcY>Jqp%oDy=I`_z2N_N51fWC zx~Y1-%J5_krd?1;ZhrW#Xh{zc*7I65VK%lOceW`Alf9^TvQCrV|( zb3A#QoKPP>y4Ub{0ezHKT61N@?%yqJvZaa}BfG}6>z>TIm6H0Mm&ye3u^KE~oEfFD zq-O2X*d?#$u>G|=WfWiF93Ove%0&S7eTOR1)ibkYJ+&AV?ZaY=2v|xkhZQ}w)ETty zMZw#c*9!86efs_5=sO5UEKlvp_~V1H!P`S+i9wY3he|xN>iD`E@o++yhKz;ln^@Pr zGpPmGCH45VA|~9|ql`&GZTNt?xz4ElSH-?nG1o&RP8_hVfOEdW%5Rd<06?zp0Qc4% z>~MKK{c1UK-q-CJLmi}h`ToABem~|ocE<-m! zmqcD`h<%E~*fn|0(eBv2SL9%cT9pXdXc~6p3LKGv_N3K_`KCxR|B{a{;{MV?SKoNj zg}nyRm#-pT47iUMxG73aBR^FRb;RGXqp4=Kx60gIfc`6E2wiCp_Vs^5S+P#R92yVGNWu#4*oyrO&(+d`L)?dz zx03m%@8rXO@zrL71tl=xG6B**auDT6zexM`B+-t@=k1yEj$sIxA_(o$;U0zMpP#6C zc=v;uqQM_4ADLXYhh;ws%gbZTv{t^)YJDx{xW?IE4caX*U;=B?@iG0kNc*(=vk}%~ zZ@S}B*ImtQzk&NFJS1P}x^wx&(Q{eI1onlRFH?rP!NE-+*$ofuG-L&&wY0#7yrDAxCXqwKCh;4Gg>Xwfrbt>}%@=Ub6D4l%;OBV+ z+j(5)Q-*#rRh7LSh`QrzT}n}rp%=cIvHJ?{97Xofenc?|3B<$0!;S6j*kT_eBT5?Q zm-#QJjj_62>UT2!VhzXLZ%`~qzsknASeuobCx{k4o?>BVk(;Y~w7Lx0k6-=~(JQeQ z)*Vsr_7$`#)%85_N2QA4PU7aqVX=dU$YsL@@9g5)G_y+|!kTLc#L-6gBY$$N5l%A< zvmtnWJd~!otAvDyaBruI-?oChlqKMelsi6MZWW_>%Lss1rqa^a{;PI8O6HF(!Cpe_ zXJ?2{ILBCZ-i!XsW;^)h`s3_|_5Me>b#AunZLgA+TAwzqaS^SaTnM?`gk#713sa)$ z(T|mYcX#%abAG?)(DP|8L)~(?0`YD|lzMe)UI%x^Z?CWW38J+(fM%RfBy~y^)TcSk zD%!C%?3a6bt_l0BorhoS_%@gW_8IO7Nd`+W<+?(}J*JVdjRoa58+{ttA+otGmg%1>{i>^bvVprbd77``k%4n6=Y z6fZLJkAo4;eS|Tm=Yum8Et;3ObfnatNb9IdV>8Ayc%X-*S^<(E`4ts7{a|SL5yi{d z-=#XOL|KRJLsC7O6gHHa>=C`z*%LiN3NeAWQ5<%2&W@{~ERtF?Y`|r*TstV}wa?+W zIt5UT^w<7DX4za8OqzkyE1?<&pDcV|*sosrZpV;_e%QxhU4&;=8mE`^sB%XQoev|9 zjZwJU&@4(p8A&j_eXQ|ZUUk;8dT48{Q%vL;v!>VUma5%!uyaD|`Hnrv8e(iB;Tiu0 zc}=XXOk;)>-bz9@sZG5))WTE_0ZBaI+ZWYAa&d(=6I8$l~n8V-4;Grfr9@3wke# z3X~9p9)vhP61S0Nkw|d0E@&6l9RwdFs#eXUMJax@E%vQ&)@@0a7VW{+5ZDw!CZQe= z6w-NgmM>+`DN&I2))dzf7w3B+J{=e$Qst)OHD)o_Zo}fg3;9w?fptGAV$U(M5Zwi!Ai@@JDAF;EGSXA1r>Pq(MW% za9TLUbQ*dTd{(oqTu1rVbxQMYKepvd_QDyB2rOHlD03~$b1x45(=3Z=-;W=~eg(v~ zgCF=xABJ3-d2FZ%c?s}GQ%;xW)1Agj6rTRDZYG!Uk%%^2zB{*)h|g7cjWvrtxcf$D zPRkY31Z@|UrArd)1||~9sfgI%c2QNs*yME&Y1JqUv$qsXUzi#FenZceE3+2m*6Tcu zpU5YlOo!S*^3Mvq(8}%9?v{+Y>TMF z#5zT;1<3K#=$os4Qm_zD(Ez)-MU>~%UOaYYmT~rjW2VpF?=b;fYvIU!-b!OkOz2)|xb2fm zaQp-mXFTy3MWF$70k+WnAC{yjJaE5su|7^$bOT3)tWjrRZt`Rb0S`wDXKd9u`g4Qt z4aIc!F-87(GcvcmX+=o>dDWW_H}VX_e7*=)W#113_8UnCqwSMI<~x}`y>Ic4W+&Xc$?Tz! z_`@;9@NXB=87@tJoV~t0?`YSiwcI$P{^l{|)xnZp^hg%xor2GYhVOLkMtkB1Rrf7Y z`Nl3T%Rt&S222ya-XAOuZlA9{E%iCnucDBK!W&KVd!$>=r}^9;^S~qjip3wz!DjGt$r}|hW<5TIP(y&MOmKYsKs=Es0Kd1+W8M-Y zm??(vlQuud#Io#(e=(3TGN%Oduo|Px_a#RZ^ceDZY^f-Nn}6(Mk^5dS-2@8VUTQ$=%HU;X-?H9+?fD*&qZ_ps@H=F z^&5Qr!7PIaM?V;WK|{rJuMLt`h_|DCpLjV+%v1JJ{g-_##1kg!4z%-=q+g)!k5=-- zXDDK`U!WupB-EGA7q}|>503LN1gPR4oW|isrU33bzewpr;b!EIdD0CQZwQ)}NaedD zdVYtDV|Hf-hm0e3Cn8SnhBEYVN}}HaN$U|D3y8L!;DmPsY!pb*B&M@q(&y^S!A zA@X0xce6cjGMwUZ^aRGxofb$)#0>qo$OTa9*0R5c)B0aY%LeN@e-F17Vm`4hX01YL z+zSn;6M1g(oKG6n7}+RTa17nEfH1JoR`TzSHAh-#%G>4I$`|3*%<0%hE;%`WP)wzI z_F?kQtIeO$m=zGW_;^{_93jTG2y{2C;zh?G-ZQat5QQ}f#{Fh$pFSaT zna8ziN|H2R0?0L61i6%2*8(#4>1p9%KoVR5T?AoBM(%Q0a<*%=J?B{^wSD*Uo8yq9 zGa4TI+X*jfyb*P8o7qm^m#9K0dzM2cMgU>#5TI zs*UTLzeoA|0v>iSEXVTYfM{xmFBQ9V>Tg^8!M_{Ttu~(*F_^srkBksd@fTkK$QGX{ zyK}3plYUPtxC4?KeE~5>jc&|9xaYqi>Zr4;Q@{N*w&!Kf-?zq(aItr5vvxYcp%Ez` zq6{!SAZe_8g?;K3Os}8^3y$-m6_GQG2OUQrNczr*?pi;+`@Zoi$@h*5+h0^LT-1Ss zv}cYGKiV&kNqn3KDfr#p3aV(^(n}0PrJ-Nq+yiS11c5b~<}Qm(-=x&x;(F zM*lVTDzmF8+SKyL0ymV5c4EF@2?ai8zP|yTX$VcQhCZ=&TJIv5iYhOJ2GbFYa@^^^>N5>W;3obZz@e^h@+}kwNuA zaM&@3Q=tJEWIqSobGQW4?d))tEC?*p@!9`D~L@a(0< z)J^$^9~*iy9^IXGUZ32v(IpjdMI0MTN=ou*`_$H%G)&>7(5u;vyH0Lk(~W;9y;?VG)x~YDXB+u)ryI)c8r9`wB&{t zHuMLj?)PwN$eplKN}+ux&W%OQLO?)eM#|Sh#6hoPF?NDif*965^7SrwtYu>Vbg;~k z2ssNqic9y}5?*6%k;*$3Px}kG#l$jlI0yvPkmx0Q3fL&4Q+a!P_H2JMGu@at3T^sp zTK`ixRNx95GFp5e*GU^02Q6*uV^!^GkFNxgVg7twQKTX)2bud zVXah9b8S{aGru?I3P z6NWcZ3aL7>urTesU!4m_4qRBHdoGC{G>%EfRgZL-IL?B{RL!tn{?oo|=rH@;^XLVDr`9l4Wgl0vQxp?dgT&jak<0vZ}5+b_JIlw9voaqkWr^mCi=Ui*oz;fr5JitGZ*wd zv{CFq{SS_^v0qeG9aMPSO#F?cw>912Iqc5YpF{rS(JqtMxXeYd-)*gTv}+}WTSv)5 zV|N>4guS6FAB|z;LjwD(cZjU{Snhhdz#oqKYQ=HOD{bv_8kuOgic!Ud{$l&c`_)CjNErIK6gG)e-&Rpe;mFM>h6sQIP9ZEzXn3 zDI%`b<#(GTOFi?Be&4^4gZBtj>!aV0Ybk4A+8$(RA;2+>LJfdSxY$o2WQ8J!&WttE z_cQMUZfSzkt?$A=pO2~;MifuCldp8uf+<({WcP)g2l>e7eh+q_$ zxDLfoh6q1QU={@-Am<~KKr?EE6RLjS_DnoqUGhKx%M`Lo0pT&_tBxflkNHlKSowH&&S9>+@?k;t*)9K$9cI?QHSC2XtC4SFRhKgN%WC5AUEvp z6jxTtSXyod!~m)tGTikUYSu31TA2}q59mDedTOKs}`o}R;B&d&+;p==(*r= zbSWZW;kVT(TL;op>BYOb_#wP(z({N4OAZNVNU|8CR2t7Ief8e|-n|(JtlC^z#%HZU z_EkzKj1EuUXwn(J8CR!bPJL4#8T}3DXiDb^lI0)NDDO^pkedvTOG~aV^d_2q-D(G(?2oMqW3GBouw`*sS#+dQ0K(?phTorjYY{JVlL= z{&&pDbxFCr9*->TT<_PP0%bbiCjDN$vG+UpX!@F%d|opQv-~AD9`qURwXWJU%^rEk z@S~t++Bh~dekU0FN4pLSdx}9EmYT`LZc*LIQ`!w5!7zaoE=K`}ZvrW2PUk4=pPO39 zk&`E*V3f=Ytj^Ztz?t7aar#?17w_~4kXcz>%*Kzj(b6#9Y0#8nAZZ0sV7HG>;xP9h zAxKL8Wxis@GdW}}b8yX-d0Y)iCb0`D_-UQd-1hpP0~$iwt1Z*BhrwcWgvmqxl-0Ug zK?Rn%)3u}OxQf@^Eehe~zJg?=Qc}e@6yrh&e?vln=Yf<$X&mos_ZUN|OVi>OZ!~0GRm+>Tb$mAje3h1hkEpT2VCbbB0li#M z=jzVY+TpPSsEnKq97|Xb3T5|v7M<0@TQCb!T+XCm~$5O`Ao-Ao8DP%Vz$kJbLZjle4R*)914_R0( zVa8sVtq;dmT>ctJmfL!$tJ&6>q0NXdR*?2T34ng;fFdvOD{<|5iOOB^p+&VcdAb0C z#>jgi?9dUFoGjC}XSkh|4q+@*p>$M%++26PTW&^SI4i)wv^`7Mn-eHbN5x=%5!bDA zpoBva#{R+-IpXfCIxX5j5MyUuJkxq(t?fEMt_b5bggQFGF@w4E3TXo&toG5eYhN66 z!QVIL1mQmlkb0%Z)cwSM=`J{`%Y`fZNqO9YF|BVq?_i|JtMyI5F7oQcVDSKMKF{0G z(279D>-+-^3I`sY0jYuYeNSUh9!H|AM!0q0<95b{&n@xtybCZTy#{m22w*|XwQltQ z7K5=@ojf_wmI6Y%KV>Q?jl{kDPBr%PwIfJ-Y-k*%`p`o z|3*i0TEE7`Sg1a;M6GP$5k-7x!oG zDKD;H13+crWU;bHY3%yQ;Q8s#um?CL%Eg3)>jx=NOXus+6VxPbZg}BE%)`iEz9r<1 z(dyVXUj~9D(`RVMF6MUSstF`H)CFe0v;0g3l$)DZbu@6Rw?>2A`L_5BPGZU z)=l~MFAAm_-(_mxja{TZU-Z3qiMdQwz@A;liLmw&w9zM3?oHz?qI+e!=s=AHXEaU> zeBjhLvG@eiSF!$dj84MyFQB*oQ?6!s!rp2=3K{ipa1@SVCPYi;7Jqlo8-h|ibRl7TRHXO z^H7$QpzSBnUUoxn=BH925@Zw0^^vu$s_|=OM+!F5Mvwuu0o8pV-?pl%^{4YY}^pjxS^1A!GtXg6YfgBx1tj= zvi~-bPpwKDnb%O=2VB8VuGeEb_y4Ha9qm5Aj%BQ@7@xww+obZ*_i7QcFWRT&uWinf z{)Vk)vLrnGUj-jz34dmy+aYpkBSe42Q8)xj`;kVKrwGpI=B1bwA+&be)FYQyZF=nN zO>=$N;iN9%D<-M^g4B`jCBYJ82^nRb=Pm-|AjZWG7~z{imhoT%4_Rg^-wQQEV6c8a zm0wbV-U_5h8(WXh+u-sdSowRI66t-Hk`o>9?7l6pyYQ>M?wy-fb=~14Ku3sY};ZCK(9^{1d&ZCJZ`1j zqa@l)UTt@X$b*GAEPOBUaJ`VOS4#F@;K#A={-MG6i?xR3VG&lX6i;7V8W|IV^TZjy z9tIjfevn$i2&5<3;+@Z)t*(1WpU6o;NkzYSJQ%<<>o3~7yeP&KYT?!`wb2+uVQ{2D z^EIIF1r04NT!u`%ee(lha!pNlRx#H!?iCFouej{FPrA?MK|{pwJ4wPwR)nwphrJF< z3&~+2uW0mzkVn^;p@`UsSzF{@`&Z)XYjmm_)zyv96RXJS;1?vXxEL+1Ft@M}rLy@91K983f}=h{ za*W}lB16fUm(VrvV2xOh6{P}PA6a?=KDQmbtWR5Hb~9D*a8Idl>NPVhB^eBj{>k2U zk(yw?sUiX;0CS_1FXU=(uw-DUa8HxrIix7Lr(x66&+p{4>&>5i!2bckLgP95avu5Z z#G>}~dWfcO+-U_b9Jv536B}Q=Q<<$Tmns)!c^oO+eksXX6oK1NX$YVT{!ulsCb5)Gx^OxIC%S7>0xQWV6wmVKP0Y7zj{G4hkTC0*%Z9viF98?v^6TQESiJ{4 zb?TR|FlqlQ&z5t_-+%tVuXLg1#St;Rs=A*q`)Q8^$Mgy6sUV{R3!nH3x*u`$ z|6ifbx5_a9QL1~7SO>A3hi>F^tX=9nWPEul;z0vx1faBO_h#S%cnyr2qj*0~we7kU zF21F}d16Yo$50BwxiOL#Zm~77DN^jq3 zP5Qx-K>O$nWZUROA7vjfj4`&t|&nv#Y?)&ViJ9tf$a zX={IQa23cbE-meNI<8>Lk5sKUgN~rqGy6r_{GKB`9L085?yEC2S*147@nIjQ`Pb1s z>qNM8LSU``&CQK&vzK!=tf2N|Nd!5F!pj)$vIuLjTFPnRGu1kn{< z$MpdRPG@l2t>F4!BLZWy0bjtRS@OLyGW@ie=mlJb2VB5`YBap>4-}x*z#_T?6VdA{ zIeG%G?MzRn?q@nHz&j{YZwQGmUx$e_G_N?RS_~i6I3gT{rA{VKS_{<-W4>L43`Ks= zQ(~g*FmBH&H{a>?T%PiQeI18p)$fepGxI=pekZRzuD=X6MDEzg<-93pvkV(`Q&>!L z=JE7$AF6v$sl4ETJFGA;QN-%x9PkAkhZBIYnE^1lxT50d!GVF0kzDPI6g1=n$Zf#E z4O&vyyMzeFe9n9t(-cTh!w)tcZfdB&MQ%s=_=4|Q8#*;))bA$!T)l$X%|Bd+y-h8M zdkPY3Jax!#WA8&=pTm#Foj|akk)A-tYzFZAo~&jKKkxqVdb~f9i#D9`@jAKHDBKgE ztgS|<^ZjKE8p*sk`cib+)9@dPp4{z7_}HxzU6*p%6WeWYc6!Px-Om7Z65z@jOR!e=vca$JQ`l{dNK~OJq1zt;yGQfPb;m7z1qm z78KQgFkt|3rx1xSoK%>R&uKT1fd^KJjW}9=hHhwS_f-C$s@1;X?PwS8H>l(7#qQR& z6JHcCGMmqyXl5*#0l}nv8K!4yH`M~RUaLO6v?fru1_AtU|;zeo-ZK!;YLC>+PsoAJm^&+B&8AeouimeeFIHvIWdclM{lKkqOW>`yo zAc!o;6|j@7vKeQ%_7MTPtu&-qc?}J-uLI~JX%iv{qpO;mDGc;vyszL=UKlV|pf#er zTQ?yF&oOHHgyNpb!+Y+{B*F~{;_lcY78GvvtN%URzb48 zGNMT7KvW$NCe~ZxTS|O~Q$rXV`1+ET97~OpGoRCxc^n&l{<-0ZC2F1&^t7`%c>aY< z5S^A(9@i#tL+uE~ettV3L4bzj1nB;$qRTG*Y%_q&2)6>f;W_Jo6Fd?yia{O8yp~V0 zJa?tRYdhQQA9P&+h0{!xDI&dG2c_piARvdnBa$l9{e|!(AQ*6Dq223>hkq%P^s=mF z7sJa{D9J@>@?^zVCGRK8SbrQ3zU9~hyqKlskDHrc5US2bcV9@skF9Gnn9PLW19p)b zD2Pcz1A&0tdO?CR`N*$qUnm(|8y=E%^}e;HV+V%xq1=nJzc|*>&`H+r;qB=CkwZoT zdLe3q$m8wi@CmwYrO4Gs==HaedI5%Lk+^0!FkbkfG`17tmRI1wXu%t|_3uEgLOmVJ zPn`%Ea5j^Ck=|96eNgCROq~Eq!RNQrQ&V%$1o{X-NePFPKlV`Kh$xSD{jeb?k_xP# z{xk(XKb)}6vDA23`T>}U3$+^2stXX;!S1Xo6MBh;V4+vLNSy$CIh-n#O)p1=dc4<& zqck4shC?o(_ZwxlRA9bC@n&uhpOqF`PgEgHgh^v}Xw_G{FA5!n)>nGd9N& zGxct%Itqx)%W-0fgv?s|yu!Rzmt=ov>>q!qW!y@lG(Ir-Gu}O(p4q-hK0l$~vXz>C zS<0<9t=O55pq>B}1Jo0wRfnHUdY>&OaK>BwZ)M5H1rYY|*B+ymR_k2}B=dcB4zs~B z)HloEB8p)EO++lj{ywalwR4qk43f_jX&7Kgv~DAxkWu`L*Hi%_B;b*J zw}iL5i%V@ImXS@MS62s~@+6`e2L^j8!_IJUA0F?;ZtJWql=?JQ_f8))=6A&m3Gq3Y z>v~?oJB0|YIFvu{eMJz>43uS`B;GtsoxZHCn|9HkGTt$lUy-8&u&bWe8B$rplD`B*8FbIOfI z#xO-{Q}S~Nilu3pGyYHZ??Z0{9-Kd_xf-o0rH@jw*cWSBa9E96^BlfW8VBliFZy2t z0SKaQs^8xza+Go88HcC2<+Nzy0;czQj}w6ic!cD!T--~!p#IH0S10}i*ZM_=rEHmi z1vIvFyGKw)C{L z0=Ge7fqR~TrQBtkEw4>_Y}#5xE%TpFY@QxgVH>WN&$})LpL~r7sp_}UcgTaaAnCI7 zV;>)LEB2il3;~)1dhJ7zw8GR=m)?heS?>lT^V$wQB;x78K?fX&J?wCHj*7lpk~w%T zuOmg~(ZtCXlsDxuZFOm|`$VNsHt&*zxiqY3AwG(?kD4dxBG{ z5%bKBTYp3pwTdvtLJ z{0**-1y(U z(BAXhuTYxvyD4&{wEx4{TYzQNZe62`1_>#pLmB~TQ5q#gN>oGyq$H&zr9-47B&17F zKnzMjKw3bhL%JX777(O7bK$$cZ-3vv|8ox4zTWHFzP`%Cy4SqN9CM5@@e|g?Qn@@E zfce;F*?-Th_gOKl_C`ulY`Or%DA&VcPsHWq^1Hj$^pLi#0_^~YDt!MsIy#W3@z!J6 zV=kQ_OUmS?h&IU7g-CE<-y2tl+#heG4s3bahK8g-zPL!X*RPazND`w65DeeI-E@zS zN5S2D64sfM1lF@cI@z^<|!=!@YEghe?GqMg!@Ag+^@GVC^` zVo&#(I{JIB9}Rf1I$aWQRJt7M^|MXna(owE685VN(Pg{N#^p;(`y5K_bkUsUs%`I7cKVXRh{S0#axje*!JZ%yWys4O(~v&yy;s0~9PFXDx3|R{GV9_MaU1eyYA2G$KKb zDwf5kzh(Sji>lrh=86ljPU*kTlJjn<%XKW`d9Q2rK(Ux=EP15zlv9Nx#A|F1%R%FH zF(Efgl}%aS<~X%wL4$$QQqac&++YC)MHDULb;bYi@$2AV(Ww*0Q-NFJ=2ao z6kPZFQs3L!8eScpcG^xCpBup@@;W+SoZPR5+~&tO94PkOwrNWe#zEG%dbKc+h#)rC z3Bhh(KF>H!!M0wvObili0>xu9-8Mcs{=Qbx5c%S&+)by$e$q;OUCZ7pH=kIw4T1j% zwkJ7GhjC*gs00l4G;3Bl@K9gkak+Q*J8xcEAS^uxb3`ZqNTn+uY}>L!#t!wqZgl>@ z=HTSyoUH-%Tf!#6BL(NXA*_Tv=gu`xHHNffJXpB0YvSYai+=8@+0F>GuRMIX(rZmK z@FMI!>q;h1c#@=R!S7Afez94~-H!_kD;3^oyD|+%5b$9+V z$qTUM`VTW4T=m)(NGl))-)YFoLwcW|J3b`tY68DrbHX}$rnmEHKGOl*VBsJ+yk78(MRa$N zO76#y`cUY1_;+U+P|g%^xy$c_Ge8_Z7P@;15`k%hW863|p=|$I*gnMUy{?ev+;NfT z>{;xt>P2I?=^--s5%4G_1J2};=a2g7_4V>Z~w01 zZJ}Imu7+sz!qDj!Q(@}Ur+%fv&v#7?GH4jl9|XUC83`WV*xFCv&USke zYl2`y9cf;M=ULb$!65kbAWD5LZsXy>7dEudIsOuR_u`j^d5_?;w55y)g&GKucLYsk zs?X6^UqFpL8TYd=$YJ~3^BCR9V(uWjurFPs7h#g4R>3|>ROAqouX|Evi#)q~wTWC! zO|2N(`G_dzs<8x)NTkT`kFT0+Y{t%HpYV{2&r!J3z47P?KaPd7E!tuEf+hSW+Zwuc zsb+@vZrl);emD^~zZib+m4#S}`S1}qOZ8%F9bkNj?zfDD7^egpeeKw_=iEVYJ@+a!TI& znu?_Ng*+ekooHWBo?8~gX4Ac!w`>C@YfXhH3Y^8`=l0j?Fh>S4_ z9J&?&t*+5q1hNZg!#UpM zfE`hO?7pGz?-?FGKG9k~I50qFKCPI5jYbi0<65OObKDYJ^tcQ~{q5S9U{*HTq`0fW|fqP*nN@*SZPAb7<~px>+u(& zvX?8eBB;f6Ee-bbysOz;jHux-Ru6@2qTg%CVG>d-5SKsx$Lu#Z?olKEs~E zOev{oe(dy=gP73#Jb?6AXfMy__p>;$$X#MH@tS9HnICA0YY$f(HlS#qMh`I>@{IYe zYt#hXa}-b+6Qd5lmWO}@L@FnAuEU7rs#b>^Ug#csYYE-@*1={cW_!S>#X2uN7^vIGvR9FaK&xhn=-b_PA@4O?dZ3aADUW!t~Iv<*RQNh8^4nGN-|70Dj4ldox)`se4!t^-7D)!OP7X5&Hn!>Aup8;G{YCTX_a1>> z{;5d(MwtW)+GhWKf`C=klyiy1@;e+_h64oR39~MDXy$=Nu}&V>)dEu!H4P2Uyk^$! z*qSd52;ZQ`-i02_o!{Uic`U~itjB67^xfvu|5Rt(Y$m1wQn(09u78dteV)ilst5@V zU@t&p5)jzrKka@>iLUR0e?h@=Ba4z#TK`3C3Z)=>!Y=a=J0srH%&%-HBK2UoFB`gv z9t8vNcR=%5x*}@UO!8xP78@aByxCr zSbo1-jbI$uwi5*Vj&nYI_^y7o^H+4f!>{)*6?5PuSR{;H;Rrui=PaD??{`Q}KvT8!z^)hDCrK?0BHzBKN1zsFoS!cyGPE^H^&2W1}>e z>vruAn_Fn-t-F~2`ZZYO7=Yw=^*;JN*M3MNc-J<8!FJO+elz&aWOy*Y`F|{dCu11p zhOb%-elzC`F1f6K#>VEfjS^0bwN#=t1A$BV4FKxphZi?KQ?+wMI(*u|KiX}POKIWQ z|4P#651~)?nAnlf&=RFyvHXG)O4@C5GMUwJs^&L#7VMrmGz#(idB#cS6%;)39oHK7 zikqAIhEb&I0zf-E_Uk9F5$=D{%{MFOOG=BE<1w}~`sK^@RM9msaO$>tAlBRyJS>-# z<|x*+NgG_hW6JieQhn`pZ=RNfT?}YLnw`o{W?c{+=P)&(1-9-oT%gRoa8>gqs5hU97T2 zaIrMv<}N3`X@6l%n{>05A-j1}70A;JNhzuJd)HAI1Jk@{baRDATY`W-|D#%TcT?}X zK?%!_7!HC|35RAl;Gw;mQl#)HF2hz%%I*)G zYjs~9_u;4yoLCFtZv~S6=eUB{o!|QRyM#PyUcTuy!Z*54DqFB=mLM0@SKIsyk0O4y zxvOi2c`8NImMD)vNJeBLmc#EN$WYBu4+$A zr{9q?GUj7!Up``+8jHjC$QpAYASJYflQ}vsJ&iHC1r~e(y9O+~7`+CAEi{kmYRtRfB68ZPJs3bCcehpdlynaM*(sXUSdUmt{GWF1M57`Phh=F50-t5M! z9aC-Ui!?Ezw)gZJ7E|B(OSG8r4%{R?IljYDS;+>o_DJ!=4=65c{5_X>GRrHbA(BCY zE#^wn8pqe86B@nOpriK(iZ7S;jEY$lPxw;~q7wepAy1D+=8spDDw463HEcW; zM-*=;G+f@sS+K2ke0WB4-WOk2ENPYyu9#tH^<)p$FK^C4L-%}OGXBL$*ht0$7hE zt#1^%cDBbS!KGvXLZi00@#U|xVT4YX^hU7HUa(E`T9bnP@6xJ*lJERd5=Lw z(Ja!0)|!fmtI1SY^o*$kRnm=ePMis^)z{W3bZIQm$3-gl;nOmHt{{leV0mu{8)ONwezw3!f0KfAEKyP36L-)|6km|>6X6#;szG>!>kUZ;A}ox zV8M;rqTre^Cvax2A)wMOBiX9)++8=>+=Pum{1^f5G{->miNHW?L}m5CEOSm z^dSdjwP0{M$YhrGinzGcI4Bd8ZpKn8El7}YLIbB~#74i5KP({*mG6x~1*N=ub`w+x zwwyJ(t7$@YvIpIY)Lx%2_>LRU$;{CpOGS0?c8wvs;)`u^WE>^;7h%TeqfB z+rTMZg8;O};=A=mXlJC>uhzq%8a$D}q+CV+aLcp@_>dg84!V}q{iAsmxdzt(!w@*v zRKN|1w!+{8*MJ8c;yU1J%G(z7Z4p$;Wt%6=IEm0W@M4Z+N$a(D(WTQx>H>ewt z1qRBD-tWN&zxMvNHp>s^pNAAZ+%Sb*gz*Up=m0jMBdPu@Kfjn<)tEix#(`i%3Ruw# zhg-d8!r7q3epfL|k19_P1UQjr+HtXbr?D5fFY|<(y5U2GXjLT5?(Uel^9cHW0rT`D zk=;A@*R|7GN)OJw=pg=gAn7tK{I|wG@U$H{k$SR@!KVGvTPvZcTT+Q>?=wj#Wqu8s zq3U*|h{TqI=A7y?+quDJumZ(=QhBRa+RT{sU5xY}l}Wo|6s%YSeK{Bc#iKP0Hv~O0 z?p@nYw#=}8w^#1AatDSGsdF$vlFdAcuI7z`h2GSsPAT+?_4V~lKGVHh4^$`+(6De6 zXuj5&lD;7!5>c$27EHZF?Qac6zk>~+6fUvF)IGl(vfd`zi5mPZdQ_rY##gDjFHlR9 z+^i+OnQkJm^9)B+i{MvH^0AgvyMLG1=Xfmbq{lsNT@XyL>VZufqF-`TlwKg}77OOu zK0!!N=NHus#dr;zib7vt{yuK?s9_=I=H?$)%0`NO4?R&xNn_+)Y(DYn)9T~(*qx6* zWMX#UE`%=_wA2`FpLV7Ml}%GjZ&Ml+y{_1&SrT@3cDrA-e6j0}Rudxx76g59=cBAC zl)6uEswiSqa(!<6MYp2B@LYOMempFRtHvJlQUCfP`f?;yziT?t4P~O|EuFzDmlu_P z@lu+fr3{;lQDLrcmzV%kiTm2!PwNfDALp~5ATDz3w;)C(sutFD?HxqrW%|+^?KaSW zHs@(->XSn68NP%S7VmW|x7AVWqtOXdA4Rc^|IHbb%2)((Wz-DUYNVbw0VzM4!-ItY zy!rSeR*iqZ@B8;DzoR+7y#q3U6K{xyuDF9!`dWTHG%6T?*kc_R=z%@DJR6pgo z&Lcf9)uy&RvFZ%!Z(jMTPIKaMTjy8#w41M77nYZo%kL`Ygh}*a>x$ju6~(2fucLmi zls-6;VJT%{?XjohZ1wPiX2GRCePh1P6Wh6d#E{b<<2R|7h?I3r~Vm_xV-B z^bHhy;}m#uk>NzWcSbRQ@Y7Ib;(utdokB&nZm><$N3zjJg5wNE9R?4l9$O$fB0M1L zgW(6ftJ6~^TgK5619G_U6Z!_v2+=_Grj+&2F7W2Q;q&mjL43q zKEBg!CHhoWIcvXKG){iDJ}Q87q83i?mA_}#9-KyNHT&;=qcz!avt1(fE5nU#w`hho z9}#hjfa7``8mw#67M5%6!zJ6=-Y#yYwzt%9ai^!_(v>TUTVg5>?77nI8NuFEH%Lv!Vpk!a*g2gOHOj9$DIbUfz4dYz$GH)9)_ z{H2VKY(pu*>7KSis`utpq-8K`mi15Xc^S&U6Ttzhu2N^LZ4zvhp$RTSJHiW?2vH%p ze}FWA_vhV!4-=V+vZ^|)hi>mAAY-fpIdEI%1cYv(_m=PBHZi2i~Qv#QK3dkD?b3l4eex`A}P0!W!5!N=sik z%5KmbmLn=er{I_TcJvf!_U?Lym`aybqO}xvc=k|-d4muMOk?C({h_l z0KmHCg=!pv{G)_N3fwl5MdT=YEZWid>$OYB&8zI&}z(-53w{;XTOr}JaRRnUco1b+jZDU-l-*LY~D zX%61|2j+IqC(=8|s(w=S^OOoHC=ensliy$uHW3OAvPx@x;c!;GYy}cl6oxm^%N{&; zpJjGNAA$Oi01)+FF8+vMldLxzeJd`iq5g=8lIlTqWH3*ve1}ny+tV(b^VnZ0-}p7+ zz%D1p0*_hw0;95zkI%61;4?nmTp1M~ADNn+>a{c6+yrPt17ZRnpX!+*?bsI)r>EGn z!!G|P2}kV9ly0l@j4PSB)(>Z%>8=BAW+NxedjFo<(9kgd)hku0ff&HF7R#+%v7f{sSaM7=L z^ZDAHDjaOxPxNt7%2EW3dP9rxH#CJuG63GE@ab~mhyxSeFje%Md+2U)BzyM8B&cKH zfOT3;pu>WP8%;D1cE;TGDMx=%|GQXb_h_d!8Xe1LdjAa5tAX7-o6d{-N{ zfh|2)ty*igD<2C+MS##6<8`IqbO%U;EU)n@igmpD7mM07g@5`0hxO`0G%DwLfXQy{ zXfC-CRr<_ftb{;Ide0P!e$G($ycwhVA67&$M?0v|r1adfB}aC#73+=;^y5I+p;&7d zEpxBmRh|IIC=WWkHA_&7K^X)Fc_tYCo6M*Gy63xjgmS(*<;4 zX!JJlQpOd!l8mq|b0ovy9L+sF{4N=X2Q5)d`ETET;CSV9fpPtzG$R!&+mruAo9>|0 zcyr*C)t@xYyyW#_(5geL)fj+7(8duN$a;IY+y(S#L)%A!!J#})zzkJZqIlOL&Ls^0 z>_1Fr=Yq{;UoRi{NwKSHQv)T^`olwkoVB&&cWgGwrU#kFRH+bR5gt4F}rgfJ&fNx)K||VdGIya7jm}^ll)leC!LX^hcrdR)eLMCqW4r0_fG@ zcE=9f?iiqU&qF(9Zq8}ZnGp$ALIgn>yG_}&D;$o{OdxfTW^PC3#3KEW98L()uhp^p zFG=NMjlH_A)9_jXCZJljZt7J&b^4lY34^hkusG zJRa(Nua-O7VeUv#l&{5!ecP5pqyaK$m;c&xZL13J;c@o7AeG zt$la$s($&wMnLJU?#u6zjXE4Wx2F9g%-fLUIOo{32Wy9i>|?2=rJY}qGu(~)+tSh* zZ-8GU4yxYKTPl@>al9V77#s^}iDqdrbRWZ0(q<(LTwvbm*LT30^ob1(&bY>NPnC@$ zoDGCY!rW9(n#jpQ1UAats+i8Fwo@~_Zut{77Nk5{VmEz&Zx#N_*`Y-?rC`q?xc~GvWWW& z7;Sm4h@xzsYt&7l#Qg)NttGajd^z3u=A(SR?d1gpp-rZ_xH@}Dr{=Ij^K+6*^Gxbz zXzqM-KeCe;_i@%g;i-tDp7nX1JV6$b5PQgpm^hU3Aa`U%ll|b!8G?SE@F+4qTTr9L#V{rI{719_01KFPZ z9h3oTHtvKI8k3p|R%2Ms4O^v96}H_-nMp_5MZ_N}u?f5&(0qyDeLg18jd4#nc<5m>6l} z>t7AbHmVve`MTS)&SV$pBJ{3bH;sp|RouF-L}Z6jst(c^BN-CE55KiwASpO|rgKHE(9PT1js=apHa4 z%xFre2ueseFMTxMYi0MLgNbUv(>Y?}W;4OXjw_0fG<0{q!;S!GTmdfv;c>8)C)X6h z;u|_tYH0?VU}Tuaqy~x};<+aKbx?qfo)9idPUX{9ncPH=FDW}cg}3BYjx{~}YVn|q zwk>~`EcZKyDBrWi#h&}!R(t=I zIaH@^3KIS-iPm_h#MDri4+>Xw2hOndkao5q%7PgZlfc@X2HgWu?Wcq{}+ zHx4o;$smw*D3C+x5Vq;#;lJ~q5T?!NL_|bDgYsZ`P}o~NkR$kCT7a!?m0kFeu<(Qj zf^G@Kacc4@xz>dEj{wxcc&dEDSIVL-DZr#L_zd*UAgO>Jjs{huK!OP9gf-ugYhQ)4 zV**Bg7*U%SzTZIyckC)riY6v!q?u2mQjp#a$e=(M4lk9Y106XHOI;tg&Rn{4hyGpV z;@RGfo}TN=L!|^rW%Uy&Z9mLg!IrQF)!Y(`HNty+iI}*ng3TT{q0u{MJ8UlBy+g=- zCoQWt$FC)H*f7DYW|-ZPVDUy5pCpy%=EXd}yf5Fr1%mAE8>k|YG=uq3oh%Ejj0Z@j zvtpm$@?bH}!omW&QyxJ;_bq`^2AZ9`0s>0b)~_};KY48O$JIg%068Hm`Gw>cp78df zeu~)3JqSQ*lZl~J5ey!iYw9v^bh;dlg zWk~pMN!KOQ>7GNV3XwYn0me6aN~%MhY(v#V`*d8SVSgW4TJ5>wkTLxS%{B~h1!Lnir{o*)S0c0Ry1!|iG{1M`1FY! z4QOkv#s#tp**^)z$CVK_ExA4Hc)_+UljF%tpfJb6Bfn$rP;uVBXUh+-==M!5Gfms` z3>>N==l9Wva{p5z%7Q4HD&_SiJB}{hoK`_Vf=GYD)9X;3ErJT2DlYy3zPWlw@X?6b zUH$ye)Nl0nrSIGszTPJaN=3ubj-=2%fs2Etyf>&gs#qm;wkyoY-E#H5`FtmsBHX*t z#lCnF#;Ks>J`V=Hu!_T2eC2|>i(|Ds(AQJ>KcKHkn!1G zT#ELZOJcYy7rK({FIrmoUN&-dxc0h}=}DGU>-CI&gUB~~KdHAuJzJAKJFvK^#AoN` zQok)NjZk^Hk#tFqSu#30Svs<1A5Fi?%eW*&iwjFRW=y`ua;Epw;686f+_b3$>T@;o zdgEVEAW#NuZTOC4UvumCwYVdjxlEEin`8)BCUc#`tU|*c`x_P_HX-ikQ>l^;?Bstm zm;frMud^>VY5F!Y*;*EbC%dzCe{g#yfO;!@uWDCV*{9geAwn2Hg*LU9m@MH|#|8Ge zo=~1=n&zvsFl1{0Mp2*`ugZO`85JmK$sP9H%(w!ljY%T$3>*EGX)|lH;-rO|)GO|0 zfX~!u85qbyyr>x%PCULqgR(G)Co>93o)?@&2^{rg5pa+Ey&AEs{6ZFJ_1z^m*f-{= zx+kCesr0nW2XwUL0>l`z4;izUSmdsZo~Mk|*uH0QR(qKdoztXyK#&x9P7C#&Z<&6x zofnGMtN=-XfBx}ANm%{_WlldUNz?2V1uZKfoAxgO6R8foJMYCLiV9S@g`lB34?&lJeqJlF zZ+Mi7F3K?Olr*W}35RnZs>pWxgN;u4NEIxl;5R=We!&_;uv`#D%kJ@jE?Zlh0^ZXo zW*M6kHr->OcTg?7p`-Ko6yL2n%!YAazBUY=P?ed6ixeZ-s=-y9l=2!z?i1X}-wtZL z@14In`A_Bi!*@6Bd+?|CQ}5S;LA z`QG>Ta&we27#C0S+10VC2VkbU9pz542PZX+C)`o;w?lg9USegXBwCKp+W|p?A}@nF zt7p%?oB@HDx0Lsq*}~~yRXhP!j+QSm>>F<#e2CAdlIj}yh=+%VulpT!{=w>!?Z}QE zBMd||dew=`sW>YmS=_Dd?KSU2hXxb=c`(^UP&fFbeTMFLU6My#z|QqvG!(1_c3=PfNCPNP+G$)a6ROo)>q z)k!iPRxRTAzW{M*)z}u(6&)RE80S9(aU^BG*7@__$2^dbM@vO;AB64=w+;0cP5vYn zn34KZ#;{gXA%G_XukH9}2r=k$2&1^ao@#?3YjoMmKF@8l*{t_%#)`JF;8$*zN*~LZ z+lU?71k*DxRK2NkS-3v>5EE&5?h>u6_XQ_sAfJKS_=uk8^nDaUpmrw25zwFskT1xv zdrQyAcbu`3(o)oHN4p{mvkLT2gIc}#{k5>`;?2H zZfKRYW{wBf7_$v&K9A*4h~)q%V8-pD(d)RC@47<^_=xaQ&;9UhtF)8vxm|}qZ~Zc( zacXikKy0!C$JG%Rhp?(AQbdEidzmlDz?qPMzE^mhMkrlWv=%G%mwsIGje$UGS+O4x zWdQZbf1Y)_JZb+0C!8l-m8xv1Q^1G9)zS`G>HK_;_}13kE#1!VyOtJ~(}mBL>A1t$ z49@B1t&mf^{08DGN1#!1UcA5sH46-1rB}|w#PMlD0)Cc{wy~@02jSW4ptOZ01>}ej zeA;^!7GSla18F2JNlHx~kgfD~d)~6W;((phcjk916~%&>_Hn=PBTifpRGUE{_6+C4 z{@;@+X*VEPLtQ%S-FW@zJI(&afvBG*^e1wQ9S4d0txq|47jD1c32(+;?O0scbn+}w zX8pZutZV0*c3-VO3Tj>KIvAK9zdNtgz4p5JHvdAkgzQ~;ZR(r1Ze^F0^jud-FbCEC zi-E-sZ%|^5ios1Ex%#M6OuN-PC!UYpvSy5@@~Ng&)dlaK;sVY#-h| zzq&icrsiR2$9}Z`HBxm>C@j=!a$ef$aX#2ZlsG6AE-;?=Rbr!1i;ag-#H&Qx`brq0 zH<`l!R0&G9n5fxf2-#u?v%9T&KJ%w*Q#Z{gj*}U=U01vI_D`pH3{H@X=U)VzAA9k4 zY?k$xx1%_!3*Ifd^pd0Y5+I*vad~auLiGLKbf#AE?Y5+krp#`LBN?O z64-hc$PK`wa2`saIydFZ!Q$N8IfbZ*(EZl3b2oYAyi8fyvwcoKW_h=-QFh*VKFb6>)lB64S{FqXna2{S>Vc-5a zE=s)NXl6Uj4r##un9_+g32ghSJJOnpkJ9m%J#Yxc-FayI!*r2%Z{oMm%uvlvC_(Eh zN)sjVx;p)niM6{jH($jUbgW2(5{Jhb=0O2R5UBKSdNF%89~n0 zo`zuK$m=CaZBKAH=v{H+PFL%d&^3#NVsU?uQ8n8mdH3hNVge}s=MwoAq{DsvK<^kf z>$Y|OV!9>_lY&y^7B_`qf8eIDqL`HncS1sOF&w^lo3Y4?-4jx--+VI5RR9K#Y8Z=K0^8#a`B*$zi$}rR| zL#@P~Y^nksC3R3i`GD|LHoU>|6*Z#TB^=Q}L)w?SU(A0&fWxuqb%Ak~Y?7CQ<4VUX zB7@PZd3nAMi5fb@)G7-1SQ!=k0HYjgI6I4qh>Bt%&T}12Ffo6WF6Hj#*#T2g6HjJT zQ%jV|1VXm#rxZRYE^1Dv?{H);HV-u+w11n&b^_>PKQ$xdEi&DA?nVUM| zTt#8{4DMNEQO1agZl!iE5nGDSkrHpzKy7oU^Ggj%tp>nO&(H#H0Z zKUDXO1168?1QBi>FefGvQwA>GO1YJu)6Fnxp`CCAgcA<>TE+{GNJ=h1b5K5-eT(NE z{BWNJF`jC8tjw^15n&8D!}j@7-8)_Xg;xLF$S<~<#y`sg(mQd8&I_Of_R*`4FCZqN zbWo(fr>7^lg~f;d?b~|l?T9@-nO7#3m7;~;dp$Rttv6;irX_BwDY6tUzaeGIuIc~I zNYqt5_-M5)$3?uHT{TwtsO2{;8~qzkO10L(+bHHZ3A9=^w*g3e6Tp~p%fdT>gQ%c@ zevO;S?20C*ZxDkIC8_rqQ_h;rvdmq}2aV~G0YrgFNTZ3t6SEs=DShR>X-6#Vss8-s z!Eei>2%P;WxV#k=UAUkoZ-aslh+$^W`7>r&ceJTTVU`0J9;i0u}w&x6+4`VkxM`K@m=!TBwK?rb}gR&l;6Lf-t#^7!O4h}Mpg@i}irDhNZLj>IKA-fNjiTLC06su^aDN2jt`A;HNCx*YSKYihnD}PDf8V$3G5*OT!ProN9R1{8%fcuDr1ao{ zFf0uTf2o$3vS0NB#V7K_-2zkcJ>c}a2%B3g8>q-sB`b?6~*Sa zZaFF8*LE4t{lgrH)C#gBlb%AW^Mi3@`Va3Z%MWJ+1%jvq3<=^$TvJ%HavdqN-Ih!R zjaDc=;%xKIpXyd+Y+=g|Sp0Y5?=7@D)UYTd017L(QNRzi0ss0rzzI|exyU5zJxFV& z_vxW9inQKG_r^ba20KM4(HR2x=n({_91S4qyLR(tkace^-O69)Zy9oIaR0CPmZDG) zXGd<=5bDWAW6s>;TCB-fsHWW+8oLy^_VU19P4SVQ!x-jaAxCz7L0<9uztrzh7C-=S z(KOFN-$I+osVWkC5xbu@_QU;wUp&6J^5y3px!5Fi7*pXuvt51rpXgXcMavVS*RK^` z5vvzar34=UnKm`_Z6F>?v;+GF$Y|i7gDY<62$xpMjUNu?{pBzD1!uwkg*JC@^vlUg zE!rj-*jZn(H zMv0hpXM)8^LVR`e6xQq^-O%7HCV-&=b8T%7^RHJ)t$@RzaIw_;)|>J=M#m^4@R;88 z4rI-G`<4{?nzd)YP(?JfG~ahUfLJ=tv7-gp?c;DhBiJvVz89%R=j)X!_KU|JbryC<8w6P&)+(>uR)IX z%M{)IBGQ5k?gx%BFF(C2qxf_9LpjQbih@)G67($lf{3V4@&rr1oKiga(ixcYp-nC- z2>?y$%e(xiA2m+ZffcB3 zX5iUm?s8m>%l0$OSHic~#7XVoB7`IKXk!zVmucrHbG}^zWuM~(NxK`pVi61yWH1}e zq+mr=uWvx3ji#4$b#-NsFTiXVr7BF*^5o<&wGjl^+;IY&DI`%RE$-Xfuf9LdtKIdW z;vn7nZvbibV8cQ1u7L)~ zu`6<-N5$$(i2Js2BGhb)1q8Kj*daYIvKtUCKrou*n zHq9^w5`NbT(B)n(R@EPpAjzojC+dE@#?sQf>WNya48iO#ciWe}IfAc*(Q7~Q?ZdUV zJ;2w%Hxe3}@8BZwFN}27vn`C3usJ2;ovG%}%}outfq?-AJC}H#;1^XJ?1*vs2vylJ zlm~c|%CGiu=g8dAtIfkXJ}J=kex{0=ntr$^C^#%nl$$*lT`e22Z-hND-GhUJ=FM|Z zg{Ofr58_Z&T>?-9G6`1hJfH6C00tq7Aq14EPzlgYqe&v>C!k+M_k1v};YI)h#!09We@<_DIFWNGP2{P5#BJdijr%Rs7<}n41>mf+RKx`?sGIEWaOrOeL zlF<#3f1?y2fcat9l<@sX?+L!ZTqs%e%ZPdPS1fk}i$vS6ufCQgRO!kLWbT$nLoy5? zZUkU21ZRANi2)TPB|IPL42D4hLuPC1v1}1Dvs`hB9mNlG>OFhXSzOTN40rt~R zk||Fk@^*G_H-_dmlcUV<-Amfb8JPKT4qltC8M3~53KG`ks}kSD6ckGf$(`EIFj}d% zJT$6v>1aE^w;j%$DCWf`SKoYo#`673gQ(!Ay2T9G?p5%rUcJhadAr)vwFd*h7hE}T z6I{Kc;-CVF5-Gu{_LX0+Yf&o=+Mb8o8r^6QH=Tlo1=k5;;%*4ZhxaRpLH#e^qyHcH zp1^_vWv0B|p=}mObCD?~U*Eo8x3z{`8pSsIN~T`TygMQqCLxPrqWDVRjh9K{a|{VT z3u^|W=Q4jgACqNp$ok4Fsnom*ii=TjJM!%>(1~DXkL8(FjHZCO`!#A#>oy`}dAyoI z*WiIt!!OJqVvguD3uk?Ct+Yh!fVMi^hra`@O97bKk<+GINte`qZ+0Hg5&U9;$y{jY zyn3md zrELMkb?JHB6Bo>*?&-`hM7`?N{-H1X6!NGW-n-!Q4n7qx+tylD)XUI`gyigLesml` z9~b08U0ii7U5?^Th&!LQ4tfZ#x1}tj)Q%>llCU*-C9{|yAvPnK3M^;t)ap-QC4~O_ zuO`5%9OwoVoI#y1z1m|{IyC82L0R_FsAa*0ev<|`^1*5^iL+;;&upGhfh?iQYrD)+)y>ENnQ9*!}mgIA}ZfQzY!<;3Dr3cvZ#kRIaiXxHb| zrZcbD`uqe!?;jUHp6w9-@|?EAli{@db_Pq{#2gcn*TbokBy6RJ`#TsIgR6hkAAbdr zOwDlHAqb{9`H%hV>}*Pg0{}<@g#UI?9ic7SV#3(gak35zl7SV-uNfFbz^O2Xjqr&7 zV`3V5yU%j1m2rg0@L2H$|34ciU#_76-v1ig!v56bv2BUHtvvi3Z^1afgr5PkCGYjL z5;{s#NxcLxOn~y&S{UM6a`Aw_CynLM8xCh7=*F2`ag&0EZI~Jt3#1_lTCyX(Jv~`G z;R`9*JoL`kFrzCdNLdWcwpyT}(7ryCiM`+QArc4F!#2J9#=5 zd(@-TwAIU3O^t!sZ_E098Ganv{KA*muFI)^^*h86@v!3NPRBm&RwWgA2$x>2YcA6W zG8}hl*tYD&0OVNwEo+c2F@25p^55ej_VE80f^Hec!%vF_k`Y8LK#y}pOREKs#sERk znc9N^Lw8qCO~4b7Uly4;*Pfavq@5$Ha1sG<4H*T^$Zv2kI25Eld-hnK)!6fSH^JAC zzimJ=75UzwFKD$%qUL`5nB3jKT$a@~Gs~IyY56oAgNM9lw#Jzh{jSBZq-<;?aPtpQ zC>?u*Q+FI`{WBtg!BOtR+~+FCu%m=Sn?j7V;+YpKufhD4u}xIa1XKR?-`b)zJuIUF8rT zL#y;dAG(i!>eoQn*22dtj8}WmwDw^7q2clU4^KZ{GQH^^E^+UwyV-e3FRl5HujUpE zUP}R!ihgxZvbIvLR{PP7GH>o(;>5-ON-ecu@b+;|%<e@~6m|Kb?l{C0sR$I&EPSuzJ48)!rjW)8%;WI4)_ zS8wZ1MCMCT%~rXEhz0roOAD~l093f~fwa$_3;N@MER{zu?ZM6&bHn@ELsmx-1*L4J zsA($wg%y&mte@kKKdwDqu!N4KA;yDn+3rK%wqaMzQ}v5ABTj9%L>L0c%z5*Adxruq z`qY0mHo7*D5`$A)Sa*HZ+FIViOa~PJsq&u|l^wA?PZ;PAaki#&9qD;vWd#K&uL+~q zi(=y9dQoem6;u!p`X>S?q8xs`Yr`?@Dvq5pJI26#<^BXaD2T;SG87rkbQpb!!gZH% zTvfco8t>2dq-0-hWn%_{V(9F6zLxk7FkDS3C7#-eDvFm1#QMQF*I;}6LnJG5%m zFi;p1&fhZrdr9TrQ96&fWOEPp75d}HR5dofIYE2;=>9&xlkFM%r2HQb053(Y7)__w z`o^Q(rM8h-KeHqT4bpoeSVIfVJeaf4;Ln~)kiCaz(^j#%&7#YWx^q+>w2Ke0%E&Mw zlRNvxV6T956S)9ZLMYKn&AqKyS!HGYyUUxu)wj{fg(~}Y<;L7eosg3{#?5V|8s=ur zr=|w0bgX0;gDkhc{&@1vo1mw;vfF8$wXYvPG$YQhBd{H>Wr#Q+!DvTsfBpr(R^zdE3vwQt-om&?Zx8^&dilIhl1(L&?HDCI_if_8w95MjZ8njwA@8m+#H-F8;H^9<;u zDGj`QU)tIfH8e=e?8m}E^h;k%n9ajAD)d3FY9WD7*!h>3+HYN><(4(Sa^8Q61=}Kn zVN=hr?RoYGekHf>G&e&w+CN|2#$px*6g7Wx7zAd-xfeH5jjI11nzJYc_n@G_6#OQT z=p&%09W=7C`oYb}dqe3HXt_{xwivwf8N(dxFH9K@)#|(8`TpWY z1N?9!I(=(dVy@sKRN@fNh10@sK5@aFvh35o@Z!}}b;#ys{ZqiW{3kjmblH!k!+~Ff zDULXI`by*Xq$rwBtIQB=8PyzC!rQRD2qhI?ynLCwhz9ftR&PG@c3n?V1R z2Gwhvn;4BQu^+cq173Uv`u*~=qa7ooo77t5xR{6hr`0OG3Tti@aj3#F8*0MS6A8zS zH=Gsax;xOUE$C4j8BsUA7>G9?y8Q$9z1)P`+PGZ-#3O=el6OG}{fQwDms%fWJI203 z5xd1@ys~GOIiE+cQy>03Hw zhAINcCDNF^Xw$=Zn6fTzY$^+hNWv#cMHqh*=I@epQAX2clEFvj3I7Nw84qCV`JGv3 zzn^iLlhFUOqjw>YDG;)uXOWLZ(S41g*5n7si;7H}PDIcOH{6^9wLFFF?j+8!BN7&6 zzzB|&5QppZRAp1*^v~CV|2B$w%usfG33pF&wmRi)6o6D<%8^6;BVk%Z`AX#A?a3cW z=GlX{70AJ7OULj}#}5@t(K2lyHDI6lBc5ATJ38<)^7+Mxt2cqN-Lai9rxRj*Hr{@==W{T_z3xZDanklK%~s*^3Qf0+;6%`d>$mZrNV=hJ)-hRIY8{U&|ao#l^0UpqPOCSO%-l?%Be zO_g2##pTneJMR(w=JfRXrlZa5y_7x~D0zN~EWW!YXzDA`Qdo9q(-RsDntT9CqVE2F zd>tJEjiRfE>y$z1)(K8V+X@!~k3ed(Cj~zWrwUNJX?&%}Q}Bn;|7kLC^#X&bMyaeC z8=)BKSq*Bsf;?{PzDyP*=It#nf7B%Vl`sm0 zQHx*xQ?c z4}zm#B#!;3>efr&wAg7HkCyvS57li5`iG~>=U3>SdmAnHBs&!3MyRrnXz6Q71jtiN zray;$1aDFVX;{*m7@#kE=R~oLL3@H)(%HY9<**!43YM_RXnpM2n)G zvitlN?J0Pfo$kYS5DrZYSSOZ)nwoktPwtQxH4dXI%K_yRpsoV6Q*6HYgho)=-u@h7 z42f3|Epr*|{_RFk+6h6>>;;gEXF-@4s1`&!e4wMmdQU*PwS)Yu>4I4g&OVu0gC3`{ zp0Wi!mljhl3+3 z6OBLS`(^j5N$^v0>97PP#vhvXa71o^av&J=sI+Lx1Y~P~FF}^b`o1#RK@GNAMczxS ziG8Gafw|ma8AZ@S@g2?A`%6GU~bXRy9tnSqfGvZPekMoHY8g zZG>ff?HFIqZQTx9=*=?&%Z6cd8&n}|bnzrat&pF1ytmyPbL=`gSMT~n@B<@p2>b1Q zhuX{AL{WIhmr!>Xs(586bvac!JT`bcwY}fELFwNwDDAW69=#irovVr_+8Hy0`h^Zn z`wk9T3WcGdCQHhX*;CioXF$Uazz3A!rVp+@bkP%xHsh@xpBDWS35G-o+-ytYT2m_Qc-Km z-T)pO=j`(iX(;h0{Km%NA7ZVq7S*=|=~K9+sh1SORQ0c_+nsD?dN@pn-0^2sU`wv? zRM6E=m4!(CUG;w2Oz*pi-y$jhAG*E+9_#&m|0yD66hbm8n~dyaBxG;0S4Kv5l<^>n zWM!{oWUt81CfO@HdxelqHvjw6`JVsx{Ql$f>UHWIo#*+i_xrx@>%Q*m`cpoXtv!z< z$r5{vcKHXV6Z64}SVzSLpPOU9!1*y=^&ATG>PC>w8IQB@6^jenRQ!h{D}4_B^pxRfAOj{<@a;WwyV} z?vVsEZBT~@1)$yVGn1bp(dK^~7}2!~93C}>%)^&{54=655d5@^kK5BxMsZa1jQVt= zGviM&s}iKO_%jgD#^$HeVabe_kW>kgVF3}Q0laOX6+3@PK#pVxY9d6Wf89LB~ zne9ouPg!@g+mYo`caF7V^gVC4H3gCQxo}TjEYB)qzAvSok{jWR(|_3$Va9VA9mTQS zaMs|xQ;@3r}Knr}c1@6eCd>c?SN+1&M;KU+Fuxqu+to9c+DztCF#3JIX86#J*G zL2cokajV>cfR--mha9qjrhMqqal-_bUVJ-n@LJ9D9=@UeuDsOL=?ye#iWiu}ig{mI z+%A7}C2u3&UBBrc#=R`A{A>F)_5W^6G@u-qV=)u|q$r0ErZG20)?Zb(0ZYz{re^!l zS@DS7*1jjd_+!wt~EWQeI#( z=C{KN=W4b(X<^4r>Sq{U2`t-VO-{#$gdF7cEJM2WKxqlFEXc|kT~EB0`iOK|a*tJ_ zp;fozuDbf>Ksft!M-iIoC*t(*KaSq|v>awNb$M4^;wF!zPn+JCdm8rEYtJb}H#+>< zXt;Fju)3`@_|@tb5R2@kdM-rGvaNED9T5kLD2w! zZalB`7sRi!x>^uA+%sTofAP&joUxieHAC_Lqh>I5#VHwihEBYhB9i;jqJHuIp5b9& zxU|qOXSgp*XN`vjHE+>YA%=&Z2^T~K56=2y7wh>FW8M}~uUjh)ecr8`=3jJ`s!dTl zCcz4^L!qD!h@nanfI^w(VCjLnNHwO>)423;4fK`ZWRd@5^WbvS#dA0MYIJ zeXNT4stxH#0vC&0f$h(@5*8gL>?XcmI^H#;S{}^{$JguS?kbA)?pgF1UXf5$B|;c4 z^_pKHl}10g4ya1M$D_wDNkN7g3eh=t=$C;#Xg;dyQ3cty}2b z8o-?%ScnGAjdA@|FeCK5wW#1F=t}bAFZ%}~_!rk$w6oB)XlVTl;lHQieMa^!Ai)0T zw+~#srK-2v2=jIK<#o$no--LC=OpzP-^@Mx?giT|^M#tfA^-oT1GmXva?5iKom&Q! zALJjwXc;s^tz~8zrB&)=hkiQTFZ^*|V_GM=OX1~leJ#!Yo}@=W*^nXi9;DcZmjM~n z?^Qo92KkyDe=?&?-)lS98?IQtx|e|+1Rdi)`bG$U7Wz%HdeUKc*q>95^>KIcPePw$ zqUwdt^2n<5_toDDo*`nr27D(4Ov*GUUDqa&8TJC3hRq%;rP@u*cTvF{lzV~pM$NYL zM#EyBlH2(LnB^zri``@)%i|s2XcvB)?qTDx_9b%D(a@x}ED9jZBsLgo5bZDV*n5+~ z^6~n;jiXC<<`bi^On4usBis!*Fain=uLOt0Su$J6Z{Pa4`DJkQZ8`n|vd_2L`^h_1 z=QENh=GPAyH*T0Z(O1SF3JFUC4YiSHSl0&x%#C(__C890!f+NbIY7+Upf{v>C(3T- zx$ULOVkJF}-mRl6>K9zDRo!a3{dDK>@BI~r>1y&USMn2vY03-4?id@9D2JZ#1s(CR zy2bR&%)Naz-~zc*y+!I#N`H%cc5+o%D$e#fReg2hV;BL7^IGRnT3TADZ|uCme+e5C z+MKRE{1HSJweb=#;nVfFr=MQDIFr8fHz@q~H~#tOKvGk|HB2u=+Y-_JLi+tQeo8RS zs}HsWf-pdaOpFkxPtjTdPVHFh!WQMeC}ZM6)FQPyfxdWFdsu$)LL*KH5j56-wKc%< zhvN-}DbEGX%igH?E;Cv+5JQ9-FY4wq5H|-;07qcM!9Z8KzPk?aibJKoI&|&x0w0=K zLX?qM=A}H4&QQRih7AG7(_nL$wwRLI)4!&Qz-Ts&FtyVxyzt4q^~>p&vtXYyz2Fji zoBi${?u5loN5kgBHvZqUI27poON}S@?JN%cvfk6rCJR!k_q`l=cL61!h>{W08CVdv zp5&LUpujWI9Grxz0y)g5?MrzYD6_bKw*v zo>z{Pm7JdhpbYTO*y06nNc1m-#0Vn6d%VuX<$ z=Vp3Cm<3Y{`3qP6=LV%(KS#AC^{)?6`gQbwR=RSJ`GdL8-v-_nO-Rm<7>|bYRTeAW zwV%so=vpRdfF4jy)8prC6sn}>Z_hmpyEk~`k&{Hq8y~p+RKCenqq_+x)6y&I!0$WD zcfnGR~^Lo4?}Y+!s$am!{exU3hSiMc7c|$FcR5 zDo_n(V-qK1Lx?O?zdh!p3}X}{HkC@jbI7_@_CUHnl?o*1S4MWq~+5C!HNHY8F0u zvvlNYd&#AmU)hdCO}U6-dyvBWzS3|mfceNFU>$dfo6_nm-O;Rs;n{N&6ffz`5qRh_ zLlrvk(>CGXx4$#6qP`u(gp+KESzCFN;5`h$Iyc{mIe94sQ_}gC$%wz*w*5_VL7L&E zvex>sdhsy2z$B%>>s*FDn_`m~nQ*iF9cRChkYsVsz*$y_gm|Xof`lD+ z+3l4Ftb+6Mc0A{_UG8anzsWevk297Msaz>JLRUTtzJaYwtgNLKyPS_&{w6D<`F{s% zax$#BBZjL^incXp{nNCP-mN(-lE&SPsxIFW-ZYQj-B70%*9_g*N_=?SpCuqiIr-P8 zgyWr?Tm3#tCE65L&ND9qE|*&450s7ek_%N>AUk}&Y1pF)01Oeq=NU!MLn3J5S$Eo1 zLW5c&Hi{7SU6fl>&zn*CBb@5;f{KA#XN8WYIgT0z+ zic;|UqdYVAh(nrh-u^9(-LHRnp9iY<+_w*6Xy>l9(?TOlPr5cj2gl-21AYpcEk_O` z6&!lS>zDodC+91If;^60Cob<7Ju{%*fsS03tsRA*$}7+H!{*rU1MlA+ikwz4q`Z2) z{u)5;)9x=v_20gptw+dIpQVwUjr;quO?omV*6KSQ?{5OUXHnkW1{^EIUK&a{a(}9x z0nMMEDA>0y`=%P2u*ozBe;sh7zbVw%KkqUx83NlA-)yT$L)uo;H>6rO{#IJGxgi?Oc@;3k{oW8;P$2!jwbrsf%W%Z8&>c!vK}+BrvoCS) z*KYEmJAs|Bk^`mE`3L^oH;Jz#GoF8P>p|eXTM`*NGIffPKL}?!?a!lp2dk1XRpU1n zI_5q7$f*RRU;JO>0D$=LYds0^^lA=H6@9|XPstvx;bIEutGe`yOxD2g+6VLVWfX0q z6;nY6O+0q({-l<&-oCwB)?^8TW)Z6&x2J}lfn<>T34<*O}QKdktIz;ZN#MD zyv@G-@a|P*b#V^nlw0PKVy(f=$&^OvdtsYIS9f2>L}9cHypf7XyZcz*cO$X z1+l#7+YoTu^({KqJ~hmIYMgievg-VsU+F$E?i_o8bwj-8De8k#ng)_YL|9VPrK`>E z8%;s%d~eEjbd%h2N50~~9o~Tlo(w4Sc&GW}3*9l6ldE)B*)lN_pY!P|V2fuzy_>_zYW>n>PUq$N z>Z(%Yhw!>LZ{Jq>O?jv=68b+NmVlPE$vgVx%h1&(Zqh$GPrOk+?eFP{MIcg15q9VL zeAu0t7Ll53E-sB5v%Y+Gh7)%OY^=ZTUu%-0USE4W7N+OJa9=pJ7BhL}&OEwl$vLg^ z@)h52Fa*xwy7QCDi4|g@YNmpOmez>H`eza+ zS0$k*=WlnHyl&}_SGak!f7)M(b+y-!*uR9KVEUm!$_L3XT4ZG@n0`+sTf<4}tB}8S zBbe9CF0Jj&JFgpecRPQ*lM^2ZH6ATLS18sRk#Sq?x5!)di1Z9qA5HDJ8>ua{licYA zuf?vqe{#XrcUjWgkJnKdC50k#vUyWShAx=;caRkAc|V%n&30h)?3j?sy_FTm5Cz&^ zP7Xxc?6pf*L6Ls>`smBEOtsk)hSL4@B=euMC(+M0t&YLgU^3P5f@nS9(nu>??Xg;> zU_Rq_k}qeqbr=PwOF|`>+N#LcE!QCn7ltn0gRWjl2{+igslD*?y#gs1j2Yu%xqa;F zd9l{uDZGh2z8!9Q<#l*K7N%%@n5l-*p-cGY*E*4a_MY6rxu^n;<0sVbY`Y~7wN4n8 zZtvRWn20&`5@&@S^wOC#JLLX;s7Chsq4>ZxWL3&PojpmyVqhW>1zI2lyTA=?zrc;I zNp}Ey$@D9*9k>I_vR)Ge<2OESDTarJ0U4K1HRrIhuuyyg?2CN`QSR4LVVE!#KaK&#s6gcF z{muCLx3k#{8l4W0Lg$}-DH*5#s&)?hM*oJ36Ftn*DOSkePRVbrAi8O)!$)Wo*8D@k zX`B7zI?cQ6G4$5AsgA;fi4f(=Qrr*I*>oh(tXf{@_mIv0ve{TmbP*Gj#h~c9g1=o8 zWu9dxFxDddX9cE!3Wk~(|(YI;1@X9AWJ~C<1pyc>-F;_gc&*oP7guf*5o?hcw=SyBV!Ac8xVLUYZ z{Cm&tt(f@U+>;LtVnpIS_Io=~!C7z)B87+BS_rQ?|o@7+N^rYUlp^4t8p>HivN4wI;2P?=iQM~{cFU01sH28Y_YL{RnPE!#Q~mwE^?6+J!cVD3*{S-D|W!;p%J zg(ZBBpVktS!)j-Dmnl>#tGfCxlgWBPkk#Yi=WpG9>k_ykBJ*ZNacOgppi@!TQ@L{{ z@8||PaOHD-ghO5xnhi4a;SLl}`^L^f&epZ?b_kZ5&sGA89zLFY@j*$->hu={ z`mp#+tj=?Z!1Z@FY3ad70+SPyas~9=^k=s-OjJw50&;eO)fsF>-+T#RCT7|;(Ny7Y z4;epb<-=VSTBc2J&$(2a`*U4Q-BuDO<-FI3|5Q@_G1p+-*@YMM%vvTzF@BN-Dc%SeX-E#B}Z%@(qIf~=H(~B2YBSoe_%2Y8hFvxB^$AJd} zXY-Z$SlA~Fcub8gp{27cGu~tM`>xPblCEZWqQ_( z=K{IU=yRVlr_RijR93kT_SR}tjqPRESQo%E3Af(9LxJKr+c+jkuitK53U4#v=H^Zl zzx@F|WWf`){eYWX9eyb)DrSqF^TO#kQOM5DR_2VQ?LEgq0E30?-13C`J&w9(%9nIK z&9F{SUmf_Zu$u`C+edbrL{d;Z76>0SJbN!Nx|eM|Y~xh2-X9#rOBbG(i;be7BIJqs z4sO!wIy$*93|v|sZhc*~pt4ds%G3gg8LG~~Q-a0H6GyI2+vTT4d+x=pyV)+_VV zvR52+S@NE{l&Z`RlCu>sk#D~uM7ybtjoj{c%)G;fijh4$I*OE|SJ%_~_~FAXl5^)B zbzNL4o)pG_kd=!ws#7_`qTNXk2=i{EB^Ke(x#F2I_5@`{DRSxQ-PSSL7Gb{`mS?W- z-k{&eYYg6%47j2XonZ02h#*|B}!37Wa(6AnYKh2dJeyvP+SDDfxs-0tjXIPX{S z6;EPd$)#j$mV>U+Z7Cu%y zIuc99LZvWbhoW~TVV6w%IfW!MR$6x`B(U6wWf(&E>G_C<9!w~2$;swli=t!=Ct?b> zl0Uwx!JnWuF=@>#%gJ#OuQvhb92fuyepyA~>$H8-_Lj~^av$2JWa~yuxn@`0} z5jUCB)u~f?fAQJm7VGiP%7}IMrBTM_Z9G$5+3Ol%50}Y2(lTx$PIXg%s?*hm8hZfpiq&-M-|`~3vb z!d@^wz;_*oRk%Axea3H&fkMdgoz?k4*8~4T4t;@pJR?)C8$C zG&G`%MmG7X&UwXVl$UG3W|IS(f{ z7}UC+49(F$B%e4mD!a_Yn8a<#%hnnx$Q+HljGe?8Zq3DQU-__FE$HY zI2{H;o^F(okPvK{szBX%HfGj>lEdjJ8u<9WKlNG$&+!5R|vcDj@bR_JuRNH zTGozI*(=vkop{Hmm-^2zWC!H!V}EeAO%4RO|7^uW3L;D#6Jo(LS8VX0lofN+u5y{p!&qO`@5 zY|6&G@q-{!;WPmQfncOP*OE6iG4WByrh<;lO`xy#JltK19^1Q=FFiE1DJd!6wakg8 zbgD6{FTY306~Q`$J{n_!f)$J#!BR%y%UW6G2H#)f=i%ngN=+3j>l&pt%m>F@8CpUJ z=Bl2ap4p8JxDBx4U%`t13M+ok{)94~I+!tB^JZ0%f`ZmV1+DosI#UYSBwD)mbn&@} z#6`pQBLQ_V)J4?`etGu&dJ23n96299ssr;9K97RPUmUcFX<_#s9Tix;&r*Bhx3}9> zS1IfHVnt-7RAVw~F_ezF=^!J0@-VgZ=}5K&QT^**fh6nhvZ251a8fY5D&9b-A6H+V zI*W;CKKgCGG$fz1I?lTimeJySq&~G-8&y)BBNN7bzW(aU+S+4CpMWlpyk3pd?Uy>Q zK{x`6#JfkS4UQNn$9N+$(euz4b(J+Zo+aG{F}<>zZC|FRlMyw@lX-*FbO^+>LAqS@ zss;jiQ>(hk)MrMqr{A<#d)SYIjACm~7mL^us@x0qan4WMkzLz$Njll_IwmG+C7^%N zwZ67CgeY(d9d9&Vz%im|=>;W6D>Q8X126_i8$@gIBk?NAYpH2lM~*I$Ix2DfXtcsH zlcEJ7FT+{OP!f7ctLf|K1EA36q__IL(8uI6%8YfatkiK);kxe!puez?1VjqZqQbKv z)WVFEOu7n;C2Am#?#nK0h*OCZ}F zWwAvb*pT-d9)Z1ME~mrmXMPI&OEF8@Q>2Uq$Xp%v zhIpibBZE9_56i2ogJZUJ9~&APrpfxbeT1=KS+c_(%)D`IxA4hY2L{3hdnKtqf&f<2 zoc-?3POH;|iXYZAM{GuRTpT$aA&zOW*6MggxXWKCvl93LcvAZj8eARH^F;0&fHa!jxz->lGMyFpIwjich@<3mnPt|B1+gi}tJ zkyr)30aPnNSFLZU1VTWz9KGuDH(F`EBiG&jmc%|qYB!nrdHat-6UyQ0%UMd7APqK5v7-gKnW^C-54~sXe$Tp-}Nwe*pfaz>x zyEsckP*fY=W!sIv%yq+%=Li|z;J^Sy-#sAL(@NX$Ym*sknOK1R4AdUv6clRAkxvM*IAk@W(t+xr{`fI7NkChfHE8e!yu zjF7GV>5}L^H4M?R^u_w5x2vyFYf;8irGop{2Itm!mOSq)4M~z8JvY>D4JZBG!6_tE z_3@QS5Q_fm#g@yLM`-Q7;QwOr_46yWpKJDZRZaLt3O5rMHsI?oJ@_3*%09w_W7V(L zgqH$>U4MPO7d$HOE?!ipd#IE+lt_>mg;~UrlaYM`4@#-(ONQN2uy`w-a*_NAE;}nF z?8i@d!Z+eg@{%9;P5bY-zJO@g?*)CHprmtSMpBl=nBfM%DMzi2-7442CosK_*smp_<4 z+cP)||5a&b(X_-I^2UTbqun^_3x?3U-RBYX-_OkAG89f)FG>5BRadDeE=F=w-M?Q& zr3CxCnoFr~hZU^+2&#=!KB zC(dtct{qMvd2F;t%F@gk_jhgM)qJabu#`<$N(oXG6VOa`g%nyRX)&v;qJ%6w>7 zP-Z0k+@@Mlu*x2O2)(zn^c;!bv|lc8Fqm>)FD)rS_FYJ!b8>T4AsK_`Q#5j?j{Vhj z<`)KJ_Gt-|>=j`lHVo%_8Fk{HCo0H|GEclUPoQ~7!e|I(T zVYX;&Y{Z@Wtc}|ypM&YG_$*oUGxon=xrq5Vg!_c|Erf1#zL)FiMI2ocz;lpDqXG;Pq8W2e%50Y2Tf|w~+Oj(_aybmk^;~M>Vs-JQ<0B5G3}U&# z8coTnA&~f9}5H)k+uXx|L=TMN!nMGIphJ@blL+I4j%T#7f7u!sGX;^5O9&<-0dqElt9eS&HbTx4i4J5sU(; z;x|{{5l0-@lwpQ;dTfn-PcTdK4hgMk(4*AOgY#yLJ=-Q@ zWqnJ}?Gj82?|U62LzWHoR8CfwlDc{%jHknbZbsv9h}{dOX|YEtcBmwG_x3u%WFuMHMXa;<qo}H9iMfO{AQ6uIx%7U9s{*WVZ`6sLL#Z}#%U9&*zIt^I zy`nSK2Lr&F!1b^XaXDPd+zl`|zRgdC;&60H%uGzAf)E!WKnx5SY$tq)-E9IAQu(2m z-9_kSdC37`G8X0MC^L+@@7+7$#acorRDB?zS%zz}nf*{nDrPsr%_Y-dTf#;eddwUW zbQ&C=V8nDa%l4U@_A`&ws28r`U(e_23hkoEu)vB(BkEU&(VhpSl<1w_IjUk%0YZbh zCxLMB5;4lK%<#>9l;NXKx{~S>*4lkrIXRVMQsAJCLUrEtHNtEo;j^901DDlDFpSEg zJ#0^L0ybMiQ^#FXt$XO}z76#t5($6TF+oiEWY$N*;pF&8tYfEi;qwGDLC+LU2=dea z9@DLK@xknIX}#~&h6>f4Y|j)nYd&rZNE-*6YK5f%BBKXPJVemACGQB<*9xd)=3rrC zZwFsM8S-9?6o7m2!|t!fs?ZL~#T)5u6F1}uvWv>aA~B9kUfM`MLB5DX$ibgnsHY!> zbdq5vR%J2CvsU<^O%bMel}}DiTo)5w?0_M1c1?|5-zjDYK!M2r^^5A=QeD~LiekuW zCrgN*?nmJ=)w5dDLU;Q!X%7v}ta=ZMn@@(TU@%3L!qH0{xMr1{IWD^&& z>*@@E`w<`v3DC0Q*^Z(UXoq${h@GfZ2b$?wy2$BfNWEVj&$?kB=#|~{6-+Lwou^v z|GX-Oci78^vp?KUP4}Ov-ck>68@NlRy7EBF|29`qiFdXFpoeAB-A6@;d3 z-gL0K;Mhivo?_n@F4w<;@)~(79)#lPm?w;W{^G?7O#KXlWUnxQNx*8vTE8(m6~FTx z`AEY%O<0=lQw;ZLkbj#_b~kX%NEg*e9M9Q$dn4k8Z%Ji^YDjI3xODsyz&8Ir4Bcxj zEME2&UYIwn()shK#fynnFhQQ^TDI>w!>A5AzR)yaf+_+7f97@Y(LB3nHmF^whqVe4 zz~>k~GTeaaIe06T8_Uu&b;##g&h$B{9Ck+*6s~Wz@Du*~yWp>jXJjbrGlprHne{VU zC26kV6F*6~i85rn#YKwhJO{8D2X49w(*)=oxq`Gq%f~bDr}+t!G!fhmKFA~b=ji0M z_OY+&(^plRREzD)$(SS*|MQyv^K%r+EPUq+-38NmN*&XEeVi0{R9twm6(~b|4qTd6 z#;N}PRK(3iyUwEq0)@9g;^GqcJc5S(F6#u)r`yen!^Fe>^?lm$0+xdUN{^L1nrEp1 zsfoUM`@i3X{E6en{>(T-AK&URBR!Wgje~1UTqnE7T(AWW?{F6o#y$2sbG>p z2ow{vKihqPYOe&`XCTU7*u`tS7>vA6e;;NvQ_+bQ7T+Qn%5wx~vF3emeY9B{NVR2G z?lb#)LI3kNQK;5v={sbxcKk9W<*L3b5sYwR9Q~ij&!HBsG;%;~^ur}luqPaA-H`Kpq|*h{(9;?T%kyxb-y!P+8*nkG zzAoUVh9+PA=WiQ2U#FsCBijyr6s8Ta$();ctSqw4s!yXY@rmJLEf7R)e znr%iR_#oViB5SwK7`c8mZgNUKoai}z_)ikXJ!l|768nocKQm4l#hPJ!+9Jfy#t4Hc)q%^$^V)uMTAxOq3Pl{c|12@6ahU_4h7neeeS3 zHu6GWgLy1Nd>W=ds~-6a^}iPWls5ow*dS{z4I~XhUg{+IFz3p;vAR=d8e+7u+k^L^SD`vjNEtkA@PlxXWQE;*is0~4&-M@g?ie&^3E~hQHqY53QBnXh zmQurp^H3R=mX%q8N{}lUtN7HWXcj#hc8XNUG}RgsJ^E{A#t8DCg$Kyx|8p3s?1%kT z)LzZm-`!ernXe0i!}jp^vB-aIz+PePbc5twMRz8i_sfg+>IQU z^+2%zLCnF&6iT+OWiW|Dl8Rwa!_ArRi0&x514s;%^Ln6cQVH`o5mJG_ZYRj3UwX15 zs0g_-DCiSew%AjQl%Z+QVrivo*@gQ1l1+F;?9+^-a^vr-Q#t>AFDUcsTFr_jRst9J zgW>V_E$w_pORQDu0b~o1p9T=2hrBObrj>^B5uRKnOquPbv!kVJ*I5!2NQGViWb5K` z@cQtb?i7?A|2^ceL1{%K7Shq>?=rEwP~e`taU&wHb+}W$EOl;HOkM($VfR+W3&J9Vdq*!Eda^?J@{2@ z_#Z2onX1seg?+!%-e@GSf)@)a-OA188%~gy$%ZM2oIH=sxK8^b@KLJhjr$tkzuh6mO|gazZl@WYf!}PTRTm?+b{TsfTrDzGY9)sHzJO{*HJD?Ceb4 ze^%N|Rz5(XWLW>iPUQdND2DA5K<%9>CB`((JM_{3cuHX3$87{scr0$?#ZlODT`-s- zSdj-|`EV0aKD&!67Ai%niRqC%UawU6*jE3_@-AM^9sUQU6C@e4U_a=b}5q^L>so^#xLAvxL|x`kefjl$A% zama0_Ia@9YZO>Pqi)0SQJ1p`AUqDkIhV

2T_M%@y(zQc)T6RBLz`2jUWgu0J<${6M@82JR7zLo%odzff{)hqNI&vld8#4ch zi~p}E6sbL-od1jkfaHGBbA<$)6?aZarWn&raX3g+2k_$rz8#|2#w`xMl`%k#tEfl+ zvY~fCrSwv5P_hsfEYDsnAXSe2aSdYoHH?L6AU~@DXba+ClZ7Kd0FbDv+>Gt@)3C7f*C^$lb(krPL;?ITkOG70?nn)% zUO8!k1a1)I!?zL?PBHV=uP+8}kmiXnL&YT^ENe16#_xH!+YwtvlU_qIO>5iu7#tk9 z06MENkB!Ly)lyed0Az>|TW2N9VUEFMFB8V3JC>WV=iJNlOw4nR>0C#OO%yEWXD z9^LraVrh?=tP(gyJ==Z*moeJ=_7*HxZuW>~m28fKEbJF>=^Zof0Qw%F04|9$xy@i6 zN=9At0g5Fy|J>hO&%%Hug=7jIB@6y<0rP+HP)EG|-$3I>T;*S&zDb*HyJ$PJ9ad`N z{@*?wK$r7Bw2kLt9M$(i<0Xw2H+`-KV4D9syLp!XKM1z})^^S~G-y*EeX-t z-W$BV>L?u9Bc)nx40f7>9~-g zYtM6oQq7$*a>M`8nhu~#!rK^`6s|`SATX?&pXq#M-lD*OHZYg}8YXQ2RM(G3&Tq3a zQPaor*nLQEY8cLIyE1Qd#BgqS(C8lH-+u)S{7ab%Cr(TlNCB(u#}%l~TE}Nt4>s3pKeFQ1ond&v5ea zF0x*QG)%9I9$u@C4f_35ZpiTe<|#5krx}jVEEO+dWKP#Gims*Sk?MCH7Temz3;?(B z_org}C$AaLBNz9z%DlBxbMMqX?{VK~=z`zx`T`lGZ=bFHSlx zKfjXdGxR;s2Q__X6i(z8+s*P%!#z#e#0(AF>jnIHieh)yHma+AD=a4msFa!tMvEke zjLX?Pa72`_Wo+FkN}RQc948{YszS+YW@FlJp3mGS72)$%U)-}4saG}Y3bBpep@(qB z{3B$B-DKogR@cia@L=NObSz7(c?7Yo?RJk`TU!>eoO#(i@KTR2ellV}+K>I=Rd!Ms z)*Zzpz&7MK6zP|+^D=IKK3!@hG3=w?hIUc`&=(LB!wj8pFf?Yu) zl54Q1xiO!%E}XYPX6=2nl3HBcWJ`Z~#MJQK&)rn#(P5=&o%SllIHG|hhq!yMX1=%OxcC*w$@j+?Z{QNRqeRqY4>5ke;0o*Z{?#@FGhGFzuVj-{*cbkS-I zMaR-|3X#QsMEQ7H^LJFPLpSy@LF8YP-?79Ner%8H84 z>fVl&dTz^y&$9j8y$#9jnZ8uKkisJQjEBAivDnh&f{}&5pJT+)3X^nhpaHv24tiOJ z$ZJ*(R+0AKO0h*<#4KyyPn1_Y<1oxaSj3UISRk-b|J7tot8xs76xT>Rw2&)vs6qbB z84;s4(1+Ic^_jk?>eADY?Zln;-c@_C4IQ z=+I5Mk#t;BjIeLMA_flY*Mq~6G0S>BElNlNA8d0cxqT&D<@xY`y;k5iihm5U27Y zufZfm*z`n=ChfbY85I?JL|nOE#X*K4^I^kK;e4kzUYnsC7hoL}81tqBoT1@C&VO^n z^WJoDzUSVtnzY%-bf{(lji6yTRwGC-s!(>njnReANmJv*xjPa~C^rB`YBdG_T1H>x z;jt;WRn~RxJf!8`&S09%8a%U`X>2&d#O=lE;4Kxx2|%@pz8&m@ZFg- zXeUzb@ndaiX_wM4kk~GGDfDzt=LIOY`F8vn2(QmRh$n*dQCfx6IA6$3={@yOq|B1G zc^O|eDxzzD4!f{)nAZB0xv|>7pz#9ab`_~A#QA+=rr)l7%J93a*M~cQ(taAOE>+s_ z=u7i8)PCu#{B!esKC_8mzTUn4 zX8j|1SAIs+h}%3ZnS~p3C*{d|=aUeVn|`JKX%ZHk$jzRCWv++R9>!17F4Tm(j^A4y zk^x^i4q!_$d^Z;hSO{h*X0T@d1aHJaY^nqJAKnxdJlc> zPzB8g76(ja=C+8ZUhio(tRhfI4^#yMl?mT>IxR0%^e0Z`(wU)btHuD@O?7|aQHyCv2d47_P zhAib`w^G|md<0(whGVqk{P@?s8LuF#J}tcsS5)5H(zR-7NU}j~l>lAwj4qow=2Hn; zH`L2}`dxBaJoyRtzl$E<;*6VLB>P~3+1`U)OvDJfkMq^_?|(ka*|PsUeA#L^>E7h! zvdM?ef&7gO)tmyLZ+vuAbiy`AD0%>LL-Bnf_Hd7D4(BWLMIp^8mSYZ48{)qoC}~<5 z`$A;DxA7bM?~qTd=KPkfYljlc9zd^~FevqvaOb6>zhwRVCMS2=v-9@=TOr~y3TH_w`xG(LvVSGq`Jiz?9TEm!olcKm>!x-GZ4(Xr(EUlt8EH!zp>J9NNE7z4z z{uAyG!_m>9PUj6&l+%tkp3t z*X%GJ&GtCmyB*I6;l0j*@g-C=U*GFX`ZhW-gnHuCw)CpFM;XrVQD|vYk=d`AJu)_; z^P`uXEEB(-eD)0!^}`AKQ11R+jiwmQr@uPz_?lfo6>A&yrp_Bd1GSWK!1P?odgPN+A0y?$o)7(^^^QUGEie&;xI<)7SF5KtW!+h%vM zPJxQ$l!c{-&W{D?>vSWndv67Y)Bci?nDWY}dx@_9F59;o&$L!I>V*$KO8CeE&+(mo zMipD4T<)$Cb`K_BsArUfb2@|u_sL!cHxVU*bw=CaB0hi1FqorArN51{-!iS9q$S-? zq~2;~TGUutSI!q;j;MT}^r3TQxc9hR?O7ySsvueI@1Ots|D}j&m!-Jf;Bz6IdrODf z^OlF9&Xz{ulD(2;FdzO(Z374A+_aG;SrGyVON2PNIGt+Wj(-q_{`?O87tnRFX_*M0>*xa)VQL21^E?0*%rnGp<|F?n?W7Ma?99s zJayplC}ClCCJEwv)_L6}5&urmN;9Bqpd`nbiAiITB6ztWkVtJGAHA)ygda5iPp}6E z1DII?Y40S&fy!r#z0l28570!f$3V7UfcYzmO476#LY;aWpQM|cGk7~S2EoMy&(fG= zP>=V!6!F@@`AJ!bC4%Uwb4H#v%|7Dk$Ssy@5f?r-|0a(%(GK)7zsDh-w*Q{MmQ%`U zwmD8SZO;$^EzlGENJY+uj7J++6X+DXWO3d(9l+s+laj>l*PY1UQ{&&QE}@br8obse zR2JXuP_n1SO&XQu>MvH7zfsvZ0Q&z;w^RQ)_2(@rdmVn3?skN)@dh;6`zK0weZF(i z8&{AuHF*N2*ZMAfO{DXcXvb=#lph(dF^`qs_+FJ`eV9HXF;MXI7Je8dJYy20==Mww~o$} zKdy~opP`bjZjW@|ks92x8+bn-*Iy`*6 z5ISx4^lQ?s;1ax17Ymj~8L2T4t=>eE!Yh=^au%JE?xi_V%7*y4&0|>Rk9{hZYQN=5 zZ|Ae88_MP8>^oX^9O5Lx@<-Iu>IVQ=wa#CrViaxW#KtEUB#!U;m}`s9jh#PueNg*) zb0dfO+pEMU6p(czJxOI39ZGlke%at4`$OivcjRTV`K0U>A7L*$V(rH_Dt8raH zT==a2#s_jQ@7`p~nbcU?5XVY)OE7((p2Y}0=P^H7+qWcjwIjknKMYTxvy)C*Ve;S} zwp7a2>M6Pv*JtXZ#$%!eZ!oJpGlx=09$mI%r`Q`w(zzn5d=y8a`u#RjX`bXy8ZSEWQ1zI(rqETIogTsfa`5g?>{U#6uM zH9Z@cWGs(El%tEDt7_<5bqh4Mv@PFv%aKSUb@Zh9BhWC_dxX&CAD)hS6HFx?wgzCq zu~bQS-k83jqIp2HHP2E4c1vQ+pT~nw(+w7COx)9IYB-&{Zs1#OKo>tvWuLf6q|H|7 zxMl_ue06~#Q4st=(ovt$t*84a&C~MRW!J3VEY_d2XmE+~`;51KADqOt9{93AhARWd zuJLjAz>1{ZN8T{Xn#r{$iAp{j`vHSMTI&l6oaKF{K5i<+FLU!WWx~=;hT_j;RzH-# ztx0<+ZR|_uxbAvi$06c+wRDb1aJ?CIWOXTqe$>q^wSgz7_FK|lOK5Eyn;szIlfXpG z8E(AYVnb^+dK2rA)f%J2@G|#RR)ExJ{q?JVfP1E^^y221t6$4FXYQ&$mDc;29{+UpcPgIC;);;cCRov>E#qxffU!A#^caP| z*riconL8FN#?b?J3TEZ%*9lJq77MH5eMLF8^UaL(X2vg@pCO^-Gs49@vv#mgeh`>m z7Z;abZfTV^&Q?^{I0|_^QrgpKEy(z!0G-U(Z;+Cp&gAz=#Ti4-=MP>SQU}v>3iyAP zO89(GdKPjoz3jb=c_odZ;Zyp3w#6U_+f6-o#j)H}G@`G5}#CwxEs!=Ekiym+>X?SQPUs!J9^Tq%5H~s6Hsgn%m&a_tRv2z|2f~-c< z#Mt(H+wCcxqIA3EK913IDq-@J+c^8(JxAItVJm3tCn(STPs7Bkamc#vv6}7v8(E#= z!~LQ?t;gqT_!`wDoC_T8>wo!KkHXwO_i$qO$;9^Wk5S6Ucp(9@0N!`y?8BWe`N<8v zA})tPD=bzc9)wYpAQ;N``^H-%tO6N6;d3?U3$C&vQtz31-N5qUqoG&TxR>?j8FTOh zk6ufK9{&V!s?vEBJ_sAYWIWNE-1*ebF^`YWSe4|1KpbEl*V;`-ng-<>|DnQi06KWX zl=3Z6R2>nE7Kr9^+=yTvq*QkCkKc<gF6Jr{jothj%9<e|9|m!)rnS4a=qv(ehG zv|-7O|APS`2R`(}A_c;#~@^9j%=)7+L3p$FYwP=DIN@Mf}#ZA`bEAM5)tT5vgD zcm9z%MN|sg@5zd#Wr_>#47B-3ti(20E;u%1L}p}al_%+;#8ywB^CZ&g67TzYDeJu- z{qi80MYDjb_LENE)p@2UXZIHuE~^I`N!N#7gOsHDK37VtZ@$VCP5YFgcQ&#(jOD$T z*(u09>r&($G|j#`Vq`Bt_{C|nSI{D*m(U@zt!oL&DY`GWMmXCtQcG9YhEFJr zM(*9>X-Vl=R+^QReKA$u-JrfSa;CB9_*&){sn_2^Ao~P{z+oq(RNL}rGw+adLs646 z=8_ENq$Y;FrGbTc(^!KtRFKih{5-Clx9(Hx$tA5`)4;}NR-lIr8|h19@%GqX#z0-3PbH|HHRE3gzF>g=|R= zpE?0)K`xq2-7R|x2MvB92Eo6uV!pVu+MTWDZ!artt!`WhC(?~N0$)7@Z7O+bOaE@_ z@tRiNK7Q|hUQ5ih0kPluiu1Q=t>_o3XC7Tchy`nRHY}k2h&)M6Fx~_GdjtC6ADXEv}E0+asxw$T5`b`q8V*AKOZ` z=w==|$D9QBif0NHvi^DlIgw&J7RoFe7E#g(6LRS5E0>abp z)D89RQIs-_9Yk_Lc_G8p>DXtN zh>i&!VM8V#Sgaq_I@sm&>6SfszhN&Xe4PlKG&Kfj9s4IX_`vW`;-dm@9z2?~u@MxD zpzyL?W{)4U4N%#yZu+DyOTCsPUJBYmG|gR&sQl*4T(vMlR0rY0DV4%Vga(*{ydNs z41OGya^iIJK4qmotVzwemSBX)&k!O~T&8K2CKZys*!8P$J^_8HRncgYuJTCHS>EEF zs}h~2Tvg7&U2c5N-{RXS}AppUeXW(>yqHdV<)@T>qdaaPOSy8 zM<(h0jI-P}l9R$}Lw`;4RSvEnzd`(o6n3h&-RD|wDEKTc7+u?EKspc6VnAV{hQFK& zNlR0hd@H5yEIn7ZHC(599^zn;+Ov<}keK;?CT7p*N_YgyFXVSfK;6`|W`4za?oxO4 z`xW@g*AIea{$|C(f?nCm@Uv*cQaW4E2!Ena_hsuiEXXpEF={(Q?J$NlBe4ewAFnz0 zU}o6i?rB0l1%5sETzD0Z{F<~G({H2L#}B&U{Te27Lv&JFJ)6}JS8sziOtN9J6mLom z&5qrKrKDI%QB`2d%8EJun$OeD*2YI7^-oU{R?gjmm@J9xv1uYhs~;=ZXDj7HI4p*;(hZC#{IEB8`3-cB85j;b{^xMB+!M@W{o5BR4uU2SNgh@ZK^H^QE zTE^x|hql}1m*dFQfdqm5njihXLR1iia0bDm9k^j~uYfRJ;b|$|GQuwHf^zzwp;E^o zPcAOOaw@eezqDn-xL7pjwB&!=j;BmwZqH|Euwb*z*}-9L19w6N>H6M^xGv48hJnC{ zkjiw%)yO+65)xNp*_~fac;yQ!BHfJwBciPdY@sFO<0}c5f*OC9Grw}Fg#A@2=4~Gh z(X{RNH(Bq+$maGB9bI+jcU(l8E4s(Nt(?NwXdgn>6aYQN)Vm-|3+{;~PA zpr8RJO VHC}d1&Jx~v10XKV=677ZxmjPblx|vo>Hak%l$(wGmaJN5OEY@aFn!#q z)$G* z>ZS7pb!TrkZ;1HVd`3v{uYKP1zCQ8;oeT}F()ku84$F6t0AlynrMZpk%Bm%&g`L|q z2t1QPt z_@LQL_q$t>i`^sD+TW?&sfm|x*Ph(st8)I{`7#3aS^hW>dG3eSRDBElRs|XQW?Syt zk)6L}2iU>1I`;Y+u_JCzxWCd4#WH30iZSR7x#AxP*FMS4FjBjb$&4~c&oh`XFGs3! zN%SO-_kVgd$nHh~!nbVF2A#>l)To0cD$DY{Hn{~W6`-l| zi&UGTy>xbas{^Nsv{Rt;VGmgR1W9F0_GOjp-Gpm(f&9_4`hX%YZ9Q<9`}*xc@Wee8 zI{J{ENDAfvBVfnI7};4qt8hP-$RM%luS91(a{%5S$C*r@vX*mShmv_^E3nOYRM0?Q7|vwO3{kw#e!m@q3-$;SCNq{09kV zWyhO-sE;{Es&w$kK}y-)5Fca=Uf06g(`8hY=$Z3{eOt^=h1nucAaqxk>l8laW|Sa{WV-+YlDTdv4VZi&x-<;7g^x4-}=7T#Jd!?LVo zEr(<@DOL0!V_IDk%x?{CG)*tJe|4_?5Pal|g6iV>F&8uW)}-RVs-lejMuV1^lqsa4 z^8*d983d7F`kXS;rQawV)*0i-=hO3Mg9sV(laOvnF7?#tUT=Y9?ty%2E%KT9cN(cH zC$w7fAT?Px={tx&#|(7#$6>4W*4LrK#fnK7hhq9XRy*r>a%%lszYtV{zy4F( zM~6FCUu;0d=6p%1Tw;n+if_aow5LBHXlwkiP|(r?kb+UK?S9c|{<)2Pi(qf_g3T-m zroQn`>~*EpbI3dkXeJYEocEZCSO4YN9vc^hjw$zF^uS+8WSdXq;hx=A(JwF3Fq70x zMQ=V_9YF;sT}CNpUK<|$OB!BUUW)a&-Ca@GCGFf)Pk7%9t?#e7=A2U5xwik8S9F9< zDt&U(#;x3qf<4-7e{R1}YFNY%E@$%(wmULFO7deQGuCHtvYG4Cb^zwdrKLI6MG<3j zY?v5&f?65S(Cm*v3DdXFS$Eq24GKJzUm2LWZG>)BzWXNd7u}b7I~huqFftV|HFep{ zxG73iPL8q7PDuna8injoyLtkmY$)e?-Y<2y<+jR09@(-7ZMfkt^GtLZ)J#34R}s&Q zD`r_B5Hajp{RQgld;G2KfYI%gs6M*gC!=%KJ= zul2#3K7%(KuoD5YYsmME9KDF=bpWr@{4zHKuvcE@nti6SH*)vAzd0S4+^i!)TcjH= z`v6$-EqdPPi|o5~nPzl`p;^?%`dR%FOJ;ztF1q)0b@{lY);>G%u>8viFmH>f@30Jt z8Oh|qw#KoWSRh-T8Xh!#DL+IT4}6UiG+xbSh?wbgfYe<4Y0+RFWe82Xb7l2Ttp3%% z-4Ru?oT`yb)r|_JzU=UG$zS-cEkkeLsl2gwBB0KBDIXKuR{wE`PwUKSw7|jhC$=(A zSzK(<<=?v46#J?HgsRD6xsvx`Fiz#iTa~}vTcjS4^fwVt4B0UO2EkOX%Ae?@9{lkk z<3AV@$grL>i&y+%ivycl2)%vFCV@7Si$82Cg=xCs+JI^C+VA?4gf2$un4ZRoKLxAa zKP_ zX5D7-jJPgcUQtBI&(jT&cg3?;3#`pguQjh*PNx`(TR(oyT&Av;Qfb1>bNa##Hw9SrnmfCg*>VG#yiBxmh)!pUkmzmYXr$PIdpR;vlPaS}oq?boO_U zloQbPbk)oteEp|Z@-I_Bce|LKs;>}`%4FMysgTW9+u`I9b2@-2a)5`27a(Znsds4|y0HT8$q7{R~Lgs4JMCW(y}CukQK*7 z85hFxBLB@X?VCBZbjz-|lv4BfGNZu>%3kX(g|>UC+G}mXQcUwpzFHK$pK3K$l|I1p zQ8tszD(kQjuOXKT*3i@_Gigy|AZ6LBL1`Dvy;wAlE81GDyq#lm2fI`ulys>>HM25L z_4zQ<@L=Q<6GvTn%xrA`Sn8pu1v!U3$Lft3pQ(M%YYLvG1D?FX?zs&zN}jfl%cV8y zIfK{(-pnu+qobIfn2;A5XBL;_uqE4Be3+tE`V#JMvb51%5!v7U)&3HS)@b5g%!ga1 zE3;()pv@y2HtU>7HwZ7;VMoT@Y6!R`5U|unsUW&gnmetmCC?I*GkCI5mTG9Y&*xbB zp@Nr|@&UhffhaQl2^y{+iL>Y4Hf&ewZza<`MxaA@DSZy<{ZpGf z{Kv=1wDtk=t_f1+$2}?~u57vM)-pNo>{Zo56s+~1W@VXroRu@T^AqP*8SXFC)&d`K z`z+Ivfhrn$z3R|hMm}oIoT+T)Tm8eTv3+NIdORd9qr!vc=VOeOhWArDDBzT@x^V=& zUz6ZAUz&QVn4Zj^IW{CQ7c_D(RX)<)v*{axK&JUI=pmM3a@g$6#)PCx>-5)T+`tnf58 z_L_fyYH&&jeX_A>$5SHXmlTUXNAj7~&o3u>DJx%uLN2u>p!wY>9g#0uU5CC!f8X>E zA-qva^4mGP$|c!`mNJ=#-Z{IKdTsPC6mI1;zpGN^n6vrBrP+VV6`$S>5JUlqXEo*= zW^|+OY=3@G7*I7os6q%_2Hxk$5>9DHn`#w?s2qTt1qFd zxswlfeHP7VbKY;#rBV{6LZGXYI{&^*iHHc(gSCeOxV-PX16|c~;^Gnpb2~DUuV;pb z$F#Mn4-CwOb$rN7x9FeJihO===~h%#q4e#jdsqA`LgFb~y7xA9REUTX`JVEJs)y<6 z9c}tf0KXDR^(Aj%D-!eDg)ep(@5Zv(2c#9g&tm!MXCkMe*tqD1U+C2OU$^x#OJ^Uq zOB&35J(J#r+o1<~Os0q!UA+0LfxcZX?@XJ`C-U?Akw|Uq79FcYdP|E~VP96{X>;|T z)48=()Vc+LP!3e%wn$J%IMKyEyoW$gW?GVs zjlM8O+H^}95NX{4G^~9)R|*sKD zH`p$=Fx$PZFtEG`lZoh$R43EUsh)ZOGyiR9PJrP;ys1peO(ui!o*wg3xS}-$`i4K>p1w|@LJ|_vDQ8zkStGy^lMp<(2{&S<{K|g#fxrHvTVrv8O0KFfd zeIEBjj$|h;Eit->MO3yu??`e%h3EZ+v$!q4da#hUNc1}D5~TU@s==e@zReBSw!CPJ zTlHzhp0@RLk0o!YOEEIO$jSVgwPPg`w~%q5oNnkBqnGY@FWrti!O!$oEJvt~q(6sw zFnLvG?Q&*PkzPR!%wQZkHKGtc+2KJh{9Y*_kHyZT!asz#(8IumQ-UlWwK-c6XBBXB z=x*p&GO~76vaTmiaalV&shIq?!iZS{V}EyI*>2QIAp)cf6>d1U-S2b&sXi$_Ff$cv zxwld^o`uc+bmxu@%ph3_y4$BDIvI*+q~c^a>2crZ_J`S464A%)WYz2CjsJH9J41Hr zC7dfO-77#|M9D4xaotjm$M)mE5b=9cDW<19w#?ZYmCakn2QpjR7$sJzw_AeZTx$vq zzqUuXSFDs4-(sXp?fZD&yz@tc$M-V`xKbxO7o}*KtjFR)gUUY-;z@R1&VsV-oDXCZ z{JiOHPMYh2SoZc(>@uQRw>HWA7y2i{n7yCONmBmwS^E4?2v!U475-VGJTtkPY>VTB z#Dl{IXNY}7J}OrfM*u!^p9!z1Og^UliwM!4EVP%JIw?=qvagf9r(V_(^1Inm2_{y} zEK-aziFz&*I&J@vU}(PFj*}H2%^ujuuJyviRAvXq0^F zA2Ty=atzMrKg~(}Hriw%dsFbs>^+Z{-r&&m-RJZ_wTs{V-(~wf7XR|~x49I{z;U~A zUz9L&OIkdl`&~S_niH7xqGFw9+@rr5mDm$?qm{PX)8rBCobT61s^+A zvA$)aBFyN8Gy3zxTPr31%FxaKUfRFEN(-#LH@$d}XJ9kNosl{z-5u&l5Er2F-ocZX z{T|cG;h)?2b5Hg&n|EJCuO2TOTW8*pMK@hE{HQ%n-T|f4pWjO$b@-Bu-|jhmDNU9) z+mW&amn#g1i&68?+unDio>tflD;_D|Wl1Esk?+Ut&XH+R##kL{%pRRyHi1+X^?FaH z3~88*zEu$Ea=f-BlVM^r0X+@3rSA9Js5tuS4ROi5YQS{1#m(K9M{+uoBRrEbmS?z|CPXJ^t&Ltr{GrRT92%EKTT` z7`|P3)K>P_0Q@~!{_#Xyns=oh+`qRsRhrVqy_j3#`{{J3{{G2$=3{@-iVoWoDPGQm zd2Jo^kb);-6UXI2Tuoi2u7iPif9{TVy>D-0vN1Si?Q!jynPlG@I&J4=$O*o_9RR1-Q-f;$F1>o_jf)A(O*URBUGQbmD`ZuflzvPytKCP1_1bneD&t`tPUv-{<__uMTe$ zX?3nkVERJ67Qr`TGZ@7WQzlIU_W}8!T;mc1~AQ%=(I> zQbrYbW(x7T{{I@YR?4ww&18hsc~$d#`T2g^+poG-X~l2gTPi3SWMwhVA}S}8^2e{4 z3W$gb-EnF){8tsg(N z)O)W-i`s}8Tb~WFe6aUy91;GMF~e511m%J4?;Q3Qs@Z57-Z7 zKROleMSk+cP&?S(%Bp^_0s|dR8bFPj#)S(-O^Zy(pSJRlr+Q@zGP0+O7VO9zUDdbd zN@>tOX{!wxK0Z5B-z52e)rNnMVZ!;p-~NX6`bQdnfZo?}jLKD%Zikg89WQta`i3E8 z>;HPy`TZ>fBoa#Dqb2n)&FJ)_%}C|e>aR7SEh91dZ_EGhw|{+iDz|`U{n6WHL1EMK z*FIU>N@At4=rhRPq7?dHHqQLm9PKob+Pv&W*p>uF_*LAomUaZxR0Q z_t(An&t<;7ax?CgMG*ly*>wcRC5^rboZJ6=<=>M=|8x0F=dWuMmT*xM8DAhIGL~HM zJ^1H-rGLJ8_w|2nE3%K!xF2(i^sL--T8hBGzWvXi{qwc95yCu#=UpVf|Kl|#m9({W z(bDp=zDoG_^)gRS&zG~Uc-3G>DW2BnlE!7QGj1ISJ}312{F`6zzH6D`d;Zb{>Y1O2 zhEkp5bml+~*!q1AnNe=RzAa~$et6#sOM1+P`bu02RBGMU_fx62<#9uYUrDR-i_?jA zv68J;4z7p6N4`xOB=hT>flDl+UnT0LDELuz)D*7J-}!%ELL17-&X&|V7#%9M-<(e} z-P+p9%*z`Bn}^?vQm(2}54J+LSEp)s#h%W9hqRoH&DQJ!v8LUl40+>?P1u(V1%2+9 zF0V_Jy7+CPn3qEL{wvh)JU+VOk_OlJ=Eow|hBiAYv^7HxFP8htIw)FE`F^L$umDci zZ_hugKHK%!(tvvVv|P-YGJ*^Ls&>byVBVQjR})(T?H}bdL%;Vj{soM!tvpwa==-J> z&!;Rnvss)MCB*4MxGkpZXr6IY9<0`CnGC{~-@|5db3#dh|2t)sIkScTV1RDakr98M zJjWXW|1xGc&)vM|TtB#p+WZ`5BlS!Kiv=TaPq=eIF!&jXr^^h7iy+)>u<4jf3a>$I zZ0tLs+$tOHD9QauxT$}=EUa~I-}&>M!@8Iy&rW+Q7g- zYG>!u>iwmxw&z8{<=|JKWMg9!oC3#arp3Fcf+tN69IRce(}*FQETd85q#_zfH2`O3 zTbJkZEZhEtyZmPu!jollg~QF99u#Vs1f?!(1%6cpXcb;=duq2fWqZdLJ|4zJ1V=`n zK43TG@q*V#W=>A*;USn--=qp$1`7am0(#eN1J{p+_qg}$!L?_jw((njoYRKb%0%TS z?VtPm4lBb2g5XDC@Vk-vSh|aMQ?lpyVq^DAAb+kXwX^(3Bcc~3rltdM;lJTi7ssZK zOP|Ja!=a$FL85e1>Q*J-T`U^>a{asT%2chE?WBDg*hjOMS0^XyS>fNheEvs43sv9s zKwg^mLhR-}i|-avzJ|xMsc0a2&6TE<{3^x{y;Z6H1Q^%$-lO#Sw{*KB+R;dG+2l>*) z=a%X=VITckJu;(Ba7V414sZyfG`DnC~ z;~TOTLe)WfjpWY6*TRN?)gp>(bFEq=a=7WgMZi8QI3bcFdJksE{3oiBypmQ~qrvM% zMD{MqQ|PGUG2lh6C%U_&!QHc(U%Xhly|S$2=s3D6&nk)x%Md?DN$7kk?fge^j~Uo1 z<_?m2RGAD~EkWJJ#<+Et5m+N2tH3ZXGqV@0!gDHDYt(}K$Hub2%Ulf{aFc?+%s#6H zr*SE8Dv3E99~wHH;$NQ0^4R|Bhlfgd$?Jv~vc3WFVllR`kPhx29K6qU>;;}S!jybY z%3wX-3u7@bJj@{WP9%9B91BucofdfZkETwXJsNf3`Afm-2`PX>>N&0iwuFI|>QN^g ztPtl^)an)IdTdY0WhGRgEQ!mvn=qKC#b3VCu60~^JdJy--TcX!#4{0G9hBf;dwF~N zaw^wD%dm(DDYK~}gFsE!qb(Kd|2v_=PY3hw<<^@k`uwl(R=2fjttnnnurM1jS{3?v z{4~@}4+$es%k$TFkm0~qU8e)M4<|;}|=#f0@to`IH|B#KucDP@bzn|X^spDCx z-*85^a86Fn-EET>FZz+y1@WTmtrhmR#3BdCQyxF`( zOZ~V?{RA%+D?dYNHeEkpBqDu(pDL=L75r|H7hyIy85wG}Z8*1c-E^tR~#e!~E z`qTw%6IjXo(eARKTbO~pGxDmSqBFjL51%Za+H3s%3!ZyDs#+7bT9d^{<<_lRYrp%X zt}`;?=r#L2dj6aaJUKe71qB2w;4F}tCSoliXXghr*ROkYWoBiu*{x~!?15EL(hMAC zgGC^H^XAQl1CeArFeteatEQ^@4xS4QFE0fuVQ4w$O$)D1obnk|>{Bl=9rNKEGQ79D zl$DqN>5*A|hO=i6R@e1;mq;rSuhC~gOG~K#EI5;?Xl$0x$ zyoI&8L1;!ZL8QKtf5tOro?m{*_XLy(lh~WX-&Ydq&B%^QoxZ5PF)^7q+5g zKgsm7JEU-rjXv~_Un?izl$IYaxy9U5{6wz19Pb$%f&-LvhCB(YHmbL;k4^XU`Ohsa zzMTrU!XodRl0lMWap1pw`=XJN(WO_1H6?}Xe?owjy z!5Ut8im&oUMn`XP-zW1olVZjHACDD}3p~;i^X2N7N>nexkGa=RZ}0TMy?{m8`4&iO%Ad?)2kdX$xM8E<}&%?RmS}=d@C<4{h z)RrTZpSi97y{`L9;PIr(-};i5C7W?IqCIiIc;Yyhe<8K(Y22U1%uvQAqvsZ6<#kzf zXovRU($}cFNi$_-oX?&;OGrqlTN>Z4T-7YMLRU~wNZP5eS@wh_mSyEf!6iFvlw43C zGdz*<@goMfAvV}zULbLU!+db2aBy*3G8MAkPCO`9y$zOkraKEVSp%0`HS6x}DagsW z!{Ifkhj5@0#w7}d3KrBeeSMz*Mn=Y1&FDYZ^zZ*ZHl_?p=?O-bDBR-s;NbkfZ_(zZ ze6UFSGT1m9-Xr@|v(ROq5ui-pWqG`bD4W5}BnDnt8R_YlSMJb+e95<( z6aV^w9S4qclD-x8W3rm3IgmPVu06uHMom%C6AE6!D_5{qw^qi8afq3P;HjbdJ`ebj z-nE!=-qC?GnUqUkka}JqrHOI<{u!%>J%U-|9n`O9QSf^$!21a&L<(iG)PK{9z!Zsv zpUftNrV8eE*Jl)WO2+-4^{2~_Ksjge;vSjh#;lmv5ba;r`>(%(RYmEI?#X2hyl1;Uf4Ok(HS>WA0zhV25n{v|Sz;xVsXQIJTM@L6FUmJ~xNqKtBk=peT&WV94 zrpfan`CC*z>D}kr`@a{{v$KU>yvQ~bc%0Vv4V?Oj1FWsASdIG`ghWNpvaTp@K)6fJ z%*2N2kVGjCG0+N5nwm2-G<;}moN2*pGRTAscxr0uaG7QD#D*(4M3UTnenD4P_w4~6 zw7u!+=?{g3-mcY*5NkQr#|qF&t1dZNz4!KJ=*~Z)p$UHa=n+X~CO6+>cW>|3Au_U1 z28Q#35)v)u!-7KnBbHy`%|gF)PhNX_zrh=0vGNi~ToVfxxm%*@J=2Syi(CW7E z_wZ3LkW2{+&AJj_oH*1thm5*dadE4(^kq*^4CVn$$>l+3n0J!Q5rT=*5A%j9U)CTa zyE+deJ5Zi~e3fPccM$Q5o4q*&+NU%pN)q%)x@snRQ}y*mT>j}0DL%_RC--`{ohesp z2n{H=%*VrOPaOD*Sqy3^MXw4(2avi z5@dR5nwTkGWnl>>&pC9x6^4B$%A6zr)lS@TOvIV0=;-fN@(T_7?%u8Z$|n%GgVG}B zxgK(2`(ZZdL(@nE$+kBrO&0w|!Qnx_B3JMF;x5jTby!Rct+tx2%;2^S`A4OGF zyoAKWGtdx;o*WKzH~XLgruZ1(402- z5YT7W9DsM^wL5q4L+G9eKs}*xY>zfQq~+QK5pbgZCkh<{a- zk{50aSmMCQ6;z zOP$$v@36S|9+OJpxy8jrs5szUJx-VXMS3SFc+IBNGUOoGW@dfVB<~v6h{LBch=SS51!tgO_%T(>uj#nLo)yc8nuc+< zn|_T6Wtr)uU|Qcu456j4vNDOTo*o_n0ZhO1U|0v)jtamdW(~Ovc^YQsOW=tGU;;S+ zU&1_AoHP;bJ#g!vo0<~K%Sjiy;)z#ibORxw!N)W-G{7gXkD1q&vt!YRe7Q_X>Hp)0 zA&EbvPWj=BeAi*RPG4We3tSW1@ty1oKYCkAP2~r zRO&UFC2nLn$|w=?t@E`y(s@ssbnYd`i}$5gC;qm@IxS$sGN~X2xE*|JTCt zJ`~F+ro;!oz8;7S&kPI@7u8p_dD0APvmsL0Vr1mx`?24kg%!wVzwzwt z+qcuDV`hSI_per8ncp?>5Wsu6DeGonEf*8<*VNc}Kxh2>uC;dXZAf^Lcl5DQa>30o zYbl{5d<+i70DD{jcj=TATFDRhu)yh&5|vO`h%XVrEG!{`BN9O21HNNtQTa}LR+T}O1FczC%;YkZ0Doe)A?4v@M2aX3aIu2T-k} zP!MApMAqhapGmbn`uhT6LwKwOpgU?I z{k(^!Z*?hva+|;pk`y{wsg{sXuS$6#5jwg~YrF4nTN$_sTJ~p;8R?!FH;7UTCzgiG z{T33MZ0$4?5D{U#Z~kj#H3@=%%zN$s)E><;7uEnX&o>!jM%BR)oCN@CMK1tCgL|;O zLJ%M)EBih;_>G!bxv;m~G59_4GGodlXgd+(1)b>MY7e5Vb#pbz-9G)*-c`MopDukG zx5ArpBJk02!P>O7JQSb{;Zmoc(u82pG2~{K@V7T3Ntaysqi|ENZm@^~4ZjEoG*4eE!NtCJeLhZ}S4Nt-Mh6|_|W zzP^Hw9=+~xjG}M!6G5bz-Qxu}T4NaYg02+8q|6T3KU4Z{2h;ijm%%5idYX1-q9LC!Y?M&Z(qhkT;|00qAK!qgIAA6`^voM|=9YI?7}vll z9U`JsJfHs!iSUHtVnP4}8_MB>l2%28gwE%g7#lmuYSQe3m6gx?_m|TLjG;q}po_bL zjV^!dih!VCqWqnB08jR)##m^Q0*B*~}D!y?E*|lreF7RHX zNpiap(Js6aR`jYf=JDt8`*2<>^Ygb9&s$uN-rn3GO2(hUM41q3Si zi1r8;QF-~$T3->NSCM+3p#5(zIFIe|rrgm?YoX=##1M^!`%rKvMZLF{(Mu&Hm&_{6@LeYa{8pz;x_BKr*QB=lsOP z#FAFksN(ruCoyl((bV0$3|*I=ePtu-nBn9y}DR@oTQ+;$dGrqvZ)^+41K8I9*kJhrTSel z8k#!?@HF!+z6l_2fhfpn`-|cd1*e-qoV^HVT47;t;0;=uoB1cALbKG_u0G!0+!zGx z7-hh~!4!y&j$WU3$NfHBpqFIb*52+h1ig6+l+~Ch@4_tykbD9FxFZ7=IAct0kC zX97-i16f=~;hK3~;E(vT0&XjO*aZ*IhN(n#rT3RyZgBe?%w_0bx|g?tH6XCGYRumk z6Q9>0-;<8_=Dz#S`QJ))b95bg8d`e#vnZsoJ~^m8Ijil^Ia2HD`mG9D9qn<(g|3kki!(%zoyBb#t))G zwpJ|_fVR!xv3~2E=Fjo+5FR!BJ-2=|sc-7j!Bppz;RCy;}C!&qA zO*>QPMG2FESoUYBVc=e3jYzUi;boeom;a1)Ndd2Z|Bzu)FT0Fd>lVblMoW8+m|49J z&a>`L76r}W)3iq56Dc*lj<9H^f*k5oZ-j}XM@eGDJ{`I?1n6Q??(6jsA)(m#%H_f3 zr6pGVHbPXLH{SK`@o~S8AL$T%M+1rNP_72wO&mP2z$1PdniK6K2_d2W^~m&|E(&y7 ze@Y(3moY&>ul@WkWNp6l^*QPU|}`$tX9ofa(TD1i>DSg z2CGM@Fu#Xb9en0=@%IJcaxnqK2Zc9A#AUo7sV{RImn86YpPNaHjgE5v<`WXC`Me(j zv1_~uX&&*o^jJx%0*-d!X|cKr;>ABb}&#kb`#^8G& zZianKrIQ?d40A0``;Zn7Z^UZ!10uy%ywUDun4hk=F=9h&F1r#aF6 zZ=~OY8NVN;nfHmDA}l86XD>Un)Z4!%e38CI?b9Xrga!lA0E&7!sRvLBV5AMLg#m+d z{l*P+z?uOxEwfvvc^bp{8p7*-_5~qXIR-+3hq9t~SsD;9Q!Cl^ z4GbTmUS@$t|1_o!cpc>TU`b3AzyxQ>ynAxA>dKR|!|fg!NpgXN6$RXYr)-9hzWxos z#ibP#njSIZmA_qyaJ3oOmSB#!e*OAch)DqLVgi*W4ZxU|%bv&UiT=fO`OHhMtvdEB zIf~1c{O@g;AeJ^BvQ9<6s-Mk& zl$A9Y4+%C1XIeEN%6m*{?fxhpRY7&}Pd41*K~@Z;E*fb2@G_ zK@D-JagT2w%_2XLClBV^Z4$gEwKeIfP*K!t@*A1>4 zX9i}Hs?*+Fgxz9l1aEFvRC-Wr?eNKFy!Pq|8((BAPqyn3{qV9D4UH8p@~D%2;(>ri zdUs~6WvI2A0Fb*(OzZ_i9vT(~z2r#hszcFvgVy)g>~_C-dCWkIG(BE!t+)X7<+lKy zUv*$>Zn72CWB55j%f$zm|L}c?&N&pr?TeN!vTpCcJcH($uR2X2(M>bY*6}g{6;%Le z2dDw8F5G9jf1e1@LK0p(Rw$XhpnnJGLn;a1(EvQ1p{q}`IGl^nN&=FblZyK#Lt$az z+ZiCF&?l}o4^$Ac-hQWCW^qjl=LuR$8tI#V0 z(a>DAEaC+|QDZfa`g9BA`G+gh=! zxv5D9R=JtRCiTfKCI~cmzO+3S`ekA$os@9(!tL8N_9V>gu6{RWt+?O=#(b(rI??Yd zwGhB#v!4H2@6R!5SmbI0cqX`gyIbpM$g}#BD!abo9gH7D`V|Nl1khqB#>euzQUPuG z8324900o6!dmmx847+Nd=!_N{!EGjXbWCn+Y^(uQ-|-!wCU!j-o9g~#t_AH$QfcYnT#C=H&+e=rBM)yxey@B1T^yf8uOVQ# z&?$@`JI-=mvta!dd8R{Hki(VuwKq4(3_Xvc!Ezq!rQkOz622FpayK;mF)FbICJky^ zF3@d(%Hb_Ma8jU-JVcT$%PuutnSUD;_u;O=rTMOS7K(+rxo=?Sy`Cv46!5Zi-~FgI zU|?k5^|>D|ovZfIGUZ@xZ1QpJ1IPPj6^nFf3mO24?@ZXnhSX3xn0fXIN3oGAij{@!slCubi;4 z)o{N3pyIAKSW76E7+(Qs{KxNcDA2|&TPTq(336K1&5yKnPd>cu@0b6!i_l$meVd-l9VF8%D{*L9L-SngE9U(2zRn!g5^S&pc*Rc*C9ABg?Ap(wt|VYQGHGPr zb2@Vq!hP>ok}&HWjjSuXzUzqQz_niJEIF``=W{+K2Vw5jL7~W?fal|VhUx&fv*4uL z<^b1r!iE@XI)k0fpFdyxUY()_y@lV{7ha!M9%M?LK!NooPKN9PhP3GHGtY zq#4~5y<^*cV0@1(qPEdeU|M^e4L#|WAR)k)$IKXbHkX^FUR8AtYF)#A-qGah`p`qOo2sNGm8QVM6{$Pe0++js-Ig zAjtA$V#?Ma;GwW!7s}UMJ4~-K2JEY+(S^-GxadLBpcr74! zLf|((KK`?%x2z?$f)ItwdF=2CSbi>t>!LuMTp+!34p0n~q^|+At)3vhsSs>?B2?co zw#|6=E&=4a%D&Y+m7?aQ2c=pkJz=AH&_ePa@6IIA`UA?xaO+k>ccNfVwWBTS<5UN9 zS<_(Wv9a`sE2y@7|9xW*=QZFtZO1J!@7%eA6hRQIzk$|fxW>7%5zD!pTHN+;Er5qW zJvULkM$4IBLq$+v08^77%@7l}@PZkzc)jhPBW2s8CTvc-7WdfMPd}p6G`jJLcc}P{ zV$~c8eSIF{vT>t@+{$0vS(`A((7p)G_)tD+R|D!Y4 z7KU<@OMCil<dCq?D~&xHU#<>lqU5l}5xB?AR3 z&G7dA5cQ5Nd(U0HcRsw=Bic3g$!+gHJ^%j)iT~`xi<;?Be^OKbXA(ne_JK!?W;|-@ z<(zu6)Q59wt{&cR;sHII|9IHcw?z-B5plPl`NYMZ)LAz{s}q+SR^V~OAEN#9G^0Ao zW^4T%$Rhq#y`zad^`4#{21dq4Xv5b5MdWn))v`ZCOR}t0M<_UtEk#fWOaVf4qb^{$ zPthd;8ldK{2VjF)`5Y0@K9w;yxFBJ{T)Z3rZGWlR#5*95;3!?2C3z;zD&<{X9-in& z3WWF6_bMsbbk7mNJ}eZ}R*GjM5mKqq^J3E59H@dKA+!QTzTSYt!dX?Db=L2ZJBCj{ z?a8s@i?Pxtzb65Y_eZodB&|SXrKF@hF1;%w3PLqpm=H6ox@BKOD*9hQ(r;J}4<~|C zvis7rvd(IgN%LmkrJ>MGQHKm)6*iwP-Knbrn}gs?g9zf2p-4@>WHaxK-;$U3U{ zRk19DD~8mAN}BfQAVh$)2*nEVnKyvRu^M(?B_t$#tm;CeWod&}lI(CFYSgX=J24Cy zW&qtoy0?Jt{yR)F0U#hI4k|xf23JAt^^~}3r@cF`evKRLSc7Z$=(m!boQnXKX-0%W zd!axY-A z`+9Tr8!A&&s8 zULDQLtG|+zGs?&?8zOaSy2>|pR$jzhrlt-AvExNBEoyLthXN6<1)8ILP=FB<5sg-r z3M5+CPoTA6y>_>3fo4l0w^{1UuMYDH2j&_2CvS3U8#o^)bv{b#E3c}5C^|kia8ZZ} z)C#~<2ow)`c#qFKJ;7Zw%kir|C^{i_I^uU*uNRsO);-b%A_(C&eC{jx`ujJf%OqP& z*bIFGNp61hh3Kt3G1kFaV6mL{f8zz5fSmMOJ47cZH7r>FErBm5V&?wFCASa+mJL?3eRcSoNl#COm_K@qbQMkC~CGPb8KC%9}KU zkXF_RX#_>SOnyyHZOiMkn7Y6}JQfps1iwf|LBRvw1@m)Qa{kwR5a z22tJ^1SP;lJ3-Bogf`N_F?AtI(i0IG7AX;L`zG1_1ZNwKnxI)7E%gQTSgPy1EZ>jY1!nSt3byA=qjS9NVLDR8VJb& z6p1slUqW`F@zl8Va5Du8m0BfeiHHI~cjKXbvrayZn$zOp`N%VFK<;2j;stpVu0$|W zY_W~F*yL>EprF>Ftr|4EHw*!OjVGyZ5ve8#b#!%U;%`eo3{E;Oj@bdSuSEQvoTB1<@r7*uN|7Th6cBk0CdobCP$_}X0uKdB zX0!_woR{QB~Mb12$(jul!7l#oLyiD2lB~D9$qUXG5%I18}Vj zv_@4Bw#3E75t0@YEq;vtIoYD%w}C(qxpcD> zhSnkN%vB$5OjlDH-I_dlkf+_`J-ABKRTe@n_^#y6c3a)Cmc`Zy3AN3h7uTisx_yqaC9S&R#E7}gkI2uRc6s=CHa3u# zu7b<}62BBdFjRu^&sd*6etelSp4+BvDF!HtYw6gm`c?DVK4)T+-ID*NPaOQo&8zT& zf`U+P2(ug{O7$AhLTJPb>^GmI>JIldSLlrIMKp#5Yy!oLcjd|rims@;n4r*M007(h z1PbOy%F2-zPJ0{r-)umFLv&m9EtID{C19k5lqTaZ`<@_zr(-|_)F!m(LUaIeffQFd za8fxt`wSE>I-N0Gb^v8t0^EW6_{B`^wLS=eFi|lN9Eo5Z0)<0}^p9OQ*w}9$`9Z?~ z@sZVfUNY-Zn*Fpjym1Dgs|J?ZLz;aj=+y+)fIs^T7mM%=GEtzYV1*duN5Xanex$IS z$KA03ShuPwbp~4yqGWd#WJ}m^$M&J!z_WQETdW1ZLn_1L$rpf{DOWqNpGrS$R4+kR zOg<796T|bz+SuIe>F+-mChh^(4^tsAJNrT&JS4BM*R2s%IR==QD7@F!EKqeIfhjQR zqeIn!{CRCLEk4P1b@C4()%xrX{7LgoOi9;6n;I;V?Jsz^kZG_&3SLkQ>uvBxOV|hz zAK~uJjca|N>zk#AAk<9CaGZE|cefjerZJIr7*dr#aLL!983#)Cp`9J4s;cS>&Bg(t zYsY2_hwR}fUh{=BIsU%BzK!O!M|2d_+%H>=DeULku6!%0*M6w4ukRJ+)hZ|3ACG#Q zAP6fAmVQ!6$v}=({_#)lEdyYn0fT)zgJ_w=$U2_J@!lk3QH}%Q+cCYuN&Snq(3?nU zKQ^a*lDPbvI=5o!R?j-%``N#2K^xkm+XM|7oiQy9wlrYfkdOH)Ix(~yz+NaOxtbe6tHW`*pdSF%9uah?IwQGlGDC&0 zFX4~xIY#K__}%__g06KEh$O?!?WlSn@hu_!p`n2CEO@ynTU=bM4W_UNMS(&AKyMqF z9t0iEKrKq>3o9BTk5JOE0cjroWvHAtHmqQ(4z6(809xq=A~|n>jV0+ezXV(ZR#7!) zaAg%b9=)+r)1)1QcLcU>yY}|Kayok^UyJs)_>Y zg4VBJg&=ezloqpBDx|iafHc5f>_9?q0m?`a#mw|)$Z;aF7^W3BBh&`qtXRH}R${H& zZ+}Vv0qO2qBd&1#Z7AL$q*y37gTPvMYiVG(*oXk`SLYsC_2k3>;6WA+Q;>dm57!#) zj`tR1l$8xPDS$;}w<`z*_!RJs8ECF8ROzIaWQ!p5omRYn1z`Uo-8iV`%w zLM@OGlxv*0n*B(x?>_*lyal$@mA>`z@_iM=%*@;jecRHujkh87Evk`kL0Aajv4xM1FRGFMEnG~ailovCouF-OMu!!y8eg0*TsT39!v4J|| zTQxiY8Eqn&g!f6u=dSh}ff^8zwF1ZmS`BGsWp7}Q9ThG~Wb?b%9{YKFUw(jDx^)l~ z8cNHZo1Siw!3#wkx$G7-N{%KRz>u@74@^p(;(k8iVk$Vfe0b!w9Y3-}UaYm-3lLC5 zn;;a93+?_h9XnQ-NR!leyxI_)<+_TLi_7EV>ab+avTmI~Nb*=05D<9NA>==ARTi8c z#HO{q$4&J5PtDjlPdGuEW_S0a&S8q)>tTZe56kyL^s~+Jf(;FW`@MjtA#$vspJyoEG30k;V%|P#T zMxCT)lwPOwc+eNJix}=LxZOaxzJ)C{n!hK3^Ps@kETtyYvhHA4yto0xv2aWH*%wP6 zh;HAp8Mgg-ejLRkdN%U5TB$a`|0v1YDG+EE*~jU3>l~nj+7mK&ckS{B*j)fHhn!!m z(5)Lt^?=oEoD-pt+!oEZVS)&lnK8rm8;?!8r!fp*lNP;%6TE{^4#(-Wz8=7KoA0ND$1CV6{ zy^aQ5@FmxIXymY>7CT^Gd%^li05LOYpFc3D%&)qhIP!uT|5Z^Fh&L(toJe4E4~Q1e zL1W|@aB!J}q{mJOlMsQD+C49-asC?GqL`j+v6iYvqq^xL6U zgJkV7<#KRQif=Ea&rQ8lYul!Dn~|Ga^<|ZI{h8>HYM4aIm9K7>nos?*e0a%*nNevF zfky4^gN~WswZ}ZEgMv~~K_L-T%cP{Fk$}`tIsCW=N;18r{)`4?E*6$9BNeD4znMZE zSrfNa8i3BN^}wY4BFDI!*+d0a%Y~=3*i3?+#k##IbWXoz2#rnL4c<-4@GLATCqXUW zU;^@lF8&ksA1tM%rMeIx?Ur*sso(M~LP@xmS|5{1pn6NKWlJpGUaqKvfc{tQiAxrn zu$&wLY{U9CSdwo2FWJHH4dElKLwXrK$b-NW-*yOxJLBVpor3}ip~;2$$Hh5!2jT&t zDT9q{D=u-6T*%GJ9{rvK09ySPE}o1*ci28IG(E0+?ONSAYT$5gdkHqE6k`j$N@e=V zKRg(aB!?)Nz?jk8`d)9N5&JpdR8cs+;iSvWM&&-143%i z1)U;p%lZ+3{`V3U?|CTQs#IVDn4ylQib|B|T>j@smXL?u!l#&=q&`>hEb*Fo$G|Z& zHlA2(n9CcU&FIO`C3jtVYaXr?4MVesjZy8mY|(z3c)f!oXm^gdGdkL+L>0(uvEVVz z3a_GyNh0WHDt}eroGKcCcYQHcLkY!hXoa`XB^%HE#)(?XjKQ|yhU0kW`rZ>gC)Pc2 zrF2&fQYkgFP8D@^ru}S?hbZs#KmdaEQ+Rw7_%PjdjNbS~d!$;aE z(Roxc?%q}{J`X?54mx*aDnnCsK0b=xWyMn8QbKPvPMwpbjC^kLM%lUVKGnEm@g+>cIb_41< zbbza1!so2ni-=%=?)-A-$oM!D*=J}uL3r8utqTWL^t=QA;(d_vu7Q~Gd<$TYjiV(d z9%#ZqK{UQtM^u);cX-TzaLI>=hx@=b_zej4K+E^rp}LXQAS^75FK^X{VYhtLr6eLQ zE&xPGq^Nw@!kFcux}ASim{U}uwL&l5QL6^s5C~imYGdt0B~e;?{d*HI<0&1&ZbGj+ zRq$1nmPatD>`=hfiV6svLCT{ZgLtP6pLVS5nDvhV>{E?HTR#Dx1l8DsT)o$wN?oPI zkYSDbK4P`Nt_Wclml~<|heEL-$)!yL_j3V+ZCFNdiQg(v)Pc%|4}>n1NJZRN_;Oac z!3kGtjLX&k2Fhrx{GrJVbY&4aQw2Z~uzevxXS%u61wwcskq^Pc(Jdnw?vK(^eF)vMf~uownZI211QDIHo;~ZGfnCs0amHA)W9Ecy;HfdH@Lv5bGfj z9ULwPD;$As4ae@Lu^A`bd?Fo#we|R}C$teO*Yc`OSYV zm7wJm|YD-;gF=N^;#i@=Wt(#KcHXle!sdR@B4$S7fF4!CP1 zm-WYqRTwWVLjTrPMEe3tmaDLd1B$Fhq)C8%lQJTi&yJRyV*L@g_OQ{D&)T^L~u? z_R4~_vBHnCK@A}3D0s2+{9K7`^->S8CmShK&x2!fo?^R}Zr7SnD&hOH8?UmkW& z0O}5AzLzmBlF>S7CHEwNlG)PIvSGCiR2M<85|D-ydX^vER(LW)bP??Z&pQwaNO4Jt zO>6Gxi`qApM};>yIEbm8*3h7jh1zX$44?8f?g2S`_~j?rj*WfXrTO`n0m{ubz_Z)>35cPGMjc8U=v}^QemomZ z*{^bHe8u1cZU=&3q|DZViW4E4P}75I=1ssxF@ACKtR3ZYg~U_5qMiVM-E7?kMHsOA zmph`Ep$k({QL%%%LSvHGtyL){o&R8K858z?)fG!Sz&79XoSZAKOvAoBEBoe2z6QIj z5!O|6DsanSA&Xy7P|y;xoNmKgtfU=KG^_=>9tsAZcnJy7Qr_Ihg}UJL_a-eGbru z1JF+3QVNyt3@C5wp!Y_L99=>-0DH3moD0p@tx3n#2WdleG)vgXW+@P-z=Ma4@&bv{ zb`;NmJcA8chZS}6fVO}MO7;8j@aLPGfIXc8M^0r@^$*|GrTwLXf_?Xd&|hA?PF3=QrLADCd!#X1jX}@rkk-tlD*`l(aOx&)#@RwSslU(c8sFefh2@E-c&$4$8Nl0D+Q{67Yt3zJiH4xipv)ZAiZY6<^jPBJELyj^H_3Eywvso+{SX zcLDonC0X&NjAPOOJ}yZ+1B!vFqwO(7)&x1;Vds}WvcrCt6ydKxVDcTBS`@zXGL<5ARr()2LqBp z$skz?5+zF(B}YjjARsvjNNhsW{nhr|^uEs+cRWAdA777i$M7n2_g<@3t*TkGX8poR zNp(N?7LWE6Ium<>6>?ehF_WF=hoKWBXj#9S;^NQokIh3XiS;9b68p~AUyTTs0CXg> z^;Hsl6(pjKeHrq8IBA&6ZPt@K#(4htsl8D&`Ge$8r#1yz3IO_1NEAE`-hk-XNk=qo z&azIb#VN?ke*sP&Fh|(k>jB$>PTV`t`mWr8COAdF`ki#Lv}8jYZGrv*us;+xQKlT! z#@9Z0nc^GDyTADWt^#m2XG@d<6(8xO zpAZ^i0g;9Z6blQB#I0Kd(0cC&trI`o=93miD+-^irrvt~1lU^@Yv*WbNuuR0(@G(k zvX2cO)ysSuzdpXw@leS1apB<<@!Q_-MmNun-T<7fcO8yBv-|f4Iy%9SnguxXc6WAe z-CGaH4o-kv=ePD!8%w!C(%VDJdYyZ~UmO(709AR%A6XDia8j$@ePwLd2*pspp|zUL zlh7DTfB-D;z1Bk@=DHqRVg*D};cL^7Z^Y5lehl7z+|u6Kddm4XA)IK@~w#MndL-}Gxf4^q+y}>HN|9+b3g#1I${WM_pgyM zQh=BAIgKwerGGNj!fd67|E#w;dq7z2=2IlVv9n6~qBM$5!~`-ytqN_`>0Ygz zBbE?O0!nb;uO}5=JA;4hmFKUhztj3lO}ni(b_5}W*@~Ynst9z@!Y2^R9WDoZ-O(5fRN&p7hz7&s-viB|u?x}*^n!)B56;}@)g@9Yj#EiGs;ZOWOlK;k zgSwah2ZNF8gkk5?>w9~9a9KKOQ{6@TVgGv%sg7wi=k@D%l$650co1gRAAoyS<==tY z5g@6#H?p#_f^YOOhme>c91#m(OX3Dtl*XP~P!z@()s}l@7~gOnQ3y z?XBuzsL!WFg$6wHkBa1k4sNu1v)=Ih*x2>pOONY??;hNP1}x$Gxr6uTODE0&-c}^p zAw}8BvAnP&t9Wgh*xc#S-Jv4i?Scn+=7*dRu{kEDq^xB{oH{-1{QKuEv{eYghGvB; zk%3fRkQWHmgq3_k(^|M_ye+1EyN9|n;AR2@_47KorhIyAg-?v(xoqWuc(mi|BW{10 z;1dfm`#-q=2&Bhf(DsD5IWr(mT}yNUxZHop=+HvPJXgF6+;J$H5N+v0K?*bqoMc^u zu7F8uK%?}w2qYL6g@tJm;0yurFaS`2u1TlwJ|FT+wi&<$T@_YRP$(77I`jxxVPYcD zpYvPyU3p;Qpfl3jc6bir3Srivqfj=wFVpuOc$dc*JWoMp6j{mvm5)U3Kc<+SYm9wo z{dD9Xb{Gpq_-}2aI+tvDY5nj4*$%HQ|A4N;RN05(&BrMA3_w@mw>vaaqJ6?h9KZJk zXmLZ-jU{~M1qmMD5K4tBobWGDk*|M}2y}_<%{Uio0SA8MN_xTFcBxQ+mjZ%<2n`bi?aj{w zti)O;6&Xg0qhxI3v9_ypLgK+JL4Tm#W}09yHW| z&;^Cx;bMOXA?+>@^w6tkYk7#=_q`YEwQJi;VyIUg8NuF&L4*x%4&f#YA*Q|m^g)b+ zsjuLp7c43=sy^@?HDm@*Sci~H)K&+&YN19<5Vt?neTGl?%YKOiR33oHY!Ur#9g4-@ zi%o;alH6c_pUCw3xI*Jq{y3Wa15!uwDN1JIMof$PFLB2(oTQf4IS96ZrjHnY|6sHL zYBZ;8q21ljM9d8C3o%aM+{^Yb6t#x1UfBqtwF%4IP0>~@@U*&941(1%a z+n&&Dn(Cy6ou+YtV4{vvW|{7sxP?yYjur>^$%yRb-z_y7l9EK-DdM)9JP=Mjc0C%m z)CqTIp#Yv~sq@F-`4}+mtENVH&JX)Oz>(Vsqx8yV@ZKc=(iyZ0-2vbVTI9lkwm1#> zh2QNo1ObwD|6;REo{u$}GD7?eJVlByNF`CCSWtI7uSLYd$HRI?XiS^a)8Kqf3dWlT zt;#?af<6%)^so5ww^F++hMPQ$rsh z4nrpI41q8aQnx!r`fIqPWs*<#oWeZ~4T;=Ak`{>8pewi$76_&GLOTTHmJhMJ>j1}B zE>y!siiTdMl53+CoIqM(VV+k5)duc|M^PAoL#Lb!fLDs*S)$Cpc;z7}KI^O-8W8Xa zD(f6%`p8eHO`KeQ3OOl?cc!m>x5w_<b;DQO*NlodZ)|+I7%EA!&gwj9ksa zJAmsCSn@%4#YN^fTgp&-|_%7N!KGpF=?p(?-oIfHY{_Nau0q%%k_~r zB%#wNUl7eOJ+M7^Z1@*qwF2Tt`_)OCLk|cSbXO89l}-2|2J1|^Nev~|h5jt^KWwvZ zBEz%U(v-&`a|EdAMb%~S9VodE2fYv^K0V+vfNJCNAoc^!F%KY1px#uBIloyDtwHv@{EsuoR_2RJStYMwotK3nU2vka8fI-ThEISJl+?N4;Y49RYrR zW8i{#v$4MR(7o{KL9+Ss&Hv;HOn$mIhr(D8j6RQx-p@1dhgOLIKnbfQV8W6d9q9Al+B#Qxr{q?9JNBWe`kw z^!PF5Q6uPKLW!#?T3Uf{ZZ8721$ZBV2DyV%5csca+6A&m$PRiFWR8_~{aRr&Cm$^= z==Uc0gc4bRI!Su74_eKqKnEzY%RxC&(1>qOmQn$_1!nB$4~)O(nxh6Uj-4cbP-J|> ztSjL%Ee|vb(c9K;Q;F>_T&gIr4W@MB_*w7%tzVdGA#t0-(EY2)d*~rlzRZ~3-JX~# z2@QE7J;M*C08&G1=qT>DwdI&r#|cF};A{qiH?H*b^1zP$VTw2wI2XV=fY=gcgnt`= zIdJ@ek5%G^gPd3@P&$Cnk8(Tf&f5k62LeEpVwCJSFsmc`rG$VUqI5WnmYtfK0>`0Y zVRvlJ+Z=Nfu2n%0)VWIyen^*jaJS>MW^(@r;Lz@a^7OEIic#M?+0XbA$aT>E5&oV- zXrA@d0;>O#35uee1KFRg*rX)$Wj+L&cB(x&J!m%1>T(b1`cLCEvmf+{&zTd1$xZ#&n8#xKxL`tEO|hh*Aw3R)1Pw6zmh;*~*t zVj&TlhfqWNF&ls&85!Lr0S9k#gD;^?tw2<&PN{%8HV{=@p{W3c^8rbOnnw4m{l}`G zQ&7v5P*4aN3nbAQ@&Y)*Pwz@jPR?)K!P+!*`%)aGgIggmF!27wXt60N?fLV57`W_F zqW%=Q&n^)N7ZJo2_m7h7@5AD~N=e~#Ujt8%MicqnPE?MWe~UBZ=~kW*b>BKw2idZ* zlg+JLw?1)R`3UuX)YTb7U~!z3lww?2M&^U?5O(d!T<19hs@K^a%W^B!h9hlD;IuK> zbdT$QEk9nNMg|54C->&@3?3MII!&($Jl<)iu4)1&gL|gK7%c+x69y@kSl=d&*VX_lP28O8baqw>@*7TVq*9hw5 zbBYz=Z49v8~O3npREoEo`FJwWc1x?mR?^k?cp? zygqTifERJZx(91yR>te|s(HB_7-2b~=LNcVC&1`>tmeCu;K7mi!W+~o$1Q^$ z+AmLN=f-za@Y{~(0bi@fifnIyLuSD9Ub_&XQ%knS^PMfe7f6my-FBp!(U1V?a5-&( zmE3@`lE1Kw#+wJ7pnC!F){h+WRIai!;w15S+0A-QvnuYH=X(aGUHEMBmzqo0aNW*g zhb1Y83bDHOfxtL=S5R;rBndS^a?CB9k)d&-J+MC0;*VG$q)db3<6_h0;J;$(FtuyZ zo(hPHVvfg-ZxELop=rWgl(pLXDBPSa?oP^X<5fp!&Qglsg4BKSnE38f*x(0!Md|J} z`sk*!(JDk8NbatT-km#My?N-&1Jyr(z9>7EDSq%Hc+Zq%!Tf5 zJ$9C}3?jq}f=>*`rwLW!+&c{%M8)>3%*tZwnHQmS@eP`kQWf9uTY%nxR?6i_+1lTq zN%x_O^*(tZ4_qvomW1YOYquqR8=s;bm@+mtwmE(k87Ov76z@E;>5m;~$1+aCg)j)6a8CV-0*aN4 zW}ulDF1i!v4PYCUsRBZxer=Dmm71^Vw_4eNi{hMM7)Qs(mPp!HE7Yj(Ttkgo>d@JL zf8}JMKS3&Ske0ZR=74f{!I^oEa|5^1M?%8(bIa#0@VpHp%(&0K{;*)PzH*#Bl613v z_}&yYeBaPDV|;qe5jC{mRdnkv&e1eJ;TLXZa(YgZR?S4nJN8ObD+bnsRw2{^hr%x0 zockel4zY|z3n)yN+Sw>c-d9)afJqc{$P*C}>GIyaN9zA2nS)6J!b0}R z3&K%D{TyUpRCsCc@zO?{YQc5Do*f@)M6>kkmxj4{7MMKL7T-SLh{0gkLnqcW@80zX z`J{`Zxd)m~wli1Ocarrebtv0-Oadyi&t@8WptG}+=l-A>(Ju8}) z7VUOyHJIV#baHh3h!+=u3KM*KqjWWG*-UuVcCv?3oBLX5;c74L>anf8a5IA%ajr81 z;x&CjS<_@mIHQd7Iwj-F-m@(ZBbwa1hq&}H2_2S>;yDq9MB9+)b_VnL^AC9rvdaWX zQ=OxhvF}bb7=A5zgMco}tpoy@m#91~9+-k4 zltFt$o5wi$`1vgt`!Yz5K6eKVH%AcMDD(%PsX9POw8umCuwBt}c1kb|L@pESmAf=e z6ECT_gn0V(>|Qz&>%+BN``t&B!{eim{(-f(@>{XpaI2E>QG6p~tsQ>cZACMuW}iDX zSyf#2kojlX?z2d~ViAw--Wp6r5PdiPX&k~8N$%~EpD-~Rw>_@hlRx2~#EpN5( zb_pEc<3@w2HBZy#fw8fCL#}M#bS?v#v(X^+GcR^+bjC_2Vtaf+9plcMP_@GnN=smv zTq7LFt;n+$c>*);_PhfTACkJEVf^;a7cNQ?zxMInv2yDS zwfDvJ6i86u?q3K((u75o9Y2}q4>G;$x6q2Yw=+%n`zXA1C-rtDQX}>D4w7-_?T7bq zcmkGVQ)?QH21vFSuVo%h_gCr;sl69THGJW?6^+euHvC14`QSv?;wcEsimv%O_oSE#gX4f z*QpWTjWpFu2<0u|r0b)yA=83TPc{{zLQ>0LL+_Vk`&i<)a%&rywiy*_kzm?&^SwsS zuOq~W3Q40fycx^fANlYr?E_3vR^v9K{9QlbgB!9_U}i-&XD1%{bRHfAY4^Vqil`9B zlz_q3lA-m5~{`< zc%zG=$}$>+f7M+gv0O7S8u_&Qsqw zqWpt~0ErI9Mtk6AI1z{5(VMB;%Xe$&n`=y|Zpt}5Cl01VRJ^|B1?E<`NQ{lmde|Gi zkE+s=VT+!EZ(vsHeHh^Gajb^^PD21#wX6T0q)jISD6-tMg5{Uf2;J7JgdcxcNso}F zishg9)t`}O;2}zem`WTn`)Uu3S?9p}T77G*r6=)aQ_o$0zQ^DzcNd#<9{t*CpO#^% zuC-BKIYLNqgs_RUD6s~%G4St2iFrH8-(smpGFOWBi$GNQoaM^@ZCHJ%VMWQz$(D(wD0|n}r)CYp z7^{xrM^BC*EH}|lygxTLU&-NWV$2~RjUa5QbGo0o$SRCv>fE}^t%u7MpPxdU{?FqR z@BU1oR+BMwjK}HtfF}XWfqCnF2EJAu7oG^QJ>^4yu!zy}5lRFq*7P=TkzuX`c8a&y z731K|%-s;*`Bsq8*N#6Dt`O4ogZZ`AZfoO!LWrpy5u$R9u0>TiDTY~~#dKqIMkKb) zE>Rvq{up7{9y&tRx9x_2%3KbneZW(8c>Z`ItiP}Q|M+xz^wZ-N9-ACNB+4%O5J*@E zg-wsMz*grQ711MeFaOgUNX2WzLGhKlbI6P!5?)3y7i|0@4hF~hh!y_dQq}0H|Hn&( z_0hob|M>s^^N&vm!Mps=zy6QEQ9AA_iXg3~nAHzMAnuTA2&aT4xvnmI|KPbkIY`B) zpQk0sF67L4(D~b)1yR`+G>6~zGlm(a*>}*NrC+K>K6yNMjzoVQVF~&_;?hRQB2fo} zbe=8oXFGM$fAH(qRB*P2ub$mh=qcv7eCDsvu&{Ps#X^4`&ceEppWCN`o=tEfonhE} zZmk9qPT3i|@f{95d>*1NBDlyTfeJ+8cbkNmkc9XnFA)+c6!z9pINw#Ipto1G&|lpV zl8S`dB4HY`oT8#$(O53B1XaRlP!9$)5|C)tcm;RSM7QBG_H?~!CVldU<6zFdaxK`j z4K5$VcldR^@8eE}SB2U^DU}0qUPC4?jk43yZcRRU&|vsVn>h70Y~wdiP#SJ6w=VRb z3G}X(gm7l)3-Xg->FU!ZmE~=ZCSKvC!r=srF%#~R!8WDO(q-@82gh=V)+=_vFb$oz zqwp$pCjBI{m;=yz%7ClW?~6z!h2KqYEGp^`(D<)ym8FyQ21wk^jaV0S2`+ixuLA)A zkYssZS*hh+Ke0TCNDOi*szYI+|MjK2(2`w4f6^XS=fZ^xmbSKMd<|Dy4YD;m8Mq7@d)lc<{7Ql6SXN$c|Ms$q>EqFF zzkh!K&^+e>$K3W4B=sHm@*L`Ik2vxv@ww-_>SMcyM1#S*I%5I#2$#T&_{{UcU6O}1 zFQF|RF4JrE6NMUV8Sv3f({}NhtR2NHjt!+)@A}(m(Ce5mFff3|P_XTm&{)N{r!gw` zWsMpR1$OotBuBLYDT9mnbHDgzjxu&4-P6HV$rtMmoi-~p?Y`ecT4;N~289Q%~H)9-^rZRk-K zzIpSqEPNe^{y;q1ri0PAC-iLN8fN)jq>`Gvd~ihDJCKm33~#BWr^*R1)q+V5 z@Sm{zRyIHi10y4#QFb2<)Ir02$31{A7(FW&_Bw9PaHdwB7H2nrk_R;LUWYA!LiaKd zif$(tt%??&o!aWds{{ z6=g=;imi3vQQE>fx~ELsMXyO6#)GU>WpMzR%5-hrG)DV5Oq6jXK*NjA{rP zN>INe9ZY2b-PSkAzQE5i!+o53pUa1Z0YV}b5wIQ7IdT^MDRa|6DJJ2S(tZ$Y=i}l^ z1;oDZ-RW%OObbf@J-||4O{@(84H-1r7q&kjhU0MFEJ?RLTB+9=n(koV)58Lc+{Wh9 z!ve6-Z!nlizHKH!dv>ImPNNd<&!0cHr)ybeOuJ)p=GKk)fr!iUU@A-7uPjkV!Xmbz zxd^UpL<*Zn*84~Uc!MIRYbx z#Qdi&VfN`5(?x(#Ae~W%^HNn^T}!Xl#pq24LE5H&-$S?#n(pFm=Rd^xsxf-se+hdF z_+tkb86?UQfHmlo|0VIdaoTPhgXt)@zGhITJNe}MG9$sKL{;&>2Cl;ap_mev3*1#7 z2H#Q!zGWDEiwf#@9Wo7$_3K0CM545?f{yD_E}O4aB|SNuh5^H z-5Y*Ic&4zA(TAWcpLW{(dTlL{c75Hxaa7NIKS+l{yn?1k>e)zYYjblmFKh)2{eVUu zxD|x7O0E=)j}th#Xc~k;5eNEEV&P{V?VcRS1`rmeJmmhJJL;30-(MaI&#rL!v~1KF z1Xp>sX(xl+bBGV3sP;(90``d7(?+JuuMetCM0dzuO?n6S-P5N8HXn&CL8_?_3g@OY zFX52t_Y2_uBVfD?0i()+Wtw+kTvfH=_Rh&iT?rqDB-bg|8D>?i*0b(U9jo_A-8t>U zP5~FHT<*6GhM?znLg`75K8M4sCPF{-RmF+QD^>V=c|LsHo~PI~;2thd4iKZu;yzP2 zb;*Zd`|0jt(h*WB=*(M$WC!AWeez?7W#9MjaWDP-2f@F<>?XJ?1R#S|Rt^U<`Sb}9 z*dye742BwGY5}PnpBIH;C7N4o`|e5Fal^g2anUC&hRa7n=(KokFW@dvH9kR3&Q2BV zCQ64~jsS%y=+J^m1J`svensytG&NWvg6kw?H{6~Pr$O(Hm+-oXyH5`xaTNU?d1P;P z??WgfMH$hcj&Dfv)&&_D%HsSh4!u55!+w%Oj~X`lhNc}D_Wms_M?DxEAX|UpiRXOT zL;vIggt^0a$hLqJ0uBLv&z=_3Rr`g71&}R8%?W+B?qZG$qV5Ap6UN@C^LPJ*P5TJm zOu`MknS7jhYGOdj_`>4iYf~-sI}Aw@s2GDqgI7aSdKStJcR}Qp00aR0w-4!W1mIZ& zrj%!YV#o)mr)*~-l9Skbh37hrC;k1ZXI>o!qfD&}>gA~N!_fj50&o_6@{FAIgCo8h zOg?9i?U81SH}-5;T3EcESetJ?j<685*zpPqX2bD>%LTTEdSrCeG$HfOojWyIty`cUGx^DLrl2@1zEmuq1S$) zKOy1E&Hz#8Lo*pf>)jg#n>Fyii?M7M-|kDNmF++-Ti_rR(kj&c*F95_8%4sdDu zBi@`Rg1=xxsL&1JgbjHG8zPD2D15ck1@E+U#yE^Ak@1Z{N_fgvJ^40K_Y2iBhM zk{6!xscBhb$X0GNSVM1rY^%?!M*|D*Ralru%S}hi!OoLpGt?mDL0w~-#x?ZZde0Q@ zq31SmSBw5n24%45I0By`p(hKIE2NUyiwwC~WZ{yZehnGiXnC|;24$dB4ZYkT6ZqyO z@XdRuZ=MC;Tn2wAJSE<7_0(~dU}PYzQ(MrEN`fyHzM#Rt+MvLcc#RZxoeG?c_i3M6 zX~;osU*RvpSycC~Px;K^`q_?7D<(sQWoBFD@7?~71q|;zp%P>2CUOQc{`kFX%J0~& z*=!wIinT~clhB% zBLkdM=8Jot)3FZ%N?`xXt>ul=-VTs`c_o!hv;^mORhQcD61py@VO@-1UBY%oMilkQ;U7|2jJYMfyi`w|u*((m{d@{SsXv$rmu4qDqVZ1C!1}j4Bzlw~uqjQO zKODNy-|~%ESR=Q8$Ol*W-)Qc-I}N;55Tr7Q#wAFtDap}cShfGkQV=ArqE}U%Zw;Ay zu}koGmg!r$;RgBNe|!1Lq2S7Yd-+oQKgdH<0Vw!yuTOvRS`w?g2A*Qy%M+4+QqyOz z(3J#u21RKg4MS2F{srV@f}i%ysrV;+a}?55CWz=ERz=rP(u*2#wY4@(xqjksWZ4Kl zw^PTZ;yv8|`C1eh$a8bZ)`^gsTkx}pgY^Gz9{<0s4@zig31bNl5I%ZVp4|qib3Z{sF=|YvFmL67FT7Z`lEld@~O`^VZ$*vpT?+@~+ z68h(72V4kzF-KRfpuY~Weo-8VNMyf!`SBiugi!!YF8qV%#j%@_BW!)Sh5W8iVnayo zfD4#%Tdg$v^P#d^m}8Yiv`CQ2P(gt6N{}nyZHS6A3U%h3-XleV{P(XTzxC_K(!8r7 zE{D(Q99_sxNpL|NZo{m_KM>I;-Mt$6|N5waef_U&^1r^x|Eo>OmibqlOMpn+`m>UM zqFe7q^Z`{I0b(2kY;)D7|Bt`XsrQzGe@BlAqH!9c0bffgbPdz$NRgTf{twErFTGc` zx!}9csYl({< z!!E|Z+8ZIsP>K3JE7%=U^yEssm(29~!2IUv>VJQp#)%d?6R2A9jkYakQ4DEjxD4Ip znP|JqX!U;J75rFKv*)}|ypW-pLHvHb!pe`v9?}a#Qh-<^O&WPv0U?9g&)ek4pzpuW zRcgV57zjX;H+lMDa{8S=KtQI2(r_~u8H}29SqJX%7so$dsdNBbiqQAukhgJ>ebEb7 z%uwquD53%&RhsFw){t6c+f0;y^!}kY#DKI^@JpSN+;cwhRdpsegjT$tHKanaJ3eg; z&?8HR@l3rTm*8bh#j6u^cW^{MFRu=O4gLLcx?Cby4OLN?u%y)I`lT4{l0y@B$ek~q zdS#KIU1^_zHoju2K{c;(^dkq|NqJh^Am@f7)C)oE1+SPzp*>=x)}sPo4#29bRmLD) zK)JZ)Nlr0<9+_yxptD7+C+hS-hC~IPDEE^-t?kF1-f(Znc5aHm7mxu2?fY;d(Tqt- z9d?OsO$8ckv&{w2qR11b5T*xft@E_BnPcAoUF^5ebDi{4|K@$Q06lQ2Pd1bAveSIcAmzNjl_f4} zeW=S89bu|vquvsag49vk+#3eMN#8W{mwOv75rlraL}Bfp=+7lU@z!Q;EVL$N8Qt-a1P%r#)VD)mXb(4 zdiIht#KKfP3e}N&8@Nb@dzceCLCflrlPo5Qd^%PwB~mW4R|3 zuVC5m?1)=aJ?x6u1-gH)DqE=asQUPuk7ia0nF{@hI|mRjgSE`&wFo&bd<|)Fq`O;g zT}@7V!tb`wkhcR|&j_;jW(}*XHopBO#+3E749l57h2djRv62uvdkGI%h#Wow%c!q(R5vh=S{9S9uE)m)xtz<+$VK4;9+#>;&ZK$udPgyK@1 zbPfPCcAo!nt7YFV$T~bSF=;%k27sWpwpJ)S$*szwZk;m)LWqC9ppIhF#m~UQNAu(l zqzR}d%c_8oCISUv->f zo@`18_E>5k@qb)h5*cXk+!m1YEI>=3c?F%!X$3RFz3Y9NS2#M<0IeB^F_4vOW5AUk zsdUI z0yqYsUSroziq0oGz{xThEm!E*xX4vUoFtb)66O>C(0u3LJ_#ATn8G(|aJZz28eCS* z8s=a-gVU?c`ezABHo&}gTcGEIk_R&0ZjRFo*%yLhp08YlZP$L|%bwMQ(GZtRNaE0VNMekyu$=4$i3;U)bjI4Uz~Wvh4V( zA^}lJld(uqz8d(`1t1hBIaSBR#MDrGDBoP+#W(@lr(<$i7PpSMx7g4 zh?j2p_^80|7W%86mOEYT?(PodT;@>mwk>hov^aApb)7;DHw%Ezu-$#G4kKiv<@1#I z8{BZmsu|*Z-D7&TB@4I-qtPnfKLX9KHhrVcSrDQ6rgxZk@h2%+K?{gFE(z3WY$BV{ z>5c9iZCA(Ec0GqH5OqmHjj(@KQA9${pkYxNW6GWZ_tHEVMw2A=$Q7fe zH(6=O%q~!5o6Zz&Y_fTqmGda}AC7X7LArZ{@TmnSblqWwO6Hh15UW;&o-*q>51VSuQ&ZFeVYv$C z^DxT-!r;=(=lUk35O!6%}#_7#~60IP~SW2J1sj^Z9B4*;SxxFMCY> zt`;a6EzfUgxFx&RT%hngrLqx1O1Z#2q9sMM3zk#5*DukXtRC9!TilA`yJ3OV)@P15 zd=u|^t(Pl=b^A!X)$173%7f0l48PlH&n!r!z;(szUzn&==S*+oKoIz$_^9 zD?}zR6eS-$uMwrdu@{8~jaBoPMke`PN>V5O`dRz0d`)!>2wrDPyu2L~7REwFjMrv~QKJW_;X*IOfxd7}maxiY zF3N#Je>~bfY@$G0fBN$prdsjA)cS7eL9i54KRPjd@{lr%; z@3)Y5LkUB@yo5tuEQNCo{rjsH&1Rv0y!s5C548C<2s|W`c#lrAwzRSN1|%?cS#%S( z;(I*JMpg`n!0v=%!?qg z+6P?=;NpQ_AVMEIEvQ}oI3ArdkmR*949Fvtz`ucfKFW++SZ`s_1o=WsCH@Qjybx-a zw!G`5@l|6r$3``uziCEGt_!3qZFt6R!D%w^vv38;h#w61l)`Wh6m490_5Akc3ks_) zcE(HtY7b!_M@IsGi{j(V$VzTu&F&&=9T@&S2zs|SmOmanc5J(e(_6LAmHy3p)oF#6 z&L1Hskmxz+*zAorPks+@BU*8pZVuhw>wyBf7wt>#jA3c!Gi_|e5$~Y4?jvbOWbiL9 zF@x?y#8)HX`{hsro_OrL5>zXGd=kZUhTwH+J|$K7MT`ow4qDD==}!7#kT-7LzIpV&V}6_l;^CS z;eVNEeeH4PL+uzo>(~5$U-~LaetE;RFVo=Kgc@~8x3D}sXEZZRZx&y^37xa^BNi7= z#qCUTz>l+pSAP4|m4TjaBvozZ4IXZt;??t>;N!M}4Y0SNOYkc+PykklRuj+xFwg`M z`)>UJb9IN85l@iK`(u_6k?;dZtZF*!Cd#_44y`eRS&xuy%nF7<=@nHR!<(~Mwu zo=_H4Yf)0ClMjqOPuM9@xRj!>`A~L72)Q>8JiGk{a_>|)o>~!((1x=Ny4r1(`9?JG zNH#n{izY$KSCiksh~oO*x8Y(rkxIg{)OwDuA$KYGI7O1=xzV*Qu;DxX8ih5X3=irVJ8*- z-MZCPUMticgy}lewGExSDlnAHk)%{@Wy7Pl#-pg7X^~S>q7Fh4^{_!ddSF@a7wG;W zmZD7IEoJfT2(pd4134#+YOj(No{g zlOL+*ZrX{WY1u4y>|P3Q#Xn-9*S0tyChy}g^_;Tc?|MQ0;2|cV1rH503&|dQ!AjF&R=!ldD$c4+$kIqnW(TY}Bg3 z2ajC|1-398#a@tuSZVHo;#pNn7Uc9^Xh~?3kGrMo8x2QEs76g9Pyaf2&(VJ{`KA+He%)g;<_{jf1XP|+x-&fZo4|D@ElA-}bZGZFk3tR6Oet6w zXdM>?&0%+FRVjt&IIm_0oUh4X5cHP}c!^fN41}GH==3}WF6#FWl++F+YFW5Ad2A{` zHc`)GrOa(Cdjg1z&<7$H0nFD-5a-Z=BqO5KyoVmm79-w~d;TOEffbF4Oz52OqoY9D z^S`h2P#pYm47KP;aQCJ6SrF(pq2mu@nb9QQ2aoXqz#Sre9TrKb&QMC$2`ROU&tqX) zwf*LIDS$N$_WNRgNaIm&SRJnL+y(a9(tNZW=33h>S{WQ9zy$|`D&}f?V5Y(X2oOgy zi|#MHg)j2vU>Ic4ehfj*j#lHnAx8y%LUqv~7a7Wid*0v{eni5W&G{FEjgTvWE|^xR z9dJ`n{nRBGcHdED^9zy?z;~_$I|TZaTbqlXJ_|dUq57+gx5aK?c=&xVXWe(NHR#hA z0w>K3qzLG<;bTWfFbO*&m+O$K5bWg^M=^O9fF>|n)@OzkPzLQs zf@_Zsg%jL8Je(lIwL&vKmn-58IbRBYE#C&*M+1#o&R4(tJZ*5NU>U+#O5hd$)XR7ve-q?;$Ch6n zVE*1-3(xCt#`jWIo#Xe6=SueID6)_Jo1kVzbl_;QFoee4a!eC^IvvHOHeK<9!&s`#VldOg;@;tJ5t{`PmcX*4sVit_?8>rX$ZcvdjBLyut=i~?DJCY3kN z2T3aO(%n{@^EnuCsKNvpcfBgNYO{`F|5zT79=A63% z!V;_2+yf{_b)f-_+0=6yyr*67T?^kQ6G#gdkR0vL`{2ycNUX2g@5ZLk6$ClwHz&wi zpGa|>*o5Zg<56d7PB>I>TR1_mAr}F2aB{)rem_(ar0Zro!?Fc;{|VeW16~!t5%s%w zTWT=du&<9G1OxO*8`@s$cFGDDHS71Il|;8SYC#mrr2>Ta!cix*Tu`lq7TuXeL0Zn{ zR-Hvcf3pGdDu}w8qoWVh!nV`My;{9`xXAQCr=w~v!7B4H-o*#wBJ@x*ZJqOZRtgj& zqLf&N`p^Nxb>0wB7mFQ02grP#4e;FlK#p4Eq8+*^Gqjif99|@6@Uc~S{IU`1Q4Yq( zYZXEX-u;sc;4wB7KeE}mU9@N^!_krc67Km_!cJcN8~H;z^xX2rvEtDN6*M2e94el- zjYgf&L{bQx2o&F2bw;O1Kn%+aDOLMjWDD9YKLRDWBC*{D@+F6q zgG6);O8rF2;6e-(th+)pxtyKHdc~ev9y`8%$M&-MI zzw^5jsO*>@0#J`;Cs*godmr)6AAr-Xq<4p#(07V;R$JS}r2=r2OE$8?z-8pW@0g5 zWD5|ae#?l}XOq0HQA67sB3rXDEUjhdcg2T!1BO@L$@hKpht!o$LdS>Ef(ox$d~;$f zWY}wUws6qrwG8K(y&Z?2WWe2m9M15*T`e=XHxLWg_t`P`$ppOgZr`pt9=XVn5u%62 z6COG(cA24ievRU?LT{cy7Mc1{&MC>x_{43qmB;Ch!Yin$$G&3?rM)Vq0rfTXmF?)D zRianpYWHmdczH?1;bfLF@YiheX`A)8mr;-ic+_coYpDHR3KxlR>bg{t!T{z}1(@yF z$YnH|*yv>>Mtn(}!PgxAJSP4X?Ln8Vf}X^Z>mL=ti=mvx@D_*h-(0;GSxK3ooz!u7 zP*H!Fk1C`Ao|Icyrwx45s;MCMQjq02Y%;+5DfCBKk7|+Dy_RXLHDXGE$WbVo&HKuk zzc6Lff@pYN2r#;A1R9Qwxi9BKNaD31Y5C}p3NSQHwY0j<1*T+sbpLvT#OX5%DMdio zFe9k+?Q@gD4aJvN$KwvcNI&ke(U2*PhV;&FR<@LIu(R6|N@R=_o62`%zD#}qG#gSI z>bl>4H9JnAfjI9ePDujiK{g`UYe!4;;8%&Iwe=tfGlA)4;&9%W%@D|?O!WaP7&Qyh zi+7vwd>G5@HGO{Kt3cg)XiW>B`mc5Y9DrN&_F(5KNBwlo(c|R*1;BT$P$~xy`?NEd zuL=_^V#NSD#oPu!&?xcqTfj?}V!Flnk4%uQ+tI2#O+}{7#QvLmWL=$@p7-9YkoX(V z+7MbGt|Mz*F1T3R!^B1`uy%yzBJtoILHTt1EyJMn}AMl?QSq z-ukqAn0YQq5A0~X4LOrUprMA{;^Tb9Ntv{>dGD#OX9St-)gy$$*Jv~rr1Fl_zPzvS z@hKm}Q|VmhOL%$l$QJY6=OoUBEDLcg;hqkOyxu&Hj6yBN98S*8mXNBfdZ3z&2f_}Q zAhodZ?!b0%M7)~!eY|$UU*4XvF2X*M7b7ANOLz5b%)I^VN12|SbM@1hgR>-lX5(vt zFDd%@K6D)i$GF2MB9aFU-+CbS)um;^m-6t;b5&ca!~o8w`vrnJGFV;ulU7cGc^`TN zOgwLJXew_VWofeqOo=#O(W6$sOezU`I1+yTu)c0D(ME?LHehC~&Wp~_K z-mJnTGG*4(MBJr|caO}Lh`vk8QxShf5PnMMWV6`RlDfsdB# z9$#HSF$ZOWv)&Pjz33codoia7hxe}&t&;}lH@iH#cqZJVJS&KnRLzuB9(S^mXtJ*} zv}$Ig@IR8hd`r@Lzu{hHuRBt z8?x__JM}QM;zqqO0#Z13&h%4UvbjB3h2<6Iwezv1K$SMIupQDI9d*)s_}0^ug}AP+ zNVWG2-F$6BDsD@PqFlGz;?dU&S7}RTH?me%c)~hfl@^tOGEk|^#IMEPYZoq%D2?FS zW2nXet=>H7kYvmcm6}m-_fZtg>rvWF@@!5%SFtEK@_i(y$>Adb-S21Cqx;_~>Spy@?|^>oet^VQb~>~fN{a9wcmO~$Yg(R8wM9ce zX8X&dhfW^VbtB(0brKRNulOh)RQ7Ofy)WnY%I8Zzm~gv;pI@+@b$Of=C0sB+g-@yL z?SE^#v$epJlw|pPZ>vi>c&i`s(vqyibi7O3nf#OfSu=&?0{lz(#a{y{E>4Tp^07s>D6A%z!zl}}Y7PR)RuN&@<+#WZ*WHh#0@wRI5&84cX^|)uO zZ6Y>i*8Pv~lyQ8!HZMiIEl|3MRUXd`ev{yMPd+#SH*{Is@$mU-eX=5X&UE^?R!cIw zx7qlcl^;wsj-gdz>spw#9sFU|jc5Iwr~G3JRF_*;?eTRrkZ+Wge)Pfc3oPfd_w*U0 zl&Tr5>ZbBFq|)}(idm&xJw{k1NE>}=F=oz8Z{lkzd%CJufy2|7!(M#!qF|LU?O^&} z0!93ZZk5{CYp%`55hh(_ci(R!*~z=V+2o>hb0;KId^akgr(PO&B&+J7!(;W{lERpJ zr{27YyKd1;Ewa<33;-%zV%Q7tAlgFPtl!>knP(N7aFt8}%s3;xr=ST8tJLObpyNl-PX2q zjODlT=;&Dy?z%uBrG!J;kw%eN<*+w#6dCW`lxTY{Y3A2TR5)!bwArbxiny3Myuq!- zQ)jnvWzGm1l-^qz@^l)pI}5$#bApR_^R><|Gdb;8eC0uYey)4Z$T0PpGcp&Mjnt`z zPk&8e`WQaFAo!N&MhF)X%iD|D3jsmP$J4_?f>`7qNI8Fwk)Vor`AgmvN9%qp6!WT1y=A6+viI)g^z3u+%^&huIvX{&^N2?eDQDRCrKZ?2rn5|84qls9 z=JC&#cFb?O?ax9BKl-vG7NT=&{_IC<-WjL5^#jB%H}K(i-tOt9PYX(yl}a(awvBAr zP1O)xIg?V@6Re`uW`3LT=)|h=FW0MKJ{_~?F8_>-j`rkSmfm$`R{IwD;A%(b{d**9 zWIgiplk43-#}>qKu_}+gK0K*uJqP-Rl@C9^!1hd?iL57CzTxMZu-6TIN{)_p{1(RK zmVq_Y-?7|b(`15~zdbX$C)ZbhK5{jg{Jkw79@D&2*yZ_oNy`3MSjU~*68z67Zy&$y zwY>!XPtT8L)LIaNNs=2GZb?{Rw&uL3$KBi>dws44 zyw__UPD#~$wf%C@_gwm?vv)#1XNXhDe$H<8t1PE>-)T;;-`BP4Gab;~ojp@XL+`JS zzXUX#V2^Cn>#Cs7=#NUYY z$&UBs4>`cUeTpz7+7TM)cvAHjd_3nhJLvh9frc7`f3Ssz{>fpn^ILoKl+q1r7>~nx z7lO4roa?;<6YOkk8xGYI`1DX?y3Wn2J1JB2IXLzquJ_`Q3zyO`@!q-iRu zCru_#_jS7%V>?tWLwd#Wc2+}2adlo}4Md4`Li_sIn;WjAeD1C$y~WRyt=QNW#J6`G z^~@uf*F%%(ZB|xHUvfC8#h?80!2VgzNtv0DBR3Ty>&YC-7Sx6e(wDQJ*Wj2_!jDvS z4~>lM_I$g)WE#&y_!PV8z?;8-!PSUUPOT`IeVQIU@!Y`Kg*b0{=1Ie8 zHcMC6kRwpGm<0swe90#8DCY3uAnKMrzqGvk{`$fLXxQ+DG$9Z_xoiq^MDMMOlpMH=aDkdg-JZV-^}4nevEq+^us?(PAG5QiRm2V69b!VUdhypvK0rKRi`mzHHl1UjIT(ZX(bIrTpewp0-B^omZ~HpO0`gb!DU_>SmzC|(2%}3U}>DQT4@2e z;Q>xj{D>vMkswF)j5vIKcSpdQ<1sdp`t8+yD|_Nv`SP+{52mU(r0XLdnwXy6$R#hY zOf{&qj3r9p;RzZTcpiqcPMLO_r8H)98qd#->%ns`>_VFZyglT{@2jmL< zfDyi)-buh4^sl9LW3LH~Cgw7m+}srL;)}IWRk$P zHS?rbih}Pvk%+uUIJ`|fCAbP52^SAitYGT~{%FkuW?(hT z<}Xpkxyte=G&|IAm+-?{XE$WH^s{bz|9J+g-Vo7rTmTc16&;2r}Dy==fg^!aP+2k($Ft`d*eP4}3Lp z9JuLUa(%OGGWl54^g>1%7dCLV9IIlJcmm!rF%JBvNp>=RpzD&%!=&F+1|?mOx-tYT zATbMUU(wMotB`9iP@*{M1ayeu!ChDKTtioBB_g}(4}pkaP+u6XhY`SH{~=OUqAa!= zyo37n!&Iy5OU`E~$nHk6(1r(9Dx6{V&Gh@uY2KGFAzM{?jxO>EwfWf-xjz||#%FOI z_YbYQ^2lp9&Vaq_UbaSHRL+AhEvB`$F(nJOs9UnnGJ6>+m^nfD>5C@v`FQdw1`Y(4sb%9gx;7Om70d%O&@<(d|K188l1A8#ajivN0wrvRwIqaKyfipwH&JAZehg# z#=ltr#GE!cKz5!3F0r|*#JFp95H<)R2*7_o?2^;0Ibd+BF!Dc*$GLQo#ho?gQuc-P zkVx5=aA|kofxEZPVvk=v%V2>l{r=OZTv<7$uBF0sF35I$J3qsow(qkmBCcEIVs#;(N+(OhMQngc=3PffifH8pZSOpRjx6 zNcs`s&&n{0Z0?=fnlcfh<;6FknY+V^=4Dzd$msqA=K70&X?PrI?% zJtkL%yLXF=Hw&k`=(RkVnk=eZZ`r)o3VLqmRdpCqkJwq~%q7{s0VJC-5AfETG=s>g zn4n{S*YlF@1sEjADu}f6L3RQDoXp~4GU#Ghi0t9=cE_lFQfFtdnFwFuggK2kHqVZ);=w&L`rw=`*h9!k5_w$|2ROFWipHTy$X$(dtf#$#gI zLt4T#+3W-?9fDpqim5fo5UrF-+eRK?GGP9oA%l*4a!f$*z(rZCj-OG?c!U1+C*wv7 z8@n}EM=mdYkO+=xmhG9si~KWOEmq${cqu+n3)?kvnwF+>=4t|lJtvl>gsJj-nG{+V z4I_%iBGXYtsB#f1WB|iIE8o`+0W6f3+R3r^5Dc? zck-m&m_yUsmIS@d5u*?{g?(F`1Tt0IR_Hd!-t2Erc|3+ zK}c-`Y+M*ZUl>yF=k+_6*QP5;>Fjh=fihvxrk+Jw;^$mbX`)r;%Z)jAEvxvV)6agw zph)Q(Bj6f7!{=ya)}?#b=_E`ObKV{3P7Cny%Suj1pc+4rS`4X+=T9*LnRBE7CM=DE z_Ah|;pUGa4ts&5~x`qG41ygFGJ!Kx;+UN0Sk#?and5>DJ;zz9iuRr#pe-OXu3EfvtlQD zmKQB^j>~R?g+6D`LPZAMgFr&aJ`4H~SoCfG@BAtLa_w@1mKLWJRJXu3+sb2#JON6} z>x*;P2bvts{?hw;?(wtL>AoHlZY4G|Te(;$Iz zY9-S?!=~oLZ83w-6BWsN4ZCVz;)Rn(4BqD3jrg^?-Di>8EbCo4RUxO%@SH47Td~A9 z;(V7xGY$&A*c_bBvL)3vl!ueOrpdi}fkXSA?ZInf5|Je5g_lelH6GrJFTXLRi3xMz z$mC0+3dPC5?8#ILR}2t)h>myt^IYE18{c6u3Hk85B(GeeJn=nWzEZZyMRwPk;f0Si zbtLu2b9&tB$HWsE6J&Y1i!SzeatdlNuJ+kA;Zt?A!3eve@P`#Ya=jt0A>`XAS|F%# zOuPv|;vNw9$KSNrCVa>R6$V?Zp|4PG>HXzewBYQ{Ooz1i(@U@ zc~?$QkruY|hgWq{m79AP+M1w*Ri%u+aR&!Of~XpU%C*$+!3WPXuI$G+menVeYZapj znO-Ue2S02rHCsD@sCF;=0)roVV)vHXLQMXCCZ9J>i+}%Vi+Rg)oCj@s?vE|VvvxM( z=HoaN?VqjKaV5LQ))KC$zp}XiXE$@{Xk?7nrD!irEXWhM))kT|yH)=7=wzmp`JyT- z!KF)+G~bqHyXzxLabSm~@aSOcFLT3(R>V79oKU>-pwQz1#l(i5@0=<)-^>UcA%`0} zd;U_aMFO*P7XmyV%jyYFEQORuJw}k!z=8#N2sxf6h)W9-uAse;Un1=(MCS? zP}bz20Je5Z{Ma;JiJ;XRK9ouOpbSeeq~UN`I>Mau*B8FGFCtpY%VY37a#AvfEevvt zefcz_Q0ANvWVVJy${Br>5c9;MTKbd?a86D(CC14w=X4=?>fN@BMZWI8yXz08I7a7g zK~@x5@9EEoWVhZL@c&*f-`wGS1v8~3Dv(QGB!R#$dw`sTq|07 zc1Kc0)BI6Y!|`6`Xko!wn_A2ue!emk?}7Avq4Al=AC!US+==G=?7%z1uIh@w@JYlR z^<%7|KSk6`w}gQ&Nh#Nz;Jg`(#j=W_ee-Nb!ru{2xF{! zmnGZdvG84mTNUa}m%-v2P|2dfDn+W`yBj#Y5QRkd=-xk`;A@QbI$=sfMR7Im34XmN z)Ezn4GJL$FBriE`>0Md2SM%j_CGC_QOi3NzKcok{e|WCLb@KsCrop6gbt|9(Rro^R z^P+8H1drZ3Q*ffjq5Xh5Iv)OArTFyLAK-x2t(5oXLW}_60Ij^_+~qsBo2vaJg;!&t z+l1dPD1Hr=i7MqfaYq|t^TyJKP0#R)gs|VA0H;4CE&PzA zfpE>}7Pzwn%)a4)*;m1I)|BTSd@k(gwPr(KU1 zYB)Cv4y==da3u|VOy-|k9k!39{breVr{M+M{d_l}`Vv*X$s%8??aWtOX)zZ3=PArXT1N3+t)4 zJu7QFM~>=~&%k4H2Jdyf+kzI)t)&0(D3!2&qE~))(4RWx8s$IH!9qTq+B$gbhsy(V zG>H$QBHCgj*+G^Clq2gmyy0hoSaau`vtS=`vC+6!s}8xHePR&w%ppIlP$F<1S2Pa2ykZFW@y0XaJI2bniu6(PL9 z8sBvMza`H-<$gMJ=i3)5zJG)(AXwElt@MV{1L!6DxwzU*dUi&YmakBR3616SUr}Y> z(~$xZD>2)k@vC1C=fOY!3gB&990a0%&I$Z&AfR#))S<2t@ES`rh~Cn|DKIJ4 zA;bz^kk|39#PG-X^Z1DSAeOtJ-~0>~jIVR%5PmzK6oP~)td%+j)^?8#wF)_tce7xu zees2)ui71EL4U6G^C9H5Pj_Y9Hvvpv`pvY}+HyH{5t9%mA9A}`tp_|Amti-b)8ibe z(wjM(%#m&XsQ=>vNK-^a)x}~T)UjZDWDHrndwRt;#5fW3≫Io}PmV(UBFEAn+8& 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�?>;mR4W0RK7kB>sJq_W<(OWuF8Qr*jM zlFq&qJzOStj)G!^k&0c>6|3o{we>q zhyCV!3)3#$(F|Pp$eKK)Bjg%m%8T3cB=+3hy=6U$c>D21F>)^S1`Y%;!8-N*3dt7Z z(yFAa19OIfokc|X`5Le9dtj^lAipg*V0oedP`+xm2x9T_nIg>Kg5bO zpk)C^7u2AZK%L5DYisWLrmG4BO(>KU{da$Z&F<>wzf*ksPzgj5x#&%N4# z+ViJ}X@slFqWD|ad6U-1kkgQ#*k?YN>`~baS}TqPV=XOjD+Am~5`|hvXn){QSMO_1 z_2C(u`f$uc}>cmCMd*DU1?V{YLmN4)Ho2T+-h@&3qVQPEO`B!JuLh zhp9$d%mmu){jld(F3M=QLge`fA~rmOvA`rF2iw1IzFcySvB>s69Jzk-!SCAsiHNND zzMW64((aaaQ}X7P|yn%;Ryyx(Ppd tmfHlTVm)m2|gXw0kO7RY+(ei+U-8+ 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

Mf0T3VAIMB^kGGtU4aY)*?6FX2v|pyJ$xI{phX zf8uS0Y5F_|T5gn~DccX(@QJq4hfZ!n(d&9&1SwwcM;KUHrv#mWY<7Pz$>yimm*+Q4 zZ5a>0TVvTR79LN)J`3s~GSUER-^bGbU&LXwA^W^+nerJU;D4i8dpcBNFmmJREHtOS z4i6^DKi%lb7JEn$+XA9zcC+kjN3*gc2h9Q>=ku=sLDm;7M)(4AyJ)-qGyYtb-$=Io z8vlA7H=tUhXl?^t@&!Gs{I~!Cp0Rr|Q)Kvhve?;9-Pu7wwtS~*pyU_-H(Y>Y`QvvH zINf_>3ia^$CNc(^)^#@WeYXz1E-w}V#7fA{M^wA5TK!@{9b5 zV6}^5o25BnK$+lyIohA#m~oq*bD~g(&rt22f$8QZH>LGGPI`ud0{3h_x{eMz1Rc>A zzz-=UIvbCdjDM$Z8N#U%i-nJm0PE6UXjPJ4k1x+Z2eeA>+OD!+9QZH&0=tRW3aMoz zBOWQezm@!!5V~2)FIsYnnm_Fvr^RjONF1= zXR*qeiIfD`TG1=`$dwvLCN?xsTjw8mL<9vHQzv4=|;NpLLlcLrMf?9 zP883+MAOP?Qf6N!{;M7`*L?2KLwV=q+MwE(IxLharitnvyw2mo+nJjirT^6lA-{VDdKSE8+XWI>eRJeLxBu8BN{UFTwPiy=1EG$+)O!obAATbHazai0~ z2l2rj2MUMREN-}Y(J$|%0*e9CZiQw^4t)A20kL}Kn4rh8-s_rkXi%#5jkDyoTjm<1 z_V^*;{5krp$1J+;*Ys!IW&t&1o+&qkXl`F&^8bc{8+Shl^Xr1vTuCEq4BM`5>wDK{Q#-lUI{jL$ zQ2oZ;<<<4&40Usx$@G<(T&6FHkO|Tv-a_{&_*jqoe>Z)oV<}e- zd~kb71e6niD>5TGE3OOa3<6#;#y!ZLFk{_u2h?Wf2Q9f$lt)AX9`(j~{e*eeoyiCs zN+ZWtNnSo2DI6~pes^Rhx}J2tuU+GnM+=R+PRqmaxJaLr-zTa|4#3gE<0QYkk{n2U ze5c5rq@CWghQu4n17X7ftU4<@p{(7k{wUuMXR>LU}l9bN`|Dr3FBOjcorXZ?V9 zf(1lB7V3g_w2EgQwUvOIl2Sx}(3$77k2d(Xrfp-av#!}aWrU=zXS|HB)pbwbe$Fbo z$YqO$;_s4}A6}Ie#Uu3YPDoOM$uwlSp6B>MP{`Bk6a^~^ZPS^(yfgV))C)O`*D|%O z>|%V$Zri6T$9?0n(e^1Yh% z%)MsQJ7(;C-9U`$xfB2WC*wIlB6g#1A8)nQ2k7YjJ&m7KWA^bzBFGZ@-z|OVt=L3> z*D*rrQNcQ%(!UMElFZ@1g1#>c34>WTqgQ10Qv2u%!!u5xu9egAE2omcO5pKlWi|8e zMInOEYZjbF)S$!auq!E`Ot7`Hb3NtT#jTEMu3QNeke$#j^QPUr&&d$jc@f}}{=jke zdKn7Mf9+-{hK9r}UG}k&TkKcSj!%y%|JL)h#*PeH;7?k>12casX{f093Irym<1^{B zLjXhl>nWiGO*N5kbpfaL4(pxxtF0gLWb!_SzaiC%KccfrwTtf;wqMGas-jolO<*tA z0DtOAXs^UNgLFddk4T?Cfn=e7u*wXe8Cd3z904$I0H``VIVmYAvD6w_T3ULGqwCha z^Egd9G9XGoh%UlV&M~(HStX~46mhRaZvKnxiQ%gpU0Xbi_3bki?_hg)CFN+k8;A4;slkJ9p_BnSlCi!0 zd7EJwCoe$9*m31fG1+-Kxzy(Nnm|rPoGE;ccLik%%ZT4Olu-5y3f%EQiMfj0bVUGu zwG^Gj0z2YJ%mr+udwNy|%ZF&0iSLZlzRJH%rSu;pru6(cvp3gNcWlwrl2ij#+)6(h z28Z?w?*+7eDaPb6<8~O-zvaL)-E7fCt(sBXGxuC9AOAkSg}ZN?iVyK5;K%6pW6!tY zQ|X>qW!<*mK8(1lu8hD(x7T<{xtB58)qc4K{u;s}Y&%axpJ$*uOgDty`uf%3RQf zYwZIC^C8=NvK*#RGP*RQ*G!8**N~x7SKWsI%x_IqH0%eiY3PO+{5dU>60Q!Uj|i5z zcQ2wCd;-l7lC?#1GuQ_9;JrcdD^W*3|36uXLWy!zbx17Oaw@SuG!0PUkhLZTFmBDm z{ft)~wFhTC9JB|o?!P`=u?xRga=X1glZNxf<6js0knz(~`}<^crhh6yUEt(!4DTiT zHE4TW=Fqn*P}Lb)mYCm}Hvy4XHfGuvGV;!nnpwI7Ib_tkwv7!NNAFl<4``ekF)}m& z7_m9nYnq=_f&KS}OZWOXUnF|j_mg;$>`e4NT2@6v!z|Z!)I$E#fEE9S23i0CdDFWu zfa^z#z}3gQoFFN5CkFKwdiaP3|1q%cOq&p-fr8@-amhJ{= z>1I?wy1P3B1nDk`k?t<(?(TQT_kFL{dTYVrA7bXmy(jkBXK#kBM<&#!Z$kmhp_4O``(#(9z&`{0BX$$8O*9 zyVb%uYDOn##onZok#HdfKwFGbi+XOSOroXV#M>~uiX^+RFe|Fjmw(gO3}w5z%0S0_ ze~`h}vB6d2c%}Fh8CSKS51jHJnhjsnA5@U1)H5%4Js5P-5s)g#Cb8lO996OWfr(F} zW(@mk2Z?!R;FyekpvVy@eSs8G@!)-QQ+mqK&^%viLri4 z#=#^&C{r#&eGViaugcp)seSrK1g0ATOmfIN`&YI|WFaJ4Z(KxHXv}%Lq~%dT6-1Na z6Y=*o4-|T@{Mf z$P?_*$ZTfi%^e#}XaP#>!b<3~F)*f~N+cV$ zGhA{~l#b}?OQyfz@|rhO`teob^xJCQPsZ-34#Pc$TGBDKPcOHf#5qJ>hJ6<4sv$Rw zDAi~CTmBX~@r=^R!zkwvlM&?;L+W|~=+G_i8T zPn;m+z7f|a4O^Ms5+`Da@z&02GT∈L{r-bx=Szx_fnTN8M?1(Tx502ZLAcC%{+Uv0WQEu~c&)e75b7qeZ{qWx^Dvaa>ys;DR7U~)J zER-7NKZYQ#r^#oX;2iSVJh!u(eLr;Y?tzZf^6TKn3WkRhS_A57X-W14(0I$yJ{tFW zw|X~Qg1!AA%+w!AUB6_R_%qE%EbeM?sx4)=BdR1g8tU3hM*F&}`vVe%3c!H@GvU%INKAs$#Ttlk+lQ%QhUzm1IFFH11j>5TMoM~xEM=5zwB1T7 zT8%^`_q)TF$`gS(1cy{Xdp70_V{bwTVK*%;GQl&T;qR~;5ugfGlZJuy> zbg28L>HbnJ{yW?+4z%TO4qj0tBKxmN+~qnrH$G47bCltW3m|BT}eHR6EwyOgFTxRHYw zQxBHQdn}LrMLgK4j(V){CUy^6!6IduNeg?^HKb$j%J1Cq+`IO+|Ew|x(6ffChCcf` z$?KISw-uGnqCoNELMzt2w{X7}E@TTVcjBOjbkzYz9hhe_NA@ak+r9#pJcwVAuw1y( z>ZIk3LC{)HGj`A_w+t%Yn@HeX&!lD>3iZG}mfm$mqguZGwFI_bSP-I6i65gzI{xBAvu57aq2 zX5*)gi4H_#%^E4$w+@P!bFyUe8F34l`U9w&-rTLRaI^6 zW)+jb&m$BhNUgjm;gOpiEiYtNRa|@iSq7JGOI}{&&K>RMz;gy$ay@T*M^sA=kAF24Dy33R;zg;JbFAidkdC@B25;ouP}A3S zIfK2d({iC>v-q4lpRis{pZGNzK4C4?HhpG2(XvHXKFymStW47_VP?CkdX#KRIePV> zo#~r!SAPk*KyBN)eu}lBPB&it2cz1^;UhNp;aZmZAwMLnBfLY}<2>1qD{y&;V)>Q9 z)ycbN9|l#Z635@NPsRP58t=?t>i;hDK8=yHJ-3yph!u#xr^#RB+$6|`w{TJnS(UrU(|kJOE%+}N0K%sg z-}uPF!ZfJADnB~CG(&GwLo^&n1t&(n{3`nBIZM-f6n*rLRR!v3H4dZ{)aWI5>)$&} zolez`w-2Eo!itI>%1iZF}O@D3^ zU_mH9T9*&Cu2-#8>$kD+CkQ2l5{2;R7JUp3`Sn}QqqZXpmn#N8zXN7yt+$x zoOx;=ZWEx59%GBALoI{%LN~^x#pK;V$)=%mJ5t@rCA{_2IrHyiFZKo3W`%5v_H53} zYbT(4PkdXoM?_71SSyuiO)9*#xv(p}u72^16J-9JTTb&um4Ko%rv#H~^XMCPJptPJ zh!V@fz5|U2X;P#hR3!4KsCHE_07Jy9o2k~p2%j^GlarJ0{2Mdo8SB8tP?D56JOdQt zs|(;aX*0^}m$Eiu2`_6jc5F1W@Olu^suBdLF_G~fQW8;JdwN&6;PA~Mb9<}dBLB88 zQS@uTar4X&)AR+2@Xt=z$7UQ4kU7MDxAtf zJ`8!tA+127Ig{^6%LMws8=)5EV9n-3bUWS!zqsr(&Yy0m{?|SpA}sO!_$@I8$JSCR zRMcgfRH$DKaoo|au#q<69olGVlJ$dscm@axBeHB0*`S@S3>xb+<=c%5t6~Xy?C|?s zk8aUelp$8F>|2YLBSbtzUnn55D3_#TJHMhkv^*ZeCU!rugns=w;NFBy*GpTLYWcn< zT$F5H41BP+#$NPxSzFN?XwQB5l3HOTZ4qX ziKjUWr*Vg0>I-v!>M9k^+6N*lBULOuqBjV>Ba%$lN2?2Z#QUG}tv-nfte zO0$9IKz*MG0cu|dI(-WpoAsOBGU%qGD+vcD=gEMbPYg^y*}J5~gO3y3%z|W7WY(65 zE)1fgpF>JEoo5?u2L)M~NO$*3jMy6XZ~cWe~x4D|fZuOGr_oG%dE+kLUH_!lPR`(3qUX z$yjfy)LKpyDUmt?;VW3JzJuC#m5eT(`A2o*1Mgc#`uwUA?wqCzVd5Y^mbL5fbC0Wa z?L03dXWYKtm`mM`DhuntCrWy51+f%qtB!}xMAPn_hMQ48aNdCnCUwL7t-=_JTH1KP z3)8g4Vb_$e$(O5DzFx zQi2iVE(kyNQL~}Jv@;J##@Au=@UC#bFr~VQuu7e1wsvNzg9!W+4`h)!51pr*Y7ZCB zAcAETb?oUJQpS{74!M0Yy5ka_ozzMy@2iYRj2T6UOL(RbsB?n$n$XCK z_oY6`cP?R*11}H00KILKrZa^$qvVZ3z~eRk;9}hT5G`x&;O=$043YwzIdd72YPL8d z4t1FivsmAp;&*)d$bWZYJhq-jsA&%U&wDxQ1mQy89Z9bJ%J^Yro%Pv8rE+xZkd^Qk zi@a*TM@P}u+dp_T=5wd=wT2a347m`~=fB7>KkBs2hej+T8|?_LIGSNvIw15mHeDVW z;)x>kpxv;o3%o~!3n#L5io?dG!QA03C)r9Ue61>a{K6i?aEgVZ{Ie2=={gm@>8taB zy+wC)HjORmQN&1yNdcurKa1ShF9u|&J=hOHnEqw>6!?_k16Cz9GjjwGeC4#A|8qJd zr0^!nx=~d%PSp+?1lj>HC9L3JwwQP>BAef=rr*-I-}mF~xnapS^0H-WUUn2Iw8bMB z1p2GP5)*m1<-l$H>5%^8lZW>&khogQ(}W%_@CgXDsO!vZPadeiHwFG^W0%{B;4F9R zX>!uEw}%hTMz@ozySR+&6A4t-^=a{}Soz%B+Y7g~|1!+g+3cC_;jRn^aMdDRIHL>_ zOVq*2xLt}Q-pz9h=NlPb7JWs*TVO%YUz6hp;jT{G$?i{#JH-vSI-kpfs%w(_C1!uT zH?FaP4M_wq>xb+CSL>u5%_kD@gc}+gXX+hkcBje;vdG=bAO9*`aVnSCrJ&QfOR}D1dK}TPIsD~zlzi3rk zTN~Oa%_jXgI8?3&kx9UApowv{oZCjCp&i`4Z7xaG7BOrSRd71;lPF4R8ygF6{Yhfy zN{=*5IP#W+np$O6h`du4{b;)XZ7)h)I3Atz!sv@9v^8Sa<=$7nb*lz652RP-HS6*8 z89tDW4ir1Dd!6L=uNlfn|5jOtenPr_t*pSE|94oZQ;ojF@z$@%y@z z{DG~duA^AH!?T?%ZN4|_^-;2yX|Zj>zI~3IwJ$g zou7$^vm3j%RKr@XIzlp`We+`c$;rtuO=yG#^=Oq)q56k0iFaEPs%#lwJv}21)9E?` z&xw3z)iXCblGgnz4Uexs|Mk}ymxe`Rwzhgw-ZV(VvNZd`f*mfB*j1Nz#8J1EwxeQY zd(VF=sBgnx%86B#Up~9X6F3N3)>_=^R_t0Eo1Xsj+aFoNSr!0YaQZ^mm-6V&(1DC((2Ps{`VoJ$M}@y0)%)C7dOUC=+}{P8s*ZzmX4ZXDP^fkWdB=rx*Vz0!lcW8iAztk2t z60LWcKP~rG5FTh(c07@{{C$b_ zIk>~ezb^Ka>#mGRKgZd*Tj4_P_Stv}qY^)@&OC&@-RkvX=O5He$Yhc_0S)_l5cF|xBJFT>o;DU`}WBvcR{l@8Pk=*UH*M(2Uhng zE_u1Q-^-|^3+4S^_PP$OpqonElS;kyG{sv4RhMmz2sVrJrpA1wV@NE^vyIri9@x^z zMAoVlB(!Zu&sZ-kg4`@#qNQ0&Rx_&1iMSuO8k@S`e+t55Za%{xz2B0MaNYyn7+?0# zc8r|DH*Z?+FXrF?LK~3;H`eTMDQi|t2QH7S23ACNXh&HU9 z^vprY&x5t&=1Q7|UL&FptDmdH41Mx^m(MXT0ZISUGemrXfQBc&spL}CvMSJS59TaS zS}dcne7O?sTH8)%78Ku~+A%S0>%{N-ow6eNZfKZ=k_unXIoT+yq**Im6sw8x95(5Z zxaY>k$M5N$(frieqXUHs4K30!>t(aR;Z}MUJu`JIY{SLZh9>6|0&1l6w_r?}(#Nw% zX}>xB!YOZ3!N)s2wbIa&RnkV9mq_+HJBxnVmW3MWnu3qAKtgu1x&8;}J_7Aw5N(B~ z=fztc$e6iqP%pfT^&C{;z$bDr{D5fO+70A~PN1a&s-kd(nlAm)h9ZQ@;mq_H)?U>J z{#seFd+0BHuVXRTYM>HvM(_*+J@fK#`;Gn2IoV7r0^oS7d68HOyJ{H8o_kv5j3>w^ zI_t{}#+#zsfuF4THa5q1Oul9BOuUrdOe*0|rGeE7Y|-G1w^VC>yi54+LROVk*&|<_nK(Q zKO8(4;4~jV!({R57i1H!Bad)v%oq&pE+;{wMG}Ai_B(S1@qWipo)QD*1goN~Z&ZyA zs)45$cTxC?MqyB$mF>`HD4(9tr}WpPc3pozh4eS94;*Eb+C*816^2U>wpCJ$dubA0+tiD zS;7Uex+V&4tG?+rk^fS&fng6@?jII}t3GX{1PCP>ePRS#CjFQL)`L@KQCY}{{ZUuP zRY%&@iXs0o;$r6&O-iK=A)yLp2BLpV)I&rx|P-U>}9u0{!jTmGLgol9)4p(+i~~F(YL!X(N?8C z=pGWpXaD6!1>&s=Ji8^8;&=UzKrS5}m4@bBkLS0#X^4^R3kewFMQAN;WSZitTZ0^wd)BVLR>S-@w)o(QF*?H$UKuU|reV*KHbSY@mEIj?R-30Jv&0GeP^e5^A}IVPJ>@!tBSZH z-|``As3j*ATJ5Kzk}PrETu85}+1XWUe>m{S16*i7c_j>kd%8l~|4kv^ z@8fc3-x^NP81y}TH;DZ1e>VS`RVGZecXQQS9%h+EtK9r|0p{1I9YdRiX0V%vJ|;1l zJ5|K`hb)|-giqBX`MX83le6>jPdo3B$A`m55*KT}D9NLJI|$*N`~}}-1{t%sMCqeb z^#0{Wrscts!j3B!!9X)_R-JSUSe)kZf6;)Hj{^Ua{2AG)q=Q`PWB>ZTts{+PKXW@I zHHbi|f`2Jrj|agvdXtPCD9ZaQZ&1c8B*u$cSrIk%DR`@s$G-y9ahE*5&C7)2?(&tE zr^ErmyGq}}Zbw4h!Yzed71i_zk&4Qk3&D;A zs5Vd~slyroKb*&D3;o!Qf1yl8S-Aty`O^e1MrD}g4)wuM6u0$C3~;J0mGtz&O*M%G zJYoydJ%V2mavEsjL`hOwRdlOF7YUQKCA6GT$patJ-o8F5N{sP|iQ~V%XchLW;&4Xg zcwdEuZyNm2q5Gtz^{HYq8x6gX(>|K%)=NoLOG*br{#l_fc97dSP0V-s{P$;L*3-Y> zq4qjGIeGV(Z}@t?kmWaje$Nxs_D9VuHA=czqG?wt^9Q|%s=fa2^5ko5#pb{ZNt8c2 z=OVf~QkSFtSVpVc>Lee7?G=@Nv7n^P`jV?~bY`XVr!VUMsi;SyA9AXQIB(sIr2;{D zO|4&FxNjaikwhrK^KZHbQ4XYHS<Hs;n0#htFXfu;^=nsDrM!#^A5j3y_Xl*BK-{hf|q`Q7lBU7D0#U*!!=ZM+ct;Oo7XVVV#AdqOOrx>nf5&OkQ)`eR#FnMh<68t5S`6bmX}9C9yTHQIXO=w zgIEbtevSbyfLUz1vEnV#xEFV2(`QZwK~mJF$Plf6 zHzyfT|5oDdyk0}vHfJwV^!W!X74A6@s$o9{P_>QrpgSs#I5)btDsyu>Qd)m%yWmp)4@3bxO66PEv6x?fy{g-|u*164ENOW}fks z8emA}O>e&IAEw~iX`{|vbl0D<1bo8?+b}H{O-D2#%1M6VkFeN1H^(wEAwWLcfcgDA?vjb6p8^1gd=>d%F%R~WB7Z0$!otK~gea^NqEP%u#Q2+5}iu*rl=8YeE zPWAuQWDWgyWzXX>T#x~dSKA(UoE-56)JW1^-uB8bz zOvE=eT{kB5l1m&O-Ik0NC+`f66(Up0u@LQ#bone9E^4}}r$S#Tz$zfvAiX*I`n;lb z?7pJPW$+9yHsip0pribnrT|baa5*@VJ)EnI!}|H^lCm#ya->HSvn{lEHCNFfSE9Cc z%P(rIXTGhT34~NtRUN_d0GPc5&(3NIM+YIZj7aw_yjEf23dDN9 z#3<0iOg10D<}O_)L1hvDh9}Q6hJcWio{W@KmepJask>e@I})rmLbNBkiLej?vmLJk z$Bb2fTs^X=tq{Y*?d|1qD9LIsec4*|RCEl1sp07{`ILUBifAoVRc+6e`GOwy(=1Uc zY+rFAOk!tzq~4MH;X&>(rwaCLkkPr86@PWd(npY~$ z5D)B?B!O}EnNP;US;3Fe(id$tHnMDvgP=o0DX1t4-L&PaDf%lzZrhDogxX z*o`{8{9H1Yrr3omOKs_7?Ml(w&Ywo`Grdboxj|OxZ^`xR?0CCr4?I>9W(Ue>ed*Kr zIPTzEJH1MjUc$?0++-r+j30iG8k@11nI4$R#zE7mJh)|ws&U59aMNe+-v+;tB7lyx z?LNX5FB%UTLNqJQvWn>B#H)VPmb; z_crjxJT(YU=dl+nXT*|uQ3-=UF+094D2Tqtz6!aCqyM$?5s^bw1%n#ALUf}wEV1RA zGM{)@VykJcTYg1yvv5Q7KLIL{!0q>{s{g2uu+{g+howitj3EhUXO59ipns1K4YIz-hRVdQS11oYYGc6-c^-9o1h|pB+HFT2y&^js>+FTm# zl4P$R9Cv)9;2WV3z*H3@&yTe#t^XcI$c35|kXup`3V4tl_xCWO>Euss_&R`TfrsKj^5bb&KKZ#tK3~f)@Z-a$vs2ywB}^iDu;sRn_{PqT;&MaK0}l zti|Iz;C*s8l-i#%s$=%|$xd4*;atvN69Pp}GKt`%Pn7$lZ6JbHf6C-ftiGu||>4C3wGY$YT&wsxcN`q*uw z)jmRkq@b(cR1*hu+H>ARw%`>WyRq^rV+4J;5lozwP*wG6>ECpM+Ow*qf5dvOJEeOG z9ryX+m_JxxF&pUXYBSeeQNofY8k$yWCODQ-Q{_*gIz1w(aBPiYr;pH-W9bw(C}#D; z6k-nFC(Wi_rO8*|3%wjj+A0cu{jLd~05|np9-t7a^yM~P!(A^huHLXY>ngNTfMlYe zfF>Z2^q%O4t6$PhYVyx}@b}B6Qler7q9jq~aGq?t(1@w3I_bJrLpr3Y)kW|182Y5k z^x}$Q@+~yyR9Segy$){Q@91_;vSMwLb6 z|2=9Xp>VgsDl2WA?)-<~-|_2;eLj^1Wk9ppP2Vxc5((77lL-YvD{lPhPDHwoo;sE& ze^!q}EsrZ6>;Vv*yV_~OFCI8Ab?;eg!{=QF{?z#7WWz;F;tW_hi2g4Z;241Wp&$DD zL9IsWa}WrN>YYLHjHpACPAWkN=!Zez6$+kyJvEXY>knLdK6-!u^fs-c3$5TL{yW=e zA~?y*rHFipjBJVKbLtlOLm>f{IKMn}=Cm06glBHQb+6_KsVjm-WZ$+MMDCWgro;Gv zz6X^~+oNZj-QC?z(c)jgmCDEDKy^9fkc)|vK5E2kf*V$7<5>@`&o2WE<1y_(d zii^!@?8fG-6)AY}(kkxRHqoe~V=N zThvemFqaK%mjYg&XX$P$F9B4h^{xHy5nt;jGvr$4#J5Pvdu;(zrSiwmI!jIvTAi+j z3&YuP;c-)AmDDEe1Hb(|giBi2qmk7UWh-hWxWmSu!xCFB)a~}M;_Rz3-gb!C876ez z3KMQ8Yjr^IZ{3fSw`D2Ec<|ENNR0(kJwtN}(*Xn}@k9;d>~no*7lX{AXS{Nu4^u)M zub-^BzQd-%Nb)V4!6-yz!30{_>;wZ10~HK+K0*zpU|o#`#dTQ3@(V8qZ5r=V8>MQ{ zhi?Y&5?j=%Fwa2`%O8!2yN$Bv|opST&_TB-K4tMh{Cl@)GafF$s&Ew@bM&QM`_t@#9nZ)W=`q14Tyn6-^?LJPpZ!SRxB`u~=@!7wP)Yo#|t zXFco{?s*V&5Oed^gP8j>0HfNIrQFi_Y~oK z=&2kdI){et$5ptFbGxAV#JIzjAt&*r5DsPrM;m04V&}M*ri{sfQPL56AX`Ax=(7Jr z82UcQ{~w0Z=pT$O}}xN|D@fpgsRU&Ee_y6X)#kyCY~3fFYBnz7|_?sok5#E$mj z+2UVLy5gGb-}NSi%uAtQyx>3o-Zg@QABl?z9c^YG&<*<8;M*TE8}V_HwZX5To_!3n zbS+uu@y8HBq?qi)nk$`IzKVGtXnDH9+Six0wgccb(w`+70OH&y7=kc9KK>bWWCan; zXQMJ-O@0@uWQ%va1B!siOm$!Sm>N;OG#<93fU*|=Q@iK+2(`>jMZ29>u@k+=H-wF(+zj?mP3W48LL|lcP%5L52IL0fd<)&9;is{>$2GM_xCtrPQF( zB0RsJ+w23{VcYf!!RKP0iMp+9yGYHea?~PqdDNq?CI+_~0O{Vh#xdU1R5pBYvODid zo?4mSfb*0tmvu8QFYgshtMQC-{{b^gSt{b*=P}Yo=S@^w&AuUxamf5=1*N4d!rH5? z6h&gG6*7>mWCI(xvI+_4;?3iSgfPM4nX}!+Dy;G*|KcA~e0}nGtEn!eLyNT>{&>T) zd=#WvBDN-P`5M}OgQwin#?VJl6){p{V?8Gi9iFKX*wRSOxA>5wi(CuNso z6NrzOvm8lU?jHTP8EFzG5*QRspp0+3XI6M?xkCiV8yleYctfvN0($+#ni@`*gZUn0 z=BBneyVkUHoeZ11es(#d^66ifJt`P_Qj@eFY%l- zQbkQI|8jq4rqN4J7Z@T>K*nt#B1SRkPZ8UaQl8rV9 z6d;e~5#9{R{;4; z)_W}w^_gaY#4Q|j^9(pLXw;CCn2cP|$Ai)H*$zo$DwbI?H89KCyq=wE>DDw)6MKjE zESla{$LD$-<|a*phqA&gKN*JzVmZ4UpgPn6--NogXc<~&W`yWs)Jbre=WJ?^{h7TC zhaCfhs=>6dTRf?bH8%Ppr?lcAdIl_la1l!5T`4#l+WQrGUC*VX5Q*ivAJBnJJXO=A z$mbYtof1hIX0&!w>-dAyls4YJV&&~9uAm`Zrg}@Giv-I^X_k};l>G3($eC! zCPe7@Qog*yEMGDxpQhXRqmPp#r^Q~QTKcZjGp2$DI0X%#G-0Q?hYkAKl4D3yfw&OY}ZgKa_52y5l|>epo+YzNEp zpgzEPcT!0w)hmISnR&D6bZ~X)@qUR1D7Kc{@L4qp@0f?43F1dUZ*dGUVx+yjNdgGh z(&@mJ!8#b;;x5{3Ab_PWbYq+#+Pzuq%u3~S8?)pGZ)J+@1nB{1g)TCE@ZZt#I_}yQ zd{hyNS>@Io;+VDnvb+H#uGNYD$Rb)%V=d0$R15kGGYXN7uEK0O4&awe7M*M#CrO&QVAExE<4;k@oWrzwdj zPP(fb+NIQq2|RkH|80RJ!!4<)E2C;4AZQFqKD3zj;rIYv=IK!fTEP+~KMC5DuB)y` z#=}0oBxr~XU~J*>o3aLPD6uOHH0Gml^afk?Fa$;i;D>%4hF_c%ixX4FKZO1koeMmi zmmBXv5igsZb^qz|a_G`0@E)oHIR2-5W+}B7JRiPCDB&3CR1ay1@GEZ7F>hIB=kCK` zRlmgkMGyKv+IG(!bzhM?nEeNS5U$8Et&_(FGe?GyiDGp}aP=xbFN;hG*4V^IQr2x{ zhg{8X3L;Qq$~IrEgn*fxpg@%M!F>JpevM5dhGO2u?Vh<%-`-5+m=NT2V*miXd6&0m z1wwM5rHwb0!YC&4yk38DvF}LJhvWUN+2$%c>F`f@_NX#vM0jDsecJO<2_UnxG^+X@LySPevh`4P%G8p`9#R2Ss=gO&TJipd zcsV%=Zg$x@IiK_- zu0pO8Aco7o{WVvg1L?Bx)jw|i?7tk%-yR-BdlsRKtbJ6^5$`}fJmUKYLCHE~MRtR? zGCaN2-0imp6#j!Pwj0}O7{+V=^C9eyQ@YEu zQs;)YQI^x(x>$#-v@k#{uRHgGap{{Wlea7Pq(| zU02|U_5pNW+XsZqBN)lDAj2ma=HELH();#3r~t(QKpN?#{tsfRh+!Wx8Xa>MAU-++ z+K4Bh;dgkr-c(jr_RY5-67)(0Cfs2F_&8%p&hL5U6+A4e>vSRV$nW-^>T9qsJ}sF_ zbLd@8qoewJmK=X%`mMJ~t8{1|8ffjJUt)rA@PTtm$MF>*mu+sPkRcXa;(twEE9y-lG<9tHm6XK(;#Sj$hbePRIMwL5TbpGFglf|ejP2jC+iObxW& z>4)Bjp4RhqujR&I2nj%=UIFs>gsQqdxSR%f;x|MhvT9WO5*EpgtT`o(CY=8J68{T| z7ts4J6d!G{A?-S&;}Kk}v%ct-sCmvuCACV)HR@tZX`|B%s~BwiZpPTd?7Vliw^a+% zJ$8Pa)jZtm?G!bN!+BKRZp{EgD;duZA{2(4%A6y#+}lQ`ao!F6_hd+?%6y#1NyjDVodD z9S3<-R48c#pg?mDD1?p-4}Y23T^D*h719Jc6hJ8f#+0RWzySZl)hZmw4}9|; zyFcLo`t%*N7%*tk5uF$cpIKea;oUMiIvRS4i-Thpx_Yss-u>JU-S;0a<*pnJpcYNl zA)Aw}@xBB>KTIh1^#P*`0!k^J_2BFyph*=5`ZFJeL_Sxh{r&yz+>_CVmn`hAvmeQ+ z$#tj3G+ij75Qq3rQH1W6(XIi}unp+K#>Lj2PGx7GCvRa5)DVjYDF%t zr^Hl5WyamHT2O8IqgY4bLy~GM;d*m`EbLjCAieO_f!v={%(@x`^c$%C)atss?gMNPdjj+cv%_dq~h4umtJ|+i|=E|G^eycdo$o$-fj@ zk5wLB53jm5iblSuSq`}{i{%NHR+!=E&DOhc#i;xx5zULhwYXuW`f1ftLKd?r z8;R0QL5Al6&%@oOP(g&$c??guuc>B^?dr!l zfI6x(^a0;clnzPAE3XTAs<{2uA%kKszVMi1j>K^uxiS8OO<*v_G#Ti_{Z_=hDuZFS>^O+dPW@MH+B9t|vik9-inAZVBYPy9ol`_$AJY&vIc$K!Ge(id{<*pok4eM++VV5!%fQ;*5foBD+OyZIa^s7DlTG~eN&G+fl5^wM7sy0&zbQ1bm!1Get%Jr}v=jNa-#MZ$4zoj;RsdCf6ZV<7Gk`4&AXog8L?DD=hVtOEXH44HV6=3y z?k$B1Ml8R9?|~HTL4&j*?C8h_*k|is5lAu%3TT@3>Aqs0{WMZlQi@`lt29^W9-3~f zWo{Rdl6u)tYMgA=?HPa`qbhZ)l)O>ePrJ*MBxiW5v}jFhXd%UX{}_skBT?8JF@klX z@LA5h#*a%_<{aq-YEog1nCd+fyE1PcP31_9BZbYXlkN~fX1&+7gWze>5M0j$;bHTo z9@z}S#^vppjk2Y|y4x&wk}#v+pE!UbIy*S>lC-TRSKo}9H_F(;c%M|ZnVEFRouRK6F9Gax z1hLNET54))-Z%n8Y#o&EPWa|ZD$HG5%rsU$lvB?|MY3VY|&Fs4uutCvg2y;s!$kMz5 z7aoi5o2Gjy((`V|UAP4?dc-^qe)qSR1)DfbI(3nt0IUQX1#nEQcPD4Z_lI3YMZG#7 z$o)b}t>(S@CZ3%>!C#NJupdfmCC3V0D>O4I!Y{qo{$&6UW1&at?e%6wG-oD7`HL@7WDxtLfHbp{WyzgP~$rOv#rjxA7`LoA_X3vO-q87}@N8ZhT zflI$g^e3I@olm}H36yzJfu~;D9j3!>4x8)Mdh^VS!2WfEc)d0BN5%)J> zFCRD|&)d4Hz!ikriv)h{W*?{vLS?kEv2hXU{6LsUu~hkFiEnbkc>#40?b#FHo>A9+ zthNB0PYTE2_*hYVCnqQUyt(AY9*Ab#7(3Bl+xq^r`!ce;xN_FkN%%fajth2l6;(g- zM&FXA5o1Ef=jVGz3w)$xWbWMGuw0$5YiTKLAS`zhWt}t3#kj2TXdp(>Ei{*r2zpKX z2srPI7oNuh6uVE!xw5kIE9PZgOua&{N9cb_inDNocgKd)?FQ%_?>snIKnM=y{m_Mh zwdZczaNAH0U~IW=R7o+G$^bAOBsch0eH~XSL$Za z`{!S>p)*d*eu2APxca%JOb-u*3WC?2EfMjtu}82X6f|MSfT_W1K1kHK2!P0a&t1^P zByri1fHuZ>vP2U=AYgLk0q9X;Auu}n^+<$I=h^ny{)xK2_k<7Q%SM0nV=wQ6SE-ye z-1&ET`psfpgZFQ@qVWFk5Vh%|P!7 z^7a6cLz!VwCqu+3O9+BBxN)OAPQemeZL%?zsEnnYKB*(2=B) zb%1}op$DNvvOqyyfoQ}JS`}OcvbB@$rUXxG(w6*LtTXAe5Bgz_llk8Cl4m8AgGQsd zQgBMhgp=)5Q6={B-Q47z!iEbuusMe3SG6hUjiHPo*rWaso^SCH3>zy<`}V9T6z(c# z%fHP6R`;8hr5k%D0$(iPx;h3~oF#fMS?HQ3Z&84u9L=VH5`db$+7pKJze!dXsmOjl1Dp zcp;irX7{m$80=9g9{X6{{99{@?dcg_L4K(vob< zKXct4lVlz%mo5^hvNPy?UO6PVS~F++)Sxr)HLRQ~(Q8f~9sOuqzaC%MfRDeAu&jB> zy_-&ZDfOR%MUr^;nog--iVXc1nnXCRBdf(|ZlT|^AQ(SN;qgpCc&{=8TYFUX4zUVa zRaiuTc}nAl#~+=Ra^lg3dttBiNn=x$!QSHKNjQwAM4!nSrAJ+9B{9%TE7oH#sb!?u(PtzpQ zy-wN&klx;u8kv0VpB7M4I?XVT)RK7pN)BPR-D${%YnxK>og)RtYS?kzO-kd}x+>%5 zojPnkX&-*@WV=q_#4cZ&LSqZKh^QJb48TS7DB@d9?N|oa%$2^bhu5F(#HpKW$!iR? za3_%)MLyI~0DslQ*kDICb!)R7p%`CKN4^RB$t>oG;K?6~i+g%J6c_i1liPbRy>QZn zt~=O|$#KoVtEed!StLJu0uTJn{z=2Z+H~M|wl~D^_U-a=0O*Ewz>yl*`l^sm6t@Ee#A5Pn*EX0R|Ow$ymFLJi(0@5BPS=*-uMzte-$ zCrX>|AFh;_NWp2;jXp%nF00d#$6-j7vDMqt`CA6L)~@l zs4&%5vUv!OJyyZ@P<@fkskGZ2Fm|{GXx4s4fqYsoIAQy1VNnY zohyhnevKrH_e4D>dQ!AQfds0+**)a)nZ`!JqnBLRG$%?ExZzjZyXBxup3<9d3m0{< zZcR_879>$n4lZn*Dd>1t|FWNiVEOp0x>IgnXJrH#Q&_EQ-l{0$k^g4F0a{j;Nq%ac zMro+rNABj_%LX)-0>DyCOj0maIMKZTjNAb%a*~o+T-1~9OFXL(xDbLtZHQrQ zz*x5w?;@tkbS8_C)?PNbJ%ue0L80E`edj!aVB3ph;$lRZODwL@a)4A?H^1qnA^oj^ zW^7h|%Ihk!k?($Nysn^BK-`BBg(d^^hF$Rz#>RBejbEN0(&Vh!@<%?=d#2+-er2`B z?R2=rH0FF42(DJQ!wI8HO-;>C7$wJweyxu)m6|?`SirEhyQ?eYB)GG)Gt+0YtwIbP zhpz;M@0lQ3Rt}lb^|%t0<4krxD?T~#Zii@t(r2-gE#Zbebek(bd*7?d>UaCcT9?*_ zpEXv_YLcB)8np7MsBBm<-%mGAS>uP>MK*!Am-+H&E^Ol{n7qD8}+yk^ilSWZTj>oc1Gi=Uo-wAr`QI9~t@R;lnFPeHjW% zMIFrg`>O+@E=7_Ie0j$42fIJuTE5Sw=dFbxz|jK49gY6c0zh#cOd>?^R>Qp92coBw zfBbmTFarUtD?WF;JWmPoWltOkgGODQOaRIz8rh_ z{BrZs@$!)H*-wUE9Xki6+oN6y0ygZXFKH^Hsdt0nq+jcHvjdI!`c!Q)B1p`@pqSKl z2;5?UxC}>|4z;FJeL1&3V%Z>gDnxmIu4B+C&AvmeCEYK{O9VBTd2<**B5agm=+^C> zauO}y-GD&|8|$ue+Kq*B<4+tU&~`wAnwV#0>^@`nWAVms!;z@xlmn22=ujx8Ljt}L zD>{PzEJ!Rd9V&tm!bL?zw9L%uAcjWh7EKGFY6%*Xgrs4#dyEg5m_p#Z{5d@Q7!n-& z9i-&?BKW=GD7WP$BG@IZMAM1q$K9?MWTxZID6vgxFt9AQ5}Ej|F8+$Y}v4o zeHaE0!QZo;6+N0o$6TTK$h9WY{2LICGcJQyi@$vNa^v+BYwxdLVy0^W?LXRXEcM9? zFl8mSMWPWB5^gl#Q;)rOEg=6ZvV)%yosyz)C!s{*l!SzvWG7c&;QaNLnpuUOFU*(4 zvDQ+VAq|ffXsu@l-uC0o5hd`Bm@Ib29Snc-xO6`SVeM0nJ2!v+`lWYS*urohm_o1m z@p7B?_IBy4%|wUE_AHfb$Hh3K6s&Rk4>2*VkV#;6c?K(a7uIVGf~n~G$TPN}lp$ZD zBPFb(cDPhkB?wKCb>&%{QPK=pG3OCyGB|BfMk80d<2X?K-Q@4W`#Zxue1eQmd{s4p zB-W84^TpX3Vo|WY9(O&(l}&cCmp#VQu;2NJ_x#HzsT7g5AikEQPE07o-602Wy{1hN z{Gtz_uoz%P*LK@if#0aHv}T`au{*H?s=e1HCPiCDQeh-O?ILXiSZl!7IEj@j{H0(d z6Tkc*+u3fE?AFqVDMGYsba8eJ_ucS5qFy?+o9EEtCEBz<^S4X9qqn`9U8ZL$BCDZ6 z_;c3|3C`sr5|B%|+s)b@9Z(y@@n8Klue zrs$X$8(>E=DOKb%u=9r)Os|Uh)9NIQ*9lvO19iqjN2(EJ*qWUSN)O!;K|qI48iYE6OZ5c8zlp;jIY%+@xx0E}F4 zyYAZScuDBp5gju^Fz^zZfde;QC?}7$b&>MQW^cKKyFjurLWda`cB!*< zI|d}4aZ9grCjp1eVx8=)1d9jA(FvnoM081aR0iL3yz3nGa#fCNEK8s!UlNij(x8*I zn0x$f3Fpw(60M?&h>8E&w?@iuCd)V^^ipUtNS&gCW3aeywj>Cgp}z2=;OHYDc%Fnx!0{rJugLx~upd-cOI zpJvbd_x{8jz`T}VI@gWw9r{1A>9dd9!#un`6I$hAJ<_u1VLLEzf4X=d4qj>Y!-18) zj9u7G*DT?IA>s&ZwWJh3WV(!Rd0e`PZbphh^_ZK>L>&MYZdhwBa@0f^*f+21&6;U3 zu^IRPhqR{W;99m=R;K%!0>02gY5j<&t4OK9ag zgj*iNn-(YR#vhnc0Ej$5MZ^F!06~+hwFRwZ0ga1cPm&zsrZyeS(S-}=?-tpxI{~#0 zx@1IVcB)iZ=q-Pz{Q=c0>!P}3$XGf`x6M7UuUPnM8Pd~-IKk}L2{{QjP#$wjXmR9b zhN@KRVaEg|^>U#|Ny#<*h zJ(SgKEuL@Cam4mWAu-#&?i2*uZL0&>BgMu_8AESIil|KT7C{ZuvS8iZ4~G~brqJFU zq}*H@3={%BYf8i{v~!#JC5cJW+@+wiGuO&Dt)a_&jcwC|2?<0*7*d^L#dq}ldAIKx zgm|Cr^e&`!d(END40j(5{c${4KH-ELFRGapN%6>!bri?}Rzc+%M z>fr#KcY5*E@#$>V^N(u|tG9Llw+gt=VaRH?s{F|fdl6o<=VYbAll5pg_(7A###Z#R zM*i2}pdk&4v8id$SN(WuPtm%`brKftd!s{5xsAOpScIk}q_=!hBBT%pzuxOL^Ui=M z@wyXpHup0}L=ea)A?>ZHi;XFyb;#+83?RL-K5ruCU!VQ0{A*iz%44Vxroqm0V-&{y zAg+e$P#dKl;nSQ>8B{V~O1Zv@s^qU(1U$aODYUmR{8Bp}iC6GHNXzcID|WMEyFqYK z$k9~RsjJZ0y=HwO*2$KPf3<5TpW)AXmhPwZUM?+uXk%eA8jW^;w-oWkXfQ=}Y@$Ef7ya zXiJHVXIi)iX+bYf_Etn)SclJ!cM)09pP#k~Gkt-k2f%`np%)pN66O_{K4M6S8Ego) z1&LAPdoTz|?qK*S;`o3YDV9yYY=2OL4?5kp&Q7=)tN!oL8$U{L|N_v3(nx7jXV zsu6{^fie~JT9|YEt@6}!2htb>M$MlICRH;haGx)5S5g8vmkPqDtzH9BI zKiMJl9aBfi?3OdtiI_#G%^-(_y*;f`0rr^&NF2s)qsN|q0M$=llb2dMPmXnLCx8IgrdcQM{!)f`mA3Uz& zj+&!cw81JkK%U^aw0pfgp!Jo?DK_$ge+H>C)39!C-=a)O7&LEpRC<`V@p($ z%(0042QKd%!E51L7jvlj_n@qupgAM~_(9s!?XGdK$-mF;Q^!LEVD-1PM4*s0NMIIk|EZ=g&SX~MEwZ+#j- zb=8uWb5X<|ucmmp+Q(VV==d8;@A!CpN)nt8yz15og?Gqbaq4hW)a+;~k0i}n6zKlQ zw@l*rxIWvS`NH<#6@`3JP~-x0Qd@y(Ev9I<>IFt~+z|))nmx5!i zwCY36<(Pi%fP_TEXd;dt>} zH|Cs3)uYdfv=!xG6v$kco3MCiznO8`YN zl=j4f**ZlltE~D{L2krC{BD`o&5A%Z%|EtYRP5y zQFo1Jf=2Xvx3#`B9Zr^+sq%~+6eQ!NsVng|KU+!vH z<+H=${Z~wKH^ZL@saHB}lnkjA>Pg7Hc?iPKKWsJt-YGxkR=VAa=4RNTF?lcEg4iCJ zr{;p~EiLis_j$Ov@7%Oy;QpSQD>tZzXkM<^iY)#qrIC#i?e0ZV%U%6cR1~qlHgs)c zN|(Q7Fj4mG@%%pAFOANUMT^UycgsOu4NIX+leyBp>eQcVa$MPA@yl#;H{$M0v2jv$ z``925J?bHtN^`ifWY?(?A)6GL!%*92{BdX2u_BP>33alxgI)mtfqrHamU@lwA+kK7 z29eUmul&gry`>ABy~m*Yun5n1L)Ju>kx4MpXWkMgfJH@qS6_d0g{Z62-{uEt>Wm}9 zXj6W;(3$NjhQ+tFRaZrhsF0E(zA1{hVGG$>-=9sCF#37q=OJOiFL`pq zVP@(#x8XZ(TtC98a-JC?E96WX^Nzrj**43i|SjvQ95-h}HL15Nl7NC5*HOu}2VI0`G^V;fQJ&hgvSa zNy}kELRwl{me};lBG}Bnd08HAjJ3iP6{(_c-^zglhao}$vV@!FS4XR4KZkC{Erq0* zrTYb1DM-r<0dy8U)!PIKE8eYJxA29WIgv`otFNML%ylsKBN_of6KCuvRaSF9BF1xZkft8`uC=87uxoKsrR|Gn?5hCab)Y zl~h!kf!Tg6BctCL%LdY>XHc1!{M@jwT$q2x_GzJ?Wd8AvcVI#T@-VEa{RwAx`Gh&3pqyQ4t>upT3C*_}7(p2bV_pKB zYW06EwTD_|WzFuid91+}MYt@%Zea~Y{#DD}E*?bt>Aer~79=JnCe*d2kA26pK`gM| zZ=_0w%mR$mxMFL4zCXm_y!RS0`59?rmvL}BB!xCM{eFp+fOg7Qn^O$TM)ij5`bXk( zy2HC>DU4rJ$^vU}aAT0BANMr!xKp=Ip4@ddrD)94 z7CrF}GCn!ObQ?@oZl&V&jhbdYXTM$Rg4}S0o%xb`^Ote)#)*>bL{bYWQkkSeeeJ@= zLt>9lw6_k0tOfL2LqeUlFt>8%&ZjIMKg<{RhwH|ejKxd!<#V=(!%>N+TzBP8tQKVmfg5(GBpC5fb_yAv~99BFdzXPwa{7Ha5o|ts)?w zdPzlP&BhkXz1rkDbQI4fCn0AU1ID|1@`8#fyh+|p@)4azzY^6_LeC5I;*o6_!(Tx! zscE%;gKgoXFw;`C!%)U2DMX17i7;L4(Mc^@T6b4tEEOomQWp;>V`T~iUQTnLRSrhl z?C@+<1m2fqyG`VbZ8-ea@=jmy1-S)pq<}83+i#ULg#@3JtfNDVnWK|S^0}P+SrWFS zc!%UiyRX>Sv(Ykj4oz{o9-cIHSQ_A^WMcfbaD7*Cm`tNqozc;=BU^^vbCmxnlfM3u zhVk)HZF|MZ>8J9xva{ZU+oXY#i>kF!yUFg-WrjL$D17C&r2#%_R##dNf^NYjX2dN8bi(C+4P zxVZr5#kFbBNa=$}QS@|0?Rn+%Pa4|VBv53QPi#V;+Xz@dFK0+|5FQ8g_{u7;;96tU zs!&G6PC9F;9tyx5rR4OaI0vWDf^Tk{ zLq(+|-|rxed0}CJZGYUnG=YQ`S@6F!cDKu$d9x0mDkj&jl*=g&$ueZ=59AFSET))V z>}jt4RzNhfqqKs`q2w84n6z10)Uw0oAsU0!tKFk-57^jxeQ{04S4}iSh&TkWkJSTO zcvVz(oCQQ~E8HY|_6mN*&UmgMVAeS0=0M6QvcfGRBO|S#fHKN+gG9)=KgnjK%84UP zK#P%*XB*Y11x9bl)j9U3xd#!I9VG)nD~gCp81NXOb^9V zb@{Tw^GXc}#ShMK#Iog3oD&U{VZBY<_mk}^(vUlAF$zg_>Zs(ja3f{nAgwOBVkCbzutR2h*}PNquyrk|32UI{&;ny<~k%i}NHl z_6tWv-q?B3XgG@iO^?F~`rdcLRR`B6yPm{l-~7Ccu`)*=j(PT^uBMl6Qe`^{B+DPE zV&Dlid5$U){vE;FU)~@-=C()HkBWdiQFC zCPdMRKrI4U=qz6=i1C!M1Bj9vW(uk;LGSKneGjx=HVvjo)UvTJQDRg;^Z+3ppWGN- zz%sIa0&;`GvG;5n{lni{yOM;gS7Y(dawruBkqg_zl}N%`wZ#t{1$l`=Gx-NweA}>3 z;P|N4WhzP<+X#Ik5BMY$f@~jILB_UXJG*;4>z8p8loJgYc%&+eKX=w1{^@=LuzLcI-Z8UC1$Ec0-+7!t!0+St zqqiZz%Ut}@z>Hm&~?|jK$mdC^*fS0GQA=b~=aUcaqba&v!Q`rHXeZ+r>b_ybMt07uV*jKq712~JQQ9jrkHr@-|0?5?>K2W1sL zI+hs9rW6r&-BW>|gFioOdUE7lv9N#Q3~B?fsI9&G%UyOv7d>0gN}c&?`i$Ng|Foap zjV<%eqNfpHkol<*I`+zW%}QCpxm0*pxtVIuU_*qYdh^bVzDrxhB57O2CJJqq#o&Lxr z9kzaTQ_7veSL7Yo%_PvxRcTu^*x{^QyqTDr&D~H-Uf6L2MA8b=qj*ps7DG*JBuIqyK&WR9tSM0 zRK`zP^Cwy@mF5U>MWk81ym@1Ei?rl+5vC&eIH_LEquZ~ONH%+%e{G6b+aMnUiC$qpIx-bDOOikE@~d)kb2*?9=4482Su7=wng!J2qv?vtkHHH0pKqb zA7(yxA;xBgLtf#71`RgVli!)f1aQuFNK-N3KhU1K=J_@O$vxtopF_CS1@Y?V*oxy1AiBmKP7r=mC%H}fDC*^u|Gu|2V%#bU?}A%Bb6fCsKdGxv)( zj*wW##!yk}I7Kn32Mp6J-Ke@ulWF!!4Wf+uYC}(hgI=E>m1H`bNM3Q4(Nc~}-3}(% z?|S|9(T;&#cJej3jqPVwt++?#{|z{#fBx*5lXGy1!3;h{g!wOB?jwJ-ArKRabG-wq zI>Zj^nP0yme4D`G#_Klvvbh|*K>(5<1TP2VY~49L8L#}fo&axmcXy)*Xku} zjUf;&9nfutXJ7`^?5Yx+6KfhlRg`nFY>)UZMKN%Eza_n&-8hMd~RkGtV1~yw`Rs?VWhzZTJJN zXWe`@MFf(w%Dj{E&K>3%iTqNhZO=3&ThNQA6RnvhcXaA?E?P64g+fJGZ~qL*bVvVw z_#u{dH3_SsH+y^RXriC%=}R~e z=l|l>rn;;JuwYrMy(vKr6)!^}**wNuSO)MZkcQfJu|XuOziTc3w$@W@m)k_F&#PYt>0{d%%NaRMP2|}Pf z`Bx9tm--?s?jHS$DUVl%<;P_;mkk{;umFzK8bU}fMr%FF5pf+-Qh{YAC{dtW)-S{_v zV#C-26?q&U7p@1J6EeWO!j%jXH?YdUmiU%mLS6gl^LwE}oIl7KXm>wA`~b<@ztwPJ zpYH%0b$AN!)cnV(GisfaUoman-RaO1Bf`;IMJ~bt!bh*2vPgc86&A(&Yi%FVC|hrq zFR{NFW_?%x00o0+8W2uh=rEQmLR;s;+v)3m>eqT})Z+EAD)#$Nh2JuZTIfGNzU_+5 z+!&YS#p8i<+eKKamxyhJV6CW|8c>PgOefOwmn64;u>R_)rJ`4)kft;dS7bYr^IpZc zdM8W3|L*H6b>Y!y&iG71m`qG))qDq^9~gU_CRm<-K1g1}97*mY#Od;!)C3?oZ^X}Z zzKM6@siJbOzHZN{p||tsf_pv{M{>(}_I9g)5kxX%|EvFgyKZVX3 zQW1B-)f2d_ZM8}jdVciuEJ2%PZBlSY@8?SHd?3~tIdbK{h}&2V@#hm{!dacVn)2A; zmvmA8Xk|v$hj5h?Gntb_+i)vK7!HSpUFAxE5uNQ1cVYzX<31n~>~1Hv);2Z@6}g~4 z_2#o#1ZgI`Ji*iTZ?2FE452UVKnDFKLFJ1c`DUc_^rt)4GPt^jp{Ie;9--xq<1o5f z@Vb{AK==;8XyVvk1x|Fs6sTJ-lkJ(k?{Jd%3XzJ9~ z%kL9jdb`YD7fhv&v^pqJzO=XMcXpwq7!IUZYg*aLVnO5h*%jG=qNe#yzv;d=hB?{x z&;gfR^Gt&lHwCp~Y7=QwOytLQ{je#oG2&|Eod2SV6xXZX(WLMB4*h>l>86!+K8_gr z^NElzQNwDm{>AoC+FKIf7aYw8T+66-kh4pE@n#_#B`no9rL$6R(=aUWiTNi*l+(e# zPI19%#{X>M{ZYQj-8*!nnPatclgs^*fzy=!oHfcMHI`D+swMoX~gSJ)^|ab|garNJbHR z{@&WRe@pLh0lvOAs?f;9z%U0K)ii|eOAgsx^{kUV4@C}oN=u})XkEgBA4^<=oy{Dz ze&1o5j!0(Ok&7t`Hx~ajGiD$K_lh5bTI)_Qs&_)%C)zT!j+=+mpC34;U1bvT`+hCC z?_@}1j-IwLjst5TQU0LQ;%V)L$j;Vza6*2k#7gW@@AYCzJkiyI)bv-_g2hpFlM0se zF|%#Vfw@D8+!SRkvQ!%#rKy=1I9&lQdpHdqF04TY#UxU4LE56XRJS%2r;7J9_k1ZP zHrGV&SUdAR=VeYGzk7={$3!ZDq3P)XY`D3@(<`)pLE_be_Vcm#5R;H&&N6VQbZfMU&!F-&JW8 ziF){N?=w=Rt+ZK8{yqJIrvC+tM?l*MOl@jSo-wzn1wqV`N9BmWf(y*R$S5*8+VE0S zsV^y5LM3v{WFqnCE|Onk_&DGVf4;7F36{PSAPcAO^2eNns;G>xb4I3ezbnv3-;4;Q zdA5rAmgn1;mEaC#WDlh_plXci#svV4|KELb#~Hj0=Q2RIY4b&kY6yi^@hw^l@$! z!C}Oq*L3rf+s*|-=?kTr{RBd57fvAs`)H2ZmB@r&rau!U#X}@s>dUKEKgZv#@3}VL z6tyJEm6Zfonqu=-$BKItGV&jg7+-j~a;_LTnrjAfm|mAU^cdX`J~?!goNm*(@7{q) zSLTNL;sr+6*x-A&`o!y@>nUbahVjB~*ScclM&}vGX3@+uoiQ704=ycRrI%5}2UN03 zv9l&04caNZcbkjMta&qPf3YH7Qmb;CbWCP&z$47&XjuMqV&|~;yBkv`fjW<{^x%FF z>($(1GaYOjt>xD@UO1Cv#!u8v*Vo!sT4Z$u%|3Z#k+WHxd@cNs(7oP1Z#nh5^h-%#vWcy!0L>Q?AXYZl;tKeXc+AY ziJODSq`BR%*Ma22O!cpQ6;2SK7yROT4Q7^P{dxwxcDi6uhAy3)&F5n@*fQ7Km-u>3 z?DhILx1JLzq&TJ^u9zUIcbl!8x1-g_gBm}xT^3eue{o9vv0u>r+ejy+yqrry2vJ?D z&hy^uT|&t60A&4|pTEUEw~LS!Zj?@evjKH2HoYC_^Y$K#sbU<6UjgUGqgSt}fPf*r z*!Gi+=R^g2@p@4QA_WB#y-{??u2M^Dh)pi?AC=*TQIeA{2n|w<34pyZ{5{{Ene_t{ zfNB-Cbf2GQ_SM|J;VJs2L9TS{hG?03Yn;>U_t{SSJ6YLji(w4gNj3uM#xDsr&~UN@ zZlfn=;gRb7I664Vx^K|1`DHolqt-_>-qpi9@x0h?gU1y&l6}y^dTT^y+UOsQTXJTx z0OTN6f?_;;#2!L=&XY-CSSCbgG!gGnx_19Fl9Y~)?d+C{I)-Q$Y4pgeBt@f^Gp+r> zx&Es2%Ww{JqFCzO^kMG0A`|S4+vsn{uLw&ii^%>~?Tp z@W^vG*na)h57q-hMh~Rxvi+m(S1)#V`k=B z?p~ZR#mDPN^M|&obCOXfwf(UAr6L?DUMN1%Rl=?Y<>LROO+`>?%_JN&;w-zzuHztZ zkRI45dz;i|oRRq0zW}^npq2DIi1gF;IJY~k2C>|*J8|6n4`(6WhU=#W%^)`iW6{lG z8f({oVWk~@73nRDu|@0SvPf53Q+P^Dv~Nqr`_71je)e0Z3_&t^KI=^yf42_(yLb$r z(1ypjwz2|$77a0zP^-JyxuPZwd+0|=-c>X=2fH_w`lmw22?k@q2G`HEge{BRcU;CZ zbcT0p=m_$D86TBa57|vzN&jyhlinv*bT24n$I!kACvT;V6}Mo&MP$+|q6TA<2tEdJ z(9fCz0pnkkr_~T+G&(B(hBgRYGKdJEWTdvwl?ShE;Z9)Zh2VJc6-6F0;{f0fw8;aj2 z;%3l=cPxlOh@x=vg!z9ci=_z?fLF&nPSe z4~m|?57ctu#o~pO&x3EiZJm3lGG`ID$!Mi#AQ*&O8?pSYN}C0+V+qCCmM}Fdmc-_o zzpfjyXLMG<;dl4OqzOKIG+`wM647Waa7g3Ge6STkmi}KUPx%{CSppA`^MSHLs94Lk z8_*CD3?I48R`=qWG`@>dDOa7WX3xpLU0PTe$v=1Z=yw4v)WI5P71`O@K@}eOr0BJr z>(bKF*ee11b$=71rS3$<4Zzu<%=6WyOei3|WnvoI`e9+A#K;wsDCqq62GhaMs--(G zuhLv4>mO%hv!l>*(Z9BD7`t?N;L*5~io3C)LRvRoTT)$+a(ccMIv5yIJ!$x|r?q;L z`mMHyf3(OY-bStdx9n9mkn=cApv9WWX{nNkipgWP-fC_BARuO=;v!YX&a3rT2D-v$P zSstI>T#Uu(4z@fqg(bNc*j*z+8F+WO zBbATeJ$;fNi%YMofJUC1`Qa?)r!-s2LlJ&~MHhD)8wQ!=6DlUAi|eYlpe1<^2%Pt_ z5NH?QQ-8V7x2WMiZ-*xp+0+AMg1q>osHkkFrU4?Zr3Q0kW zZIW!<%Kb@*F0F4x_DCH-C|iD@*+4^q>qpK;`KV)iM%TRjODLvD=gYD0O@2-A6Q%w( zVpUeI9%bso@f`AE{Cwszl7EoJgSp?I~Cqb|uVNflRm)uNh^h|Ym^|F=viXzL~H zJp+Yz|39RPzpulUb3@R#*YP@+jki`_ z`od?&Z>;CHGt#CWc}`lUwGPEg;(uFF8^T4o^9S&`6DcmiCU=XzGea3`u1SQr2gFvM1o0hFnY~Sh{bRaD64Woph5Wd57hG%sqX)Y z^rXsDyCbyJsN#q`81erNlPc7u8p*{;FSSY=u?ch;y;SSL`^-!8et~4nFaIm|jcUZf zjGWhobR<4|qv5bPx9tFCm}ehGo(sZy@9`$Cy=K8}fGbrSrE$xs%akqMgA$@~{{^5;AGD?PN22oT=?gF2KZlOu)= zK*{U;Wdh)$PIn<_M3Y>9OC#8X&6-nl^J*^sQ(H+%WYO`?KFD1-SZl)$Wdvccdtzjy z&98G3^t}RkEi+r|=J4hlnek6-B-Zg-a{^X2h6XmmoO<|9#%os6AiK?0iv|SW=WOWu zZ3epe#M)2lB1x2zTx@yFJ@gUw6>{vO_@Lpj zgSH#VR%=O0ew5$n+bp3TVnmT-fMY~INcuTwuJ)+Wg~0KU@U0LhW5$6 z)qqhv#WY;shf7{fzgd)&MU$BZ?Orz(4~sqX_E7B^lZHq>NR9q}PsmFu0>8+qyvg}1 z==AT;LKu41|7~j@cI8K`AUtRgPn4m80B>ZmM-4Q>pkA41($6MZ;=~RAFfsas5_Rb7=7J${zHZG&N22n$ zFEl!~qI{{;g0c@YrnPE`G0}7OcgqLNn>UPJVvr`UYBvpx`0|-HHocsBI)qT!ZMMb! zE?(p>TFrj;lY;F%RN1E`eJkRMIEYY8Ae-bX%oC~n0 zM;?ps9auNMKqCI%mQM%CDB$WKW(*vkGO%ssJK@|9bE6GjT#JS0rfjij@xy+TyHcM*fmmky@N3!1t>C zBb{veO0Di9o~%(~g8R*|E2X#?2f9(nH^3g;cN9dZx!(=PeUXVN0w*0J87e$H{EDc) zJ_R6j(}-xXz!ap7c5({!1*Fzc;%_=ji;I#29i5%QPY8?$LaN*|M=O`^EXfOSWW8B0 z>m_o`4~(vM|0ORF?%Jy{PhH(9wYxci&t#WrOyk}Y*cWu#N%-k_N?akGMs%pXT++B-O5+`9j` zLc1X}At);g$_#DOL*RiIN`|ykGc)~x3xmi&ke%ldGg|H~E5hg{HxMGoC=-SU5GV*R z@$WQ%i(`EVn&9hR4?z)dbv=*wj*|TWAGX@*Wb)S$OF>|yM0@Ry*H4DduREOI?HMVR ztX{(Bi*vIZ;)qf`E$*pq=2&F3W{yXD;)2yvyt2_geDVl<#t1j!AG!#<)M*(RQUmJn z-se{z5Ol<_K)w)qg+a(ax*C$ne;`45%P;s@IUbjT=_!u`Q--(vKzWpL_=4sJL|kWO zDSEyPH-jn>>O%1EV5mV|uGX)HqpqVe;GMhz_C-1QpTad!07VQas^FH65l7joA-4F{ z2N?&Dpid(n#kF`ZT*bkEA7z)e%eduh(vkaz4OFX5e`i1kH-`H^-LrM#dtr-g=(j}G z{F9Ei__h>p>>vNZpVfKWL+Fh&YI>(8E-^*bm=6lAEvO&B*#knm1Kxl`3GI?CDI*=j#Y4Xo{SK)j1C3w3zukpN+{KgPdOB4@IgO&X z4$seVZL4l>&i4efG&w#_HI5$#!#d*6t1X+$Y0QhaTdqq2t_uu0;Hi5##!V7dLE!J- zNo`@qU}tfB{ivn8{-TTL3Zs8POCL>e6-;F*gP0FvbMvHvF0k-y?E<;Fjpwn0w|96r z$BW^s%NSpCbE{_ep8FiJ1--`Pz)0)mMYhH4aD0J;IN~FkIjq%Y@FL4sclz*@=C-D{ z(z%&Yss&?$vmu}Ql-eH;#3~^J`9B{We!6!ncO14$sxgo_eu?f43IAATsZA+p;ky?k zaXgUwNZBS+75Y-4lxuDUa)v)E#Dy%!3?M&md(Hp$I!TDcf+dIZ6P zXrc}dJcx**LNmffR)kUL$(RrXetyZH`W;>R0U4KA#62NVz`+_s&d&-aphQH7kA|yV zc#jhCqWBJ2@#_@ZCoOP>*3hVD{56tXx9J7K< zc2zoGV<)~z6Y71t7CMleQ|*(CtAF-lQ|D$Gb|WWV#Lj!kM#1xbV|c)lW8Y;&IuOCP zPN!p2!YlUa#@65mw}!B&-JLLx1Y7=)IbNCcZ$Dl(@>_dm6)luhZya%?;=T@NwEZ(e zjSlA)b^`&V;;!vSBV*j~dieX;RsCk_EA=m*T6Q*W`80TMv^*kc6%m2pme9Em{AnSW zZ`kF&6>m6-&KtCH%6;qShL_MvD1s839spm}ZH0IfjBZgOZyRCFzYG7xKExU@^nGSU zph0GWEzg`d{;7>!#~rPJS-hpBf3yHdG*U)JzkPhVzYFf=Ri!arC;3#fhIA3Etry@A zA8m~7p$%wLZ-b_gZ{z7t7iF2e9|(VV^|@!brvJ4W9xNRjCfnMp#4HcFg&F)vJTBhE zQzLRk%Awq$ndqL|u>|W@A@r%j$L$Ky)RfQEQvDgJ)34x_+<&8CQII|`oz+F{5?Y>C zw18dFRSHjcH`rkUjV#CN%#FGZ0TYv+)sxB|WBiu0aK;9Y?tGHV=FEJ1WRT%(Tj|6B z_2l`O1)WBcZ2ECFi>nrK)}KXd&`!7&$xrg0cXLm;2(p0Dk?HOQy*f8*J*}1><{M#g6#PpxuQjjjimY2sH?IkoPdll-zZ3m-O@Zy!1B{ zZaSw97{t8Vp3ejPAAfm0@7?(kl!9T1;UVBIMVlPjoT#+Y!s{r4GI&8L`2+_+iNfW{ z1i7LppPtfgLo8vm31YGf7)Y-iEwFgBgGy&*eSIDgCRx5&v4(_5kZpw!#TKyL4}Uk) z_ z+exfDTN#NznNgN*>_4d)>>=Qco9csv zUJD3~k^Man&%f zzRWr8-Knn_N4{4|bG8;LD^UW{mxIXN~GWT)NACkJMG#ZwR2$PlUSus zwG+kBr&(!!X(VVpC5Q2jiEz<5j0$r=)~4%P$jjw z@vi|AN9)OFs-w@jqH}PPv&F^JB5?X?cc~NQcL(y_qk15%6|X8^oV*@# zIn7|PFeByFUO2;_lV2xdpX-v(N0Qk9<=UvJIi1+Dh8dyQ=*R%0%<_2b^3dc=73!lP zT*0y5ck8WxpK(-DU+21dc9LshFw}vNF4HGIwvqH-a^0Hdn-Xwbs_>9OcOM>v7K?6-7K#v>`?}tGcK)8^T|W}e zFa7$k=CfgsjOjF~I(e)R$#U5JM&myms^*9VkEXrW$IF!-hL9K0#!^=u4lxq^AU&Mk zud~oHVvDfl>*eVZu<2{qzFvpdRFICD7>lYPM`6cvh8NtI-0O4|hl$j2{TKTsm4%Ne z*GhG5LeyOM2aUE_>ehF+L=FnWx{eZRft#GXyg1z5&-bX_TetWu7r46Xbex~;$YS9* z_r1ujSuecyqT`geU<(*q>Oa5XfBe-k$q9S?o}Sv=5pR88E827Goau5C^RG*N$)~Kh zVE+eH;s?4vk@8M4h&VSkX0y z77+d6$eU=GfK)9`eisP_ZvpS^y5%x82N+MnQ=_p1gUY$#LVed+?Br?8%WX`A>D<^! zI2jSLyaeJS?Ugd4kL6b7PU}lO+clWyi{7C}L)x{89v7{oKM#Y*A{@Sye`dC$?{9oN zjH`H(OjO_9WOa)1t3dDCT52^>U`&QTDd7mZsFtlBKBe8*%ee$MjaOCSFS16tk+4}# zWEw}WVwYmp9?$(8k$1PX6plxEdpgeZfa3=g(=d)jC}UJ$tLht0f7u-rsZMWG{Jj#h z`a){=wEKB7`b)x$mAn#P{M*(AtebRJsQvvJ@4Fl#udMzO8rBTlCr!;TTl0RET4+qwU!*e6Rhk;2TUBMBY!C#5L*!_ifzG`aTza zYUw*}(D%?Y?cR8+a7i&A@h9_K?6VDhHO!hCF1MknOL42EB=2ZV=e7}htWPh@X3$%= zP%#wex`dZ;@&W&XKBt09tt6XGKf5sHHml4`@LZ0le_K`;{$SHu+^ng`_JF+FX67oVsU5CrY_e7sy+#!HCdkH2MV3|iibJM)t?@n{ns=r4~UCy5xYmKOV@3tbU z`CU3SH;{-z|C9Z0_}7&SRdIs@TU+n@+-8P{w{*nCyCqCsA5i<_!an|*W;^@>HS! z%~s7fw6*<^mzRf%=c%3VFnNvqUeQGjnYOzz=~zB5?*HNIJ>aQ)`}lDh$QB_phsc(d zt*nwAlB{HB&uq!g3Yi%pMD`xp*+u5DN5%;ud-MC8zR&agpXc}gzy9|t&WUr5`@XO1 z`dpv!{=DBSbK7n;^Io>V>~^L_=($Wuf8x38PsMIt@-vAFE0qq4*NTzJMJ6aPva1I$b-VVB+ zo_b?g@!W2mhjB=^1al^?1k-E&j$qq5$z;^GosPz8u`ibr_K%{*1;6yWx7RV6VV9AS z%D(WJ*ff(vogCz8)vur$QwiAr91oa;;_0;twJ!Fc2JyI)CtjJ7kR*=JN8VpLO)%x~ zuevF?TsxWCYq2`@iN357)0R!QvaqWX%H{my@e41e{7*XUt{Q2wzeI}ptNPNUp zD{Yuj8;2vqi^EMXNTReI{ycl-huzb6Ue;Arh{^cGd)g&%kgPT^r{JZ|=gp&@v>@SD zi{GgSOxH-=M)DK34)P41?s8U`O*(!I3dR;ELpT$M#a?KUvUorFDL|ZeZElmFl5%>B z&`=ro%~;8NkwK$(_Yq;VF>4yJ<@eZlMISqIWMkusX3^2u-@h=i$oXBM+8YF76l(Y+fqTbAOp7L^NL{Pkh&KkroJsBj{^_y!^6 z`0^yNazxpT_OAX^E&{XZoe3<8SstyJv7 z-d*&6>^n5I{w(PfrIfG#@HIM#JUoqeNBaF<2FGccCZoIf9gP==tt*Cq4fLXM#$5l8P(Pw+nEbN zrPV=nCNUoV)9pIfZ&Rbn4qbIv=%37yD@#`>Bn#Bnv99p>iK*>NEG{CW=k93g!zkcGS)9Rkpv3b((}T zqA&P)^M#i-YqPne?5-76R4)TNB*j1WukLOEh9(A0oDXn`fqT*7_yaRDeUM4&0meJ! zslL9=MgwLIY0vq`8J5fqR(!faE9r(?Z70ce2D^D$rvbyHS7t5V5I=}* zHaHVJsaQ1peYn?f{j#$Vr`i|x?ip;dNWyPI=3m2NRR}YVva~i5jTK*rJ-*LOcEMrx zb`wQAQum{|d-45jpZJAbY(BBBJ_CByPE6tu#i`|DKPGzzlb(q@mHI?`y_el%;S_`a zSzb>wE+H2C#!S)6i&?ZWwTlAhs^`2%$;!yL-rFFEP;p=P%iId9G>p~?{v}+Ko~bC} zR6Bx%6uY=FRF3GG;)Lxr#_C+tZ=qD?EWHmAe1tE;Vi=1n2yDNyUKV(~g?c%>V(M*l zELa#kr1UffLPrCG6RhKXItIJ>CE3&C956lJ7M|XJ%pA^d{YOqDw>=P?YS(o zf)}{tq)7(3(k_jx<+hSqX8ox5={_2xJLjVtFvmQs*ZTsSvfT%gK=JO6WWyhU(nOk60e14;e^v}t z<1LiRy>MQ3SOutUwOeG&{s^i-U*sz1cbSd-1Awd@0xNJ;5@;Xjf*3igh^&qfcoRuoN&t73cUL^l}xku%oiS@@B ztING~81Cr_3q(GoGGq`HjZ9#Np=2Qh>H8H z)mME+-d=fHhON(#qHL73RG$8sG~#@NJ4MIOtVZH2rrxP=D#A$V%j_l@=-?`OZ43Qt zCDpjojj5dcNXMH9g7gH_*8QVS`eo4#_e?(J%~+R#%uJM~ftcXk&Cw<|`g6|}zhx4L z7zU!QeXJY!Sl2EUc^oP`9Kdk|ud8>v#0rPfq!Od|Snikq6}{pNgc=8Sp_`I?)vCyDoD z-m}r?l`fCeMt6bG)b)X>oB+8xE~S*?P8QS3zK190>R<^Z+kb_{cofDQ%#N{qCng~g zrteDIX!zj1dKmLDl16yr==c1fx~w3V~CPygNVm58ve4erKjT7dt;yBz>;=>`Qs%+(%z=XY#RRntzrx zQl~GC>1^dQMS0{HFaPePO^gK1UHl;ZAc1nzkqEcFZEj=iI!wQ3t=;m-36|$E+d z$)hhv-nJ*wpzYw^Hnv?*r22apy$RE43d57_`5={)8vxs<4D>bme&e>|$wAr9HVErg zuOund?5-ip45j(vVp^OZjV^s9UN7vGI73o2-qSLh$^XaF{QPY2AkE;vA{2O9x}$i< zyCmV4*`M@AL*OB$Fy(pL&>Rd3Zozs&MpvI8nJeaX%m^&}$LP6Yqjxg)f04ta<+rGFAPRrOYYh85F^(zs0*)}a$&R_5i}ZOy%Ayb zc#bOPNceOmgyQf>%lj@@eA@6lY*Bdzp1ZK<9;U@;^U;O5W)E_QK^G=nWDdu-O-218 ziXx=wnu|mlQCi;}hTn7FiiLYhfipTLP&fkb(uJ&#Hb`eEkq%t4VckzT-^TDcia)>8 zAVo2^!~Vo2dEEV=o4zRXbk?4iyW@6Y*xYB~c_*X0vl%@7jk)`cc< z0h|mT*XRXbTGF`hHHTs&7v`w2ysUNX@CYiA2WD%>Eg9U-t%&d`r<<>TuSeP$e|)1` zB6i99q+t>gmjV3BOK52Z?z5lV=u|VyWKmzXm5`juYMYSh;oZ&g21b8V$^o?Vfj~H< zN9~=8%1j5(|$R_$T$4#maE@0w~iL-f~}WTc!?HG6*{zq)txv0 zjEmU?AbyLO{yAW0cB?-liP|pSsBV2<_1=|bnZZQ!j?qYYNuA}e_Wqpdeft5%>HvHj zhKnv|uO~Ex2=}@R{E^m@*15jRc+V)Am2YE5=sh*ck$dp_@TLvJ%jS;M5>JP-2mu9- z$hLMR%j%yi3e{)X?4JllG_nl7if$?9+6EZOKDf-qu&UGMBUbLWagv7Jg~A*Bt^J>b z;lG|3uV0%N#}_-PQV$YHU9NcB?%7dTV>`JV1U`#vbEMD7d`uvJstxq#pUg|1G18yR zVqd4DYqw8!Ogh<>O3dyW-?fGc~H% zr@1Ap3bxIa^L!(qC_uz_{bb+kKR&@(H&Hv;Z5VJz^0=1N21@oU%g4&Z!VSl-C%m{Eip~;}s3m0V)~@A@lMr5f``uKb2bZ?) z!TJGtwab{q(z~(~xhw*~d`5~-Y&!ZA6A_YpPkqTlf;k8kHjmVSs=TuB+{9vQfo}*u z*|^$!*MBilm7q0zb?m9ow>8_>hB--hnH8+_YrN)nZ&)VPn>&M|LQNfmJG+a*kur<>aiZ;GkQu4d_u zh&a_=u&Em{RG;|j7=gSvai^NUji%vLfmA2*j?4nhP2N9)X4W~nD9W-ty0YwW zqb_%SnkRhe?G<>VQy#2)YaMiAf$u~59`eMLdt-+@G)HKp5 z#`T2W&M~*kh41BWxAkMY2#!cuBO_W)YXbhNp)!jekxKni%yUbN#<-Xa(;XD0vWrxT z15R?~M8BYbq>bj3HBl_(uyqI?R&n7oRWDCQ^|FChdxxQubsX1V-xkeII zllh??myJ9WNJt;vk&a{SDP{J@PvwrhoQX}(T=l{ux9qr@GhX*=svcLa2K{{>!IoOf z&p1|j&zn$Y223pEt6dlb+Tt zhP$AJTgA0QeZWQ9_#gvfxj^?3=NNMLa1BlTNk7|>gvRU~Wd29IQ+J+`Gcq8pvpddEa3qUG&#Vqhwu4EBpH+xC@pYGKdxz>s zhh6*qUI}NPs)oeUx9x)!Lp8dU(~E7=RLL9&)OxH-d~-hnsrS6Jw!eu2pO?&&wyyT^ z_COOA&HhkLma79xjaTGsuR4Z}12Pi>3Q{UsC2!lc%dL-1r;nSf`nnrDy}7*`BcI*6 zdy7oS^8T9YQf%p4xw>C=Cr>C?B43uUEf8<%d~_@u;D=4+P5-t|E|a)qGCd?&BJa0K z$i%(hl&{%6y>fXikvIlTs~3PK02k)Zg4tFF&GRKc+B&WMESBy z!>ZnfNY17=P{s4DB8ze$GZX$EX}2FVBf!3Pn=|HFlZwz)1mz#2r|MN*I=?vaEI7#D z&{%AI*f!?I)U5=b*7a9M`EPahUj6FFbK zBASIQ_NwOzIb8e%gR{}r?{O~qo%BhHO09H2vcyf z*e2R{T?dkC$nEJF`v(i^FXf3OZ zJd~#A!q13Jz8@TOGl-byt5)fAS%& zp`mRvSR$?OBGoVUQX1{JiVr>;wqI^H$8laiJKLaUn<9(S<|7WmPSqCU_Q`0tKrpwh zP)*h4E=)({XvNgIRJqKOFgBX~L5@V&hxU|f#^c*kJ2k0QT}7hp?`r#>ScTFqs7AHl zqrw~3@7eP0S^fDhXlMpJsq@~FS6>QSo$Y%WceXN0sF&hJBRU{2asD(R_VQ|yo(uh; zS!ghaXYF}x8G2rQ3^+Tn;|1QXX#XhV+e&z;eW=ajzUhspGI6P!#i3c0!4vNCspGM- zF5+Z)PUhM*uUX>0b}h|XVU%LyIoOBilIL9Qt5sJF!{?IJ*~uR~U_|RZ^yQB5;M>$L zGmlS9EdTzMa_%krs_}=~(Ky$*lk=YA?+4fcgQglYqf2a`)MR8HlK0_6-n^BlctKTD zz)k2?r!LezfSZLmre@YlR^Q`}gb>fS)TtomDbv<=P0vjqFgiMnjNB})>(X_jyXQ2B z65A*OW*%KcK_qc-3ho*uo`ol6tH$WCt|JF`{bw#nT4PaC7D^i-y%jx{ouweLXI*0uO(Nr}XR z0VSY@^QVS`2?cduug38q7LA{KSZsHXUnUB1G zB#F`}(qNw>CZ24!vzKZDz85B_?pIr@->I^qd1k^d-D#;(bUt*y!%(EB-g1ILjZs3#)83o+U;!N^Ql3_DvUy<=lpGF_4i%D zQ5UX0f5Q6FK3PHsO0}#%U{;WUwUG>wxe(crSu7W2!VHAppZem1IjFjfqo45v8-Bu0 z?R2<`k7chHue*N2ydTr1g7V2FOYvb-K@V_DZ)5Cjx{+U|q(*pbGy|^L(2thv`2FBX zbHA&Dl+aJl+bJB&8i9Vtk(-}c41PjR%Vg~n?k9t&;NWD3J+&R)oainlsJwt=n%w>S z>{B$_a_yoE-`o521btRkdt>SkJoN=_^mQtyYC*|t<81kSF)Hos&2i%~-;wuinHlcD zU@Lt4?x^sEJK1q2!+idYBytdXncH|l-eQqc2$=Ia^T`W7;CiFsXNO}rfsv)CZ zeUzUoZ+M;5KxVXPO3*F)ic@lTgN*_5-&lad5#j7Mb0t#1ugyJ)=^HVx=5iJf3Xa%G zM&1UO39{)AcoUgu2>FDBT=jjG5v2$IQbv3N%lcBr7QFZukm!xw*LkWOLai z_EbEiJ#^Hva-4UtLZw z(%Vb1NAms4U4`LU?W#WVp`r&eGRlw@yj)Y*^Wz6G^e6)0s{U@Qn_&|3oLzzjn{0{e zde=_^0jvpbUh_geJ3Y#42l8hpGjXO|sXO{+C3 z#6fe1`m!jbqC&> z>M2pBEnn?(`=xN)iS@bb`12pL7+1XOxR>LNPMHs%`};|gh-EA2@u+y+>Ug6XQLCD2 z)t`*qV4(Pf&>ob@%l1VIWV;=|k$8S~A>?(CU#ns2YA&CfEhQVUb%2w6c;~*%(mkfD&6UK46{du+E7wYymRV?llGe8s@(=ap-zxAH_QW66$fYz( zoRCfTOJ5_h@Gtow_X?s1-d1TRuM;6*2I8PxFp&zDc$8CYI2v@UuN69}lQY$s$9!Luzd2y+=yr9JNiXHp zDfxHy=dv`THQJAljOJIk^_LwcD$HhPZtrS?!##NGQ%TFw(b1=Zf~>;Ah~8f1DgW-| z&$+qHr5s1c$9*+>yVQ!)-r*r`C{HKq?clkv+gw z`wIco=^#`#pw!I8HC6lo$pfelsqDN;E4>?h554xA|Jp74LA2d+U;w-2>Bey|yNaz{ z#&(ZcqxC^=Py3TMR6f4#b`f5FnhV99{&`(j7g2Q=!!Ge14BB(l-R-~qOX+Y~=}_Ug z+?qO}u8(G7E1CfL_6qVXVaF}^i>^xXGh^e;?W14st?9go(VYmg@R|o~@Q-RIm$Hc^EGi-#yJBuU`lSjAv0ucyW+S*k2xalGh zh7qRz%y`9%6(dS6{XvFV=glNR0bfMP-PG}Csc^PWZWxTa*zu?ssYj_EXix-xK$_}t zv^^NP#arYY~87rjOz+?J|3tYZpLw zof&vARP zw-K}&y{o53TVG!vYZDRttpvP4U8H6jH;J}}E;6gG?mh5;vdQQhUx#Wa$dOB=nYp@F z4}6cp9XK>tdfzLF7vy~|8yBDDewM-}x!C>v&+MRJQ8{m0LSvoF{osX z8P$u8ZUq6i<%{KJiWQ{4HSy~GM)F?7#twAb>5mV#@nqL2vQBkq>|bF^(pgy+&FuT( zd`JIY67l*ly~1|BleoXS4ILH@D5BhFXNXZ1n$$=z5t&wfVbC|sn8 zyE-wSS+)DTG<~JiIaMm6J;sA)s98m3A^ESxt9}a>Z@O?|rMThpt)(k0SPw>rX_&tz znFqdFv{U0~OZCOko|u(X=Kph`%2^&h?Ec2hvxY3ylYEf%`M9iNPB8avf0p+mtM+Cs zd#=|DEL(4LTJyfR=UKb3BjF{AR7+yF1P`&Q>lYF3(3CD?!DXB zI|Mq%$c3q!TJMe%`75kuo?ZC-c`!dR>&Z1GN4xV|mLr;Kq}xiPkvVU(M@1DYs#2{a zc;+|MWEK=3Ppy=iw58TxGw=HOj1mh9144u|M1velBQ33V~e3kiY&JaA6w3h zCJG##51*3}8#Q%3dM&)rm9=>ji+wy0Z?5`}9}A~VeT(7z!Zs>VQp~h*(OuiZutgKW(B0!il$ zvueWTA)Z{R;CMbw|5GlBo+V$#aIrykr9z=iS+)N8%wL-+sdbolzfG$clfR}4rIT#k zwalLCHLBJf=C=GWpY)Re{;MI9lKuH}DDdl3QBnO`UH$A7 z1Hli-rh)(-U1SjB{Rj=u3Dy=7okuMaT9~JdcjZ_1~{S12Rt9M=wektzt z%M|9WJIWgy)>2aX&{WwjlskDVO7)H1sGlL_$3a=%>(tzK$89MmE5@|k`y;wP>}8D) zOJ8VRoFa`IYh_^@Optvp_UU$7-*%UZcXZ=%U8B)_d+xD4J|Q8RVkvG~T<@1zTY$)j z<)28&GV=n*+$(j)cv!TjpBO7(hn0sNcKco*5j#Y%z`y(ixBHthZ>&vp@HgJZnLdz^ z>NG9e+1b&k6-FRXi@?#L>(nm`EXxDK!?NigN+b~qfa$qO6%H6UDTt1p9F2W{fR*zD zD;I;dat&bR#C5!JUl~?gHFnO

n3%caJ({wN!(L)bM3l0}*B9-9oV>ugobklpNiY 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 - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":124.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":18.0,"x":3132.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -8 - - - -9 - - - -10 - - - -4 - - - -11 - - - -12 - - - -13 - - - -14 - - - -5 - - - -15 - - - -16 - - - -6 - - - -7 - - - -17 - - - -18 - - - -19 - - - -20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N1.0 - -N5.0 - -N3.0 - -N10.0 - -N6.0 - -N12.0 - -N14.0 - -N15.0 - -N16.0 - -N2.0 - -N8.0 - -N17.0 - -N18.0 - -N0.0 - -N7.0 - -N13.0 - -N4.0 - -N9.0 - -N11.0 - -N19.0 - -N1.1 - -N5.1 - -N3.1 - -N10.1 - -N6.1 - -N12.1 - -N14.1 - -N15.1 - -N16.1 - -N2.1 - -N8.1 - -N17.1 - -N18.1 - -N0.1 - -N7.1 - -N13.1 - -N12.2 - -N6.2 - -N15.2 - -N5.2 - -N10.2 - -N0.2 - -N17.2 - -N18.2 - -N12.3 - -N6.3 - -N15.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s1__exit_right_1 (right) - -s2__exit_right_2 (right) - -s3__exit_left_3 (left) - -s4__exit_left_4 (left) - -s5__exit_left_5 (left) - -s6__exit_right_6 (right) - -s7__exit_left_7 (left) - -s10__exit_left_8 (left) - -s11__exit_right_9 (right) - -s12__exit_left_10 (left) - -s13__exit_left_11 (left) - -s14__exit_right_12 (right) - -s15__exit_left_13 (left) - -s17__exit_left_14 (left) - -s18__exit_left_15 (left) - -s1__entry_left_16 (left) - -s5__entry_right_17 (right) - -s16__entry_right_18 (right) - -s2__entry_left_19 (left) - -s3__entry_right_20 (right) - -s4__entry_right_21 (right) - -s6__entry_left_22 (left) - -s8__entry_right_23 (right) - -s19__entry_right_24 (right) - -s9__entry_right_25 (right) - -s17__entry_right_26 (right) - -s7__entry_right_27 (right) - -s11__entry_left_28 (left) - -s10__entry_right_29 (right) - -s18__entry_right_30 (right) - -s12__entry_right_31 (right) - -s14__entry_left_32 (left) - -s13__entry_right_33 (right) - -s15__entry_left_34 (left) - -__junction_35 (?) - -__junction_36 (?) - -__junction_37 (?) - -__junction_38 (?) - -__junction_39 (?) - -__junction_40 (?) - -__junction_41 (?) - -__junction_42 (?) - -__junction_43 (?) - -__junction_44 (?) - -__junction_45 (?) - -__merge_11 (?) - -__merge_12 (?) - -__merge_13 (?) - -col 0|1 - -col 1|2 - -col 2|3 - -col 3|4 - -col 4|5 - -col 5|6 - -col 6|7 - -col 7|8 - -col 8|9 - -col 9|10 - -col 10|11 - -col 11|12 - -row 0|1 - -row 0 grid - -row 0 grid - -row 0 grid - -row 1 grid - -row 1 grid - -row 1 grid - - -row 0 grid - -row 1 grid - -row 1 grid - -row 1 grid - -row 1 grid - - -row 0 grid - -row 1 grid - - - -row 1 grid - -row 0 grid - -row 0 grid - - - - -row 1 grid - -row 1 grid - - -row 1 grid - - -row 1 grid - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - From 0ea8806c5b3e462bac6d6cfdd6257fb8361a5b0e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 15:47:54 +0100 Subject: [PATCH 088/158] test(routing): refresh gate coverage for the seam snap [skip ci] Co-Authored-By: Claude Fable 5 --- docs/dev/routing_gate_coverage.md | 39 +- review_pngs/seed_15_after.png | Bin 0 -> 133734 bytes review_pngs/seed_15_after.svg | 272 ++++++ review_pngs/seed_15_before.png | Bin 0 -> 199498 bytes review_pngs/seed_15_before.svg | 481 +++++++++++ review_pngs/seed_41_after.png | Bin 0 -> 211363 bytes review_pngs/seed_41_after.svg | 401 +++++++++ review_pngs/seed_41_before.png | Bin 0 -> 303067 bytes review_pngs/seed_41_before.svg | 674 +++++++++++++++ review_pngs/seed_72_after.png | Bin 0 -> 130064 bytes review_pngs/seed_72_after.svg | 249 ++++++ review_pngs/seed_72_before.png | Bin 0 -> 173421 bytes review_pngs/seed_72_before.svg | 352 ++++++++ review_pngs/seed_77_after.png | Bin 0 -> 234174 bytes review_pngs/seed_77_after.svg | 496 +++++++++++ review_pngs/seed_77_before.png | Bin 0 -> 327321 bytes review_pngs/seed_77_before.svg | 785 ++++++++++++++++++ .../data/routing_gate_coverage_baseline.json | 1 - tests/data/routing_gate_triage.json | 4 - 19 files changed, 3729 insertions(+), 25 deletions(-) create mode 100644 review_pngs/seed_15_after.png create mode 100644 review_pngs/seed_15_after.svg create mode 100644 review_pngs/seed_15_before.png create mode 100644 review_pngs/seed_15_before.svg create mode 100644 review_pngs/seed_41_after.png create mode 100644 review_pngs/seed_41_after.svg create mode 100644 review_pngs/seed_41_before.png create mode 100644 review_pngs/seed_41_before.svg create mode 100644 review_pngs/seed_72_after.png create mode 100644 review_pngs/seed_72_after.svg create mode 100644 review_pngs/seed_72_before.png create mode 100644 review_pngs/seed_72_before.svg create mode 100644 review_pngs/seed_77_after.png create mode 100644 review_pngs/seed_77_after.svg create mode 100644 review_pngs/seed_77_before.png create mode 100644 review_pngs/seed_77_before.svg diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index b249d158d..53acd34dd 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2349/3392** gates fully exercised (both/all arms hit by some fixture); **1043** gates have at least one un-exercised arm. +**2353/3395** gates fully exercised (both/all arms hit by some fixture); **1042** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **300** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **299** gaps carry a triage verdict. ## `arranger.py` @@ -1010,7 +1010,7 @@ Gates with an un-exercised arm: ## `offsets.py` -453/542 gates fully exercised. +457/545 gates fully exercised. Gates with an un-exercised arm: @@ -1088,23 +1088,22 @@ Gates with an un-exercised arm: | 2983 | `if pred is None:` | `->L2984` | | | 3079 | `if target_col is None:` | `->L3080` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | | 3088 | `if source_col is None:` | `->L3089` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3372 | `for _ in range(max_iterations):` | `->L-3344` | **defensive** -- _reconcile_horizontal_offsets iterates at most 10 times and breaks early when no change occurs. The arc L1338->(-1310) represents loop exhaustion without early-break (all 10 iterations consumed). On any valid parsed graph, the reconciliation converges in at most a handful of iterations because each iteration resolves at least one edge conflict or reaches a fixed point. The 10-iteration ceiling is a backstop against hypothetical oscillating graphs; normal topologies stabilize in 1-3 passes. | -| 3460 | `if ctx.topology is None:` | `->L3461` | | -| 3484 | `if key not in ctx.offsets:` | `->L3485` | | -| 3533 | `len(levels) != len(continuing)` | `->L3536` | | -| 3596 | `if line_id not in assignments:` | `->L3597` | | -| 3601 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3603` | | -| 3623 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3648` | | -| 3634 | `if line_id not in assignments:` | `->L3635` | | -| 3641 | `if set(frames).difference(next_frames):` | `->L3642` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3676 | `if any(` | `->L3680` | | -| 3682 | `if local_offset is None or not (` | `->L3688` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3707 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3708` | | -| 3718 | `if gap is not None:` | `->L3719` | | -| 3749 | `if any(` | `->L3755` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3773 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3774` | | -| 3949 | `if dag is not None:` | `->L3957` | | -| 3968 | `if not offs:` | `->L3969` | | +| 3486 | `if ctx.topology is None:` | `->L3487` | | +| 3510 | `if key not in ctx.offsets:` | `->L3511` | | +| 3559 | `len(levels) != len(continuing)` | `->L3562` | | +| 3622 | `if line_id not in assignments:` | `->L3623` | | +| 3627 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3629` | | +| 3649 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3674` | | +| 3660 | `if line_id not in assignments:` | `->L3661` | | +| 3667 | `if set(frames).difference(next_frames):` | `->L3668` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3702 | `if any(` | `->L3706` | | +| 3708 | `if local_offset is None or not (` | `->L3714` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3733 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3734` | | +| 3744 | `if gap is not None:` | `->L3745` | | +| 3775 | `if any(` | `->L3781` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3799 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3800` | | +| 3975 | `if dag is not None:` | `->L3983` | | +| 3994 | `if not offs:` | `->L3995` | | ## `orientation.py` diff --git a/review_pngs/seed_15_after.png b/review_pngs/seed_15_after.png new file mode 100644 index 0000000000000000000000000000000000000000..4591b5023fcb282c7a711a6d6dc719a6387290b2 GIT binary patch literal 133734 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 >7GMSl9)a~>xl>53PKMt;fkSld8kOIpya<_) zmRXbz3k$1fdFM2D_BuWxA)VB9QNGeEeZ9R=vUGv7E04Hqgi{D0%D*h?%Ni1uXJT2G`v8USP>luxIuGuKmAs6drIk3>9ePn)R%FNGcP zHsXl|IW~yLU8uxN0e|qs1}mfl{$dGHyDRpRllV%C9;>Qzg)Zh}j_70E@3+32ah2<^ z5~_bO{yu33ffgS4HdLsXwc~T8La+h8wMjj1^GY9VG@$N)x&-2CAK8`Zz&IB<;^6wj z0|fqRASIbjyACT+ZDe3T?IT>o`g^|?ytARQ@4s__BOs5)OoGVUni0=&Lun5x-pIU> zPgkK}v%6tmG0L24r=&E7BNArkrhGcH_1>{-D)^7|{QpK4`A;>AhW7sl6N&#{pUFgx zME)`f`2Uwwg$U!9bpS)cRir{u33q+mb{Sl>XEDrJlfQ4#5v(edwqq4iu!Aa0U9lZR zbpd)yx6B(jKXD!47w8=3AEx)*xPlQcPfv1K2?bEI=_}?IsA3(YV7zk2eU^26|30Ge zSHJStCp(rxM(l{Jz6{xiBU+a3UCV62pjFJNd^#uOaekO|Tk^Oig(7iJiu3CxKj!7B zmoPXKFLI-mJ_N!Y-Yl0~Hwob-g0>0R(+?~OGJr#8?fJ=Y6fisL9MR5EN` zIM~a(9_wW{tE2ffvlYTt@(gMagABj1GR5Hy}v%y0^C%roJ>6 zg+M_zOIR|T)3XRW(=uDWR=y0}7nPsu!E7X`Fk$+{^P)aL&^f}2QTg=?PrpvWBGD{~h?qpqFGh$MW-Y&7GyTqJ%x1frtp3hP;ca*!Wmk*PzHFLO}R(3hh{Q z?1yV$0MZ~#Xl%UqdtIj{`R}tor5tgakJtA(Dekkd&aMN&h7C+&jcb#*F;p-XFA$-oPm`es~7ax>TK1gC3W-CFSe4pyRyL&l^WZ-zxdkRxy3SzHQN-v;i|1qw- zf7i}#9VB(r$@f5vv{l2R#)EC%1@vD)8TJ*w0P|2ZAvgj!vS#N=2m78+yKn?k{&1`=>MGScFcrgmX4Wu1w=@M2-FA% zkOTU@qbQA+3sP^^6=dvf2VYAGO3=jKQA)#zN1S>CL%yp_)fafIOJb24A@{003C`8gQ>SzTX}i;-8Dll673=Z z1aNhORy@(N0_6JV&znWhc`{t0qLnH?n2S}<(FzZRX+H3K{d|M^u4KvZtfdfUC^GQz zjX0vOVDNmn+ctrkGk z;{i%QM$HJI%~6vs3GqQtu$YW8Leatzt#NpPJh*1-fA>T~6Sb=tg*nlHqceEW4b@&3 zinE&WX#Rn?5jH>c>)+4v)a z>f`LAAN@l)+QU1O&I2;mPFR+fInPd)cHR@9GwwZlbxG<0W?6jPu#UG+5Y9^-1%y2v zy_@jaf+6d8^j6cGXsMIxjy=m5#H&Z_d?R&u{`dLF)=nQnxm|Bys7Uv;$zc5@43D7( ziCz0OO$S*Ly$=`rveXCq`{^jh;(>c>WDnws2x$tu^ZfVIxvUJAAVI#XQ()9&ca=+y zlQ2*hMsJ+ww}CzZekbAqZAw@j2`vU%DE6kJR+)XOaMjz##6Twb%*VU9bF<484%}lT z2?k;%*sCvU<A4{UF53jwv7?8L)3 zYZia`%Sg|84?y;X`xc+zmg=BM`O5oYS3zaSxnlUfN6y530a zvH@yF{fk{&qG(NFVPSD`-ztKg4yG{OfVF<{0;2>g+6*MssSKBioDDuPGm+u!jpk-% zHctCXB%e?aT)`j^zx1-sImG_9+oZ~uFnqhr9P#JrFJt&3UP0rp zx}s7KxB~K=t0XEgL=9Xl+%e=n^}P~_A>)R?-&4}xb(EXE=Z_RsReQKpRWAxiV|Lj- zG)}s=vU);6o!T1Ki}f_WAIbU6TRO;qxL#yZ?5bG817enAy5I1@upPNazqcvPC`=JD zTD!7$AmzLGmt?Xmh;*Hc8_Uf+K668wAP^r91@W?U3Ql<;ZL%#Qo2W-wX1 z3ZjQAZ(x`yv)k4_HB!$y4o{l#$V+eMHX89AZ}^^#f3Bx@(laxKXC?KOo5gOjcmDm? z>T0Zw)ZEsAr^q1P7DhZ#_5&XO~TXwkgiiJha>YMF3^EIZS*;AgztDD zEnpMl@F=)K1uFb{7!tBOTuc|NAY|2n_`-WSdDX{t;r+|0jnc=&F+7Whg{2~5F@qU6 zs;cU_I%S}2o!Q$lj?{%Q)sj(|u!e@1)09~*!P52Is}20#^S|r`4UL#8-Qmz7@o0o5 zL?|@QJ>RWr3`Sr_p{?2!eC`M5j%=dH3Ft%=yJjFdXSN)zgHn`>|UXw%+IW))P}zFfs7*y1-1G@0IdTuu3+s zMVV(~H^neF7K4)+nt@XW1u2HbXS>O-pt1~TA|jbSOwupdyRD)Vj5Cje!lSGeD+PbY z0Lyi<-zeJN)O0OzEae?o$c?|>cl`TUms$!|@LM8lj*TnQO>wi-a)v719GD5Q;+9(Y zg_&3`r1?*&Ahv|HJQ99HKgg)k$Brjq|0+?+!_i-C%#{)F%%Q*!|FGTD(ja)DYjfyM zVVzE;>yz<(S@(lYxao*P2aLKf2tN&Kh4iGJ}8fmw7KHga7pjoB9M!u{dq}*AkB6u1V9A@Hi zxm%#&Z#~7KP|^A~*wo$O?H%NnYU+i2YUvEk&q@_UqzyYt1#cXPgP}R2D)n?O+++Z>=NM_QNI8b?kZ*tf~qu zz#?eC9eTJ@!<6L%s90BQ<|cI$%_8Hxq94*dY}60IMPTZml0_~POCzQ98(Jx-c4_kx zSv?mI&0?wUN8(aDO1q0Xw`vL|5Fz3qg98C{kEa?`IxF;{#+vVz{JB<^-|_0o3!1KE z$t0HIKA|$|W2`GjhJBUxsO7+B8X+7%`7l;wx_*zHL-t=#_eCn2$6D)lTRY!0IL)@5 zXHd(zhGN%c`g>|%#=_yd;Nj#g_6>QHx|A*WU6;5qFTN4Uhi)Gvj@#Ctk^uPjZ6>zO z^v6JYx^)m!GrO`<_=>?<*%@)=N(D9F1er7Ooqy>Rv>-pup1YvMOZ8&Fzm6cD^yfCm zW|x)dpf3@-iTfbc3);6D5u9s$S0f(lQ+lPbXwmrs zp3+gHK}Vns(Vdt|e(~zK5AA6~uK(C(sIYj=rC;RoK16miS8s`2pI8%vm^P_c><(4KQ{Cuh#sk}kbrUa+n(w`C zdQ^TH%W@vqUygBW;go8TJ#AvL?SEUT89TfiPBF55gT@=lb~wpGN;YqDczm-3MZ7M$&YkI3F;;xpDX$43P4yf+~vMISK5 zCukMPHj|p}X1wf^6-1bj`9I$X@(W9JT!Oi)^zQ27VpU8k&no(wFB*ziw|$8`M+J|r zQ!RM>HGw0}*-^RNw_+~&jyL9#(>RjT@-*#IyLPsJnEou{RYU|Km0w9G=L_y&dY#0s z*^aC9c@aLTS{v^Mi7)&Sa31j0!rb@g5vV-xeTFQ%_Z+u7k*S=npOz@$=~PRBY~6x6 zQQ93Nhs8_M`kfHChN7j9{#Kw(rN1e3F5>{hEXh@&;^8F%iIP)2Ov@QcbfaevbX(mR z9vK8sVn4 zIs4RC2oNyZR+W>Jla%ymy#Wf5)zwu5W`_TI^#g$=2hssaOe*|Ew%yy_x4Ob#6*s)J zVkKB)f*;M7BJdF{A_>jwejh&EYSi3`B#PhK>Ji!B6{%wCyW`XeUw88Fk-Q1(F33(# zaJK*g3g$n3i$*|O`jXO{!S78x_Ec44kLshC)+qih(C1)dW9NF7KjgZVC)Z;`%J3j!Sdx9jyDZ z^0jVdyD98A3c1ckGQ$ZMMU~ILJg>h`pYgFh_oRb$!R@50n!Xi_xW^u^@N%+4fMKS+ z!IJnZIiHTvK{DdxMB@j~pFf8l8Z0JXqcw-5;aPkb$Cc>;7}G#~vsUfT0lD3;jWq(w zY}yT#rB9wN8@4nxG2XsC1PT{gjuo+xherLaVr$2Wr<(jRNWYOFijA4}7QOY(73=X4 z!-f|)2aj+5PQ}Djs;W-9wzjrsT_N7vAaig{(wlb`s`fr{@8Nom8}Rk%ZgMM!Q*utb zS(Z$1CF=?Q7=NVeZNh*QAFP~Botzx`GuNy@@u``3?f!^qL4T@e9QRFSy^f|wu95N8 z=7vb#NuS}mL^bEW?RUp9sWDkgT=NCKnv8}_>WNtZC7uu7lW`GPfUWrGF+o9)YWkV^k649{nXH zEZ{>_+QAX%x>0Bnq*)g&%0T)idOUd*fhn#;r_pYOtCRT7G+J%%?}W9#gt0p)FEJkn z2{;XH=)R!#`!2{-v6QfQbh`S+gWE*t595g&CEW%B=yd(1s7|3t@WAqF-%TC&)eeXAO4tkYn6u-Kvr6xiLy(JnvW*21gZI4P_?;{FXxp6l zr0l#T-lpz}D*V`R zwR`Ljr)@JfrVmI*k^G(;R^m~d!B<1IDHJ>8XZ?yBD{H({aKSRVIb=JE%NibZmh%C znJKd^Mt&T&_&h+VuP&@L=(*Qi`^33q0eCkRbE^=hqz6nb%TxF~i+GzPdVSY*60fKi z<*;U*x{`cZ&&!6B^Ue_tLyRscYDprX=@VB8+OkUk~Yh__{nkzibw?N_41Zh@w%;J-^w+ zBZ|)Lb6wpe;aSLQUl`iSi=%N5ybSAEE#(ev4d<~5Fwm5~?&!*X?n>}w)%wr1-gKo` z-G<-Eg&8be;%Za8En1k?`K_T^6AeewNL zWAb96q;9%M-Bz2dBza*SLGM4;MT)Kz+=3Z#IxHoN8A4!05FOT*0o4hU;ukmZ7=R>b|t zi{xe;Vv^WFccIQ%d6IDkVh`;7bmF%AvK#nG+A~|Wo9cEmyCy`VjDn4VZFhB-P4ZR>X=T4i289claQ^R$Thtv0ahfEb3v8Kuf{s;f`TElge&rr%FddNYLEcMux#ZFR$JeX*boNmt7V5~cMtbXDaKAGmPPYz`| z0q@O62s{VA5HY22J}C3hyl^*5OiHqw?sOk~D;L1CMfy$G$l;yWfvum>(4gJEy{u~l z`7DOvH@^`EsG`-T?w5Uz@7hu$OeV&)_5Rw`t1_^_JamzmmTlL_kq~~MPv@xHV}0gC z%}YWe3NR)Ns^2IMUS8f*gg;?Q*VNQpEXwq~!(;7p`H>Wfr*d>|;gYV4uu{vi4cBEv zPW=lYCN7T)QvnmracOBkAD?62d9CI%zNYuEH1P!NwBlWw`a|C zq*~ZhXQeOAkXEF7dP;!Ih!1t8TJw*tY5vGtSO7M#ZoU7;ez*V<6hkw7p?+ZDgM$Dq z83u1Yb`!4%_tQ6V79f%Kl6_YmJ0vV^b)8zKhOvBzIyfENOrNtb=^&BoMp zdfuG9HNL{<6;s_V=|I)dI-COSxScpN>oEwp5ckOIDnQXS^F1PK3K5*eI@b$zO>JCa zE&Pmv9TXUMyb=CrE6zNpCeEzL{Nq&p#95!h-F%o1iW~?2)uSk&XWx1s|L$GxTdqfP zx%KPn)beaug`43faD8mZ`nPoNDs;4 zj85PK#KWg?jov4st=aa_JUAZx`50uh;oTv-pyl87_zGz56ZUp?7t$L#Sg7wG8!+)) z;OxBKFvCOoVen2Phbk&9?O&Y)kjZbajLbMp-ZlzGaUf038QY=0>7mr$tB+H`+)y4) zQG{9NE)`Mk~7d_$3k%lve)9y9Dxr`T}3RY z07kw^>C{w9_O0vfS*4`fbxsY<%8qc@RX*ahTL9sdYtbWnTp5=vWG&r()KVJ+j7Joa zXN;W@uQjdolL1$R37-p$Q(ER_+X47Vlf#axuAT}0>bz+VO4?IwueH}aO)bIspBy_? zV~r~ni0!3Gv!w&D`>?ti1sBct@DE;|+{rh2!%gF$fYV>oSO6zz7%O55h|mYXh}{KH zdg7Wtb7D*sbbLtL>0?*qW<~wzKH`IJlx^1_XZ3NHIdz%t1P@IJh8I+7kXh{OUOzbF z{lBvc3>W;j3MkYtau}}B6J(fI50{tC!DkVpVDbhh&4X(VX(izw66#N>%*J)1a}gT-%rG>I?kT)YPI32nZcGsO7`(BiEGfZJO7GYMM(gn@#h0 zrKFsne%?gL?_sEv#Ij%*YX0_7JVg8g4HFjQ`=L! z-?BJB+M9Dkr^ic)gUFpA;#`>4Gz0uB;6OxFT64~g zc&e|##wqDo8S?6Nvgb!D2TfnWLvL{cTM79{!*V`NUrV*H!fg^F@ zHN-Fs$;*w$@;koopV(v}otK&mk-1K0JX89?DLE&n!Z@Scl#sYa<8NC?RBMVVt|37C zWxR+W#YNPVm~W>?bt*G#{nvEStZ-r~qi?n;@|=6gar4BQUn?toA~_I2u)aYW#S#wC zXVlahb}N#zI$dGbZXc4@3E5=36f z+^d^-ZUgI&xl*Bi|E{{e5XQ`gWB^4~DOKE@=g>9azg&Q-)1?9g?My>UD{|m~;Ma{V zx5nqNTYUIGpuKn7`fp?%(DWre|MC$}>X(xAWVLiq{O+-0C zVO4kDj7ZCUx^2@14Z`o~{!s-Uk^mW(j7bYd=+KqyXr zw~rhc`oyHZ`ohUf9s6H3l{MnhY+yjza6Yo2t^66>>M1V1=- zNB<=vmHNG+li>7v_c<;Nb^nfykC^{joXrCWjmn5KDU@^I68x=9&CyjfouYEi*?TF#Is zsH*Dpp`%BC{_~`J;Ia0s>6EQ_Qj*xkV`1XZrM+VzEmV1})#Lf=&|ZF1oS8FLi1#+t z>s~fh_5D=jKXQlUV=jF9azO--+)ck>Z09Ld((3A8PG>dbg>Dn8q1)m1_!OIb%}X9R z*+h`rDn?{ePCTw?yd`S7121YoYy+~pvcoj{DiGR^6l{Vmvd;Am*$ z3Ag=@TV2+3Qjs^9oi%(AX17Ip+ClQTvQK-ZN(F2DsTXVb-hT|G^GxZVd~*G3jTC91 zi1Ne~`)UF5l_Dcl@2UPd_#s1M+qId!4WE9fIGnfcAcKHDk^X~BVcGCdj_uaNql9XFJO!H@s$OdZ(b z@GnO=W%0X5w#$5b@mWN!-b8-XiGC9zQi^Ts7HL=MNR)D7iGgr#8e=7sCRbMv>LVw) z$gJr6Nu(3LLYhw`rYn$7U5F)YODOwIzOCosfJM|=sHUeY)rjppCIV90?i5sH11*w2 z@Yng(ML7*yfzJ7S9Wx#pA%!t$;f6CS!#})Z4(s98oslhK&+kvkn>7`OzYL*4h>z#u z=00@j&}J4%li;`l<3~3uAVWD;mdEmEmXO$wE6)a9I*jM(QQwc42gj+VJ0%ptypNNT z9Nq2H8Jh10fzn4ctK&ZHP`Jf^GY)xlsw;su9WmofSC7j=vl;6b90%50XAs4}ceaeF zz2&+wev%QNhNqg}KhXiC@)UB8?Sbi1+*ITg)X_K`ZKK=0;_>N-ImNl)R5WcVN@M<2 ziI32uOo-*p4rLw{D6sx#^)08(sCV#o0u+@QF@BTTg3(L6aqOe`i+UkNUwpJr<3yVA zqoa17WJuN6%ey*l`J3Vo|AVRm|NnojtmFUY1<>6HFyP#-Jh&7`@+(Vp9jjj-{>CdVqD$}i=V)#g(JZrm%!eE(@MFw-%5)!Yf#@c zy(};75tWd1b@RU4=DV1^H?l%L)O?r3hl6ki53}rF+iCHW{(%8CVs**ZCO@GoKu0YN zC04ffyS25AjhwFJcco2fSI2}b6q37_n$q6x+Is((F#X4h3X43dovkr`w+_3oSKF>Q zFa*BACgw_osvST4nU-SRMU*l$H}W2>Pl%6aXZF6)rMDH!I_j$`C;j;=W@cCh-<;jo zh?PZM{pK!D!xgaU;_3Pc_#l)xy2oZ(QvQkNq@zH5$K<3nc+s?T=g&(pZ*HWO=K@+_ zU;tl6P+YGyuV@K$g$gxrPF%#qlnOS1!Bv(J8jz;NW>DsdnlJ0mz-P7TmZY6fO9WsWJnuV+5OVa__hyW8)in0qaxp^77Kt_fe5k)6)7nmb}5K1(DGg(;GTV-CI-sS$M$% zYe}8(M>HD2^tC=%Oy{G5W+YdF0Z+vD=Qj7~3H`5&G%+^bcvqSTqo5YE5!i?CMC5+qZAn6|*W!sHU6$1cE)1j5A^uxBZuS3d!A}_qPgqefrML%}pHO z`}$zKh`b?o4Yx5QBm`S6BGm90TJW9f9&EIA~*@H z9Tj+diW5fxBHdZX42N<&)0PzSqctmNi9pWT04pTQqxgqdDkCG~6kBy`Yb#)u;JD^k z{liH~aKoWC(G$3$dFBT3deMAbK@38u$ERWtHI7W`^s~>BlOYlGm5~1CqtdjQ=1`>- zoTI2?#<;^ccRhXw^FDwMTnFABx?>!JhJ+Nahp zPj{D%NGND(Y}8ay@rj6Fp;&j9im0C7=O66yL^&or*F5j0|1vXkzlaD9kXik~F-Wz= zh`v6*K=O3%8;JSm-2(Mpg+|Ogu zmmfoThF1Z-cR3tY%}q@$&o`8=_=GyVj_vx4(?~=O7yF8IJG`0*(~Yu80v8XMo=)7|kL8goR!^iMRI-C(a? zd+8B^GfuHV8EI(9zJ}HSKIGpECP^eHuCa}H4Oz1u-kVPL{zqRQRwNP?QNgxhS~fNH zS+kP%?yk1}^DD&v{@>qTs#it^iNr3a41hPrk2p3DEbUjQ(Lw0ilZ2JEg>;FHGnTkn zO*aFb8b@eL1>|ew4X@#od;i)6caEV*RabX6`R00&qV!*@uvL24^w**^B(9No?etAZ z>Km~=aovx}S%z)vMdj^?x8VN!a~@KY+3mO|!LK6D%u+@qg=xk7r92?1e4VgU+&ghW zmAZ@oK2OH7;YVy%*e$(kz?8WtpfM9LIsk}R4>Vx$0~$60kY)eY``PE4L2V*ab)bh( zPa*bUsP4{4Y5xRQ#Se#AP1)WNTem|)8$~t&9duv0vb~S>1Zi@^jtXziiP-XphrXJW-NrvIz+}Np8Q}BlB--6?Hf>EKd*hDpiGT; zvI~=U84TA#>GTll=jKWjItxfoZ+%Wia=GuZeE8SP_-QMS!(%8QhQpLlkP+>Q_kX?pP6a(PH6KEht9Vxd#BIzmk^?iij9ywD_W~fsH%!)vH2y=7FbH z$@8IuP#?x&*kvSRB&VeC@e?lq@<{%`j}kezK>YbSzCPgRujLXUh1PRXD+WXrdZxr>d%u^P&T=vRlRIu?3{Asl=N} za2j{xtEaE8?+d+>+eeT9=aRmXUm>80MRhwhbwed0REU{^MggJW0|X*<>u|9SnCzFd z7;=<|TplT-J;ct*$ETB~SAx8UIY0{q2)TIwJy1ml*rJBEmHOy3BhE6oUcA{t55IGc zS-T|b8zg-hc|Ynrn{S&=^%V)bm?=&0rVz7Y5a-T}x#9f^=b=W#&jp3vO3RxevQro9 zofqocmlkad=RibY-EpM~FhDR=)W>(QRhM{{dafZA|6So}!a~)+)GU1u zCL;i}snO9F;VOYo1#pGUDAg9|_c7}R!H!Hw`1_3lV?e_%;?&k}lHU_>o)3_-lav@j zs)0EWfiPFDr12zcEG;}D980&Vw9cN*#_=Dvt%Tu+2UIG$tL)2>mO>1m`-`_H zQcQjQaQ!7B8s5G=!Fmjd5lGHMBnm&FlVK5@j!Np=Swd^d*!)Q3G(s~*(RE<9IuOkv z+|>p4($~o9`1Vn;9v~IJTfs!+X^4E0Mt?R>HFMUkwX1X$-7)_yC0u~VxZ3W>-KUiF9VNxO<*J&#a~HB{tFGg z9eRf~F%Yr6ggRv45Y1h`QJ`Jzz_XB*jaENl{{9ALXePF$B=F%Q*;>$V0ILs4--Eol zz754{Sg$)gY3|~s9d|0Ocg5It!K$7Q7PYDme1zgp10SI-_O-gypMLtBC%I6sAe9df zSsNBD6oIu4*k8Ma(+J8P5T$l#$soG>5*s%!FOmL13`KM+iUw>R={JhlqD-5K@o^Ib zBqt}!krV0PsB)dB-JR38^MO4?*!6L;zS&=|)fGbq3O|)KUS&!M+WYsvgqrRxF7F22kr)FNg8MnSE+dR5pzJ!crzJp9EZHyAxyF>n&{?Zpy4&bUYNK*!i~e zZOJ>j^lj@@R2&Ed=ps-oVjIRwPfN*Xyve{&7j=`u7~4?+EJRYXpS=-=^$A%;7=ky& z!*z%a2V~M5T4u$d{6bK9TSG&GZIe;_!E1JQcA-7!ko?ChdAcNpEN`&fE@0O=_`AYVvBp0H{Li0N;2^6lFWkP+qUR&OQ}{ zfdx?u5+xCQ|KrD5bb9Gy5q@X3SH#PcfvhyjhT(m3+k6{#XFau*L7t5gU7==OkjZgb z&e)d>;Fj3+PRyGJ7!X7l(IKe3D+qyE=n3Qm%Mq^jAf>QE-gvbfJbG4!m5K4;eIGol zAGDUUkgr7+)c`Lz_}(8sPMP|)+?UjfRD$5WUI$ta1+PuytZ0$YO=QqbN#vuj)EpWb zI-pQf`0$S6wL2rbCpsQPaoDt&mlJ{dNl8=}5P{Y{Q)NR>Pp`7{w8VE$i|B29j~JWY z%O6x6B3jDYh~iIR@5;8UC3LAfmY+bs_A3a%Y-7Ck9?anJ?s>7X1O|Wq*ac(=VBxew z=FMp|AOP5Z4JkO*cMxB10@&KWW_G~|^oeEqMpjgqed?6&QM*>=rc5=3%p+1s({VGl zovI82%~B@GwL!1@CnRCZBVggXRB=X&kPtb|kCe|XzJ5p&*(9>*^of^yXhOeb1um%O zt903{C!P2&g_RgXE{B8_YF=(xG`xCT8Rzhnem8xJ)^p^nZ*W8H5RTSd>FMbSx=N<) zJd!a1zb@8DE%+ADqrGTwaA*OXKJ5reJZyMC;RTFIJGMnVefqS%V+Wp6uF$hGq}th2 zO76=>r^nu0Q{9AaKNqkX?V8}jAh^6~N_#eWDl*N1^E z{(98sA2?fveE|uAV4Ln4f3S&+_D}EOoSx@`8EoGasKgt6BIX(r1u{xSkbh;CP$CP)%}WwAJK^mrSG-Jca2Cs{00VDJLzowOeTm zf8OPH=-gPJt}MlR{mB$p2WIdaXwj z1Gj`GAqnE~sRn?UW)58pSW&QD*9r5ovm2uM0KwPQWWRcKVC#K!=&aWvvXc-1kK>ao zRd5{Pr6YLA=h%tB6cBzg>kx#TiMqF2RPw?PBYh7?Lj>O)e33GMa*^44>iHlRVw{iP z`@Uc!(w|0y!uAQk+L8^%!X7vT67vN7`(5rEevUd`HHwW+BlHTGv!mgx2Sch+USAg! zvvK#;*eDeuq9jKuzPD1t?|lAWnf$S9rfHyo8I9z?{~}1ehV@F4o*77$DUW2yVMf*ddxz~uBO$4 zq__IQn?KCd;aLt3AMt$^S9V-_>w5`ykUAuvl9^o${-&xZp{}Zm)H*<^_;YN3#0NRn z*if{YsJUqt{0&_dlQ9PE_tQLB`0l)DNQecJjLrcC7~PzQ{M7CphD2aqe>7Re8mKaK z7y2|nUz~nHP?}Y9SUD(XZm=GW74)q~pPnSL$=4hCL%ZXzcae6-xqD7BX;&o$$I9j! zuF`w?*AsDkyKCYCPIpzVJa-x}XE8V7HLZX%niHu#l^F=>48u)EHs+hgY3!5e0lb9V zFBERFL%Qu4`G|uH<PCgai5k)0SztciBX&SCbV4461vV3w4+4&!?RfqPO@r&{w!SL7+u+ zcec4t*Rg`r_he#wKRuuM&bVadANJu|&Vo}VpJ zUuH+FXOESs_mo9yGPcjPO<^AZU_S|?_@+itng^7E7v=a-g=c4Hqw5qmcRvn}V2ts) zV|m&*_zYUR`TA~qPzL-iOrLEwmO~b4fWVM&XabTV6ny-b8<2{8?Jor3=w+K2KPZ&( z3NS!7!>RFciW%S27P6+AKcno!z8o9OOJ{Pvo*uphQcn3U+1!+P=E{z@tK8%$6CNzt zzM`3DTQ%8sR3qqqmr>e~Lc2{OABpd0gyWq93p|GEOVf9LyfQ5MS#`52Af>g_#;m!q zJ(7-M1@f-GlwDd7YE`ER4=b%SteI-J`ID03+MHSLAA=A8FBOy2emh7}JUkU@OpvpK zehV3~2AUEQ5{WjYh-x}Xsbb>2zF2@lp~lYhh2S|bVRd?J82HzBZ0Y*B#GIIIlmuM1 z*tLx9k6PBnQVDmr_Z;N_4AeaKaO%%?(FXLl*J_+k3m#cyfMmz{Q# z=(tx%t5fdOL=#n{YU-k{+C2?bMHEMzkypoAJ#irg)%uA}uOPn)Bg#8fwt64-h>hPV zdKOWTTRkXE(!222oD+*-b^wuPG)=wp#gAOcT-NP1!d)ZN9N|>OJ0%yjRh#XZ9J9#c zW~+56Nb&;n%Us1_u~VF?CNpTQauu~btY~&{47<&7uGJN|wP)-7&-DM^tKIm>Gyn=w z<6Z6-3l2ogNg1Ab#-Z+zpHI^3egZP)zn8$b7{5d^T?lcl5ByCRRP~uAK zT@Ip5_}ZnSLCDE+CHvG@ojR_l&4x5Jwaj{J-TOA*mV~Z-)2_+gJkIEt6>Y4TJ$G0! zX5Zx#Ck-F5lb$rJlpdr@TM1yNR#;)M#!-^IM%YT5<@tLb(!)plfAVokzqlQ#dBpI} zmIGgza(4)Qq_g1@Xxk%Z#d<7X!JEbNWbj1^mg9MocegRQD%9LsE;LDp-F_i%KXM`S zh~l^-?{rBsfazxXvm>+3s~(=b8bJS!{zM^Vv2Bei%QgG>=!xf((Zeq{t~R;2qVUuE z5c|A5>@$x*;@JR$Pv_ZU)u_wD=TFHRwVO{47AvfJXgKF&cV(6`_Lg7-MjhR@5~IbA ziAAG&#rv6W7?v8EvOQ%EmakpL8xM=&eWohb&{+i->~QO}-cE8G>@p1Qi?~*mS`}nr zq!0JOBBxFk_iBN?4rOgSvI2S!{&R9FTf5@eio5pFrZ}Udz9*mRAARkhL1=P32vNYc z5b0jIB8s+Ns;V_->(`ME>joHQ7BqjJGZqtxOJsY(->%NaiJrMJqw-s@UMIzjbl1BdZ(ZoO;U zW1erX&7EgnkmPw;cP>%xnl^J&?)C?(W35=#mA4!{LbIyuF!`zv6_?ug23-pHWHCJK zoy;OBgxIr3AJ`*)IxJdMq51V(_$r5=0{m@;qp{mge7Mp!;lCyI%8=s)QDbovBadHz zWASx5S+1TvT!EE$%%1GKc*3eL7KvrRU;KNKoAL?busiCEBoe=ngz?-NNBhCu8d5Xe zOZJ8K>ccMa(Ox_D&G@X}&p99v-Syw0sWe873s4bbOsOwhqw&w4j7q-bheUHPC}bpL zd{D`aK}&K!io^B#=i{`5WtUHUHL1fz=JngTS0+x`HwHpZGyUvtSeo((RcT@-GHxl1?@5*@1*MLS)oUc+RgJCURz z0ig|9v^1&X-^cG=U%gd1uPUBl&R?P_s&pWwiTUl+`TG{io>vb(`#r%09AslvkYL}O z%y`(GF;F(PWGesbcK$`OOrk|@(i9QIYxHxEtH8y#6qqTZ^AE3hC>jk*Ue(fvU~fo6Zg!OG`DWa|L!*2I5B5 zF>B7!k(6$vhBnv?eHe@mv9#_~s+UZ%{hZ$HG~1G(5}IhmJMnu`x#({%H-}y4`xseY zabaO$3I9Ra%$G0K-a?7>#T$|vogE?~A}k57NiI$FB2ktTq0g^<+{Mqh)h9tWbWg>m zd65PVSJk~!p|x#!dcE&X>d@_b82d%!_q2CApQE*j6)9$cPT!RymFQ&q_AF=_h$alTu6~+%k(E<@@94>W!eC8ZcS&bn(S$5teSw3rheWa(%uH=CpX9b4n7OIO&T@ot7>A^MpM!#hLRv$ijdeqkt@f48Hkj;d=(w)@2~8!Xf(0b z?cy)HV6MB33)`>1IeP0&M8ADYyVT#@)>g8(b~QtuwDCzn=y3f=_BToj`Ec!>K(k*l} z*6m@?x^jy5_{WP$@rRuA42s=e^DVgV_2LOXbfer+?j&o}H3dzHIF&jN+id_{*&@63j7-x8mUx*fUl3DUzLTTzzc0mkXu1?4H%JBu-xAyC3 zG)@9DEAmSvk@gE`J{K@oOSdyv@S5lK_Ov%z+PaGDu=Tuh9-pawQhS(I(Ay8lf0`c_ zdj92sGBw{J)8-Q1l&ase8 zCh@;#`Ou==${nq?DN9`PvUi?7T~FM{R;%>>nV~+TSNpa}+ge;3yAeX4T<=Za9JqdA zmQI;hqyN7S?RrnMWsGitfnj4{}K^Yc5)xFS6z@I=e4} z+IZcOL4$I}pb*>fl>XLayX1J~MVpf6!@O7LmZ}=h=Dg(gc)g>>S~CA?cS*{N(=+Z^ zHBl`GJ^<2+_C?WJe8ZEyz@E}z`Pb)LPZCv%do`hcdo`=8s28&iCr2^s&JZ*484s!` z?TGPfJZg$UIqid-WkEe53`s0Z5{2!jlY0LXj}}+HyZz5bw0R#%u_-V{4!eID!UVCt zE)Y2YlpEKObfOOW&L+k8TX%mw=f8S;kk(jBmca>ymci23-<%{oq6QvxJ~^q8^?`Be zYkPIq$;oD!{lDkGjt#BAM%ABpx&R8y0RhU)w8YNqGxOFVa_Vh?3bwvt8iC)3~K>8Hg@;DCVoUe&3S zNMs)p+?;mYKHeX4Rek-X=Dpu9hdz#&OroNsQRkeR*j%VK=y~)9-=!033)+sCjE#B& zoTgYF|DN+ClC4aX*3ow&CuhFVE z=n`}aq)9im7UnluvXVv@ejqPcPh$3)#+{WSk3nn zycef(4~kqfeRWa)W=%C~Sc`yk-#?o)V!hhOCHG57-K>%<_@dfZPr7`mR7us6Uu2md zvfthl|LL0O(Cq~MH%=e>y3#4k(re5~9k=X9nm-$ANvkb7#b-Sur~N9EA( z=|v(@?5)^;Al%L%Wud{*j(ez8r|oBplE`p_R$IodL)LF4X~`Hb_*m>~dzG7i^LXM# z{g%u{7bb@Fg#+P#3f5xg<1^plZq{Euso1#C#pY#WBEO+EvcZ?y&L?I*uSeR(d}g;y zy5YNa89SDoJtAFSg0|Qf9lPHuW>E2HI!@MA zr~bA~)XuW=4L!{o3Wh&5tV?Sp%MBgt7VabsA8AGXk=8O=CnlflGwQ39mb2^97=o0y zFG{ZgRbvw=kNuAfTtLZm zo;xYN%wThU(pJ*C<*O1n?8hWDSf-hnns0FYU&6F<@?|i}#+@^{WW+Gr_uN9=nk@kg#{Mcm_b1*8 zT#;%dFnkeVlz^VRefq5kSB>iFgFPU^6kqVqIH2QlFQ~ugNA9!EgUo?#*!irl;+Vx> zSKoz?OnMlB?hkz@6(N;`R1i74!KV$uJ@1^hKv&WT+pqV*)=7Q6w;Mi(7nZ%%i0>hS zwz61)!QjcThY4S6dI@fMd~yiz zIXGCKpKINE2?7*QpGE`{5^LdKLHlY0Y`v(dfREu!Ka02dTwkxzcmv3~7mJjns}cwG zw@(qyP+NkAv%%$n9Rp482+oRz=PXtEh~(0&=t`8>;noI_8^DEXM!;;r4^RhAOl{Xr z0$Ybjq-F%D8MoQ~0|yExo|}P?yTQ#(j0Ze{w(&R-M;MQDKszQ&Z8`p#i2Z?U1MzVc zUjes48E@Yk8@PyUqd9^w1iQBH8n3E3$c(#GXHv9oqJ;{<72}I4)YJ0oXss_qor?}A z`d@d+@t{u*-+=Umfv~}O1pnPKV(;G}M}3@Sx|l3U zm4CZ3bwLlW8PQHAnYMkz%SH>x>=!g;!cZ@Q^EgD%K-PzCPI|LRQ93u z(Pn`9NFW+W*^bOVE-#!)pz(KmDj;C-$)`*WIJSsDk4`+KGjB8q^h9$iZKA0u ztYIme_d&S$h8K$76+0><6U{I}+*UZd{1~MuoClVFI zFlGE@i7^!01u6utff-1)i7u9a^UvjUa(F}$N)IN&vFoqHPl&_OyWtgX-z=_|xKJH* z11V?0Et*CBd8XX>40^*`^i*I343aFh;~KYR_e( zVc1VO5Ygb`=U-qAgEHj#GmR97uRZeRf8cIW0Ys+m^?iRy(7qy@O=fGkIb(T`#m%Ck z>d&7?(!Cu`K#UR&mG$hQk3M}TGr3}7lHcjZu-K!!NVM%D+Jf!Bs+L=bURr&5uDN-6 z++EWZGF8nO#eysI>(!B3OwIA{zXA*-uJ4wi$$Hfv$bcS|KMe@yG}3cE<9 zX|!5jjCY=mU-L?x=xggg;%&H9uQ58)9VDd?vEAi$Xb8MkIGV^C9K~S)kzqwJnqYZSqrsY{nWJ{aMVPUsr9~X! z-IfNWZj?w9Om0(UI^3v%mJcSz#&YEtd`VR;uEadn+@V1m+LU1+XOIupOVq0-T-d)# zI6ri`yeVD;y$E5mG5Kys?vRg&k&VncO++T`p(T2!5xtRdQUu+DHFL4brcempL?Y7@ zm2@w$3+;6kK=-Q1(3aX-Kd28I{ivjMb=xK9#qDbv8qV$jD6mQ~xoH1|H}_U4!t2J> z#U``qou@M6f#q#PPYUt)+Gh0hx$=97-{GMCD#~23i0;FM3xj5g<%IhXJ^7L&_@K-o zrZ%w=SO)9J5murKHv&*X^BH?Faj!0{&g!#?4?!~(JDvdXt`*Dj0m=|E%WFGY;MA9k zRpATV$f{Outb!da@gZo>L*o}$TQCyb8jFpL`_6rtuV zFPc{45A7*ZWjp=L>{b5P!N+o$#c$!Y-w8dJ`)e)@KQ#579(N(b|M>h1|ba$p*t9 z`EM>UIx1kHP&A}ALpMyED7~V7NDSZn1igf~{%cn)zWSynJFMS0k6HPDM1wGLRw5`8 zdvk9^jEwK%5AVe*prlywlQt#)&}um^Obk05l2d9Rx^- zJQ1d>)4E>r4<7F#_H=gnCraxR{bXYazO2_44;-HgWkZ)VIXp+i+Ku*yM0Yn?{vb9P zqKmR+J{BABZ!uk1ZlEjT*8xF5=mdsdO%qZGVr@YGxEfz6EO=IymPAuOZ5bk)_RGj! z$Ee>39f>p$vZkTmK-b$5!FmKsSTgm-+yMc4yxO_KVJVs~zQHof?JwIa>=A|Mc}9ib zoRM(84h{^+#{+dB%u;!|xz$E|ftZ%(CMad`cSYaTULD^A+c1C>@CUr?Q)I8`ZM$RnSnU#7aY=AZ@Uwxd zsNs5vhHU5plTnE5!h&#?t5;Qey~A<-ojys}@<`XOB6kSn^09KxK0Z`g6+*k0cq7k>V; zEK~V)8TPHd)(&`*3X&00unM6r3VSIEaRQ}UrIH+24BmZao8s8=jih3iuj!lIowk8iIXPB!nvOHjd^IH6)GL9 z?$E^BDk5%8mPkVF&;f4A2I%;04e6kFi@(2byU%_}a1VD}h7g^+d*j#_QiR5>} zcFS0SwsZo=RtEX1F)-<2M0_tddcsN(0skEr-?fG*q{dI>b zQ4I3u{)j>mfrb@Y_Jf)J6QW*(RT#buik_pmt5qGqGc-#vc$Ceuidy7;v!8GFQx87hOL8yF_|) ziTb{$C^SU-M&jT{Oj)9kKrSyPR|~l3f2Gpv3k7quhN@A?gB4$=Hi}w6os7y*v(K2M9Bd)=8hqGt&*LytV$ylLOclb7W1m(6J@nXQ>r zNfe$Y#s{VU2q7N9LBv2X$QMRx;#5cr$xAB)WA*hmkGNcqdU*ZOxu&-k1|s%QZR-jKM3VOFNhr9-6V4`BmaC&hqS) z5u6SOnOlGac9t}>|NKE5t^89R48*i^Esgf9UE?mXJjWXhd&7>Aam}f4`L8SLzLIqs zL<}MuB6Hnv%p{KTE`DpR{;o}KRTRPo(=>6A_1%ezpaA8mr_d#8zvDF$v-2)bQbi|9V9ePb_W8hpo52 zpPS~v9JMoA6031Rlrm`3x98W$-|Wz_2Aw+>Xdz$3)maiU*g!~Qog&sxl&SxTssE{h zA!CsfiU4&~=0az;d5C)9FBr?`KC^#AnG_~!enD&zrE*(+J*_kc%>&}Rj>B#HPc9KP?5DXZP|+pDc3>l{e+8m(HvVSSJ7BFLZuXQJmD{qO@AMBMlk`r1=9Bh9L$CF>e^g4d-U7qz5`k019>pHObeN@tWeRH7L zB!HMz_6N+`9DvE!M~Nk@TE3jat=WUGnxQMoi;piTC?M3As0`d*uqCiE{mFHDYC6!8 zGZxLV@B@3aGe|#zt*S%o6(Ut*VR&hA7)!y`v&wJMJfa;d7%~UR zB9xbyaC>D``m6P_mv8A|?Y;rx^~`F!l3dWaKW8ZtX>P?*;gZX?{1p#tFK>CIzn%<9 zDR6lXkP_sU;VDw>p5@CT^{t$HNLDh-i}wGux3|b#4rSRy23$Qdk~QL!;fuy|^{H0tnQ1WAGR`7|bvr4D^>w!(gU<1c5^Z3g`F!9=TDX@pCcgnpxl7pG)6aH@c@t-9!qYW(SsXx^T3_Ydg>8_px)0|zh~tsyHk6%`vO zGtWoyWOCq;`PVmiOnS>BMDG-K&27g&*Y)}y>H4Ducz)hko4hnKE6WDIj>9-44hdGg z1CN&<5QPjLBOVF$hD<(Jeb^CpNYhE!Sw7#W@4fQQ!=p0}c+{xj@b}Z>Apahep%^$v z`}(i4vn_V2^~%(!MNM;ab4!a>KUc%<c<#i9sB`&ClVh;e-AzO1=-(Sz znhhvyuP(f0nr!sxUR}pcN0$HX|Gn|P{FVN{nNI(U-`=Hj%T$N~!&S9)#huFwjh-l* zOi_oNpIH)cc6Z7@kHkg)G253H9PL`k(xgoc%eT7p!r}73fX@KcJJOa*QvsfevOZ1I zf$?+OS6^>fE{o|l$s{UCe8j?#e`)0ncJZly%D5PJoO1V7^^L`y%UkPH8o|c-@tUjJ zYY#gvPnZNxH%&vs;B&^>{~Tso`P;`1s$Gd@ltCuX`$-8v!+(#F{k}}jYGX!b-WHUZ zd~5$&C~H-$zwZ0^J)i&3NW(eW)k@AQ>sm(-pU?%9u^rCzX1W>{S zc;d`qXI3sRqv0#2yq;}aa}RAE@5~Hfi>zgkEr|Sgn@6kuT$56Ra(}SiN>6~RPru)C zHkMpa6ujnZJ;vkPydY-(Dq%@jYN6P9*QQ7+X}VUL6D-rEn-5BaMULG~GcaoSX>zI} zGiBZ6sXvSQ({(=KRYPQjwb#e{=`V*d2`>H!I4VE(<6m(xd9i(rt=rB>Y!zeP+;ic% z@$J@kwYk4my>_F)p*FLc??x@8=UYEYaq>#)IXL_ z3LR9B-t_P$SDZhyJy7xy-?5oEj&{bL5Z@-6Gwf|vP2VcA{f@OeI1H>>I@bJT*??)7J>?`o;O+ke;L2Hif^hvD=mnA7FPxi*~CrHeAL?fl$Cy*_W5jkwMs z>ro(+F5>z;lP^Y+aZ76Q!w2TnW`}+@`pKu5T{3Q{%RDeX!2}}ZU{0LC$h5%Vm&luz zMH8CNRJkJVALWeIXej(vh_YhVxLSrYOJeh*?WG>Nt}#jdO4N6|_%_XaYf@jgu)OV& z^0oz*X3Uk=v~P~&nyVHN{2=8x!26kIZ|M|H=~?{K#Cl)dG&yoR_GG>$uP4A`2BT~&G4eN}^U z-fMZ)PScS2;m}#8xtHM_`NTOh0%1{kN(8BG>5Eqs2Oo zuUr+CU+$d34Tb$lYyQ5TBa!j#!tGlB^N-HWD%|k=pMO+qNW?SafBeh;WyQ?$o%{dg z;!gU1R_Xm8+?-ggl_O0lP;%5Pc6$OV4FrpfHIN?Y%a$l!L7X!VFrgzEaP4^fkvJv@ zPiK7QPPoAmP-ZVx92g_z@vd%=3qQlp1s8+#T`VRoi0mcbt zVF3|A2XXSSOplDz2PQ^DNx`rL8KBb()OhvT@|m)Iu_$;6ybzEy+>>qKF!atRs+~h| z45`o0=Vp$^pfil@pA?+9+M!34^PldBW_ zwr%-0Q_)$aOEjghI^itOTXP4PWn&WqFQiW+FbWVHm*Z?eRzAVZ8i`(3j7W~r(HRS_ zcK{YYHzu_-cF|kHy1rJ9oHekL2}r4#eRDJHAB*3S&P9%fT%Zi5Mr=rAF3W3NZ7~da zLNH0U5+L0}29Y74r84C#Gw)7Hjz@0R2K0lI?Xg@7u)1zk>(=UmYO(?J5MQI{H0q0^ z-AOYr`0No5f&~7Q0vj)tbdFY=>YX487W9<|V5vV7&T1HbeCq5PD5mkHriD zvFCn|@jbo4-t?o-+cUsC78i$?Bqbc~2?l*o5NQ<#hTdnVx1!-LPHTd7Qp^@9aUqkY zjb8}vbYX%(116luM4Ww7a8 zWVZ3zZzy!7A{b*FEr$BNF*5!3+6p`BPcI)%i_`2tgs|WlSUTVnM1+M0a^s<|McyRX zjD|G*QcW0i=LWN!5fBt~@Wy5GPT0cErRg0ZXZ4+FWtojP_ucI!x+{!;nW`Frcm!KQ zJFD<^pf@R+>NRmnUzocO8+!hDJe7m~la&v?K8FS_m@eC-5wk)hD3P^;&#FZRTo9jb zp}0pBl{6^tHt=}?o7QO^RO6wkDS;~B^-u<C`XVehqs z)2QesqzrdVoG>H^vZVz9nMSUJ-dAo|DoN{{-&+NQomLygZj)i z(l$0zP7A__-Q=K7^1j`h!Zw?2?Etub1Z@W8156}nR8|C7 zu@Ht+r`ei_(-FuSh{xY+@o8l6v$_Hth`W=1vHT1T#u~S$J{NqR>pSSs5%&*p^sJpv>=687CTvVKs{p$S&(-UuH0eqV8n6}RIh0sK$w~m^tubd zqjFU%$cD#^-)ZE*+^i}Atr+Xh!B6P1i%FO6a?T0>!mo==*GiaFlla+Xfka(IKS-;+ zzC_p;mI$dOaO`4z3DJZ-a=aHVHw00o=JpZCWH%}&IKl|zod`4hFGlbg)oV;8LLLI{ z;+O84dkN{!{+p~B9At#hsha5K2+%aIFDcpWtTRAhEFC^=H(oaTc0L`Q`Xz=$ja(~_ z$FG6$0S@Erq)?-m-bwx}IA?)|Btpxu+ z4k+1`DvCpPbECS!0vPrW?2;q*f#4O;5Tr7JIzt9d!Fow>$Dj_K(+V1!#sx-eXUNBZ z${sRiTLho-C0O1_ByjU|K#n$rV_{w8-ijJuMTsv=Sj_;CxKma1jJjwLQcGelDP>vw zxv!kjHwB<2V5_Aidi%b03WXLf z{Dmu%wHW#pK7sdrb~b67P_G?y+Nexu9(;*cXC74jsCsVW_m2%{gBDF@wkV?WO8hoG zy5)PNH08r~?DO#39C_g%ZA}nAFj7g}chW`YY^Hq|j_pZO(fo7?OaPyZkEoX~+m3(r zV-piOds#+gbcvXOD_2gXa&O@8WR8l{(vlc#J=#v2utHDu=`c$72u5;uY${9NUA$10rzU)P&MLTFd~&=l$*1(~bb$24%RG+h*OAL-Oqbj&Bf}IsyMgJ~;nsrGIr4&q zIjMrJZGp|2R1Tg08+&gajpg3I4PQ-C2}L0yrBE^@bBKscDMMzJA!A5nRwJ?EU?` zwxfAtjSYvzBImMbEEN9^ZSk{-w}%eOH6DoA*{uES+_1jo`N?~BV*4A|ytl<1Je;!r zpX%DnuFj#&O8_=kY&Q)$_$m3`!nPZ>9RY!jb4JCw}k-YFzWBZd8&6xAeU38sh-t|~kG$qr2KJcGliE{lT;qTRSa+>MJ{8e!= zFNVBlV|DJT8&2Jyzm_OiWO1tWKti}vPSNw?e9gVD4F13#GSP1e4-)^iY&Kp~miT1q z?Q&f5HCkImo+LZ{YJ{rx5%m}{-IVKU~{h|{fKFS|l>nH9M%QqEr9CB95v!Fko%{@x#_f$G1I-w%9m{kB$r1{9OvgH?Ag?aTl)R#Wv4E4c^#MkJ6lWq!rG*Z@1#pPH^qn)SR3eArYMIz zObcT<+GAU_?cl59Bd>!ReZ=IQuNt!cp}I?=uB6nw$&^B|MVjrV*yA7z#UR^OuC!g5 z&$Vg89*XLna(5k1uh|AR0J1O%UOe}`8)CJZz=d62r z&5dq;@7BMo62t@Tk=Dq}PZmk2H4F|6R8~;|-^}>vDAUU)q-meg5#kg7xx7kt{rOZR zl85hqx|CNw^k26obw>Q_-AP`CyZ`3~|1$>vpX4b4ofhre=Bu4Q zg?Ih2?*?PqZRn&Shi2&)yTFhMDMSp5VNS&{{`nl{s zqA*yr#g{~5;62C3$Cps9mDw*WoCku5X0->$+5SdX5-Yni1T;HgRkYi;_m4>N9+Q@l zG10cMu$a2MYjDe-c8zr9VSN0nF55S6-pq?qQ-q)aTvn|n_Q=SHRNbC`ZMz9L9H195 z%@h$7Y-)aCREGv{?bIgp$s_MEa^}B3tqueM3L?hFY&6X41Xl#Q&2rnI=;O9?)0cnQ z3KCDWgnO$^Zbe0f&&`_)qT4ApX0}A%yT{=z>^$`_Ik|*#{kPlyDFou(yy$3UMLd2& zuABwH$z#X7)5~6wHc?VS(;Apk07_7V#g~fzz4ymIkIjPi3amEhbAR~o;e!Xe43B%S zG7^mH>FEgz4OJ&N9z`IvlDH(*C)YdmKcAcZzLiVUe`>^aO;3D2)Lg6cmIx zeAO%L@djvSrG3vD5yV<#wy-H!SXqHn!a>_)2UdT0zzX{xjXwm3J;}HS}f*8-6B_Kk;_{ zVO6dwnG0L%39u_oYY>cr^tS)HXR_o|(XoXDPRAlz+TpS*#FxGP`0^@cyL<~j&og(F z!}&7Z=m_B(vOku}u9qU!lso7?3~jn$HLJ1m$WnjYo-~jmn&K!h;%{&3z1KaSst1Gk zQtFQlu~t;$1w?>s^c~)}#!a)KJIg1`qvX5MRp2@2{C%y2ugOH;@K8 znnN<-U+Bc=_I)4Zd`;UM)rpUH9?47xUGiTSy>w8}ERR8!!353sC+{ycDQ1Y+5&xXj zOS^eWOXmJZH#zHPT4K7NYBV+MHb#^k-?E0}MQSuj*{U$3Oz#o&&s_6nJW+A2h)7?r ze1_?c^V8eP`jX+wNuTZTPYLVWLA`t5hiHC9^7z&^{kuM+>?P_onzPfgrzb=<$=;}3RsSTg9`Q*wkZr=RzgU^lz|CZgnz#Sw5JZ6OT* zoI3eL#N1EhYyu~@{=L)^O3dt9vZ_$=_E6pzdzP0Smf!DSG1gPxXb{=x&Kw=dEW)$w+(cbIPUJ*9j!)GD;{<|?_ZRonOOs?f6g8w;@R#-RTR#Xwt; zg;H%1E`xhql2$oS6PDZ7cDiOLWPE1x|8T`Cu52q)^wN2=w@&(+ZK2l#{gV}UJ|wMS z{NtCw1f12xnR>Y-XpI+-_G3eH1~Dze(fR)3RSKszXgfqO-A&=iSsDpm`nu1nONL*! zZ&3ZTQnJX|YfLe%Gi48->JR&dk+40dD5?>fwG1*J8UH&-PSmy;w{C&+fz@Nn{awA2#F-W<^ENvZaA2Fy)9KU`hBs*C|LfG>RVSZ8>wfgu$4GB)#e}_KpQfE6 zCL5Z3#A>!jspJ3Pfp}wI65d54DlSjHUT~iA)Z*TrXH7L9VcY z+4J}b`4i96*R1M1d?`z7zI^wnIOh*2 z-f{k7T~(zOXx|nFf?Z5b$J_V5)7IS>4x-_DS< z++*dKocz35Ow@8Trg1jBXYAlxYcqeH=!4vbKHKO2ex3VwvJ>}Nofs=A$!zMl^8C@$ z2R}x;wjU3xt{=4(EL49iI=ux$_0mv2Ltt{ioYV4n%<_5J=p!HPbDm`XSZtb|s;SW_ zEbe$Js-Y!z@j2=1rW52F6|!`WYwu3-eyc}q&UpUtx;V2GTCGCMIgRx(fi>~Lt> ztrof?ua^X^CjF%NYjb#RJ;ZL`UE5HQBCh+%zPoR#pjbIsI+DOxitqF1RDBp+z?C!N zq9M>Pr1eu(dF&h6@i5OKuJv-eT(jE^tf61tVvwHd8@p3t^6HDTJu(4}N`ehvA|AWh zDVI=5uO(4z_-oU6l+kjj{;IVLwYt|WzvV4Y^nUl;6SpUc1;L~2Vx%{h5^?il4fEo% zYTQAKNd`}->FoCa(X*AI3;age)`Gh#VQh6@ZZt+#HV{B zG}n(anu=;2>q@LR@s)Lia9|7+OGH_J46p6k@kmBw>b>tpA?AG}>n1GCBvO~A%2)S& zalTmbh4%zy_gfCq+I=;@eX`|Ux_zG*3PewkOA|v#d%lA_9 zO-(RAcdSe1smmW32_&O|f8;i1*Rv1pK6J4M3$d8bXo!=@s=5qWgeVuz`SPxpz3-Yv zNt)35%Xs{h`4lk0vYpn>)HQYd9Pv6Vj82vrc9Tj5?e}-ilx!q>**Wwi!zp@5AdTU& zY;^jyRU}sLWYKo6gxbH~@0T_o6zA^BoDve=Y1yQ{ zSCDp-NE0#)3=AO4Q-E+laInyQC4e8nWV~+OI&`{dySf%$Jg*DhHUw;%AeIS+GP@gN zu;J~RvAm-ddiehI(a%?+>|Q*|`=Av*(xYVoJFSNPyc`!tLc+mm_zhRX`2v)F zuXu8fayz}b(U$M1!4LYQ4Ts=7%wl)*e;XPeu6gQI_jT$UpI5q5blo#7aW5mbu+$6# z$IJUA0@f0-RyDoczTbvx?VZVBDmvb*R*2b+UPS}oUF@`3< z)~#C+YoEZM{QOj+h3z_u0bBiWk8ckMxkW_sL6%WaurSe821ev2v3FoBIULF+d;Iu_ zp?1E#3G@P>B?GiHW?<&3fz!7y+E8B5QiO&gln_=fn~N8DAb4=_V0*EvlbP9LKCkHL z=)62(R_}J3+7BOM1k6vN7Az-s^MmQLloWA?!8+7xw%u@a!^?FtB|Tu-YDil+Tt>_! zg}V&{&6-x>rh#z2F6|!rgXagY{a(ha9)SgO-#)nm={niT@$p@iA$u0Ce*@$3#mtth zsg_K$>}!n{U_rFTvMmXjpC=|t?{cFCI{S%b8rT-WWI1OqIwfxTRmLAn zA7!uBL-muOy+$kg*HPtsI^}gY{@#Qvgu1+BOenT%>~)$^tQTY;IARZ z*K@s?TTpNoF!d+_^N-Hg1ti)=K&p;T^bu>q4&jUup8F4>@SzBG`t(-}D3U9jyCM@tp?7AlX%G zn?fidySrvRrT5L7X$Hlj0s`u~=yv{zM#Kcw(%rvb_GfVJ!Sm;AcT^NvGtewuU`jNh zxVB{_<38_a%2+a6QNmFE&QqIb=XlXR*f2E2P(tp4X^sR93{&f^|PzNxV+ojtamJdNeS7$BF5q{>`{(#Gw$1WF4DAs7ZeH>Eh(%cgw?V z7oHSg{@G)%>=qMq1&Rk4^XxNR`uoqMHUXXR3uF(_+1N}))vSqYhmWGQrDa1kK)o4d9X^rEvsi378{!u9MyVb_9x5-ao8LNy*-FA%0uedLlFSSmOyCI<-;XYqEdu7%$c&A-8;nud?Zh$;m|Xjh_2A#{RR_pAmNl zSSx$93d>c~|5Z^Vi(*p%Vov#;qEiOf`gQ9#{koxsopS-COJ11Vyhdi}P-Fx9xw zz!DuBOK3AfM@8q^?fdtgJ72C+6=Y;$vU+i5y5b_Mchm;oMX4wr?FN(ZZtlg8W}Jc+ z7cVwfCnr;mlJb8q@jIWaFrtehW%qEE)PRE7RK8)XTfgA+?&XCw(h9 zdB3&#XZ#Vptwd*#&WGE#Z=+q^-2F5YWd%Vg(jocq@$+r6p!oin#6d|#g;O-4#Dw)2 zP5}d=*4D@V`>Z5e2G*M?cJJMrg?CicslK-){CuO6 z7p~_~R(2*}(#zIHW@PaDl*QlOt55)=rj>GL3k%Cd!KgjEcM}ZDXUoWnr!aEpkU$4f z@ss6cjJ^>?C|X2y??k_P>suRBX>+J6nc#UefNqQ3Zx4SJ?ni?7-+TAxBh6schNW2`a>rFHD z3AqSE_Zer)UrXbjbkf95N9SIiVDBiJLc_WBb)c=m!jdlOBNkJGM#5tU2B4+{*%d)S zP4bX?_vXPWkdu(G8+*03T213H50C0sMMxf@H!XW=1$=hK4&X|_jWS%tK~+%?oDdWp zvJNg2>^27uY}&lJvFU=u()4N3?BA0_;kgFODseM&!$=;F`vnG?>n+0l&eiuG*ikH% z-C8Mdlii!;km!t>d0yN}G^hg<-rlT6+Xn`FZcffE((3B!gktUj;G=Ah9zGnTn)OR4 zLK{2y&s)!#nGF#7D__2(9E|+X4~%Ee1pz1uU|+?TT$!Kf;x7DVe#)${{TJHa1rHw{ zg1GC)0IFFm)#6`&@exhr|Ejh96vI^=8*ppXy80gd`*OZo-SV}8=LcEjRtnL)FSGJ} z)}ODAb+FzdjYFY-U;wN+;*d#FWJ^x|)|Sg7B$QiFpktVi4kZi+y21JO>?xa{cL)Cg z`fS|uv_62Dg~0R0{p@9jzsVm|qob*rh9BC( z`S>mbo;S!2*l=-2#RUc#x=@LoL|Eu`_5j}(yTxcx_sKT-06cEL)r50r)WjM z!~wyECfSyAFCgPQ4w7kri+tGIoP?Q*Rjxcl)d#*1EDh>@h(@3nf=i$IX5f3%OXtp= zJ9g|C`o^rSQ#;=F78z@+$ji$sDOs7DqX#&kqv4U5LZ}r=W2Tq#^-wxo(5to?t|%w2 zomMAUj#91lHlJmOo_5Bt6iZn zmyFw}&R^`+pMT_In59zsk>4?`yo#Bt=v%dBRXi0oP~FbbHv;q08cpVeZ5s-p3940T{GNk zX$Д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 + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +4 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N2.0 + +N5.0 + +N6.0 + +N1.0 + +N7.0 + +N9.0 + +N10.0 + +N0.0 + +N3.0 + +N4.0 + +N8.0 + +N2.1 + +N5.1 + +N6.1 + +N9.1 + +N1.1 + +N7.1 + +N10.1 + +N6.2 + +N9.2 + +N10.2 + +N10.3 + + +Line 1 + +Line 2 + +Line 3 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_15_before.png b/review_pngs/seed_15_before.png new file mode 100644 index 0000000000000000000000000000000000000000..9622a60bc1af4b4a33b1a3fc9058fe428bfa1e2a GIT binary patch literal 199498 zcmd431yojB*EW1(PznMPio`*YF6j~!0VS1|2I*GmMnO?hx#uitAOF(BEli;C^6Dcj>`ywPk2f2&lQ+&NO7bdFtnQ;TcWX9&t|HQ$;PJrC z;{p2Mb=E=Z{IPLzogb6Ztb=S38xCjI^COn)r>&%~!&@sX{elAnZ^J--AFhd8)+oPU zA`lN8ah(2q!%g${0rD39b5sj&T>j4s_=n5Ki7S7;KEbOc`t$X{-M7qtzTS|yr1|IT zi7@o4KVR1{=h-$8v6E$xxqKQ6!{8&UJqHV6CqGEf#L$kuJOF#dxjQx*W za2xZPkl@>09if8p8ESgP%+BTAwq2QwK3ZB@*Q1^|R#sLGhsC5i&ug{@@6;dW4D7Fu zk5}HMqiZgV`Sj^8vB2fewOR{1a5+hN`QD|zjQO^x`DLNsH&o+~>tqzQu&|({>1=(l zF`2a@sNWjSHSVhYq(XVR zzN6jc>v(uWwkubdD_CB9{~(={?)mjOLlqOs2DKE`Bqk;%HYsm#NJ!u5?(d7a#l1*N z>_1w3>dI@g^1NejYisNDc%PilX60wD4ri3vLg(j}P{t@$J+FkQTCIcK99QQS#$qdp z+)=XzpPR&O`{$t~*q+zCQ5>o$9=)egaXB6yciE^#6QD)?eUTHQ+AzhBA3i)UeVt_B zC@tMyxj&|=p|NI6OGEP$44_X*^YnQ9TqC2e%$AJ9SUyg`SzJP*ykf*$Nl9sb84uyw zo${1?-xJ$YXMb(9itfKptz2Xpp^>A+P6op^5Ij~kGs`kK-`Uye%TUVEtk&ofFzL_S zA9L);cZCHk9MIsi+n5MP9ycmAH09*v)Ya7$6>Y$LbE?mVbXo1mICL7W?t3aLE6>i( z(uEkqnoj@lCl_=%iGS$MKqz5jv$r|@V}Es6Nl|g`)QF0jn)&%xEtsl%_wEsT&mL?} z-@JJfmfzPgFGb8tJUu-fY>amw57VqtrzhoU7^N6GE-7gicOQH+F(Dy(_;`O^X(fcx zs5eyxxgVsZ{rvo}(a}>=Q)w6(@7rx?IXE~3oY%Mpbo{H3|%6G&Ewv63^Dp&n!ktUac{rVUv`=?2oF7 z`ja`2JMT+HaY}89l<;}i=Na`RgBuuLwb|dhPAy#`=yW(6w!bo%Z$4TUaObf@?3d(Z z{nepD$GsJ!Ej;5whux(<*jD-TO!z8St1)xy;JQa-WTv zdA*4`PX3bN-rDG`>({5pwq}B!x@>E-gw}oo-&)CZltq=%ntUt=yV3esNGj*p5W; zmoHzCgOf_u@WA=}`EyRiR^3%f^Q8V+eq7o!qoY0uTI`|tAZ z``H)kHU;_%o|Tlky~DZ9!t(O;Xm@|qR zG5nsRf@`&5p;D3TP5GOnw&P}-HQ+4tz|UD*BE9vVhIOBU>tT!Lg$ox{lpAK6g2){f zD40n@8IJ_ zTgmUB3&e`06mtNVIFO|}P+L&z@3ND4S0dEP=)PRCq&-}3dU{$_u4A=$++{w-mX4VE zY3#|6NzU%-aB+RzU9qy=e%14XAA)5nVB^UP+wSBiHQPx$l69uzRilNYrOe`%`zQGw z0&)edF?<90!{AG^3 zFWmCdu!3cO{X_cfDR|t3j#A5cHOCmni)h&LnNMcrRa7E_f*^(vta=kNZbhemk&3Jk zWFpOZoTYfaq*T3i^)2iLaCd}6M2@j1U6090`D`+mKWpT;E~TaLmpA1_$Hi%CYOa@> zEcK=d9(DOg4}%kCrlWg3o-wfOy5UY%%EajRrc!zJ_zNKemR7Ts+x5wP#G;M5YxdKL4 zX0>>_Kc4g4Rd;KqDb8u@qorz=q9YTgoTlb^h9(l3XKVW9)}&o*xZ(d9(p2iUZf><%LP%QLANlFzIPgxvRL3 zO|O(K`Sj_&tn0FJR)2JK^wQE&Nl8h2x&c5dcT_A{wT0O*&9e#jYY>DyaDu3$REo{j zA-<|Pf@vKsWgtC^lihmdKGog3rQ}R4Ti(o72S}f$q?93_9vmDDhJkg1rKYmu`cwW* zI9GpfZ)0AC<$QbjT3L(pdZu#z-pbGm`_dwtJHu8yZkxr8SEzN5?9NGbSqq~k3d zC>`o@T(6urzR6{-rmOqq_-57NTomA#B0Gu!W6j5YB(LH&lEKfEzN_J#YU3K;iLMbv z|16sp>w0G2K``Qh^Vpwk^&t1RHFuh!R~59f9dyrJy=lg({q2%_?ZnvYjfsa!@9P$O z)8rHs6ecGp*L=a(No?r-@FVrVzZY&}6WCOnZzOP9EF(&4a;&o7*59A-#(4pYuvQxe zqo!%k*J~kUR@w{!P#!1fI+lN$`-9AcwRCH%g?W9XG=KWXZ%Fx|nBt(D)mPL$48RUr zM?^$K8afKt0?iQwWI9$7Mu+V-E&@h~Lup|X62`{q3FqxGeCh%CVcgww0C2fCx5pyShaOH7?KZL?@2(7WJurXritG%T834hyO*#!t5_U%Md zRktONd;9uG1)QFDrOKuO0=jUz%CfTLQQuC&UhTQgBUlO`3+fny1O!2N? zCvX%zJD8?=3M(|XcUcpHh5D->ku$L;FI51p8E}P&CmC)!C7W%nm9KM_DoX!YzRCSE z{>4BjqpI3=W{GO)YdtNk_~p;_FVb>yh=eGqsp%ce$0`Q5Us8OBH5kZLp04`ff1C?Q z_*teS2P7N@8+udUKi1aPu9c4r@GK<|C6zjAsH;~(dI1i*EY2QaV-%+uo{$d-Po8GA z%i3vAPtWqwQiWRTd^nfI7;>5hV`F2_PPRL2NB`V|BFH_+(dI5;WmTYSVWWWfOen+MbWToLb>3Hr>o40;uZc4Hc+E$+=Zh3GoEJWOnwKpm$H&J@r{y;_zO9@5 zI=tGJ^a%gD(sPE;$jC@4N6vw<1nCOll<{1uLcVIen>T620&oB96$hUsnwaaov>Cmb z)Z`OP^y<|sFGA+)(J&7%Vo31ZP%cWx2{3wa1GF8?HyB0wY_PV4ky1+tqc(zK=H_eg zzWTNDDUr?B9q({7T@GgfGmhl&8Fhd8@BuxsEA{z&YG&rjM6LTOeGVTM8UI0ulEy2| z>Lyx%vS-KZTv2W6R(}8`E85w(^}3$Vk39KrLBQ!JycW%F6qr!Yv;Gc8DDaCxto

X(i^qXF0~ItHYo$2f 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%0A;4pxqQ-pRJpd^Se(#yznl|PIt{J{7slFgh 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 literal 0 HcmV?d00001 diff --git a/review_pngs/seed_15_before.svg b/review_pngs/seed_15_before.svg new file mode 100644 index 000000000..44d6655e5 --- /dev/null +++ b/review_pngs/seed_15_before.svg @@ -0,0 +1,481 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +4 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N2.0 + +N5.0 + +N6.0 + +N1.0 + +N7.0 + +N9.0 + +N10.0 + +N0.0 + +N3.0 + +N4.0 + +N8.0 + +N2.1 + +N5.1 + +N6.1 + +N9.1 + +N1.1 + +N7.1 + +N10.1 + +N6.2 + +N9.2 + +N10.2 + +N10.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s1__exit_right_1 (right) + +s2__exit_right_2 (right) + +s3__exit_left_3 (left) + +s4__exit_left_4 (left) + +s5__exit_left_5 (left) + +s6__exit_left_6 (left) + +s7__exit_left_7 (left) + +s8__exit_left_8 (left) + +s9__exit_left_9 (left) + +s1__entry_left_10 (left) + +s4__entry_right_11 (right) + +s2__entry_left_12 (left) + +s3__entry_left_13 (left) + +s6__entry_right_14 (right) + +s9__entry_right_15 (right) + +s5__entry_right_16 (right) + +s8__entry_right_17 (right) + +s7__entry_right_18 (right) + +s10__entry_right_19 (right) + +__junction_20 (?) + +__junction_21 (?) + +__junction_22 (?) + +__junction_23 (?) + +__junction_24 (?) + +__junction_25 (?) + +__junction_26 (?) + +__junction_27 (?) + +__merge_8 (?) + +__merge_9 (?) + +__merge_10 (?) + +__merge_11 (?) + +__merge_12 (?) + +__merge_13 (?) + +col 0|1 + +col 1|2 + +col 2|3 + +col 3|4 + +col 4|5 + +col 5|6 + + +row 0|1 +row 1|2 + +row 0 grid + +row 0 grid + +row 0 grid + +row 1 grid + +row 2 grid + +row 2 grid + +row 2 grid + + +row 2 grid + +row 2 grid + +row 2 grid + + +row 2 grid + + +Line 1 + +Line 2 + +Line 3 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_41_after.png b/review_pngs/seed_41_after.png new file mode 100644 index 0000000000000000000000000000000000000000..56c1ca5e98a99036f7b4f154bec10254e7f317d3 GIT binary patch literal 211363 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

Ul8OPtt{`TYY~qvfx>$ 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 literal 0 HcmV?d00001 diff --git a/review_pngs/seed_41_before.svg b/review_pngs/seed_41_before.svg new file mode 100644 index 000000000..f75a4d7fb --- /dev/null +++ b/review_pngs/seed_41_before.svg @@ -0,0 +1,674 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":696.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +6 + + + +4 + + + +8 + + + +10 + + + +11 + + + +7 + + + +9 + + + +12 + + + +13 + + + +14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N0.0 + +N1.0 + +N3.0 + +N5.0 + +N9.0 + +N4.0 + +N12.0 + +N13.0 + +N2.0 + +N7.0 + +N10.0 + +N11.0 + +N6.0 + +N8.0 + +N0.1 + +N1.1 + +N9.1 + +N3.1 + +N5.1 + +N4.1 + +N12.1 + +N13.1 + +N2.1 + +N7.1 + +N10.1 + +N11.1 + +N9.2 + +N4.2 + +N5.2 + +N2.2 + +N3.2 + +N12.2 + +N2.3 + +N9.3 + +N5.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s1__exit_right_1 (right) + +s2__exit_right_2 (right) + +s3__exit_right_3 (right) + +s4__exit_left_4 (left) + +s5__exit_left_5 (left) + +s6__exit_left_6 (left) + +s7__exit_left_7 (left) + +s8__exit_left_8 (left) + +s9__exit_left_9 (left) + +s10__exit_left_10 (left) + +s11__exit_left_11 (left) + +s1__entry_left_12 (left) + +s2__entry_left_13 (left) + +s5__entry_left_14 (left) + +s12__entry_right_15 (right) + +s3__entry_left_16 (left) + +s4__entry_right_17 (right) + +s9__entry_right_18 (right) + +s10__entry_right_19 (right) + +s13__entry_right_20 (right) + +s6__entry_right_21 (right) + +s7__entry_right_22 (right) + +s8__entry_right_23 (right) + +s11__entry_right_24 (right) + +__junction_25 (?) + +__junction_26 (?) + +__junction_27 (?) + +__junction_28 (?) + +__junction_29 (?) + +__junction_30 (?) + +__junction_31 (?) + +__junction_32 (?) + +__junction_33 (?) + +__merge_9 (?) + +__merge_10 (?) + +__merge_11 (?) + +__merge_12 (?) + +__merge_13 (?) + +__merge_14 (?) + +__merge_15 (?) + +__merge_16 (?) + +__merge_17 (?) + +col 0|1 + +col 1|2 + +col 2|3 + +col 3|4 + +col 4|5 + +col 5|6 + +col 6|7 + +col 7|8 + + +row 0|1 +row 1|2 + +row 0 grid + +row 0 grid + +row 1 grid + + + +row 0 grid + + +row 2 grid + +row 1 grid + + + + +row 2 grid + +row 2 grid + +row 2 grid + +row 2 grid + + + +row 2 grid + +row 2 grid + +row 2 grid + +row 2 grid + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_72_after.png b/review_pngs/seed_72_after.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0fbd7262b6470ab5c054820e70704ccc9f7483 GIT binary patch literal 130064 zcmdSBWmJ@H_%Aw$fg-ka7=VI=NJ*oT(k-3R0@6KL7?gm3G)gx}H;RaWFmy9WH$ykf zxgLD~XP+;7op1ZBmn1nuc?N|-kw{C4DWgy)@=&Og!$c?H zk<(g+U*VsVMlzCOC_M6CLRD%g3Uv)7E%rdwHD+Ph#kG6#0Kd{p(Z4`{!Ixf?{98RL zS@G$6LJFJbUtT6^S<-Z?=M{ZeRVid0;BOn~=~2oiymImGOTu+OKa>OyL7nWiS0A5G z;evFgxo%B6ggAtR#)K|=>S(a7QcMfm+RLw2WA+@-OM_hIZP!ZRT8{p_yEi3u>VLlR zxp=1Uzps7L#0aSV`}#uIZ3DvpzW#dYg!O-4imHC~A^Gp?caN{+5&ZYH()(jP|9yFl zS*aGed*qK8!~dx_Hwkb=5$WaXRdr=*uqP)a-R9%dR8v!HYHsetR(WiU2Z=O|+KKUt z{ktv{5!IPKr5x=Nn<#Fpa7Ou=+k5P=Q9VTfOA$yXQ$JEMQWpEQO4J= z4{yoGv<2{D$!C|3eyO?AZ3D^l*RPKcJ9f%N33(Kcjg8F-jTq&dw4-kQInRWuH8;aQjn8$k*vO4|&3qXU*Hj-;z+J)Zh`LiZ~6EORTYFb zKEYkjl;E50=7Rik$s@>bc(Bc+-}sWDetBCuRlQU$7wQ5gGa3|`$xZ7JZon6R`2&od-2

!{=~}cBIT9)uwvK^y-x>+Y1;B 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

pfvO>TQ#{>udbTvyAg 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 L{~Gs;!TJ9M+p_WM literal 0 HcmV?d00001 diff --git a/review_pngs/seed_72_after.svg b/review_pngs/seed_72_after.svg new file mode 100644 index 000000000..186ea6788 --- /dev/null +++ b/review_pngs/seed_72_after.svg @@ -0,0 +1,249 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":124.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} + +Candidate recovery fuzz + + +1 + + + +2 + + + +4 + + + +9 + + + +3 + + + +5 + + + +6 + + + +7 + + + +8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N3.0 + +N7.0 + +N8.0 + +N0.0 + +N2.0 + +N5.0 + +N1.0 + +N6.0 + +N4.0 + +N3.1 + +N7.1 + +N8.1 + +N0.1 + +N2.1 + +N5.1 + +N1.1 + +N6.1 + +N4.1 + +N7.2 + +N2.2 + +N5.2 + +N1.2 + +N3.2 + +N7.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 + +Line 6 + +Line 7 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_72_before.png b/review_pngs/seed_72_before.png new file mode 100644 index 0000000000000000000000000000000000000000..e5244251c9bc94812185146eaa2622d642b27d8f GIT binary patch literal 173421 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�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∾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 literal 0 HcmV?d00001 diff --git a/review_pngs/seed_72_before.svg b/review_pngs/seed_72_before.svg new file mode 100644 index 000000000..76883e33e --- /dev/null +++ b/review_pngs/seed_72_before.svg @@ -0,0 +1,352 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":14.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":122.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} + +Candidate recovery fuzz + + +1 + + + +2 + + + +4 + + + +9 + + + +3 + + + +5 + + + +6 + + + +7 + + + +8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N3.0 + +N7.0 + +N8.0 + +N0.0 + +N2.0 + +N5.0 + +N1.0 + +N6.0 + +N4.0 + +N3.1 + +N7.1 + +N8.1 + +N0.1 + +N2.1 + +N5.1 + +N1.1 + +N6.1 + +N4.1 + +N7.2 + +N2.2 + +N5.2 + +N1.2 + +N3.2 + +N7.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s2__exit_right_1 (right) + +s3__exit_right_2 (right) + +s5__exit_right_3 (right) + +s6__exit_left_4 (left) + +s7__exit_left_5 (left) + +s1__entry_left_6 (left) + +s2__entry_left_7 (left) + +s3__entry_left_8 (left) + +s4__entry_left_9 (left) + +s7__entry_right_10 (right) + +s5__entry_left_11 (left) + +s6__entry_right_12 (right) + +s8__entry_right_13 (right) + +__junction_14 (?) + +__junction_15 (?) + +__junction_16 (?) + +col 0|1 + +col 1|2 + + + +row 0|1 +row 1|2 +row 2|3 + +row 0 grid + +row 0 grid + +row 1 grid + +row 2 grid + + +row 0 grid + +row 1 grid + +row 3 grid + +row 3 grid + + + +row 3 grid + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 + +Line 6 + +Line 7 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_77_after.png b/review_pngs/seed_77_after.png new file mode 100644 index 0000000000000000000000000000000000000000..55d9e3996a5f4fad079754d0ec5584b2f840e70a GIT binary patch literal 234174 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

^_n+f;PrFBQX! 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≫Io}PmV(UBFEAn+8& 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�?>;mR4W0RK7kB>sJq_W<(OWuF8Qr*jM zlFq&qJzOStj)G!^k&0c>6|3o{we>q zhyCV!3)3#$(F|Pp$eKK)Bjg%m%8T3cB=+3hy=6U$c>D21F>)^S1`Y%;!8-N*3dt7Z z(yFAa19OIfokc|X`5Le9dtj^lAipg*V0oedP`+xm2x9T_nIg>Kg5bO zpk)C^7u2AZK%L5DYisWLrmG4BO(>KU{da$Z&F<>wzf*ksPzgj5x#&%N4# z+ViJ}X@slFqWD|ad6U-1kkgQ#*k?YN>`~baS}TqPV=XOjD+Am~5`|hvXn){QSMO_1 z_2C(u`f$uc}>cmCMd*DU1?V{YLmN4)Ho2T+-h@&3qVQPEO`B!JuLh zhp9$d%mmu){jld(F3M=QLge`fA~rmOvA`rF2iw1IzFcySvB>s69Jzk-!SCAsiHNND zzMW64((aaaQ}X7P|yn%;Ryyx(Ppd tmfHlTVm)m2|gXw0kO7RY+(ei+U-8+ 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

Mf0T3VAIMB^kGGtU4aY)*?6FX2v|pyJ$xI{phX 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∈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

n3%caJ({wN!(L)bM3l0}*B9-9oV>ugobklpNiY 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 + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":124.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":18.0,"x":3132.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +8 + + + +9 + + + +10 + + + +4 + + + +11 + + + +12 + + + +13 + + + +14 + + + +5 + + + +15 + + + +16 + + + +6 + + + +7 + + + +17 + + + +18 + + + +19 + + + +20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N1.0 + +N5.0 + +N3.0 + +N10.0 + +N6.0 + +N12.0 + +N14.0 + +N15.0 + +N16.0 + +N2.0 + +N8.0 + +N17.0 + +N18.0 + +N0.0 + +N7.0 + +N13.0 + +N4.0 + +N9.0 + +N11.0 + +N19.0 + +N1.1 + +N5.1 + +N3.1 + +N10.1 + +N6.1 + +N12.1 + +N14.1 + +N15.1 + +N16.1 + +N2.1 + +N8.1 + +N17.1 + +N18.1 + +N0.1 + +N7.1 + +N13.1 + +N12.2 + +N6.2 + +N15.2 + +N5.2 + +N10.2 + +N0.2 + +N17.2 + +N18.2 + +N12.3 + +N6.3 + +N15.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s1__exit_right_1 (right) + +s2__exit_right_2 (right) + +s3__exit_left_3 (left) + +s4__exit_left_4 (left) + +s5__exit_left_5 (left) + +s6__exit_right_6 (right) + +s7__exit_left_7 (left) + +s10__exit_left_8 (left) + +s11__exit_right_9 (right) + +s12__exit_left_10 (left) + +s13__exit_left_11 (left) + +s14__exit_right_12 (right) + +s15__exit_left_13 (left) + +s17__exit_left_14 (left) + +s18__exit_left_15 (left) + +s1__entry_left_16 (left) + +s5__entry_right_17 (right) + +s16__entry_right_18 (right) + +s2__entry_left_19 (left) + +s3__entry_right_20 (right) + +s4__entry_right_21 (right) + +s6__entry_left_22 (left) + +s8__entry_right_23 (right) + +s19__entry_right_24 (right) + +s9__entry_right_25 (right) + +s17__entry_right_26 (right) + +s7__entry_right_27 (right) + +s11__entry_left_28 (left) + +s10__entry_right_29 (right) + +s18__entry_right_30 (right) + +s12__entry_right_31 (right) + +s14__entry_left_32 (left) + +s13__entry_right_33 (right) + +s15__entry_left_34 (left) + +__junction_35 (?) + +__junction_36 (?) + +__junction_37 (?) + +__junction_38 (?) + +__junction_39 (?) + +__junction_40 (?) + +__junction_41 (?) + +__junction_42 (?) + +__junction_43 (?) + +__junction_44 (?) + +__junction_45 (?) + +__merge_11 (?) + +__merge_12 (?) + +__merge_13 (?) + +col 0|1 + +col 1|2 + +col 2|3 + +col 3|4 + +col 4|5 + +col 5|6 + +col 6|7 + +col 7|8 + +col 8|9 + +col 9|10 + +col 10|11 + +col 11|12 + +row 0|1 + +row 0 grid + +row 0 grid + +row 0 grid + +row 1 grid + +row 1 grid + +row 1 grid + + +row 0 grid + +row 1 grid + +row 1 grid + +row 1 grid + +row 1 grid + + +row 0 grid + +row 1 grid + + + +row 1 grid + +row 0 grid + +row 0 grid + + + + +row 1 grid + +row 1 grid + + +row 1 grid + + +row 1 grid + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index a37b83e05..a12290ba2 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -869,7 +869,6 @@ "offsets.py::and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE::#1", "offsets.py::elif feeding_exit != edge.source:::#1", "offsets.py::for _ in range(len(graph.stations) + 1):::#1", - "offsets.py::for _ in range(max_iterations):::#1", "offsets.py::for _iteration in range(len(ctx.graph.sections) + 1):::#1", "offsets.py::for edge in graph.edges_from(port_id):::#2", "offsets.py::for other in lines:::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index b468559eb..938486e00 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -899,10 +899,6 @@ "note": "This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", "status": "defensive" }, - "offsets.py::for _ in range(max_iterations):::#1": { - "note": "_reconcile_horizontal_offsets iterates at most 10 times and breaks early when no change occurs. The arc L1338->(-1310) represents loop exhaustion without early-break (all 10 iterations consumed). On any valid parsed graph, the reconciliation converges in at most a handful of iterations because each iteration resolves at least one edge conflict or reaches a fixed point. The 10-iteration ceiling is a backstop against hypothetical oscillating graphs; normal topologies stabilize in 1-3 passes.", - "status": "defensive" - }, "offsets.py::for other in lines:::#1": { "note": "In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762).", "status": "defensive" From eaaab557c99114eefc080f3f6157cbf6589c9cb9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 20:14:46 +0100 Subject: [PATCH 089/158] chore: keep review renders out of the tree [skip ci] Co-Authored-By: Claude Fable 5 --- review_pngs/seed_15_after.png | Bin 133734 -> 0 bytes review_pngs/seed_15_after.svg | 272 ------------ review_pngs/seed_15_before.png | Bin 199498 -> 0 bytes review_pngs/seed_15_before.svg | 481 -------------------- review_pngs/seed_41_after.png | Bin 211363 -> 0 bytes review_pngs/seed_41_after.svg | 401 ----------------- review_pngs/seed_41_before.png | Bin 303067 -> 0 bytes review_pngs/seed_41_before.svg | 674 ---------------------------- review_pngs/seed_72_after.png | Bin 130064 -> 0 bytes review_pngs/seed_72_after.svg | 249 ----------- review_pngs/seed_72_before.png | Bin 173421 -> 0 bytes review_pngs/seed_72_before.svg | 352 --------------- review_pngs/seed_77_after.png | Bin 234174 -> 0 bytes review_pngs/seed_77_after.svg | 496 --------------------- review_pngs/seed_77_before.png | Bin 327321 -> 0 bytes review_pngs/seed_77_before.svg | 785 --------------------------------- 16 files changed, 3710 deletions(-) delete mode 100644 review_pngs/seed_15_after.png delete mode 100644 review_pngs/seed_15_after.svg delete mode 100644 review_pngs/seed_15_before.png delete mode 100644 review_pngs/seed_15_before.svg delete mode 100644 review_pngs/seed_41_after.png delete mode 100644 review_pngs/seed_41_after.svg delete mode 100644 review_pngs/seed_41_before.png delete mode 100644 review_pngs/seed_41_before.svg delete mode 100644 review_pngs/seed_72_after.png delete mode 100644 review_pngs/seed_72_after.svg delete mode 100644 review_pngs/seed_72_before.png delete mode 100644 review_pngs/seed_72_before.svg delete mode 100644 review_pngs/seed_77_after.png delete mode 100644 review_pngs/seed_77_after.svg delete mode 100644 review_pngs/seed_77_before.png delete mode 100644 review_pngs/seed_77_before.svg diff --git a/review_pngs/seed_15_after.png b/review_pngs/seed_15_after.png deleted file mode 100644 index 4591b5023fcb282c7a711a6d6dc719a6387290b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133734 zcmd@6WmJ`G_Xdul8xchiB_$;!B&8c%3P_i9DcvC5xCMg}MY@%emXZb$0qF+m?pSok ze=gnc*8Tf(&KT#zIb)n>kFk{{>sj}6-!rax&1)`yMR`f=%Osc4(9p1@9^6+(L&N%r zhIWAl^E|wAD(OuMe_$BMNZv;~L;aUjmHrM5?IxPk{ksoc<5ou9JRkO*oNYLmwi(@G z`rD5d@#E4>j5p6PU)?mmRz!{Y?6OmOf9fGilJ%(TLyIg8rLKO9tm0he0@8?p2ldZ! zF=a6Q-iYyV41T9A937`DsoB_-=NRO?Qkmd0>akWf?>UEa!_{akjs}~IPZ3t~`}$jA z9*J7wzt_|LoBMyh@bu~Z^$Y+0EBxi0{{+^bKcBx|OZ4Z@=(Nw+{`?v90lNO5KjXf^ ztp4-on>Vj{p8MkkF)`}@Ut56Dy34t9$N;9?(y0I@0|SE($;r#h%Uhe9^6>&rbFDYh zdlr%1e>?&jt1-I1R))vkn!|j1Jo{sWy?w!+YGjMk_CnWyzK<8Y7_YA_`9Ma-WAZss zFH42<>fs5}Cy&f_tWwi!aerg_s_?erk^DKGP>Em?ZujklnVA_1VRzyy7_n_?y1HHi zx-JJ5tiL}I^9p=kt3m$p@w}*hsoncQE1T>Py*x@jy9uVe%FyWOgKinN)$y7dPNo%1 zlfp8|5Q?RUg$1*YC-5+|QVA-7_1$YKXpvD13k#_-k@5*bgX7PC-(C!jX1|-`&Ye4X zHK*=1-X}4GKHuL^+18xwVzE`OuT>zO%^sVjsb;CkMX}!<ef$D?sLg2k$u#AenfFrtbbccRsi?Q7WElEQ+_tDYzP*2#SP^+` zii+!PyyHfurY_#Xzt@hN z^keB`*;>`!*!z1g-Af`PBG$&Lj=uc;*F_vMJArtw!|iB6m$i>d$y}q%ge|t-Te18O zbB@ya@vB3YdECU_$AvS_6(<^3>^7E1D@xL4U22X-B`LjTA`O0j#!b6xp5_tXzke4G zBy=m8pP3o)+8a$xO-+b+_UswCptFw4sFTlr9c7S2a`{%$UEgx&RV^Kzk;z%-@|YMB zpGY+H&|KY$Oa*wD-PPd})hoYmjn4Xvt&PKFO{Z`$+g!+Q;tSkaT~~K?RFsCsaIrfT zHl?>Hgi`d>_o~SH8YMZoR~HYrcGX-5J)Eg0a%s}v)}mg-Vc{>aGam>2=4rCt%Q z!*2}@L#w;K7q6O_n0TL^>@687_;Q6meE87F#N;y)pM=HBz_9UkIIR@sH9WlJ8x}u4 zJ?`r2YTj5It>9L_B}Kwz*6DW%PgzC9(7*t;rn$K}ATV%mbvW|v+pdYDZZhm@7sRX5 z($d6}71NW$9T{2KBCVXUCt1!J^Wc5Nyf!*oT3U{dj;^kyeHOwFbFz2u)|QNWAJttI zE-tRnw8L2k`}f}4F}}sXAzMI_od5EgTySb?s+XmJSs_tGn2oKY zQP&4dJFjw6+Nou%$^%(_WaHE_QR|B=n@_l7*kD$Tsa`m|O6k2n*&NQK%NkjJ()s@0 zQctA5w_D?DawfHGV)jQ*_in=Bv_!Iv=Nn4;sx0grg71yFFXxO!E-f$n>}2V~KcB4H z`lyuH4iznKG*YU+E-WYr)A0Y0l4A7L@6xK^bIIj|sI;#QS4g-Xcnwu~?9C^5*zB)Q zVms&NL)=|3QJvfaZw>ZtOLGZTE)19r-6y6X3tbecP! zvfe~XNl7tNW<$Knt3GUYSrW(GD5*JNVPay^t~bd4D0n)S@TbDwG*SRNqw9b$1#_ZG|?z;bH5M3%hR*6Qeh3Q-a~bz?0WYqt ztxagK9{y}z?k1V+hdbREGEij3gJ#jlo0@N$+f=&XSniKU?>;VKKl4CtDfQE*PtnV> z`*SDLJ<%n+^pySA_I`&~v1MFO^PyMQXevp^ea=qkY+Jv7kAe_q6+UcRGwQIjl$Gbb z)2HtH>{*Ov!}qr|l4IZ$z9Ay;C2VF7mmyQIZea2q{>%651($Qi@Is?SP!KvZoNx9{&tkJEnjCf zRypV}Qf(`3*m1noAv#bb8^hI9G3+#;n{KXI<6XtvQf>LyZ<{D$d&VZW+?N&UGJSe- zG|aa$Qsxj0p|;+na20&BK7atyX(z-!n_?~Q64_XuoM>O(-3y)%ANKZUsPwULnzTNU zliOKawBy^{+>Dbq{}}-oV-6K+P`Bv(nKuJbL*!L6>%qbx0SE3!U#1R0;==dsP(N zT;3V;i;A9oeU3F2DG@?((vx`lkYB`gePXcCv`@XwWJ|$&6VFM;%;=gXux2-y74UgKC%qx3)d%v6hy*X(3 z7(PU}Xw)<`+$<1Icw%!{3}a;J+DcBHE4*r-U4S!DlIP?=T_T4IG){?c-n@DB>Q!^I zG$oDgXt~qQQlFcf+qG-gAUb+a{C$z@C?trCf3vVdMCJ94d(~bVI}xkS{!X6HNuRoY z-@w4d3m4?#_%;^P6L<43grF>jH1S6qze89AxS4qbfo8emB4pxTmYRb$Tdqs7tHULt z;6}#A#t6*7`pxyatK-hY)=M~nge=Y9zppF#Z1I!5hTsgjVt;>sH`8=&q)gajw^w$1 zvxUuPyGxRQfB*s3E|IN~|G{z~Hz6yORu}Ruq<2Mm@W{298Ka%m0_K|islY_9T}@-- zRQYsL07d}>Ov=j2yI7+Mr zr})=8dBsm!6%vHp;4ts{Vz}krt|0eXuf3QM0U(Rx_HAk5uY2P@K69GN{C{BA<2U?G>H+7Caam8TCE(DS z$;`?v&|qGQfOO`@K^8zG`5IEK<6^h?s9C;-C%Qfa_st)MA&iZ)v$H5@R$?=1Q+;6K zl=$O^M#n}NqsnzWygqe+szhvhapB>qas7RLUZ)51YFRrw1NsB#W-%F6X$wj8bJkPe z{1+D&mk4)M2oOK4KEwJ%?%a8@@*_W?q1N|edV0DKtiCPrySB0MY=Lo0_2ClJ%et=D zJAQtCLhE1tiYe1`n+@k3_v~>v1Pms$`JDz?wUGZv0Zt|L#w5xx zz6FigxTvZ1g9nVe&67Lr-VzXSKRrIkQqLnqfb(nOdEVf)iIY#?%J!P7>Uc}P-~Gf^ z+PA}Vb*Ol0A`sW0J4I?~q6P8{_jI;)NqZynsr?eTa=N@*iRkVRLu@*AJ@13r9PN_N zCwjkKVSx)>KgNXJEHQM{#&$YNQ&TerS4>IiZJL6XRt#NTR|>=_?Vf_ibr_VjkwryZ za%XS{cWOoo6oQ3^V~;x5Z=igI%sghOKI5)EazbDd;)w)aPLvOPTf5 z%1Y0%O1H7B7e!SG5Px1if1be>9v1ddg)N}9wH0g`Ui8oc6m$=PVAUz@tZ=byvtR-* zi>Y_=!=3L)JZsTE-E8IT_(*!Rhs+}b|4$V0(yFqOH8Prk+){IP>OtjK`>3-wF*4F+ z<;R`bQs1$#hJ=H;wpdD^<0m`U@55m#DJg+jG-sG3CLbOiqBVQACW@ZD7F=7mIh*jk zT6y-c=s$V&8fGKz(5&k>7~KK`Sr;a>;u!*h?3zLPJBj)FIvVU|iI%aJF84#s)qwDU^?q@s2X!2B(RuOV6TX3?Wi| zh#FaQ=I!e-3)=#v6vDwA!b^gaS}!4s7Csr-3V-qND#Q|8L`qtkg*yP^{v&6qZ~Zyi zku2J2W8WmbkP$4}Tt|ASBI8o^6-p5yF0O}OQdJ#F7poY9g|{F==vFw(#c)XpZ-Qxv z9cWFEAyyvC;Y*7xJmfMSVZqcXV>f&)CL}$hZmrD*us^o}QWY7^Pgry+2^(C+!DO5+LIEoH18J)PE-q>GPg%tJm$M60Lk6w14?s>T$&BfYQlG;|Rex|b}yJO&& zCa$@Mz@(Du=Iju10I;(E-3~tbbBgSwqkwj=zN@j^6%1d!Jljv{d(v0qg?<`%F>4vM zU+419 zthXla*cv-E9gRh$!#V&)m}>)j0ad-Ow6t`dURCcZDUa3qv^%|scTz7D9(q0}PDn{5 zH8tlB;XPCi==>8BcWG>-n#18`=Hy`G;HdG+M{~@E_#7K*YDR~UatCT)Qtcwg^T=9b zxGjf@%ww`3ETDoi1mH!0F9|}LN=h3YKBt^4EIDm?NlFI?2M{|FRO01{C@J+dG!{lV zp^~goaU8-E^w_mRAfA<@s$gACBsgqNY*Bf6`ScP$93K?Xy{k{2Ji*@OCB71)D!jC` z1aaQRCU@?t161yY?<~e7D@MH!x6L~i!IdMJH9xGedmp<$eLL1j@>OWELD z_6H3maIQ8otxP8uyk^{Ut8GalxoaN^fbk<(@c)f0LaFE>b5AMwo2e^aH-C^5~7;c%uyR8uT z?%liRbI_tcWW^(Q1{8=0R3&56KpLGX;b2^)$S&L7?oqJhAfuw9iV+j5XzAz}C~A!t z91skrmg)}X9a|V@6j<|z(3GK|5XX1Nc}2sirS!=(SH&2ENm~rJS?A4;MSwIVu)h)Q zV=12prpY~{IgFcuCQ8!0e2bsoZKU+cQba&NK;6r$SXA(!Tr_~kSL=!NxAkO=0XfA` z;vqeFZO5{4svm^nlauExCY9Ce+ctw)^wkno>E$(zI}X`H-4+!U1$gko2WqEj06Lx{ zut311f>0nKWfX*WdZCo<`;XtJcX5wiK+Md}T91@=Rd@jv2M}fKgLq(W`O@veK`VA* z_noC;qoz>6aN`~_VNgs%z(QQH z=|YDK$xzv?Bk{@iz8&taW{Heexa6hPC5MPCo!CI6GC0_rEy;8Q_>!u^D>=Lj-f~}D z{CT;<{rle_;3P|ZWY#HF>?ttqpqQ-^bXp2CQP0DWBo^`9hXOf+v9+-IZ6hQ?V@;cx z+0zo=G}Mly$;FarcS~VT+VKfcFU`Ey?1o~MMdOp$Xm^DR63Vbc;>pRElnDY(nJ!0} zs#!5XD@C*aK||U5-8v9YMm{~R<60KRq&nPQOt!i(+HSdU>Z}}6jdfn zPd9JhUK&3;Eoqru8ps<5;Ge6R_rMzPGgKn#zL8M#Y-Z`7Wag8K9<3At8&-0tr%-wI zH#9}XtGUdK3^yof#(@EX5QibS;3&{`p4b8iBK5rJxAE~g{!dWEBJ6&1Yb$^kSs9rv zy*9)(Lc;#cO;QxgAPd2~@U$5U<$)iOC#NwVsuF&{G0-a{WZOV$N@#5agZ0Bj(NDte zMfC<7+x|g8R_v;5g5ZKJ89YaHP!i|AE7d{ zo}Q=%-`jZqlA@bSK9;9V@I!CX$B!QySk2X5ckM%*qM@eN@?!h5oe=Mz^IB^H&J>G~ znSqhfyi2!$IZw0D1WseAA()ic{o;8j;=-)%8s5O6y6@`h8fapxEHB?qYFpV=ZRq?B ze|6_uK|w)GTvll*im<_^g05tC&5HW|<1Cw?TlFUh7Vw3i-7{o3^9^TrV zZK>KrQ}zG?C0;(AGTkhXei!OBu-@4{*VU5D(Hlo?H*49{h4QE==3Yn@8B-KfrZjI(_iC{rBNVul6c;A}0_gcpxiW>3o5Z?1NA?Pe)Ta>TM%_W0TaKb`0(L&yCAX^$P46HRkeOQ zlvh=xq}prs$t+jj_ldG$=Uy*@v~DssMhFGPMy1;p^n+5(BaIIrmW7C(?n6Qvj-Wio zC^r7$%!cvXI6U9|!z)MCK6;>_pdc^*8ZLkTjI6Adle5gMtXR%x^65Zj>xWPXL;1qm zvI$5H`c0QFUlwq`@U{U6{w)0(ZwPduw7@BH2?|ye6l{Ko`9Pkip{S@B$*LPx^=8G{ z16UQ`*da_R#JzhEijTGzdw^jEJP9B=LBy*(HCC@U`SXAwJ29%WRqb^|M@tK&)b&URnh0zNcr8d19d!>PQr2YuSX~M%h z$58xh&FM}aV6OHY%-?J1WQP`Irw;56FtHIeS-<}U?U)F{k68p@F2S`@-#_!^#MD2_ z;CERYfqVnD1}zLS97#w9P(*!(0t#Ty;i0>a`o-Tj+<(huHzDRT@cR|`TM@A~`ESk# z`oRAmw?IQ{;j!T|Q*e(Tx%HjED2xTe<;`6l5+fgV^q-&oRDwTFIbNlJ--+kt!^b@p z#!ce{=fs{;{p_`(3&qpwUo%EtdyMR=9}^xi@4V*xYk`6UMXb5!H0Asr zp(XLB0CYU8_-W8NM%^tm?mDHn-}CgY?7Fc0{46vx-oBl3g+yA(@x zlQip)D<6RXATVT zJ2~Mrt@S(EyZy5?k$3InMq$2J*6a$I@&jpp{P;3eUFXq@5j(P6Q1Shkk^yZU@w4NN z$&Tl)>XELO&2zH%oT{-!cDDGKhVtiKZYqjj5Ip+UdsXIRa8YUR>R%Q8s(q@+@7P=F zkJ0S946Xb<<#lHeD` zzB~vl5x;O&`aP$G#Vd-yEq7?4G4$sh&^qt7tKJZ8UYd&V2`amPQSf5@z(IbB33OoH ztHvI&69cv0WyVgt?Or9H{*IPf5N(L^pOxu^o2ewO36m>pNG<*1R3<`I70rhtDL>eh z-G1M%U(Y3#HxMgJ2XLDM3Opi(^9@EEjH~X#72M~{6n@#r7hLlvPFN1E^42)OK^(uS4mazf79-$qwu2`wusrWR!^{4dVq9X{DrRQpJafr9zF^iDl{V zVkys=3H}r@h&@`kwjo;6^;yyQxZQ@pKY8_)OIdv4q85WXW9*b}xu&e|ka! zzk*9#uHijWIjEIY!v7%uSC-Wwv>-3P94pd2r7Tb5t9zOwS){)t{{G6Weer}-YFe6n z6gyOER6IOtc>~%x{af=LltQlSC>+{mVwv|<%M|c{l$2ES24pTEseG0J1N!^>1H}TF z1EL>*WFWaU0uy-b-qQRE1ZckUJRhI2a_^-4Q!2315Uq$}=m!Z5CgI7Kj0e1>ZF*!j z&lUq#FuWRJT-KBT&8w>-`;P#|_XWd!;eys}#YO`uFmQE%--~VCut@}+tx#EM8U?~X ze^%p{2M$d^LH+erGQNrNi54h9)+)E!Cng>_89sTk0UeWVK>GVxx0Ag7ImoB8J`sfk zPV)Z~mqcERy{DXrabwi`I8ll2om6N_+EMYFF0-QHRk>Zw0wXC%VI<3scw&K1)mKs3 z0!;qdYp<08}2&*oZ;^DLw%dJGKfdMUnZ?B-~0oJ5JxqIzL4I%dXMT zZ=BB8tmFP8Qz^|h^CrhPTGw6|&l}*4cJ~hq)UI^hfF>q%wJ&2~xvUQD03zaz#sW?U z%yN%VXh6pySYXE<>H!c&NQL%7{-wJ2g5kMTXp!s26i5;H;@cY}m&Aa20lu&KiJV-p zz6CDgTVo@jaNW@9Vijmd3j5+v$K0-{u;XR&)OE8&I+djDb)*pIh@$M!?7*N zwiulyox<&mNPv~_%qVJvkB{%xE#s!pTTq9_ zAvbPGZB{MFbR-B1H$sdTO5jXy-MR(MEkGh61p%$lm0*@q20|(QtjN3vAXZCrGqkY76B5=2 z&zr-V!A#Uc;(%31NJxMd*qb+x3I_phZEkJttqiK@>mwIAZAMC?qKK(La{}1Q3v@8u zJv{)cSO{An|3j7Gyf(7v%)8+;eTZW10i^<=5D;*g>Km|Cqfk#lG2xy-UrVHO{yz$+ zn6!aqFP8-<3Pa_C?%8> z(2e>sRhzZw5STkl943WsfV<$Fwu(Tefpdeys6SgX(Q~s2j;BxMK`0j#YXDFd9Yt;E zpc@gE00{7Kn|I808sr`-X|i4DPr(mp{P^HiAm3kHrG%ZxEiyGV1wX;?eGKdX{Faia z#4T!0U}s&%+)yn6>1km7pq23)w}3e^GIIP$BYDCiaOZ&QU*M1*LXYm~M@y4IzAND< zP+X;&|e}Dd4RvMS?})f z-YtX{zt73CenP`@EFwLJHg4?pF@VAP$5TX52)}_4COK&h-KXGSGIH`00JYgVWt*^w zn9F?`L?P$?!T>`xfC?bEjo|wADLcNf>8UA$om9|cxxU7_d|7Mz`qMzXpWgV-qln?f z;CT)LoQ5hdd>TMATqs3L^LcuJ#^$HY!58#DTMzRXe8b$KxCgD(WT3#I9>@Lg@#8|Q zZFST4?}}e}15oCo%vN7t4~0NpMn>6YGm~U6i7`*?b6k{&OhQ5e2wvqvjxZn?X*f9x zq3nUv4-5$*LTE5YfJ=xR%)B!xJOI&$IuGr2L?zrnElagZ_pJoP>TuP^LRXhSvGV@? zd+1cJK>NHK)uKF`P0geX+3oSBhV`BrF?@_?^ zTjo_oK!@@Q6z0sc7S`6QPT5VN46 zb<|Jkin#VsVy2Se@Thv&owd^G*C=LTULsz8-oA{aLJKr$z^Fq1G=z-bzBB2rM6yy( ztrd^x{)8`RB@$m#2$PVLlM@oA6(tI~V(GIv@ z5b!YZ@o8XA+Lw7|OZ5=n8lv_C1zUpn6F*#FxFBExNz&=KwSTyrC)~Ic{N`(2U96~w zqGBghu)U-#;SmwlC%eNeUIbt2|D)kdiWffJpLVZ0MbU1%gQjwHJy3%~{W=YW6P>LU zM=({(CMYZRkmI&oBw%Kvpxl8TzB6)cw5RqFyDaqk!CxTiCNw~lcH<%FR{VO0Fc6%K zRayq(G4$NaLj<07D}$|pxi>!n!xeD&8ET5=HFQ5APQC$gFk(|uKo@Lk976~F)MX$W z-9T}aJ_{T?q#89_%nRsT|Ji-#br4fvlM6h=d;-}cEFz*@Cl|za5MOki`cwttZ6K0B z8^vsA0+x`V^T6DE5kxdlusNfyT@W^P!;PWcUkIH9>6hTImr;dsET_GqA^?ePBNac~ zot>SW+@9D$t6eg|c=*6wSve2Es*`I z&Lw7K69y80>SjA}KrZqwG}I3l!tenosQhs0-Z64>tCndgDRsr&C24VnqTUk1Q1b?4 zlL$8b-0GOv*dyTOgrTF|oKe66O_{gp_ki32BPNaQU3HEO4|nTV@ec^-UNP;3Zb64T zJ8&T}s@k4~S~>FRJ&)Kisd_g^#3Ad=?}H|$jqXRNSn?^YQ8_@b~2ooU1s=* z2ceF@HG}l_0Aep_1_954!cmQbH=wdoh{~_c1Tb<`!KxBUT~Rh00fH4sbfi~aT*9Lp z0jgGd9$sO39|!NbT?_ddL=7luAm}ci`}vIkEt0Sr07QsE$uM_uFhl`h%5h#M=L?5& zaB_xE1afSGKrlT0j_3Y5=muT&TsaHx%5e~10S0>~4lEkt8YBXX^1lB5wc(OHT@&=< zSAPnylP(o7w-k*05V=ng0=f(6XV_G%@+c_N!T}c#=nYqUd2E@QuZQ+5dIFzF#G;iF zr^Or*Yg4|M7HebiX+AyCJCp1Tbh!HFVfMgi9?V;tgafkVv4fsxW1_p&0=RqA*iWuN{`t_Kqw^s%^MMTCNG6$B087YgQr}K=h6n)`X z_n&-<`eVX?zQx`!7B{1>udnKGDGLyF8`v+O&*`z$JGxQW<~G?X%tX`yfVu)={JaNx z$?yr}zWKSi+v%`WR6{{n`}jdu` zidt~k5aGh6A@-Z4sZDWX7Ywi3g0==iS-L66xdnDYuqIoNLEGH*tx@>ePKq^gdiHKPM2RXour=;8;tp;u!kha^_9F%mK z%c217;P*qw1=H3%p<!-eJ>3e<(GhL8#yA zmXG7h_dM9twyko4jJWi+rKJUSq68iugYwzj-+b}%#)b6b!2iXlgtp9D$n#E6)5AnS z=QuZNi_H+8QHEXXTM0c#ESA_1@%{XNif_j>MlYt9w|)qv`wUX*J{)yCd`}bAHb>_o zXu+)+0rH~Q!9jz30G$orz5!a$$ms_#Tu{I8MNYDG3a(tjOl-s-p^m*imaOikVx~wdhgCT9i0C{ zcbSM;!d0nWGUtjany*}FtpBZgSSIYthMxRQ2vVuL!}RA$$%y}B(>K4M0wM@`-q2?B z`F<~uUAiDf`k!HlqNtYHP~*Wz>odwBoocYdoO8lp|%9(VoSaq%dbwXD+ zTLCj9D&sa{G&7q2WXpbsG9A`PnY@AJ9ry998qjd0_cV=3pbh<^mHyccF>S^TA}T)= zvC~wD7DOv$Q=%PVyvd3taQ;8|u7Yafd=lq@mI-R$<=?B+>_4kV`+q&k(KPXU`XrJ& zxr>;B!X{q>q!y@60futY=jTE-)zu-M8iRgP7v~h7fk_lvk6oy3IaW7Czpfdf%L<}+ zT{+Yh%-nLCi)js5{W>9`2}d;WRJC7RIx*QQTU3g1$^DPOvm%YEx&7dhcNIKH8o0E2qh(OCeZddWnC&T$=8^gp04})HB2S4 zrT!|;`PZ~kkkFZ#nL#VD=$IhtQ(aU9Ir^xAwJ7SRj4Ci7K=~`{&*K@BMkfQ$fE5xD z^g*2hLJ24-zE=PJ{NKo)R2bbh2hIefcw~#Jrl#BE*XQNs0zO0+^n)Y}A$!6FWfo}R z@7_J9kLe^*r3cE*&Quv9&4{e5EX$vlf8|ZP#hpWFCPF<6HJyaGH~}G{nyTtS1w)aT zk&zKZxhoj=bamr5OUil{w_TLPn1BS!*8msd;TI0-=;~S*YaKY> zh(x<}q@k&K10Ej_46h0b{~X@ac2ISX6`Cq&MgVhQS*#^hg^rSoe*KDgS@#w`n}7gLo0SOY z32yE_BMt&0BA5c%yhX-(2b3m!Fhu~(ClJ;G%W$HL6B7{^2X&w>6!sb#50)-O5~ufQ z0(Q~TvdGs6tMNS1y%zHu*>y@mc!GcpDj~?15DMWAT1}I7ApFg(t_BU|9WJik@mZb2 zZFeuAo#fMjvsi&L6zsT@3dAwcDhHE=+XK|CY5AKC3L*f=pwk8NV&(G-8C5Vk08CwG z4^J=ey6~HwN8uxB)b(3p)q;J5j|MStc6RG{F&cT+=g*(Bvzeg>N<~#WUYvC4cYukf zx_$dL1H;G4N&x6b6@*29fk7%O8?Y0DGG`8{#cKQu=|f`9-g(yYH**V=tgMktckU>K z()vXDVu0Km)X9-yVfz)hNt_SCmDSZHB_v)ve|}Iwxc`f5M?F;M4e%&(97!jq;u@^G z70?XJ%FGOS^$HUQ2O0~J*T!*QSsrzYLi8Aa{(DC=`s?*D(7A$!pxkVme#Q7 zcvwN0v<1z;!BuAw4ORr4MgcR#o >7GMSl9)a~>xl>53PKMt;fkSld8kOIpya<_) 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Д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 - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -4 - - - -6 - - - -7 - - - -8 - - - -9 - - - -10 - - - -11 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N2.0 - -N5.0 - -N6.0 - -N1.0 - -N7.0 - -N9.0 - -N10.0 - -N0.0 - -N3.0 - -N4.0 - -N8.0 - -N2.1 - -N5.1 - -N6.1 - -N9.1 - -N1.1 - -N7.1 - -N10.1 - -N6.2 - -N9.2 - -N10.2 - -N10.3 - - -Line 1 - -Line 2 - -Line 3 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_15_before.png b/review_pngs/seed_15_before.png deleted file mode 100644 index 9622a60bc1af4b4a33b1a3fc9058fe428bfa1e2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199498 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

X(i^qXF0~ItHYo$2f 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%0A;4pxqQ-pRJpd^Se(#yznl|PIt{J{7slFgh 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 diff --git a/review_pngs/seed_15_before.svg b/review_pngs/seed_15_before.svg deleted file mode 100644 index 44d6655e5..000000000 --- a/review_pngs/seed_15_before.svg +++ /dev/null @@ -1,481 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -4 - - - -6 - - - -7 - - - -8 - - - -9 - - - -10 - - - -11 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N2.0 - -N5.0 - -N6.0 - -N1.0 - -N7.0 - -N9.0 - -N10.0 - -N0.0 - -N3.0 - -N4.0 - -N8.0 - -N2.1 - -N5.1 - -N6.1 - -N9.1 - -N1.1 - -N7.1 - -N10.1 - -N6.2 - -N9.2 - -N10.2 - -N10.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s1__exit_right_1 (right) - -s2__exit_right_2 (right) - -s3__exit_left_3 (left) - -s4__exit_left_4 (left) - -s5__exit_left_5 (left) - -s6__exit_left_6 (left) - -s7__exit_left_7 (left) - -s8__exit_left_8 (left) - -s9__exit_left_9 (left) - -s1__entry_left_10 (left) - -s4__entry_right_11 (right) - -s2__entry_left_12 (left) - -s3__entry_left_13 (left) - -s6__entry_right_14 (right) - -s9__entry_right_15 (right) - -s5__entry_right_16 (right) - -s8__entry_right_17 (right) - -s7__entry_right_18 (right) - -s10__entry_right_19 (right) - -__junction_20 (?) - -__junction_21 (?) - -__junction_22 (?) - -__junction_23 (?) - -__junction_24 (?) - -__junction_25 (?) - -__junction_26 (?) - -__junction_27 (?) - -__merge_8 (?) - -__merge_9 (?) - -__merge_10 (?) - -__merge_11 (?) - -__merge_12 (?) - -__merge_13 (?) - -col 0|1 - -col 1|2 - -col 2|3 - -col 3|4 - -col 4|5 - -col 5|6 - - -row 0|1 -row 1|2 - -row 0 grid - -row 0 grid - -row 0 grid - -row 1 grid - -row 2 grid - -row 2 grid - -row 2 grid - - -row 2 grid - -row 2 grid - -row 2 grid - - -row 2 grid - - -Line 1 - -Line 2 - -Line 3 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_41_after.png b/review_pngs/seed_41_after.png deleted file mode 100644 index 56c1ca5e98a99036f7b4f154bec10254e7f317d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211363 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

Ul8OPtt{`TYY~qvfx>$ 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 diff --git a/review_pngs/seed_41_before.svg b/review_pngs/seed_41_before.svg deleted file mode 100644 index f75a4d7fb..000000000 --- a/review_pngs/seed_41_before.svg +++ /dev/null @@ -1,674 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":696.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -6 - - - -4 - - - -8 - - - -10 - - - -11 - - - -7 - - - -9 - - - -12 - - - -13 - - - -14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N0.0 - -N1.0 - -N3.0 - -N5.0 - -N9.0 - -N4.0 - -N12.0 - -N13.0 - -N2.0 - -N7.0 - -N10.0 - -N11.0 - -N6.0 - -N8.0 - -N0.1 - -N1.1 - -N9.1 - -N3.1 - -N5.1 - -N4.1 - -N12.1 - -N13.1 - -N2.1 - -N7.1 - -N10.1 - -N11.1 - -N9.2 - -N4.2 - -N5.2 - -N2.2 - -N3.2 - -N12.2 - -N2.3 - -N9.3 - -N5.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s1__exit_right_1 (right) - -s2__exit_right_2 (right) - -s3__exit_right_3 (right) - -s4__exit_left_4 (left) - -s5__exit_left_5 (left) - -s6__exit_left_6 (left) - -s7__exit_left_7 (left) - -s8__exit_left_8 (left) - -s9__exit_left_9 (left) - -s10__exit_left_10 (left) - -s11__exit_left_11 (left) - -s1__entry_left_12 (left) - -s2__entry_left_13 (left) - -s5__entry_left_14 (left) - -s12__entry_right_15 (right) - -s3__entry_left_16 (left) - -s4__entry_right_17 (right) - -s9__entry_right_18 (right) - -s10__entry_right_19 (right) - -s13__entry_right_20 (right) - -s6__entry_right_21 (right) - -s7__entry_right_22 (right) - -s8__entry_right_23 (right) - -s11__entry_right_24 (right) - -__junction_25 (?) - -__junction_26 (?) - -__junction_27 (?) - -__junction_28 (?) - -__junction_29 (?) - -__junction_30 (?) - -__junction_31 (?) - -__junction_32 (?) - -__junction_33 (?) - -__merge_9 (?) - -__merge_10 (?) - -__merge_11 (?) - -__merge_12 (?) - -__merge_13 (?) - -__merge_14 (?) - -__merge_15 (?) - -__merge_16 (?) - -__merge_17 (?) - -col 0|1 - -col 1|2 - -col 2|3 - -col 3|4 - -col 4|5 - -col 5|6 - -col 6|7 - -col 7|8 - - -row 0|1 -row 1|2 - -row 0 grid - -row 0 grid - -row 1 grid - - - -row 0 grid - - -row 2 grid - -row 1 grid - - - - -row 2 grid - -row 2 grid - -row 2 grid - -row 2 grid - - - -row 2 grid - -row 2 grid - -row 2 grid - -row 2 grid - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_72_after.png b/review_pngs/seed_72_after.png deleted file mode 100644 index 7c0fbd7262b6470ab5c054820e70704ccc9f7483..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130064 zcmdSBWmJ@H_%Aw$fg-ka7=VI=NJ*oT(k-3R0@6KL7?gm3G)gx}H;RaWFmy9WH$ykf zxgLD~XP+;7op1ZBmn1nuc?N|-kw{C4DWgy)@=&Og!$c?H zk<(g+U*VsVMlzCOC_M6CLRD%g3Uv)7E%rdwHD+Ph#kG6#0Kd{p(Z4`{!Ixf?{98RL zS@G$6LJFJbUtT6^S<-Z?=M{ZeRVid0;BOn~=~2oiymImGOTu+OKa>OyL7nWiS0A5G z;evFgxo%B6ggAtR#)K|=>S(a7QcMfm+RLw2WA+@-OM_hIZP!ZRT8{p_yEi3u>VLlR zxp=1Uzps7L#0aSV`}#uIZ3DvpzW#dYg!O-4imHC~A^Gp?caN{+5&ZYH()(jP|9yFl zS*aGed*qK8!~dx_Hwkb=5$WaXRdr=*uqP)a-R9%dR8v!HYHsetR(WiU2Z=O|+KKUt z{ktv{5!IPKr5x=Nn<#Fpa7Ou=+k5P=Q9VTfOA$yXQ$JEMQWpEQO4J= z4{yoGv<2{D$!C|3eyO?AZ3D^l*RPKcJ9f%N33(Kcjg8F-jTq&dw4-kQInRWuH8;aQjn8$k*vO4|&3qXU*Hj-;z+J)Zh`LiZ~6EORTYFb zKEYkjl;E50=7Rik$s@>bc(Bc+-}sWDetBCuRlQU$7wQ5gGa3|`$xZ7JZon6R`2&od-2

!{=~}cBIT9)uwvK^y-x>+Y1;B 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

pfvO>TQ#{>udbTvyAg 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 L{~Gs;!TJ9M+p_WM diff --git a/review_pngs/seed_72_after.svg b/review_pngs/seed_72_after.svg deleted file mode 100644 index 186ea6788..000000000 --- a/review_pngs/seed_72_after.svg +++ /dev/null @@ -1,249 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":124.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} - -Candidate recovery fuzz - - -1 - - - -2 - - - -4 - - - -9 - - - -3 - - - -5 - - - -6 - - - -7 - - - -8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N3.0 - -N7.0 - -N8.0 - -N0.0 - -N2.0 - -N5.0 - -N1.0 - -N6.0 - -N4.0 - -N3.1 - -N7.1 - -N8.1 - -N0.1 - -N2.1 - -N5.1 - -N1.1 - -N6.1 - -N4.1 - -N7.2 - -N2.2 - -N5.2 - -N1.2 - -N3.2 - -N7.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 - -Line 6 - -Line 7 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_72_before.png b/review_pngs/seed_72_before.png deleted file mode 100644 index e5244251c9bc94812185146eaa2622d642b27d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173421 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�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∾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 diff --git a/review_pngs/seed_72_before.svg b/review_pngs/seed_72_before.svg deleted file mode 100644 index 76883e33e..000000000 --- a/review_pngs/seed_72_before.svg +++ /dev/null @@ -1,352 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":14.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":122.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} - -Candidate recovery fuzz - - -1 - - - -2 - - - -4 - - - -9 - - - -3 - - - -5 - - - -6 - - - -7 - - - -8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N3.0 - -N7.0 - -N8.0 - -N0.0 - -N2.0 - -N5.0 - -N1.0 - -N6.0 - -N4.0 - -N3.1 - -N7.1 - -N8.1 - -N0.1 - -N2.1 - -N5.1 - -N1.1 - -N6.1 - -N4.1 - -N7.2 - -N2.2 - -N5.2 - -N1.2 - -N3.2 - -N7.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s2__exit_right_1 (right) - -s3__exit_right_2 (right) - -s5__exit_right_3 (right) - -s6__exit_left_4 (left) - -s7__exit_left_5 (left) - -s1__entry_left_6 (left) - -s2__entry_left_7 (left) - -s3__entry_left_8 (left) - -s4__entry_left_9 (left) - -s7__entry_right_10 (right) - -s5__entry_left_11 (left) - -s6__entry_right_12 (right) - -s8__entry_right_13 (right) - -__junction_14 (?) - -__junction_15 (?) - -__junction_16 (?) - -col 0|1 - -col 1|2 - - - -row 0|1 -row 1|2 -row 2|3 - -row 0 grid - -row 0 grid - -row 1 grid - -row 2 grid - - -row 0 grid - -row 1 grid - -row 3 grid - -row 3 grid - - - -row 3 grid - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 - -Line 6 - -Line 7 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_77_after.png b/review_pngs/seed_77_after.png deleted file mode 100644 index 55d9e3996a5f4fad079754d0ec5584b2f840e70a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234174 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

^_n+f;PrFBQX! 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≫Io}PmV(UBFEAn+8& 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�?>;mR4W0RK7kB>sJq_W<(OWuF8Qr*jM zlFq&qJzOStj)G!^k&0c>6|3o{we>q zhyCV!3)3#$(F|Pp$eKK)Bjg%m%8T3cB=+3hy=6U$c>D21F>)^S1`Y%;!8-N*3dt7Z z(yFAa19OIfokc|X`5Le9dtj^lAipg*V0oedP`+xm2x9T_nIg>Kg5bO zpk)C^7u2AZK%L5DYisWLrmG4BO(>KU{da$Z&F<>wzf*ksPzgj5x#&%N4# z+ViJ}X@slFqWD|ad6U-1kkgQ#*k?YN>`~baS}TqPV=XOjD+Am~5`|hvXn){QSMO_1 z_2C(u`f$uc}>cmCMd*DU1?V{YLmN4)Ho2T+-h@&3qVQPEO`B!JuLh zhp9$d%mmu){jld(F3M=QLge`fA~rmOvA`rF2iw1IzFcySvB>s69Jzk-!SCAsiHNND zzMW64((aaaQ}X7P|yn%;Ryyx(Ppd tmfHlTVm)m2|gXw0kO7RY+(ei+U-8+ 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

Mf0T3VAIMB^kGGtU4aY)*?6FX2v|pyJ$xI{phX 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∈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

n3%caJ({wN!(L)bM3l0}*B9-9oV>ugobklpNiY zm;LX%=jwdD7mkrAc5+M@lf-78>wH`37xnF5gKs?`#`4d`GPnWZ(gWrgP%{G$R%dys z^XmNeA>cpT_?48Ch3xhD*ah3OH$Li93kVG@Z*3XIXNq&}S)LZT)O)^C@%qVqI4F5` z?m9Q7C)7Lepeue1l|K$F#`@NzL!#HTpU5EOZ~d@Vk66G76Lr2`mY8=`YF~$p(Z986Jm>K>F3j z&(9CW0$8bKVP*uT+u=oJf%Yu45kpT$777bdT7ErH4flupVyxCd6Sf3e&HFKVDM(8n ztY|fM-Fu}Zu_$(@^`7l8+`(c74!32p% zPmszi&$ASH?}zHvhk}I`Q3aMJ#@p1tW?c9(SGgF~8>6MF-Fu~}Ol-oK3^%U$O?8l= z>l*6Y8nu|b?e;VgbmHBB+66FC^Ts~JNT2Q!)Z751ceq?g+wW=amaj$x3zvs!dF9E;B zsuX36Ee61Y8sMu#o+D!HHy0m)DR^;2`&$0Jl~AClAEthx@E*>Jrw?<-DvhIQWa*b0 z{s!Hv23&s2WPJn0+b<%5J4=ycV2lM@8F_4vSI6YegO2VF%cDQo^9+^>x$z^{K3}^^R6r6x(k`GaWH|&&zek zh{-RNX-j!q`%>|OVb8B)H3~hJTsxL0iMl%2B4kv0mqlDRy`6(=9_8I(-)YQyvNm(Z z2}+*lUqQlAj)UCD)ipt{&L!#r(?fx5i#Q1*G#uL-y$M|wm(&%)4Y&Y3site=6>uuV z_*mDes9Gx5mP2KY@9`?dfO7+jKdleSkoLRtWKpu*u@C#Fr+aIiS3!8j)Y#a6&QLt^ zn)Wy7NQaFITHqjVXHiaW8t!>2?ALqFOW|~;O|x^%UAn^&xxFF0l#@Wd9H{y6J#s#| zAKOCMAz$6-1m2Ra`YU-wJ$K0Jjy#;5GAryf*V7hDOG-+H?y*HZc&o_VWqM7KnGdz; z3PnNKFX8V2MiN@NV|o^QJ<{r12|rW!O@}m?xtiY5x_H_;c|H|XeO^aILWo^+`UX)j z^3~d5j66)W=TK0K{0fps{_!2+$cktF(pJHypY|e&``mXT}IYuk|v&f0GH>6NfHZHKH`pf`lZ=GOZc(K5VFD|8@-*}r?sOK2b>MZX}*e@pL zKff8Bm&ZsE_I6t2rSeFQN-ShKJi=D=&HSJ9&J#zaR6}8s~YwKz$9QzPP z6NXx$m^83+z*w6+T{ZXtlhh4j@P6$;rc(CWL7@j$)YxshFM#wbTpd6n?;98xjJX6F zKGR;@_jEMmnMYwCKXse$zNbIK|7hfP-bRkvY4BL_NAiiz$KJ$S+K@q=9oDk zz$>q)APH@Ql*4lX2mX!oe#w29kK>I;LNn-Zre-Kp`3g4c;~W$ z!Nyb_nuOmmPtyM9rB_FkA;Fy)={b^ksX{4-iVeDE*b)0d?F%)KYiargLDfgjh|7*Y;@SqWl5vF!!+2WZB>#-MnZZd zcSG*q8nS-HdA$XbDBJKV;S<;UK{)u%DScHumWqSM6RTAiXv_@MFW*$=yfx4z`lLIE zAT4B|ExdWHprcakONoj9%o9hPM$}NB>WJXsa+LdCqsYVWO`F$2(iic_jr&Wn5Pd1y zL*GnXT|Ez&-RxkDwP`6`5c=a#*G$codSv#=sOiIgMHj*M=f0f}h@ztCFm&7X%SW@Z zkz2D*=&S}?Tnk8RtS8XW>q+Pz=Ce_UJ8`_ff!(ClIpFF*lx=B5j^`Tc_D%l6l=WwdEvq^k_5e^P7>hWIu9268J&vX?qZEEW3(x4t`PvcNSQ)#VrQj-|` zj+#h&8%>04Bpqcvk)4whAzyYJ!g7lC*&)+Vqsn#bGQPOoam%u_h5p8maUgyo;1 zkZVrNuP18@v5N#Y^_?B{UTaMM)MC;4<}m@;yX!;-D063Ro*RH<}T zTy2V|0B|-S3A?)cb2E$p)oohl^u{Zg=`PKJ@CQwe(AM$-RfdN6&iw{<9PR8IGzSq{5-HX zy4LGM2j|1GsHbsR%HMfeJM16&KHPLo{u|3DRh;e<)QJ^mc1{$P6!%gFnTSI8N_fgx zhD>LXh@M@Ty%JdenVExVFXe`V=YBpd%9D0_2AWo!TwI_cfafrx*s(R6KptUe=mDCi z_qNV>F8d@{@c=7;8z{vyesPpm8IzEbOC=KASnM~F)u;X8rXpiph@Q0eFliyIOdYo_ z%@{Y7RyY)&R=wbTvNM#1hc)}%EP=!On;;q@-*CJ>KcZusvZ<(TaJr(Uz`fvC!?a*J za{Dwyi(mzTwVKq^80jl?vY_pJKu(fK0GZ^72tx2F!Hr;`3WvNk$hlv;;&e5t%u$bG zqOuFM%@iXKUKm8!D;TVZn|Qa4S3B(zd_;e=+gkrd%qAY_|K3_6kt>yO*}u;|BtoLi zfgf39m1v1#{}J70%i#SOFm0U+kV62oNY5patMLZ>{kgDs)8wG|ATnx38#inc`S=5!cDy zpsEZ8`N75P?^iqf6?qm68oNC}qF**52JMJwEzGPVN44^~vm8aisv0XR$B>3SFPddw zpi+E;$GxpDW31*#6O^9L07e{2YUpm3*X}Xi-cH3P1I6vsTKjy-yZwnc8lRjIrIgh% z-xVc29M#^yXmOZBU{tzeQU*fM-7HEJ=yyJ7mzD(o!wvjbbd=XW&th9ZKp@k%G0~r z7P{Kf5QBBByy7kO7dvBIvZ{3CHv5ckqoJC#M<}+?G?B};?$dkQji>T?AGnCo$f5u1 z;H~f4Qh!uH%|c+o|LPgiFt2u^S#1gTm5KIfrIHvO>Te+)lq~xQ?o9G5SEAeSe70D8 zq!3ZJhT)EKkW*#dK$Oamg`(msCG}BMOICtra#D2IJzTTjvo^2s8nLp);2fc9(B=rb z*jN-De>b$+(}2Qn=kfHu#PrG19miIJJ3oeoWW?yq`clQkc78~MRk@IJflfd=?jO{s z6U)VulLr@}$t|T=>{m&RvlqAIo+7Tk~%xJndsvv3ZZ=YN1J6NF(T(Ov-g z31>Z6OT9HN;GTF&5WQO4{O&TyY$77)JH(T|z@vHU=dWd&T_A7l6!W*uu2dte@c~S3 zXqf;_+;8wDwp{7H`L7#qHZDn-E|`Goj+?vEGm&u}x=EK3d&hAr6#wTc{`n92&B5nR zYgu;fLV|-_kIFVI#1dr!s49!YBhMXau#wJg5JsTC`f3Z>aUryOo(Yv>?YGlsI`)B6 z2m@i&SEc&DDVnaEpJ!61#UKQvf3nA%pc*hC=^MA!n+`TeD_ z!4zly$BU4NQ+eX8iSDPxV3Cu)_979MAkx}9^?O0k;W+oS&T=+PgKr7zKC&{VeVkRv zOomL$c}~)hi7pvY*cvM2C|zX`?*J@bR9iuMdZ))UAM|F+jFz!HSzZe6L_E@*x9b!4 z5_7T(Hk<#@gOx_|9u7s+`*rkL|?r`=P^PcYgjd%q()o z@C(ocu+Z+O07bMzxE6FHt?>N#@kV3gjow1m;BH7 z&as+o*;+TRu`Sh?q77eFFF!38vPecxPR%z|#5`Qe7Vw2loxF2aj=0 zDOGaX>`#h8k`tk_?zFHuJbjw{Yw&wK`r|tt(&M@RnT@>a%dgv7*OaOizr^FaTTR!d zQ%I}({x4qp?-_OSJCrcfMB29S@_|JZF8fW$nq&VOGMn#Q*`_c6+HUtZJDR8%80q!f z=;Zs%34uz+p!q=)G+_o~a4)}j};lb-e?^Sx6jFs9U4e^n=cP(Mf7^kbL zW(Id&g>>z?q{luTy{7X<_<7mhbQvo8+rmRGnH$gF>ae|t3dOeK9Ll)GhVw>jcqKEE zJgZ@)&+$cH|Mp2l)>EI|cMeu_x#E4fjcM*53sOf6EYx(0Zs8z;r7kgHUc7?k(D?0J zs+Y$ZPFZ4?V)T_OiMkRSNK5^qL}pX-YEYAGw~3{D|xE_zWtwGids6}9-(hPxXV-M zxi>18Y`*=Wb~rw}^Y5_y?>F;XWqNFgL}7cA7T!6Fd?na|Wn}n=c+?n4`f(WKulf@M zaSuc>ATQbqD&mnK)_#MJj}#I(G9Dgv>IOJ-$*`#YpM#%fOz_WB69$_U{c!wYr|tj@ z^4Q_I0F{n(Y19zTe-GQgp1;Ytyd}y)({6WX_+Els68fhZ>4Bd~f`jFV87`5@`kH7L zbKpUf3OL_Fpbw>6Z~j`2*@Ef6K8otdY9bJbhBG+63qk* zBL4OaddL)a4A3)Ul7CoTXh;bcRcS4{)>VqH9j6{K#jlhTZZ2BNA+7cf^Li2P3a@?v zN6SEN1+mcf9k*+wTJghki+$}aSRHM_<_n>F*GgtKN;x`qF9sSm@q|@N$VM|&>lXTN z>=o`td!4^rW6xM)eG~0qfY~(mj<>QXxN@+<=fBSPpQltfwUXTFiq^u3ADO|Y2v@Wb zZuvJB;IZP+0~!7c^3j*%qmwV=mn3`uz{7tIbJr_aepien?wUPf?txF6%d)|{^b0?XP?cJ(*G^9sZB>ixvE#+ukbJ;1HhBsJXzz2>BQXR zKI@AOISi6twS=;2&ytwCySvdun5aq65fin35_cKy+(HCM2sZ&w5(Wl9+3tfJpp#w@ zle}_E2Q=u=0;f<5kRjiYzp9)f5`Y#!9?Vt({anaLfG~`FjDQ^JeYQ8RLCOsGHiVvVWrHXVZQvS#tjAlE8l(gZB|Zd` z4uqFrR{YOFfJ6OiZo4B^z7|VfWs?6r+%CDI^(uB2#KX*$Og6Si*Fjn=5)!pE4b2)g z%|+#xlrl1mQnCRQ6%~a}LHA%?&n6|2X=u2T;PaMTB2n`h9;sDTYc9D&b(kSv@w}@v zOu%wPNWLf|kCa00R0z&|Nh)F=-n{2jt5tK2Q;O`~f(bVAbIG zzJ7fHl#KBkVP7G^aau>v;s#uOUe1A+l+D1$$Cu@T-}_4Lr}0>Q`?*Gx=IToIVH!(g*(ze^mRs1X6R1s$l+=Kj~3@(85uv;v5h-A zyG`Vqx$*B*C!Ph#!ONv-NCmF;zuoET(D$rndArU7V{l}QU7GI8X=UU78yUtSuxKS9m4J~FLPC&!m{_=xW()&bce7sjtg5%b$CJ^LK>4QaAm|~77 zXeiILcv^Jj>m!mOlP^!TFHvuXl+?co`P{Q|OFXaT;Jf zQP12afDiWT*?76d)ZR5PhBMn}P0lx=p_mx8h4bKn0?Sc_`aX#6g2apbfHzx`P${>U zY&kb0g38+UTtSB4Zf~Qnt>fB>@=e6UoTaDN1&)XQPBWPy+qE^`Y43^1@uym~(hM1f za(GwZs_6w-_y%ZkN%}uU|K5MU{7|>?mSuV~J_MA(ftWUfFhT$O;Kv8|kro=>MWNE* zUQqX9m~GN?`}^C)by7K09DkrY`yQ zUoLeif{KG;pItb5R&F=^|Cu?v=odaw4-LSySbpp2X}!~UsFd@&izV$V;0+mic){ln z4dtrEiDohc5^~p-+#DDg-9kRnDQ7*&&kZd+VVKM8a3TM5m^+o}hETtGP#YKc0DfV9 zD`tQe9G`y<0`W?qeZvR)rH3@61Q9^RPi9Hk>MT!-as)Gr*1J7Cc5iwQ@~2cEJ8=Dd zN59=1$drMy#5f<{jpkKXQ|65e9~Nh3UW5kmtFLY#}GLV`NdcJ>$q&0J>wLbTL1S@^BH~gQ|!9oibXJ!S8XA~khA!r zfPcyAE|!Dd2a6>8)eGR93@FLJ#Q68<@|Oc;j_R#+&quGO37g?|6X;R(!x@)8&&OpK+z zv`8RHqpf?nvA&rM3drp@k&VD%l)Uhy1cWe>_lJjv?NQZJHmG_NZF4ItMIlLdALNY7 zQBS2Wk`2#(b?1fgC$n{u|MpkjT|rQd9gQ1&9M{4?3$rKhgEmdDs0+|_qr8-r3CU#b znU&e!@ERZC{@=ShRa^AU7r&*Yn&-I2k{Uma3itzyw~fBaJK_ta94z8-po2WsD_d$! z4LfITYQimb986iY4|#cI`mpVp^Vkn#{`)4k$qRlU0Xqm5lsIF8HaA1mLN_u-!Z8yWM*B}VfuM?TS)aVpI1>qiE*Kb~{2}4F zUpKS1nG7s5uuoa{qS%YR@GkpTLG5R*o!a)&4>$U2i!OEcz#Sx;*ZM?1ee5p9hskV?s zX#nSI5yNjT5+f%9!#qGgz=v^kuyp=rH8kE4sV#(M1avR{+b}751E$27vzve@n(d5Y43Te+O@xy?l`$5(+!!v7cj=d_N+p+)6T;u^k^$&37xDFnnXPXo*Og#B5{+ zC(WVoC^SEx163bu{JOSqwRhiLSy@>(qdk2@3;G=YbEGIpDJfzYzc8gjpl@@AYo|b*}gXG5iF46$|Z8h_cN^2H*BevBGt#drU+jPg{ zCL-frn@qS2Ka-w^G+vU`MQWmK(W~%@Lj_OzFJT-21enm7xT~qjp;tSktxH=MOpO8Jr{HglSmFcZrT2Ig9LgRk zrmOc%O_|Xt>$w&@?l94!4<9f>Uspd#r-@gRu#Ag+ve`|ES-sl-gU_}*DB+O<<@s5Aw^Im5( zce}urR{Fj9ee2qb3<#>Whuw^wv}Ut|oSs|?u$WqP?)mz@w|VhZbmO4Jr?IM|wlqm7 z?)j>CWE*jRXKbRi;qFSzsKX}`(WmV>qBMvMwM_2D8M(5CLWXbM-7P>R>7K8yt2?=N zTWRpwgiG4U7^>jhfhMdYcD zGwUqnV!{BLhOpsT0?>dxUOOHxZn69B3zQ>&6w}{H*>AVo&0YkS5BDx=p&HnpswQfI zE)==&SPBQMb!TbVw{MF1dUfOw5$DA4tU}Vw^-nW)iS>jaD%t$1C)$V!a`e2;%Ts>d zsWBd+zpq0|BKhv!i zJgvZm78}P&=<4(YiIcy)rrjpm?Ev}+goTXJ1pJ;UMkS$bN`wB$)iwwoQ18Sc{2wj1 zAO+39^~Q5=V6G*`;Bj11d=P!9r}SA;^6WqMwDrA-w(HSy&L$dW^p@$0L|V~|H4I?m z41K)QOex37UR7fohy*0qahoJDL!L6aGBzeA=8Wr`8m^-c_ADZ@F@@d zXr*vKZVtd&OkcozoM*B)Sv5F+BYCzNiGdN{vxwh4T1hZbsiv!ouep}|b*R7JH(uZU z%3V~ws?}?Vi$h<(e%)}|kG?*L5=PUdgWOX_CL85e8c||_R&bFh_daq{klSTwf$7~p;rO<(6nJYkH;(Zz z4&W0~gbA~|WrUv3>2B|_A2!j2yN$=V5T4^>#qVg&Kk zzg8ddP$|z6$B0ybPT1j+6wU$)1$htu+BX?r3+{yVUKfAw>|0W!4dd5a@l`(@9Lx{#Xd!#@qLryMmP#@%r&HK>1FdZ1QLH=}$rvm}j*%mGQ zO5opCO{DCYvanqZVNzN#pAdu?ym0lc$#uF&Y^h-VbI!jL#oQGF9{XtK-ZV-2qQ)~3 zmyPKu>r=EJ$C=cC_Tw;Po#{7_(5QJZR(g#{A%Tw;g00 z%0V^-^`!`K*mW*eUOlBhMn@9{X8y^P^XsD3>=Hy@a)Hp@@o>Uk$m(i*$1 z9}@hiW490e6R$Y!I3Yq>F>+;TCiMS@>iSPH@{25S`XtXiQK#Ui{F$der-Yjb**UO^ zqtHQ0NH2kpaYa}qWA#c6*IS6HM0$b6k4gptjY?~=txiVtmA~pW4j~fzgAqX^{F6xu zVswb1pEP>cJFfq13r#`WQpk`vbX>+Ge+CrO7_W9$k(pqg!I{DFwG#>hRF@H`4x=Gy zZ|>f}&_hB^G8|gZiMSh2cwwmu(YQp5x?EEl_;d^Ralz97?J`rt$!dEr3pvUuEx>qP z0>K)zY4}Sq9C+$Bp@V7}{(;|jU5pBaLRl#1OO|UznVCQW~ICB5Slna!tCJ46REK#FlkC?jxd}w(wf+~XTW>uV3`WF%ojVD! z(Epe1z6dZ(MK!5r{66-COCX7#gqMa=swctN+Mn#3#J?+42{$=4MPc&Zokddi-%(bP zoJ;zslV`NIlG2%oI$V#TLBEhOQ_ebOpICyw?05@$a=e0!5wY+Kg z&vrQH5fwG30og3Lk>*iEDP#2TpMjXhfCWW%90W3nOuAtpECzyu+%sF&b3ll&2l&aO zldK04Aj&`uCZR$=wQA)fI#UNsK#Dfg4ZeClMddjO7Ol=4yDXSO2c(HsLH9B}46_&; zQv&{$0uf{al~yyXw?O(p^f@-D5~74Orok+LGb&L7B)q{+fP@qkaRA;uW35XOcp{Zh zz61FI2Sot%cObviRH7Cz^&5hK>#i#-d1*E05<4XB`ZJZq5FW-|gh_8eJdZ4V&Pw&U zH^d$}fBK}9zjK5xr;@Pr0_?7MvZ`hz@m{Msn}yl6@*l-7>FFgKZJcxf41c+7HA~3& zR=1}#L97zTH)=~&Mn_le(dz-%?gB?z>Da@#bdrs4kX_tJNbk3AN8rEaGgDC2$usj$ zd&>w353vqw3z~EqN|R74*}Mh5hR(q8Pr5odc!Wznfv-0)T{HdhLqlIDoY%ntJ54}P zJMrjbb(O3_um@!oz6@1u=;2{}!RA)P$ESUb(~6kkTQ!Rd3cq96IleH8>3GlmIewKj zDZj_lB~bOWJ6!(WzytC-m|$9_+bU|IRl^zHzr%C871J&H9&92ES{e(L+xZ&*PjrMy zyhq&PqT}P(sIYZDq;8}_99YBUAljq($e|Me^TY8rbrP&o{Zi>`th2x&SHi%A5}qvA zgT)A-Sh{@C{?HnyFbd2Kaz>YJ(W%Gq8T}+d*xq{hbc3t_1;ZKrvKkIgnL}X!RKGN8 z%y903fjjE<^3b2YPbom9KpYqxgayvoH8t$!q>vk!Eu5Z~mMb2$8o{+FSD zLOdAY1)I{U=l&ND%HZOx;u0Ap{sO?oWf15)4MdR(MuK?g^3Demdixd*=rc!T-Tt9v z!9b|9zM!W-hwURAOz*R^Gq;r>{Pc{X#8=wEfbU0Jw&TzU_H^fpoeq3VrsyNB_m6Br zbzHEc`fCHyvTkt+8VKIaQytrDoVJwaUFNKZxq)a%abaesKf)u(3G0t&+$6X(q{b-^ z-4=#TZHGL;0nBl<1`J5a!60nA<^=%Q!qn*ioZ_;(4rnH_TBZw4&KmVLx>@f(XNXQ^ zxgd}K$BP@tNgC<6hYAL2Qp-*&#-$bXnNc~Q`{xUg7c}VD<2o~`smi!C9*SBrV9fR0 z`9teX3vRC1oIPpTCDSBm6zqQe2QQsTnKeUE<(t-?zML7 z$^8C#$Kmcjtjo-8{6%PJw+<6hVxrs9Dw>@p5{@FPp8RUETlIlD?7rI0Jn(uvZWrq{VY&$4Wz;qj>^wH|dQPAY1NY==+!YqK zi6`95E(epSylB~Q8>=zEOyMaz0^5)-7C5gbpg#@R3Of8|YJgTyk|XNG*9ES<=ZMNf%?nuJz1kVKVsLU}x^kOf=lB_jA9! z)L=iV@3e@l)ToKpM$H8)x#Psw-n=gmvUYd`-rR9dQWxUNz8mr8c-qNP9WDshAb{Pm zbmbKdk%WtWLGh2k#Dx5GG<$N9kO*E37IDemR%gR4jf{j)B9alZAp?;w#e_c|P1bA7 z*48Lm&pL&_{5=gOrSap>#umT~Ia+dbXnHs>3XHZ4#;JQXKh{8QbN966>S}s^GB^lq za4``CL_ccD_YW*jrRet`e|*b`iMWjSUMS9>Kv*%}hD#>&906QAo0~#nVq#gVJjC-}L9h^2>G%A6qC#TKN`N)|hrYmF{*$>efC9*o}|H830z5fxE7 zQ^ZRUZ`r~!Qn>OGn0FlEr~i$K2v7e?;FD|9h3O`g&S^+UvH4hUrGQ z?aj>&Fhdj(0_C}X2rtD6#N1nW>C_;8l=jT~1ntQS^0ELaq3+~;n zUtA&6n2R|HnJl)r4+{wB$WbO65&5)HH<1A^caR@rg)thl%U+AOaz!tg3abns@B zuxrDVg+_}EEhyOP{S!)}CL-cBT5+lBz}n`>{zR z{bh6zG>M`T=T?|Kx!&y21i@`s&YS**9A+^^AV#$|8%EO=!*XBAX`&)m6H{y){FHJg92TJ#E0L-%`jo*|d!QDe=^!UCGxl2%g31se(Bj!Ns@ zDd*j&883Kf5iR7X-i`oLpc`!H+v~{|ps7hKC}|kl>rsC7>eAkk?U)MngrAH~_{-4W zPKNK#$;@rueKuLC9ye+eG`9)HH1M`$AYw#kTd*NvlfCub+nX-jY1lnQ#uuPq(N)D= zja2e$a5RC)=6a|GI~gnR1-YHk9#qsr{HQ2i(7>6LGp=2&f4J4x_X&MA*r}8CI4Xk= zb+GPe{Mv(LZ{5SQ%WxMhh(+)Pg5c1I_^;|i$u}5Xbw`qK!sX>2v|S1%YXKFXH1Us=K?-pqgNw{k*gImaF(~t?Ik? zGgubp#Do|CkB6tn&T)1-M|1M=vT-ueX6?^h#0D!nCDE!=*~v|AcF+i*zaT4DFWJ^f z#JcpadaymO<%nv}pb$ju^HBiQo zag~6R$%Fr2F=F*yJo;6DFZF1T9!*T5oEWu zk%5u{0Z?BD1zT7uXaJHqn6@PdZC55fx9VA)UvA0*bU0I44YYu|S_5ee_4cYN$7mrG z8sg_Uqoz~k{*o#HFYB1Iy%{HkKU)S$fz#C{=+Bt-_zbMy#nFK2^HcP5-%KC-v7tAg zjekC^Xxe^hYPa#3+30S161;yS02n)YQ=lFWG-Wh$Bq@nV zeM+nYb4FisnV2U99O@p`Ps& zq51y><69NZmnJtfeZ^w-<$T8ZW?!tB+lnCh;AnYxNQQ(H!^+Asz+{d;^97`{?_v}) z^|?Jr_{}fb*v@?!#iybWW4L?I>mPqRBP9@fF%b0A$>#Xq6C7rcp-;kTK$H;UT#w{< zx4uY*q?C&orN*B#%IA{F+YT$y<+)`c?G)$ptK+zq($>Vy!W8V8K8xRKa}m^yjo)mj z?C?aUXEJINhIY_OewyZFgi@_9u5Dcu#<8mzbq+3!>ZU$l7;)0?N@g!cmN56O2{{V% z(CII8hy;H~B_NKYaw+K@x85!8SujZLlQdlW;h$(Bh%Gxgoi^PF@dKSaxiN#m>h$g~ zQ%8_lNkv|?i;9}k&NM{6`q={pxx6;F<%J(-U5hl)jSoFcnl%U#7iDJ*Pg5Ydm|?+S z=cqj|{Rv8*KWhUXc452)voE#vgT+7H4_N2Dwlm&s{+wrzHe(+bhPU#X}{34wM3znN%o_bPK2N~p#Ee8#>U7!`2piFgc8Y)ivr4m z-+cu-Xu6J(=$`2SEIKom%3caesc%4YqZ6#ca5^{S2L_=(Ub@?N_2e@J6&)a4kaltf zP*oX?iRXcS)^jj&_tAy#!v)=|S3f|HRHeo5k_Hdkwkw)NkDXT=j#g^do2#M!t^e53 zxWD+-$g&1T?K=pN3wTX8+P}|v2MgwMV)kZCvwi>qMoe1T+(8{+-FSOY+<;cVjN?rk z^(xfAaLb9>Hg63LDg1^#Q$g?lmzEZiZ>A$I+b9&3URMr``fYqG9zY6R2w)ELpp>Zi zGE(g~ReXl;clXO(1EP-r%Ki?*D+-yeKl?SJPWvSPrKNP!+R+__u$1PZ@>*Q`9!TeQ zz18iN*V1AE8_y{T{d0@nZB0H>!~$PHG#o5NYsa4cH5rU+I=UnY%`&3*%F`P2VSVYU z{v!2cwE$y|^Vd%T8!NB9#Gtzv6ed+w8T-acjt{gai^CC5T)aG#8wZ_VRD}|Fekv`! zA|!lcLh$B``5SWrls;Cbb2lZa2|8n>C(zYtEioRmLCBMBNum0x3+jCd=6)LSlJb!w zV5J)AG4kq)=Q(dxylb8%nux>>-@0UJaAHBfjwOjJtLe(`lij(CJX;MFi~!wbfR)Xg zj&A5P1Fza0wM>8!C%7j?@9cN$^$U0rVN1{RQwf)A2sb8kLpp+!zl>tO*|j1rgbEwQ zV67)&y2+Wr!NH*t=|fy1KJ&;bQ6szc|}DiKoO0k zvJU9hM<*ow-a9%!cLCg`yk28XmnQ=6C~-g%Pf&<|DU-|s2U8+u0rIPWQAFYklItHC zu-XFPl*Ca<0-lW9dWtD>Uh8Iu1W4vU*Jt|i^|c37O#Ly7(^^Y7T)99-^7`1L72ydN zPK1DXX(VmDZ2M*>3`A$IHZi__GQczIA>RRzEpotDQ(ORI7Ht12)0d>8#hRHh{_Zwh z0>9XA+et}Ttcb7p!_$VHn`0;tee4q@iQvABu|&U;oW>7b7Ln}|75hH@)Dn& zL3K&a>mR;cE5|vSE-$7~G9rm9L1IHBI92m4jGuF#Pwac>_}Vsj_1x5yX>zns$AM2~ zhoY1`7LmQQ?Q~?k$iUZ`EzTi3X|{8%?{M4UciX1Q0VfH2;XrO)aR%JpAy~#h=X`d+ zmHT)6{69Pi(ZUoa*LhPz?dWirVQE^+C;*rJah1v7vkgaph`L!ldI33P*-HWm6hXB|n0^(EJCkKV@&`b6ku(-0ye?Kc?m#)$ zuiGD&tsnk2Ha0fCB8kx-0>@oI(CulA#O;?GF*ceLZWNqR=;Q_$m$J5=O_B&FL%R;M zMNRWlq=eTh0fnEKiF2Rb>n)w^n@Va;ek$^E+N$+wuJH#Dv&%UFFUOC z&dgl)Z%wIs&l{|+Ng%2=MT%EfANrb_zR-?6w0YBCzOS2ELGl{o_BjLkkFbyB@={n? zWNeGMJGv){R5gU2Hm7%{)#37;hI~99Fz)leKoJF@`vuIsnfm!Vmm449WgMF0Chsgg zd1as|{Aa7QK|zO7PwposT?)!FGp`z2F6ZMu^RZ#{*BPRBOp2hs-bD*h4r^_0XpIfT zpit-qRZ>yW$}+0E>VYH%xeL_#KiYb&5huT~r!>~=X}wsSv(}Z2 zRg!}2fMN;nK@=&_L?HK>Zd|zpYB`mLUC0u#f&Fo`FPNDhgYi25K@>w30DG3Mgcd@Ow-YSCq^vCWGDn$?VPN#mAs{$GP=dGjRpLF*`hD-lwC0 zIkzZ3@3B+1F!_11tf;610MEGFebppW>kF<+84CYJQKEd+U0*->2f<8V^i$~YI5sJ- zA2lgz#D`q7_lN=5_!0q}(z#ilF#vN#aQ+9!)8MInR<*U!@{j&>cx-B97;q6g(TZCT z+N-S!G!k-<)?`ClobYixFK@vgeaF$Y78HE{*6A3H@BI zQ$5)+J=uR2UuX>(t3#LiuTim@l>+^UJBG(MT=7RjQiC5GmD>wV9UUYFp);b3zrbmk zm_?hbtC~J=jV0YjL#|?Qqk%igGFsKpUvf7+!;5;Pzg2B-_|1GZx!g$Co4=(nYb!AJ z_GVFCJMGl=Ny+1%)sMvIXDS0beE;ZU+-R6~CZfrT{Mc&G)kuu%$&{LhDp}ZY=RUp_ zeS-rQ8RZu){%cg%RenL7(Z(86b)+`upSKOw3~ly=_vf=WZ_aOc{^(|sx_&iNBqI{E z`W`BnMKr_``YAYXa6>;;p>88L?0+_ymmAveK-saJ$Xid$S%yYMdXTn`Dj3qgw4(Ph z+89kNvVT5_omvnI^xoG-eDB!+t42XZB@p-zaN-%wm3sWO@ROz5@Iaj4->Db!$?Ox@ zE%JhQ?2Leg1Vr?F>bU{)VdD-av7Cf=4}?jI1X~S6QT&gO9X65+%mJDP`xPV%3f_JF z{omu{1-7WnL4D%C`6R96i(e^1)Yn}9>UX1ue;gW{WZx4kph~N%()zzw|3}}ApHq68 z-&>c{>rpbLE{w7PrlomTIo>P=R-g3X7g9U{K}_jx=U8BMu(E6@Ug)P`|21p9-J*U; zI%ZgW5x68a!AmTZWORi8E1MwRX@jgVcsr@(;Ky{6Sm@L7)N=015<9hUOl* z@2$NTsOh6lvBMaN9RLCd1=YuQpYa%Y@VD;wT|+;+g?=isRjUvP4MSsI^hx_%J4V4H z@m^C+r_)t4F#`^V0ul6iGY*DHPclg=%}1&Tf6B9VE=!WqUikgF$N0j~-)DD8Sabsa zprs1e^)@PP*`-uYQ_qL<(8Pk5RxXRIbE<7JI7x5dM}M4`i?C??P|b05!$_jZ+OO}q zsAnKB=afl%))|b66!4S~C*s-v7r(ytfw&y!%($?CTF`)?fAG;S`>u{e1(Xn@^552c z3uZX*4<~;lb-t9CePbjUKUrGT^g4}GM4A$+78F|gf-V*cu-+`eRb8i_!5w)@&f!;u3aemLG?qkkgS z@;3|g1E2R4B$6VBqVZ}eGtXdVdKE%cm22YF)CB^14m323c_-x;i|)NqcQ>v5xE#p1 zTt1}zRFd1ym=wPnGe_8eHUQCHTFo3lR-e2Po4Q4%crK}=BP<4Nix^q;TEjcp7SB@` zeBbY#s$am?AA%`!Hac!la&gr!S$l)@2BymnK`=&lz+-_=pe_unCNABd*Jlt%gE52y z15!}OtNQtmot?r^2MCcv|F7g^7Ejm!R5Uf(yxcoExU8oAz)uqdfB)yU!CGjP1U&1H zrOzC!yH<+&w5hYXiDEd{+-(1sYa@^MDPa5-e_?qXB<5~!0%BZ>r!uc7082-x@*fFh zo~MZ|sfe=Aww!OcW{5^G<&xR#(G4&sN1pQt zYNgH@_)dKK%=}xC1Z{1h#Y>|QpX`}813A)CUstg!k>Z0MTk1s}h1Ywt`3-CwFjZJP z*Ja^`on-9re8~kviw}I7s7S(YLX76R*rb?GyzWZRWyR!|g_pv$`7S^#FrUcPTlpgq zTX%W}>QDxa;eZ?JL)8x>2%a-u!Tj-gX|L8EuS(j0@hWv^+COL9MEt z72vU>X88X&(SiBOmK5(3={^6Kuo%3VjYK48H5cg#XXk>LL`84oYDeS~f5e76@U@2- z7E|DiZW`64`{@t}j>rrX!Xi2LqL=5SJ-y9>UHM7zoupUrewZlB3~V%O0T&m~HAp}H zc}ACxr87MmiI8IY?1L1Oe`k<8oz8TMlNxXS3myF6Q43*P4ujyEtj$co2fjS6B!Bm3 z$W*oVFnGgz!}0f#5kY-Hk^a1;o;eG$78qzvM%DIpKvLIKl0bO#LzAz_WoP-e9e1>rA1!I4%y=YloGP zxqa|w2P`l{PK$}jP@s9F{h#_ErZcSHB>qFN;hTfpl*M|Rg|O1{CNw~BF>jx(174i( z2oVU~dFTMDN#Af}yXHJ-HPv%lK>`Aw9rV(Pl~s9pRDUhs;s1xI42%+?!qK~PIHkVS zTmNiC-jxm{jbVb(p_aA{tl3^So}OdafJbcC^7At(2Y0ga7=gOp>SM!w_lRj1K4#gN zQK4!^^u&Y))|Wi{=BXbBnuBo_=nw~FakKJxqsIfc19*;(10B}7@7YB`^AY>C#!n7Z z6Nm3qo4=c3|8T^Ik%x7>p-hh#%iN9+NikbL!let}UzFdOJ@BDOe`8rGEpHHw&~5B( zSSDK|3XcZ;0l$-W_>Pb=Szi)7!Tm-OJ%wxh$7##&P~m6cBeXYhXh4WHcX9+R8Q?4Z zTVZ6t?3dMI3iK-}fhEwe;-R%T3SiaP1AYh%iE{jKg&WAWfO<6+jL;1Wu{1P*;BX)q zEEg!89e4r+<@W=tfjY7ws5G|rjB{|pG6L{`t9(YkJv`;xU`$e0+`aS5mOSR{hh03NwHd0Mg&E z{1F`#PfJQmk3eA)28RA4tM^q8+5aMYI>_4gO0thtcH$AdTRz7E?+|(ea}%7x{Lzn? z=R?;owopN?YZm{SxCEMm5Bw8PkAx3jjn2||oc;-UBpX5e@aX(;<(EN$*H=akhrb60 zj*j+6u)ksX+7Ti(%;YKIuABjX)w7Lh@NObl;jYJ5=7cXIXGL_^601icCc^%GJ;cM!H@tSFZ=&tK6Q4dO-;V2VSB7f7($P~{oRP!IDeIv!X2 zYPUct@Kc^U5xT!>y1R|suV#{OT=8G<_C_gu3tcD`?8-bK6}r3mDRgZ39QZHl`CWvs zmp>(+lEbR{fEd#`_KMwmBCPc>X{RUG?%Q$kBjOZ77Yj>9Oe_)D4`7z$g%WAQ@P|*I zVs`|(KudfE=mx_F=zI0>&|(;kR5%TniYlJ)r@$Zq;ZF@zktHRiB<*2H0Cmx0mv$UtO#aa-Ey-9I z-T`w#k~{QaAHhsmOaNwm2aE`B(9qV!^5)sB7`voV@F)FWzN#N+pyhZrMdoc*$~5x6TxWR>wr7Jilz-gVJ0hluL4PQA6b2obY4mBee`Y65yl0~8SOCR z!YLpBrHCgym;GFa1CuV(1wO0&ckuOHKbLbk>W8lLi+LMu6f>JOM^@Nh`2Jp+mD2yV zfz?o3VUB1FHZcJQ(>a|R;97l6G}^n7gMU8`{@t!EQ`yOPkfqW1FY8|FkCLCsiHQsu ze)F`b!FTG8o16NTXdZ-)>A({Q2ZT%Vi-mC2CC!hni_@W`a{|HE`=m7uAR(>(*vY5k ze8$JvwjyP0oSyQPNt+a<#yY5s<4gJb$4qIA5DH_<)9G9PAo-H7`^40gJRugdEpBUl z1YVA-{S6LTgWa;qmWLq-KZ3Z|Iql;HkHqdJ ze6TeGx{K}*Ev{;@2U4yqW81OIV+nr&x#^z1Pi9nU_WpsE8xjid9bTfrUAEFh`YHx^ zEvYo{>#qNndNSO6X<>Ey)3=M3oVNkklzv+Qc2T9^U%N#(}zp$HV*ngjEj_GE69j_Im(lIg8gD| z_KFa>JZtjfkqK!Z^Vng+g_iwtJn;ef&)tzM*om63{l3a-)+lCgaz7B29XMxLLsV(~ zd@QdEtv8Au?$k$?Lqkm2h@WOQ76CQ{C`es^Ub9d)o_5lMN6qw-ic*R#N&4-(g2z6-$gFpS z$?T0!#|!lRI#+M0YF{DF)(MZL9gd3Qp|}JN*W^N6Lvf??Ho4bSg@w3^9x4-$q7ObV z$L3t(_1VmHN5okk6^?vX9ADpC-<=S}MR^AjizZ1waZ}oBTM`t+!;Awj+P^1>jG7-| z17N2?C5}-d`c|wpi@g&MeOa$w=$%YTSrLmd{uj~o>e6a{>_w~FhZX;nAx2}Q&c8u+ z?r=%?4#V!zj(FqiX386|+&iCb~R073S zhI6g*X|aF2j6eMRj<=NT@2>uVhU6eMnHEnk>(RqWuO&-a%h!>OCpeg(CiBXw436Ae z#XtCZJ#Y=4bKP64)3ucS5ISH%~P_+%<5ue0j_W{{K zp~MuaFe_sej^d$t8O%myW&0RORaPAu4i?FUCixG?e~{@iheUz{iG%%6ztb$gMh=2|Uj>Ej#K{G1zCpN;eit@YCxpRAM8?JItp84YKt!2o;i z!o`>@!iir(_6>I_H~0|5C@Q^j$>q8!He*>4kAs3g8*ZSo!mzLOVdEkC;HTUdHb`R3 zvpx|>Wq)!FdYW`Pr)%DNc)ioK(lh8Z<5{69Q1dR6`@B_OmLaj!{D;F`zjM-0-BCz^ zrromNoJG|uVs`6bBB3<+DO$L%04qs6n0U4s#IG!fn`$3i(fs%<1M4l?OyCnZ$nOV3 z0_()s6Gc9OBZa#b%gs=H{xYp~%PusL(N7au@#poP+iQe09kKYR@njcNu?0L@AGb;0 zGg3lBg(?HTv_mYM#~6KtDpq*VdgT*~UqVnN0rmun!CMbUdC}ham*&!q3~-Raw##1X zqMsbpaam_u!RU$#K@zcQOlh~pwN=r%+Xh;9GvmF82neXf*>!mpYn=V|X;QP|$?M(O z(MF9|lRGHph?P|7X5QMgON(VrFWGFeR0rj46CRUc>@0sjZ16S}vGWcHmoR@Gj4w~W zM408|<7-k2pS}Ki!&M$jhNr#NW~O1s)MwrF{`lv^kl|L>J-x0%7GvrMqPB9~h0=rs z^VVf+MH+>s2p-3~@||Z$?6Y-cKVR6b{+A079E=>q$zH;XqYii)dL2UV7K^_V{?^|g zshB_EC2ft(1I*2EUf+<|fg*NBvxNk0`F6tXm>yJ%8e$AW|FO5*i_w1)Kj1JoUG<`y zlZ@6=mgw}oG;im#mm>Pr63oHr{^(EoG{aKAR4j5+7ttouy|3fxJrV?=k9v_j408x3 zDcyHCqS@S;DK@M6W(up%=MRBE!SbgOHN8z zH=SAAx=Fh1`qc0pAEPC1JdS^7$GQ}HC#lJ;oc?qgDK2q;#VBXobI^ zGROZSbm;Id+Dk>`Pb`#JnPV31OD87vDQs0vFE-CS zGu2Vdb*kP6fsSRe)`z{CZ9v@%{DG-=v?4 z61mK-%YiLzoZPgFiF1yku@!B}^by2>u+w(I3_)*_2x2W5LPWf-&GZ6 zs!xoRXy^7}>Z|W}I66eOz4ZO4U;{Vv)fFy&z&Erx2HEK29g{vyVL4xo+uPn2Lq;lssAY+mZ@ z%QCI;yq*FRo`;Xl)$cI(OTUI~%a=D>X>rt%S%60HJI|)0f(tqlELlrEDB04zcT|Bg z-6%g8ObGY>r9)bp$XB(Z?+^%-koot_|FH@yu8~JDJVPZ5xTRL zoL_o+Dj7Z99)=yg&rXe1v`0%X%D2bw7o|wUdY$-i5_hm3t>`-RQ(yP`-ijjye7B#% zML|4${BZbKDqm@~&AXXzB+ih4H9WLygQfR6N-_@d1Cz;!bgb!CqR!IRyRK;S5UQ^D zv=NC+?c@n_#8YM)6%kU;4{Z)330d-wAO4IfeNeEuP4=SI9!t1GhoFJ3Xs5qH1?A1t zDvYf2>sMoQ;>sR2Bl3Ur?x_j0HIDdPB(h)Czie3H`8%hl+IH9ew~+8DlEL+&8L0pk zf&6gHd2N(0Nwl2F>A;{T_}$gZ{M|sPbc)k*=9uS|zFsLv)&54b0Bc<0ac;k8nwe2_DFBppN;z-<&VC zm9LFsr;h?mijYBU!imTM-=TTPC!hEOR~j;CBMhb(F{&hi3|5ZrwwBy5pyb9FgVe@( zEYG%6@^;s=4f2|&81Zrk(h?8OUnR9(pP8KZKKe~gKC#G!wO!vnqsYG3Rj=MWZ&iI;;gpwBe#}SR@wKa-j~-NR4g&oemJ#y5vmd+5b>8ZJBueLA~qpx`eg1jc~})vaB%+&9*%_p|D(X@0%I4>q(L z#(~yx<`!lyzB9<^ertTwGQ^(ud4#Rj!oB_e0G}-3VSi*W{1rpW6pA{1!xjw^m$%U3 zvLv@|$RA9SBrZ24y_Zal`2kvR1~uwheAZ^1PI``82v}Z(*JtE9)Z@zfdQ3@EE3UK7 zm!#!gkcQXLG;2z&rSWgwvcC17tRF{nwjyHQdb_M)A>GEONk3fJ%M6bJWxI#RFwQ$mhuM2JO@aZrgS zj^33Jg5vGcS7=-3I19BP1Az#{@joYyyet=PQ5C-4v%k;q(`G9>6&T;sWuDen{2Z6I zbsrO}>*=#Ygwlh!ux_?Vot*a6lr4!dk*tcFm!>ki+VpsrLrvWvjZd8H(mScLqKPUgf{4JF6&lk`f!#4F!{o#L-wCt#9{{Gfx5_0P^Z zdK80Mm0@~$R@2; zWzlP=GqJVD#uX8gQ`Q6%-`XG4gP88}cGq96ow6INaWH5&_uQw&B>?w%z!TfMgxN9e z6LaA#R<4ZCe4yk_m7i`}Y*Z=58(E>WQSwst>r2-lh$UnQ=a2On1c`gErOCCv)zatUYcV7^(v;%? zpIlBLx5YuYw3=xLvANnCX}xWJGn8+{LZ?si0Cji~>9|($HD9*GuXu)$3ThOD4P&k0 z!+qgfx4fl%#@Xf#$0$L5HxBp1TRe)4&Xw9|@UH_n5(VZ1+7h{(kO3+ihDd=q(h9l6$b!iNOk?F851l{$h>dK6eu=+a;$ zhc0WxtzDOQ)^`{9rSe zXFdo9A9~O&bxnrXGKr7! z(5DElf0oCyR@}*)m$=f`Tzw#1DJd@N!0N9Q!7xH%Db_7cnEkCbf8KBD^Fs1EN?lMV zI1Dl{4AtN+tC{slpC&#Owwww?c6WP=3!3z~Nmf<|cfLJU+bG6r! zI;Zp-Oz`anXkB`eiAR!}lqpCz%T#&|M2lPU4VF)@K8CaL6&043+sy80H9DBAIJ25& z=zia5h*9Qh6TJKWHlLQfA;Nc76?g;st3#xK5;Q!)uWu6AY7bNzWboiR z8fja-YJ*d`;%nxL;Z&XKld^MCjBY`;DcHj-982Sy_XzqT%9;|t_9pDddm<7NMptgg zPL6;uy2k|{s#G|;xF{_tks39tVfjJ?vDAY_dJ@{LiS!kGIP{I0ZTQk~De0OG?#vW^ zoA}da?YZBiTH(_=U24a~>+1q?;W!B@vwX-5v6-PvMy*SKzUI zR+|zGy3x0$jBF=L99dYJ893syM?pQigN?k60NsD;p zGiWG8<_?W|%I1|h7oU99uq)LPiBWk_)X`^%<$<6bB@|?5Zy4GRN-HYl0jn%b6wHs3 zmQRL*K17+PhP}%LIx4YiZ~ihpg8W`%Vqo;yll-2Xv@kRK6lVjm^n%uGFtz}p2$);J zMO>b6w#jDo1bRi9s3)kIJ0(Ba=NK~Lcrf3n3>*1eSX&O7$e-y=1#;{Aa3+dXOBplN z0F??t?|Z%kFDvGow)02uf$YOVwzd^u##8C`wgoU=QZospaST4_Zu-HH7rdKBN9G(R|{4B6#}+tnIBGD)s8##seCNrle-fsy<_ zf0dM&sBI4e=i71}ZX)|fF!7qGNs2u?rjECdMjW}zCl)z)FNA(j2A5A8Z}v#PLVC&I zw0MmMBF%UL5`hsyRJZGSlh)Zqt>URj)xHz%2M`#oiyIW3ddLWf|%* zMQ6^1xCgSzT8r3;IA~jAVab!}v>7rDtBD9uGH-E@vs8JTgsF`c=8|&5L11_~HN8^i z>W5D-i?kE8f5Q0}Yk_U1q^p|&ctFlT#{ug-WPtU1Vxq5_(b?7YKWG2%O&icv$^Koc z&i082T2D44C@CvbWlB=!BVz_f0AwJ&wKarItMDSSwMP2PGIWsYdWYAM}#OqL`=4w9O+i zIv^k*fE}SED;oi3T|a(};K%(m;vF7Vi1YRY{r+95n028S>6>-S@$IUMlxlbL8!}g^ z!Q(i7hgklxBQDc#qR>XAmD^>L(s2?q>^9LL$h@(YcU>@xAjUp!=HfSTVACH-MHX>w zT~eZ=I)NFN0GhZQkNjktL9<&a<9q zYR<&ZD~M(PEGvpNonh52ABU1PI!C;U1Z=U0eZ)&k)TLOM*_b=GI@MC3SrMI{9@ZddY+n?P?`hxt8w zxf)!D<}sf%DE-5LY(H#M8Dz)A>=dmUR9>eD+OI1c8dR|9AVoe~&6+r!;tuzb(laauNIdVus zfTUwhG{J|d3uJAyRd64EPSRQM$}e`!uS+o97a2+K?1%78kWnY$FXa< zjeAtS*`<>w6R3G77A9SIu<41@nQaae2a6Di@5mrNt@PsH5RWHv_&t~QN~Scl!Q-JP zaIyV$w#qPYF+u@^(uBP#J+I>(Wx&U=^8u+mI;N;=} zpo8t#)Kp(E76-=(8Ts0oOj>0**nK!{%(Z8a{<^ty zum^{IBoZ%0@n|xbnH~pk^I?SGg0ei>EmESkFyf3*_3N2a%xjX!Z&PwR^`@uI4X?|} z&gOSe(k&@*q+`s4LOevIKJ>Qr8b}+-)vXL3H9kUwh7(O^q&RF9n#@~oU+)*QdFfZx zwT3y7#}N%EERz_*PR%P&5SN+f#)8-;!0H0sL7=<s?d9(!II*q(DUKILW)qUct$vwo__MEUW<*jFbXNg*A)_ zugI~jkq0n*itg$bH&k?VgBde~5B?;(zFr+D34(wEh%T%?ctXk4i6-Vh!tl_7goAF{ zSX`gb7ym6Pi|jwpEEYxc^v+H0_D?OFo_{ZnBwgG{0SX0WZKUHhAF8Q*VU;3R1FMa z!3YPR#RFQkdAu$wCoA+T*4IA(U&=rhmDJ1#Y1F{``+^dD-$b_K#?_;>;j zFvl+7E6l2h)f+{gw9^Fpt3WvUH_()H;?do&h73kQF!7(OZ+mxFMP6RMQ5ptECAQJ) z%tjTy;y)g6&~1E~&!CpCLg=v3#spigWRteMT<^E7^Usu3Wi{$K=y2M3p;2&d!Ygb#ZW6SLAjYr)Wk zH<;^H3>1o3geYSqfDHA^xc>NNK1k!K)tnkT5m>?murjPE;j^=|@jpKd>dwa3)G;NEkn|HWhBegq7%9!>Ehr>@gbI&*^|#VLN!J#KjY55^hkw**-S zQv5eb)YXZRXOAXc6HH`hMz3zItYrnGD(z&n6kisjVbXlu9$$gTI!}pNFC3xIk$~)QlKTU^21C2+Ig9mky zp`mFBlrIN2L0O~Y?|fLedTwsT1svg7lM;V4Jzz)mf;n6h6BBvhq>AM#x@Q(zaWYIf zbB~}vrUX|$_14(Tw5<&FG7?hUIG71>zKrCme0`DICj8`>kjAZvM?IrR=boeO*f$S=s!y{vd= ziByG=(@XZ(H>)3%sMuq|!$A|6%VtprSgvcE_He zViF4?A{G!Sf>NXj7!{BrNE7L(6zRQJW7LQg=^a#>v_X2GK@pHT(xnba8TtT2o66lo zKBFdnYu)ny>)v(O_byjBGnsSFTX)~j=9a{2^3>yeenN`!&c%_EQzuB8P?!c3F zq4h&6`$36vtv6S((H&v(S@)XnXlj(t=_p#VJT0jOy_$sOuQ;NVK*gU+0`&vYQPNq@ ze`l4>rwe%FTBZRLl41MS%!~}Ki-CjrygP4fsb;>2;o08DxM$BjBcn?|)5iIBBmA_P zg6j{$zo)et`uaKdgffA_?<8%jK76!3WK>k)bQt_Qa`^BKsU&_^Z6GDp@u!~URjyO= zK8OV+!`5(iamh?elZ7J>Di2Wgc(d((g6k;$9_NUraZsy;p=_P8Km!7_Y{c_D`R<0n z=;7)4HC_MT{nLq|E~q(keB0s!CQ0lK+s07i7V`uIVt7E^&}4FAO}mjrP388PFn$qy zhKu&YZkF@Z;1aEa7>!dgZP{C&NbLx<-|=Xtv8Y&#vcaP`tq+XcPO>*f^Jvd?g5@Sg zwYI*lrhMX%OQJqc9q&qAJ9$)meg++MHI*cAU?;+4I4;twCOms&gOtX>e;~wi*Z7W8 zOIuHfg+vedbGvshzkJqgrI6Qpg<-|%UZ$(>4(lm?DdQ}gfIaUCv3se+$Gp@@b1io> zoz(Dy^s_b%3dhvRS77J72E@bFwFJs^HR&_Jp#65-8A}1lVzb5X1+D;66bglMh@z8i z1mYY=eYrQaNgc_DuKv&`du5B_H1om=>9%2gdEGv9x@xM}V|eF`Xx$l4o`f5h+9N#- zahj=4#;;%AD`)zFOSdQ6O5d@eQuE+-@l$a+Pn>myKfbnFW!Uxlo|C-C>yEafMc2YE zskD0^wS3k3dgd*$sw%C08MRNuMqcg2RA?w?o7(K&=_gYM+fA%1&2H^HGi~`;pDS_4 zL^RlprnC0w`=BzkR?ngyZxQhM8R6GUH*Ws387c2E@uJROzs$S^QT;aW_Cv9GA&G=% zBjSA;n(A~nSw~1%4z7b~s_2xvjE8uu1@n`YsKzJ1wEutzHFiT@_U1e=C6#tbz^A)O z8++0H*1UVmBZFSo?ksqf;tzCd?Dv|V<7H9NMJJx9o1+aSn)cjTol9Mz<}E6>5s~aA zFQ>C{&Zg)15xhH0FQk6B6ny!CB*UK7_jU=){EqqFzsmdnZd!Q+-0D}st^U2IgX+i0 zuBLX~>XX!iALa5^4{16bQ#0-5HkpYX)6i%TX(n?0QXTs9(OIz>_ifZcutc@q5k|bW zi?K0qvAE&FeF7#RVKOX%Id)}*T`g>lIsP&m0%2!!oX$>{+oV}<47e^&-gnU2im2`! zbT`urU4FN}$OO3^aR}{+pHov*yxL!)6-l>HnRZ2Z|0qc`PAD%ImDz_7w6EFw zqxDdH_o-l^aQbgvUwgd)eyMTh%iU{~aAKvk;$juUA8C700nXEo<7-}po zrWtRgS=(^4p)fr7W|ochRo~S-M#(j-Wg+fbGUd{ZNPYGEqdZZn$Av}B(7XJ0v^vvQ z$H-UfMaGLaZRt{7>1K?pQ~S1Ap4PwG6(S-Wj=rQ^C@WBhwb@er+k|*1u3=fffndCz z*sLdO%6Ez3*!DSrG)r{Hju@`B!uU%dUD#26TtxjZf=$GQf|hiJ!{>F5SzJL?j>$hGw|p zqz4mQ6w%n3nZ-Gzm%|Y_7i_)boATIq9_>dARU(suv1C#gPof3)-f>p0#N#2mfEwxz zm$o}rNJ^sX)%8YkUC%D+H#vQ@Upm}tp9C;C=e&&E0kkt!utOda{<(aQuJrg<_AFZ7J^fFuO z$Z(yVsNN4o&87v7IKpVRactV<7axAVA4v2vDATiP?jsN>;gSECr!#EdPTuQbw?t0t z+6n;gP6Av;h|p1#8{inv03U_Nf;fbnv4FgEkM)tqy9t0Xkn_+4Zs-u&JrcwQm2H<7 zgMH!nLZ)*Th{iu9ivF^`&g8quL^li-0y=C=S_afsuUc+b^q9@74_8PHS560ubKM@D z=5dF{aR*?Y<+wyor`m&B_n@XWd}Cp2+XKL}DCvyz?LZu=da$de4^@>xlq~*`-71;GUf({WT?q zrN}H0j4=cT?>#j)j{kJy++kiFQ>i4-A!Vpw7}!&DMhAaQ8oM^`o~YCjZlayfoAr7q z1C~mr2sY=X<2MRhYd;Z^HYx#IJ;UvylsOjTH6chUkR}Uicdy@{O2l#f@?`QZ8~N6Y zIq)229P^w#zhmnb>bM~-)uw#vw0!$PExi+)2jazzSFiVA2pXUf?DJW8@NnD#wRWM`Cc}qRJ33B6PGl zs==6HVuUjZ!;_%Qlp`3Sz!lZh;5_)&LGJAq!I*&d zDJS{sqYcIa^l{J7kDh6P*-A{fu8hn>dI2ew3|md8tpkD&l$+gs{|QLR9*~O1v3KKa zq7P~6GWr_(ODMMYmK=f(92E^sf#^w|pAP#hkpM!p$PuS3U-N4s8jxEV2>KpVsi7J_ zi~t4xw(%Zy`IfufdM|r<`Iy`A7JbJS;m}7{*629MtYQvVf$F|7g76;8Z|IIp)3Zkp zHl!Br@0$d$)Kc~-K$W{`X_*Bv88~+beJ!}F*m_1Vi5Ni7Pt7r?(n&MVtfZ=YDlOfP#I28{-kwT2)RYR;LiU5Psdmg!6+GLjuY#GO4>d(DbG*XDo3 zxkFJ+h76 zPQs{^?g6zzA$80>5q7jq#oPs`aHAZ`@aDlODjW&0AfN~d_({O>Jfow0<;nvaG}VPZ zjB%HOB+W%lC> zRtc8_Ls-CGy}MI*zOP7;4${bRaF^wy%O?f_r0n6^V@6grh+3><`?2gO(Y5`~EmLZ{#k@4Y20C<6fbm0J^?LUb44XLjMjs1kc^U65Sc?uKoXup$j7p&V` zM6kT_4oA)2qJTE7d0P*bYXTS!&-T-a=In@tRtY>WgZb>_){EUqqT zYKQa`ATdV?QCul)!9E(%X6$zM#y%OM+Z~s&ChsP1V8EdB(*0|4w7I!=Zvz4SP)aau z%5T1WPNS>|45>Qvm4Zm{jzfyOgDgAfX&ZIq$Z5t!u`t`n z#8weXdo>fpdJWiJxeNdfnn1%ZC2de}yKj5$CpMc&B?Csi0v$B8(4;BSo=imL!bzmp zSbJEUL|aZL0ZwN&1`1MoKp-N+oR*&b!)EDuo*+hlCw(mxUd27(>2(#AU^=ww!6B>< zc}}OoWv-O^;LY>j-VFcVRLHAXY|V6;X>ZL3$X!DE(r~_f+x1Kfw7sFOL>G-p-c8uC z_5RzL5O=v<7O{6{n}QR~jEs!lmY=KmHx#|?!|>#gXGNijV);NS;+C;&F1j zF&zJv29l1bF1V-uMHyaK6J5+-1&k>3&;ATwIVQh+d717m;+)gc)Z}Q&Pb+Mmn3%Zy zdicYKXNg`*^70@I^#GKe{v^|rtDPS{9G73J?D%!))cyM%+PFJ}PIZ-xq9V<9yZ4{8 zP)iZ^o2E4npwnJC)56o(AIFNhAAwU$Ie!cR>sWSm^`}OfSS~nwX^0nF%Bg9_%Kpj|R`+ zq&Ld+dd^Pc%aK5%6(R-2Uo8UsAWv+u%Us{v890-0?B%~q`{%J#U%v81rQIFR6cAph zO|)X>hHYN`$M@;O08PSW_5+yC8Su81i*@!__PfsYrKXfV(o}%56|T59qJI z<6r6OyW`bWHQP;19{p==Jb@fIPo+k2|MCPX1Iq(Ib%}uwah#dIXN`IpG5QA-Jeann zP1rJ=_$?7P1&}(bx67@QP&?iUU5AjsP!nDmX<~zlQ;TrVD~N%RZ2~nxx5TE)bBK_5 zIqvr1^3fm(r+QY`@MT{pX63ZLa2xi3zJ--lIJ+d&8StR4^w1r$Rg|Tsa;V44Ay3b2 zUjcaBdo8iTS~t zoe6&dTK&YM{W*N*1szWyAOh%V8<+-{3zDcxfP@;%KDF9!t0gB_AMI`3e-nfykdsCO ze1}dRU;ts^GF#0#CqVfHhXw_+`*r|uRO|+Atq54!+kDI(((auP@~ta=B8hg3&8HrZ zP?)Nhrsbhla%@}Nv;m2d&%-u0jjwXy?Rm27$&eqTRzRrIi!$^ngNO-WQBtdU!3VF? zU5-$dh|_!>Z+5tD4>u@!-?rupj!T=mB0E?0a{K?cBOWEJ%Ibp1viUgj%?A9M3beI*2V*(3O@x@Jj?l zRXL0|a;>d+8@7Mk=N_5@xX06gyHw72RP;t?V$=BM^wKfgc3a;^^uQ8)+l*eED58H8 z{Zi?)Zu_ApzlSRWo!E;o`h99lvCoU=_>(z72&J~Wa-R6eu=CL2SuS7aa>v0SqH>gnFh5yH0O6eUOP3QMq3AvW?6R9*BCLnkIpR@!CGgj_)mLOm z7aZUl_e8Bph=MiN?k?=!bU}SRxMo@U4AP>(2o} zIwF(?MB)k?>BfoU`8he)p_D+m7Z$wHT4xT#+Fu{Pqa6u~Ii5VK47Tt{lZfB7g3etp z0L4WW-3#&u2>#mz829eY0Nkq-!*ho<&K-^?czoUa&Fc;z6@EK1sP}H@8>G+`qZ=u? zxkAtKP$=2QSo0|MqGGGRtV%~5m-svJrmXlQAPjGEBp8N55jlK~Hm zm(_LPg~WVmati)b@Wq#)O(_DNS7-|Ok`3r1W)EbsD~LKOGyTekpH zzMQnF_4xakHRb#N#w|xmVD3IlU#FW59;XF=L5O)Iq?vOc-qV=RJ5F$?s~UZBYi}rb zHnu=I%_6|s7d!^%&U4B~G?+aUW&Y(;iGM*tq?s9$+a%tVftyKX77h741+_!l{B}&W zNdC;~n3ZyN9PD&{9px1yg}$4)*4+Nl)+!` z=mf8-s44cEvAHw?&au3&9BgGq6Y%CffjIqo9cf^o?zhHjBcX}^Ca0B8#DRXIl2@WLEyY5ATA;NJy;R|J-7 zZ)*~71yU}(h9EM8-KteTw|P^APaD}^T@IH)KjljA?Bn0gTrv_3AVYv@JMeh3%2~+& zRxZoMlO6P3>t@~!oZpkY0DAkk?bgvvcWjWB_+gGq0lWyKEfx|UdLZfwsraf|qt?A3 zJQ};k8NDBIuIIM~DHF>$2E2ETh6VA6jKsc(JjjSj<3Eyh#+*fIe0S~xsy+kzC_x)i zWe_QstA~Iv)WskBVLK=bN9)^4(A2pfqs}j3ReVVuqewgyYihr;Pf}={gaUOg*_6vgV~~S{?Mc2^2L%g$8%?!LT?`igW1DN@18`SZ_7U& zyJ59`>wWniF*WIL=LSBB1_GNiiL!?x(QVHSAutLNJut6t8&z0^--hS9!U0TeD>dEN zL|w)@(Zte@S~12FPXi)zEMjGa!+KjrJUdr6F(_Muz9WGHK6=1dGxFN1pN|BkR>9sB z$_~bZCsz;ruw8)!>Y#R{@NM*^UU0P-Dwts74(>k5OJ;_WaF~%+}M@dwn4Tp1h8NW#;8Z$rrk<_~w49~84MRq6sU?2_7v z0lSlMjt?+gFXwH_2Tjxr?2z!!Omnmsx&I$ici_~kpD*=trgp#2^$}YKh)w-;4n;*w02=0)#*S0zrv48dH z_S6~vJg1Q(SGwBxR%C}dQJoG{E!`>)!C&Roiap9m#d=w{JfB{s>JwC@5Qx#fe2$#8 zD*hLoN!jXJQD-rX+yzzAD#8@jmhVwB2Fpiu6j^Q_&ip}s+m&{d ziwfGaL;bW?n&D1F7?aP zPa{0YbJxn6w!HoW&U&KQ$8_mE*xq1i)rFPR;68u*;D4+p{fp{s?(1^f{M;j( zV-?1)Yi_T+tZVWyETiC>1>`^;qfBV=PZdj(Ur*0iGFWSNO(RhhO!*7vvW{cT5Rp}CsS z^}N9YHoskvi8a+{I#<5nQP4^{-N4kF&!L@Wta{|hOHua6M;RN+FrH%6E2kPpV@707 zx|_bo?E2|BF%j!I!F;uVnut ztyX^n5vrN;>3&&));u#tn$niQqi|dzC!~4S8#80sWH3z-%y91G5?9P{mUx0WfvDVD z6vEO@N$nkIaZRnFK3bk`36}}Uw>@4pajCV^lA9nBWU@L@(IHi^bZJ$WZK%Wo%P&cz zdd=@QA$6CwUkwf)rrx4KF1A7?L1xEw|!*a*?q=BZ?comoQ>LYa&4g8rR;8- zb^1p0li9v}!4gIcZo$d2#o0tv(af%igKB`d)pWzst;@=uJkQIRo5*R&hGv`{Obo8F zbgIqnm@=k(=x|?nLjak3KqnO)cA(a^~i-0Tg*srCqDpaA9RdC*OIpJt+07cf)12iszo!Cjt_V z-4gB>tb8V0elTT=-);bKB64ojpx-Yq&t_VqiDl?;G#R^L#ynV*{F^a?1-tsDHM3Wb z+|H+3$Ul*MSv$>s_L|E@Le8FJzG6kK?Hp7_MCp;87ACX`44S_Le?#MlKkrDk3XHpO*2dP=$*Ih_8{IOJoNu%OSOeW$szaQsv^pGa2Mf& zchRylCt+=)mCe*Vqsn5AJhU-Sc_U4xQd;p;mtrec%#00(V9|nCp zv3j?Xrx6HSH_}HVn;{36+Swj*V&gsuSChQT!uCUm(s+M%->C;hUY{C>x{a{7D;c(+Rp8L+MKo@KO==Xu{~lm9aO?tp?Av_Y5B? zF$;WI*VDS9-!9cC;6B@HAVm#XiOWj#$!lI7(3NH~iJ55Dh!s?4Zf>%j%Nn}YJE@pE z^ao(E4F%CWABDXcY7~y7ymnf*wnE#C>C7iD7pztjmXxz^9L|RLiY&FI zM@S-FK!D&jfw^u21RvYi-n`iwi?VPpgL;An;>CzQ8Rc9-FZoAY3)y|^aE$1seod&(HyM!`vG7;YNGa1@;QFrjO+D?=; z+?=l@3q0E8=d84E#biFpv?P$x>>e(VnVGrq!+WD*Yi#J+ELxC_azmuT#!DPGAr))0 zmJ?d1V=JYbhE7<0tCvU_!L-kzoCB@yWHz6bc*=X0W3Hr*OMNUa$%Rmpw1!+T{MILL z=dDVgnFNCn{IO$=x#$_aR#xAc6Dz?YzKL4pA`|2}SIuZfzZp$c_I*h8cF2yI=Ur+^ zs*LwtSgTtq^WErisITZT)Xh5B>q<_Xt?8pfiQIO42-eyO&oBE&zhLGb3`K!Nb&~_p!^^aiu_NHnbB97vU$6ckpxC8ri2_7EA zgzl0h+Y)RD8#p(#4s|`;K3v|OZAdC-^IFTGERZo{v|wzUA-VYhaae9BPNyYrcPXmK z3^VaTi*~zx1{obZJD3zAiASC}h|s|Ini;%DlbALP=h5!Go^qItvKRItNh;rxCO5MK z!dqD`8w&Pb2rraqXo!(Tkp{Xc6ZZ>}8fI ziB(MNHwQX!$jg_$?KpJ1>xj)kI@8bhH4N!<;2B-^TACDmKqS<76FX61Sq6@TNEceo zzJ%7Mbn;Tz;+v!5!q1d#y95xWypeqkgxp9mJKenb*f6uE02L%U80g1RpfuS4wP=P_ z4Bf+6JZDayR}n97ZLA@zF37l^r=}+=ZM@sh)z}(Gu7E93J(N%*SWdi+xMxxfQz1Kv9=(Yl5Q zcPeKLOS~tE6%z{QKU>L@#I|l@p-ugXG$+D4zRD8WK7UBeD~&%_d1ZXv=~Vi}kr?gl z)PR>f2)TMAbyp=I|VcJ@8Zj2{*Ma|%{VdKE8SEBTK`}po3UjKT4OHjPMWhh6n zw<0H@!j&&YTbH=gy(S1X;NEl1^pGXg?y>S1e<4!RB_Z7!h3;;7!o{J1u;Qbx`CMq} zpEo>DZby^CmRo}im!%A(ZcdPQc>=5Gi|t3dzK+rgA{YPS*YfI&e|VI`;tz-m=j$cE zjC5G%#jBrRH5$o9VG*CFYGNWC8x`{GO6u_|FZ2#ePZ(;u&yL@t+8v(mzSf}Tn5V&N45_}obLJ*h5 zc5X*Z&P){N&?2oNyhwI6DWO#)cp%>Q9J!y^LgQR&t9#M;)M2ov>czE~5ZdnCZGMX9 z9WA&7({HvGUohO@l%Mx7Iw8OGX>^;G7<2W+xr+nudtC(OTC@4gy=rojWpun7@U*}u zM=ySCEI|o7I9~x_(q*{XON!VqPNu&^-vs_H334*>9^UIcrxP$^pw-Jj?L`yypQBXmsBu+PB$7r&V(f-YiM=e&4d z15Vmk94y?|zyo!&%iiz$7*OxrDm!s$QBTV*djyiD6^rmI$-3!`7$yk|l=`TSvJ|hl zhO!e(3~Bd9-cVHJq!P`7irT02*TINdU3Xrr=Y6tV@x($Wi6c;6?Lfo(X9RE16A5uK zG4i2%_U_e;-;O{Ac~m8WUzV4bSA!MITc6u7tEC1jqSWUsF9)3|2=*Xz*NMiS=X@!j zx+%RcLMmN*F3%5@MSJ&0wZBS8pMqOoUCrfnaLbHI3Mg5kyt_11R1&$5wRB--;!r#m z>^gCV=^YJF6cYR{0%Bq@`ODh7{4D#2hmAtVptQz8&ac+j4F@DC!rigtG9nipTaJqLN5P-MirP5KeMx6JrcMWvNMyjnh>1Znyn)vve`{!H znC&m&2PZ{KjG$R&&^Clt=ll29$_H)I($lkoK0D)JlK$L+gak8>GBew=-YrEXY)J|R zV*TaAKH^m;Q?>35LQaN6&sSJ=f<^$&@Q(i`jp=+Sty-^;H+*uzf8* zAhh0$m5pssJVZD#*?(f}F;HL-mDvIF7o{6B)|Rxo1fp5~THVPjIb*X*OVd|lkU_Fw zMm!=UA`-Q@xCmuuIg^unI#+x&q{-@QxKltYx7(y7I|Tfy{UgkA6T>%tJf z&g1AP)1`{IP}Q;?GXiBxwe|FxuZs+Z$Jvx~6%-W2Bqp{}C|-^E+2Y3#@mf^|7&s76 zTUg-Sxo0jF36MU~+}y0eI``7L4$7|EQMQ(P4PbZNki?ZBs*CQ}Am6`vkfU_nU4yMu zh%P3zmfzfACoBfxPeaI0P`Dxyz%^4=ha;6(-Rx?!g%>Sk8KreqPtu2SD`#T}ljhz} zqe#n!qOMLHf;28WoKI_6wDW>zwTb|GxJ{ZGQw2FjiS z@2h;MO-WoBr^*BrOAP`e6TQ98F2mE7v1`2t3u@ERp{paD+zQ*Rj629fal|%Vt>)s5 z**qa!t7bR|?ta2vsx5+l-dC;JIpwqjQBfvdUKha^1MvvD?G{DtSZtC`&Q0fw2sd@@ z$SIc!Z5^FPpdk<^6crQ0yyL5o-)dnMAh(~U`41a2 z{U)me{@)Fhj08^e=TpD=@2xb@tDhb7apN{zA9#`p=~5i->mwO-(%y9*f&4M}qCm*w zW3fnaDCX$0i?JCOB6nIqye~tXp*n5t!<7#Au@L%Qh`2vsSudQb=l5%>hiKfcKc!z; zISKj?j*6Z$bUt7d<~~Xt9jc%YWw`tkWiP_50?6Yx-TCtauljdmlwT`-o|td$sTPp= zYWlwXucrUjhab`01*V;kw|vE^Ih)f4rzlr^Yqjv`@SB@;^>Lc@a6D}+GD9Bh(v6AZ z$qd^1dWzVLKdyUAxl=KK=aq1{(8&vUn~biZWZIWf7oipV0l0| zt*3&tna0ikuQRd07;bq`c=fBp?>8gUcJ!8{-st9gELXZ}Y;e=Nfa?uc{_DV0OT0E! zy=!R+md4M`kGoT+|7J_$>g65sel5>??jd8l#OD|w=MrHj6$pdOHnGZy9&0j^aDC7Cks!LzGXt{0h8R98i*cL7gz@nOzEO_!7EY<%c(^%4J*HAzGX`O%!mWEheudet?obo;)~gGKb@ z_bmi6Q=V=R{k7LRZ%v@dm`&<$lFZL3y^wLRU}Cn{N_yRG^Z4DWXR_4fMBGwQMf&_v z#p}O0DTr$KaFcTNT;$<{E%!TJhYVDY|Mm1?3-j3_v_-e1cj<5J)utbq2l6etqmz)E zn}O*i(Bs$sHlAJCR;!xNHc57CuH*E$W&uh1Elu@Nh#e=g-PrCcsaxzV9E8%37Pz?W9Ny!!cRi0X*$ zO6vZMy*7sDd2pCC&!tp4l^AUAPRKI#7F0h7mD&-*mtlvn+-#dmSxTj&1JEZqIWo_+u+usW3F&~{>|Jo5D^R(XxqiITuu|)+UyIZk~u0Axh&LKmcP3F zv2t3%rm0$P!^7Xhv9?k#y0yItn{(#i>$VoG+f1hRMsL`kUB4rg$q0M3Wh%qTwQz`1 z#_M1BxH#3;Bmb=i{b38`Iw4+GzGw01tVmYf(;cittl&_k2v)*gE2y=~p!F6@Z^RoF z8mG3`yh?`@C0Wzti#@mcblao~c5q)R9*KT-ph%>iT*B7!*aa1ufJ?lF-)&OIIph9` zXyCJ|pndz6(Wxn6l7R2%kS3wK;S^ZYVOsBW%E`(3qNjgC%uETB3kt2lHGnF74jEP; zTr_rBHW-q-JfxP9I*)dSzPvU)=h$0T6uB0tJf>F>@r0Pu^pwSXww$xYn@zb*WSwMX zeqqWvi~L18@Y~HzdemOJIKMndytGqlf!JwVNmz;78AY8=G$ZhcNG6RCwL)X|XLN<; zT#;GDXPG>YsT4wH|9s7KmGzpZ8?4h^AMq=>)XL5MqE{Ujn7JPjui|KG(PiaRpSUN8 zO+mH%9DTJeIZG9zBl}&LcpjU?w7%O-?-#ll*IRi}GB(C#BQEag{j*aQ+$v2xYmJQ{CX{5y?qikI_?7NE;EQ}IYjnl3IYH6eo^O!$M#QX& zcJq+S{Pmf!EU+xYFNQr_v8+W!BFp8ld!<%bUB?D>gU1`xOLD4^uTqOm)($p(iB!_l z#t*u%S2>PODYIVBcVQl_a_wGPvNs&t)05Tup*y~ciqa%Z%*HIMu;w18uN#wPLi)8W z7lOJQy0FKED%KL0NxGY>jqvNSX4Cf7?VW)`cH>b!I>ffJ0nBFi4VON}a7KY}7rEd%0`m0Qk}nhfX2o6R08 zvT5@)JC7EczZ#v|*;UQxy^GT2R|+th$I_B{k5P1B61Al0Ns50qJDHUhb|1-swlr5m^fmaHz@}m)AL>Nb z5p%@UxBE_9-Kla^d2}Ene#7AcecJSn1xxlfC3qg;%3ozwtyhT>Tkhkx;pvEz3K?2{ zQfNqgqdV$h=s$7EAN3~Xm45FB`c0dynz$m))lZNIvw4a4P^!vBY?IuOe$ypvUq3D? zl#QxKIHK3o$UZnSr#)~X_93fh`y9(H*SYF3w_~r^nr*$1iFN#5J>+ff)S*#dYKuW@ zs|N-i{PB$cwq1g88#D+A@gOgKXBBI%{#s}haAspsk&CjxT zD8U4^a7pA;P6Pq8LfYh_PLNW0)KADCS7g<)Qgv<9dS+Ehe9sNOIXkt-Mm~3_bhznp zP*wQ01g0ekvAW{jLolPW12(XuEUzfM*5E9E5_2;c zSyC&jrky@_7+Bkdh_SLf0ert$g0AeLPyu&q)8o>T!lA44CwujsFF#i(TD>D{Kr|;| zl*aC>CUuJT^ED(-gR9Y z4Z2+YT9v*Z<7KH^cQ*<=AgK4!W|LzE9bF@BO1b!i|C;WO<(jyW2JWxOU{h`-i@`fd$)J*NU zm~9T4uW&w{Gq$R1);fkC`_Ps@{Ri~7a=d|Vt&qz2+k$OQH2eQO)oSzo-~Q*nPH+46 zxtpK<^YH&>UHLzA{*M{>zhX4X2Gzd18_bGRPVF-*YLO;g_N9-yEQ&fUiiC~?c3PC{ z{*w~;&BVQ|+nWZlKlb+Ls|<3d&**W2VLp`pvBgx7N~Lo7zx=eRmHcgxT{k*Q@ALBU znVOqtOdr;(@0)WGPf!NC;`E9KI9C4IkmWjETigcUzWps!_QLP^yn@owNj4?A&R=A| zzwYtNQdS+^`N5{7!=@xFXp1d(lfdrXySbY3!KVJtrWNtB&OgE=rna^=^KLaan0tNW z{`sqFXF1iowa`VnS$Jo5#-L4l&x|J6aMm|^%g7%y@iltGm^bxX2zLTHM5Ax)I^f!> z;2?7H*OY6iF$I&q3=8PEXESu==UinS2!F`6SI0;bpL67X{*Z)8V3(SIIv@L$pRYFA z$i`mppMLG~OH|+^j=@-u!Yv0!m+pM(e5c$}wh`|(dbuSoY}+F46zi0$54HqnNu-ef z(bI)Q)y`YDrJ-InH|rMJG2idZ&tb&_!Z$xob)@saFH$yDv%fuN^B1==G%}sG9}d~r z6brung%L0PEeZ>z?L;<^+rMgp1J_bM#{z7AUH8lPZJH+Ew^TKL-_#lYmD%U3x1IUE zdG!XEg1`FJ=ga5cx4K^Xr@4!Mhu^<3#{PfUafdGL!h5RX5)vJ~y)l4~&XE-p9489qEe~URy-bhVmmxsD;gctj~&wyV5lS^sL9ZP1T-b+38Pg;ZcNhUDhXMKJB zsp;uVr-0j#4oPg(LaBZCWfb27!UCrUAUmoIQYH%^OOo!wlg~G8iEU1jmY$oN%gD)T z$v0_gZ*LC;Y{7UaLJg^5?;-kJKuE}`&H&O+wIFG-ePAFSa)fap3H6rP8j6dHxA*sZ z{_0L5k(RUo=dK3JsTBRJySuxs;@n>&{c;fn?&iCf!7mdV8w+Ws=P1a$yz|g;Z7A?L z(V7r<`NcDlA-7WiJrDzh>LKSm1~QExIhHZkee%WQe5a{)_J-=}OYk-UsPWRAC@JBH zYlTEBOTJgxdFkn#P;2`rO$sWjfA@%K`PoM>A|hNMC&~mrRAp{y*%Zp5n183%pYBwX zZ}0BDa1jsLsLk!Eih`n|(bwZHn2fxAs9ou14|&b^k4kxoLK)LW$m>wcu>3Npzpl

mc_Nlp^Vm}H6&sxCyU08V6TFaAuZ{NcR!$I)U>9>+ zFoImjhUPdCe(+N%!+HW-Y=K2rCc8X{vWdPl;>Zd=n&NQ5>f9|~h-HvS=Q#F0 z#Q$#)7n>dNYf65#XrXmDiqyT4nAy;CQ@r7i%v|fn(kJSUpL7kOM+LJ(Ri33Oi>%}| zJeyCVfQbTBhsrxIztqT+o05?+6+oo>a$RO`0i0Vtlv=w;XcojfSo}52FBe05{g322 z)b>5%LBZojS$y-_e{RjFs32#%rm9T^;9<6o`1nBjo7_My3gx5W@SR<}Fr?n;79la{ zdor~ItMJ0(a%ysXPd}%R-qa5`A=r9DVzr-qDH;aeD_uY1j!FAa@&&*1lpD%-4t@#-Raqf z;ospaeog0*aKs$|^($Zz9rbS3B3=pM32|Qz{Ns{c)4Nk_6zP?x}n=1x;U&+5%Z=UbD5rD6ff!=O`agIKAS;UsVQoo64Gd?@BPaqn@~bBNkd zkQ@F5;PA%EXOM~j^9TJSq0Z{?9$<*M=V6wr z`seRt+e#I_*zo?k7fc6gpe29x`Say}SmWoJ`0DTfV?13eLFVb9)Pe#*z(3_Wz`#^! zI@eb;H9Ol335?irCnhAogrdn6=s4*Of;5JnUj`i5vg+^ zVkFn}AmP=u_5d5L&Xytz_!?BK?jTj96tzJslfx#Vn=6Z_;^#4+5A8mEHxdNLrqsV&b%YdWV|tg z>(J9)n7M^m$Z9>K7{zxz6msw(las%|4ATnSTF`ZVAX~d&qS7RA|7oT7bi@Y^`Jkg> z4&Cd^Qyq_!Fv4HO27T^Lb%mK;>b6U%gCGI)R=C=NJdtW z067I9XzXERGzCZabHaTpF07LDj?-X2M&bJ*yLhT_H}EBHNMI(sw_YE|fXEV9@#3XF)cEJOykc zz=g!YHGM%84M}P=8h(TJ+uC0f{^i1G`HY2eGhiNx0wXuOMuoQ2x2kBw7uJr^BqQGw9I8u*|@^y!z0~C935C+WR3_D$X8pc zT16_Pml{K^FKK}QTi9V~tf8qd7uJmqg&}yiE?{|i*%)?KFKp%Uy6 zFn<-k_IYyrcBi~rq&^R)jIjmdI5%!h9miLJkPZl6NfJ^Z5xjWuLRD-gBR#Qkx+}|Z zgSv(TL^0xO2|9s2=G^VeH**aVAR5us&h8xG?6BG=!A=0hMp8Z$glH~0{NvwS>2GH& z#xhs`w*;C`QjQbN4W;&@q3m>t-+mqx7l=kX$4&gs-WHXX3Dk4`o0tPiO*l}k5m%`6 zqh00UECoeI%|O0r4w!^gE{^ zK%TBh{s>2m#;$3 zkCfpOn^4|lhsh5w=pqZ9i;4j35#16%mwo6Q6*POPrI6q;fc63$t1A$et}@YNNOMR{ z{tgES;POAhydR*i+q=3nrw-Qu{6`qOFDczOR?>5oU7oHjGZ}iFKYR8p5wONr2D}I@ z5dq*{`+GZgn#;misT2^m8~_>641_~^peSJS#tO$s`}%-Rqz-Zhz%K!i1P9>#(xa9E zGAIP#HB9c^n+&L$2TcV;fm9F^={gyp(&XD>QBF=yDJ3OqmD(Uh3IG*nZ-Bai2?cdn z=m&cP5C^`szQ1<`KI?%gBH+iBl@;KV3RkYwEL7Ch)d>j;n-G`AVqWq$XuP> z-KKqo=Gstz2SDbFZ3e|FCm^@K5iAj5?4XWM&CE2>#U8rVBSAt0SfQA$_9&q5L}1BP zSj87N-jCEg#vG0V&2)3#=nOmO`=VH#rZ_^Q&$?tV62MT>a&pcpM)EfJALOCSm+bPo zy8R2468K6%5V~3*&i8_KU--k_Os0#UYTcnkfy4U3NOP<(PcQ`Cxnp=D6o~V#=r|}r z0aJGd7;q~9?6i4(+Mo2k2en!>03#y;=20}7(uDTvng5O+S6z0Hht;oXZTH?Q#G(y> zXO^51!0m7z)b-Mf1k5NQOeD9`=EHxLM6@Fb3kEEHuaVtmmE>e;QZn%3fVXsaLbdsyH@~B1_GJn3Sw69{D9GN?1?qOqX(w5&4eD zJbY(!UIdFKoK7FeoeiyXRmzpr2b)Oe;GlPRh1ygzdJ1IGM@ekHl*OOd0LcOUiVzGU z*je3Tc6r!UH*<6%RA42DEm%qmJ!l@pMy8_gaDGG-cn37+C*vN*PqIas@6T=i<=w_? zQDUZooM<|*eL^eOp^ee>rRl8PAkj4l4?h*8k{~V&5{x2*t^*uV>tXsnnASqa(v>#= zdMd&Cc+vqm6GguFy5uYL*EwZ8JBv+xwn2LOpvPs<&PwgE>tDx z0+T}MfbRyCu3kREszjeVk)@T}+8iS&=tEhbg^l#i8=xiG#$aAS=b@VgLAHHd52m*z zz&AS4qvv>?j?y}dMf-LxeP^H8`TQRkhCWGwM~c`Ug$n2QS$tXs1sw>>9V$5N1{Dju zhHmS%M3$YFU;21AcpP?fawzLRC)sbeAl=Ay2h=+Kg@HSHZf%yKDH_}fMRZw^K333{ z9YF?GN|KT+8E{Yp`*z3RV1gW*w~&PEeC2bhAs|cwLT6F~U}#doRA$^7FGgH=EWP<| z5YR1rHr9NleW^XZ-l{R*ne|dHy0Iyo8%j>k%*}xuo7}nzg-@0Rxm0NMH;P-|ooKu5hsi zQLF%<_*}&X$K3%1xgDf2fC>6Hjv(+SB7b5df2?;P&y{FFuEjrEb@a_mo6SXlbfY^} z7+J+Nrq1BtD1?I@_TSu+4kFkK;3L3!B7*FdL5?BTNKt8 zA|MJx*@A#X2p9qp=K1IxJsmRloO{mw=ibvCjwdRR-|zQ*-@82T^FA+LFkz%!i8v3^ z?sD(my$#Vs{SJi_>)_zvhGcaPXlWiOUOgKd+s|Z*EW8&p1=39P6%IekR6aWGARlM(h$G<7hd@jGELLSzy z9Pqyd2GL${F+HmH=Fv|vS6J=TY)2(jrE_A9Uf=PXH+nWG`jy8RtkWFsF^>%o{3h}g z>K*p^4$Tt!v*v^flN~!l?%qGyj;h+_xrrVj+Low9Ty3;Tlhca0d^_ABab9I*MwmBa z#X?j%EERIp>B}=M`rdV4yxUtD89d78a3+d*=9U1&L|n+P9U*XAM@I@7g&Q5NCkM@_ zu^{k^w$hs3SzgabH^VnSg6Oh z7`%BPuiyR0+oXcCgYxmKczqyEX4X@c{~i2esltOLUdeoz%e=5DJ;U~ikJh~~t^2_E z>egw??7dBYK6r?ChgRrWQ~lS3??Y48=Iwr@wEK|9nbB)+{rg*&4L|Al{@@w<_wWA3 z;^~)FA=~1l?6`EPR63z3M{~cX!s^hFSzsDPbXq|{C5q?* z_>LFqwCZ2YfAC;zYtK$|^Nz9KwYa&sl#gcEJ>xAoV(Ci8`_PK$*hrbZqDV0Db?eqi zF|?}M!yh>fl||eoFj7CFb{X?(g2D5GZquq)prS>hq`c`%t0l>Dlp$w9efd?9o?k|+ z-xkIKXF0FqKLZ~DR#c|MK~lDDczF0=v7^p=sTwdVk>mM!7c)sU2wjItYu=VyQVstq zyFqfAsbZ1=C(TPecxux|RZok&fsa#rd%61>%YA<8qIA)5j(K`c`QinrqY4QS2ooCo z;>q7C=LZwCi{@;XXKe{!S#q3+ql&e8Gun~U^~z#`!Fji5a0^${I?&G)8oyDnd5fl2 zdd7D<0eChJhMh$C=+t8dpWJk_svd+VI3`AxX}6 zDj?ZO`M3!I?NL2ot3Kw%#bJ&|#K!`t_AspjS3OU-b58cYDIZ|L^iUZ|W?`;F+_UDO zH!LLZSe99I5bo^4g$o}3{scI+fvIE-LmUx}#jOF6a_SQb;q+S_Z#~(ktD{4c^r5I$ zC()o5I#rBk`IcTHH*oLDr|B6P2N(>78hY-~qw4M9p+RJY#rRagyE9!_sqd4_e{?o-VFEz7%gbH#hw3|naVuy@MaNL0HjMSc6D{U~UPVwfPG6d7kx_hCE z@v19kHb=b;Rg(KC*gt*x6cVD8CW4Y2IBSKmYS3Kxqk z_2l#;QtUwo_DTf=br~dV+YJoTa4ESJ6{agiQoDRecUAD*D}{OQ7!M}xan zE{lL&i0OJ^?#P`moLz_T_yJ(>mZAu;i6{)921^J4v8Y7~p#ZiNU@q?*7M+I&h`-oP z3k+a}#IIlPt<_W;lXF~W;#Q+t3mKb0Dp>FWsE6@Umk|l48`b#)C92PEAZ4lc^Ay=r zhk~w{=>$eAK&;z0Z+-0u)jh+~AN zf+o(gl;iE?HTse%hh}wpJ&Gxc--rZh){mFn?Q{%Hn&a1q+4pB=BzC)&#rrI|%|HCG z*IdHodxnJ>QiH}HvhU}eW%2EVj`ozqna#{gkGI-V%aTX&i?UH8o$bqJrbmFnsE%Gd}q>RAoiu?w9Xy;wSu5taw^RjDje z0t8NIJ<4xu8<9!Hz2zs555R{Bp=`Wxov)&%);>EMLXUWQPBy_?ni!m`JFocW)b=2~ z7AG&yCnJ+?)qVb^UGk@MM^3^--gnb#&f29{!`SSddcFaEA%F2qyl{aQ3NZp*DN01; z^HNmb?q8pno1LYJ)5*}&(!qzY0D{q;*ylZjSO(&VmOO4o`B^1{fuS`!(v&pYM}nN0 zIXN`@PX75#sz+UMe0nnMwO;k`no~AgI%S%go5xy5dU<(~mGT!j!t^-FgA|t^n-@4f%?L| z^V`kLGI`63JVuxeQa+YPSlG*J967GBCei-EJpH4%ZMmtIn=%K@0zyJ|VxxeI*KBWV zmIfI9Xj4RVbaeGXSMfCjZxBpxP0+6{A9N!CHa71?4XF?U{goKmV%;E_>`i@llc5Hc zj?(Sp%GE-k3JOm4{vitG>jMG;3YL&<^xyF|L%v955sWVq69vj5s%UyEygbB&z<|Yd z>Pw$@g<>Rh%35VT4eHV)e@O?!7~E7Qa1zy*r`0v7gl-_iG~va77CB2^Q<}C>RUxn* zhtgSf8IuVzP(RGhv7BGmB$Bvz ziVI5F7a}UltuU<1tjpH`Y=a-Ke0rYfw7_cskKXKqf-{s*%$KEnA(A3q(cCgTkS$_VEMwVaVA5KyV9JCUX zY7Rcau_DzH#6!@%c;IU!DSj|8kOiZBz}8lXITx*ui;1 zqaeACZ@7?@G%#ZV^$${+4cITIP+C*?OMLaujYcag^nW=p+;rnJ*!ExDXf~C@9`3VM zGB9+xHKzGwN-l4^oO9y${x`2-T&3k{$4JZ7UitLmm)Q;P_yq}mT!OfL^1t)zu$qcbu6(xN z-Q68&MNUplb`bZ*CvvEf<)RZuE3C-`kFqlDhMcEGO6M>w1&_Czj$|3U`teZ0tl|C(Drw8QDG+7V{ouo*R!HaGDw%3&^=MR z178JB)zY=8!zi&}G+1OOUyt1axK-e2jP&=tV!?Gp;IdkM*&dWUL)^RF+X^#A5+8Ac zy%B{nANK+KmksJK9eXJfa5OnF+aH%PdC&aI7U+EwBrjV1s%djac!pEDab_|-JsrRX zCBiv4Bs^R=+>}bnS^gww99ki&d#7#!mcsvS5H^8@&Z-XZ#85!UbcsCqVAxcy}OeW)GCUOjt zJm4?<$w_}NZ*O*66)v9!p8PG9=@d&fYOY-qif1VrgtZ?8TFn6)8!usdrmKsK3+p)U zgi5rdRw|Xyks=tgC;tR~qjB6)3?WwA<$wQiIACS+2}EQGVMPx;I-q{Bu@Q352D^4; zkY_YdX^fHQ1iAtJIbB0Li*L#g3JICLE;xZu9>2~S1p4b;zNjaqrlh2J@|pPO6;d4l zY7aC35RUt(P#6qKJyI{fYD$l38CF6p7AHjS3ZJ4uPpz}F^EQZ4XMU@;Ki7_X{X$Tw zZ>!2%K@Wg6uF=^iy*_tj~^$zw?X5o{=PmMcn){x ztAJ<8|^r1SB#To1uQDwTmX|Ll;SFd;2w{7xc?e1H>eARwQsq%=xk|Dtt-55k@a~ zK23M_m1l`hOR`BqhKd3Kr=h#H-P}A2lm^`-Bjo2JY)1S1e8j@yBFQ#U|J9)WwAQKk zAx}i|7Py}VZ zWoaKG+9m{|!MLukTSj)hsQEQ^jcW;8+cVXP*!Le2;l+Y3JDvB6 zBbf|_AYNoa{uGAhNg_1mqG=JzFuo%g_2OptZ8*{}4XUjz|Jb&HG%juvBN7*j+>QqZ zl6$t@HN6+^7obDg_zq{cJf{Lr7<6iuRc?v@p&=xsFdo>9sYyvm7m}0l-?_-Qfjc0d zs3_X;O=jj{Sqz9WxJvg+6-Vp7fL%N_y@&=RWl@1s0kx!@r`;o{7Id|H8#9*^F-nId zhWLT{X@Z?|yPO$^Pm0QXxpoa$SVRQ`1LE=GPAU>xN!Yv^ zq@x1^@tkAyi{|J9O=bgB`6l;mw%%bYXXhT4A1SiH)U#yX8=j^GRdTsp2dy;Om?gz6 z<1q>^tf*!C|FfDS?W#ABi(2G~NPtlt9(7vE~pFB)J*U(Y)#+ zD>mW6sbCVEV-GR-ST$7hu>Cr_y3)|$RD3D!)xw;Qj}N&AU^7U!>~-Elmd>3ta}Me& zbTZ{=J3Xp<_|S!%7L+Hjis;NEo7@=H!xFv;9wOpda%H$#T6hEI9}?=;7o&;TV=g*g zpem6OHE70Vw`@>Xw?#;pYllyBjY%$wDem$uSa}YY`-l3ALjJ{b!1lsKH3K~CUPK7k z#bVH7MhEK?h=<%B9u;L`nXE>@J^~5CETf<9*sTM_Ag~iMH*1(=iqKRfsi+J!opz~M zNWeU-PbH8g?V?nT#w67i{5&D5o;!CAy9vOe?&UaNUo9*;Ru8yq`lU-&g-$Ja627I6 z9L0jHAw(8s(w)pc(;eNurH*`K*SqIISk>o(rei|5NrdNyY7SbM@nnV*jRss^N`bK8 zxzUKJhl%qWtvH5rKrOkd5X9v&IY$5ROz_@7@NDsMu=3dHP9|9v%&NKWcu{?6`-EF` zrStliKmcUL@~{$J6c(`oY)aj#ilp$2&TUmC4XEQ1v!j)UKTB@j{QT32%2SigZjyqo zc45?1)h2%NXIpiqCcH`t?-aWm7e}|QB+aY6?F+h7L08~+PXf7I5$$+v?9#PvZq}{E z`ofIA^+&~)y6IwP8=c~Xk5blelEYs?0V5FN!>fO - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":124.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":18.0,"x":3132.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -8 - - - -9 - - - -10 - - - -4 - - - -11 - - - -12 - - - -13 - - - -14 - - - -5 - - - -15 - - - -16 - - - -6 - - - -7 - - - -17 - - - -18 - - - -19 - - - -20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N1.0 - -N5.0 - -N3.0 - -N10.0 - -N6.0 - -N12.0 - -N14.0 - -N15.0 - -N16.0 - -N2.0 - -N8.0 - -N17.0 - -N18.0 - -N0.0 - -N7.0 - -N13.0 - -N4.0 - -N9.0 - -N11.0 - -N19.0 - -N1.1 - -N5.1 - -N3.1 - -N10.1 - -N6.1 - -N12.1 - -N14.1 - -N15.1 - -N16.1 - -N2.1 - -N8.1 - -N17.1 - -N18.1 - -N0.1 - -N7.1 - -N13.1 - -N12.2 - -N6.2 - -N15.2 - -N5.2 - -N10.2 - -N0.2 - -N17.2 - -N18.2 - -N12.3 - -N6.3 - -N15.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s1__exit_right_1 (right) - -s2__exit_right_2 (right) - -s3__exit_left_3 (left) - -s4__exit_left_4 (left) - -s5__exit_left_5 (left) - -s6__exit_right_6 (right) - -s7__exit_left_7 (left) - -s10__exit_left_8 (left) - -s11__exit_right_9 (right) - -s12__exit_left_10 (left) - -s13__exit_left_11 (left) - -s14__exit_right_12 (right) - -s15__exit_left_13 (left) - -s17__exit_left_14 (left) - -s18__exit_left_15 (left) - -s1__entry_left_16 (left) - -s5__entry_right_17 (right) - -s16__entry_right_18 (right) - -s2__entry_left_19 (left) - -s3__entry_right_20 (right) - -s4__entry_right_21 (right) - -s6__entry_left_22 (left) - -s8__entry_right_23 (right) - -s19__entry_right_24 (right) - -s9__entry_right_25 (right) - -s17__entry_right_26 (right) - -s7__entry_right_27 (right) - -s11__entry_left_28 (left) - -s10__entry_right_29 (right) - -s18__entry_right_30 (right) - -s12__entry_right_31 (right) - -s14__entry_left_32 (left) - -s13__entry_right_33 (right) - -s15__entry_left_34 (left) - -__junction_35 (?) - -__junction_36 (?) - -__junction_37 (?) - -__junction_38 (?) - -__junction_39 (?) - -__junction_40 (?) - -__junction_41 (?) - -__junction_42 (?) - -__junction_43 (?) - -__junction_44 (?) - -__junction_45 (?) - -__merge_11 (?) - -__merge_12 (?) - -__merge_13 (?) - -col 0|1 - -col 1|2 - -col 2|3 - -col 3|4 - -col 4|5 - -col 5|6 - -col 6|7 - -col 7|8 - -col 8|9 - -col 9|10 - -col 10|11 - -col 11|12 - -row 0|1 - -row 0 grid - -row 0 grid - -row 0 grid - -row 1 grid - -row 1 grid - -row 1 grid - - -row 0 grid - -row 1 grid - -row 1 grid - -row 1 grid - -row 1 grid - - -row 0 grid - -row 1 grid - - - -row 1 grid - -row 0 grid - -row 0 grid - - - - -row 1 grid - -row 1 grid - - -row 1 grid - - -row 1 grid - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - From f91863182710bb5d0dbc5fef0e738d1274fc8782 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 20:13:22 +0100 Subject: [PATCH 090/158] fix(offsets): hold a line's lane along its flat in-section run [skip ci] A line drawn across a flat in-section edge keeps one offset across it. The section-order reversal reverses every station through one section-wide span, since a per-station pivot reversed a station's private subset of the bundle differently from its run-mates', hopping the line between lanes mid-run. Station gap compaction covers TB/BT frames, with the flat-run adjacency index built on the section's own lane axis, so a vertical section's stations no longer keep reserved holes that widen their markers. After the frame-settling phases rewrite a port's slots, a station one flat edge away follows the port's frame when its slot is free and every flat run-mate already rides it, closing the seam the last reconciliation ran too early to see. Co-Authored-By: Claude Fable 5 --- docs/dev/routing_gate_coverage.md | 181 ++--- review_pngs/seed_15_after.svg | 272 +++++++ review_pngs/seed_41_after.png | Bin 0 -> 209650 bytes review_pngs/seed_41_after.svg | 401 +++++++++++ review_pngs/seed_41_before.png | Bin 0 -> 303067 bytes review_pngs/seed_41_before.svg | 674 ++++++++++++++++++ review_pngs/seed_72_after.png | Bin 0 -> 129948 bytes review_pngs/seed_72_after.svg | 249 +++++++ review_pngs/seed_72_before.png | Bin 0 -> 173421 bytes review_pngs/seed_72_before.svg | 352 +++++++++ review_pngs/seed_77_after.svg | 496 +++++++++++++ src/nf_metro/layout/routing/offsets.py | 91 ++- .../data/routing_gate_coverage_baseline.json | 7 +- tests/test_station_offset_continuity.py | 82 +++ 14 files changed, 2702 insertions(+), 103 deletions(-) create mode 100644 review_pngs/seed_15_after.svg create mode 100644 review_pngs/seed_41_after.png create mode 100644 review_pngs/seed_41_after.svg create mode 100644 review_pngs/seed_41_before.png create mode 100644 review_pngs/seed_41_before.svg create mode 100644 review_pngs/seed_72_after.png create mode 100644 review_pngs/seed_72_after.svg create mode 100644 review_pngs/seed_72_before.png create mode 100644 review_pngs/seed_72_before.svg create mode 100644 review_pngs/seed_77_after.svg create mode 100644 tests/test_station_offset_continuity.py diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 53acd34dd..4abe15063 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2353/3395** gates fully exercised (both/all arms hit by some fixture); **1042** gates have at least one un-exercised arm. +**2357/3402** gates fully exercised (both/all arms hit by some fixture); **1045** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **299** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **300** gaps carry a triage verdict. ## `arranger.py` @@ -1010,7 +1010,7 @@ Gates with an un-exercised arm: ## `offsets.py` -457/545 gates fully exercised. +461/552 gates fully exercised. Gates with an un-exercised arm: @@ -1018,92 +1018,95 @@ Gates with an un-exercised arm: | ---: | --- | --- | --- | | 143 | `if edge.target in inbound:` | `->L145` | **defensive** -- inbound is pre-built as {sid: set() for sid in graph.stations}, so every station id in the graph is a key. All edge endpoints are guaranteed to be in graph.stations after parsing (regular nodes via register_station, ports via add_port->add_station, junctions via add_station), so edge.target is always found in inbound and the False branch (54->56) is never taken. | | 145 | `if edge.source in outbound:` | `->L142` | **defensive** -- outbound is pre-built from graph.stations keys identically to inbound. All edge sources are registered stations by construction (regular nodes, ports, junctions), so edge.source is always found in outbound and the False branch (56->53) is never taken. | -| 409 | `if ordered != expected:` | `->L410` | **defensive** -- The raise arm of _assert_sections_anchored_on_trunk, a backstop on the postcondition of _reindex_section_local: an independent section (no flat-frame neighbour) always lands on the contiguous top-anchored levels 0,step,...,(m-1)*step by construction, so the mismatch arm never fires across the corpus. It guards against a future change that stops re-anchoring such a section. | -| 452 | `while cur is not None and cur not in seen:` | `->L461` | | -| 487 | `if slot is None:` | `->L488` | | -| 500 | `if neighbour is None:` | `->L501` | | -| 624 | `if reverse:` | `->L625` | **needs-review** -- Reachable only on a reconvergence section that is also a serpentine fold, where the fold corner crosses lines mid-curve and the return-row bundle sits one offset too low (#705). Exercise with a clean fixture once #705 is fixed. | -| 655 | `if section is None:` | `->L656` | | -| 679 | `if not all(lid in feeder_off for lid in continuing):` | `->L680` | | -| 687 | `if lid in new_off:` | `->L686` | | -| 709 | `if section is not None:` | `->L707` | | -| 711 | `if len(set(feeder_row.values())) < 2:` | `->L712` | | -| 731 | `if entry_port is None:` | `->L732` | | -| 796 | `if not all(lid in feeder_off for lid in primary_lines):` | `->L797` | | -| 845 | `if new_order is None:` | `->L848` | | -| 957 | `if cur in seen:` | `->L958` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 967 | `if not src.is_port and src.section_id == sec_id:` | `->L960` | | -| 1053 | `if not target_id:` | `->L1054` | **defensive** -- An exit-only line at station sid is identified by being present in station_lines(sid) but absent from ctx.inbound[sid]. station_lines() returns lines appearing in any edge whose source or target is sid. For a line to be exit-only at sid, it must appear in at least one outbound edge from sid; otherwise it would not appear in station_lines(sid) at all. If an outbound edge exists, outbound_target[(sid, lid)] is always set, so target_id is never None when execution reaches L422. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1056 | `if not target_st:` | `->L1057` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | -| 1073 | `for other in lines:` | `->L1081` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | -| 1081 | `if swap_lid is None:` | `->L1082` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | -| 1138 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1139` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1149 | `for other_lid in nbr_lines:` | `->L1131` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1160 | `if max_steps <= 0:` | `->L1161` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | -| 1188 | `if lid not in seen:` | `->L1185` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1414 | `for _ in range(len(graph.stations) + 1):` | `->L1431` | | -| 1418 | `if edge is None:` | `->L1419` | | -| 1421 | `if nxt in seen:` | `->L1422` | | -| 1506 | `if not src_st.is_port:` | `->L1504` | | -| 1510 | `if internal_offs:` | `->L1498` | **defensive** -- Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state. | -| 1522 | `if len(set(assigned.values())) < len(assigned):` | `->L1523` | | -| 1540 | `if not src_st.is_port:` | `->L1538` | | -| 1671 | `if anchor_feeders:` | `->L1674` | | -| 1693 | `if port_off is not None:` | `->L1691` | **defensive** -- _compute_base_offsets runs before junction propagation and creates an offset for every station-line pair. A divergence exit port and its junction carry the same connector lines, so this lookup always succeeds; the missing-offset arm protects an incomplete synthetic context. | -| 1720 | `if port_st is None:` | `->L1721` | | -| 1795 | `if not src.is_port:` | `->L1796` | | -| 1952 | `if not src.is_port:` | `->L1953` | | -| 1979 | `if paired_off is not None:` | `->L1977` | **defensive** -- _compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable. | -| 1985 | `if not tgt_st.is_port:` | `->L1983` | | -| 2033 | `if set(inherited) != set(graph.station_lines(port_id)):` | `->L2034` | **defensive** -- _inherit_level_convergence_entry_offsets skips a convergence entry port when the lines it inherits from its immediate feeders do not cover every line the port carries. A convergence entry's lines are, by construction, exactly the union of its inbound edges' lines, and each inbound edge supplies that line's feeder offset, so the inherited set always equals the port's line set and the mismatch arm is never taken. Defensive against a port line with no inbound edge (a malformed graph). | -| 2070 | `if entry.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2071` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam. | -| 2078 | `if len(shared) < 2:` | `->L2079` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken. | -| 2167 | `if edge.line_id not in lines:` | `->L2168` | | -| 2224 | `for edge in graph.edges_from(port_id):` | `->L2233` | | -| 2228 | `if tgt.is_port:` | `->L2229` | | -| 2233 | `if target_id is None:` | `->L2234` | | -| 2320 | `if not sec_stations:` | `->L2321` | **defensive** -- The parser calls _remove_empty_sections() (resolve.py:26) which deletes any section whose station_ids list is empty before port creation. Ports are only added to station_ids during _create_port_stations() (resolve.py:527), which runs AFTER _remove_empty_sections(). Therefore every section in graph.sections at layout time has at least one non-port station; sec_stations is never empty. | -| 2365 | `if station.section_id is not None:` | `->L2357` | | -| 2374 | `if port.section_id is None:` | `->L2375` | | -| 2387 | `if section is None:` | `->L2388` | | -| 2427 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2428` | | -| 2429 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2430` | | -| 2434 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2435` | | -| 2437 | `if off is not None:` | `->L2423` | | -| 2457 | `if not any(` | `->L2460` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | -| 2475 | `if len(seed_lines) < 2:` | `->L2476` | | -| 2481 | `if not fixed_here or not movable:` | `->L2482` | | -| 2504 | `if not any(` | `->L2507` | | -| 2596 | `if not changed_lids:` | `->L2597` | | -| 2615 | `if pending is None:` | `->L2616` | | -| 2744 | `if max_steps <= 0:` | `->L2745` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | -| 2758 | `if sec_a is None and id_a in graph.ports:` | `->L2759` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2760 | `if sec_b is None and id_b in graph.ports:` | `->L2761` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2823 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2824` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2843 | `if src_port and not src_port.is_entry:` | `->L2850` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | -| 2846 | `elif feeding_exit != edge.source:` | `->L2847` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2855 | `if single_exit and feeding_exit is not None:` | `->L2794` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | -| 2857 | `if exit_lines == set(j_lines):` | `->L2794` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | -| 2859 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2794` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 2983 | `if pred is None:` | `->L2984` | | -| 3079 | `if target_col is None:` | `->L3080` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | -| 3088 | `if source_col is None:` | `->L3089` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3486 | `if ctx.topology is None:` | `->L3487` | | -| 3510 | `if key not in ctx.offsets:` | `->L3511` | | -| 3559 | `len(levels) != len(continuing)` | `->L3562` | | -| 3622 | `if line_id not in assignments:` | `->L3623` | | -| 3627 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3629` | | -| 3649 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3674` | | -| 3660 | `if line_id not in assignments:` | `->L3661` | | -| 3667 | `if set(frames).difference(next_frames):` | `->L3668` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3702 | `if any(` | `->L3706` | | -| 3708 | `if local_offset is None or not (` | `->L3714` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3733 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3734` | | -| 3744 | `if gap is not None:` | `->L3745` | | -| 3775 | `if any(` | `->L3781` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3799 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3800` | | -| 3975 | `if dag is not None:` | `->L3983` | | -| 3994 | `if not offs:` | `->L3995` | | +| 414 | `if ordered != expected:` | `->L415` | **defensive** -- The raise arm of _assert_sections_anchored_on_trunk, a backstop on the postcondition of _reindex_section_local: an independent section (no flat-frame neighbour) always lands on the contiguous top-anchored levels 0,step,...,(m-1)*step by construction, so the mismatch arm never fires across the corpus. It guards against a future change that stops re-anchoring such a section. | +| 457 | `while cur is not None and cur not in seen:` | `->L466` | | +| 492 | `if slot is None:` | `->L493` | | +| 505 | `if neighbour is None:` | `->L506` | | +| 629 | `if reverse:` | `->L630` | **needs-review** -- Reachable only on a reconvergence section that is also a serpentine fold, where the fold corner crosses lines mid-curve and the return-row bundle sits one offset too low (#705). Exercise with a clean fixture once #705 is fixed. | +| 660 | `if section is None:` | `->L661` | | +| 684 | `if not all(lid in feeder_off for lid in continuing):` | `->L685` | | +| 692 | `if lid in new_off:` | `->L691` | | +| 714 | `if section is not None:` | `->L712` | | +| 716 | `if len(set(feeder_row.values())) < 2:` | `->L717` | | +| 736 | `if entry_port is None:` | `->L737` | | +| 801 | `if not all(lid in feeder_off for lid in primary_lines):` | `->L802` | | +| 850 | `if new_order is None:` | `->L853` | | +| 962 | `if cur in seen:` | `->L963` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 972 | `if not src.is_port and src.section_id == sec_id:` | `->L965` | | +| 1058 | `if not target_id:` | `->L1059` | **defensive** -- An exit-only line at station sid is identified by being present in station_lines(sid) but absent from ctx.inbound[sid]. station_lines() returns lines appearing in any edge whose source or target is sid. For a line to be exit-only at sid, it must appear in at least one outbound edge from sid; otherwise it would not appear in station_lines(sid) at all. If an outbound edge exists, outbound_target[(sid, lid)] is always set, so target_id is never None when execution reaches L422. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1061 | `if not target_st:` | `->L1062` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | +| 1078 | `for other in lines:` | `->L1086` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | +| 1086 | `if swap_lid is None:` | `->L1087` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | +| 1143 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1144` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1154 | `for other_lid in nbr_lines:` | `->L1136` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1165 | `if max_steps <= 0:` | `->L1166` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | +| 1193 | `if lid not in seen:` | `->L1190` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1419 | `for _ in range(len(graph.stations) + 1):` | `->L1436` | | +| 1423 | `if edge is None:` | `->L1424` | | +| 1426 | `if nxt in seen:` | `->L1427` | | +| 1511 | `if not src_st.is_port:` | `->L1509` | | +| 1515 | `if internal_offs:` | `->L1503` | **defensive** -- Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state. | +| 1545 | `if not src_st.is_port:` | `->L1543` | | +| 1676 | `if anchor_feeders:` | `->L1679` | | +| 1698 | `if port_off is not None:` | `->L1696` | **defensive** -- _compute_base_offsets runs before junction propagation and creates an offset for every station-line pair. A divergence exit port and its junction carry the same connector lines, so this lookup always succeeds; the missing-offset arm protects an incomplete synthetic context. | +| 1725 | `if port_st is None:` | `->L1726` | | +| 1800 | `if not src.is_port:` | `->L1801` | | +| 1957 | `if not src.is_port:` | `->L1958` | | +| 1984 | `if paired_off is not None:` | `->L1982` | **defensive** -- _compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable. | +| 1990 | `if not tgt_st.is_port:` | `->L1988` | | +| 2038 | `if set(inherited) != set(graph.station_lines(port_id)):` | `->L2039` | **defensive** -- _inherit_level_convergence_entry_offsets skips a convergence entry port when the lines it inherits from its immediate feeders do not cover every line the port carries. A convergence entry's lines are, by construction, exactly the union of its inbound edges' lines, and each inbound edge supplies that line's feeder offset, so the inherited set always equals the port's line set and the mismatch arm is never taken. Defensive against a port line with no inbound edge (a malformed graph). | +| 2075 | `if entry.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2076` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam. | +| 2083 | `if len(shared) < 2:` | `->L2084` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken. | +| 2172 | `if edge.line_id not in lines:` | `->L2173` | | +| 2229 | `for edge in graph.edges_from(port_id):` | `->L2238` | | +| 2233 | `if tgt.is_port:` | `->L2234` | | +| 2238 | `if target_id is None:` | `->L2239` | | +| 2323 | `if not sec_stations:` | `->L2324` | **defensive** -- The parser calls _remove_empty_sections() (resolve.py:26) which deletes any section whose station_ids list is empty before port creation. Ports are only added to station_ids during _create_port_stations() (resolve.py:527), which runs AFTER _remove_empty_sections(). Therefore every section in graph.sections at layout time has at least one non-port station; sec_stations is never empty. | +| 2368 | `if station.section_id is not None:` | `->L2360` | | +| 2377 | `if port.section_id is None:` | `->L2378` | | +| 2390 | `if section is None:` | `->L2391` | | +| 2430 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2431` | | +| 2432 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2433` | | +| 2437 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2438` | | +| 2440 | `if off is not None:` | `->L2426` | | +| 2460 | `if not any(` | `->L2463` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | +| 2478 | `if len(seed_lines) < 2:` | `->L2479` | | +| 2484 | `if not fixed_here or not movable:` | `->L2485` | | +| 2503 | `for lid in above:` | `->L2504` | | +| 2507 | `if not any(` | `->L2510` | | +| 2585 | `for _ in range(len(seed_lines)):` | `->L2626` | | +| 2599 | `if not changed_lids:` | `->L2600` | | +| 2618 | `if pending is None:` | `->L2619` | | +| 2747 | `if max_steps <= 0:` | `->L2748` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | +| 2761 | `if sec_a is None and id_a in graph.ports:` | `->L2762` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2763 | `if sec_b is None and id_b in graph.ports:` | `->L2764` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2826 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2827` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2846 | `if src_port and not src_port.is_entry:` | `->L2853` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | +| 2849 | `elif feeding_exit != edge.source:` | `->L2850` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2858 | `if single_exit and feeding_exit is not None:` | `->L2797` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | +| 2860 | `if exit_lines == set(j_lines):` | `->L2797` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | +| 2862 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2797` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | +| 2986 | `if pred is None:` | `->L2987` | | +| 3082 | `if target_col is None:` | `->L3083` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | +| 3091 | `if source_col is None:` | `->L3092` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | +| 3375 | `for _ in range(max_iterations):` | `->L-3347` | **defensive** -- _reconcile_horizontal_offsets iterates at most 10 times and breaks early when no change occurs. The arc L1338->(-1310) represents loop exhaustion without early-break (all 10 iterations consumed). On any valid parsed graph, the reconciliation converges in at most a handful of iterations because each iteration resolves at least one edge conflict or reaches a fixed point. The 10-iteration ceiling is a backstop against hypothetical oscillating graphs; normal topologies stabilize in 1-3 passes. | +| 3407 | `if src_n <= tgt_n:` | `->L3410` | | +| 3437 | `if not a.section_id or a.section_id != b.section_id:` | `->L3438` | | +| 3518 | `if ctx.topology is None:` | `->L3519` | | +| 3542 | `if key not in ctx.offsets:` | `->L3543` | | +| 3591 | `len(levels) != len(continuing)` | `->L3594` | | +| 3654 | `if line_id not in assignments:` | `->L3655` | | +| 3659 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3661` | | +| 3681 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3706` | | +| 3692 | `if line_id not in assignments:` | `->L3693` | | +| 3699 | `if set(frames).difference(next_frames):` | `->L3700` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3734 | `if any(` | `->L3738` | | +| 3740 | `if local_offset is None or not (` | `->L3746` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3765 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3766` | | +| 3776 | `if gap is not None:` | `->L3777` | | +| 3807 | `if any(` | `->L3813` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3831 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3832` | | +| 4008 | `if dag is not None:` | `->L4016` | | ## `orientation.py` diff --git a/review_pngs/seed_15_after.svg b/review_pngs/seed_15_after.svg new file mode 100644 index 000000000..f2cc07e21 --- /dev/null +++ b/review_pngs/seed_15_after.svg @@ -0,0 +1,272 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +4 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N2.0 + +N5.0 + +N6.0 + +N1.0 + +N7.0 + +N9.0 + +N10.0 + +N0.0 + +N3.0 + +N4.0 + +N8.0 + +N2.1 + +N5.1 + +N6.1 + +N9.1 + +N1.1 + +N7.1 + +N10.1 + +N6.2 + +N9.2 + +N10.2 + +N10.3 + + +Line 1 + +Line 2 + +Line 3 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_41_after.png b/review_pngs/seed_41_after.png new file mode 100644 index 0000000000000000000000000000000000000000..0706c1878d5750d0517a8c3ae0a457384c7636fe GIT binary patch literal 209650 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

8T*#gn)I!RsPfUN8q}r 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 L@cs0Cr#}8K0f`-{ literal 0 HcmV?d00001 diff --git a/review_pngs/seed_41_after.svg b/review_pngs/seed_41_after.svg new file mode 100644 index 000000000..a27caaab9 --- /dev/null +++ b/review_pngs/seed_41_after.svg @@ -0,0 +1,401 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2082.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2142.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2225.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2202.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2142.5,"y":704.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2082.5,"y":700.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2078.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2076.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2132.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":696.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":738.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":698.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":698.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":22.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":698.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":14.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":702.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":700.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2356} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +6 + + + +4 + + + +8 + + + +10 + + + +11 + + + +7 + + + +9 + + + +12 + + + +13 + + + +14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N0.0 + +N1.0 + +N3.0 + +N5.0 + +N9.0 + +N4.0 + +N12.0 + +N13.0 + +N2.0 + +N7.0 + +N10.0 + +N11.0 + +N6.0 + +N8.0 + +N0.1 + +N1.1 + +N9.1 + +N3.1 + +N5.1 + +N4.1 + +N12.1 + +N13.1 + +N2.1 + +N7.1 + +N10.1 + +N11.1 + +N9.2 + +N4.2 + +N5.2 + +N2.2 + +N3.2 + +N12.2 + +N2.3 + +N9.3 + +N5.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_41_before.png b/review_pngs/seed_41_before.png new file mode 100644 index 0000000000000000000000000000000000000000..c7046ca8cba9c74719cb6030e418a15754bfaf65 GIT binary patch literal 303067 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%0DI36Uo7e9z`adR_;N>lP(MFKb-2b4uc-633` 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

    Ul8OPtt{`TYY~qvfx>$ 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 literal 0 HcmV?d00001 diff --git a/review_pngs/seed_41_before.svg b/review_pngs/seed_41_before.svg new file mode 100644 index 000000000..f75a4d7fb --- /dev/null +++ b/review_pngs/seed_41_before.svg @@ -0,0 +1,674 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":696.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +6 + + + +4 + + + +8 + + + +10 + + + +11 + + + +7 + + + +9 + + + +12 + + + +13 + + + +14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N0.0 + +N1.0 + +N3.0 + +N5.0 + +N9.0 + +N4.0 + +N12.0 + +N13.0 + +N2.0 + +N7.0 + +N10.0 + +N11.0 + +N6.0 + +N8.0 + +N0.1 + +N1.1 + +N9.1 + +N3.1 + +N5.1 + +N4.1 + +N12.1 + +N13.1 + +N2.1 + +N7.1 + +N10.1 + +N11.1 + +N9.2 + +N4.2 + +N5.2 + +N2.2 + +N3.2 + +N12.2 + +N2.3 + +N9.3 + +N5.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s1__exit_right_1 (right) + +s2__exit_right_2 (right) + +s3__exit_right_3 (right) + +s4__exit_left_4 (left) + +s5__exit_left_5 (left) + +s6__exit_left_6 (left) + +s7__exit_left_7 (left) + +s8__exit_left_8 (left) + +s9__exit_left_9 (left) + +s10__exit_left_10 (left) + +s11__exit_left_11 (left) + +s1__entry_left_12 (left) + +s2__entry_left_13 (left) + +s5__entry_left_14 (left) + +s12__entry_right_15 (right) + +s3__entry_left_16 (left) + +s4__entry_right_17 (right) + +s9__entry_right_18 (right) + +s10__entry_right_19 (right) + +s13__entry_right_20 (right) + +s6__entry_right_21 (right) + +s7__entry_right_22 (right) + +s8__entry_right_23 (right) + +s11__entry_right_24 (right) + +__junction_25 (?) + +__junction_26 (?) + +__junction_27 (?) + +__junction_28 (?) + +__junction_29 (?) + +__junction_30 (?) + +__junction_31 (?) + +__junction_32 (?) + +__junction_33 (?) + +__merge_9 (?) + +__merge_10 (?) + +__merge_11 (?) + +__merge_12 (?) + +__merge_13 (?) + +__merge_14 (?) + +__merge_15 (?) + +__merge_16 (?) + +__merge_17 (?) + +col 0|1 + +col 1|2 + +col 2|3 + +col 3|4 + +col 4|5 + +col 5|6 + +col 6|7 + +col 7|8 + + +row 0|1 +row 1|2 + +row 0 grid + +row 0 grid + +row 1 grid + + + +row 0 grid + + +row 2 grid + +row 1 grid + + + + +row 2 grid + +row 2 grid + +row 2 grid + +row 2 grid + + + +row 2 grid + +row 2 grid + +row 2 grid + +row 2 grid + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_72_after.png b/review_pngs/seed_72_after.png new file mode 100644 index 0000000000000000000000000000000000000000..9117d60890c2da363642f39cca7a18cf0c6e7923 GIT binary patch literal 129948 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%0AKrer;?Z|1 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 + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":14.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":122.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} + +Candidate recovery fuzz + + +1 + + + +2 + + + +4 + + + +9 + + + +3 + + + +5 + + + +6 + + + +7 + + + +8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N3.0 + +N7.0 + +N8.0 + +N0.0 + +N2.0 + +N5.0 + +N1.0 + +N6.0 + +N4.0 + +N3.1 + +N7.1 + +N8.1 + +N0.1 + +N2.1 + +N5.1 + +N1.1 + +N6.1 + +N4.1 + +N7.2 + +N2.2 + +N5.2 + +N1.2 + +N3.2 + +N7.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 + +Line 6 + +Line 7 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_72_before.png b/review_pngs/seed_72_before.png new file mode 100644 index 0000000000000000000000000000000000000000..e5244251c9bc94812185146eaa2622d642b27d8f GIT binary patch literal 173421 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�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∾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 literal 0 HcmV?d00001 diff --git a/review_pngs/seed_72_before.svg b/review_pngs/seed_72_before.svg new file mode 100644 index 000000000..76883e33e --- /dev/null +++ b/review_pngs/seed_72_before.svg @@ -0,0 +1,352 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":14.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":122.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} + +Candidate recovery fuzz + + +1 + + + +2 + + + +4 + + + +9 + + + +3 + + + +5 + + + +6 + + + +7 + + + +8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N3.0 + +N7.0 + +N8.0 + +N0.0 + +N2.0 + +N5.0 + +N1.0 + +N6.0 + +N4.0 + +N3.1 + +N7.1 + +N8.1 + +N0.1 + +N2.1 + +N5.1 + +N1.1 + +N6.1 + +N4.1 + +N7.2 + +N2.2 + +N5.2 + +N1.2 + +N3.2 + +N7.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +s0__exit_right_0 (right) + +s2__exit_right_1 (right) + +s3__exit_right_2 (right) + +s5__exit_right_3 (right) + +s6__exit_left_4 (left) + +s7__exit_left_5 (left) + +s1__entry_left_6 (left) + +s2__entry_left_7 (left) + +s3__entry_left_8 (left) + +s4__entry_left_9 (left) + +s7__entry_right_10 (right) + +s5__entry_left_11 (left) + +s6__entry_right_12 (right) + +s8__entry_right_13 (right) + +__junction_14 (?) + +__junction_15 (?) + +__junction_16 (?) + +col 0|1 + +col 1|2 + + + +row 0|1 +row 1|2 +row 2|3 + +row 0 grid + +row 0 grid + +row 1 grid + +row 2 grid + + +row 0 grid + +row 1 grid + +row 3 grid + +row 3 grid + + + +row 3 grid + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 + +Line 6 + +Line 7 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_77_after.svg b/review_pngs/seed_77_after.svg new file mode 100644 index 000000000..9d85f223b --- /dev/null +++ b/review_pngs/seed_77_after.svg @@ -0,0 +1,496 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":124.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3134.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +8 + + + +9 + + + +10 + + + +4 + + + +11 + + + +12 + + + +13 + + + +14 + + + +5 + + + +15 + + + +16 + + + +6 + + + +7 + + + +17 + + + +18 + + + +19 + + + +20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N1.0 + +N5.0 + +N3.0 + +N10.0 + +N6.0 + +N12.0 + +N14.0 + +N15.0 + +N16.0 + +N2.0 + +N8.0 + +N17.0 + +N18.0 + +N0.0 + +N7.0 + +N13.0 + +N4.0 + +N9.0 + +N11.0 + +N19.0 + +N1.1 + +N5.1 + +N3.1 + +N10.1 + +N6.1 + +N12.1 + +N14.1 + +N15.1 + +N16.1 + +N2.1 + +N8.1 + +N17.1 + +N18.1 + +N0.1 + +N7.1 + +N13.1 + +N12.2 + +N6.2 + +N15.2 + +N5.2 + +N10.2 + +N0.2 + +N17.2 + +N18.2 + +N12.3 + +N6.3 + +N15.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index ede95faf1..f881e881e 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -179,19 +179,24 @@ def _build_offset_ctx(graph: MetroGraph, offset_step: float) -> _OffsetCtx: def _build_same_y_adj( graph: MetroGraph, ) -> dict[str, dict[str, list[tuple[str, str]]]]: - """Build same-Y adjacency index per section. + """Build same-lane-run adjacency index per section. For each section, maps station_id -> [(neighbour_id, line_id)] for - edges where both endpoints share the same Y coordinate (within - tolerance). Used by offset phases that propagate changes along - horizontal runs. + edges whose endpoints share the flow-axis base coordinate - same Y in + a section whose lanes stack on Y (LR/RL), same X where lanes stack on + X (TB/BT). Lane offsets displace across such an edge's straight run, + so offset phases propagate changes along exactly these edges. """ same_y_adj: dict[str, dict[str, list[tuple[str, str]]]] = {} for edge in graph.edges: src, tgt = graph.edge_endpoints(edge) if not src.section_id or src.section_id != tgt.section_id: continue - if abs(src.y - tgt.y) > _SAME_Y_TOLERANCE: + section = graph.sections.get(src.section_id) + if section is not None and lanes_run_along_x(section.direction): + if abs(src.x - tgt.x) > _SAME_Y_TOLERANCE: + continue + elif abs(src.y - tgt.y) > _SAME_Y_TOLERANCE: continue sec_id = src.section_id if sec_id not in same_y_adj: @@ -2312,8 +2317,6 @@ def _compact_station_gaps( graph = ctx.graph for sec_id, section in graph.sections.items(): - if lanes_run_along_x(section.direction): - continue sec_stations = [ sid for sid in section.station_ids if not graph.stations[sid].is_port ] @@ -3442,6 +3445,61 @@ def _movable(sid: str) -> bool: break +def _align_stations_to_settled_port_frames(ctx: _OffsetCtx) -> None: + """Snap a station's lane onto its settled port frame across a flat seam. + + The frame-settling phases rewrite a port's slots after the last + horizontal reconciliation, so a station one flat edge away can be left + on the pre-settlement lane, drawing a near-flat slope into the port. + The port's frame is the settled truth, so the station's line moves to + the port's slot when that slot is free at the station and every other + flat run-mate already rides it - moving against a disagreeing mate + would trade the port seam for a station seam. A seam that does not + fit stays for the closing guards to report. + """ + graph = ctx.graph + + def flat_seam(a: Station, b: Station) -> bool: + if not a.section_id or a.section_id != b.section_id: + return False + section = graph.sections.get(a.section_id) + if section is not None and lanes_run_along_x(section.direction): + return abs(a.x - b.x) <= _SAME_Y_TOLERANCE + return abs(a.y - b.y) <= _SAME_Y_TOLERANCE + + for edge in graph.edges: + src, tgt = graph.edge_endpoints(edge) + if src.is_port == tgt.is_port or not flat_seam(src, tgt): + continue + port, station = (src, tgt) if src.is_port else (tgt, src) + lid = edge.line_id + port_off = ctx.offsets.get((port.id, lid), 0.0) + station_off = ctx.offsets.get((station.id, lid), 0.0) + if abs(port_off - station_off) <= _OFFSET_EQ_TOLERANCE: + continue + if _would_collide(ctx, station.id, lid, port_off): + continue + mates_agree = all( + abs(ctx.offsets.get((other.id, lid), 0.0) - port_off) + <= _OFFSET_EQ_TOLERANCE + for mate_edge in graph.edges + if mate_edge.line_id == lid + and station.id in (mate_edge.source, mate_edge.target) + and ( + other := graph.stations[ + mate_edge.target + if mate_edge.source == station.id + else mate_edge.source + ] + ).id + != port.id + and not other.is_port + and flat_seam(station, other) + ) + if mates_agree: + ctx.offsets[(station.id, lid)] = port_off + + def _center_rail_boundary_port_bundles(ctx: _OffsetCtx) -> None: """Centre a rail-laid section's boundary-port bundle on the port itself. @@ -3952,6 +4010,7 @@ def compute_station_offsets( _settle_merge_outgoing_frames(ctx) _settle_exit_survivor_frames(ctx) _settle_vertical_station_continuations(ctx) + _align_stations_to_settled_port_frames(ctx) frames = _materialize_linear_entry_frames(ctx) _validate_linear_entry_frames(ctx, frames) _cache_linear_entry_pill_lines(ctx, frames) @@ -3986,15 +4045,23 @@ def _reverse_offsets_from_roots(ctx: _OffsetCtx, roots: set[str]) -> None: if classify_merge_port_feeders(ctx.graph, port.id) is not None } + # One involution span per section: a per-station span would reverse a + # station's private subset of the bundle through a different pivot than + # its run-mates', breaking lane equality along a straight run. + section_span: dict[str, float] = {} for sid, station in ctx.graph.stations.items(): if station.section_id not in affected: continue - lines = ctx.graph.station_lines(sid) - offs = [ctx.offsets.get((sid, lid), 0.0) for lid in lines] - if not offs: + for lid in ctx.graph.station_lines(sid): + off = ctx.offsets.get((sid, lid), 0.0) + key = station.section_id + section_span[key] = max(section_span.get(key, 0.0), off) + + for sid, station in ctx.graph.stations.items(): + if station.section_id not in affected: continue - max_off = max(offs) - for lid in lines: + max_off = section_span.get(station.section_id, 0.0) + for lid in ctx.graph.station_lines(sid): ctx.offsets[(sid, lid)] = reversed_offset( ctx.offsets.get((sid, lid), 0.0), max_off ) diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index a12290ba2..479aa1f0c 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -869,8 +869,11 @@ "offsets.py::and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE::#1", "offsets.py::elif feeding_exit != edge.source:::#1", "offsets.py::for _ in range(len(graph.stations) + 1):::#1", + "offsets.py::for _ in range(len(seed_lines)):::#1", + "offsets.py::for _ in range(max_iterations):::#1", "offsets.py::for _iteration in range(len(ctx.graph.sections) + 1):::#1", "offsets.py::for edge in graph.edges_from(port_id):::#2", + "offsets.py::for lid in above:::#1", "offsets.py::for other in lines:::#1", "offsets.py::for other_lid in nbr_lines:::#1", "offsets.py::if (tgt_id, lid) not in ctx.offsets:::#1", @@ -895,7 +898,6 @@ "offsets.py::if internal_offs:::#1", "offsets.py::if key not in ctx.offsets:::#1", "offsets.py::if len(seed_lines) < 2:::#2", - "offsets.py::if len(set(assigned.values())) < len(assigned):::#1", "offsets.py::if len(set(feeder_row.values())) < 2:::#1", "offsets.py::if len(shared) < 2:::#1", "offsets.py::if lid in new_off:::#1", @@ -908,13 +910,13 @@ "offsets.py::if neighbour is None:::#1", "offsets.py::if new_order is None:::#2", "offsets.py::if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:::#1", + "offsets.py::if not a.section_id or a.section_id != b.section_id:::#1", "offsets.py::if not all(lid in feeder_off for lid in continuing):::#1", "offsets.py::if not all(lid in feeder_off for lid in primary_lines):::#1", "offsets.py::if not any(::#1", "offsets.py::if not any(::#2", "offsets.py::if not changed_lids:::#1", "offsets.py::if not fixed_here or not movable:::#1", - "offsets.py::if not offs:::#1", "offsets.py::if not sec_stations:::#1", "offsets.py::if not src.is_port and src.section_id == sec_id:::#1", "offsets.py::if not src.is_port:::#1", @@ -944,6 +946,7 @@ "offsets.py::if single_exit and feeding_exit is not None:::#1", "offsets.py::if slot is None:::#1", "offsets.py::if source_col is None:::#1", + "offsets.py::if src_n <= tgt_n:::#1", "offsets.py::if src_port and not src_port.is_entry:::#2", "offsets.py::if station.section_id is not None:::#1", "offsets.py::if swap_lid is None:::#1", diff --git a/tests/test_station_offset_continuity.py b/tests/test_station_offset_continuity.py new file mode 100644 index 000000000..71ef7a480 --- /dev/null +++ b/tests/test_station_offset_continuity.py @@ -0,0 +1,82 @@ +"""A line keeps one lane along a flat in-section run. + +Per-station offset phases may reorder or compact a station's slots, but a +line drawn across a flat edge (same base Y in an LR/RL section, same base X +in a TB/BT one) must hold one offset across it: a changed lane there draws a +near-flat slope the routing cannot absorb into a formed curve. The frozen +hash-seed fixtures exercise the allocator's full phase stack, including the +section-order reversal and the post-settlement port frames. +""" + +from __future__ import annotations + +import warnings +from pathlib import Path + +import pytest + +from nf_metro.api import prepare_graph +from nf_metro.layout.routing.offsets import compute_station_offsets + +ROOT = Path(__file__).parents[1] +FROZEN = ROOT / "tests" / "fixtures" / "hash_seed_determinism" + + +def _graph_and_offsets(path: Path): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + return graph, compute_station_offsets(graph) + + +def _flat_run_slopes(graph, offsets) -> list[str]: + slopes = [] + for edge in graph.edges: + source = graph.stations[edge.source] + target = graph.stations[edge.target] + if not source.section_id or source.section_id != target.section_id: + continue + section = graph.sections[source.section_id] + flat = ( + abs(source.x - target.x) < 0.5 + if section.direction in ("TB", "BT") + else abs(source.y - target.y) < 0.5 + ) + source_off = offsets.get((edge.source, edge.line_id), 0.0) + target_off = offsets.get((edge.target, edge.line_id), 0.0) + if flat and abs(source_off - target_off) > 0.01: + slopes.append( + f"{edge.source}->{edge.target} {edge.line_id} " + f"{source_off} -> {target_off}" + ) + return slopes + + +@pytest.mark.parametrize( + "name", ["seed_15.mmd", "seed_41.mmd", "seed_72.mmd", "seed_77.mmd"] +) +def test_flat_in_section_runs_keep_their_lane(name: str) -> None: + graph, offsets = _graph_and_offsets(FROZEN / name) + assert not _flat_run_slopes(graph, offsets) + + +def test_tb_station_slots_are_contiguous_for_present_lines() -> None: + # seed_41's s5 is a TB section whose first station carries a terminating + # line: the gap compaction covers TB frames, so the station's occupied + # slots run consecutively instead of leaving reserved holes that widen + # the marker. + graph, offsets = _graph_and_offsets(FROZEN / "seed_41.mmd") + station_offsets = sorted( + off for (sid, _line), off in offsets.items() if sid == "n5_0" + ) + assert station_offsets == [0.0, 4.0, 8.0] + + +def test_port_seam_alignment_respects_disagreeing_run_mates() -> None: + # rail_boundary_bundle_fan's hub rides lane 4 with its run-mate haplo: + # a settled port frame on the other side must not pull hub alone onto + # another lane, trading the port seam for a station seam. + hits = list(ROOT.rglob("rail_boundary_bundle_fan.mmd")) + assert hits + graph, offsets = _graph_and_offsets(hits[0]) + assert offsets.get(("hub", "wes"), 0.0) == offsets.get(("haplo", "wes"), 0.0) From 488ff465b45cf8af28b3e75b29b09de2d1f25b24 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 20:17:37 +0100 Subject: [PATCH 091/158] test(routing): refresh gate coverage for the integrated quality fixes [skip ci] Co-Authored-By: Claude Fable 5 --- docs/dev/routing_gate_coverage.md | 324 ++++----- review_pngs/seed_15_after.svg | 272 ------- review_pngs/seed_41_after.png | Bin 209650 -> 0 bytes review_pngs/seed_41_after.svg | 401 ----------- review_pngs/seed_41_before.png | Bin 303067 -> 0 bytes review_pngs/seed_41_before.svg | 674 ------------------ review_pngs/seed_72_after.png | Bin 129948 -> 0 bytes review_pngs/seed_72_after.svg | 249 ------- review_pngs/seed_72_before.png | Bin 173421 -> 0 bytes review_pngs/seed_72_before.svg | 352 --------- review_pngs/seed_77_after.svg | 496 ------------- .../data/routing_gate_coverage_baseline.json | 8 +- 12 files changed, 172 insertions(+), 2604 deletions(-) delete mode 100644 review_pngs/seed_15_after.svg delete mode 100644 review_pngs/seed_41_after.png delete mode 100644 review_pngs/seed_41_after.svg delete mode 100644 review_pngs/seed_41_before.png delete mode 100644 review_pngs/seed_41_before.svg delete mode 100644 review_pngs/seed_72_after.png delete mode 100644 review_pngs/seed_72_after.svg delete mode 100644 review_pngs/seed_72_before.png delete mode 100644 review_pngs/seed_72_before.svg delete mode 100644 review_pngs/seed_77_after.svg diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 4abe15063..2ec7cca0a 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2357/3402** gates fully exercised (both/all arms hit by some fixture); **1045** gates have at least one un-exercised arm. +**2370/3421** gates fully exercised (both/all arms hit by some fixture); **1051** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **300** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **299** gaps carry a triage verdict. ## `arranger.py` @@ -844,7 +844,7 @@ Gates with an un-exercised arm: ## `normalize.py` -425/582 gates fully exercised. +427/584 gates fully exercised. Gates with an un-exercised arm: @@ -877,140 +877,140 @@ Gates with an un-exercised arm: | 1054 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1056` | | | 1056 | `if rank + 2 < len(route.points):` | `->L1061` | | | 1059 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1061` | | -| 1316 | `if not reference_fits(lower):` | `->L1317` | | -| 1382 | `go is not None` | `->L1388` | | -| 1383 | `and gt is not None` | `->L1388` | | -| 1420 | `if len(pts) < 2:` | `->L1421` | | -| 1436 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1437` | | -| 1513 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1514` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | -| 1533 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1534` | | -| 1541 | `if None in convergence_plan_ids or len(convergence_plan_ids) != 1:` | `->L1542`, `->L1553` | | -| 1542 | `if ctx.validate_final_route_frames:` | `->L1543`, `->L1552` | | -| 1559 | `if _snap_reverses_adjacent_run(ch, ref_x):` | `->L1560` | | -| 1600 | `if channel is None:` | `->L1601` | | -| 1673 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1674` | | -| 1679 | `if ref is not None:` | `->L1680` | | -| 1750 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1751` | | -| 1754 | `if movable_channels:` | `->L1750`, `->L1755` | | -| 1792 | `if not downs or not ups:` | `->L1794` | | -| 1795 | `for descent in downs:` | `->L-1761`, `->L1796` | | -| 1797 | `if col in moved:` | `->L1798`, `->L1799` | | -| 1800 | `for up in ups:` | `->L1801`, `->L1810` | | -| 1801 | `if up.route.line_id != descent.route.line_id:` | `->L1802`, `->L1803` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | -| 1803 | `if abs(up.x - descent.x) > radius:` | `->L1804`, `->L1805` | | -| 1806 | `if overlap <= COORD_TOLERANCE:` | `->L1807`, `->L1808` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | -| 1810 | `if target_x is None:` | `->L1811`, `->L1812` | | -| 1813 | `for ch in downs:` | `->L1795`, `->L1814` | | -| 1814 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1813`, `->L1815` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | -| 1841 | `if k == desc.idx + 1:` | `->L1840` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | -| 1893 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1894` | | -| 1905 | `if any(` | `->L1915` | | -| 1935 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1939` | | -| 1936 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1939` | | -| 1937 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1939` | | -| 1956 | `if source_col is None:` | `->L1957` | | -| 1972 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1973` | | -| 1989 | `if not sibling_xs:` | `->L1990` | | -| 1992 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L1993` | | -| 1995 | `if _section_intrudes(` | `->L2002` | | -| 2127 | `for _ in range(max(1, len(buckets))):` | `->L-2073` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2145 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2147` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | -| 2150 | `for _step in range(64):` | `->L2151`, `->L2158` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | -| 2154 | `if resolved < common:` | `->L2155`, `->L2157` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | -| 2165 | `if not changed:` | `->L2127` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2203 | `if ch.route.convergence_plan_id is not None:` | `->L2204` | | -| 2213 | `if _planner_owns_channel(ch) and (` | `->L2216` | | -| 2287 | `if opposing_bundle is not None and {` | `->L2290` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | -| 2298 | `if any(` | `->L2308` | | -| 2415 | `if any(` | `->L2421` | | -| 2458 | `if has_immovable_planned_channel and any(` | `->L2463` | | -| 2518 | `if any(` | `->L2522` | | -| 2523 | `if not crossing:` | `->L2530` | | -| 2533 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2534`, `->L2538` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | -| 2538 | `for r, k, _y in crossing:` | `->L2495`, `->L2539` | | -| 2606 | `if ctx.convergences is None:` | `->L2607` | | -| 2614 | `or entry is None` | `->L2620` | | -| 2615 | `or port is None` | `->L2620` | | -| 2616 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2620` | | -| 2689 | `if rp.curve_radii is None:` | `->L2690` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | -| 2718 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2719` | | -| 2723 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2724` | | -| 2924 | `if route.curve_radii is None:` | `->L2925` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | -| 3071 | `if any(` | `->L3075` | | -| 3169 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3190` | | -| 3218 | `if not verticals:` | `->L3219` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | -| 3234 | `if rp.curve_radii is not None:` | `->L3236` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | -| 3454 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3448` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | -| 3484 | `if feats is None:` | `->L3485` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | -| 3621 | `if (` | `->L3625` | | -| 3633 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3634` | | -| 3681 | `if len(trunks) < 2:` | `->L3682`, `->L3683` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | -| 3685 | `for grp in groups:` | `->L3686`, `->L3704` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | -| 3686 | `if len({id(t.route) for t in grp}) < 2:` | `->L3687`, `->L3688` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | -| 3688 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3689`, `->L3690` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | -| 3690 | `for sign in (1, -1):` | `->L3685`, `->L3691` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | -| 3693 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3694`, `->L3695` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | -| 3702 | `if best < cur:` | `->L3690`, `->L3703` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | -| 3772 | `if (` | `->L3777` | | -| 3834 | `band is not None` | `->L3839` | | -| 3835 | `and band.boundary is None` | `->L3836` | | -| 3836 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3838`, `->L3839` | | -| 3932 | `if band is not None:` | `->L3937` | | -| 3956 | `elif up_ok:` | `->L3959` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | -| 3961 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L3962` | | -| 4002 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4011` | | -| 4005 | `if reconcile_owned_corridor:` | `->L4011` | | -| 4012 | `if cross_below is not None and cross_above is not None:` | `->L4020` | | -| 4013 | `if reconcile_owned_corridor:` | `->L4019` | | -| 4027 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4028` | | -| 4031 | `elif above_ok:` | `->L4034` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | -| 4034 | `if reconcile_owned_corridor:` | `->L4035`, `->L4038` | | -| 4099 | `if (` | `->L4103` | | -| 4105 | `if changed:` | `->L4106` | | -| 4135 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4155` | | -| 4137 | `if target_y is None:` | `->L4138` | | -| 4140 | `if (` | `->L4151` | | -| 4159 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4161` | | -| 4274 | `if band is None:` | `->L4275` | | -| 4280 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4284` | | -| 4306 | `and crossed[0] < span[1]` | `->L4308` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4416 | `if i in relocated:` | `->L4417` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4435 | `if (` | `->L4440` | | -| 4457 | `if any(` | `->L4461` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4462 | `if any(` | `->L4468` | | -| 4494 | `if target is None:` | `->L4495` | | -| 4538 | `if sg[0].sign_x != t.sign_x:` | `->L4539` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4574 | `and base_in is not None` | `->L4588` | | -| 4575 | `and base_out is not None` | `->L4588` | | -| 4591 | `if rp.curve_radii is None:` | `->L4592` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4603 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4605` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4605 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4548` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4683 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4686` | | -| 4687 | `if leg_is_plan_stated(mover):` | `->L4688` | | -| 4690 | `for delta in (step, -step):` | `->L4657` | | -| 4692 | `if all(` | `->L4690` | | -| 4726 | `or len(upstream.points) < 2` | `->L4728` | | -| 4731 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4734` | | -| 4732 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4734` | | -| 4736 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4738` | | -| 4796 | `if down is None or len(up.points) < 2:` | `->L4797` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4850 | `if len(targets) != 1:` | `->L4851` | | -| 4860 | `if col is None:` | `->L4861` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 4901 | `if not 0 <= far < len(pts):` | `->L4902` | | -| 4904 | `if abs(dx) > COORD_TOLERANCE:` | `->L4898` | | -| 4906 | `if not votes:` | `->L4907` | | -| 5012 | `if rep_x[a] != rep_x[b]:` | `->L5014` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5042 | `if rp.curve_radii is None:` | `->L5043` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5045 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5046` | | -| 5069 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5019` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5099 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5101` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5154 | `elif right_ok:` | `->L5157` | | -| 5203 | `if s.bbox_w <= 0:` | `->L5204` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 5591 | `if not blockers:` | `->L5592` | | +| 1329 | `if not reference_fits(lower):` | `->L1330` | | +| 1395 | `go is not None` | `->L1401` | | +| 1396 | `and gt is not None` | `->L1401` | | +| 1433 | `if len(pts) < 2:` | `->L1434` | | +| 1449 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1450` | | +| 1526 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1527` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | +| 1546 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1547` | | +| 1554 | `if None in convergence_plan_ids or len(convergence_plan_ids) != 1:` | `->L1555`, `->L1566` | | +| 1555 | `if ctx.validate_final_route_frames:` | `->L1556`, `->L1565` | | +| 1572 | `if _snap_reverses_adjacent_run(ch, ref_x):` | `->L1573` | | +| 1613 | `if channel is None:` | `->L1614` | | +| 1686 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1687` | | +| 1692 | `if ref is not None:` | `->L1693` | | +| 1763 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1764` | | +| 1767 | `if movable_channels:` | `->L1763`, `->L1768` | | +| 1805 | `if not downs or not ups:` | `->L1807` | | +| 1808 | `for descent in downs:` | `->L-1774`, `->L1809` | | +| 1810 | `if col in moved:` | `->L1811`, `->L1812` | | +| 1813 | `for up in ups:` | `->L1814`, `->L1823` | | +| 1814 | `if up.route.line_id != descent.route.line_id:` | `->L1815`, `->L1816` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | +| 1816 | `if abs(up.x - descent.x) > radius:` | `->L1817`, `->L1818` | | +| 1819 | `if overlap <= COORD_TOLERANCE:` | `->L1820`, `->L1821` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | +| 1823 | `if target_x is None:` | `->L1824`, `->L1825` | | +| 1826 | `for ch in downs:` | `->L1808`, `->L1827` | | +| 1827 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1826`, `->L1828` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | +| 1854 | `if k == desc.idx + 1:` | `->L1853` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | +| 1906 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1907` | | +| 1918 | `if any(` | `->L1928` | | +| 1948 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1952` | | +| 1949 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1952` | | +| 1950 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1952` | | +| 1969 | `if source_col is None:` | `->L1970` | | +| 1985 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1986` | | +| 2002 | `if not sibling_xs:` | `->L2003` | | +| 2005 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2006` | | +| 2008 | `if _section_intrudes(` | `->L2015` | | +| 2140 | `for _ in range(max(1, len(buckets))):` | `->L-2086` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2158 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2160` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | +| 2163 | `for _step in range(64):` | `->L2164`, `->L2171` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | +| 2167 | `if resolved < common:` | `->L2168`, `->L2170` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | +| 2178 | `if not changed:` | `->L2140` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2216 | `if ch.route.convergence_plan_id is not None:` | `->L2217` | | +| 2226 | `if _planner_owns_channel(ch) and (` | `->L2229` | | +| 2300 | `if opposing_bundle is not None and {` | `->L2303` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | +| 2311 | `if any(` | `->L2321` | | +| 2428 | `if any(` | `->L2434` | | +| 2471 | `if has_immovable_planned_channel and any(` | `->L2476` | | +| 2531 | `if any(` | `->L2535` | | +| 2536 | `if not crossing:` | `->L2543` | | +| 2546 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2547`, `->L2551` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | +| 2551 | `for r, k, _y in crossing:` | `->L2508`, `->L2552` | | +| 2619 | `if ctx.convergences is None:` | `->L2620` | | +| 2627 | `or entry is None` | `->L2633` | | +| 2628 | `or port is None` | `->L2633` | | +| 2629 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2633` | | +| 2702 | `if rp.curve_radii is None:` | `->L2703` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | +| 2731 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2732` | | +| 2736 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2737` | | +| 2937 | `if route.curve_radii is None:` | `->L2938` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | +| 3084 | `if any(` | `->L3088` | | +| 3182 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3203` | | +| 3231 | `if not verticals:` | `->L3232` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | +| 3247 | `if rp.curve_radii is not None:` | `->L3249` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | +| 3467 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3461` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | +| 3497 | `if feats is None:` | `->L3498` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | +| 3634 | `if (` | `->L3638` | | +| 3646 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3647` | | +| 3694 | `if len(trunks) < 2:` | `->L3695`, `->L3696` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | +| 3698 | `for grp in groups:` | `->L3699`, `->L3717` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | +| 3699 | `if len({id(t.route) for t in grp}) < 2:` | `->L3700`, `->L3701` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | +| 3701 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3702`, `->L3703` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | +| 3703 | `for sign in (1, -1):` | `->L3698`, `->L3704` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | +| 3706 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3707`, `->L3708` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | +| 3715 | `if best < cur:` | `->L3703`, `->L3716` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | +| 3785 | `if (` | `->L3790` | | +| 3847 | `band is not None` | `->L3852` | | +| 3848 | `and band.boundary is None` | `->L3849` | | +| 3849 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3851`, `->L3852` | | +| 3945 | `if band is not None:` | `->L3950` | | +| 3969 | `elif up_ok:` | `->L3972` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | +| 3974 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L3975` | | +| 4015 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4024` | | +| 4018 | `if reconcile_owned_corridor:` | `->L4024` | | +| 4025 | `if cross_below is not None and cross_above is not None:` | `->L4033` | | +| 4026 | `if reconcile_owned_corridor:` | `->L4032` | | +| 4040 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4041` | | +| 4044 | `elif above_ok:` | `->L4047` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | +| 4047 | `if reconcile_owned_corridor:` | `->L4048`, `->L4051` | | +| 4112 | `if (` | `->L4116` | | +| 4118 | `if changed:` | `->L4119` | | +| 4148 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4168` | | +| 4150 | `if target_y is None:` | `->L4151` | | +| 4153 | `if (` | `->L4164` | | +| 4172 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4174` | | +| 4287 | `if band is None:` | `->L4288` | | +| 4293 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4297` | | +| 4319 | `and crossed[0] < span[1]` | `->L4321` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4429 | `if i in relocated:` | `->L4430` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4448 | `if (` | `->L4453` | | +| 4470 | `if any(` | `->L4474` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4475 | `if any(` | `->L4481` | | +| 4507 | `if target is None:` | `->L4508` | | +| 4551 | `if sg[0].sign_x != t.sign_x:` | `->L4552` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4587 | `and base_in is not None` | `->L4601` | | +| 4588 | `and base_out is not None` | `->L4601` | | +| 4604 | `if rp.curve_radii is None:` | `->L4605` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4616 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4618` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4618 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4561` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4696 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4699` | | +| 4700 | `if leg_is_plan_stated(mover):` | `->L4701` | | +| 4703 | `for delta in (step, -step):` | `->L4670` | | +| 4705 | `if all(` | `->L4703` | | +| 4739 | `or len(upstream.points) < 2` | `->L4741` | | +| 4744 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4747` | | +| 4745 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4747` | | +| 4749 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4751` | | +| 4809 | `if down is None or len(up.points) < 2:` | `->L4810` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4863 | `if len(targets) != 1:` | `->L4864` | | +| 4873 | `if col is None:` | `->L4874` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 4914 | `if not 0 <= far < len(pts):` | `->L4915` | | +| 4917 | `if abs(dx) > COORD_TOLERANCE:` | `->L4911` | | +| 4919 | `if not votes:` | `->L4920` | | +| 5025 | `if rep_x[a] != rep_x[b]:` | `->L5027` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5055 | `if rp.curve_radii is None:` | `->L5056` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5058 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5059` | | +| 5082 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5032` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5112 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5114` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5167 | `elif right_ok:` | `->L5170` | | +| 5216 | `if s.bbox_w <= 0:` | `->L5217` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 5604 | `if not blockers:` | `->L5605` | | ## `offsets.py` -461/552 gates fully exercised. +465/555 gates fully exercised. Gates with an un-exercised arm: @@ -1089,24 +1089,23 @@ Gates with an un-exercised arm: | 2986 | `if pred is None:` | `->L2987` | | | 3082 | `if target_col is None:` | `->L3083` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | | 3091 | `if source_col is None:` | `->L3092` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3375 | `for _ in range(max_iterations):` | `->L-3347` | **defensive** -- _reconcile_horizontal_offsets iterates at most 10 times and breaks early when no change occurs. The arc L1338->(-1310) represents loop exhaustion without early-break (all 10 iterations consumed). On any valid parsed graph, the reconciliation converges in at most a handful of iterations because each iteration resolves at least one edge conflict or reaches a fixed point. The 10-iteration ceiling is a backstop against hypothetical oscillating graphs; normal topologies stabilize in 1-3 passes. | -| 3407 | `if src_n <= tgt_n:` | `->L3410` | | -| 3437 | `if not a.section_id or a.section_id != b.section_id:` | `->L3438` | | -| 3518 | `if ctx.topology is None:` | `->L3519` | | -| 3542 | `if key not in ctx.offsets:` | `->L3543` | | -| 3591 | `len(levels) != len(continuing)` | `->L3594` | | -| 3654 | `if line_id not in assignments:` | `->L3655` | | -| 3659 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3661` | | -| 3681 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3706` | | -| 3692 | `if line_id not in assignments:` | `->L3693` | | -| 3699 | `if set(frames).difference(next_frames):` | `->L3700` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3734 | `if any(` | `->L3738` | | -| 3740 | `if local_offset is None or not (` | `->L3746` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3765 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3766` | | -| 3776 | `if gap is not None:` | `->L3777` | | -| 3807 | `if any(` | `->L3813` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3831 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3832` | | -| 4008 | `if dag is not None:` | `->L4016` | | +| 3433 | `if src_n <= tgt_n:` | `->L3436` | | +| 3463 | `if not a.section_id or a.section_id != b.section_id:` | `->L3464` | | +| 3544 | `if ctx.topology is None:` | `->L3545` | | +| 3568 | `if key not in ctx.offsets:` | `->L3569` | | +| 3617 | `len(levels) != len(continuing)` | `->L3620` | | +| 3680 | `if line_id not in assignments:` | `->L3681` | | +| 3685 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3687` | | +| 3707 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3732` | | +| 3718 | `if line_id not in assignments:` | `->L3719` | | +| 3725 | `if set(frames).difference(next_frames):` | `->L3726` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3760 | `if any(` | `->L3764` | | +| 3766 | `if local_offset is None or not (` | `->L3772` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3791 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3792` | | +| 3802 | `if gap is not None:` | `->L3803` | | +| 3833 | `if any(` | `->L3839` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3857 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3858` | | +| 4034 | `if dag is not None:` | `->L4042` | | ## `orientation.py` @@ -1132,7 +1131,7 @@ Gates with an un-exercised arm: ## `planning.py` -12/22 gates fully exercised. +19/36 gates fully exercised. Gates with an un-exercised arm: @@ -1142,12 +1141,19 @@ Gates with an un-exercised arm: | 96 | `if not replacements:` | `->L98` | | | 121 | `elif abs(first[1] - second[1]) <= COORD_TOLERANCE:` | `->L124` | | | 130 | `for index, point in enumerate(points):` | `->L136` | | -| 211 | `if settled is None or rank is None:` | `->L214` | | -| 214 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L215`, `->L218` | | -| 219 | `if membership is None:` | `->L220`, `->L221` | | -| 222 | `if corner_offsets is None:` | `->L223`, `->L226` | | -| 321 | `if scaffold is None:` | `->L322` | | -| 421 | `if station_offsets is not None:` | `->L424` | | +| 169 | `if allocated.curve_radii is None or len(allocated.curve_radii) != len(` | `->L172` | | +| 190 | `plan_offset is None` | `->L195` | | +| 191 | `or plan_base is None` | `->L195` | | +| 201 | `offset is None` | `->L206` | | +| 202 | `or base is None` | `->L206` | | +| 204 | `or i + 2 >= len(allocated_points)` | `->L206` | | +| 214 | `if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:` | `->L215` | | +| 298 | `if settled is None or rank is None:` | `->L301` | | +| 301 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L302`, `->L305` | | +| 306 | `if membership is None:` | `->L307`, `->L308` | | +| 309 | `if corner_offsets is None:` | `->L310`, `->L313` | | +| 408 | `if scaffold is None:` | `->L409` | | +| 508 | `if station_offsets is not None:` | `->L511` | | ## `postprocess.py` diff --git a/review_pngs/seed_15_after.svg b/review_pngs/seed_15_after.svg deleted file mode 100644 index f2cc07e21..000000000 --- a/review_pngs/seed_15_after.svg +++ /dev/null @@ -1,272 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"}],"height":822,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0","l1"],"h":14.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1253.0,"y":122.0},{"groups":["l1","l2"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1425.0,"y":124.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1485.0,"y":124.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1669.0,"y":122.0},{"groups":["l0","l1"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1729.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":14.0,"x":1727.0,"y":338.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":1751.5,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1485.0,"y":532.0},{"groups":["l0","l1"],"h":18.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":1425.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1253.0,"y":572.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1193.0,"y":574.0},{"groups":["l0","l1"],"h":14.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1110.0,"y":534.0},{"groups":["l1","l2"],"h":14.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":983.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":923.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":710.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":553.0,"y":572.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":470.0,"y":530.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":410.0,"y":532.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":260.0,"y":532.0},{"groups":["l1","l2"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":200.0,"y":530.0},{"groups":["l1"],"h":10.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":140.0,"y":532.0},{"groups":["l1"],"h":10.0,"id":"n10_3","label":"N10.3","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":80.0,"y":532.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"}],"title":"Candidate recovery fuzz","version":"1.0","width":1865} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -4 - - - -6 - - - -7 - - - -8 - - - -9 - - - -10 - - - -11 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N2.0 - -N5.0 - -N6.0 - -N1.0 - -N7.0 - -N9.0 - -N10.0 - -N0.0 - -N3.0 - -N4.0 - -N8.0 - -N2.1 - -N5.1 - -N6.1 - -N9.1 - -N1.1 - -N7.1 - -N10.1 - -N6.2 - -N9.2 - -N10.2 - -N10.3 - - -Line 1 - -Line 2 - -Line 3 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_41_after.png b/review_pngs/seed_41_after.png deleted file mode 100644 index 0706c1878d5750d0517a8c3ae0a457384c7636fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209650 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

    8T*#gn)I!RsPfUN8q}r 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 L@cs0Cr#}8K0f`-{ diff --git a/review_pngs/seed_41_after.svg b/review_pngs/seed_41_after.svg deleted file mode 100644 index a27caaab9..000000000 --- a/review_pngs/seed_41_after.svg +++ /dev/null @@ -1,401 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2082.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2142.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2225.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2202.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2142.5,"y":704.0},{"groups":["l0","l1","l2"],"h":18.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2082.5,"y":700.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2078.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2076.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2132.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":696.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":738.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":698.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":698.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":22.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":698.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":14.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":702.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":700.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2356} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -6 - - - -4 - - - -8 - - - -10 - - - -11 - - - -7 - - - -9 - - - -12 - - - -13 - - - -14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N0.0 - -N1.0 - -N3.0 - -N5.0 - -N9.0 - -N4.0 - -N12.0 - -N13.0 - -N2.0 - -N7.0 - -N10.0 - -N11.0 - -N6.0 - -N8.0 - -N0.1 - -N1.1 - -N9.1 - -N3.1 - -N5.1 - -N4.1 - -N12.1 - -N13.1 - -N2.1 - -N7.1 - -N10.1 - -N11.1 - -N9.2 - -N4.2 - -N5.2 - -N2.2 - -N3.2 - -N12.2 - -N2.3 - -N9.3 - -N5.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_41_before.png b/review_pngs/seed_41_before.png deleted file mode 100644 index c7046ca8cba9c74719cb6030e418a15754bfaf65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303067 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%0DI36Uo7e9z`adR_;N>lP(MFKb-2b4uc-633` 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

      Ul8OPtt{`TYY~qvfx>$ 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 diff --git a/review_pngs/seed_41_before.svg b/review_pngs/seed_41_before.svg deleted file mode 100644 index f75a4d7fb..000000000 --- a/review_pngs/seed_41_before.svg +++ /dev/null @@ -1,674 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":696.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -6 - - - -4 - - - -8 - - - -10 - - - -11 - - - -7 - - - -9 - - - -12 - - - -13 - - - -14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N0.0 - -N1.0 - -N3.0 - -N5.0 - -N9.0 - -N4.0 - -N12.0 - -N13.0 - -N2.0 - -N7.0 - -N10.0 - -N11.0 - -N6.0 - -N8.0 - -N0.1 - -N1.1 - -N9.1 - -N3.1 - -N5.1 - -N4.1 - -N12.1 - -N13.1 - -N2.1 - -N7.1 - -N10.1 - -N11.1 - -N9.2 - -N4.2 - -N5.2 - -N2.2 - -N3.2 - -N12.2 - -N2.3 - -N9.3 - -N5.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s1__exit_right_1 (right) - -s2__exit_right_2 (right) - -s3__exit_right_3 (right) - -s4__exit_left_4 (left) - -s5__exit_left_5 (left) - -s6__exit_left_6 (left) - -s7__exit_left_7 (left) - -s8__exit_left_8 (left) - -s9__exit_left_9 (left) - -s10__exit_left_10 (left) - -s11__exit_left_11 (left) - -s1__entry_left_12 (left) - -s2__entry_left_13 (left) - -s5__entry_left_14 (left) - -s12__entry_right_15 (right) - -s3__entry_left_16 (left) - -s4__entry_right_17 (right) - -s9__entry_right_18 (right) - -s10__entry_right_19 (right) - -s13__entry_right_20 (right) - -s6__entry_right_21 (right) - -s7__entry_right_22 (right) - -s8__entry_right_23 (right) - -s11__entry_right_24 (right) - -__junction_25 (?) - -__junction_26 (?) - -__junction_27 (?) - -__junction_28 (?) - -__junction_29 (?) - -__junction_30 (?) - -__junction_31 (?) - -__junction_32 (?) - -__junction_33 (?) - -__merge_9 (?) - -__merge_10 (?) - -__merge_11 (?) - -__merge_12 (?) - -__merge_13 (?) - -__merge_14 (?) - -__merge_15 (?) - -__merge_16 (?) - -__merge_17 (?) - -col 0|1 - -col 1|2 - -col 2|3 - -col 3|4 - -col 4|5 - -col 5|6 - -col 6|7 - -col 7|8 - - -row 0|1 -row 1|2 - -row 0 grid - -row 0 grid - -row 1 grid - - - -row 0 grid - - -row 2 grid - -row 1 grid - - - - -row 2 grid - -row 2 grid - -row 2 grid - -row 2 grid - - - -row 2 grid - -row 2 grid - -row 2 grid - -row 2 grid - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_72_after.png b/review_pngs/seed_72_after.png deleted file mode 100644 index 9117d60890c2da363642f39cca7a18cf0c6e7923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129948 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%0AKrer;?Z|1 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 - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":14.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":122.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} - -Candidate recovery fuzz - - -1 - - - -2 - - - -4 - - - -9 - - - -3 - - - -5 - - - -6 - - - -7 - - - -8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N3.0 - -N7.0 - -N8.0 - -N0.0 - -N2.0 - -N5.0 - -N1.0 - -N6.0 - -N4.0 - -N3.1 - -N7.1 - -N8.1 - -N0.1 - -N2.1 - -N5.1 - -N1.1 - -N6.1 - -N4.1 - -N7.2 - -N2.2 - -N5.2 - -N1.2 - -N3.2 - -N7.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 - -Line 6 - -Line 7 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_72_before.png b/review_pngs/seed_72_before.png deleted file mode 100644 index e5244251c9bc94812185146eaa2622d642b27d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173421 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�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∾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 diff --git a/review_pngs/seed_72_before.svg b/review_pngs/seed_72_before.svg deleted file mode 100644 index 76883e33e..000000000 --- a/review_pngs/seed_72_before.svg +++ /dev/null @@ -1,352 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"},{"color":"#4cda26","id":"l5","label":"Line 6"},{"color":"#8453d7","id":"l6","label":"Line 7"}],"height":1098,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l3"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":80.0,"y":124.0},{"groups":["l0","l3","l5","l6"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":140.0,"y":126.0},{"groups":["l4","l5"],"h":14.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":360.0,"y":122.0},{"groups":["l4","l6"],"h":14.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":420.0,"y":122.0},{"groups":["l6"],"h":10.0,"id":"n1_2","label":"N1.2","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":480.0,"y":124.0},{"groups":["l3"],"h":10.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":360.0,"y":332.0},{"groups":["l1","l3"],"h":14.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":420.0,"y":334.0},{"groups":["l0","l1","l3","l6"],"h":22.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":480.0,"y":330.0},{"groups":["l0","l3"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":360.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":420.0,"y":508.0},{"groups":["l0","l6"],"h":14.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":501.9,"y":548.0},{"groups":["l0","l6"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":712.0,"y":126.0},{"groups":["l6"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":772.0,"y":124.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":652.0,"y":326.0},{"groups":["l3","l4"],"h":22.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":712.0,"y":334.0},{"groups":["l1","l2","l3","l4"],"h":22.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":772.0,"y":334.0},{"groups":["l2","l3","l5"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":772.0,"y":700.0},{"groups":["l2","l5"],"h":18.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":712.0,"y":700.0},{"groups":["l0","l1","l6"],"h":18.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":480.0,"y":700.0},{"groups":["l0","l2"],"h":14.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":420.0,"y":698.0},{"groups":["l2","l3"],"h":14.0,"id":"n7_2","label":"N7.2","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":360.0,"y":746.0},{"groups":["l2","l3","l6"],"h":18.0,"id":"n7_3","label":"N7.3","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":280.3,"y":788.0},{"groups":["l2","l6"],"h":14.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":140.0,"y":706.0},{"groups":["l2"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":80.0,"y":704.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"}],"title":"Candidate recovery fuzz","version":"1.0","width":910} - -Candidate recovery fuzz - - -1 - - - -2 - - - -4 - - - -9 - - - -3 - - - -5 - - - -6 - - - -7 - - - -8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N3.0 - -N7.0 - -N8.0 - -N0.0 - -N2.0 - -N5.0 - -N1.0 - -N6.0 - -N4.0 - -N3.1 - -N7.1 - -N8.1 - -N0.1 - -N2.1 - -N5.1 - -N1.1 - -N6.1 - -N4.1 - -N7.2 - -N2.2 - -N5.2 - -N1.2 - -N3.2 - -N7.3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s0__exit_right_0 (right) - -s2__exit_right_1 (right) - -s3__exit_right_2 (right) - -s5__exit_right_3 (right) - -s6__exit_left_4 (left) - -s7__exit_left_5 (left) - -s1__entry_left_6 (left) - -s2__entry_left_7 (left) - -s3__entry_left_8 (left) - -s4__entry_left_9 (left) - -s7__entry_right_10 (right) - -s5__entry_left_11 (left) - -s6__entry_right_12 (right) - -s8__entry_right_13 (right) - -__junction_14 (?) - -__junction_15 (?) - -__junction_16 (?) - -col 0|1 - -col 1|2 - - - -row 0|1 -row 1|2 -row 2|3 - -row 0 grid - -row 0 grid - -row 1 grid - -row 2 grid - - -row 0 grid - -row 1 grid - -row 3 grid - -row 3 grid - - - -row 3 grid - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 - -Line 6 - -Line 7 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_77_after.svg b/review_pngs/seed_77_after.svg deleted file mode 100644 index 9d85f223b..000000000 --- a/review_pngs/seed_77_after.svg +++ /dev/null @@ -1,496 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":124.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3134.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -8 - - - -9 - - - -10 - - - -4 - - - -11 - - - -12 - - - -13 - - - -14 - - - -5 - - - -15 - - - -16 - - - -6 - - - -7 - - - -17 - - - -18 - - - -19 - - - -20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N1.0 - -N5.0 - -N3.0 - -N10.0 - -N6.0 - -N12.0 - -N14.0 - -N15.0 - -N16.0 - -N2.0 - -N8.0 - -N17.0 - -N18.0 - -N0.0 - -N7.0 - -N13.0 - -N4.0 - -N9.0 - -N11.0 - -N19.0 - -N1.1 - -N5.1 - -N3.1 - -N10.1 - -N6.1 - -N12.1 - -N14.1 - -N15.1 - -N16.1 - -N2.1 - -N8.1 - -N17.1 - -N18.1 - -N0.1 - -N7.1 - -N13.1 - -N12.2 - -N6.2 - -N15.2 - -N5.2 - -N10.2 - -N0.2 - -N17.2 - -N18.2 - -N12.3 - -N6.3 - -N15.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 479aa1f0c..c37140f6a 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -870,7 +870,6 @@ "offsets.py::elif feeding_exit != edge.source:::#1", "offsets.py::for _ in range(len(graph.stations) + 1):::#1", "offsets.py::for _ in range(len(seed_lines)):::#1", - "offsets.py::for _ in range(max_iterations):::#1", "offsets.py::for _iteration in range(len(ctx.graph.sections) + 1):::#1", "offsets.py::for edge in graph.edges_from(port_id):::#2", "offsets.py::for lid in above:::#1", @@ -963,6 +962,8 @@ "perp.py::if not feeders:::#1", "planning.py::elif abs(first[1] - second[1]) <= COORD_TOLERANCE:::#1", "planning.py::for index, point in enumerate(points):::#1", + "planning.py::if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:::#1", + "planning.py::if allocated.curve_radii is None or len(allocated.curve_radii) != len(::#1", "planning.py::if changed:::#1", "planning.py::if corner_offsets is None:::#1", "planning.py::if membership is None:::#1", @@ -971,6 +972,11 @@ "planning.py::if scaffold is None:::#1", "planning.py::if settled is None or rank is None:::#1", "planning.py::if station_offsets is not None:::#1", + "planning.py::offset is None::#1", + "planning.py::or base is None::#1", + "planning.py::or i + 2 >= len(allocated_points)::#1", + "planning.py::or plan_base is None::#1", + "planning.py::plan_offset is None::#1", "postprocess.py::if abs(dx_diag) <= COORD_TOLERANCE_FINE:::#1", "postprocess.py::if abs(in_flat) < 1 or abs(out_flat) < 1:::#1", "postprocess.py::if abs(other.y - station.y) > 1:::#1", From 8eccd9033e0b8c81a6fba2037dd5a526085e9f58 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 20:46:49 +0100 Subject: [PATCH 092/158] fix(routing): draw a lane mismatch as a mid-seam ramp [skip ci] A straight same-row connector whose endpoint lanes disagree no longer smears the difference across the whole seam: the centreline brackets the midpoint so the renderer, which splits a same-row run's offsets at the nearer endpoint along the travel axis, draws a short formed ramp between two level halves, keeping both endpoint vicinities on their own lanes and clear of junction crossings. The single-line-port seam snap leaves a port whose flat in-section partner is pinned on another lane with that run, since the seam ramp absorbs the mismatch where the station row cannot. Co-Authored-By: Claude Fable 5 --- src/nf_metro/layout/routing/centrelines.py | 18 +++++++++++++++- src/nf_metro/layout/routing/common.py | 11 +++++++++- src/nf_metro/layout/routing/offsets.py | 25 ++++++++++++++++++---- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/nf_metro/layout/routing/centrelines.py b/src/nf_metro/layout/routing/centrelines.py index 7cbc15f69..6b4406c28 100644 --- a/src/nf_metro/layout/routing/centrelines.py +++ b/src/nf_metro/layout/routing/centrelines.py @@ -468,10 +468,26 @@ def route_straight( dx = tgt_pt[0] - src_pt[0] dy = tgt_pt[1] - src_pt[1] if abs(dx) > COORD_TOLERANCE and abs(dy) > COORD_TOLERANCE: + # The renderer splits a same-row run's offsets at the nearer endpoint, + # so bracketing the midpoint draws the mismatch as a short mid-seam + # ramp - the lane-transition idiom - keeping both endpoint vicinities + # on their own lanes, clear of junction crossings. + points = [p_src, p_tgt] + span = abs(p_tgt[0] - p_src[0]) + ramp = min(ctx.diagonal_run, span - 2 * base_radius) + if ramp > COORD_TOLERANCE: + mid = (p_src[0] + p_tgt[0]) / 2 + step = ramp / 2 if p_tgt[0] > p_src[0] else -ramp / 2 + points = [ + p_src, + (mid - step, p_src[1]), + (mid + step, p_src[1]), + p_tgt, + ] return RoutedPath( edge=edge, line_id=edge.line_id, - points=[p_src, p_tgt], + points=points, is_inter_section=True, normalize_exempt=normalize_exempt, ) diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index 8f22d6d2f..0d9870257 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -873,6 +873,11 @@ def apply_route_offsets( tgt_off = station_offsets.get((route.edge.target, route.line_id), 0.0) orig_sy = route.points[0][1] orig_ty = route.points[-1][1] + orig_sx = route.points[0][0] + orig_tx = route.points[-1][0] + # A same-row route leaves the vertical distance degenerate, so its + # interior points split at the nearer endpoint along the travel axis. + same_row = abs(orig_sy - orig_ty) <= COORD_TOLERANCE last = len(route.points) - 1 pts: list[tuple[float, float]] = [] for i, (x, y) in enumerate(route.points): @@ -880,7 +885,11 @@ def apply_route_offsets( pts.append((x, y + src_off)) elif i == last: pts.append((x, y + tgt_off)) - elif abs(y - orig_sy) <= abs(y - orig_ty): + elif ( + abs(x - orig_sx) <= abs(x - orig_tx) + if same_row + else abs(y - orig_sy) <= abs(y - orig_ty) + ): pts.append((x, y + src_off)) else: pts.append((x, y + tgt_off)) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index f881e881e..625722502 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -3376,6 +3376,13 @@ def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> if abs(ctx.graph.stations[edge.source].y - ctx.graph.stations[edge.target].y) <= _SAME_Y_TOLERANCE ] + flat_section_partners: dict[tuple[str, str], list[str]] = {} + for edge, same_section in candidates: + if not same_section: + continue + lid = edge.line_id + flat_section_partners.setdefault((edge.source, lid), []).append(edge.target) + flat_section_partners.setdefault((edge.target, lid), []).append(edge.source) for _ in range(max_iterations): changed = False @@ -3398,11 +3405,21 @@ def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> # mismatch, but its endpoints feed fan, dogleg, and # corridor geometry planned from their lanes, so only an # endpoint whose lane is the whole story -- a single-line - # port -- may move to meet its partner. + # port -- may move to meet its partner. A port whose flat + # in-section run rides another lane stays with that run: + # snapping it would trade the seam slope for a slope on + # the station row, and the straight-connector ramp absorbs + # the seam mismatch instead. def _movable(sid: str) -> bool: - return ( - sid in ctx.graph.ports - and len(ctx.graph.station_lines(sid)) == 1 + if ( + sid not in ctx.graph.ports + or len(ctx.graph.station_lines(sid)) != 1 + ): + return False + return all( + ctx.offsets.get((partner, lid), 0.0) == candidate + or not _would_collide(ctx, partner, lid, candidate) + for partner in flat_section_partners.get((sid, lid), ()) ) if (src_moves and not _movable(edge.source)) or ( From f432b6453a1486d60148348c58f5c540d1596688 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 21:08:24 +0100 Subject: [PATCH 093/158] fix(routing): keep the seam ramp to lone lines [skip ci] A multi-line bundle with mismatched endpoint lane orders crosses inside its seam, and folding that crossing into ramp corners trips the bundle-order guard, so only a lone line takes the mid-seam ramp; the gate baseline follows, and two triage verdicts fall away because ramped seams now exercise the diagonal-flanked horizontal-run arms. Co-Authored-By: Claude Fable 5 --- docs/dev/routing_gate_coverage.md | 125 +++++++++--------- src/nf_metro/layout/routing/centrelines.py | 5 +- .../data/routing_gate_coverage_baseline.json | 3 - tests/data/routing_gate_triage.json | 8 -- 4 files changed, 65 insertions(+), 76 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 2ec7cca0a..ecd0ba4bd 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2370/3421** gates fully exercised (both/all arms hit by some fixture); **1051** gates have at least one un-exercised arm. +**2378/3426** gates fully exercised (both/all arms hit by some fixture); **1048** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **299** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **297** gaps carry a triage verdict. ## `arranger.py` @@ -37,7 +37,7 @@ Gates with an un-exercised arm: ## `centrelines.py` -9/11 gates fully exercised. +10/12 gates fully exercised. Gates with an un-exercised arm: @@ -48,7 +48,7 @@ Gates with an un-exercised arm: ## `common.py` -151/196 gates fully exercised. +152/196 gates fully exercised. Gates with an un-exercised arm: @@ -60,45 +60,44 @@ Gates with an un-exercised arm: | 514 | `if s.bbox_h <= 0:` | `->L515` | **defensive** -- Degenerate-bbox guard in _grid_row_bands: a laid-out section always has bbox_h > 0, so the skip arm only protects against a zero/negative-height section that the layout never produces. | | 633 | `if n == 0:` | `->L634` | **defensive** -- Empty-bundle guard: all callers (normalize.py 291/1648, inter_section_handlers.py 783/796/2132) derive bundle_widths from a non-empty bundle line count, so n is always >=1; the empty-list arm is never taken. | | 635 | `if bundle_index < 0 or bundle_index >= n:` | `->L636` | **defensive** -- Contract guard raising IndexError on an out-of-range bundle_index. Callers always pass an in-range index (0<=i COORD_TOLERANCE:` | `->L965` | **defensive** -- Interior horizontal segments only occur in 6-point bypass U-shapes whose flanking legs are always vertical (same x on each side); routes with non-vertical flanks are normalize_exempt and filtered out. The prev-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 966 | `if abs(pts[k + 2][0] - x1) > COORD_TOLERANCE:` | `->L967` | **defensive** -- Mirror of the prev-flank guard: a bypass trunk's trailing flank is always vertical, so the next-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1011 | `if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:` | `->L1012` | **defensive** -- Trunk-not-horizontal guard in port_peeloff_tail, reached only after the earlier port-lead and riser checks returned early. In an orthogonal route segments alternate H/V, so the segment preceding a vertical riser is always horizontal; instrumenting the corpus the guard is reached but the non-horizontal-trunk arm never fires. Defensive against a degenerate collinear tail the router does not produce. | -| 1103 | `if len({round(value, 6) for value in port_ys}) != n:` | `->L1104` | **defensive** -- A complete entry port assigns every distinct line a unique station-offset slot. Duplicate port-Y values therefore require a malformed route set that bypassed station offset allocation; test_invalid_opposing_candidate_is_rejected[duplicate-port-slot] exercises the rejection directly. | -| 1105 | `if port_ys[-1] - port_ys[0] > (n - 1) * step + COORD_TOLERANCE:` | `->L1106` | **defensive** -- Station offset allocation gives a complete n-line entry port one contiguous n-slot band, so its port-Y extent is exactly bounded by (n-1)*step. The wider-band reject is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-port-band]. | -| 1108 | `if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:` | `->L1109` | **defensive** -- A complete destination bundle receives one contiguous n-slot channel band from gap materialization, so its peel-X extent cannot exceed (n-1)*step. The wider-band arm protects hand-built or corrupted route geometry and is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-channel-band]. | -| 1112 | `if shared_hi - shared_lo < min_common_approach - COORD_TOLERANCE:` | `->L1113` | **defensive** -- Inter-row placement reserves at least the two-corner runway used by side-port peel-off handlers, so complete opposing entry tails share at least min_common_approach vertically. A shorter overlap is malformed settled geometry; test_invalid_opposing_candidate_is_rejected[insufficient-common-approach] exercises the guard. | -| 1229 | `if trunk_ys[-1] - trunk_ys[0] <= COORD_TOLERANCE:` | `->L1230` | **needs-review** -- Degenerate single-Y trunk band in iter_port_peeloff_bundles: a peel-off bundle is yielded only when its members ride trunks at distinct depths, so the equal-depth arm guards a same-Y bundle the trunk-slot materialization never leaves; render-diff confirms no visual change. | -| 1351 | `if pinned_bases and any(` | `->L1354` | | -| 1364 | `if k == 0 or k + 2 >= len(points):` | `->L1365` | | -| 1496 | `port is None` | `->L1501` | | -| 1497 | `or entry is None` | `->L1501` | | -| 1498 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L1501` | | -| 1499 | `or abs(entry.y - tgt.y) > COORD_TOLERANCE` | `->L1501` | | -| 1584 | `elif tgt_sec:` | `->L1592` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1695 | `if st is not None and st.is_port:` | `->L1693` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | -| 1744 | `if sec.bbox_w <= 0:` | `->L1745` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | -| 1792 | `if sec.bbox_w <= 0:` | `->L1793` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | -| 1826 | `if not src.is_port:` | `->L1824` | | -| 1842 | `for i in range(len(pts) - 1):` | `->L1843`, `->L1859` | **defensive** -- point_on_polyline is used only by the --animate renderer (render/animate.py); the matrix's render-path coverage sweep calls render_svg without animation, so none of its branches are reached. Exercised instead by test_animation.py / test_routing.py. | -| 1847 | `if seg_len2 == 0:` | `->L1848`, `->L1851` | **defensive** -- point_on_polyline degenerate-segment branch, reached only via the --animate renderer (render/animate.py); the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py, not the corpus. | -| 1848 | `if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:` | `->L1849`, `->L1850` | **defensive** -- point_on_polyline zero-length-segment hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1852 | `if t < -0.01 or t > 1.01:` | `->L1853`, `->L1854` | **defensive** -- point_on_polyline parameter-range branch, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1857 | `if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:` | `->L1842`, `->L1858` | **defensive** -- point_on_polyline projection hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1952 | `if all_in_range:` | `->L1956` | **defensive** -- cross_row bypass guard: the False arm (no sections in the column range -> return clearance) needs an empty [lo,hi] column span, which a valid multi-section pipeline routing cross_row never has; a degenerate-range guard. | -| 1979 | `if endpoints:` | `->L1982` | **defensive** -- Non-cross_row bypass guard: the endpoints list always includes the source and target sections (both in src_row), so it is never empty; the default-clearance arm only guards a degenerate empty endpoint set. | -| 1992 | `if src_row is not None:` | `->L2004` | **defensive** -- Header-clamp guard: the False arm (src_row is None) needs an unresolvable source section, but inter-section bypass sources always resolve to a grid row after layout; a guard against an unresolved source that doesn't occur. | -| 1999 | `if safe_cap >= row_bottom:` | `->L2002` | **defensive** -- The false arm is a defensive midpoint fallback for an inter-row gap too narrow to clear both an upper-row bypass and the lower section header. Placement reserves the routing band before bypass geometry is computed, so settled corpus layouts provide enough clearance for the safe-cap arm. | -| 2098 | `if section.bbox_w <= 0:` | `->L2099` | **defensive** -- Degenerate-bbox guard in _h_segment_penetrates_section (the single-section predicate shared by _h_segment_crosses_other_section and _packed_cell_mate_obstructs): sections always have positive width after layout. | -| 2124 | `if station is None:` | `->L2125` | **defensive** -- None-station guard: every production caller passes a concrete Station (grep-verified); the None arm only guards the typed Station\|None parameter. | -| 2130 | `for port in junction_source_ports(graph, station.id):` | `->L2149` | **defensive** -- Upstream loop-exit in resolve_section: every fan-out junction is emitted with an exit_port->junction edge whose source port carries a section id, so junction_source_ports always yields a sectioned port and the loop returns; the fall-through to the type-contract return None is the never-taken no-upstream fallback. | -| 2132 | `if sec:` | `->L2130` | **defensive** -- Upstream section-lookup guard: graph.sections.get(section_id) returning None requires a section_id absent from graph.sections, a corrupted state no valid parse produces; null-guard. | -| 2138 | `for e in graph.edges:` | `->L2149` | **defensive** -- No-preference graph.edges scan loop-exit: a fan-out junction always has a sectioned incident port (its exit/entry ports carry a section_id), so the loop always returns and never exhausts graph.edges; the fall-through to the type-contract return None is the never-taken no-neighbour fallback. | -| 2139 | `if e.source == station.id:` | `->L2140` | **defensive** -- Junction-as-source arm of the no-preference scan: fan-out junctions are emitted exit_port->junction before junction->entry_port, so graph.edges encounters the junction as a target (elif arm) first and returns; the source arm is a cheap structural guard whose deadness rests on emit order, not a hard type invariant. | -| 2145 | `if other.section_id:` | `->L2138` | **defensive** -- The prefer_upstream=False scan reads a junction's incident neighbour on either side, always a sectioned station or port; the section-less (False) arm only guards a junction-to-junction edge valid construction never produces. | -| 2147 | `if sec:` | `->L2138` | **defensive** -- prefer_upstream=False section-lookup guard: graph.sections.get(section_id) returning None requires a missing section_id (corrupted state); null-guard. | -| 2157 | `if section is None:` | `->L2158` | **defensive** -- resolve_section_colrow accepts a station whose owning section may not resolve. Production routing passes resolved ports or junctions with an incident sectioned port, so the None return only protects a malformed or incomplete graph. | -| 2200 | `if reserved is None or abs(src_row - tgt_row) != 1:` | `->L2201` | | -| 2256 | `if dy > 0:` | `->L2261` | **defensive** -- Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code. | +| 975 | `if abs(pts[k + 2][0] - x1) > COORD_TOLERANCE:` | `->L976` | **defensive** -- Mirror of the prev-flank guard: a bypass trunk's trailing flank is always vertical, so the next-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1020 | `if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:` | `->L1021` | **defensive** -- Trunk-not-horizontal guard in port_peeloff_tail, reached only after the earlier port-lead and riser checks returned early. In an orthogonal route segments alternate H/V, so the segment preceding a vertical riser is always horizontal; instrumenting the corpus the guard is reached but the non-horizontal-trunk arm never fires. Defensive against a degenerate collinear tail the router does not produce. | +| 1112 | `if len({round(value, 6) for value in port_ys}) != n:` | `->L1113` | **defensive** -- A complete entry port assigns every distinct line a unique station-offset slot. Duplicate port-Y values therefore require a malformed route set that bypassed station offset allocation; test_invalid_opposing_candidate_is_rejected[duplicate-port-slot] exercises the rejection directly. | +| 1114 | `if port_ys[-1] - port_ys[0] > (n - 1) * step + COORD_TOLERANCE:` | `->L1115` | **defensive** -- Station offset allocation gives a complete n-line entry port one contiguous n-slot band, so its port-Y extent is exactly bounded by (n-1)*step. The wider-band reject is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-port-band]. | +| 1117 | `if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:` | `->L1118` | **defensive** -- A complete destination bundle receives one contiguous n-slot channel band from gap materialization, so its peel-X extent cannot exceed (n-1)*step. The wider-band arm protects hand-built or corrupted route geometry and is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-channel-band]. | +| 1121 | `if shared_hi - shared_lo < min_common_approach - COORD_TOLERANCE:` | `->L1122` | **defensive** -- Inter-row placement reserves at least the two-corner runway used by side-port peel-off handlers, so complete opposing entry tails share at least min_common_approach vertically. A shorter overlap is malformed settled geometry; test_invalid_opposing_candidate_is_rejected[insufficient-common-approach] exercises the guard. | +| 1238 | `if trunk_ys[-1] - trunk_ys[0] <= COORD_TOLERANCE:` | `->L1239` | **needs-review** -- Degenerate single-Y trunk band in iter_port_peeloff_bundles: a peel-off bundle is yielded only when its members ride trunks at distinct depths, so the equal-depth arm guards a same-Y bundle the trunk-slot materialization never leaves; render-diff confirms no visual change. | +| 1360 | `if pinned_bases and any(` | `->L1363` | | +| 1373 | `if k == 0 or k + 2 >= len(points):` | `->L1374` | | +| 1505 | `port is None` | `->L1510` | | +| 1506 | `or entry is None` | `->L1510` | | +| 1507 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L1510` | | +| 1508 | `or abs(entry.y - tgt.y) > COORD_TOLERANCE` | `->L1510` | | +| 1593 | `elif tgt_sec:` | `->L1601` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1704 | `if st is not None and st.is_port:` | `->L1702` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | +| 1753 | `if sec.bbox_w <= 0:` | `->L1754` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | +| 1801 | `if sec.bbox_w <= 0:` | `->L1802` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | +| 1835 | `if not src.is_port:` | `->L1833` | | +| 1851 | `for i in range(len(pts) - 1):` | `->L1852`, `->L1868` | **defensive** -- point_on_polyline is used only by the --animate renderer (render/animate.py); the matrix's render-path coverage sweep calls render_svg without animation, so none of its branches are reached. Exercised instead by test_animation.py / test_routing.py. | +| 1856 | `if seg_len2 == 0:` | `->L1857`, `->L1860` | **defensive** -- point_on_polyline degenerate-segment branch, reached only via the --animate renderer (render/animate.py); the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py, not the corpus. | +| 1857 | `if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:` | `->L1858`, `->L1859` | **defensive** -- point_on_polyline zero-length-segment hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1861 | `if t < -0.01 or t > 1.01:` | `->L1862`, `->L1863` | **defensive** -- point_on_polyline parameter-range branch, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1866 | `if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:` | `->L1851`, `->L1867` | **defensive** -- point_on_polyline projection hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1961 | `if all_in_range:` | `->L1965` | **defensive** -- cross_row bypass guard: the False arm (no sections in the column range -> return clearance) needs an empty [lo,hi] column span, which a valid multi-section pipeline routing cross_row never has; a degenerate-range guard. | +| 1988 | `if endpoints:` | `->L1991` | **defensive** -- Non-cross_row bypass guard: the endpoints list always includes the source and target sections (both in src_row), so it is never empty; the default-clearance arm only guards a degenerate empty endpoint set. | +| 2001 | `if src_row is not None:` | `->L2013` | **defensive** -- Header-clamp guard: the False arm (src_row is None) needs an unresolvable source section, but inter-section bypass sources always resolve to a grid row after layout; a guard against an unresolved source that doesn't occur. | +| 2008 | `if safe_cap >= row_bottom:` | `->L2011` | **defensive** -- The false arm is a defensive midpoint fallback for an inter-row gap too narrow to clear both an upper-row bypass and the lower section header. Placement reserves the routing band before bypass geometry is computed, so settled corpus layouts provide enough clearance for the safe-cap arm. | +| 2107 | `if section.bbox_w <= 0:` | `->L2108` | **defensive** -- Degenerate-bbox guard in _h_segment_penetrates_section (the single-section predicate shared by _h_segment_crosses_other_section and _packed_cell_mate_obstructs): sections always have positive width after layout. | +| 2133 | `if station is None:` | `->L2134` | **defensive** -- None-station guard: every production caller passes a concrete Station (grep-verified); the None arm only guards the typed Station\|None parameter. | +| 2139 | `for port in junction_source_ports(graph, station.id):` | `->L2158` | **defensive** -- Upstream loop-exit in resolve_section: every fan-out junction is emitted with an exit_port->junction edge whose source port carries a section id, so junction_source_ports always yields a sectioned port and the loop returns; the fall-through to the type-contract return None is the never-taken no-upstream fallback. | +| 2141 | `if sec:` | `->L2139` | **defensive** -- Upstream section-lookup guard: graph.sections.get(section_id) returning None requires a section_id absent from graph.sections, a corrupted state no valid parse produces; null-guard. | +| 2147 | `for e in graph.edges:` | `->L2158` | **defensive** -- No-preference graph.edges scan loop-exit: a fan-out junction always has a sectioned incident port (its exit/entry ports carry a section_id), so the loop always returns and never exhausts graph.edges; the fall-through to the type-contract return None is the never-taken no-neighbour fallback. | +| 2148 | `if e.source == station.id:` | `->L2149` | **defensive** -- Junction-as-source arm of the no-preference scan: fan-out junctions are emitted exit_port->junction before junction->entry_port, so graph.edges encounters the junction as a target (elif arm) first and returns; the source arm is a cheap structural guard whose deadness rests on emit order, not a hard type invariant. | +| 2154 | `if other.section_id:` | `->L2147` | **defensive** -- The prefer_upstream=False scan reads a junction's incident neighbour on either side, always a sectioned station or port; the section-less (False) arm only guards a junction-to-junction edge valid construction never produces. | +| 2156 | `if sec:` | `->L2147` | **defensive** -- prefer_upstream=False section-lookup guard: graph.sections.get(section_id) returning None requires a missing section_id (corrupted state); null-guard. | +| 2166 | `if section is None:` | `->L2167` | **defensive** -- resolve_section_colrow accepts a station whose owning section may not resolve. Production routing passes resolved ports or junctions with an incident sectioned port, so the None return only protects a malformed or incomplete graph. | +| 2209 | `if reserved is None or abs(src_row - tgt_row) != 1:` | `->L2210` | | +| 2265 | `if dy > 0:` | `->L2270` | **defensive** -- Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code. | ## `context.py` @@ -139,7 +138,7 @@ Gates with an un-exercised arm: ## `convergences.py` -364/607 gates fully exercised. +366/607 gates fully exercised. Gates with an un-exercised arm: @@ -177,7 +176,6 @@ Gates with an un-exercised arm: | 650 | `for rank, (start, end) in enumerate(zip(points, points[1:])):` | `->L666` | | | 653 | `runway <= COORD_TOLERANCE` | `->L656` | | | 661 | `if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:` | `->L665` | | -| 663 | `if direction_axis(incoming) is not direction_axis(approach):` | `->L665` | | | 716 | `if exit_turn_geometry != _exit_turn_geometry(route):` | `->L717` | | | 728 | `if approach is None:` | `->L729` | | | 782 | `if direction in {Direction.R, Direction.L}:` | `->L786` | | @@ -226,7 +224,6 @@ Gates with an un-exercised arm: | 2203 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2204` | | | 2210 | `if actual is None:` | `->L2211` | | | 2460 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2461` | | -| 2502 | `or abs(before[0] - start[0]) > COORD_TOLERANCE` | `->L2505` | **needs-review** -- Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture. | | 2503 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2505` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | | 2545 | `if run is None:` | `->L2546` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | | 2576 | `if require_clear_segments:` | `->L2602` | | @@ -1010,7 +1007,7 @@ Gates with an un-exercised arm: ## `offsets.py` -465/555 gates fully exercised. +469/559 gates fully exercised. Gates with an un-exercised arm: @@ -1089,23 +1086,23 @@ Gates with an un-exercised arm: | 2986 | `if pred is None:` | `->L2987` | | | 3082 | `if target_col is None:` | `->L3083` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | | 3091 | `if source_col is None:` | `->L3092` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3433 | `if src_n <= tgt_n:` | `->L3436` | | -| 3463 | `if not a.section_id or a.section_id != b.section_id:` | `->L3464` | | -| 3544 | `if ctx.topology is None:` | `->L3545` | | -| 3568 | `if key not in ctx.offsets:` | `->L3569` | | -| 3617 | `len(levels) != len(continuing)` | `->L3620` | | -| 3680 | `if line_id not in assignments:` | `->L3681` | | -| 3685 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3687` | | -| 3707 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3732` | | -| 3718 | `if line_id not in assignments:` | `->L3719` | | -| 3725 | `if set(frames).difference(next_frames):` | `->L3726` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3760 | `if any(` | `->L3764` | | -| 3766 | `if local_offset is None or not (` | `->L3772` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3791 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3792` | | -| 3802 | `if gap is not None:` | `->L3803` | | -| 3833 | `if any(` | `->L3839` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3857 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3858` | | -| 4034 | `if dag is not None:` | `->L4042` | | +| 3450 | `if src_n <= tgt_n:` | `->L3453` | | +| 3480 | `if not a.section_id or a.section_id != b.section_id:` | `->L3481` | | +| 3561 | `if ctx.topology is None:` | `->L3562` | | +| 3585 | `if key not in ctx.offsets:` | `->L3586` | | +| 3634 | `len(levels) != len(continuing)` | `->L3637` | | +| 3697 | `if line_id not in assignments:` | `->L3698` | | +| 3702 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3704` | | +| 3724 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3749` | | +| 3735 | `if line_id not in assignments:` | `->L3736` | | +| 3742 | `if set(frames).difference(next_frames):` | `->L3743` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3777 | `if any(` | `->L3781` | | +| 3783 | `if local_offset is None or not (` | `->L3789` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3808 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3809` | | +| 3819 | `if gap is not None:` | `->L3820` | | +| 3850 | `if any(` | `->L3856` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3874 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3875` | | +| 4051 | `if dag is not None:` | `->L4059` | | ## `orientation.py` diff --git a/src/nf_metro/layout/routing/centrelines.py b/src/nf_metro/layout/routing/centrelines.py index 6b4406c28..eb44824cf 100644 --- a/src/nf_metro/layout/routing/centrelines.py +++ b/src/nf_metro/layout/routing/centrelines.py @@ -475,7 +475,10 @@ def route_straight( points = [p_src, p_tgt] span = abs(p_tgt[0] - p_src[0]) ramp = min(ctx.diagonal_run, span - 2 * base_radius) - if ramp > COORD_TOLERANCE: + # A multi-line bundle with mismatched endpoint lane orders crosses + # inside the seam; a ramp would fold that crossing into corners the + # bundle-order guard rejects, so only a lone line takes the ramp. + if len(members) == 1 and ramp > COORD_TOLERANCE: mid = (p_src[0] + p_tgt[0]) / 2 step = ramp / 2 if p_tgt[0] > p_src[0] else -ramp / 2 points = [ diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index c37140f6a..ecb60f54b 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -11,7 +11,6 @@ "common.py::if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:::#1", "common.py::if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:::#1", "common.py::if abs(pts[k + 2][0] - x1) > COORD_TOLERANCE:::#1", - "common.py::if abs(pts[k - 1][0] - x0) > COORD_TOLERANCE:::#1", "common.py::if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:::#1", "common.py::if all_in_range:::#1", "common.py::if bundle_index < 0 or bundle_index >= n:::#1", @@ -179,7 +178,6 @@ "convergences.py::if current is None or requirement.required > current.required:::#1", "convergences.py::if current is None or requirement.required > current.required:::#2", "convergences.py::if direction in {Direction.R, Direction.L}:::#1", - "convergences.py::if direction_axis(incoming) is not direction_axis(approach):::#1", "convergences.py::if direction_axis(incoming) is not landing.approach_axis:::#1", "convergences.py::if direction_axis(incoming) is not landing.approach_axis:::#2", "convergences.py::if edge_rank is None:::#1", @@ -306,7 +304,6 @@ "convergences.py::obstacle_segment is None::#1", "convergences.py::opening is None::#1", "convergences.py::or abs(after[0] - end[0]) > COORD_TOLERANCE::#1", - "convergences.py::or abs(before[0] - start[0]) > COORD_TOLERANCE::#1", "convergences.py::or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE::#1", "convergences.py::or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", "convergences.py::or axis.axis is not DemandAxis.X::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index 938486e00..e105f6621 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -31,10 +31,6 @@ "note": "Mirror of the prev-flank guard: a bypass trunk's trailing flank is always vertical, so the next-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", "status": "defensive" }, - "common.py::if abs(pts[k - 1][0] - x0) > COORD_TOLERANCE:::#1": { - "note": "Interior horizontal segments only occur in 6-point bypass U-shapes whose flanking legs are always vertical (same x on each side); routes with non-vertical flanks are normalize_exempt and filtered out. The prev-flank-non-vertical reject in iter_horizontal_trunks is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", - "status": "defensive" - }, "common.py::if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:::#1": { "note": "Trunk-not-horizontal guard in port_peeloff_tail, reached only after the earlier port-lead and riser checks returned early. In an orthogonal route segments alternate H/V, so the segment preceding a vertical riser is always horizontal; instrumenting the corpus the guard is reached but the non-horizontal-trunk arm never fires. Defensive against a degenerate collinear tail the router does not produce.", "status": "defensive" @@ -319,10 +315,6 @@ "note": "Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture.", "status": "needs-review" }, - "convergences.py::or abs(before[0] - start[0]) > COORD_TOLERANCE::#1": { - "note": "Rejects an interior horizontal whose leading flank is not vertical. Reachable: _member_corridor_runs walks raw plan.points with no normalize filter, and the corpus already freezes an H-D-H member polyline (examples/topologies/rail_boundary_bundle_fan.mmd), so one extra leg makes a horizontal run diagonal-flanked. Not the same contract as the look-alike defensive pair in common.py::iter_horizontal_trunks, which is fed only normalize-filtered bypass U-shapes. Wants a fixture.", - "status": "needs-review" - }, "core.py::if result is not None:::#1": { "note": "Append-guard after the priority-ordered handler chain. The final handler _route_intra_section is total: its three early returns and its _route_diagonal fallback (annotated -> RoutedPath, single return statement) always yield a RoutedPath, so result is never None and every edge appends. The None arm is unreachable.", "status": "defensive" From 2b8fb4620145ba0a5d126c03a9b3209cac2e2eb0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 21:21:00 +0100 Subject: [PATCH 094/158] chore: run the full pipeline on the quality-reconciled engine Co-Authored-By: Claude Fable 5 From 345e6920e49ef5ed9105f658abc43eb0cc2b3e4e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 00:14:23 +0100 Subject: [PATCH 095/158] fix(routing): move a seam port with its whole station row A single-line port could snap to its inter-section seam partner's lane on its own, leaving the flat in-section run it shares with its neighbours behind: the mismatch survived, relocated from a long seam that routing absorbs in a vertical leg or a mid-seam ramp onto the much shorter station row, where it drew as a steep diagonal (Complex Multipath section 2, Long-read Variant Calling section 7). Horizontal reconciliation now clears the port's whole flat in-section run before the snap - every member must be free of a collision at the destination lane and free of a seam of its own holding it elsewhere - and carries the run across with the port when it moves, so seam agreement is never bought at the station row's expense. A corpus invariant over examples, topologies, and the frozen seeds observes the reconciliation pass directly and fails on any port left off its run-mates' lane. Co-Authored-By: Claude Fable 5 (cherry picked from commit 0c1483cd7f9c6e6a25721e7a4b0d0d18ba1135ea) --- docs/dev/routing_gate_coverage.md | 41 ++++---- src/nf_metro/layout/routing/offsets.py | 93 +++++++++++++------ .../data/routing_gate_coverage_baseline.json | 3 +- tests/data/routing_gate_triage.json | 6 +- tests/test_seam_lane_agreement.py | 71 ++++++++++++++ 5 files changed, 163 insertions(+), 51 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index ecd0ba4bd..77c305999 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2378/3426** gates fully exercised (both/all arms hit by some fixture); **1048** gates have at least one un-exercised arm. +**2384/3433** gates fully exercised (both/all arms hit by some fixture); **1049** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **297** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **298** gaps carry a triage verdict. ## `arranger.py` @@ -1007,7 +1007,7 @@ Gates with an un-exercised arm: ## `offsets.py` -469/559 gates fully exercised. +475/566 gates fully exercised. Gates with an un-exercised arm: @@ -1086,23 +1086,24 @@ Gates with an un-exercised arm: | 2986 | `if pred is None:` | `->L2987` | | | 3082 | `if target_col is None:` | `->L3083` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | | 3091 | `if source_col is None:` | `->L3092` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3450 | `if src_n <= tgt_n:` | `->L3453` | | -| 3480 | `if not a.section_id or a.section_id != b.section_id:` | `->L3481` | | -| 3561 | `if ctx.topology is None:` | `->L3562` | | -| 3585 | `if key not in ctx.offsets:` | `->L3586` | | -| 3634 | `len(levels) != len(continuing)` | `->L3637` | | -| 3697 | `if line_id not in assignments:` | `->L3698` | | -| 3702 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3704` | | -| 3724 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3749` | | -| 3735 | `if line_id not in assignments:` | `->L3736` | | -| 3742 | `if set(frames).difference(next_frames):` | `->L3743` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3777 | `if any(` | `->L3781` | | -| 3783 | `if local_offset is None or not (` | `->L3789` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3808 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3809` | | -| 3819 | `if gap is not None:` | `->L3820` | | -| 3850 | `if any(` | `->L3856` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3874 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3875` | | -| 4051 | `if dag is not None:` | `->L4059` | | +| 3400 | `for _ in range(max_iterations):` | `->L-3347` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | +| 3484 | `if src_n <= tgt_n:` | `->L3487` | | +| 3514 | `if not a.section_id or a.section_id != b.section_id:` | `->L3515` | | +| 3595 | `if ctx.topology is None:` | `->L3596` | | +| 3619 | `if key not in ctx.offsets:` | `->L3620` | | +| 3668 | `len(levels) != len(continuing)` | `->L3671` | | +| 3731 | `if line_id not in assignments:` | `->L3732` | | +| 3736 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3738` | | +| 3758 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3783` | | +| 3769 | `if line_id not in assignments:` | `->L3770` | | +| 3776 | `if set(frames).difference(next_frames):` | `->L3777` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3811 | `if any(` | `->L3815` | | +| 3817 | `if local_offset is None or not (` | `->L3823` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3842 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3843` | | +| 3853 | `if gap is not None:` | `->L3854` | | +| 3884 | `if any(` | `->L3890` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3908 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3909` | | +| 4085 | `if dag is not None:` | `->L4093` | | ## `orientation.py` diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 625722502..e66c30077 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -3345,13 +3345,14 @@ def _recenter_partial_fan_branches(ctx: _OffsetCtx) -> None: def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> None: - """Snap offsets for same-section edges where endpoints share base Y. + """Snap offsets for edges whose endpoints share base Y. - Only processes edges where both endpoints belong to the same - section. Inter-section offset mismatches are handled by routing - (L-shaped paths with vertical segments), so they must not be - reconciled here - doing so cascades offsets across section - boundaries and breaks per-section reindexing. + Same-section edges reconcile freely. An inter-section seam is far + more constrained: cascading offsets across a section boundary breaks + per-section reindexing, and routing usually absorbs the mismatch in + an L-shaped path's vertical segment, so only a single-line port may + move to meet its seam partner, and only carrying its whole flat + in-section run with it. For each qualifying edge, tries snapping both stations to the larger-magnitude offset first, then the smaller. A candidate is @@ -3364,9 +3365,9 @@ def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> """ # Pre-filter to edges where both endpoints share the same Y. These # properties are immutable during reconciliation. Same-Y inter-section - # seams qualify too: routing draws them as one straight run, so an - # endpoint lane mismatch has no vertical leg to resolve in and reads as - # an almost-horizontal slope across the seam. + # seams qualify too: routing may draw them as one straight run, which + # leaves an endpoint lane mismatch no vertical leg to resolve in and + # reads as an almost-horizontal slope across the seam. candidates = [ ( edge, @@ -3377,12 +3378,25 @@ def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> <= _SAME_Y_TOLERANCE ] flat_section_partners: dict[tuple[str, str], list[str]] = {} + flat_seam_partners: dict[tuple[str, str], list[str]] = {} for edge, same_section in candidates: - if not same_section: - continue lid = edge.line_id - flat_section_partners.setdefault((edge.source, lid), []).append(edge.target) - flat_section_partners.setdefault((edge.target, lid), []).append(edge.source) + partners = flat_section_partners if same_section else flat_seam_partners + partners.setdefault((edge.source, lid), []).append(edge.target) + partners.setdefault((edge.target, lid), []).append(edge.source) + + def _flat_run(station_id: str, lid: str) -> list[str]: + """The station's flat in-section run, walked to both of its ends.""" + run = [station_id] + seen = {station_id} + stack = [station_id] + while stack: + for partner in flat_section_partners.get((stack.pop(), lid), ()): + if partner not in seen: + seen.add(partner) + run.append(partner) + stack.append(partner) + return run for _ in range(max_iterations): changed = False @@ -3401,26 +3415,35 @@ def _reconcile_horizontal_offsets(ctx: _OffsetCtx, max_iterations: int = 10) -> src_moves = src_off != candidate tgt_moves = tgt_off != candidate if not same_section: - # An inter-section seam has no vertical leg to absorb the - # mismatch, but its endpoints feed fan, dogleg, and - # corridor geometry planned from their lanes, so only an - # endpoint whose lane is the whole story -- a single-line - # port -- may move to meet its partner. A port whose flat - # in-section run rides another lane stays with that run: - # snapping it would trade the seam slope for a slope on - # the station row, and the straight-connector ramp absorbs - # the seam mismatch instead. + # A seam endpoint feeds fan, dogleg, and corridor geometry + # planned from its lane, so only an endpoint whose lane is + # the whole story -- a single-line port -- may move to meet + # its partner, and only when its flat in-section run is + # free to come along: a run held on another lane, whether + # by a collision or by a seam of its own at the far end, + # would keep the mismatch and merely relocate it onto the + # much shorter station row, where it reads as a steep + # diagonal rather than a seam the routed vertical legs or + # the mid-seam ramp absorb. def _movable(sid: str) -> bool: if ( sid not in ctx.graph.ports or len(ctx.graph.station_lines(sid)) != 1 ): return False - return all( - ctx.offsets.get((partner, lid), 0.0) == candidate - or not _would_collide(ctx, partner, lid, candidate) - for partner in flat_section_partners.get((sid, lid), ()) - ) + for member in _flat_run(sid, lid): + if ctx.offsets.get( + (member, lid), 0.0 + ) != candidate and _would_collide( + ctx, member, lid, candidate + ): + return False + if any( + ctx.offsets.get((far, lid), 0.0) != candidate + for far in flat_seam_partners.get((member, lid), ()) + ): + return False + return True if (src_moves and not _movable(edge.source)) or ( tgt_moves and not _movable(edge.target) @@ -3433,8 +3456,20 @@ def _movable(sid: str) -> bool: ctx, edge.target, lid, candidate ) if src_ok and tgt_ok: - ctx.offsets[(edge.source, lid)] = candidate - ctx.offsets[(edge.target, lid)] = candidate + for endpoint, moves in ( + (edge.source, src_moves), + (edge.target, tgt_moves), + ): + # A seam snap carries the port's whole flat run, which + # _movable has cleared; splitting the two would put the + # slope on the station row instead of the seam. + movers = ( + _flat_run(endpoint, lid) + if moves and not same_section + else [endpoint] + ) + for mover in movers: + ctx.offsets[(mover, lid)] = candidate applied = True changed = True break diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index ecb60f54b..6f40b79ee 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -867,6 +867,7 @@ "offsets.py::elif feeding_exit != edge.source:::#1", "offsets.py::for _ in range(len(graph.stations) + 1):::#1", "offsets.py::for _ in range(len(seed_lines)):::#1", + "offsets.py::for _ in range(max_iterations):::#1", "offsets.py::for _iteration in range(len(ctx.graph.sections) + 1):::#1", "offsets.py::for edge in graph.edges_from(port_id):::#2", "offsets.py::for lid in above:::#1", @@ -878,8 +879,8 @@ "offsets.py::if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if anchor_feeders:::#1", - "offsets.py::if any(::#2", "offsets.py::if any(::#3", + "offsets.py::if any(::#4", "offsets.py::if ctx.topology is None:::#1", "offsets.py::if cur in seen:::#1", "offsets.py::if dag is not None:::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index e105f6621..03ddf4bd6 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -891,6 +891,10 @@ "note": "This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", "status": "defensive" }, + "offsets.py::for _ in range(max_iterations):::#1": { + "note": "The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path.", + "status": "defensive" + }, "offsets.py::for other in lines:::#1": { "note": "In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762).", "status": "defensive" @@ -911,7 +915,7 @@ "note": "In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed.", "status": "needs-review" }, - "offsets.py::if any(::#3": { + "offsets.py::if any(::#4": { "note": "This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state.", "status": "defensive" }, diff --git a/tests/test_seam_lane_agreement.py b/tests/test_seam_lane_agreement.py index 6e073c824..08eec0e18 100644 --- a/tests/test_seam_lane_agreement.py +++ b/tests/test_seam_lane_agreement.py @@ -6,15 +6,21 @@ single-line port has no bundle constraining its lane, so its seam offset can always agree with its partner's; these seams are held level across the frozen seed corpus, where the slopes were first observed. + +The agreement only counts when it is not bought at the station row's expense: +a port either takes its whole flat in-section run to the seam partner's lane +or stays where its run-mates ride, never parting from them. """ from __future__ import annotations import warnings from pathlib import Path +from typing import Any import pytest +import nf_metro.layout.routing.offsets as routing_offsets from nf_metro.api import prepare_graph from nf_metro.layout.constants import COORD_TOLERANCE from nf_metro.layout.routing.common import apply_route_offsets @@ -23,6 +29,14 @@ ROOT = Path(__file__).parents[1] FROZEN = ROOT / "tests" / "fixtures" / "hash_seed_determinism" +CORPUS = sorted( + ( + *(ROOT / "examples").glob("*.mmd"), + *(ROOT / "examples" / "topologies").glob("*.mmd"), + *FROZEN.glob("*.mmd"), + ), + key=lambda p: (p.parent.name, p.name), +) @pytest.mark.parametrize( @@ -61,3 +75,60 @@ def single_line_port(station_id: str) -> bool: f"{drawn[0]} -> {drawn[-1]}" ) assert not sloped, "level seams drawn sloped:\n" + "\n".join(sloped) + + +def _station_row_disagreements(ctx: Any) -> list[str]: + """Single-line ports whose lane differs from a flat in-section run-mate.""" + graph = ctx.graph + found = [] + for edge in graph.edges: + src, tgt = graph.stations[edge.source], graph.stations[edge.target] + if not src.section_id or src.section_id != tgt.section_id: + continue + if abs(src.y - tgt.y) > COORD_TOLERANCE: + continue + lid = edge.line_id + for port_id, mate_id in ( + (edge.source, edge.target), + (edge.target, edge.source), + ): + if port_id not in graph.ports or len(graph.station_lines(port_id)) != 1: + continue + own = ctx.offsets.get((port_id, lid), 0.0) + mate = ctx.offsets.get((mate_id, lid), 0.0) + if abs(own - mate) > COORD_TOLERANCE: + found.append( + f"{port_id} [{lid}] on lane {own}, run-mate {mate_id} on {mate}" + ) + return found + + +@pytest.mark.parametrize("path", CORPUS, ids=lambda p: p.stem) +def test_seam_snap_leaves_ports_on_their_station_row( + path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + """Levelling a seam must not slope the port's own station row instead. + + A single-line port may move to meet its seam partner's lane only with + its whole flat in-section run behind it. A port that moves alone + relocates the mismatch onto the much shorter station row, where it + reads as a steep localized diagonal rather than a seam the routed + vertical legs or the mid-seam ramp can absorb. + """ + original = routing_offsets._reconcile_horizontal_offsets + disagreements: list[str] = [] + + def observed(ctx: Any, *args: Any, **kwargs: Any) -> None: + original(ctx, *args, **kwargs) + disagreements.extend(_station_row_disagreements(ctx)) + + monkeypatch.setattr(routing_offsets, "_reconcile_horizontal_offsets", observed) + + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + routing_offsets.compute_station_offsets(graph) + + assert not disagreements, "seam snap sloped a station row:\n" + "\n".join( + dict.fromkeys(disagreements) + ) From b2d566739a949b5609c8b04581184974aec68b02 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 00:37:54 +0100 Subject: [PATCH 096/158] fix(offsets): keep a settled port frame from stranding an empty lane A station one flat edge from a port could follow that port's settled frame onto a lane its own bundle could not close over, leaving an unoccupied slot inside the bundle: the marker then draws across empty space and whatever rides the vacated lane elsewhere has nothing to meet. The run-mate agreement the pass already required also skipped ports, so a station could be pulled onto one port's lane while a port on the other end of the same flat run kept another, trading one seam for another. The alignment now moves a line only when the station's bundle stays contiguous behind it and every flat run-mate, port or station, already rides the destination lane. Co-Authored-By: Claude Fable 5 (cherry picked from commit e3b466762d60077080d455999f3cf4eff8589bfa) --- docs/dev/routing_gate_coverage.md | 58 ++++++++++++------------- src/nf_metro/layout/routing/offsets.py | 32 +++++++++++--- tests/test_station_offset_continuity.py | 32 ++++++++++++++ 3 files changed, 88 insertions(+), 34 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 77c305999..f8a182315 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2384/3433** gates fully exercised (both/all arms hit by some fixture); **1049** gates have at least one un-exercised arm. +**2385/3434** gates fully exercised (both/all arms hit by some fixture); **1049** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -1007,7 +1007,7 @@ Gates with an un-exercised arm: ## `offsets.py` -475/566 gates fully exercised. +476/567 gates fully exercised. Gates with an un-exercised arm: @@ -1077,33 +1077,33 @@ Gates with an un-exercised arm: | 2747 | `if max_steps <= 0:` | `->L2748` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | | 2761 | `if sec_a is None and id_a in graph.ports:` | `->L2762` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | | 2763 | `if sec_b is None and id_b in graph.ports:` | `->L2764` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2826 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2827` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2846 | `if src_port and not src_port.is_entry:` | `->L2853` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | -| 2849 | `elif feeding_exit != edge.source:` | `->L2850` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2858 | `if single_exit and feeding_exit is not None:` | `->L2797` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | -| 2860 | `if exit_lines == set(j_lines):` | `->L2797` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | -| 2862 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2797` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 2986 | `if pred is None:` | `->L2987` | | -| 3082 | `if target_col is None:` | `->L3083` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | -| 3091 | `if source_col is None:` | `->L3092` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3400 | `for _ in range(max_iterations):` | `->L-3347` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | -| 3484 | `if src_n <= tgt_n:` | `->L3487` | | -| 3514 | `if not a.section_id or a.section_id != b.section_id:` | `->L3515` | | -| 3595 | `if ctx.topology is None:` | `->L3596` | | -| 3619 | `if key not in ctx.offsets:` | `->L3620` | | -| 3668 | `len(levels) != len(continuing)` | `->L3671` | | -| 3731 | `if line_id not in assignments:` | `->L3732` | | -| 3736 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3738` | | -| 3758 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3783` | | -| 3769 | `if line_id not in assignments:` | `->L3770` | | -| 3776 | `if set(frames).difference(next_frames):` | `->L3777` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3811 | `if any(` | `->L3815` | | -| 3817 | `if local_offset is None or not (` | `->L3823` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3842 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3843` | | -| 3853 | `if gap is not None:` | `->L3854` | | -| 3884 | `if any(` | `->L3890` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3908 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3909` | | -| 4085 | `if dag is not None:` | `->L4093` | | +| 2845 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2846` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2865 | `if src_port and not src_port.is_entry:` | `->L2872` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | +| 2868 | `elif feeding_exit != edge.source:` | `->L2869` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2877 | `if single_exit and feeding_exit is not None:` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | +| 2879 | `if exit_lines == set(j_lines):` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | +| 2881 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | +| 3005 | `if pred is None:` | `->L3006` | | +| 3101 | `if target_col is None:` | `->L3102` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | +| 3110 | `if source_col is None:` | `->L3111` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | +| 3420 | `for _ in range(max_iterations):` | `->L-3366` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | +| 3504 | `if src_n <= tgt_n:` | `->L3507` | | +| 3536 | `if not a.section_id or a.section_id != b.section_id:` | `->L3537` | | +| 3618 | `if ctx.topology is None:` | `->L3619` | | +| 3642 | `if key not in ctx.offsets:` | `->L3643` | | +| 3691 | `len(levels) != len(continuing)` | `->L3694` | | +| 3754 | `if line_id not in assignments:` | `->L3755` | | +| 3759 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3761` | | +| 3781 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3806` | | +| 3792 | `if line_id not in assignments:` | `->L3793` | | +| 3799 | `if set(frames).difference(next_frames):` | `->L3800` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3834 | `if any(` | `->L3838` | | +| 3840 | `if local_offset is None or not (` | `->L3846` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3865 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3866` | | +| 3876 | `if gap is not None:` | `->L3877` | | +| 3907 | `if any(` | `->L3913` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3931 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3932` | | +| 4108 | `if dag is not None:` | `->L4116` | | ## `orientation.py` diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index e66c30077..f4fbb7e7f 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -2776,6 +2776,25 @@ def _would_collide( ) +def _leaves_lane_hole( + ctx: _OffsetCtx, station_id: str, line_id: str, value: float +) -> bool: + """Check if setting (station_id, line_id) to value strands an empty slot. + + A bundle whose occupied lanes skip a slot draws its marker across empty + space, so a line may only leave its slot when the bundle closes up + behind it. + """ + lanes = sorted( + value if lid == line_id else ctx.offsets.get((station_id, lid), 0.0) + for lid in ctx.graph.station_lines(station_id) + ) + return any( + upper - lower > ctx.offset_step + _OFFSET_EQ_TOLERANCE + for lower, upper in zip(lanes, lanes[1:]) + ) + + def _align_junction_to_entry_port(ctx: _OffsetCtx) -> None: """Resolve same-Y junction-to-entry-port slants left by Path 2. @@ -3504,10 +3523,12 @@ def _align_stations_to_settled_port_frames(ctx: _OffsetCtx) -> None: horizontal reconciliation, so a station one flat edge away can be left on the pre-settlement lane, drawing a near-flat slope into the port. The port's frame is the settled truth, so the station's line moves to - the port's slot when that slot is free at the station and every other - flat run-mate already rides it - moving against a disagreeing mate - would trade the port seam for a station seam. A seam that does not - fit stays for the closing guards to report. + the port's slot when that slot is free at the station, every other flat + run-mate - station or port - already rides it, and the station's bundle + closes up behind the move. Moving against a disagreeing mate would + trade the port seam for a mate's seam, and vacating a slot the bundle + cannot close over strands an empty lane inside the station's marker. + A seam that does not fit stays for the closing guards to report. """ graph = ctx.graph @@ -3531,6 +3552,8 @@ def flat_seam(a: Station, b: Station) -> bool: continue if _would_collide(ctx, station.id, lid, port_off): continue + if _leaves_lane_hole(ctx, station.id, lid, port_off): + continue mates_agree = all( abs(ctx.offsets.get((other.id, lid), 0.0) - port_off) <= _OFFSET_EQ_TOLERANCE @@ -3545,7 +3568,6 @@ def flat_seam(a: Station, b: Station) -> bool: ] ).id != port.id - and not other.is_port and flat_seam(station, other) ) if mates_agree: diff --git a/tests/test_station_offset_continuity.py b/tests/test_station_offset_continuity.py index 71ef7a480..32ed62a84 100644 --- a/tests/test_station_offset_continuity.py +++ b/tests/test_station_offset_continuity.py @@ -16,10 +16,12 @@ import pytest from nf_metro.api import prepare_graph +from nf_metro.layout.constants import graph_offset_step from nf_metro.layout.routing.offsets import compute_station_offsets ROOT = Path(__file__).parents[1] FROZEN = ROOT / "tests" / "fixtures" / "hash_seed_determinism" +EXAMPLES = ROOT / "examples" def _graph_and_offsets(path: Path): @@ -72,6 +74,36 @@ def test_tb_station_slots_are_contiguous_for_present_lines() -> None: assert station_offsets == [0.0, 4.0, 8.0] +def _lane_holes(graph, offsets, station_id: str) -> list[float]: + step = graph_offset_step(graph) + lanes = sorted(off for (sid, _line), off in offsets.items() if sid == station_id) + return [ + lower + step + for lower, upper in zip(lanes, lanes[1:]) + if upper - lower > step + 0.01 + ] + + +@pytest.mark.parametrize( + ("relpath", "station_id"), + [ + ("longread_variant_calling.mmd", "ontspectre_cnvcaller"), + ("topologies/rail_boundary_bundle_fan.mmd", "hub"), + ], +) +def test_station_bundles_leave_no_empty_lane(relpath: str, station_id: str) -> None: + # A slot left unoccupied inside a station's bundle stretches its marker + # over empty space and strands whatever rides the vacated lane elsewhere, + # so a line only leaves its lane when the bundle closes up behind it. + graph, offsets = _graph_and_offsets(EXAMPLES / relpath) + assert not _lane_holes(graph, offsets, station_id) + + +def test_gallery_flat_in_section_runs_keep_their_lane() -> None: + graph, offsets = _graph_and_offsets(EXAMPLES / "longread_variant_calling.mmd") + assert not _flat_run_slopes(graph, offsets) + + def test_port_seam_alignment_respects_disagreeing_run_mates() -> None: # rail_boundary_bundle_fan's hub rides lane 4 with its run-mate haplo: # a settled port frame on the other side must not pull hub alone onto From 2dfffbc7fe2d3ef415fb66fab4b65db43cdd3e8b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:24:56 +0100 Subject: [PATCH 097/158] test(routing): identify nested corner families by geometry alone Co-Authored-By: Claude Fable 5 (cherry picked from commit 5b69d1e6dad6b00b76aaabb0e76c0e556821a0ce) --- tests/test_svg_paths.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/test_svg_paths.py b/tests/test_svg_paths.py index f60255aa1..18a288245 100644 --- a/tests/test_svg_paths.py +++ b/tests/test_svg_paths.py @@ -795,6 +795,11 @@ class TestNestedCornerFamilies: frame than actually turns there collapses onto a second center. Corners whose resolved radius is clamped by a short leg are exempt: a clamped radius is not shared geometry. + + Membership is decided by the nesting geometry alone. Reading the drawn + radii for a lane-pitch difference first would exempt the worst case: + two lanes offset diagonally that draw the *same* radius pivot a full + pitch apart and pinch shut through the turn. """ CENTER_EPS = 1.5 @@ -843,8 +848,6 @@ def _check(self, routes, offsets): diag = (vaxis[0] - ua[0], vaxis[1] - ua[1]) if abs(dx * diag[1] - dy * diag[0]) > 0.01: continue - if abs(abs(radius_a - radius_b) - span) > 0.01: - continue center_a = _arc_center( ra.points[ka - 1], va, ra.points[ka + 1], radius_a ) From 41ccda853a6ef021b266db99339a2ef3a9be8ec7 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:38:46 +0100 Subject: [PATCH 098/158] fix(routing): size a landing corner family by its arrival, not its node Co-Authored-By: Claude Fable 5 (cherry picked from commit 79b43d29dbf9b8381f3e98f8d99f2dc1f0a10d47) --- src/nf_metro/layout/routing/normalize.py | 102 ++++++++++++++++------- 1 file changed, 70 insertions(+), 32 deletions(-) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index e96eaf40f..2418a3b6d 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -91,7 +91,11 @@ from nf_metro.layout.routing.offsets import ( cross_row_convergence_channel_order, ) -from nf_metro.layout.routing.orientation import direction_vector +from nf_metro.layout.routing.orientation import ( + direction_axis, + direction_vector, + get_point_coordinate, +) from nf_metro.layout.routing.reserved_bands import ( ReservedBand, corridor_clearance_band, @@ -1171,12 +1175,19 @@ class _SemanticEndCorner(NamedTuple): outgoing: tuple[int, int] -def _rederive_semantic_end_corners( +def _semantic_end_corner_cohorts( routes: list[RoutedPath], - curve_radius: float, station_offsets: Mapping[tuple[str, str], float], -) -> None: - """Size wholesale-translated source and landing corner cohorts.""" +) -> dict[tuple[str, str, Direction, Direction], list[_SemanticEndCorner]]: + """Group every route's turns by the relation that can make them one family. + + A turn joins its source's and its target's cohort at the ends of a route + and an ordinal-keyed cohort in between. It also joins a cohort keyed by + the *place* its final leg reaches: lanes of one bundle can land on routes + named by different targets - a merge junction alongside the entry port it + sits at - and the target owner alone would split a family that turns + together. + """ cohorts: defaultdict[ tuple[str, str, Direction, Direction], list[_SemanticEndCorner], @@ -1198,14 +1209,15 @@ def _rederive_semantic_end_corners( corners.append((rank, incoming, outgoing)) if not corners: continue - for kind, owner, (rank, incoming, outgoing) in ( - ("source", route.edge.source, corners[0]), - ("target", route.edge.target, corners[-1]), - ): - if ( - kind == "source" and route.exit_lane_transition_plan_id is not None - ) or (kind == "target" and route.exit_turn_segment_rank == rank): - continue + + def record( + kind: str, + owner: str, + corner: tuple[int, Direction, Direction], + points: list[tuple[float, float]] = points, + route: RoutedPath = route, + ) -> None: + rank, incoming, outgoing = corner cohorts[kind, owner, incoming, outgoing].append( _SemanticEndCorner( route, @@ -1215,31 +1227,55 @@ def _rederive_semantic_end_corners( direction_vector(outgoing), ) ) - for ordinal, (rank, incoming, outgoing) in enumerate(corners[1:-1], start=1): - cohorts[ - "edge", - f"{route.edge.source}\0{route.edge.target}\0{len(corners)}\0{ordinal}", - incoming, - outgoing, - ].append( - _SemanticEndCorner( - route, - rank, - points, - direction_vector(incoming), - direction_vector(outgoing), - ) - ) - def wholesale_pair(a: _SemanticEndCorner, b: _SemanticEndCorner) -> bool: - return wholesale_corner_translation( + landing_rank, _landing_in, landing_out = corners[-1] + landing_settled = route.exit_turn_segment_rank == landing_rank + if route.exit_lane_transition_plan_id is None: + record("source", route.edge.source, corners[0]) + if not landing_settled: + record("target", route.edge.target, corners[-1]) + arrival = get_point_coordinate(points[-1], direction_axis(landing_out)) + record("landing", f"{arrival:.3f}", corners[-1]) + edge_key = f"{route.edge.source}\0{route.edge.target}\0{len(corners)}" + for ordinal, corner in enumerate(corners[1:-1], start=1): + record("edge", f"{edge_key}\0{ordinal}", corner) + return cohorts + + +def _rederive_semantic_end_corners( + routes: list[RoutedPath], + curve_radius: float, + station_offsets: Mapping[tuple[str, str], float], +) -> None: + """Size wholesale-translated source and landing corner cohorts.""" + cohorts = _semantic_end_corner_cohorts(routes, station_offsets) + + def wholesale_pair( + a: _SemanticEndCorner, + b: _SemanticEndCorner, + max_span: float | None = None, + ) -> bool: + if not wholesale_corner_translation( a.points[a.rank], b.points[b.rank], a.incoming, a.outgoing, - ) + ): + return False + if max_span is None: + return True + ax, ay = a.points[a.rank] + bx, by = b.points[b.rank] + return max(abs(bx - ax), abs(by - ay)) < max_span for cohort_key, cohort in cohorts.items(): + # A cohort keyed by place rather than by node holds every turn that + # arrives there, so its members nest only while they read as one + # bundle. A full :data:`BUNDLE_TO_BUNDLE_CLEARANCE` apart is the + # breathing space that separates two streams, and giving two streams + # one arc centre draws the outer one as a lazy sweep across whatever + # runs between them. + max_span = BUNDLE_TO_BUNDLE_CLEARANCE if cohort_key[0] == "landing" else None pending = set(range(len(cohort))) while pending: first = pending.pop() @@ -1248,7 +1284,9 @@ def wholesale_pair(a: _SemanticEndCorner, b: _SemanticEndCorner) -> bool: while frontier: member_index = frontier.pop() for candidate in list(pending): - if wholesale_pair(cohort[candidate], cohort[member_index]): + if wholesale_pair( + cohort[candidate], cohort[member_index], max_span + ): pending.remove(candidate) component.add(candidate) frontier.append(candidate) From ba1d210a3b49518072b9fb8221ce9eacabe968ad Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 00:02:18 +0100 Subject: [PATCH 099/158] test(routing): refresh gate coverage for the landing corner cohort Co-Authored-By: Claude Fable 5 (cherry picked from commit 0a3d14090e3d6515d9c33a2304f5970015453282) --- docs/dev/routing_gate_coverage.md | 318 +++++++++++------------ src/nf_metro/layout/routing/normalize.py | 19 +- 2 files changed, 170 insertions(+), 167 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index f8a182315..5d1bcdcd4 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2385/3434** gates fully exercised (both/all arms hit by some fixture); **1049** gates have at least one un-exercised arm. +**2387/3436** gates fully exercised (both/all arms hit by some fixture); **1049** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -841,169 +841,169 @@ Gates with an un-exercised arm: ## `normalize.py` -427/584 gates fully exercised. +429/586 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 191 | `if s.bbox_w <= 0:` | `->L192` | **defensive** -- Degenerate-bbox guard in _section_intrudes: a laid-out section always has bbox_w > 0; the skip arm guards a zero/negative-width section the layout never produces. | -| 238 | `if mid - half < gap_left - COORD_TOLERANCE:` | `->L239` | | -| 240 | `if mid + half > gap_right + COORD_TOLERANCE:` | `->L241` | | -| 420 | `if abs(overlap) > COORD_TOLERANCE:` | `->L421` | **defensive** -- The symmetric-divergence recognizer rejects opposite vertical legs whose spans overlap instead of meeting at one endpoint. Corpus candidates reaching this helper are same-source branch openings and therefore meet at the shared turn Y; the overlapping arm is a defensive rejection for malformed or independently routed channels. | -| 426 | `if channel.idx == 0:` | `->L427` | **defensive** -- A declared gap channel participating in a same-source divergence follows the branch's horizontal opening and therefore cannot be the route's first segment. The zero-index arm defensively rejects a vertical-first route shape. | -| 431 | `if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:` | `->L432` | **defensive** -- The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint. | -| 437 | `if a_trunk is None or b_trunk is None:` | `->L438` | **defensive** -- A symmetric divergence is considered only for declared gap channels produced by a same-source branch opening. Those channels follow a horizontal opening run, so both opening trunks resolve; the missing-trunk arm defensively rejects a different route shape. | -| 512 | `if not chans:` | `->L513` | | -| 656 | `if ctx.exit_turns is None:` | `->L657` | | -| 661 | `assignment is None` | `->L666` | | -| 663 | `or assignment.turn_direction is None` | `->L666` | | -| 664 | `or len(route.points) < 3` | `->L666` | | -| 792 | `if gap_right <= gap_left:` | `->L793` | | -| 834 | `if ctx.exit_turns is None:` | `->L835` | | -| 852 | `if route.curve_radii is None or membership is None:` | `->L853` | **defensive** -- A validation-eligible settled exit-turn route is emitted from its member plan with explicit radii and membership in the same exit-turn execution. Missing either reports incomplete engine ownership; both arms are exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 857 | `if planned_offsets is None:` | `->L858` | | -| 863 | `if allocated_offsets is None or allocated_bases is None:` | `->L864` | **defensive** -- A validation-eligible settled exit turn must publish both offset and base tuples before emission. Missing either is an engine-contract violation exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 880 | `dx is None` | `->L885` | **defensive** -- Every validation-eligible settled exit-turn corner must retain its allocated or planned offset. An absent value is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 881 | `or base_radius is None` | `->L885` | **defensive** -- Every validation-eligible exit-turn corner must retain the base radius paired with its offset. An absent base is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 882 | `or not 0 <= radius_index < len(route.curve_radii)` | `->L885` | **defensive** -- A settled channel rank identifies the two flanking radii on its emitted route. An out-of-range index is malformed ownership metadata, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | -| 883 | `or radius_index + 2 >= len(route.points)` | `->L885` | **defensive** -- A settled exit-turn radius must retain all three defining points. Production routes have point-derived radius counts; the point-index case in test_gap_plan_radius_validator_rejects_incomplete_ownership exercises the attributed failure. | -| 893 | `if (` | `->L897` | **defensive** -- The settled exit-turn radius mismatch raises only after construction or a later pass changes a recorded planned corner without updating its concentric inputs. Valid production derives both values together; test_gap_plan_validator_rejects_a_changed_corner_radius exercises both failure flanks. | -| 938 | `if gap_right <= gap_left:` | `->L939` | | -| 1051 | `if rank > 0:` | `->L1056` | | -| 1054 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1056` | | -| 1056 | `if rank + 2 < len(route.points):` | `->L1061` | | -| 1059 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1061` | | -| 1329 | `if not reference_fits(lower):` | `->L1330` | | -| 1395 | `go is not None` | `->L1401` | | -| 1396 | `and gt is not None` | `->L1401` | | -| 1433 | `if len(pts) < 2:` | `->L1434` | | -| 1449 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1450` | | -| 1526 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1527` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | -| 1546 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1547` | | -| 1554 | `if None in convergence_plan_ids or len(convergence_plan_ids) != 1:` | `->L1555`, `->L1566` | | -| 1555 | `if ctx.validate_final_route_frames:` | `->L1556`, `->L1565` | | -| 1572 | `if _snap_reverses_adjacent_run(ch, ref_x):` | `->L1573` | | -| 1613 | `if channel is None:` | `->L1614` | | -| 1686 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1687` | | -| 1692 | `if ref is not None:` | `->L1693` | | -| 1763 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1764` | | -| 1767 | `if movable_channels:` | `->L1763`, `->L1768` | | -| 1805 | `if not downs or not ups:` | `->L1807` | | -| 1808 | `for descent in downs:` | `->L-1774`, `->L1809` | | -| 1810 | `if col in moved:` | `->L1811`, `->L1812` | | -| 1813 | `for up in ups:` | `->L1814`, `->L1823` | | -| 1814 | `if up.route.line_id != descent.route.line_id:` | `->L1815`, `->L1816` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | -| 1816 | `if abs(up.x - descent.x) > radius:` | `->L1817`, `->L1818` | | -| 1819 | `if overlap <= COORD_TOLERANCE:` | `->L1820`, `->L1821` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | -| 1823 | `if target_x is None:` | `->L1824`, `->L1825` | | -| 1826 | `for ch in downs:` | `->L1808`, `->L1827` | | -| 1827 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1826`, `->L1828` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | -| 1854 | `if k == desc.idx + 1:` | `->L1853` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | -| 1906 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1907` | | -| 1918 | `if any(` | `->L1928` | | -| 1948 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1952` | | -| 1949 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1952` | | -| 1950 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1952` | | -| 1969 | `if source_col is None:` | `->L1970` | | -| 1985 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L1986` | | -| 2002 | `if not sibling_xs:` | `->L2003` | | -| 2005 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2006` | | -| 2008 | `if _section_intrudes(` | `->L2015` | | -| 2140 | `for _ in range(max(1, len(buckets))):` | `->L-2086` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2158 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2160` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | -| 2163 | `for _step in range(64):` | `->L2164`, `->L2171` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | -| 2167 | `if resolved < common:` | `->L2168`, `->L2170` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | -| 2178 | `if not changed:` | `->L2140` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2216 | `if ch.route.convergence_plan_id is not None:` | `->L2217` | | -| 2226 | `if _planner_owns_channel(ch) and (` | `->L2229` | | -| 2300 | `if opposing_bundle is not None and {` | `->L2303` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | -| 2311 | `if any(` | `->L2321` | | -| 2428 | `if any(` | `->L2434` | | -| 2471 | `if has_immovable_planned_channel and any(` | `->L2476` | | -| 2531 | `if any(` | `->L2535` | | -| 2536 | `if not crossing:` | `->L2543` | | -| 2546 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2547`, `->L2551` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | -| 2551 | `for r, k, _y in crossing:` | `->L2508`, `->L2552` | | -| 2619 | `if ctx.convergences is None:` | `->L2620` | | -| 2627 | `or entry is None` | `->L2633` | | -| 2628 | `or port is None` | `->L2633` | | -| 2629 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2633` | | -| 2702 | `if rp.curve_radii is None:` | `->L2703` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | -| 2731 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2732` | | -| 2736 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2737` | | -| 2937 | `if route.curve_radii is None:` | `->L2938` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | -| 3084 | `if any(` | `->L3088` | | -| 3182 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3203` | | -| 3231 | `if not verticals:` | `->L3232` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | -| 3247 | `if rp.curve_radii is not None:` | `->L3249` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | -| 3467 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3461` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | -| 3497 | `if feats is None:` | `->L3498` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | -| 3634 | `if (` | `->L3638` | | -| 3646 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3647` | | -| 3694 | `if len(trunks) < 2:` | `->L3695`, `->L3696` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | -| 3698 | `for grp in groups:` | `->L3699`, `->L3717` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | -| 3699 | `if len({id(t.route) for t in grp}) < 2:` | `->L3700`, `->L3701` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | -| 3701 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3702`, `->L3703` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | -| 3703 | `for sign in (1, -1):` | `->L3698`, `->L3704` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | -| 3706 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3707`, `->L3708` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | -| 3715 | `if best < cur:` | `->L3703`, `->L3716` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | -| 3785 | `if (` | `->L3790` | | -| 3847 | `band is not None` | `->L3852` | | -| 3848 | `and band.boundary is None` | `->L3849` | | -| 3849 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3851`, `->L3852` | | -| 3945 | `if band is not None:` | `->L3950` | | -| 3969 | `elif up_ok:` | `->L3972` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | -| 3974 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L3975` | | -| 4015 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4024` | | -| 4018 | `if reconcile_owned_corridor:` | `->L4024` | | -| 4025 | `if cross_below is not None and cross_above is not None:` | `->L4033` | | -| 4026 | `if reconcile_owned_corridor:` | `->L4032` | | -| 4040 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4041` | | -| 4044 | `elif above_ok:` | `->L4047` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | -| 4047 | `if reconcile_owned_corridor:` | `->L4048`, `->L4051` | | -| 4112 | `if (` | `->L4116` | | -| 4118 | `if changed:` | `->L4119` | | -| 4148 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4168` | | -| 4150 | `if target_y is None:` | `->L4151` | | -| 4153 | `if (` | `->L4164` | | -| 4172 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4174` | | -| 4287 | `if band is None:` | `->L4288` | | -| 4293 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4297` | | -| 4319 | `and crossed[0] < span[1]` | `->L4321` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4429 | `if i in relocated:` | `->L4430` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4448 | `if (` | `->L4453` | | -| 4470 | `if any(` | `->L4474` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4475 | `if any(` | `->L4481` | | -| 4507 | `if target is None:` | `->L4508` | | -| 4551 | `if sg[0].sign_x != t.sign_x:` | `->L4552` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4587 | `and base_in is not None` | `->L4601` | | -| 4588 | `and base_out is not None` | `->L4601` | | -| 4604 | `if rp.curve_radii is None:` | `->L4605` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4616 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4618` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4618 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4561` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4696 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4699` | | -| 4700 | `if leg_is_plan_stated(mover):` | `->L4701` | | -| 4703 | `for delta in (step, -step):` | `->L4670` | | -| 4705 | `if all(` | `->L4703` | | -| 4739 | `or len(upstream.points) < 2` | `->L4741` | | -| 4744 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4747` | | -| 4745 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4747` | | -| 4749 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4751` | | -| 4809 | `if down is None or len(up.points) < 2:` | `->L4810` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4863 | `if len(targets) != 1:` | `->L4864` | | -| 4873 | `if col is None:` | `->L4874` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 4914 | `if not 0 <= far < len(pts):` | `->L4915` | | -| 4917 | `if abs(dx) > COORD_TOLERANCE:` | `->L4911` | | -| 4919 | `if not votes:` | `->L4920` | | -| 5025 | `if rep_x[a] != rep_x[b]:` | `->L5027` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5055 | `if rp.curve_radii is None:` | `->L5056` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5058 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5059` | | -| 5082 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5032` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5112 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5114` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5167 | `elif right_ok:` | `->L5170` | | -| 5216 | `if s.bbox_w <= 0:` | `->L5217` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 5604 | `if not blockers:` | `->L5605` | | +| 195 | `if s.bbox_w <= 0:` | `->L196` | **defensive** -- Degenerate-bbox guard in _section_intrudes: a laid-out section always has bbox_w > 0; the skip arm guards a zero/negative-width section the layout never produces. | +| 242 | `if mid - half < gap_left - COORD_TOLERANCE:` | `->L243` | | +| 244 | `if mid + half > gap_right + COORD_TOLERANCE:` | `->L245` | | +| 424 | `if abs(overlap) > COORD_TOLERANCE:` | `->L425` | **defensive** -- The symmetric-divergence recognizer rejects opposite vertical legs whose spans overlap instead of meeting at one endpoint. Corpus candidates reaching this helper are same-source branch openings and therefore meet at the shared turn Y; the overlapping arm is a defensive rejection for malformed or independently routed channels. | +| 430 | `if channel.idx == 0:` | `->L431` | **defensive** -- A declared gap channel participating in a same-source divergence follows the branch's horizontal opening and therefore cannot be the route's first segment. The zero-index arm defensively rejects a vertical-first route shape. | +| 435 | `if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:` | `->L436` | **defensive** -- The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint. | +| 441 | `if a_trunk is None or b_trunk is None:` | `->L442` | **defensive** -- A symmetric divergence is considered only for declared gap channels produced by a same-source branch opening. Those channels follow a horizontal opening run, so both opening trunks resolve; the missing-trunk arm defensively rejects a different route shape. | +| 516 | `if not chans:` | `->L517` | | +| 660 | `if ctx.exit_turns is None:` | `->L661` | | +| 665 | `assignment is None` | `->L670` | | +| 667 | `or assignment.turn_direction is None` | `->L670` | | +| 668 | `or len(route.points) < 3` | `->L670` | | +| 796 | `if gap_right <= gap_left:` | `->L797` | | +| 838 | `if ctx.exit_turns is None:` | `->L839` | | +| 856 | `if route.curve_radii is None or membership is None:` | `->L857` | **defensive** -- A validation-eligible settled exit-turn route is emitted from its member plan with explicit radii and membership in the same exit-turn execution. Missing either reports incomplete engine ownership; both arms are exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 861 | `if planned_offsets is None:` | `->L862` | | +| 867 | `if allocated_offsets is None or allocated_bases is None:` | `->L868` | **defensive** -- A validation-eligible settled exit turn must publish both offset and base tuples before emission. Missing either is an engine-contract violation exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 884 | `dx is None` | `->L889` | **defensive** -- Every validation-eligible settled exit-turn corner must retain its allocated or planned offset. An absent value is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 885 | `or base_radius is None` | `->L889` | **defensive** -- Every validation-eligible exit-turn corner must retain the base radius paired with its offset. An absent base is incomplete engine ownership, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 886 | `or not 0 <= radius_index < len(route.curve_radii)` | `->L889` | **defensive** -- A settled channel rank identifies the two flanking radii on its emitted route. An out-of-range index is malformed ownership metadata, exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership. | +| 887 | `or radius_index + 2 >= len(route.points)` | `->L889` | **defensive** -- A settled exit-turn radius must retain all three defining points. Production routes have point-derived radius counts; the point-index case in test_gap_plan_radius_validator_rejects_incomplete_ownership exercises the attributed failure. | +| 897 | `if (` | `->L901` | **defensive** -- The settled exit-turn radius mismatch raises only after construction or a later pass changes a recorded planned corner without updating its concentric inputs. Valid production derives both values together; test_gap_plan_validator_rejects_a_changed_corner_radius exercises both failure flanks. | +| 942 | `if gap_right <= gap_left:` | `->L943` | | +| 1055 | `if rank > 0:` | `->L1060` | | +| 1058 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1060` | | +| 1060 | `if rank + 2 < len(route.points):` | `->L1065` | | +| 1063 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1065` | | +| 1370 | `if not reference_fits(lower):` | `->L1371` | | +| 1436 | `go is not None` | `->L1442` | | +| 1437 | `and gt is not None` | `->L1442` | | +| 1474 | `if len(pts) < 2:` | `->L1475` | | +| 1490 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1491` | | +| 1567 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1568` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | +| 1587 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1588` | | +| 1595 | `if None in convergence_plan_ids or len(convergence_plan_ids) != 1:` | `->L1596`, `->L1607` | | +| 1596 | `if ctx.validate_final_route_frames:` | `->L1597`, `->L1606` | | +| 1613 | `if _snap_reverses_adjacent_run(ch, ref_x):` | `->L1614` | | +| 1654 | `if channel is None:` | `->L1655` | | +| 1727 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1728` | | +| 1733 | `if ref is not None:` | `->L1734` | | +| 1804 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1805` | | +| 1808 | `if movable_channels:` | `->L1804`, `->L1809` | | +| 1846 | `if not downs or not ups:` | `->L1848` | | +| 1849 | `for descent in downs:` | `->L-1815`, `->L1850` | | +| 1851 | `if col in moved:` | `->L1852`, `->L1853` | | +| 1854 | `for up in ups:` | `->L1855`, `->L1864` | | +| 1855 | `if up.route.line_id != descent.route.line_id:` | `->L1856`, `->L1857` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | +| 1857 | `if abs(up.x - descent.x) > radius:` | `->L1858`, `->L1859` | | +| 1860 | `if overlap <= COORD_TOLERANCE:` | `->L1861`, `->L1862` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | +| 1864 | `if target_x is None:` | `->L1865`, `->L1866` | | +| 1867 | `for ch in downs:` | `->L1849`, `->L1868` | | +| 1868 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1867`, `->L1869` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | +| 1895 | `if k == desc.idx + 1:` | `->L1894` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | +| 1947 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1948` | | +| 1959 | `if any(` | `->L1969` | | +| 1989 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1993` | | +| 1990 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1993` | | +| 1991 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1993` | | +| 2010 | `if source_col is None:` | `->L2011` | | +| 2026 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L2027` | | +| 2043 | `if not sibling_xs:` | `->L2044` | | +| 2046 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2047` | | +| 2049 | `if _section_intrudes(` | `->L2056` | | +| 2181 | `for _ in range(max(1, len(buckets))):` | `->L-2127` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2199 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2201` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | +| 2204 | `for _step in range(64):` | `->L2205`, `->L2212` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | +| 2208 | `if resolved < common:` | `->L2209`, `->L2211` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | +| 2219 | `if not changed:` | `->L2181` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2257 | `if ch.route.convergence_plan_id is not None:` | `->L2258` | | +| 2267 | `if _planner_owns_channel(ch) and (` | `->L2270` | | +| 2341 | `if opposing_bundle is not None and {` | `->L2344` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | +| 2352 | `if any(` | `->L2362` | | +| 2469 | `if any(` | `->L2475` | | +| 2512 | `if has_immovable_planned_channel and any(` | `->L2517` | | +| 2572 | `if any(` | `->L2576` | | +| 2577 | `if not crossing:` | `->L2584` | | +| 2587 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2588`, `->L2592` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | +| 2592 | `for r, k, _y in crossing:` | `->L2549`, `->L2593` | | +| 2660 | `if ctx.convergences is None:` | `->L2661` | | +| 2668 | `or entry is None` | `->L2674` | | +| 2669 | `or port is None` | `->L2674` | | +| 2670 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2674` | | +| 2743 | `if rp.curve_radii is None:` | `->L2744` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | +| 2772 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2773` | | +| 2777 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2778` | | +| 2978 | `if route.curve_radii is None:` | `->L2979` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | +| 3125 | `if any(` | `->L3129` | | +| 3223 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3244` | | +| 3272 | `if not verticals:` | `->L3273` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | +| 3288 | `if rp.curve_radii is not None:` | `->L3290` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | +| 3508 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3502` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | +| 3538 | `if feats is None:` | `->L3539` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | +| 3675 | `if (` | `->L3679` | | +| 3687 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3688` | | +| 3735 | `if len(trunks) < 2:` | `->L3736`, `->L3737` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | +| 3739 | `for grp in groups:` | `->L3740`, `->L3758` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | +| 3740 | `if len({id(t.route) for t in grp}) < 2:` | `->L3741`, `->L3742` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | +| 3742 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3743`, `->L3744` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | +| 3744 | `for sign in (1, -1):` | `->L3739`, `->L3745` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | +| 3747 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3748`, `->L3749` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | +| 3756 | `if best < cur:` | `->L3744`, `->L3757` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | +| 3826 | `if (` | `->L3831` | | +| 3888 | `band is not None` | `->L3893` | | +| 3889 | `and band.boundary is None` | `->L3890` | | +| 3890 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3892`, `->L3893` | | +| 3986 | `if band is not None:` | `->L3991` | | +| 4010 | `elif up_ok:` | `->L4013` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | +| 4015 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L4016` | | +| 4056 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4065` | | +| 4059 | `if reconcile_owned_corridor:` | `->L4065` | | +| 4066 | `if cross_below is not None and cross_above is not None:` | `->L4074` | | +| 4067 | `if reconcile_owned_corridor:` | `->L4073` | | +| 4081 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4082` | | +| 4085 | `elif above_ok:` | `->L4088` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | +| 4088 | `if reconcile_owned_corridor:` | `->L4089`, `->L4092` | | +| 4153 | `if (` | `->L4157` | | +| 4159 | `if changed:` | `->L4160` | | +| 4189 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4209` | | +| 4191 | `if target_y is None:` | `->L4192` | | +| 4194 | `if (` | `->L4205` | | +| 4213 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4215` | | +| 4328 | `if band is None:` | `->L4329` | | +| 4334 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4338` | | +| 4360 | `and crossed[0] < span[1]` | `->L4362` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4470 | `if i in relocated:` | `->L4471` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4489 | `if (` | `->L4494` | | +| 4511 | `if any(` | `->L4515` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4516 | `if any(` | `->L4522` | | +| 4548 | `if target is None:` | `->L4549` | | +| 4592 | `if sg[0].sign_x != t.sign_x:` | `->L4593` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4628 | `and base_in is not None` | `->L4642` | | +| 4629 | `and base_out is not None` | `->L4642` | | +| 4645 | `if rp.curve_radii is None:` | `->L4646` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4657 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4659` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4659 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4602` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4737 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4740` | | +| 4741 | `if leg_is_plan_stated(mover):` | `->L4742` | | +| 4744 | `for delta in (step, -step):` | `->L4711` | | +| 4746 | `if all(` | `->L4744` | | +| 4780 | `or len(upstream.points) < 2` | `->L4782` | | +| 4785 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4788` | | +| 4786 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4788` | | +| 4790 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4792` | | +| 4850 | `if down is None or len(up.points) < 2:` | `->L4851` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4904 | `if len(targets) != 1:` | `->L4905` | | +| 4914 | `if col is None:` | `->L4915` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 4955 | `if not 0 <= far < len(pts):` | `->L4956` | | +| 4958 | `if abs(dx) > COORD_TOLERANCE:` | `->L4952` | | +| 4960 | `if not votes:` | `->L4961` | | +| 5066 | `if rep_x[a] != rep_x[b]:` | `->L5068` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5096 | `if rp.curve_radii is None:` | `->L5097` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5099 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5100` | | +| 5123 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5073` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5153 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5155` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5208 | `elif right_ok:` | `->L5211` | | +| 5257 | `if s.bbox_w <= 0:` | `->L5258` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 5645 | `if not blockers:` | `->L5646` | | ## `offsets.py` diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 2418a3b6d..a983f1bc3 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1228,14 +1228,17 @@ def record( ) ) - landing_rank, _landing_in, landing_out = corners[-1] - landing_settled = route.exit_turn_segment_rank == landing_rank - if route.exit_lane_transition_plan_id is None: - record("source", route.edge.source, corners[0]) - if not landing_settled: - record("target", route.edge.target, corners[-1]) - arrival = get_point_coordinate(points[-1], direction_axis(landing_out)) - record("landing", f"{arrival:.3f}", corners[-1]) + arrival = get_point_coordinate(points[-1], direction_axis(corners[-1][2])) + for kind, owner, corner in ( + ("source", route.edge.source, corners[0]), + ("target", route.edge.target, corners[-1]), + ("landing", f"{arrival:.3f}", corners[-1]), + ): + if ( + kind == "source" and route.exit_lane_transition_plan_id is not None + ) or (kind != "source" and route.exit_turn_segment_rank == corner[0]): + continue + record(kind, owner, corner) edge_key = f"{route.edge.source}\0{route.edge.target}\0{len(corners)}" for ordinal, corner in enumerate(corners[1:-1], start=1): record("edge", f"{edge_key}\0{ordinal}", corner) From 836a9c1c0453b8e97105ea87c0fff236d3649762 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 00:41:09 +0100 Subject: [PATCH 100/158] fix(routing): read corner families only from routes stating every radius Co-Authored-By: Claude Fable 5 (cherry picked from commit 4cdb88ac855c41ec370dec7c43a4fc903eef3eb2) --- docs/dev/routing_gate_coverage.md | 260 +++++++++++------------ src/nf_metro/layout/routing/normalize.py | 4 +- 2 files changed, 133 insertions(+), 131 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 5d1bcdcd4..693fcd7dd 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -874,136 +874,136 @@ Gates with an un-exercised arm: | 1058 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1060` | | | 1060 | `if rank + 2 < len(route.points):` | `->L1065` | | | 1063 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1065` | | -| 1370 | `if not reference_fits(lower):` | `->L1371` | | -| 1436 | `go is not None` | `->L1442` | | -| 1437 | `and gt is not None` | `->L1442` | | -| 1474 | `if len(pts) < 2:` | `->L1475` | | -| 1490 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1491` | | -| 1567 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1568` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | -| 1587 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1588` | | -| 1595 | `if None in convergence_plan_ids or len(convergence_plan_ids) != 1:` | `->L1596`, `->L1607` | | -| 1596 | `if ctx.validate_final_route_frames:` | `->L1597`, `->L1606` | | -| 1613 | `if _snap_reverses_adjacent_run(ch, ref_x):` | `->L1614` | | -| 1654 | `if channel is None:` | `->L1655` | | -| 1727 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1728` | | -| 1733 | `if ref is not None:` | `->L1734` | | -| 1804 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1805` | | -| 1808 | `if movable_channels:` | `->L1804`, `->L1809` | | -| 1846 | `if not downs or not ups:` | `->L1848` | | -| 1849 | `for descent in downs:` | `->L-1815`, `->L1850` | | -| 1851 | `if col in moved:` | `->L1852`, `->L1853` | | -| 1854 | `for up in ups:` | `->L1855`, `->L1864` | | -| 1855 | `if up.route.line_id != descent.route.line_id:` | `->L1856`, `->L1857` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | -| 1857 | `if abs(up.x - descent.x) > radius:` | `->L1858`, `->L1859` | | -| 1860 | `if overlap <= COORD_TOLERANCE:` | `->L1861`, `->L1862` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | -| 1864 | `if target_x is None:` | `->L1865`, `->L1866` | | -| 1867 | `for ch in downs:` | `->L1849`, `->L1868` | | -| 1868 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1867`, `->L1869` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | -| 1895 | `if k == desc.idx + 1:` | `->L1894` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | -| 1947 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1948` | | -| 1959 | `if any(` | `->L1969` | | -| 1989 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1993` | | -| 1990 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1993` | | -| 1991 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1993` | | -| 2010 | `if source_col is None:` | `->L2011` | | -| 2026 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L2027` | | -| 2043 | `if not sibling_xs:` | `->L2044` | | -| 2046 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2047` | | -| 2049 | `if _section_intrudes(` | `->L2056` | | -| 2181 | `for _ in range(max(1, len(buckets))):` | `->L-2127` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2199 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2201` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | -| 2204 | `for _step in range(64):` | `->L2205`, `->L2212` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | -| 2208 | `if resolved < common:` | `->L2209`, `->L2211` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | -| 2219 | `if not changed:` | `->L2181` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2257 | `if ch.route.convergence_plan_id is not None:` | `->L2258` | | -| 2267 | `if _planner_owns_channel(ch) and (` | `->L2270` | | -| 2341 | `if opposing_bundle is not None and {` | `->L2344` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | -| 2352 | `if any(` | `->L2362` | | -| 2469 | `if any(` | `->L2475` | | -| 2512 | `if has_immovable_planned_channel and any(` | `->L2517` | | -| 2572 | `if any(` | `->L2576` | | -| 2577 | `if not crossing:` | `->L2584` | | -| 2587 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2588`, `->L2592` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | -| 2592 | `for r, k, _y in crossing:` | `->L2549`, `->L2593` | | -| 2660 | `if ctx.convergences is None:` | `->L2661` | | -| 2668 | `or entry is None` | `->L2674` | | -| 2669 | `or port is None` | `->L2674` | | -| 2670 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2674` | | -| 2743 | `if rp.curve_radii is None:` | `->L2744` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | -| 2772 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2773` | | -| 2777 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2778` | | -| 2978 | `if route.curve_radii is None:` | `->L2979` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | -| 3125 | `if any(` | `->L3129` | | -| 3223 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3244` | | -| 3272 | `if not verticals:` | `->L3273` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | -| 3288 | `if rp.curve_radii is not None:` | `->L3290` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | -| 3508 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3502` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | -| 3538 | `if feats is None:` | `->L3539` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | -| 3675 | `if (` | `->L3679` | | -| 3687 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3688` | | -| 3735 | `if len(trunks) < 2:` | `->L3736`, `->L3737` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | -| 3739 | `for grp in groups:` | `->L3740`, `->L3758` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | -| 3740 | `if len({id(t.route) for t in grp}) < 2:` | `->L3741`, `->L3742` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | -| 3742 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3743`, `->L3744` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | -| 3744 | `for sign in (1, -1):` | `->L3739`, `->L3745` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | -| 3747 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3748`, `->L3749` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | -| 3756 | `if best < cur:` | `->L3744`, `->L3757` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | -| 3826 | `if (` | `->L3831` | | -| 3888 | `band is not None` | `->L3893` | | -| 3889 | `and band.boundary is None` | `->L3890` | | -| 3890 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3892`, `->L3893` | | -| 3986 | `if band is not None:` | `->L3991` | | -| 4010 | `elif up_ok:` | `->L4013` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | -| 4015 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L4016` | | -| 4056 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4065` | | -| 4059 | `if reconcile_owned_corridor:` | `->L4065` | | -| 4066 | `if cross_below is not None and cross_above is not None:` | `->L4074` | | -| 4067 | `if reconcile_owned_corridor:` | `->L4073` | | -| 4081 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4082` | | -| 4085 | `elif above_ok:` | `->L4088` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | -| 4088 | `if reconcile_owned_corridor:` | `->L4089`, `->L4092` | | -| 4153 | `if (` | `->L4157` | | -| 4159 | `if changed:` | `->L4160` | | -| 4189 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4209` | | -| 4191 | `if target_y is None:` | `->L4192` | | -| 4194 | `if (` | `->L4205` | | -| 4213 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4215` | | -| 4328 | `if band is None:` | `->L4329` | | -| 4334 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4338` | | -| 4360 | `and crossed[0] < span[1]` | `->L4362` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4470 | `if i in relocated:` | `->L4471` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4489 | `if (` | `->L4494` | | -| 4511 | `if any(` | `->L4515` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4516 | `if any(` | `->L4522` | | -| 4548 | `if target is None:` | `->L4549` | | -| 4592 | `if sg[0].sign_x != t.sign_x:` | `->L4593` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4628 | `and base_in is not None` | `->L4642` | | -| 4629 | `and base_out is not None` | `->L4642` | | -| 4645 | `if rp.curve_radii is None:` | `->L4646` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4657 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4659` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4659 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4602` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4737 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4740` | | -| 4741 | `if leg_is_plan_stated(mover):` | `->L4742` | | -| 4744 | `for delta in (step, -step):` | `->L4711` | | -| 4746 | `if all(` | `->L4744` | | -| 4780 | `or len(upstream.points) < 2` | `->L4782` | | -| 4785 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4788` | | -| 4786 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4788` | | -| 4790 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4792` | | -| 4850 | `if down is None or len(up.points) < 2:` | `->L4851` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4904 | `if len(targets) != 1:` | `->L4905` | | -| 4914 | `if col is None:` | `->L4915` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 4955 | `if not 0 <= far < len(pts):` | `->L4956` | | -| 4958 | `if abs(dx) > COORD_TOLERANCE:` | `->L4952` | | -| 4960 | `if not votes:` | `->L4961` | | -| 5066 | `if rep_x[a] != rep_x[b]:` | `->L5068` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5096 | `if rp.curve_radii is None:` | `->L5097` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5099 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5100` | | -| 5123 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5073` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5153 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5155` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5208 | `elif right_ok:` | `->L5211` | | -| 5257 | `if s.bbox_w <= 0:` | `->L5258` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 5645 | `if not blockers:` | `->L5646` | | +| 1372 | `if not reference_fits(lower):` | `->L1373` | | +| 1438 | `go is not None` | `->L1444` | | +| 1439 | `and gt is not None` | `->L1444` | | +| 1476 | `if len(pts) < 2:` | `->L1477` | | +| 1492 | `if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:` | `->L1493` | | +| 1569 | `if slot is None or trunk is None or trunk[0] != k:` | `->L1570` | **needs-review** -- _reconcile_moved_trunk_slot's precondition guard: the re-banded leg is not the route's first interior horizontal run, or the route declared no trunk slot. The docstring states this as a real filter ('only the trunk the slot describes can retarget it'), and _bundle_divergent_distinct_traverses hands it every distinct-line traverse leg, so a non-trunk leg or a slotless route reaches it; all 3 corpus fixtures happen to pass. Reachable; wants a fixture. | +| 1589 | `if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):` | `->L1590` | | +| 1597 | `if None in convergence_plan_ids or len(convergence_plan_ids) != 1:` | `->L1598`, `->L1609` | | +| 1598 | `if ctx.validate_final_route_frames:` | `->L1599`, `->L1608` | | +| 1615 | `if _snap_reverses_adjacent_run(ch, ref_x):` | `->L1616` | | +| 1656 | `if channel is None:` | `->L1657` | | +| 1729 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1730` | | +| 1735 | `if ref is not None:` | `->L1736` | | +| 1806 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1807` | | +| 1810 | `if movable_channels:` | `->L1806`, `->L1811` | | +| 1848 | `if not downs or not ups:` | `->L1850` | | +| 1851 | `for descent in downs:` | `->L-1817`, `->L1852` | | +| 1853 | `if col in moved:` | `->L1854`, `->L1855` | | +| 1856 | `for up in ups:` | `->L1857`, `->L1866` | | +| 1857 | `if up.route.line_id != descent.route.line_id:` | `->L1858`, `->L1859` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | +| 1859 | `if abs(up.x - descent.x) > radius:` | `->L1860`, `->L1861` | | +| 1862 | `if overlap <= COORD_TOLERANCE:` | `->L1863`, `->L1864` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | +| 1866 | `if target_x is None:` | `->L1867`, `->L1868` | | +| 1869 | `for ch in downs:` | `->L1851`, `->L1870` | | +| 1870 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1869`, `->L1871` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | +| 1897 | `if k == desc.idx + 1:` | `->L1896` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | +| 1949 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1950` | | +| 1961 | `if any(` | `->L1971` | | +| 1991 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1995` | | +| 1992 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1995` | | +| 1993 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1995` | | +| 2012 | `if source_col is None:` | `->L2013` | | +| 2028 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L2029` | | +| 2045 | `if not sibling_xs:` | `->L2046` | | +| 2048 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2049` | | +| 2051 | `if _section_intrudes(` | `->L2058` | | +| 2183 | `for _ in range(max(1, len(buckets))):` | `->L-2129` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2201 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2203` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | +| 2206 | `for _step in range(64):` | `->L2207`, `->L2214` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | +| 2210 | `if resolved < common:` | `->L2211`, `->L2213` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | +| 2221 | `if not changed:` | `->L2183` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2259 | `if ch.route.convergence_plan_id is not None:` | `->L2260` | | +| 2269 | `if _planner_owns_channel(ch) and (` | `->L2272` | | +| 2343 | `if opposing_bundle is not None and {` | `->L2346` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | +| 2354 | `if any(` | `->L2364` | | +| 2471 | `if any(` | `->L2477` | | +| 2514 | `if has_immovable_planned_channel and any(` | `->L2519` | | +| 2574 | `if any(` | `->L2578` | | +| 2579 | `if not crossing:` | `->L2586` | | +| 2589 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2590`, `->L2594` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | +| 2594 | `for r, k, _y in crossing:` | `->L2551`, `->L2595` | | +| 2662 | `if ctx.convergences is None:` | `->L2663` | | +| 2670 | `or entry is None` | `->L2676` | | +| 2671 | `or port is None` | `->L2676` | | +| 2672 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2676` | | +| 2745 | `if rp.curve_radii is None:` | `->L2746` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | +| 2774 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2775` | | +| 2779 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2780` | | +| 2980 | `if route.curve_radii is None:` | `->L2981` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | +| 3127 | `if any(` | `->L3131` | | +| 3225 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3246` | | +| 3274 | `if not verticals:` | `->L3275` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | +| 3290 | `if rp.curve_radii is not None:` | `->L3292` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | +| 3510 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3504` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | +| 3540 | `if feats is None:` | `->L3541` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | +| 3677 | `if (` | `->L3681` | | +| 3689 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3690` | | +| 3737 | `if len(trunks) < 2:` | `->L3738`, `->L3739` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | +| 3741 | `for grp in groups:` | `->L3742`, `->L3760` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | +| 3742 | `if len({id(t.route) for t in grp}) < 2:` | `->L3743`, `->L3744` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | +| 3744 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3745`, `->L3746` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | +| 3746 | `for sign in (1, -1):` | `->L3741`, `->L3747` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | +| 3749 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3750`, `->L3751` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | +| 3758 | `if best < cur:` | `->L3746`, `->L3759` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | +| 3828 | `if (` | `->L3833` | | +| 3890 | `band is not None` | `->L3895` | | +| 3891 | `and band.boundary is None` | `->L3892` | | +| 3892 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3894`, `->L3895` | | +| 3988 | `if band is not None:` | `->L3993` | | +| 4012 | `elif up_ok:` | `->L4015` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | +| 4017 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L4018` | | +| 4058 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4067` | | +| 4061 | `if reconcile_owned_corridor:` | `->L4067` | | +| 4068 | `if cross_below is not None and cross_above is not None:` | `->L4076` | | +| 4069 | `if reconcile_owned_corridor:` | `->L4075` | | +| 4083 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4084` | | +| 4087 | `elif above_ok:` | `->L4090` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | +| 4090 | `if reconcile_owned_corridor:` | `->L4091`, `->L4094` | | +| 4155 | `if (` | `->L4159` | | +| 4161 | `if changed:` | `->L4162` | | +| 4191 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4211` | | +| 4193 | `if target_y is None:` | `->L4194` | | +| 4196 | `if (` | `->L4207` | | +| 4215 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4217` | | +| 4330 | `if band is None:` | `->L4331` | | +| 4336 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4340` | | +| 4362 | `and crossed[0] < span[1]` | `->L4364` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4472 | `if i in relocated:` | `->L4473` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4491 | `if (` | `->L4496` | | +| 4513 | `if any(` | `->L4517` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4518 | `if any(` | `->L4524` | | +| 4550 | `if target is None:` | `->L4551` | | +| 4594 | `if sg[0].sign_x != t.sign_x:` | `->L4595` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4630 | `and base_in is not None` | `->L4644` | | +| 4631 | `and base_out is not None` | `->L4644` | | +| 4647 | `if rp.curve_radii is None:` | `->L4648` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4659 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4661` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4661 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4604` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4739 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4742` | | +| 4743 | `if leg_is_plan_stated(mover):` | `->L4744` | | +| 4746 | `for delta in (step, -step):` | `->L4713` | | +| 4748 | `if all(` | `->L4746` | | +| 4782 | `or len(upstream.points) < 2` | `->L4784` | | +| 4787 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4790` | | +| 4788 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4790` | | +| 4792 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4794` | | +| 4852 | `if down is None or len(up.points) < 2:` | `->L4853` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4906 | `if len(targets) != 1:` | `->L4907` | | +| 4916 | `if col is None:` | `->L4917` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 4957 | `if not 0 <= far < len(pts):` | `->L4958` | | +| 4960 | `if abs(dx) > COORD_TOLERANCE:` | `->L4954` | | +| 4962 | `if not votes:` | `->L4963` | | +| 5068 | `if rep_x[a] != rep_x[b]:` | `->L5070` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5098 | `if rp.curve_radii is None:` | `->L5099` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5101 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5102` | | +| 5125 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5075` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5155 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5157` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5210 | `elif right_ok:` | `->L5213` | | +| 5259 | `if s.bbox_w <= 0:` | `->L5260` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 5647 | `if not blockers:` | `->L5648` | | ## `offsets.py` diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index a983f1bc3..3cb98bab0 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1193,7 +1193,9 @@ def _semantic_end_corner_cohorts( list[_SemanticEndCorner], ] = defaultdict(list) for route in routes: - if route.curve_radii is None or len(route.points) < 3: + # A route states one radius per turn; an unsettled mid-pipeline route + # can carry fewer, and its corners then have no radius to size. + if route.curve_radii is None or len(route.curve_radii) != len(route.points) - 2: continue points = apply_route_offsets(route, station_offsets) corners: list[tuple[int, Direction, Direction]] = [] From 01b698b1d029d50696040fc75287f92b2ddc3136 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:28:28 +0100 Subject: [PATCH 101/158] fix(ordering): keep an unbranched in-section chain on one track An unbranched run of stations reads as one straight track, so a station whose only incoming stroke comes from a predecessor that feeds nothing else inherits that predecessor's track. The divergence test compares line sets, which count lines that merely begin or end at a station, so a chain whose consecutive strokes name different lines staircased across per-line base tracks and opened vertical space no plan reserved. (cherry picked from commit b028715b152ea5ba118c288b0fb0730c6cbcba1b) --- src/nf_metro/layout/ordering.py | 20 +++++ tests/test_linear_chain_flat_track.py | 122 ++++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 tests/test_linear_chain_flat_track.py diff --git a/src/nf_metro/layout/ordering.py b/src/nf_metro/layout/ordering.py index cf8db226f..c8eb9fc39 100644 --- a/src/nf_metro/layout/ordering.py +++ b/src/nf_metro/layout/ordering.py @@ -353,6 +353,26 @@ def _place_single_node( if node in continuation_nodes: return pred_avg + # Sole-successor chain: every drawn stroke into this node comes from its + # single predecessor, and that predecessor feeds nothing else, so the two + # form one unbranched run that reads as a straight track. Lines that + # merely begin or end at either station add no incoming geometry, so a + # changed line set alone is no reason to hop tracks. Falls through when + # the predecessor's track is already taken at this layer. + sole_preds = list(G.predecessors(node)) + if ( + len(sole_preds) == 1 + and sole_preds[0] in tracks + and list(G.successors(sole_preds[0])) == [node] + and not _is_track_occupied_at_layer( + tracks[sole_preds[0]], + layers.get(node, 0) if layers else 0, + layer_occupancy if layer_occupancy is not None else {}, + node, + ) + ): + return tracks[sole_preds[0]] + # Detect divergence: predecessor has more lines than this node if graph is not None: preds = list(G.predecessors(node)) diff --git a/tests/test_linear_chain_flat_track.py b/tests/test_linear_chain_flat_track.py new file mode 100644 index 000000000..0366475e6 --- /dev/null +++ b/tests/test_linear_chain_flat_track.py @@ -0,0 +1,122 @@ +"""A linear chain inside a section rides one track. + +Consecutive stations joined by a sole-predecessor / sole-successor link have no +branching between them, so nothing displaces the second one off the first one's +track: in an LR/RL section they share a Y, in a TB/BT section an X. A chain +that steps between tracks reads as a staircase, and the space that step opens +is space no plan reserved. +""" + +from __future__ import annotations + +import warnings +from pathlib import Path + +import pytest + +from nf_metro.layout.engine import compute_layout +from nf_metro.parser.mermaid import parse_metro_mermaid +from nf_metro.parser.model import MetroGraph + +SEED_DIR = Path(__file__).parent / "fixtures" / "hash_seed_determinism" +TOPOLOGIES_DIR = Path(__file__).parent.parent / "examples" / "topologies" + +_HORIZONTAL = {"LR", "RL"} + + +def _laid_out(path: Path) -> MetroGraph: + graph = parse_metro_mermaid(path.read_text()) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + compute_layout(graph) + return graph + + +def _drawn_stations(graph: MetroGraph, section_id: str) -> set[str]: + return { + station.id + for station in graph.stations.values() + if station.section_id == section_id + and not station.is_port + and not station.off_track + and not station.id.startswith("__") + } + + +def _sole_links(graph: MetroGraph, members: set[str]) -> list[tuple[str, str]]: + """Sole-predecessor / sole-successor station pairs drawn inside one section. + + Both endpoints' full in/out degree is counted over the whole graph, so a + station that also feeds a section exit is not treated as unbranched. + """ + successors: dict[str, set[str]] = {member: set() for member in members} + predecessors: dict[str, set[str]] = {member: set() for member in members} + out_degree: dict[str, set[str]] = {member: set() for member in members} + in_degree: dict[str, set[str]] = {member: set() for member in members} + for edge in graph.edges: + if edge.source in members: + out_degree[edge.source].add(edge.target) + if edge.target in members: + in_degree[edge.target].add(edge.source) + if edge.source in members and edge.target in members: + successors[edge.source].add(edge.target) + predecessors[edge.target].add(edge.source) + return [ + (source, target) + for source, targets in successors.items() + for target in targets + if out_degree[source] == {target} + and in_degree[target] == {source} + and len(predecessors[target]) == 1 + ] + + +def _staircase_steps(graph: MetroGraph) -> list[str]: + steps: list[str] = [] + for section_id, section in graph.sections.items(): + members = _drawn_stations(graph, section_id) + if len(members) < 2: + continue + horizontal = (section.direction or "LR").upper() in _HORIZONTAL + for source, target in _sole_links(graph, members): + first = graph.stations[source] + second = graph.stations[target] + track = (first.y, second.y) if horizontal else (first.x, second.x) + if abs(track[0] - track[1]) > 0.5: + steps.append( + f"{section_id}: {source} and {target} are one unbranched chain " + f"but sit on tracks {track[0]} and {track[1]}" + ) + return steps + + +@pytest.mark.parametrize("seed", [15, 41, 72, 77]) +def test_seed_sections_hold_linear_chains_on_one_track(seed: int) -> None: + assert _staircase_steps(_laid_out(SEED_DIR / f"seed_{seed}.mmd")) == [] + + +_KNOWN_STEPPING = { + # `p1` merges a line arriving through the section's entry port with one + # arriving in-section, and is seated on the entry lane so that entry edge + # runs flat; the seating is never handed on to `p2`, so the chain steps. + # A different mechanism from the track assignment this module covers. + "compact_hidden_passthrough.mmd", +} + + +@pytest.mark.parametrize( + "fixture", + [ + pytest.param( + name, + marks=pytest.mark.xfail( + strict=True, reason="in-section merge seats on the entry lane alone" + ), + ) + if name in _KNOWN_STEPPING + else name + for name in sorted(path.name for path in TOPOLOGIES_DIR.glob("*.mmd")) + ], +) +def test_topology_sections_hold_linear_chains_on_one_track(fixture: str) -> None: + assert _staircase_steps(_laid_out(TOPOLOGIES_DIR / fixture)) == [] From 353cfc92ec974d2736af0165dffd4c70fe24a7d1 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:28:39 +0100 Subject: [PATCH 102/158] fix(routing): replay a planned opening drop at emission A merge feeder's opening turn is derived from live geometry, which other routes' seating moves between the plan's trial route and emission, so the emitted drop ends wherever that live trunk now sits rather than on the coordinate the plan froze. Seat the drop's endpoint on the plan's stated Y, and let an opening turn that reaches down to a moved run follow it even when the landing's own join sits on a flank. (cherry picked from commit 697dabf3f39dae41e86826960f106f5d74ad460e) --- src/nf_metro/layout/routing/convergences.py | 42 ++++++++++++++------- src/nf_metro/layout/routing/normalize.py | 40 +++++++++++++++----- 2 files changed, 60 insertions(+), 22 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 4653180fb..128b927b4 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2079,11 +2079,34 @@ def on_central(point: tuple[float, float]) -> bool: tolerance = OFFSET_STEP if preserve_lane_offsets else 0.0 return point_to_polyline_distance(point, central) <= tolerance + COORD_TOLERANCE + def lifted_opening( + opening_segment: tuple[tuple[float, float], tuple[float, float]] | None, + ) -> tuple[tuple[float, float], tuple[float, float]] | None: + if opening_segment is None: + return None + return ( + lifted(opening_segment[0]) + if abs(opening_segment[0][lateral] - old_coordinate) + <= (OFFSET_STEP if preserve_lane_offsets else 0.0) + COORD_TOLERANCE + else opening_segment[0], + lifted(opening_segment[1]) + if abs(opening_segment[1][lateral] - old_coordinate) + <= (OFFSET_STEP if preserve_lane_offsets else 0.0) + COORD_TOLERANCE + else opening_segment[1], + ) + landings: list[ConvergenceLanding] = [] moved_join_by_member: dict[EmissionMemberId, tuple[float, float]] = {} for landing in plan.landings: + # An opening turn that reaches down to the moved run follows it even + # when the landing's own join sits on a flank rather than the run. + opening_segment = lifted_opening(landing.opening_turn_segment) if not on_central(landing.join_point): - landings.append(landing) + landings.append( + landing + if opening_segment == landing.opening_turn_segment + else replace(landing, opening_turn_segment=opening_segment) + ) continue join_point = lifted(landing.join_point) approach_direction = landing.approach_direction @@ -2103,18 +2126,6 @@ def on_central(point: tuple[float, float]) -> bool: approach_direction = ( Direction.D if approach_delta > 0 else Direction.U ) - opening_segment = landing.opening_turn_segment - if opening_segment is not None: - opening_segment = ( - lifted(opening_segment[0]) - if abs(opening_segment[0][lateral] - old_coordinate) - <= (OFFSET_STEP if preserve_lane_offsets else 0.0) + COORD_TOLERANCE - else opening_segment[0], - lifted(opening_segment[1]) - if abs(opening_segment[1][lateral] - old_coordinate) - <= (OFFSET_STEP if preserve_lane_offsets else 0.0) + COORD_TOLERANCE - else opening_segment[1], - ) landings.append( replace( landing, @@ -7216,6 +7227,11 @@ def consume_convergence_route(route: RoutedPath, ctx: _RoutingCtx) -> None: # The trunk member's every run and both endpoints are stated by the # plan, and the seat below puts each on the coordinate it names. carry_tail=plan.primary_trunk_member_id != membership.member_id, + opening_end_y=( + landing.opening_turn_segment[1][1] + if landing.opening_turn_segment is not None + else None + ), ) opening = _opening_fanout_descent(route) if opening is None: diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 3cb98bab0..ad838510f 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -1642,6 +1642,7 @@ def _seat_merge_feeder_opening( *, planned: bool = False, carry_tail: bool = True, + opening_end_y: float | None = None, ) -> None: """Seat a merge feeder's opening turn on its planned shared axis. @@ -1649,6 +1650,13 @@ def _seat_merge_feeder_opening( keeps a route whose whole run hangs off that turn intact. A caller whose plan states the rest of the run independently passes ``False``: carrying the tail there would slide geometry the plan has already positioned. + + ``opening_end_y`` replays the plan's opening drop length: the emitted drop + ends on the plan's stated Y. A handler derives its trunk from live + geometry, which other routes' seating can move between the plan's trial + and this emission, and the plan's segment is the frozen truth. With + ``carry_tail`` the run past the drop translates along; without it only the + drop endpoint moves, since the plan states and seats the rest itself. """ channel = ( _opening_fanout_descent(route) if planned else _initial_fanout_descent(route) @@ -1656,17 +1664,31 @@ def _seat_merge_feeder_opening( if channel is None: return delta = coordinate - channel.x - if abs(delta) <= COORD_TOLERANCE: + if abs(delta) > COORD_TOLERANCE: + tail_start = channel.idx + 2 + _reconcile_moved_gap_slot(channel, coordinate, graph) + _set_vchannel_x(channel, coordinate) + if carry_tail: + route.points = [ + (x + delta, y) if rank >= tail_start else (x, y) + for rank, (x, y) in enumerate(route.points) + ] + if opening_end_y is None: return - tail_start = channel.idx + 2 - _reconcile_moved_gap_slot(channel, coordinate, graph) - _set_vchannel_x(channel, coordinate) - if not carry_tail: + end_idx = channel.idx + 1 + if end_idx >= len(route.points): return - route.points = [ - (x + delta, y) if rank >= tail_start else (x, y) - for rank, (x, y) in enumerate(route.points) - ] + y_delta = opening_end_y - route.points[end_idx][1] + if abs(y_delta) <= COORD_TOLERANCE: + return + if carry_tail: + route.points = [ + (x, y + y_delta) if rank >= end_idx else (x, y) + for rank, (x, y) in enumerate(route.points) + ] + else: + x_end, y_end = route.points[end_idx] + route.points[end_idx] = (x_end, y_end + y_delta) def _route_first_vertical(rp: RoutedPath) -> _VChannel | None: From a31d26fcfb08d3f9fa68e15dc10e15bc8ea6c760 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:28:47 +0100 Subject: [PATCH 103/158] fix(routing): state a convergence continuation's handover point A feeder whose trial route ends exactly where the continuation begins hands the stroke over there, so that is the point the plan states. The trunk-axis endpoint can sit beyond the junction when a member's own descent column lies outboard of it, and a start stated there disagrees with the stub the emission actually draws. (cherry picked from commit 7b3fee4e344932e5b2f20d839c9bb8e8f758edd1) --- src/nf_metro/layout/routing/convergences.py | 23 +++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 128b927b4..07fd24e25 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -1290,15 +1290,6 @@ def _build_planned_convergence( edge = ctx.edge_by_key[(edge_key.source, edge_key.target, edge_key.line_id)] continuation_route = _trial_route(edge, ctx) trial_routes[edge_key] = continuation_route - start_point = ( - _axis_source_point(trunk_axis) - if primary_reason - in { - ConvergenceTrunkReason.OUTGOING_CONTINUATION, - ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH, - } - else _axis_target_point(trunk_axis) - ) end_point = continuation_route.points[-1] hop_start_point = continuation_route.points[0] feeder_at_start = any( @@ -1310,6 +1301,20 @@ def _build_planned_convergence( ) for item in incoming_edges ) + # A feeder that ends exactly where the continuation begins hands the + # stroke over there, so the plan states that handover point; the axis + # endpoint can sit beyond the junction when a member's own descent + # column lies outboard of it, and a start stated there would disagree + # with the emitted stub. + if primary_reason in { + ConvergenceTrunkReason.OUTGOING_CONTINUATION, + ConvergenceTrunkReason.SHARED_TERMINAL_APPROACH, + }: + start_point = ( + hop_start_point if feeder_at_start else _axis_source_point(trunk_axis) + ) + else: + start_point = _axis_target_point(trunk_axis) endpoint_carriers = tuple( item for item in incoming_edges From 37efb52d016d558c9a5598011c94369fae89670a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:28:56 +0100 Subject: [PATCH 104/158] fix(routing): compare trunk corridors by carrier, over plan flanks too One route system can hold several convergences, so filtering neighbours by system identity hid two distinct-line trunks of one system from each other and let them fuse at zero separation. Carrier identity names the run itself. A trunk is one chain of lead, flank, central run, flank, lead, and its flank runs carry the member on lanes of their own, so the separation has to see them alongside the central run. (cherry picked from commit c8d259264b3245c633dfad9f6ef3a8f6a25a0c8d) --- src/nf_metro/layout/routing/convergences.py | 59 ++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 07fd24e25..814c3133d 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2495,6 +2495,57 @@ def _trunk_corridor_run( ) +def _plan_flank_corridor_runs( + plan: ConvergencePlan, graph: MetroGraph +) -> tuple[_CotravellingRun, ...]: + """The horizontal flank runs *plan*'s trunk states either side of its lane. + + A trunk is one chain -- lead, flank, central run, flank, lead -- and the + flank runs carry the trunk member on lanes of their own + (``source_flank_coordinate`` / ``target_flank_coordinate``). They are plan + statements exactly like the central run, so the distinct-line separation + has to see them: a neighbouring plan's central lane can otherwise settle + onto a flank lane it never compared itself against. + """ + axis = plan.trunk_axis + if axis is None or axis.axis is not DemandAxis.X: + return () + segments = _trunk_segments(axis) + runs: list[_CotravellingRun] = [] + for source_side, (riser, flank) in ( + (True, (segments[1], segments[2])), + (False, (segments[3], segments[4])), + ): + (start_x, start_y), (end_x, end_y) = flank + if abs(start_y - end_y) > COORD_TOLERANCE: + continue + if abs(start_x - end_x) <= COORD_TOLERANCE: + continue + # A flank segment is stored riser-first; the member TRAVELS the source + # flank from its endpoint toward the riser, and the target flank the + # other way round. + travel = (flank[1], flank[0]) if source_side else (flank[0], flank[1]) + runs.append( + _CotravellingRun( + plan.system_id, + start_y, + min(start_x, end_x), + max(start_x, end_x), + _direction(*travel), + frozenset(plan.line_ids), + frozenset( + ( + *(landing.source_junction_id for landing in plan.landings), + *plan.target_entry_port_ids, + ) + ), + inter_row_gap_upper_row(graph, start_y), + (riser, flank, flank), + ) + ) + return tuple(runs) + + def _member_corridor_runs( plans: tuple[ConvergencePlan, ...], member_geometry: MemberGeometryExecution, @@ -2644,14 +2695,20 @@ def _separate_distinct_cotravelling_trunks( step = graph_offset_step(graph) settled = list(plans) seated = list(member_runs) + for plan in settled: + seated.extend(_plan_flank_corridor_runs(plan, graph)) for plan_rank, plan in enumerate(settled): run = _trunk_corridor_run(plan, graph) if run is None: continue + # Carrier identity, not system identity: one route system can hold + # several convergences, and two distinct-line trunks fuse just as + # readily inside one system. A plan's own runs share its carriers and + # are never their own neighbours. neighbours = tuple( item for item in seated - if item.system_id != plan.system_id + if item.carrier_ids != run.carrier_ids and item.direction is run.direction and item.line_ids != run.line_ids and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) From 0349ed2ad2d97204a0a7d161186b69b50d885b97 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:48:56 +0100 Subject: [PATCH 105/158] fix(routing): keep a destination-tail band off an occupied corridor lane The eager same-port band reorders the corridor for its own members, so a target track can name a lane another line already travels there. Seating on it draws the two lines as one stroke and undoes the separation the corridor fan spent tracks on, so a band that would land on a foreign distinct-line trunk is not taken. (cherry picked from commit c40350bf9a5e85f050b168cfb69285630b185371) --- src/nf_metro/layout/routing/common.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index 0d9870257..8a46149a0 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -1364,6 +1364,22 @@ def iter_eligible_destination_tail_bundles( base = pinned_bases[0] if pinned_bases else min(t.y for t in trunks.values()) targets = {line_id: base + rank * step for rank, line_id in enumerate(order)} + # The band is this bundle's own reordering of the corridor, so a target + # track can name a lane another line already holds there. Seating on it + # would draw the two lines as one stroke, which the corridor fan the + # members arrive on has already spent tracks avoiding; leave them on it. + if any( + id(sibling.route) not in group_routes + and sibling.route.line_id != trunk.route.line_id + and sibling.sign_x == trunk.sign_x + and abs(sibling.y - targets[trunk.route.line_id]) < step - COORD_TOLERANCE + and min(sibling.x_hi, trunk.x_hi) - max(sibling.x_lo, trunk.x_lo) + > COORD_TOLERANCE + for trunk in trunks.values() + for sibling in all_trunks + ): + continue + clear = True for route, _tail in bundle.entries: trunk = trunks[route.line_id] From 058a54c42c4db85ac8e0c37d023ee9ed645b636d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:49:11 +0100 Subject: [PATCH 106/158] fix(offsets): re-slot a station's own line off a carried bundle's lane A station downstream of a port re-slot can carry a line the bundle does not, holding whatever slot it had before the re-slot. The carry wrote over it, leaving two lines of one station on one lane; the line outside the carried order now moves to the nearest slot on the station's pitch that nothing holds. (cherry picked from commit 31a6e297a71245f13f1668a7ed506b419467ab54) --- src/nf_metro/layout/routing/offsets.py | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index f4fbb7e7f..ff24bb5f8 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -2936,6 +2936,49 @@ def _allocate_merge_ports_by_approach(ctx: _OffsetCtx) -> None: _apply_offsets_along_bundle(ctx, port_id, sec_id, new_offs) +def _clear_carried_slot_collisions( + ctx: _OffsetCtx, station_id: str, carried: dict[str, float] +) -> None: + """Re-slot a station's own lines off the slots a carried bundle just took. + + A station downstream of a re-slot may carry a line the bundle does not, and + that line holds whatever slot it was given before the re-slot. When the + carry lands on it the two lines draw as one stroke, so the line that is not + part of the carried order moves to the nearest slot on the station's own + pitch that nothing holds, on the side it already sits. + """ + step = ctx.offset_step + taken = { + lid: ctx.offsets.get((station_id, lid), 0.0) + for lid in ctx.graph.station_lines(station_id) + } + for lid, value in sorted(taken.items(), key=lambda item: item[1]): + if lid in carried: + continue + if not any( + other != lid and abs(taken[other] - value) <= _OFFSET_EQ_TOLERANCE + for other in taken + if other in carried + ): + continue + occupied = [other_value for other, other_value in taken.items() if other != lid] + free = next( + ( + candidate + for distance in range(1, len(taken) + 2) + for candidate in (value + distance * step, value - distance * step) + if not any( + abs(candidate - held) <= _OFFSET_EQ_TOLERANCE for held in occupied + ) + ), + None, + ) + if free is None: + continue + taken[lid] = free + ctx.offsets[(station_id, lid)] = free + + def _apply_offsets_along_bundle( ctx: _OffsetCtx, start_id: str, @@ -2987,6 +3030,7 @@ def _apply_offsets_along_bundle( for lid in graph.station_lines(tgt_id): if lid in new_offs: ctx.offsets[(tgt_id, lid)] = new_offs[lid] + _clear_carried_slot_collisions(ctx, tgt_id, new_offs) queue.append(tgt_id) From fe8a4e1c554bbdfe9eb81d9f38b899a4fc30d74f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Aug 2026 23:58:51 +0100 Subject: [PATCH 107/158] fix(reservations): hold a canvas corridor off the content it runs beside A canvas-margin corridor publishes no band, so the trunk stacking derives its depth from section edges alone and can seat the bundle inside the clearance the reservation owes the boxes beside it -- a deficit only the closing guard sees, once the canvas exists. The content edge is live geometry and readable at any point, so the corridor now publishes a band open toward the canvas, stating how far off the content it must stay and leaving the canvas edge to the sizing that follows. (cherry picked from commit c8618c1aef15951f6f737027a71ca34c66f7b279) --- src/nf_metro/layout/route_reservations.py | 31 +++++++++++++++++++ src/nf_metro/layout/routing/reserved_bands.py | 31 ++++++++++++++----- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index 60d49fccf..25b1b8cc5 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -2577,6 +2577,37 @@ def _canvas_region_measurement( ) +def canvas_content_band( + graph: MetroGraph, + reservation: RouteReservation, + coordinate_translations: tuple[ReservationCoordinateTranslation, ...] = (), +) -> tuple[float, float] | None: + """The span a canvas corridor's bundle may occupy on its content side. + + A canvas corridor is bounded by content on one side and the canvas edge on + the other. The content edge is live geometry and readable at any point; + the canvas edge is sized from the content it ends up holding, so it is not. + The half-band this returns is therefore open toward the canvas: it says how + far the corridor must stay off the boxes it runs beside, and leaves growing + the canvas to the sizing that follows. ``None`` for a non-canvas region. + """ + region = reservation.region + if not isinstance(region, CanvasRegion): + return None + projected = _projected_claim_bounds(reservation, coordinate_translations) + measurement = _canvas_region_measurement( + graph, + region, + projected.longitudinal_start, + projected.longitudinal_end, + math.inf, + math.inf, + ) + if region.side in CANVAS_EDGE_ON_NEGATIVE_SIDE: + return (-math.inf, measurement.end - reservation.positive_side_clearance) + return (measurement.start + reservation.negative_side_clearance, math.inf) + + @dataclass(frozen=True, slots=True) class _ProjectedClaimBounds: allocation_axis: DemandAxis diff --git a/src/nf_metro/layout/routing/reserved_bands.py b/src/nf_metro/layout/routing/reserved_bands.py index 7572c65d2..131e75515 100644 --- a/src/nf_metro/layout/routing/reserved_bands.py +++ b/src/nf_metro/layout/routing/reserved_bands.py @@ -393,23 +393,32 @@ def _measured_gap_bands( """Every gap reservation in *plan* with the band it leaves clear. A band is the corridor region inset by each side's clearance, which is what - a channel placed there may occupy. Canvas corridors are excluded: their - region is a margin against the canvas edge rather than a boundary a channel - is allocated within. + a channel placed there may occupy. A canvas corridor is bounded on one + side by content and on the other by the canvas edge; once the canvas has + been sized both edges are known, so its clearance reads the same way and a + bundle in it can be held off the content it runs beside. Until then the + region does not realise, and the corridor publishes no band. """ from nf_metro.layout.route_reservations import ( + CanvasRegion, ColumnGapRegion, RowGapRegion, + canvas_content_band, realise_reservation, ) for reservation in plan.reservations: - if not isinstance(reservation.region, RowGapRegion | ColumnGapRegion): + if not isinstance( + reservation.region, RowGapRegion | ColumnGapRegion | CanvasRegion + ): continue realised = realise_reservation( graph, reservation, coordinate_translations=translations ) if realised is None: + content_band = canvas_content_band(graph, reservation, translations) + if content_band is not None: + yield (reservation, *content_band) continue yield ( reservation, @@ -565,14 +574,22 @@ def terminal_landing_band( column_by_edge: dict[EdgeKey, dict[tuple[int, int], tuple[float, float]]] = {} for reservation, lo, hi in measured: is_row = isinstance(reservation.region, RowGapRegion) + is_column = isinstance(reservation.region, ColumnGapRegion) allocation_axis = DemandAxis.Y if is_row else DemandAxis.X - band_key = (round(lo / COORD_TOLERANCE), round(hi / COORD_TOLERANCE)) + band_key = ( + (round(lo / COORD_TOLERANCE), round(hi / COORD_TOLERANCE)) + if is_row or is_column + else (0, 0) + ) for claim in reservation.claims: claim_lo, claim_hi = terminal_landing_band(reservation, claim, lo, hi) edge = edge_by_member[claim.member_id] edge_key = (edge.source, edge.target, edge.line_id) - bands_by_edge = row_by_edge if is_row else column_by_edge - bands_by_edge.setdefault(edge_key, {}).setdefault(band_key, (lo, hi)) + # The per-edge views answer "which grid boundary does this edge's + # corridor cross", which a canvas margin crosses none of. + if is_row or is_column: + bands_by_edge = row_by_edge if is_row else column_by_edge + bands_by_edge.setdefault(edge_key, {}).setdefault(band_key, (lo, hi)) allocation = ( project_reservation_coordinate( claim.allocation_coordinate, From f937b6656f33df4a1af87dc24c9be9c2dc6eb780 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 00:27:07 +0100 Subject: [PATCH 108/158] test(routing): refresh gate coverage for the corridor and lane fixes (cherry picked from commit cddd343bd13e0c2cbad0ced8a81aa107ee8c1b44) --- docs/dev/routing_gate_coverage.md | 795 +++++++++--------- .../data/routing_gate_coverage_baseline.json | 89 +- tests/data/routing_gate_triage.json | 62 +- 3 files changed, 470 insertions(+), 476 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 693fcd7dd..55dac785c 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2387/3436** gates fully exercised (both/all arms hit by some fixture); **1049** gates have at least one un-exercised arm. +**2389/3457** gates fully exercised (both/all arms hit by some fixture); **1068** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **298** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **288** gaps carry a triage verdict. ## `arranger.py` @@ -48,7 +48,7 @@ Gates with an un-exercised arm: ## `common.py` -152/196 gates fully exercised. +155/197 gates fully exercised. Gates with an un-exercised arm: @@ -64,40 +64,38 @@ Gates with an un-exercised arm: | 1020 | `if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:` | `->L1021` | **defensive** -- Trunk-not-horizontal guard in port_peeloff_tail, reached only after the earlier port-lead and riser checks returned early. In an orthogonal route segments alternate H/V, so the segment preceding a vertical riser is always horizontal; instrumenting the corpus the guard is reached but the non-horizontal-trunk arm never fires. Defensive against a degenerate collinear tail the router does not produce. | | 1112 | `if len({round(value, 6) for value in port_ys}) != n:` | `->L1113` | **defensive** -- A complete entry port assigns every distinct line a unique station-offset slot. Duplicate port-Y values therefore require a malformed route set that bypassed station offset allocation; test_invalid_opposing_candidate_is_rejected[duplicate-port-slot] exercises the rejection directly. | | 1114 | `if port_ys[-1] - port_ys[0] > (n - 1) * step + COORD_TOLERANCE:` | `->L1115` | **defensive** -- Station offset allocation gives a complete n-line entry port one contiguous n-slot band, so its port-Y extent is exactly bounded by (n-1)*step. The wider-band reject is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-port-band]. | -| 1117 | `if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:` | `->L1118` | **defensive** -- A complete destination bundle receives one contiguous n-slot channel band from gap materialization, so its peel-X extent cannot exceed (n-1)*step. The wider-band arm protects hand-built or corrupted route geometry and is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-channel-band]. | | 1121 | `if shared_hi - shared_lo < min_common_approach - COORD_TOLERANCE:` | `->L1122` | **defensive** -- Inter-row placement reserves at least the two-corner runway used by side-port peel-off handlers, so complete opposing entry tails share at least min_common_approach vertically. A shorter overlap is malformed settled geometry; test_invalid_opposing_candidate_is_rejected[insufficient-common-approach] exercises the guard. | -| 1238 | `if trunk_ys[-1] - trunk_ys[0] <= COORD_TOLERANCE:` | `->L1239` | **needs-review** -- Degenerate single-Y trunk band in iter_port_peeloff_bundles: a peel-off bundle is yielded only when its members ride trunks at distinct depths, so the equal-depth arm guards a same-Y bundle the trunk-slot materialization never leaves; render-diff confirms no visual change. | | 1360 | `if pinned_bases and any(` | `->L1363` | | -| 1373 | `if k == 0 or k + 2 >= len(points):` | `->L1374` | | -| 1505 | `port is None` | `->L1510` | | -| 1506 | `or entry is None` | `->L1510` | | -| 1507 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L1510` | | -| 1508 | `or abs(entry.y - tgt.y) > COORD_TOLERANCE` | `->L1510` | | -| 1593 | `elif tgt_sec:` | `->L1601` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1704 | `if st is not None and st.is_port:` | `->L1702` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | -| 1753 | `if sec.bbox_w <= 0:` | `->L1754` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | -| 1801 | `if sec.bbox_w <= 0:` | `->L1802` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | -| 1835 | `if not src.is_port:` | `->L1833` | | -| 1851 | `for i in range(len(pts) - 1):` | `->L1852`, `->L1868` | **defensive** -- point_on_polyline is used only by the --animate renderer (render/animate.py); the matrix's render-path coverage sweep calls render_svg without animation, so none of its branches are reached. Exercised instead by test_animation.py / test_routing.py. | -| 1856 | `if seg_len2 == 0:` | `->L1857`, `->L1860` | **defensive** -- point_on_polyline degenerate-segment branch, reached only via the --animate renderer (render/animate.py); the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py, not the corpus. | -| 1857 | `if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:` | `->L1858`, `->L1859` | **defensive** -- point_on_polyline zero-length-segment hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1861 | `if t < -0.01 or t > 1.01:` | `->L1862`, `->L1863` | **defensive** -- point_on_polyline parameter-range branch, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1866 | `if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:` | `->L1851`, `->L1867` | **defensive** -- point_on_polyline projection hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1961 | `if all_in_range:` | `->L1965` | **defensive** -- cross_row bypass guard: the False arm (no sections in the column range -> return clearance) needs an empty [lo,hi] column span, which a valid multi-section pipeline routing cross_row never has; a degenerate-range guard. | -| 1988 | `if endpoints:` | `->L1991` | **defensive** -- Non-cross_row bypass guard: the endpoints list always includes the source and target sections (both in src_row), so it is never empty; the default-clearance arm only guards a degenerate empty endpoint set. | -| 2001 | `if src_row is not None:` | `->L2013` | **defensive** -- Header-clamp guard: the False arm (src_row is None) needs an unresolvable source section, but inter-section bypass sources always resolve to a grid row after layout; a guard against an unresolved source that doesn't occur. | -| 2008 | `if safe_cap >= row_bottom:` | `->L2011` | **defensive** -- The false arm is a defensive midpoint fallback for an inter-row gap too narrow to clear both an upper-row bypass and the lower section header. Placement reserves the routing band before bypass geometry is computed, so settled corpus layouts provide enough clearance for the safe-cap arm. | -| 2107 | `if section.bbox_w <= 0:` | `->L2108` | **defensive** -- Degenerate-bbox guard in _h_segment_penetrates_section (the single-section predicate shared by _h_segment_crosses_other_section and _packed_cell_mate_obstructs): sections always have positive width after layout. | -| 2133 | `if station is None:` | `->L2134` | **defensive** -- None-station guard: every production caller passes a concrete Station (grep-verified); the None arm only guards the typed Station\|None parameter. | -| 2139 | `for port in junction_source_ports(graph, station.id):` | `->L2158` | **defensive** -- Upstream loop-exit in resolve_section: every fan-out junction is emitted with an exit_port->junction edge whose source port carries a section id, so junction_source_ports always yields a sectioned port and the loop returns; the fall-through to the type-contract return None is the never-taken no-upstream fallback. | -| 2141 | `if sec:` | `->L2139` | **defensive** -- Upstream section-lookup guard: graph.sections.get(section_id) returning None requires a section_id absent from graph.sections, a corrupted state no valid parse produces; null-guard. | -| 2147 | `for e in graph.edges:` | `->L2158` | **defensive** -- No-preference graph.edges scan loop-exit: a fan-out junction always has a sectioned incident port (its exit/entry ports carry a section_id), so the loop always returns and never exhausts graph.edges; the fall-through to the type-contract return None is the never-taken no-neighbour fallback. | -| 2148 | `if e.source == station.id:` | `->L2149` | **defensive** -- Junction-as-source arm of the no-preference scan: fan-out junctions are emitted exit_port->junction before junction->entry_port, so graph.edges encounters the junction as a target (elif arm) first and returns; the source arm is a cheap structural guard whose deadness rests on emit order, not a hard type invariant. | -| 2154 | `if other.section_id:` | `->L2147` | **defensive** -- The prefer_upstream=False scan reads a junction's incident neighbour on either side, always a sectioned station or port; the section-less (False) arm only guards a junction-to-junction edge valid construction never produces. | -| 2156 | `if sec:` | `->L2147` | **defensive** -- prefer_upstream=False section-lookup guard: graph.sections.get(section_id) returning None requires a missing section_id (corrupted state); null-guard. | -| 2166 | `if section is None:` | `->L2167` | **defensive** -- resolve_section_colrow accepts a station whose owning section may not resolve. Production routing passes resolved ports or junctions with an incident sectioned port, so the None return only protects a malformed or incomplete graph. | -| 2209 | `if reserved is None or abs(src_row - tgt_row) != 1:` | `->L2210` | | -| 2265 | `if dy > 0:` | `->L2270` | **defensive** -- Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code. | +| 1389 | `if k == 0 or k + 2 >= len(points):` | `->L1390` | | +| 1521 | `port is None` | `->L1526` | | +| 1522 | `or entry is None` | `->L1526` | | +| 1523 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L1526` | | +| 1524 | `or abs(entry.y - tgt.y) > COORD_TOLERANCE` | `->L1526` | | +| 1609 | `elif tgt_sec:` | `->L1617` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1720 | `if st is not None and st.is_port:` | `->L1718` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | +| 1769 | `if sec.bbox_w <= 0:` | `->L1770` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | +| 1817 | `if sec.bbox_w <= 0:` | `->L1818` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | +| 1851 | `if not src.is_port:` | `->L1849` | | +| 1867 | `for i in range(len(pts) - 1):` | `->L1868`, `->L1884` | **defensive** -- point_on_polyline is used only by the --animate renderer (render/animate.py); the matrix's render-path coverage sweep calls render_svg without animation, so none of its branches are reached. Exercised instead by test_animation.py / test_routing.py. | +| 1872 | `if seg_len2 == 0:` | `->L1873`, `->L1876` | **defensive** -- point_on_polyline degenerate-segment branch, reached only via the --animate renderer (render/animate.py); the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py, not the corpus. | +| 1873 | `if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:` | `->L1874`, `->L1875` | **defensive** -- point_on_polyline zero-length-segment hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1877 | `if t < -0.01 or t > 1.01:` | `->L1878`, `->L1879` | **defensive** -- point_on_polyline parameter-range branch, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1882 | `if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:` | `->L1867`, `->L1883` | **defensive** -- point_on_polyline projection hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1977 | `if all_in_range:` | `->L1981` | **defensive** -- cross_row bypass guard: the False arm (no sections in the column range -> return clearance) needs an empty [lo,hi] column span, which a valid multi-section pipeline routing cross_row never has; a degenerate-range guard. | +| 2004 | `if endpoints:` | `->L2007` | **defensive** -- Non-cross_row bypass guard: the endpoints list always includes the source and target sections (both in src_row), so it is never empty; the default-clearance arm only guards a degenerate empty endpoint set. | +| 2017 | `if src_row is not None:` | `->L2029` | **defensive** -- Header-clamp guard: the False arm (src_row is None) needs an unresolvable source section, but inter-section bypass sources always resolve to a grid row after layout; a guard against an unresolved source that doesn't occur. | +| 2024 | `if safe_cap >= row_bottom:` | `->L2027` | **defensive** -- The false arm is a defensive midpoint fallback for an inter-row gap too narrow to clear both an upper-row bypass and the lower section header. Placement reserves the routing band before bypass geometry is computed, so settled corpus layouts provide enough clearance for the safe-cap arm. | +| 2123 | `if section.bbox_w <= 0:` | `->L2124` | **defensive** -- Degenerate-bbox guard in _h_segment_penetrates_section (the single-section predicate shared by _h_segment_crosses_other_section and _packed_cell_mate_obstructs): sections always have positive width after layout. | +| 2149 | `if station is None:` | `->L2150` | **defensive** -- None-station guard: every production caller passes a concrete Station (grep-verified); the None arm only guards the typed Station\|None parameter. | +| 2155 | `for port in junction_source_ports(graph, station.id):` | `->L2174` | **defensive** -- Upstream loop-exit in resolve_section: every fan-out junction is emitted with an exit_port->junction edge whose source port carries a section id, so junction_source_ports always yields a sectioned port and the loop returns; the fall-through to the type-contract return None is the never-taken no-upstream fallback. | +| 2157 | `if sec:` | `->L2155` | **defensive** -- Upstream section-lookup guard: graph.sections.get(section_id) returning None requires a section_id absent from graph.sections, a corrupted state no valid parse produces; null-guard. | +| 2163 | `for e in graph.edges:` | `->L2174` | **defensive** -- No-preference graph.edges scan loop-exit: a fan-out junction always has a sectioned incident port (its exit/entry ports carry a section_id), so the loop always returns and never exhausts graph.edges; the fall-through to the type-contract return None is the never-taken no-neighbour fallback. | +| 2164 | `if e.source == station.id:` | `->L2165` | **defensive** -- Junction-as-source arm of the no-preference scan: fan-out junctions are emitted exit_port->junction before junction->entry_port, so graph.edges encounters the junction as a target (elif arm) first and returns; the source arm is a cheap structural guard whose deadness rests on emit order, not a hard type invariant. | +| 2170 | `if other.section_id:` | `->L2163` | **defensive** -- The prefer_upstream=False scan reads a junction's incident neighbour on either side, always a sectioned station or port; the section-less (False) arm only guards a junction-to-junction edge valid construction never produces. | +| 2172 | `if sec:` | `->L2163` | **defensive** -- prefer_upstream=False section-lookup guard: graph.sections.get(section_id) returning None requires a missing section_id (corrupted state); null-guard. | +| 2182 | `if section is None:` | `->L2183` | **defensive** -- resolve_section_colrow accepts a station whose owning section may not resolve. Production routing passes resolved ports or junctions with an incident sectioned port, so the None return only protects a malformed or incomplete graph. | +| 2225 | `if reserved is None or abs(src_row - tgt_row) != 1:` | `->L2226` | | +| 2281 | `if dy > 0:` | `->L2286` | **defensive** -- Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code. | ## `context.py` @@ -138,7 +136,7 @@ Gates with an un-exercised arm: ## `convergences.py` -366/607 gates fully exercised. +363/615 gates fully exercised. Gates with an un-exercised arm: @@ -162,17 +160,20 @@ Gates with an un-exercised arm: | 486 | `and port.side in (PortSide.LEFT, PortSide.RIGHT)` | `->L496` | | | 488 | `and abs(target[0] - entry.x) <= COORD_TOLERANCE` | `->L496` | | | 489 | `and abs(endpoint[1] - target[1]) > COORD_TOLERANCE` | `->L496` | | -| 499 | `if horizontal and abs(endpoint[1] - target[1]) <= COORD_TOLERANCE:` | `->L502` | | -| 502 | `if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE:` | `->L503`, `->L505` | | +| 502 | `if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE:` | `->L505` | | | 506 | `if elbow != endpoint and elbow != target:` | `->L507`, `->L508` | | | 552 | `if opening_rank is None:` | `->L553` | | | 555 | `if route.curve_radii is not None:` | `->L559` | | -| 579 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L580` | | +| 572 | `not landing.bypass` | `->L573`, `->L576` | | +| 573 | `or opening is None` | `->L574`, `->L576` | | +| 574 | `or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L576`, `->L577` | | +| 579 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L580`, `->L581` | | | 589 | `if landing.opening_turn_segment is None or not landing.bypass:` | `->L590` | | | 593 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L594` | | | 610 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L611` | | -| 621 | `outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE` | `->L624` | | -| 622 | `or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L624` | | +| 614 | `if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:` | `->L620` | | +| 621 | `outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE` | `->L622`, `->L624` | | +| 622 | `or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L624`, `->L625` | | | 650 | `for rank, (start, end) in enumerate(zip(points, points[1:])):` | `->L666` | | | 653 | `runway <= COORD_TOLERANCE` | `->L656` | | | 661 | `if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:` | `->L665` | | @@ -197,194 +198,202 @@ Gates with an un-exercised arm: | 1147 | `if route is not None:` | `->L1151` | | | 1151 | `if route is None:` | `->L1152` | | | 1168 | `if any(` | `->L1172` | | -| 1186 | `if (` | `->L1191` | **defensive** -- A landing enters `ordered` only because _landing_cross_segment admitted it, and laning moves that run rather than removing it, so the read that names the landing as a resident always finds a segment. The gate guards the Optional that read returns. | +| 1186 | `if (` | `->L1191` | | | 1191 | `for edge_key in incoming_edges:` | `->L1192`, `->L1195` | | -| 1366 | `if (` | `->L1378` | | -| 1409 | `if continuation.covered_by_member_id is not None:` | `->L1410` | | -| 1518 | `if topology is None:` | `->L1519` | | -| 1606 | `if plan.trunk_axis is None:` | `->L1607` | **defensive** -- _turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one. | -| 1636 | `if _points_coincide(*segment):` | `->L1637` | | -| 1661 | `if (` | `->L1669` | | -| 1699 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1700` | | -| 1715 | `if abs(source_x - opening_x) > COORD_TOLERANCE:` | `->L1782` | | -| 1749 | `if uses_exit_handedness:` | `->L1750` | | -| 1773 | `if not uses_exit_handedness and (` | `->L1782` | | -| 1778 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1782` | | -| 1886 | `if opening_follows_flank:` | `->L1887` | | -| 1958 | `if landing.opening_turn_segment is None:` | `->L1959` | | -| 1965 | `if not carry_join:` | `->L1966` | | -| 2002 | `landing.approach_axis is DemandAxis.X` | `->L2006` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | -| 2003 | `and landing.opening_turn_segment is not None` | `->L2006` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | -| 2008 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L2009`, `->L2010` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | -| 2029 | `if reseated is None:` | `->L2030` | | -| 2035 | `if not moved:` | `->L2036` | | -| 2097 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2106` | | -| 2107 | `if opening_segment is not None:` | `->L2118` | | -| 2158 | `axis is None` | `->L2161` | | -| 2203 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2204` | | -| 2210 | `if actual is None:` | `->L2211` | | -| 2460 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2461` | | -| 2503 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2505` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | -| 2545 | `if run is None:` | `->L2546` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2576 | `if require_clear_segments:` | `->L2602` | | -| 2633 | `if run is None:` | `->L2634` | | -| 2648 | `if obstacles:` | `->L2649` | | -| 2676 | `if run is None:` | `->L2677` | | -| 2723 | `if axis is None:` | `->L2724` | | -| 2765 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2766` | | -| 2775 | `if primary is None:` | `->L2776` | | -| 2788 | `or landing.opening_turn_segment is None` | `->L2790` | | -| 2801 | `if reseated is not None:` | `->L2784` | | -| 2841 | `if (` | `->L2847` | | -| 2849 | `for plan_rank, landing_rank in members:` | `->L2830`, `->L2850` | | -| 2852 | `if reseated is None:` | `->L2853`, `->L2854` | | -| 2871 | `if len(channel.line_ids) != 1:` | `->L2872` | | -| 2896 | `if (` | `->L2900` | | -| 2902 | `if endpoint is None:` | `->L2903` | | -| 2908 | `channel.flank_rank is not None` | `->L2913` | | -| 2913 | `if any(` | `->L2918` | | -| 2922 | `if moved is None:` | `->L2923` | | -| 2937 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2938` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2963 | `if (` | `->L2971` | | -| 2977 | `if reseated is None:` | `->L2978`, `->L2979` | | -| 2983 | `if abs(reseated_opening - source.x) >= (` | `->L2959`, `->L2988` | | -| 2988 | `if (` | `->L2993`, `->L2997` | | -| 3122 | `if reseated is None:` | `->L3123` | | -| 3144 | `if moved_channels and all(` | `->L3067` | | -| 3200 | `if bypass_segment is None:` | `->L3201` | | -| 3217 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3218` | | -| 3224 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3225` | | -| 3232 | `if moved is None:` | `->L3233` | | -| 3254 | `if bypass_segment is None:` | `->L3255` | | -| 3304 | `for coordinate in candidates:` | `->L3278` | | -| 3305 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3306` | | -| 3313 | `if moved is None:` | `->L3314` | | -| 3321 | `if not moved_channels or any(` | `->L3328` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3333 | `if (` | `->L3337` | | -| 3398 | `obstacle_segment is None` | `->L3403` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 3399 | `or landing_segment is None` | `->L3403` | | -| 3414 | `if reseated is None:` | `->L3415` | | -| 3420 | `landing.member_id == plan.primary_trunk_member_id` | `->L3443` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 3421 | `and plan.trunk_axis is not None` | `->L3443` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 3422 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3443` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 3452 | `if (` | `->L3385` | | -| 3467 | `if axis is None:` | `->L3468` | | -| 3491 | `if coordinate is not None:` | `->L3496` | | -| 3533 | `if endpoint is None:` | `->L3534` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 3556 | `if plan.trunk_axis is None:` | `->L3557` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 3582 | `if coordinate is not None:` | `->L3588` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 3642 | `for seat, obstacle in obstacles:` | `->L-3627`, `->L3643` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 3644 | `if axis is None:` | `->L3645`, `->L3646` | | -| 3656 | `if lane is None:` | `->L3657`, `->L3658` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 3677 | `if flank_rank != 1:` | `->L3679` | | -| 3688 | `if fork is None:` | `->L3689`, `->L3697` | | -| 3765 | `if forked:` | `->L3766` | | -| 3766 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3767`, `->L3768` | | -| 3770 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3771` | | -| 3794 | `if forked:` | `->L3795`, `->L3796` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 3869 | `if endpoint is None:` | `->L3870` | | -| 3880 | `if coordinate is None:` | `->L3881` | | -| 3893 | `if reseated is not None:` | `->L3894`, `->L3897` | | -| 3940 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L3988` | | -| 4018 | `if not (` | `->L4021` | | -| 4037 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4038` | | -| 4095 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4080` | | -| 4344 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4345` | | -| 4364 | `if any(` | `->L4369` | | -| 4372 | `if any(` | `->L4375` | | -| 4420 | `if axis is None:` | `->L4421` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 4562 | `if run is not None:` | `->L4613` | | -| 4689 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4690` | | -| 4789 | `if not landing_feasible(candidate_coordinate):` | `->L4790` | | -| 4799 | `if (` | `->L4803` | | -| 4852 | `if moved_plan is None:` | `->L4853` | | -| 4871 | `if (` | `->L4875` | | -| 4940 | `if (` | `->L4948` | | -| 4997 | `if moved is None:` | `->L4998` | | -| 5027 | `if (` | `->L5031` | | -| 5127 | `if any(` | `->L5135` | | -| 5191 | `for fixed in fixed_channels:` | `->L5192` | | -| 5192 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5195`, `->L5196` | | -| 5199 | `if (` | `->L5204`, `->L5205` | | -| 5239 | `if opening_key in moved_openings:` | `->L5240` | | -| 5248 | `if moved is None:` | `->L5249` | | -| 5252 | `if not feasible:` | `->L5253` | | -| 5254 | `if not feasible:` | `->L5255` | | -| 5257 | `if (` | `->L5261` | | -| 5278 | `if any(` | `->L5285` | | -| 5286 | `if any(` | `->L5291` | | -| 5343 | `for coordinate in candidates:` | `->L5309` | | -| 5661 | `if not negative or not positive:` | `->L5662` | | -| 5721 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5722` | | -| 5726 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5734` | | -| 5754 | `if gap is None:` | `->L5755` | | -| 5765 | `if requirement is None:` | `->L5766` | | -| 5769 | `if current is None or requirement.required > current.required:` | `->L5711` | | -| 5785 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5787` | | -| 5791 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5792`, `->L5793` | | -| 5801 | `if requirement is None:` | `->L5802`, `->L5803` | | -| 5806 | `if current is None or requirement.required > current.required:` | `->L5784`, `->L5807` | | -| 5838 | `if (` | `->L5844` | | -| 5849 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5850`, `->L5851` | | -| 5859 | `if requirement is not None:` | `->L5822`, `->L5860` | | -| 5906 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5910` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 5913 | `if first_delta * second_delta < 0:` | `->L5914` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5924 | `if (` | `->L5936`, `->L5939` | | -| 5953 | `if opposing_approaches is not None:` | `->L5954` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 5998 | `if same_line and first_direction is not second_direction:` | `->L6003` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 6004 | `if (` | `->L6031` | | -| 6051 | `if conflict is not None:` | `->L6052` | | -| 6061 | `if requirements:` | `->L6062`, `->L6064` | | -| 6099 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6100` | | -| 6106 | `if (` | `->L6117` | | -| 6117 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6120`, `->L6121` | | -| 6121 | `if any(` | `->L6126`, `->L6127` | | -| 6134 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6135` | | -| 6135 | `if any(` | `->L6140`, `->L6141` | | -| 6147 | `if _gap_channels_crowd(` | `->L6154` | | -| 6154 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6157`, `->L6158` | | -| 6158 | `if any(` | `->L6162`, `->L6163` | | -| 6179 | `if not plan.owns_geometry:` | `->L6180` | | -| 6243 | `if not plan.owns_geometry:` | `->L6244` | | -| 6267 | `owner_edge not in edge_ranks` | `->L6271` | | -| 6306 | `if not plan.owns_geometry:` | `->L6307` | | -| 6325 | `if ownership.edge in by_edge:` | `->L6326` | | -| 6453 | `for item in system_plans:` | `->L6454`, `->L6464` | | -| 6810 | `if not horizontal and not vertical:` | `->L6811` | | -| 6834 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6819` | | -| 6867 | `if axis.axis is DemandAxis.X:` | `->L6890` | | -| 6994 | `if not candidates:` | `->L6995` | | -| 7016 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7019` | | -| 7019 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7022` | | -| 7025 | `if horizontal:` | `->L7026` | | -| 7094 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7095` | | -| 7102 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7103` | | -| 7121 | `if actual is None:` | `->L7122` | | -| 7128 | `direction is not landing.approach_direction` | `->L7132` | | -| 7129 | `or handedness is not landing.corner_handedness` | `->L7132` | | -| 7130 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7132` | | -| 7151 | `opening is None` | `->L7155` | | -| 7152 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7155` | | -| 7153 | `or emitted_segment != landing.opening_turn_segment` | `->L7155` | | -| 7164 | `if query is None:` | `->L7165` | | -| 7170 | `if not plan.owns_geometry:` | `->L7171` | | -| 7180 | `if (` | `->L7194` | | -| 7198 | `if plan.primary_trunk_member_id == membership.member_id:` | `->L7203` | | -| 7221 | `if opening is None:` | `->L7222` | | -| 7222 | `if not clearance_pending:` | `->L7223`, `->L7238` | | -| 7230 | `landing.opening_turn_segment is not None` | `->L7238` | | -| 7236 | `if route.curve_radii is not None:` | `->L7238` | | -| 7304 | `if landing.opening_turn_coordinate is not None:` | `->L7312` | | -| 7320 | `if not clearance_pending and any(` | `->L7324` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 7349 | `if not plan.owns_geometry:` | `->L7350` | | -| 7360 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7361` | | -| 7370 | `if route is None:` | `->L7371` | | -| 7376 | `if (` | `->L7381` | | -| 7388 | `if any(` | `->L7392` | | -| 7412 | `if (` | `->L7421` | | -| 7427 | `if (` | `->L7438` | | -| 7454 | `if route is None or membership is None:` | `->L7455` | | -| 7460 | `if any(` | `->L7464` | | +| 1371 | `if (` | `->L1383` | | +| 1414 | `if continuation.covered_by_member_id is not None:` | `->L1415` | | +| 1523 | `if topology is None:` | `->L1524` | | +| 1611 | `if plan.trunk_axis is None:` | `->L1612` | **defensive** -- _turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one. | +| 1641 | `if _points_coincide(*segment):` | `->L1642` | | +| 1666 | `if (` | `->L1674` | | +| 1704 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1705` | | +| 1720 | `if abs(source_x - opening_x) > COORD_TOLERANCE:` | `->L1787` | | +| 1754 | `if uses_exit_handedness:` | `->L1755` | | +| 1778 | `if not uses_exit_handedness and (` | `->L1787` | | +| 1783 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1787` | | +| 1891 | `if opening_follows_flank:` | `->L1892` | | +| 1963 | `if landing.opening_turn_segment is None:` | `->L1964` | | +| 1970 | `if not carry_join:` | `->L1971` | | +| 2007 | `landing.approach_axis is DemandAxis.X` | `->L2011` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | +| 2008 | `and landing.opening_turn_segment is not None` | `->L2011` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | +| 2013 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L2014`, `->L2015` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | +| 2034 | `if reseated is None:` | `->L2035` | | +| 2040 | `if not moved:` | `->L2041` | | +| 2125 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2134` | | +| 2174 | `axis is None` | `->L2177` | | +| 2219 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2220` | | +| 2226 | `if actual is None:` | `->L2227` | | +| 2414 | `if any(` | `->L2419` | | +| 2476 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2477` | | +| 2511 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2512` | | +| 2520 | `if abs(start_y - end_y) > COORD_TOLERANCE:` | `->L2521` | | +| 2570 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2572` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | +| 2612 | `if run is None:` | `->L2613` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | +| 2702 | `if run is None:` | `->L2703` | | +| 2749 | `if run is None:` | `->L2750` | | +| 2796 | `if axis is None:` | `->L2797` | | +| 2838 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2839` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2848 | `if primary is None:` | `->L2849` | | +| 2861 | `or landing.opening_turn_segment is None` | `->L2863` | | +| 2874 | `if reseated is not None:` | `->L2857` | | +| 2914 | `if (` | `->L2920` | | +| 2922 | `for plan_rank, landing_rank in members:` | `->L2903`, `->L2923` | | +| 2925 | `if reseated is None:` | `->L2926`, `->L2927` | | +| 2944 | `if len(channel.line_ids) != 1:` | `->L2945` | | +| 2969 | `if (` | `->L2973` | | +| 2975 | `if endpoint is None:` | `->L2976` | | +| 2981 | `channel.flank_rank is not None` | `->L2986` | | +| 2986 | `if any(` | `->L2991` | | +| 2995 | `if moved is None:` | `->L2996` | | +| 3010 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3011` | | +| 3036 | `if (` | `->L3044` | | +| 3050 | `if reseated is None:` | `->L3051`, `->L3052` | | +| 3056 | `if abs(reseated_opening - source.x) >= (` | `->L3032`, `->L3061` | | +| 3061 | `if (` | `->L3066`, `->L3070` | | +| 3154 | `for rank in displaced_ranks:` | `->L3210` | | +| 3157 | `if (` | `->L3192` | | +| 3195 | `if reseated is None:` | `->L3196`, `->L3197` | | +| 3199 | `if (` | `->L3204`, `->L3208` | | +| 3217 | `if moved_channels and all(` | `->L3140`, `->L3225` | | +| 3242 | `if tail is None:` | `->L3243`, `->L3244` | | +| 3265 | `if (` | `->L3272` | | +| 3273 | `if bypass_segment is None:` | `->L3274`, `->L3275` | | +| 3275 | `for obstacle in direct_landings:` | `->L3264`, `->L3276` | | +| 3277 | `if (` | `->L3287`, `->L3288` | | +| 3290 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3291`, `->L3292` | | +| 3297 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3298`, `->L3299` | | +| 3305 | `if moved is None:` | `->L3306`, `->L3307` | | +| 3327 | `if bypass_segment is None:` | `->L3275`, `->L3328` | | +| 3361 | `if not obstacles:` | `->L3363` | | +| 3377 | `for coordinate in candidates:` | `->L3351`, `->L3378` | | +| 3378 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3379`, `->L3380` | | +| 3386 | `if moved is None:` | `->L3387`, `->L3388` | | +| 3394 | `if not moved_channels or any(` | `->L3401`, `->L3402` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3406 | `if (` | `->L3410`, `->L3411` | | +| 3471 | `obstacle_segment is None` | `->L3476` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3472 | `or landing_segment is None` | `->L3476` | | +| 3487 | `if reseated is None:` | `->L3488` | | +| 3493 | `landing.member_id == plan.primary_trunk_member_id` | `->L3516` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3494 | `and plan.trunk_axis is not None` | `->L3516` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3495 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3516` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3525 | `if (` | `->L3458` | | +| 3540 | `if axis is None:` | `->L3541` | | +| 3564 | `if coordinate is not None:` | `->L3569` | | +| 3606 | `if endpoint is None:` | `->L3607` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3629 | `if plan.trunk_axis is None:` | `->L3630` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3655 | `if coordinate is not None:` | `->L3661` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3715 | `for seat, obstacle in obstacles:` | `->L-3700`, `->L3716` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3717 | `if axis is None:` | `->L3718`, `->L3719` | | +| 3729 | `if lane is None:` | `->L3730`, `->L3731` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3750 | `if flank_rank != 1:` | `->L3752` | | +| 3761 | `if fork is None:` | `->L3762`, `->L3770` | | +| 3838 | `if forked:` | `->L3839` | | +| 3839 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3840`, `->L3841` | | +| 3843 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3844` | | +| 3867 | `if forked:` | `->L3868`, `->L3869` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3942 | `if endpoint is None:` | `->L3943` | | +| 3953 | `if coordinate is None:` | `->L3954` | | +| 3966 | `if reseated is not None:` | `->L3967`, `->L3970` | | +| 4013 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L4061` | | +| 4091 | `if not (` | `->L4094` | | +| 4110 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4111` | | +| 4168 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4153` | | +| 4417 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4418` | | +| 4437 | `if any(` | `->L4442` | | +| 4493 | `if axis is None:` | `->L4494` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4635 | `if run is not None:` | `->L4686` | | +| 4762 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4763` | | +| 4862 | `if not landing_feasible(candidate_coordinate):` | `->L4863` | | +| 4872 | `if (` | `->L4876` | | +| 4925 | `if moved_plan is None:` | `->L4926` | | +| 4944 | `if (` | `->L4948` | | +| 5013 | `if (` | `->L5021` | | +| 5070 | `if moved is None:` | `->L5071` | | +| 5100 | `if (` | `->L5104` | | +| 5200 | `if any(` | `->L5208` | | +| 5258 | `if clearance is None:` | `->L5259` | | +| 5312 | `if opening_key in moved_openings:` | `->L5313` | | +| 5321 | `if moved is None:` | `->L5322` | | +| 5325 | `if not feasible:` | `->L5326` | | +| 5327 | `if not feasible:` | `->L5328` | | +| 5330 | `if (` | `->L5334` | | +| 5340 | `if any(` | `->L5344` | | +| 5351 | `if any(` | `->L5358` | | +| 5359 | `if any(` | `->L5364` | | +| 5397 | `if not obstacles:` | `->L5399` | | +| 5416 | `for coordinate in candidates:` | `->L5382`, `->L5417` | | +| 5423 | `if any(` | `->L5437`, `->L5438` | | +| 5493 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5494` | | +| 5734 | `if not negative or not positive:` | `->L5735` | | +| 5794 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5795` | | +| 5799 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5807` | | +| 5827 | `if gap is None:` | `->L5828` | | +| 5838 | `if requirement is None:` | `->L5839` | | +| 5842 | `if current is None or requirement.required > current.required:` | `->L5784` | | +| 5858 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5860` | | +| 5864 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5865`, `->L5866` | | +| 5874 | `if requirement is None:` | `->L5875`, `->L5876` | | +| 5879 | `if current is None or requirement.required > current.required:` | `->L5857`, `->L5880` | | +| 5911 | `if (` | `->L5917` | | +| 5922 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5923`, `->L5924` | | +| 5932 | `if requirement is not None:` | `->L5895`, `->L5933` | | +| 5979 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5983` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 5986 | `if first_delta * second_delta < 0:` | `->L5987` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 5997 | `if (` | `->L6009`, `->L6012` | | +| 6026 | `if opposing_approaches is not None:` | `->L6027` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 6071 | `if same_line and first_direction is not second_direction:` | `->L6076` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 6077 | `if (` | `->L6104` | | +| 6124 | `if conflict is not None:` | `->L6125` | | +| 6134 | `if requirements:` | `->L6135`, `->L6137` | | +| 6172 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6173` | | +| 6179 | `if (` | `->L6190` | | +| 6190 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6193`, `->L6194` | | +| 6194 | `if any(` | `->L6199`, `->L6200` | | +| 6207 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6208` | | +| 6208 | `if any(` | `->L6213`, `->L6214` | | +| 6220 | `if _gap_channels_crowd(` | `->L6227` | | +| 6227 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6230`, `->L6231` | | +| 6231 | `if any(` | `->L6235`, `->L6236` | | +| 6252 | `if not plan.owns_geometry:` | `->L6253` | | +| 6316 | `if not plan.owns_geometry:` | `->L6317` | | +| 6340 | `owner_edge not in edge_ranks` | `->L6344` | | +| 6379 | `if not plan.owns_geometry:` | `->L6380` | | +| 6398 | `if ownership.edge in by_edge:` | `->L6399` | | +| 6526 | `for item in system_plans:` | `->L6527`, `->L6537` | | +| 6883 | `if not horizontal and not vertical:` | `->L6884` | | +| 6907 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6892` | | +| 6940 | `if axis.axis is DemandAxis.X:` | `->L6963` | | +| 7067 | `if not candidates:` | `->L7068` | | +| 7089 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7092` | | +| 7092 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7095` | | +| 7098 | `if horizontal:` | `->L7099` | | +| 7167 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7168` | | +| 7175 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7176` | | +| 7194 | `if actual is None:` | `->L7195` | | +| 7201 | `direction is not landing.approach_direction` | `->L7205` | | +| 7202 | `or handedness is not landing.corner_handedness` | `->L7205` | | +| 7203 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7205` | | +| 7224 | `opening is None` | `->L7228` | | +| 7225 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7228` | | +| 7226 | `or emitted_segment != landing.opening_turn_segment` | `->L7228` | | +| 7237 | `if query is None:` | `->L7238` | | +| 7243 | `if not plan.owns_geometry:` | `->L7244` | | +| 7253 | `if (` | `->L7267` | | +| 7299 | `if opening is None:` | `->L7300` | | +| 7300 | `if not clearance_pending:` | `->L7301`, `->L7316` | | +| 7308 | `landing.opening_turn_segment is not None` | `->L7316` | | +| 7314 | `if route.curve_radii is not None:` | `->L7316` | | +| 7382 | `if landing.opening_turn_coordinate is not None:` | `->L7390` | | +| 7398 | `if not clearance_pending and any(` | `->L7402` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7427 | `if not plan.owns_geometry:` | `->L7428` | | +| 7438 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7439` | | +| 7448 | `if route is None:` | `->L7449` | | +| 7454 | `if (` | `->L7459` | | +| 7466 | `if any(` | `->L7470` | | +| 7490 | `if (` | `->L7499` | | +| 7505 | `if (` | `->L7516` | | +| 7532 | `if route is None or membership is None:` | `->L7533` | | +| 7538 | `if any(` | `->L7542` | | ## `core.py` @@ -570,7 +579,7 @@ Gates with an un-exercised arm: ## `inter_section_handlers.py` -209/368 gates fully exercised. +210/368 gates fully exercised. Gates with an un-exercised arm: @@ -598,7 +607,6 @@ Gates with an un-exercised arm: | 822 | `if section and section.bbox_w > 0:` | `->L824` | | | 848 | `if _v_segment_crosses_other_section(graph, corner_x, src.y, ey, exclude):` | `->L849` | **defensive** -- Drop-in viability test in _right_entry_drop_in_is_clear (#889). The cross-row RIGHT-entry rule fires only when the earlier bypass / plough rules ceded the edge, i.e. no section sits between source and port, so the outward-side descent runs clear; the not-clear arm covers only an exotic descent blocked by a wide same-column sibling no corpus fixture builds. Defensive. | | 954 | `if min(drop_xs) < _section_right_edge(graph, tgt) - COORD_TOLERANCE:` | `->L955` | | -| 957 | `if _v_segment_crosses_other_section(graph, dx, src.y, tgt.y, exclude):` | `->L958` | | | 998 | `if route is not None:` | `->L1000` | | | 1022 | `if self.launch_coordinate is None or self.axis_coordinate is None:` | `->L1023` | **defensive** -- _SourceSeam.minimum_runway returns None for a shape whose centreline never turns (everything but run_direction unstated). Production readers only reach it through _SourceTurnRequirement.from_seam and the planner sites that assert non-None first, and those run only for turning families, so the None arm firing would be a family-contract violation. | | 1199 | `if route is not None:` | `->L1213` | | @@ -773,7 +781,7 @@ Gates with an un-exercised arm: ## `member_geometry.py` -114/173 gates fully exercised. +113/173 gates fully exercised. Gates with an un-exercised arm: @@ -788,8 +796,7 @@ Gates with an un-exercised arm: | 337 | `or after is None` | `->L338`, `->L341` | | | 338 | `or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L339`, `->L341` | | | 339 | `or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE` | `->L341`, `->L342` | | -| 392 | `if not any(` | `->L397` | | -| 431 | `if settled_x is None:` | `->L432`, `->L433` | | +| 431 | `if settled_x is None:` | `->L433` | | | 436 | `if not moved_ranks:` | `->L439` | | | 457 | `if not changed:` | `->L459` | | | 479 | `if run_direction is None or turn_direction is None:` | `->L480` | | @@ -823,8 +830,10 @@ Gates with an un-exercised arm: | 1852 | `if radii is not None:` | `->L1857` | | | 1853 | `if 0 <= rank - 1 < len(radii):` | `->L1855` | | | 1855 | `if rank < len(radii):` | `->L1857` | | +| 1880 | `if rank < len(route.exit_shared_opening_points):` | `->L1881` | | | 1894 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1877` | | -| 1922 | `if all(` | `->L1918` | | +| 1920 | `if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:` | `->L1922` | | +| 1922 | `if all(` | `->L1918`, `->L1927` | | | 2001 | `if movable_run:` | `->L2002` | | | 2052 | `if context is not None:` | `->L2067` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | | 2068 | `if key in ctx.skip_edges:` | `->L2069` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | @@ -841,7 +850,7 @@ Gates with an un-exercised arm: ## `normalize.py` -429/586 gates fully exercised. +430/592 gates fully exercised. Gates with an un-exercised arm: @@ -855,6 +864,7 @@ Gates with an un-exercised arm: | 435 | `if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:` | `->L436` | **defensive** -- The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint. | | 441 | `if a_trunk is None or b_trunk is None:` | `->L442` | **defensive** -- A symmetric divergence is considered only for declared gap channels produced by a same-source branch opening. Those channels follow a horizontal opening run, so both opening trunks resolve; the missing-trunk arm defensively rejects a different route shape. | | 516 | `if not chans:` | `->L517` | | +| 627 | `for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):` | `->L630` | | | 660 | `if ctx.exit_turns is None:` | `->L661` | | | 665 | `assignment is None` | `->L670` | | | 667 | `or assignment.turn_direction is None` | `->L670` | | @@ -874,7 +884,6 @@ Gates with an un-exercised arm: | 1058 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1060` | | | 1060 | `if rank + 2 < len(route.points):` | `->L1065` | | | 1063 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1065` | | -| 1372 | `if not reference_fits(lower):` | `->L1373` | | | 1438 | `go is not None` | `->L1444` | | | 1439 | `and gt is not None` | `->L1444` | | | 1476 | `if len(pts) < 2:` | `->L1477` | | @@ -884,130 +893,135 @@ Gates with an un-exercised arm: | 1597 | `if None in convergence_plan_ids or len(convergence_plan_ids) != 1:` | `->L1598`, `->L1609` | | | 1598 | `if ctx.validate_final_route_frames:` | `->L1599`, `->L1608` | | | 1615 | `if _snap_reverses_adjacent_run(ch, ref_x):` | `->L1616` | | -| 1656 | `if channel is None:` | `->L1657` | | -| 1729 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1730` | | -| 1735 | `if ref is not None:` | `->L1736` | | -| 1806 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1807` | | -| 1810 | `if movable_channels:` | `->L1806`, `->L1811` | | -| 1848 | `if not downs or not ups:` | `->L1850` | | -| 1851 | `for descent in downs:` | `->L-1817`, `->L1852` | | -| 1853 | `if col in moved:` | `->L1854`, `->L1855` | | -| 1856 | `for up in ups:` | `->L1857`, `->L1866` | | -| 1857 | `if up.route.line_id != descent.route.line_id:` | `->L1858`, `->L1859` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | -| 1859 | `if abs(up.x - descent.x) > radius:` | `->L1860`, `->L1861` | | -| 1862 | `if overlap <= COORD_TOLERANCE:` | `->L1863`, `->L1864` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | -| 1866 | `if target_x is None:` | `->L1867`, `->L1868` | | -| 1869 | `for ch in downs:` | `->L1851`, `->L1870` | | -| 1870 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1869`, `->L1871` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | -| 1897 | `if k == desc.idx + 1:` | `->L1896` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | -| 1949 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1950` | | -| 1961 | `if any(` | `->L1971` | | -| 1991 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L1995` | | -| 1992 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L1995` | | -| 1993 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L1995` | | -| 2012 | `if source_col is None:` | `->L2013` | | -| 2028 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L2029` | | -| 2045 | `if not sibling_xs:` | `->L2046` | | -| 2048 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2049` | | -| 2051 | `if _section_intrudes(` | `->L2058` | | -| 2183 | `for _ in range(max(1, len(buckets))):` | `->L-2129` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2201 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2203` | **defensive** -- Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests. | -| 2206 | `for _step in range(64):` | `->L2207`, `->L2214` | **defensive** -- Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve. | -| 2210 | `if resolved < common:` | `->L2211`, `->L2213` | **defensive** -- Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius. | -| 2221 | `if not changed:` | `->L2183` | **defensive** -- The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner. | -| 2259 | `if ch.route.convergence_plan_id is not None:` | `->L2260` | | -| 2269 | `if _planner_owns_channel(ch) and (` | `->L2272` | | -| 2343 | `if opposing_bundle is not None and {` | `->L2346` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | -| 2354 | `if any(` | `->L2364` | | -| 2471 | `if any(` | `->L2477` | | -| 2514 | `if has_immovable_planned_channel and any(` | `->L2519` | | -| 2574 | `if any(` | `->L2578` | | -| 2579 | `if not crossing:` | `->L2586` | | -| 2589 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2590`, `->L2594` | **defensive** -- _snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs. | -| 2594 | `for r, k, _y in crossing:` | `->L2551`, `->L2595` | | -| 2662 | `if ctx.convergences is None:` | `->L2663` | | -| 2670 | `or entry is None` | `->L2676` | | -| 2671 | `or port is None` | `->L2676` | | -| 2672 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2676` | | -| 2745 | `if rp.curve_radii is None:` | `->L2746` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | -| 2774 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2775` | | -| 2779 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2780` | | -| 2980 | `if route.curve_radii is None:` | `->L2981` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | -| 3127 | `if any(` | `->L3131` | | -| 3225 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3246` | | -| 3274 | `if not verticals:` | `->L3275` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | -| 3290 | `if rp.curve_radii is not None:` | `->L3292` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | -| 3510 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3504` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | -| 3540 | `if feats is None:` | `->L3541` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | -| 3677 | `if (` | `->L3681` | | -| 3689 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3690` | | -| 3737 | `if len(trunks) < 2:` | `->L3738`, `->L3739` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | -| 3741 | `for grp in groups:` | `->L3742`, `->L3760` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | -| 3742 | `if len({id(t.route) for t in grp}) < 2:` | `->L3743`, `->L3744` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | -| 3744 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3745`, `->L3746` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | -| 3746 | `for sign in (1, -1):` | `->L3741`, `->L3747` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | -| 3749 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3750`, `->L3751` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | -| 3758 | `if best < cur:` | `->L3746`, `->L3759` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | -| 3828 | `if (` | `->L3833` | | -| 3890 | `band is not None` | `->L3895` | | -| 3891 | `and band.boundary is None` | `->L3892` | | -| 3892 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3894`, `->L3895` | | -| 3988 | `if band is not None:` | `->L3993` | | -| 4012 | `elif up_ok:` | `->L4015` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | -| 4017 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L4018` | | -| 4058 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4067` | | -| 4061 | `if reconcile_owned_corridor:` | `->L4067` | | -| 4068 | `if cross_below is not None and cross_above is not None:` | `->L4076` | | -| 4069 | `if reconcile_owned_corridor:` | `->L4075` | | -| 4083 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4084` | | -| 4087 | `elif above_ok:` | `->L4090` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | -| 4090 | `if reconcile_owned_corridor:` | `->L4091`, `->L4094` | | -| 4155 | `if (` | `->L4159` | | -| 4161 | `if changed:` | `->L4162` | | -| 4191 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4211` | | -| 4193 | `if target_y is None:` | `->L4194` | | -| 4196 | `if (` | `->L4207` | | -| 4215 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4217` | | -| 4330 | `if band is None:` | `->L4331` | | -| 4336 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4340` | | -| 4362 | `and crossed[0] < span[1]` | `->L4364` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4472 | `if i in relocated:` | `->L4473` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4491 | `if (` | `->L4496` | | -| 4513 | `if any(` | `->L4517` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4518 | `if any(` | `->L4524` | | -| 4550 | `if target is None:` | `->L4551` | | -| 4594 | `if sg[0].sign_x != t.sign_x:` | `->L4595` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4630 | `and base_in is not None` | `->L4644` | | -| 4631 | `and base_out is not None` | `->L4644` | | -| 4647 | `if rp.curve_radii is None:` | `->L4648` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4659 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4661` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4661 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4604` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4739 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4742` | | -| 4743 | `if leg_is_plan_stated(mover):` | `->L4744` | | -| 4746 | `for delta in (step, -step):` | `->L4713` | | -| 4748 | `if all(` | `->L4746` | | -| 4782 | `or len(upstream.points) < 2` | `->L4784` | | -| 4787 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4790` | | -| 4788 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4790` | | -| 4792 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4794` | | -| 4852 | `if down is None or len(up.points) < 2:` | `->L4853` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4906 | `if len(targets) != 1:` | `->L4907` | | -| 4916 | `if col is None:` | `->L4917` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 4957 | `if not 0 <= far < len(pts):` | `->L4958` | | -| 4960 | `if abs(dx) > COORD_TOLERANCE:` | `->L4954` | | -| 4962 | `if not votes:` | `->L4963` | | -| 5068 | `if rep_x[a] != rep_x[b]:` | `->L5070` | **defensive** -- The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5098 | `if rp.curve_radii is None:` | `->L5099` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5101 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5102` | | -| 5125 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5075` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5155 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5157` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5210 | `elif right_ok:` | `->L5213` | | -| 5259 | `if s.bbox_w <= 0:` | `->L5260` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 5647 | `if not blockers:` | `->L5648` | | +| 1664 | `if channel is None:` | `->L1665` | | +| 1679 | `if end_idx >= len(route.points):` | `->L1680` | | +| 1751 | `if planned and max(planned) - min(planned) > COORD_TOLERANCE:` | `->L1752` | | +| 1757 | `if ref is not None:` | `->L1758` | | +| 1828 | `for group in _merge_feeder_groups(routes, ctx):` | `->L1829` | | +| 1832 | `if movable_channels:` | `->L1828`, `->L1833` | | +| 1870 | `if not downs or not ups:` | `->L1872` | | +| 1873 | `for descent in downs:` | `->L-1839`, `->L1874` | | +| 1875 | `if col in moved:` | `->L1876`, `->L1877` | | +| 1878 | `for up in ups:` | `->L1879`, `->L1888` | | +| 1879 | `if up.route.line_id != descent.route.line_id:` | `->L1880`, `->L1881` | **defensive** -- _clear_merge_trunk_opposite_arm skips an up-arm carrying a different line from the down-trunk, since only a same-line opposite arm folds the line back over itself. The corpus's one fork sends a single line both ways, so the different-line skip arm stays un-exercised. Defensive against a fork whose opposite arms carry distinct lines. | +| 1881 | `if abs(up.x - descent.x) > radius:` | `->L1882`, `->L1883` | | +| 1884 | `if overlap <= COORD_TOLERANCE:` | `->L1885`, `->L1886` | **defensive** -- _clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically. | +| 1888 | `if target_x is None:` | `->L1889`, `->L1890` | | +| 1891 | `for ch in downs:` | `->L1873`, `->L1892` | | +| 1892 | `if abs(ch.x - descent.x) <= COORD_TOLERANCE:` | `->L1891`, `->L1893` | **defensive** -- _clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns. | +| 1919 | `if k == desc.idx + 1:` | `->L1918` | **defensive** -- In _fanout_traverse_spans: the corpus fan-out routes carry the traverse as their only interior horizontal trunk, so the loop matches on the first trunk and the non-match arm is never taken. Defensive. | +| 1971 | `if lower > upper + COORD_TOLERANCE_FINE:` | `->L1972` | | +| 1983 | `if any(` | `->L1993` | | +| 2013 | `abs(p0[1] - p1[1]) > COORD_TOLERANCE` | `->L2017` | | +| 2014 | `or abs(p1[0] - p2[0]) > COORD_TOLERANCE` | `->L2017` | | +| 2015 | `or abs(p2[1] - p3[1]) > COORD_TOLERANCE` | `->L2017` | | +| 2034 | `if source_col is None:` | `->L2035` | | +| 2050 | `if route_system_owns_segment_boundary(route, opening.idx):` | `->L2051` | | +| 2067 | `if not sibling_xs:` | `->L2068` | | +| 2070 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2071` | | +| 2073 | `if _section_intrudes(` | `->L2080` | | +| 2138 | `if any(` | `->L2142` | | +| 2205 | `for _ in range(max(1, len(buckets))):` | `->L-2151` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2281 | `if ch.route.convergence_plan_id is not None:` | `->L2282` | | +| 2291 | `if _planner_owns_channel(ch) and (` | `->L2294` | | +| 2365 | `if opposing_bundle is not None and {` | `->L2368` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | +| 2376 | `if any(` | `->L2386` | | +| 2493 | `if any(` | `->L2499` | | +| 2536 | `if has_immovable_planned_channel and any(` | `->L2541` | | +| 2596 | `if any(` | `->L2600` | | +| 2601 | `if not crossing:` | `->L2608` | | +| 2611 | `if abs(delta) <= COORD_TOLERANCE:` | `->L2612`, `->L2616` | | +| 2616 | `for r, k, _y in crossing:` | `->L2573`, `->L2617` | | +| 2684 | `if ctx.convergences is None:` | `->L2685` | | +| 2692 | `or entry is None` | `->L2698` | | +| 2693 | `or port is None` | `->L2698` | | +| 2694 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2698` | | +| 2721 | `if boundary_dogleg_stitch(rp, ch, target):` | `->L2722` | | +| 2767 | `if rp.curve_radii is None:` | `->L2768` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | +| 2796 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2797` | | +| 2801 | `if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:` | `->L2802` | | +| 3002 | `if route.curve_radii is None:` | `->L3003` | **defensive** -- Fan-opening channels are selected from a real horizontal-to-vertical turn, and production turn builders attach radius metadata to that shape. The None arm protects a synthetic or incomplete RoutedPath. | +| 3149 | `if any(` | `->L3153` | | +| 3247 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3268` | | +| 3296 | `if not verticals:` | `->L3297` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | +| 3312 | `if rp.curve_radii is not None:` | `->L3314` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | +| 3532 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3526` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | +| 3562 | `if feats is None:` | `->L3563` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | +| 3699 | `if (` | `->L3703` | | +| 3711 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3712` | | +| 3759 | `if len(trunks) < 2:` | `->L3760`, `->L3761` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | +| 3763 | `for grp in groups:` | `->L3764`, `->L3782` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | +| 3764 | `if len({id(t.route) for t in grp}) < 2:` | `->L3765`, `->L3766` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | +| 3766 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3767`, `->L3768` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | +| 3768 | `for sign in (1, -1):` | `->L3763`, `->L3769` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | +| 3771 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3772`, `->L3773` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | +| 3780 | `if best < cur:` | `->L3768`, `->L3781` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | +| 3850 | `if (` | `->L3855` | | +| 3912 | `band is not None` | `->L3917` | | +| 3913 | `and band.boundary is None` | `->L3914` | | +| 3914 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3916`, `->L3917` | | +| 4010 | `if band is not None:` | `->L4015` | | +| 4034 | `elif up_ok:` | `->L4037` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | +| 4039 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L4040` | | +| 4080 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4089` | | +| 4083 | `if reconcile_owned_corridor:` | `->L4089` | | +| 4090 | `if cross_below is not None and cross_above is not None:` | `->L4098` | | +| 4091 | `if reconcile_owned_corridor:` | `->L4097` | | +| 4105 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4106` | | +| 4109 | `elif above_ok:` | `->L4112` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | +| 4112 | `if reconcile_owned_corridor:` | `->L4113`, `->L4116` | | +| 4177 | `if (` | `->L4181` | | +| 4183 | `if changed:` | `->L4184` | | +| 4213 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4233` | | +| 4215 | `if target_y is None:` | `->L4216` | | +| 4218 | `if (` | `->L4229` | | +| 4237 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4239` | | +| 4352 | `if band is None:` | `->L4353` | | +| 4358 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4362` | | +| 4383 | `and span[0] < crossed[1]` | `->L4384` | | +| 4384 | `and crossed[0] < span[1]` | `->L4375`, `->L4386` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4494 | `if i in relocated:` | `->L4495` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4508 | `if not primary and fixed_obstacles:` | `->L4509` | | +| 4514 | `not secondary_may_yield_at_shared_source` | `->L4515`, `->L4518` | | +| 4515 | `or not lane_sources & fixed_sources` | `->L4516`, `->L4518` | | +| 4516 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4518`, `->L4519` | | +| 4535 | `if any(` | `->L4539` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4616 | `if sg[0].sign_x != t.sign_x:` | `->L4617` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4652 | `and base_in is not None` | `->L4666` | | +| 4653 | `and base_out is not None` | `->L4666` | | +| 4669 | `if rp.curve_radii is None:` | `->L4670` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4681 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4683` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4683 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4626` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4738 | `if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:` | `->L4740` | | +| 4748 | `if hi - lo <= 2 * COORD_TOLERANCE:` | `->L4749`, `->L4751` | | +| 4761 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4764`, `->L4765` | | +| 4765 | `if leg_is_plan_stated(mover):` | `->L4766`, `->L4767` | | +| 4768 | `for delta in (step, -step):` | `->L4735`, `->L4769` | | +| 4770 | `if all(` | `->L4768`, `->L4773` | | +| 4800 | `for upstream in routes:` | `->L-4783`, `->L4801` | | +| 4802 | `upstream.edge.target != mover.edge.source` | `->L4803`, `->L4806` | | +| 4803 | `or upstream.line_id != mover.line_id` | `->L4804`, `->L4806` | | +| 4804 | `or len(upstream.points) < 2` | `->L4806`, `->L4807` | | +| 4809 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4810`, `->L4812` | | +| 4810 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4812`, `->L4813` | | +| 4814 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4815`, `->L4816` | | +| 4874 | `if down is None or len(up.points) < 2:` | `->L4875` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4928 | `if len(targets) != 1:` | `->L4929` | | +| 4938 | `if col is None:` | `->L4939` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 4979 | `if not 0 <= far < len(pts):` | `->L4980` | | +| 4982 | `if abs(dx) > COORD_TOLERANCE:` | `->L4976` | | +| 4984 | `if not votes:` | `->L4985` | | +| 5120 | `if rp.curve_radii is None:` | `->L5121` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5123 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5124` | | +| 5147 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5097` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5177 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5179` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5232 | `elif right_ok:` | `->L5235` | | +| 5281 | `if s.bbox_w <= 0:` | `->L5282` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 5669 | `if not blockers:` | `->L5670` | | ## `offsets.py` -476/567 gates fully exercised. +477/571 gates fully exercised. Gates with an un-exercised arm: @@ -1034,8 +1048,12 @@ Gates with an un-exercised arm: | 1061 | `if not target_st:` | `->L1062` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | | 1078 | `for other in lines:` | `->L1086` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | | 1086 | `if swap_lid is None:` | `->L1087` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | +| 1131 | `if (cur_sid, cur_lid) in visited:` | `->L1132` | | | 1143 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1144` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1154 | `for other_lid in nbr_lines:` | `->L1136` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1150 | `if len(nbr_lines) < 2:` | `->L1154` | | +| 1154 | `for other_lid in nbr_lines:` | `->L1136`, `->L1155` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1155 | `if other_lid == cur_lid:` | `->L1156`, `->L1157` | | +| 1157 | `if (` | `->L1154`, `->L1161` | | | 1165 | `if max_steps <= 0:` | `->L1166` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | | 1193 | `if lid not in seen:` | `->L1190` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | | 1419 | `for _ in range(len(graph.stations) + 1):` | `->L1436` | | @@ -1069,9 +1087,7 @@ Gates with an un-exercised arm: | 2460 | `if not any(` | `->L2463` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | | 2478 | `if len(seed_lines) < 2:` | `->L2479` | | | 2484 | `if not fixed_here or not movable:` | `->L2485` | | -| 2503 | `for lid in above:` | `->L2504` | | | 2507 | `if not any(` | `->L2510` | | -| 2585 | `for _ in range(len(seed_lines)):` | `->L2626` | | | 2599 | `if not changed_lids:` | `->L2600` | | | 2618 | `if pending is None:` | `->L2619` | | | 2747 | `if max_steps <= 0:` | `->L2748` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | @@ -1083,27 +1099,28 @@ Gates with an un-exercised arm: | 2877 | `if single_exit and feeding_exit is not None:` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | | 2879 | `if exit_lines == set(j_lines):` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | | 2881 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 3005 | `if pred is None:` | `->L3006` | | -| 3101 | `if target_col is None:` | `->L3102` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | -| 3110 | `if source_col is None:` | `->L3111` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3420 | `for _ in range(max_iterations):` | `->L-3366` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | -| 3504 | `if src_n <= tgt_n:` | `->L3507` | | -| 3536 | `if not a.section_id or a.section_id != b.section_id:` | `->L3537` | | -| 3618 | `if ctx.topology is None:` | `->L3619` | | -| 3642 | `if key not in ctx.offsets:` | `->L3643` | | -| 3691 | `len(levels) != len(continuing)` | `->L3694` | | -| 3754 | `if line_id not in assignments:` | `->L3755` | | -| 3759 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3761` | | -| 3781 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3806` | | -| 3792 | `if line_id not in assignments:` | `->L3793` | | -| 3799 | `if set(frames).difference(next_frames):` | `->L3800` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3834 | `if any(` | `->L3838` | | -| 3840 | `if local_offset is None or not (` | `->L3846` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3865 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3866` | | -| 3876 | `if gap is not None:` | `->L3877` | | -| 3907 | `if any(` | `->L3913` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3931 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3932` | | -| 4108 | `if dag is not None:` | `->L4116` | | +| 2976 | `if free is None:` | `->L2977` | | +| 3049 | `if pred is None:` | `->L3050` | | +| 3145 | `if target_col is None:` | `->L3146` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | +| 3154 | `if source_col is None:` | `->L3155` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | +| 3464 | `for _ in range(max_iterations):` | `->L-3410` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | +| 3548 | `if src_n <= tgt_n:` | `->L3551` | | +| 3580 | `if not a.section_id or a.section_id != b.section_id:` | `->L3581` | | +| 3662 | `if ctx.topology is None:` | `->L3663` | | +| 3686 | `if key not in ctx.offsets:` | `->L3687` | | +| 3735 | `len(levels) != len(continuing)` | `->L3738` | | +| 3798 | `if line_id not in assignments:` | `->L3799` | | +| 3803 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3805` | | +| 3825 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3850` | | +| 3836 | `if line_id not in assignments:` | `->L3837` | | +| 3843 | `if set(frames).difference(next_frames):` | `->L3844` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3878 | `if any(` | `->L3882` | | +| 3884 | `if local_offset is None or not (` | `->L3890` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3909 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3910` | | +| 3920 | `if gap is not None:` | `->L3921` | | +| 3951 | `if any(` | `->L3957` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3975 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3976` | | +| 4152 | `if dag is not None:` | `->L4160` | | ## `orientation.py` @@ -1195,7 +1212,7 @@ Gates with an un-exercised arm: ## `reserved_bands.py` -19/29 gates fully exercised. +19/31 gates fully exercised. Gates with an un-exercised arm: @@ -1204,13 +1221,15 @@ Gates with an un-exercised arm: | 63 | `if self.hi < self.lo - COORD_TOLERANCE:` | `->L64` | **defensive** -- The invariant the router relies on: a band handed to _center_inter_row_channel or centre_inter_column_channel always holds a channel, so the narrow-gap fallback cannot be reached for a claimed corridor. build_reserved_corridors filters an empty intersection out before constructing a band, so the raise guards direct construction only. | | 65 | `if self.allocation is not None and not math.isfinite(self.allocation):` | `->L66` | **defensive** -- Published allocations originate from finite observed route coordinates plus finite reservation translations. A non-finite value can only reach ReservedBand through malformed direct construction; the guard keeps invalid coordinates out of planner seating. | | 204 | `if boundary is None:` | `->L205` | **defensive** -- Optional-boundary convenience for callers carrying an unresolved grid index (_left_exit_wrap_over_top_y takes tgt_row: int \| None). Such a caller returns before it needs a band -- with no target row there is no gap above it to measure, so the wrap is rejected first -- leaving this arm a type-level accommodation no topology reaches. | +| 309 | `if lower > upper + COORD_TOLERANCE:` | `->L310` | | | 354 | `if seat is None:` | `->L355` | | -| 412 | `if realised is None:` | `->L413` | **defensive** -- realise_reservation returns None only for a canvas-side corridor measured without canvas bounds; this loop has already narrowed to row-gap or column-gap claims, which always measure. The arm satisfies the optional return type rather than a reachable state. | -| 521 | `if target is None or not target.is_port or target.section_id is None:` | `->L522` | | -| 525 | `if start[0] != end[0] or final_start[1] != final_end[1]:` | `->L526` | | -| 553 | `if realised is None:` | `->L554` | | -| 610 | `if band is None:` | `->L611` | **defensive** -- Every record for one edge and segment rank observes the same physical route segment. Disjoint clearance intervals for that key therefore require a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory corridor bounds. | -| 614 | `if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:` | `->L615` | **defensive** -- Repeated observations of one route-segment claim project the same declared gap coordinate through the same member translation. A wider allocation range therefore requires a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory exact allocations. | +| 411 | `if not isinstance(` | `->L414` | | +| 420 | `if content_band is not None:` | `->L422` | | +| 530 | `if target is None or not target.is_port or target.section_id is None:` | `->L531` | | +| 534 | `if start[0] != end[0] or final_start[1] != final_end[1]:` | `->L535` | | +| 562 | `if realised is None:` | `->L563` | | +| 627 | `if band is None:` | `->L628` | **defensive** -- Every record for one edge and segment rank observes the same physical route segment. Disjoint clearance intervals for that key therefore require a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory corridor bounds. | +| 631 | `if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:` | `->L632` | **defensive** -- Repeated observations of one route-segment claim project the same declared gap coordinate through the same member translation. A wider allocation range therefore requires a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory exact allocations. | ## `reversal.py` diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 6f40b79ee..390e84729 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -19,7 +19,6 @@ "common.py::if endpoints:::#1", "common.py::if k == 0 or k + 2 >= len(points):::#1", "common.py::if len({round(value, 6) for value in port_ys}) != n:::#1", - "common.py::if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:::#1", "common.py::if n == 0:::#1", "common.py::if not consumer.is_port:::#1", "common.py::if not src.is_port:::#1", @@ -42,7 +41,6 @@ "common.py::if station is None:::#1", "common.py::if t < -0.01 or t > 1.01:::#1", "common.py::if top is None or bottom is None:::#1", - "common.py::if trunk_ys[-1] - trunk_ys[0] <= COORD_TOLERANCE:::#1", "common.py::or abs(entry.y - tgt.y) > COORD_TOLERANCE::#1", "common.py::or entry is None::#1", "common.py::or port.side not in (PortSide.LEFT, PortSide.RIGHT)::#1", @@ -90,38 +88,42 @@ "convergences.py::for coordinate in candidates:::#1", "convergences.py::for coordinate in candidates:::#4", "convergences.py::for edge_key in incoming_edges:::#3", - "convergences.py::for fixed in fixed_channels:::#1", "convergences.py::for item in system_plans:::#1", + "convergences.py::for obstacle in direct_landings:::#1", "convergences.py::for plan_rank, landing_rank in members:::#1", + "convergences.py::for rank in displaced_ranks:::#1", "convergences.py::for rank in range(len(route.points) - 2, -1, -1):::#1", "convergences.py::for rank, (start, end) in enumerate(zip(points, points[1:])):::#1", "convergences.py::for seat, obstacle in obstacles:::#1", "convergences.py::if (::#1", + "convergences.py::if (::#13", "convergences.py::if (::#14", - "convergences.py::if (::#15", + "convergences.py::if (::#16", "convergences.py::if (::#17", "convergences.py::if (::#18", + "convergences.py::if (::#19", "convergences.py::if (::#2", + "convergences.py::if (::#20", + "convergences.py::if (::#21", + "convergences.py::if (::#22", "convergences.py::if (::#23", - "convergences.py::if (::#24", + "convergences.py::if (::#27", "convergences.py::if (::#28", "convergences.py::if (::#29", "convergences.py::if (::#3", "convergences.py::if (::#30", - "convergences.py::if (::#31", "convergences.py::if (::#34", - "convergences.py::if (::#35", - "convergences.py::if (::#39", + "convergences.py::if (::#38", + "convergences.py::if (::#40", "convergences.py::if (::#41", "convergences.py::if (::#42", - "convergences.py::if (::#43", - "convergences.py::if (::#45", + "convergences.py::if (::#44", + "convergences.py::if (::#46", "convergences.py::if (::#47", "convergences.py::if (::#48", - "convergences.py::if (::#49", - "convergences.py::if (::#6", + "convergences.py::if (::#5", + "convergences.py::if (::#7", "convergences.py::if (::#8", - "convergences.py::if (::#9", "convergences.py::if _channel_inside_gap(graph, channel) and _channel_inside_gap(::#1", "convergences.py::if _channel_inside_gap(graph, channel) and _channel_inside_gap(::#2", "convergences.py::if _direction(*landing_segment) not in (Direction.U, Direction.D):::#1", @@ -131,26 +133,30 @@ "convergences.py::if abs(approach_delta) > COORD_TOLERANCE:::#1", "convergences.py::if abs(endpoint - flank_coordinate) <= clearance:::#1", "convergences.py::if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:::#1", + "convergences.py::if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:::#1", "convergences.py::if abs(reseated_opening - source.x) >= (::#1", "convergences.py::if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:::#1", "convergences.py::if abs(source_x - opening_x) > COORD_TOLERANCE:::#1", "convergences.py::if abs(start[0] - end[0]) > COORD_TOLERANCE:::#1", "convergences.py::if abs(start[1] - end[1]) > COORD_TOLERANCE:::#1", + "convergences.py::if abs(start_y - end_y) > COORD_TOLERANCE:::#1", "convergences.py::if actual is None:::#1", "convergences.py::if actual is None:::#2", "convergences.py::if any(::#14", + "convergences.py::if any(::#16", "convergences.py::if any(::#17", "convergences.py::if any(::#18", + "convergences.py::if any(::#19", "convergences.py::if any(::#2", "convergences.py::if any(::#20", "convergences.py::if any(::#21", "convergences.py::if any(::#22", "convergences.py::if any(::#23", "convergences.py::if any(::#24", + "convergences.py::if any(::#3", "convergences.py::if any(::#5", "convergences.py::if any(::#7", - "convergences.py::if any(::#8", "convergences.py::if any(edge not in edge_order for edge in edges):::#1", "convergences.py::if approach is None:::#1", "convergences.py::if axis is DemandAxis.X:::#1", @@ -159,6 +165,7 @@ "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#2", "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#3", "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#4", + "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#5", "convergences.py::if axis is None:::#1", "convergences.py::if axis is None:::#2", "convergences.py::if axis is None:::#3", @@ -170,6 +177,7 @@ "convergences.py::if bypass_segment is None:::#2", "convergences.py::if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:::#1", "convergences.py::if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:::#2", + "convergences.py::if clearance is None:::#1", "convergences.py::if conflict is not None:::#1", "convergences.py::if continuation.covered_by_member_id is not None:::#1", "convergences.py::if coordinate is None:::#2", @@ -190,16 +198,15 @@ "convergences.py::if exit_turn_geometry != _exit_turn_geometry(route):::#1", "convergences.py::if extent_end - extent_start > COORD_TOLERANCE:::#1", "convergences.py::if family is None:::#1", + "convergences.py::if first.claimant_member_ids & second.claimant_member_ids:::#1", "convergences.py::if first_delta * second_delta < 0:::#1", "convergences.py::if first_plan.trunk_axis.axis is DemandAxis.X:::#1", - "convergences.py::if fixed.gap != gap and not _stacked_elbow_channels_crowd(::#1", "convergences.py::if flank_rank != 1:::#1", "convergences.py::if fork is None:::#1", "convergences.py::if forked:::#1", "convergences.py::if forked:::#2", "convergences.py::if gap is None:::#2", "convergences.py::if group.line_id not in line_order:::#1", - "convergences.py::if horizontal and abs(endpoint[1] - target[1]) <= COORD_TOLERANCE:::#1", "convergences.py::if horizontal:::#2", "convergences.py::if interval[1] - interval[0] > COORD_TOLERANCE:::#1", "convergences.py::if landing.opening_turn_coordinate is not None:::#3", @@ -233,6 +240,8 @@ "convergences.py::if not moved:::#1", "convergences.py::if not moved_channels or any(::#1", "convergences.py::if not negative or not positive:::#1", + "convergences.py::if not obstacles:::#1", + "convergences.py::if not obstacles:::#5", "convergences.py::if not plan.owns_geometry:::#1", "convergences.py::if not plan.owns_geometry:::#2", "convergences.py::if not plan.owns_geometry:::#3", @@ -240,19 +249,16 @@ "convergences.py::if not plan.owns_geometry:::#5", "convergences.py::if not runs:::#1", "convergences.py::if not uses_exit_handedness and (::#1", - "convergences.py::if obstacles:::#1", "convergences.py::if opening is None:::#1", "convergences.py::if opening is None:::#2", "convergences.py::if opening_follows_flank:::#2", "convergences.py::if opening_key in moved_openings:::#1", "convergences.py::if opening_rank is None:::#1", - "convergences.py::if opening_segment is not None:::#1", "convergences.py::if opposing_approaches is not None:::#1", "convergences.py::if owned:::#1", "convergences.py::if owned_offsets[0] is not None and owned_bases[0] is not None:::#1", "convergences.py::if owned_offsets[1] is not None and owned_bases[1] is not None:::#1", "convergences.py::if ownership.edge in by_edge:::#1", - "convergences.py::if plan.primary_trunk_member_id == membership.member_id:::#1", "convergences.py::if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:::#1", "convergences.py::if plan.trunk_axis is None:::#1", "convergences.py::if plan.trunk_axis is None:::#2", @@ -263,7 +269,6 @@ "convergences.py::if primary is None:::#1", "convergences.py::if primary_edge is not None and plan.primary_trunk_member_id is not None:::#1", "convergences.py::if query is None:::#1", - "convergences.py::if require_clear_segments:::#1", "convergences.py::if requirement is None:::#1", "convergences.py::if requirement is None:::#2", "convergences.py::if requirement is not None:::#1", @@ -292,6 +297,7 @@ "convergences.py::if same_line and first_direction is not second_direction:::#1", "convergences.py::if section is None:::#1", "convergences.py::if shared_carrier and separation > COORD_TOLERANCE:::#1", + "convergences.py::if tail is None:::#2", "convergences.py::if tail is not None and _points_coincide(tail[0], landing.join_point):::#1", "convergences.py::if topology is None:::#1", "convergences.py::if trunk_edge_key is None:::#1", @@ -301,10 +307,12 @@ "convergences.py::landing.approach_axis is DemandAxis.X::#1", "convergences.py::landing.member_id == plan.primary_trunk_member_id::#1", "convergences.py::landing.opening_turn_segment is not None::#1", + "convergences.py::not landing.bypass::#1", "convergences.py::obstacle_segment is None::#1", "convergences.py::opening is None::#1", "convergences.py::or abs(after[0] - end[0]) > COORD_TOLERANCE::#1", "convergences.py::or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE::#1", + "convergences.py::or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", "convergences.py::or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", "convergences.py::or axis.axis is not DemandAxis.X::#1", "convergences.py::or emitted_segment != landing.opening_turn_segment::#1", @@ -312,6 +320,7 @@ "convergences.py::or handedness is not landing.corner_handedness::#1", "convergences.py::or landing.opening_turn_segment is None::#1", "convergences.py::or landing_segment is None::#1", + "convergences.py::or opening is None::#1", "convergences.py::or runway < landing.minimum_runway - COORD_TOLERANCE::#1", "convergences.py::outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE::#1", "convergences.py::owner_edge not in edge_ranks::#1", @@ -490,7 +499,6 @@ "inter_section_handlers.py::if _h_segment_crosses_other_section(graph, sx, gap1_x, emitted_source_y, exclude):::#1", "inter_section_handlers.py::if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):::#1", "inter_section_handlers.py::if _v_segment_crosses_other_section(graph, corner_x, src.y, ey, exclude):::#1", - "inter_section_handlers.py::if _v_segment_crosses_other_section(graph, dx, src.y, tgt.y, exclude):::#1", "inter_section_handlers.py::if _would_route_around_section_below(other, ctx):::#1", "inter_section_handlers.py::if abs(ep.y - f.sy) < ctx.curve_radius:::#1", "inter_section_handlers.py::if abs(js.x - src.x) <= COORD_TOLERANCE:::#1", @@ -660,6 +668,7 @@ "member_geometry.py::if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if abs(channel.x - target) <= COORD_TOLERANCE:::#1", + "member_geometry.py::if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if actual != (channel.start, channel.end):::#1", "member_geometry.py::if all(::#1", "member_geometry.py::if allocated is None:::#1", @@ -679,7 +688,6 @@ "member_geometry.py::if membership is not None:::#1", "member_geometry.py::if movable_run:::#1", "member_geometry.py::if not _candidate_clears_runway(::#1", - "member_geometry.py::if not any(::#1", "member_geometry.py::if not candidate_ranks:::#1", "member_geometry.py::if not changed:::#1", "member_geometry.py::if not ctx.validate_final_route_frames:::#1", @@ -692,6 +700,7 @@ "member_geometry.py::if radius_index + 2 >= len(route.points):::#1", "member_geometry.py::if radius_index >= len(radii):::#1", "member_geometry.py::if rank < len(radii):::#1", + "member_geometry.py::if rank < len(route.exit_shared_opening_points):::#1", "member_geometry.py::if route is None:::#1", "member_geometry.py::if route is None:::#2", "member_geometry.py::if route.exit_lane_transition_plan_id is not None:::#1", @@ -714,6 +723,7 @@ "normalize.py::and base_out is not None::#1", "normalize.py::and crossed[0] < span[1]::#1", "normalize.py::and gt is not None::#1", + "normalize.py::and span[0] < crossed[1]::#1", "normalize.py::assignment is None::#1", "normalize.py::band is not None::#1", "normalize.py::dx is None::#1", @@ -722,22 +732,22 @@ "normalize.py::elif right_ok:::#1", "normalize.py::elif up_ok:::#1", "normalize.py::for _ in range(max(1, len(buckets))):::#1", - "normalize.py::for _step in range(64):::#1", "normalize.py::for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):::#1", "normalize.py::for ch in downs:::#1", "normalize.py::for delta in (step, -step):::#1", "normalize.py::for descent in downs:::#1", "normalize.py::for group in _merge_feeder_groups(routes, ctx):::#1", "normalize.py::for grp in groups:::#3", + "normalize.py::for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):::#1", "normalize.py::for r, k, _y in crossing:::#1", "normalize.py::for sign in (1, -1):::#1", "normalize.py::for up in ups:::#1", + "normalize.py::for upstream in routes:::#1", "normalize.py::go is not None::#1", "normalize.py::if (::#1", "normalize.py::if (::#10", "normalize.py::if (::#12", "normalize.py::if (::#14", - "normalize.py::if (::#16", "normalize.py::if (::#9", "normalize.py::if (cross_below is not None and cross_above is not None) or not (::#1", "normalize.py::if 0 <= k - 1 < len(rp.curve_radii):::#1", @@ -748,7 +758,8 @@ "normalize.py::if a_trunk is None or b_trunk is None:::#1", "normalize.py::if abs(ch.x - descent.x) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(corner[1] - after[1]) <= COORD_TOLERANCE:::#1", - "normalize.py::if abs(delta) <= COORD_TOLERANCE:::#2", + "normalize.py::if abs(delta) <= COORD_TOLERANCE:::#1", + "normalize.py::if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:::#1", "normalize.py::if abs(dx) > COORD_TOLERANCE:::#1", "normalize.py::if abs(first_x - second_x) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(ly - pts[1][1]) < COORD_TOLERANCE:::#1", @@ -760,7 +771,6 @@ "normalize.py::if abs(up.x - descent.x) > radius:::#1", "normalize.py::if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:::#1", - "normalize.py::if actual - common <= COORD_TOLERANCE_FINE:::#1", "normalize.py::if all(::#1", "normalize.py::if allocated_offsets is None or allocated_bases is None:::#1", "normalize.py::if anchor_section_id is not None and anchor_side is not None:::#1", @@ -768,8 +778,8 @@ "normalize.py::if any(::#11", "normalize.py::if any(::#12", "normalize.py::if any(::#13", - "normalize.py::if any(::#14", "normalize.py::if any(::#6", + "normalize.py::if any(::#7", "normalize.py::if any(::#9", "normalize.py::if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):::#1", "normalize.py::if band is None:::#3", @@ -777,6 +787,7 @@ "normalize.py::if below_ok and above_ok and (cross_below is None) != (cross_above is None):::#1", "normalize.py::if best < cur:::#1", "normalize.py::if bool(mover.convergence_owned_segment_ranks) and not bool(::#1", + "normalize.py::if boundary_dogleg_stitch(rp, ch, target):::#1", "normalize.py::if ch.route.convergence_plan_id is not None:::#1", "normalize.py::if changed:::#2", "normalize.py::if channel is None:::#1", @@ -789,10 +800,12 @@ "normalize.py::if ctx.exit_turns is None:::#2", "normalize.py::if ctx.validate_final_route_frames:::#1", "normalize.py::if down is None or len(up.points) < 2:::#1", + "normalize.py::if end_idx >= len(route.points):::#1", "normalize.py::if feats is None:::#1", "normalize.py::if gap_right <= gap_left:::#1", "normalize.py::if gap_right <= gap_left:::#2", "normalize.py::if has_immovable_planned_channel and any(::#1", + "normalize.py::if hi - lo <= 2 * COORD_TOLERANCE:::#1", "normalize.py::if i in relocated:::#1", "normalize.py::if k < len(rp.curve_radii) and k + 2 < len(pts):::#1", "normalize.py::if k == desc.idx + 1:::#1", @@ -813,11 +826,10 @@ "normalize.py::if not 0 <= radius_idx < len(rp.curve_radii):::#1", "normalize.py::if not any(not t.route.normalize_exempt for t in grp):::#2", "normalize.py::if not blockers:::#1", - "normalize.py::if not changed:::#1", "normalize.py::if not chans:::#1", "normalize.py::if not crossing:::#1", "normalize.py::if not downs or not ups:::#1", - "normalize.py::if not reference_fits(lower):::#1", + "normalize.py::if not primary and fixed_obstacles:::#1", "normalize.py::if not sibling_xs:::#1", "normalize.py::if not verticals:::#1", "normalize.py::if not votes:::#1", @@ -831,8 +843,6 @@ "normalize.py::if reconcile_owned_corridor:::#2", "normalize.py::if reconcile_owned_corridor:::#4", "normalize.py::if ref is not None:::#1", - "normalize.py::if rep_x[a] != rep_x[b]:::#1", - "normalize.py::if resolved < common:::#1", "normalize.py::if route.curve_radii is None or membership is None:::#1", "normalize.py::if route.curve_radii is None:::#1", "normalize.py::if route_system_owns_segment_boundary(route, opening.idx):::#1", @@ -846,33 +856,37 @@ "normalize.py::if slot is None or trunk is None or trunk[0] != k:::#1", "normalize.py::if source_col is None:::#1", "normalize.py::if source_section is not None and source_section.bbox_w > 0:::#1", - "normalize.py::if target is None:::#1", "normalize.py::if target_x is None:::#1", "normalize.py::if target_y is None:::#1", "normalize.py::if up.route.line_id != descent.route.line_id:::#1", + "normalize.py::not secondary_may_yield_at_shared_source::#1", "normalize.py::or abs(corner[1] - after[1]) > COORD_TOLERANCE::#1", "normalize.py::or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p1[0] - p2[0]) > COORD_TOLERANCE::#1", "normalize.py::or abs(p2[1] - p3[1]) > COORD_TOLERANCE::#1", + "normalize.py::or any(run.route.exit_turn_plan_id is not None for run in lane.runs)::#1", "normalize.py::or assignment.turn_direction is None::#1", "normalize.py::or base_radius is None::#1", "normalize.py::or entry is None::#1", "normalize.py::or len(route.points) < 3::#1", "normalize.py::or len(upstream.points) < 2::#1", "normalize.py::or not 0 <= radius_index < len(route.curve_radii)::#1", + "normalize.py::or not lane_sources & fixed_sources::#1", "normalize.py::or port is None::#1", "normalize.py::or port.side not in (PortSide.LEFT, PortSide.RIGHT)::#1", "normalize.py::or radius_index + 2 >= len(route.points)::#1", + "normalize.py::or upstream.line_id != mover.line_id::#1", + "normalize.py::upstream.edge.target != mover.edge.source::#1", "offsets.py::and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE::#1", "offsets.py::elif feeding_exit != edge.source:::#1", "offsets.py::for _ in range(len(graph.stations) + 1):::#1", - "offsets.py::for _ in range(len(seed_lines)):::#1", "offsets.py::for _ in range(max_iterations):::#1", "offsets.py::for _iteration in range(len(ctx.graph.sections) + 1):::#1", "offsets.py::for edge in graph.edges_from(port_id):::#2", - "offsets.py::for lid in above:::#1", "offsets.py::for other in lines:::#1", "offsets.py::for other_lid in nbr_lines:::#1", + "offsets.py::if (::#3", + "offsets.py::if (cur_sid, cur_lid) in visited:::#1", "offsets.py::if (tgt_id, lid) not in ctx.offsets:::#1", "offsets.py::if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:::#1", @@ -891,9 +905,11 @@ "offsets.py::if entry.side not in (PortSide.LEFT, PortSide.RIGHT):::#1", "offsets.py::if entry_port is None:::#1", "offsets.py::if exit_lines == set(j_lines):::#1", + "offsets.py::if free is None:::#1", "offsets.py::if gap is not None:::#1", "offsets.py::if internal_offs:::#1", "offsets.py::if key not in ctx.offsets:::#1", + "offsets.py::if len(nbr_lines) < 2:::#1", "offsets.py::if len(seed_lines) < 2:::#2", "offsets.py::if len(set(feeder_row.values())) < 2:::#1", "offsets.py::if len(shared) < 2:::#1", @@ -926,6 +942,7 @@ "offsets.py::if nxt in seen:::#1", "offsets.py::if off is not None:::#1", "offsets.py::if ordered != expected:::#1", + "offsets.py::if other_lid == cur_lid:::#1", "offsets.py::if paired_off is not None:::#1", "offsets.py::if pending is None:::#2", "offsets.py::if port.section_id is None:::#1", @@ -1000,7 +1017,9 @@ "reserved_bands.py::if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:::#1", "reserved_bands.py::if band is None:::#2", "reserved_bands.py::if boundary is None:::#1", - "reserved_bands.py::if realised is None:::#1", + "reserved_bands.py::if content_band is not None:::#1", + "reserved_bands.py::if lower > upper + COORD_TOLERANCE:::#1", + "reserved_bands.py::if not isinstance(::#1", "reserved_bands.py::if realised is None:::#2", "reserved_bands.py::if seat is None:::#1", "reserved_bands.py::if self.allocation is not None and not math.isfinite(self.allocation):::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index 03ddf4bd6..efe92c186 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -59,10 +59,6 @@ "note": "A complete entry port assigns every distinct line a unique station-offset slot. Duplicate port-Y values therefore require a malformed route set that bypassed station offset allocation; test_invalid_opposing_candidate_is_rejected[duplicate-port-slot] exercises the rejection directly.", "status": "defensive" }, - "common.py::if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:::#1": { - "note": "A complete destination bundle receives one contiguous n-slot channel band from gap materialization, so its peel-X extent cannot exceed (n-1)*step. The wider-band arm protects hand-built or corrupted route geometry and is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-channel-band].", - "status": "defensive" - }, "common.py::if n == 0:::#1": { "note": "Empty-bundle guard: all callers (normalize.py 291/1648, inter_section_handlers.py 783/796/2132) derive bundle_widths from a non-empty bundle line count, so n is always >=1; the empty-list arm is never taken.", "status": "defensive" @@ -135,10 +131,6 @@ "note": "Defensive in iter_inter_row_gaps (consumed by inter_row_gap_upper_row and _inter_row_gap_band): adjacent rows in the sorted section-row set both contain sections, so row_bottom_edge / row_top_edge resolve; the None skip arm guards a row with no sections that the iteration never yields.", "status": "defensive" }, - "common.py::if trunk_ys[-1] - trunk_ys[0] <= COORD_TOLERANCE:::#1": { - "note": "Degenerate single-Y trunk band in iter_port_peeloff_bundles: a peel-off bundle is yielded only when its members ride trunks at distinct depths, so the equal-depth arm guards a same-Y bundle the trunk-slot materialization never leaves; render-diff confirms no visual change.", - "status": "needs-review" - }, "context.py::if edge.line_id in line_pos:::#1": { "note": "line_pos is built from the line IDs of the very all_outgoing list this loop iterates, so the membership test is always true: the reject/loop-back arm (L684) is an unreachable tautology and the enter-body static arc (L686) is a phantom of the real 685->687. Vestigial tautological guard. The deliberate gap is pinned by test_genuine_dead_arm_not_masked_as_covered (arc normalization must not merge the never-taken branch onto the live one). Reclassified defensive (#762).", "status": "defensive" @@ -227,14 +219,6 @@ "note": "The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it.", "status": "needs-review" }, - "convergences.py::if (::#6": { - "note": "A landing enters `ordered` only because _landing_cross_segment admitted it, and laning moves that run rather than removing it, so the read that names the landing as a resident always finds a segment. The gate guards the Optional that read returns.", - "status": "defensive" - }, - "convergences.py::if not moved_channels or any(::#1": { - "note": "Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored.", - "status": "needs-review" - }, "convergences.py::if axis is None or axis.axis is not DemandAxis.X:::#3": { "note": "Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer).", "status": "defensive" @@ -699,10 +683,6 @@ "note": "Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner.", "status": "defensive" }, - "normalize.py::for _step in range(64):::#1": { - "note": "Fixed-iteration bisection used only when a defensive coincident-radius repair must lower one route. The correction and completed bisection are exercised by test_unify_uses_widest_radius_all_shared_legs_can_resolve.", - "status": "defensive" - }, "normalize.py::for grp in groups:::#3": { "note": "_suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note).", "status": "defensive" @@ -727,10 +707,6 @@ "note": "_clear_merge_trunk_opposite_arm moves every down-leg sharing the folding descent's column and skips those on other columns. The corpus's one folding descent carries all its down-legs on a single shared column, so the other-column skip arm stays un-exercised. Defensive against a fork with down-legs spread over several columns.", "status": "defensive" }, - "normalize.py::if abs(delta) <= COORD_TOLERANCE:::#2": { - "note": "_snap_merge_feeder_group skips a merge feeder whose opening descent already sits on the trunk's shared column (no shift needed). The corpus's merge feeders all reach the trunk from a distinct column, so the already-coincident skip arm stays un-exercised. Defensive and idempotent across the routing replays a render performs.", - "status": "defensive" - }, "normalize.py::if abs(ly - pts[1][1]) < COORD_TOLERANCE:::#1": { "note": "A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", "status": "defensive" @@ -743,10 +719,6 @@ "note": "The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint.", "status": "defensive" }, - "normalize.py::if actual - common <= COORD_TOLERANCE_FINE:::#1": { - "note": "Production coincident turns have enough shared runway after planning and already resolve to the same radius. The correction arm is a defensive repair for directly supplied or future route geometry and is exercised by the coincident-corner unit tests.", - "status": "defensive" - }, "normalize.py::if allocated_offsets is None or allocated_bases is None:::#1": { "note": "A validation-eligible settled exit turn must publish both offset and base tuples before emission. Missing either is an engine-contract violation exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership.", "status": "defensive" @@ -807,10 +779,6 @@ "note": "_suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path.", "status": "defensive" }, - "normalize.py::if not changed:::#1": { - "note": "The production corpus reaches the immediate fixed point because coincident members already share an effective radius. The continue-for-propagation arm is a defensive repair path covered by test_unify_refreshes_a_shared_route_after_changing_one_corner.", - "status": "defensive" - }, "normalize.py::if not verticals:::#1": { "note": "Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597).", "status": "defensive" @@ -823,14 +791,6 @@ "note": "_clear_merge_trunk_opposite_arm skips an opposite arm within a curve radius of the down-trunk but not overlapping it in Y, since without a shared Y span there is no fold-back to clear. The corpus's qualifying fork overlaps in Y, so the no-overlap skip arm stays un-exercised. Defensive against a near-column opposite arm that clears the trunk vertically.", "status": "defensive" }, - "normalize.py::if rep_x[a] != rep_x[b]:::#1": { - "note": "The routing system assigns distinct x offsets to every line sharing a column gap, so two distinct lines in one gap-bundle corridor never share a representative x; the equal-rep_x tiebreak fall-through in _distinct_line_order is unreachable (exhaustive corpus scan confirms). Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", - "status": "defensive" - }, - "normalize.py::if resolved < common:::#1": { - "note": "Both bisection directions belong to the defensive coincident-radius repair rather than ordinary topology dispatch. The short-runway unit case exercises the search and verifies the final common effective radius.", - "status": "defensive" - }, "normalize.py::if route.curve_radii is None or membership is None:::#1": { "note": "A validation-eligible settled exit-turn route is emitted from its member plan with explicit radii and membership in the same exit-turn execution. Missing either reports incomplete engine ownership; both arms are exercised by test_gap_plan_radius_validator_rejects_incomplete_ownership.", "status": "defensive" @@ -891,10 +851,6 @@ "note": "This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", "status": "defensive" }, - "offsets.py::for _ in range(max_iterations):::#1": { - "note": "The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path.", - "status": "defensive" - }, "offsets.py::for other in lines:::#1": { "note": "In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762).", "status": "defensive" @@ -915,10 +871,6 @@ "note": "In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed.", "status": "needs-review" }, - "offsets.py::if any(::#4": { - "note": "This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state.", - "status": "defensive" - }, "offsets.py::if cur in seen:::#1": { "note": "In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed.", "status": "needs-review" @@ -948,7 +900,7 @@ "status": "defensive" }, "offsets.py::if lid not in seen:::#1": { - "note": "The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable \u2014 the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", + "note": "The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken.", "status": "defensive" }, "offsets.py::if local_offset is None or not (::#1": { @@ -1135,10 +1087,6 @@ "note": "Optional-boundary convenience for callers carrying an unresolved grid index (_left_exit_wrap_over_top_y takes tgt_row: int | None). Such a caller returns before it needs a band -- with no target row there is no gap above it to measure, so the wrap is rejected first -- leaving this arm a type-level accommodation no topology reaches.", "status": "defensive" }, - "reserved_bands.py::if realised is None:::#1": { - "note": "realise_reservation returns None only for a canvas-side corridor measured without canvas bounds; this loop has already narrowed to row-gap or column-gap claims, which always measure. The arm satisfies the optional return type rather than a reachable state.", - "status": "defensive" - }, "reserved_bands.py::if self.allocation is not None and not math.isfinite(self.allocation):::#1": { "note": "Published allocations originate from finite observed route coordinates plus finite reservation translations. A non-finite value can only reach ReservedBand through malformed direct construction; the guard keeps invalid coordinates out of planner seating.", "status": "defensive" @@ -1194,5 +1142,13 @@ "tb_handlers.py::if tgt_sec is not None and tgt_sec.direction not in (\"TB\", \"BT\"):::#1": { "note": "Perp-entry drop crossing-X override: the edge's target is always a sectioned station, so tgt_sec resolves and the `tgt_sec is None` short-circuit to the plain drop is never taken; the `direction in (TB, BT)` arm (a drop continuing into a vertical-flow trunk) and the horizontal-target arm are both exercised.", "status": "defensive" + }, + "offsets.py::for _ in range(max_iterations):::#1": { + "note": "The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path.", + "status": "defensive" + }, + "offsets.py::if any(::#4": { + "note": "This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state.", + "status": "defensive" } } From 187f846030943e1f5c67ab9a68980bd3f789bd26 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 00:35:51 +0100 Subject: [PATCH 109/158] test(guards): refresh the guard golden for the reflowed funcprofiler layout (cherry picked from commit 158d80dcc9be5f60d2185502216902bf75324f4e) --- .../topologies/funcprofiler_upstream.json | 392 +++++++++++++++++- 1 file changed, 385 insertions(+), 7 deletions(-) diff --git a/tests/data/guard_golden/examples/topologies/funcprofiler_upstream.json b/tests/data/guard_golden/examples/topologies/funcprofiler_upstream.json index f5d4c702c..cd38b963c 100644 --- a/tests/data/guard_golden/examples/topologies/funcprofiler_upstream.json +++ b/tests/data/guard_golden/examples/topologies/funcprofiler_upstream.json @@ -148,12 +148,6 @@ "_guard_no_mixed_entry_directions|None", "_guard_no_same_row_backward_feed|None", "_guard_no_mixed_entry_directions|None", - "_guard_no_same_row_backward_feed|None", - "_guard_no_mixed_entry_directions|None", - "_guard_no_same_row_backward_feed|None", - "_guard_no_mixed_entry_directions|None", - "_guard_no_same_row_backward_feed|None", - "_guard_no_mixed_entry_directions|None", "_guard_section_bboxes_positive|after Stage 1.1", "_guard_no_negative_grid_columns|after Stage 1.1", "_guard_explicit_grid_directions|after Stage 1.1", @@ -312,6 +306,367 @@ "_guard_symmetric_diamond_branches_straddle_trunk|final", "_guard_symmetric_diamond_branches_half_pitch|final", "_guard_converge_siblings_merge_locally|final", + "_guard_no_same_row_backward_feed|None", + "_guard_no_mixed_entry_directions|None", + "_guard_no_same_row_backward_feed|None", + "_guard_no_mixed_entry_directions|None", + "_guard_no_same_row_backward_feed|None", + "_guard_no_mixed_entry_directions|None", + "_guard_no_same_row_backward_feed|None", + "_guard_no_mixed_entry_directions|None", + "_guard_no_same_row_backward_feed|None", + "_guard_no_mixed_entry_directions|None", + "_guard_section_bboxes_positive|after Stage 1.1", + "_guard_no_negative_grid_columns|after Stage 1.1", + "_guard_explicit_grid_directions|after Stage 1.1", + "_guard_fold_relocated_flow_ports_face_connections|after Stage 1.1", + "_guard_tall_anchor_stack_well_formed|after Stage 1.1", + "_guard_independent_components_disjoint|after Stage 1.3", + "_guard_multi_section_cell_packed|after Stage 1.3", + "_guard_coordinates_finite|after Stage 2.1", + "_guard_stations_in_sections|after Stage 2.1", + "_guard_section_bboxes_positive|after Stage 2.1", + "_guard_ports_on_boundaries|after Stage 3.1", + "_guard_ports_on_boundaries|after top-align", + "_guard_anchors_frozen_during_placement|Stage 4.9 _apply_planned_fan_geometry", + "_guard_anchors_frozen_during_placement|Stage 4.9 _redistribute_fanout_siblings", + "_guard_anchors_frozen_during_placement|Stage 4.10 _redistribute_full_bundle_columns", + "_guard_coordinates_finite|after Stage 5.2", + "_guard_section_bboxes_positive|after Stage 5.2", + "_guard_ports_on_boundaries|after Stage 5.2", + "_guard_station_x_column_drift|after Stage 5.2", + "_guard_coordinates_finite|after Stage 5.3", + "_guard_section_bboxes_positive|after Stage 5.3", + "_guard_stations_in_sections|after Stage 5.3", + "_guard_ports_on_boundaries|after Stage 5.3", + "_guard_station_x_column_drift|after Stage 5.3", + "_guard_coordinates_finite|after Stage 5.4", + "_guard_section_bboxes_positive|after Stage 5.4", + "_guard_stations_in_sections|after Stage 5.4", + "_guard_ports_on_boundaries|after Stage 5.4", + "_guard_station_x_column_drift|after Stage 5.4", + "_guard_coordinates_finite|after Stage 5.5", + "_guard_section_bboxes_positive|after Stage 5.5", + "_guard_stations_in_sections|after Stage 5.5", + "_guard_ports_on_boundaries|after Stage 5.5", + "_guard_station_x_column_drift|after Stage 5.5", + "_guard_anchors_frozen_during_placement|Stage 6.1 _fan_free_content_upward", + "_guard_coordinates_finite|after Stage 6.1", + "_guard_section_bboxes_positive|after Stage 6.1", + "_guard_stations_in_sections|after Stage 6.1", + "_guard_ports_on_boundaries|after Stage 6.1", + "_guard_station_x_column_drift|after Stage 6.1", + "_guard_anchors_frozen_during_placement|Stage 6.2 _fan_source_inputs_upward", + "_guard_coordinates_finite|after Stage 6.2", + "_guard_section_bboxes_positive|after Stage 6.2", + "_guard_stations_in_sections|after Stage 6.2", + "_guard_ports_on_boundaries|after Stage 6.2", + "_guard_station_x_column_drift|after Stage 6.2", + "_guard_coordinates_finite|after Stage 6.4", + "_guard_section_bboxes_positive|after Stage 6.4", + "_guard_stations_in_sections|after Stage 6.4", + "_guard_ports_on_boundaries|after Stage 6.4", + "_guard_no_station_overlap|after Stage 6.4", + "_guard_no_coincident_station_coords|after Stage 6.4", + "_guard_fork_join_hub_centreline_agree|after Stage 6.4", + "_guard_station_x_column_drift|after Stage 6.4", + "_guard_coordinates_finite|after Stage 6.5", + "_guard_section_bboxes_positive|after Stage 6.5", + "_guard_stations_in_sections|after Stage 6.5", + "_guard_ports_on_boundaries|after Stage 6.5", + "_guard_no_station_overlap|after Stage 6.5", + "_guard_no_coincident_station_coords|after Stage 6.5", + "_guard_fork_join_hub_centreline_agree|after Stage 6.5", + "_guard_station_x_column_drift|after Stage 6.5", + "_guard_coordinates_finite|after Stage 6.6", + "_guard_section_bboxes_positive|after Stage 6.6", + "_guard_stations_in_sections|after Stage 6.6", + "_guard_ports_on_boundaries|after Stage 6.6", + "_guard_no_station_overlap|after Stage 6.6", + "_guard_no_coincident_station_coords|after Stage 6.6", + "_guard_fork_join_hub_centreline_agree|after Stage 6.6", + "_guard_station_x_column_drift|after Stage 6.6", + "_guard_coordinates_finite|after Stage 6.10", + "_guard_section_bboxes_positive|after Stage 6.10", + "_guard_stations_in_sections|after Stage 6.10", + "_guard_ports_on_boundaries|after Stage 6.10", + "_guard_no_station_overlap|after Stage 6.10", + "_guard_no_coincident_station_coords|after Stage 6.10", + "_guard_fork_join_hub_centreline_agree|after Stage 6.10", + "_guard_station_x_column_drift|after Stage 6.10", + "_guard_anchors_frozen_during_placement|Stage 6.11 _balance_section_content_around_trunk", + "_guard_coordinates_finite|after Stage 6.11", + "_guard_section_bboxes_positive|after Stage 6.11", + "_guard_stations_in_sections|after Stage 6.11", + "_guard_ports_on_boundaries|after Stage 6.11", + "_guard_no_station_overlap|after Stage 6.11", + "_guard_no_coincident_station_coords|after Stage 6.11", + "_guard_fork_join_hub_centreline_agree|after Stage 6.11", + "_guard_station_x_column_drift|after Stage 6.11", + "_guard_anchors_frozen_during_placement|Stage 6.12 _recenter_loop_side_stations", + "_guard_coordinates_finite|after Stage 6.12", + "_guard_section_bboxes_positive|after Stage 6.12", + "_guard_stations_in_sections|after Stage 6.12", + "_guard_ports_on_boundaries|after Stage 6.12", + "_guard_no_station_overlap|after Stage 6.12", + "_guard_no_coincident_station_coords|after Stage 6.12", + "_guard_fork_join_hub_centreline_agree|after Stage 6.12", + "_guard_station_x_column_drift|after Stage 6.12", + "_guard_coordinates_finite|after Stage 6.13", + "_guard_section_bboxes_positive|after Stage 6.13", + "_guard_stations_in_sections|after Stage 6.13", + "_guard_ports_on_boundaries|after Stage 6.13", + "_guard_no_station_overlap|after Stage 6.13", + "_guard_no_coincident_station_coords|after Stage 6.13", + "_guard_fork_join_hub_centreline_agree|after Stage 6.13", + "_guard_station_x_column_drift|after Stage 6.13", + "_guard_coordinates_finite|after Stage 6.14", + "_guard_section_bboxes_positive|after Stage 6.14", + "_guard_stations_in_sections|after Stage 6.14", + "_guard_ports_on_boundaries|after Stage 6.14", + "_guard_no_station_overlap|after Stage 6.14", + "_guard_no_coincident_station_coords|after Stage 6.14", + "_guard_fork_join_hub_centreline_agree|after Stage 6.14", + "_guard_no_line_crosses_non_consumer|after Stage 6.14", + "_guard_sparse_loop_station_clears_column_neighbour|after Stage 6.14", + "_guard_station_x_column_drift|after Stage 6.14", + "_guard_coordinates_finite|after Stage 6.15", + "_guard_section_bboxes_positive|after Stage 6.15", + "_guard_stations_in_sections|after Stage 6.15", + "_guard_ports_on_boundaries|after Stage 6.15", + "_guard_no_station_overlap|after Stage 6.15", + "_guard_no_coincident_station_coords|after Stage 6.15", + "_guard_fork_join_hub_centreline_agree|after Stage 6.15", + "_guard_no_line_crosses_non_consumer|after Stage 6.15", + "_guard_sparse_loop_station_clears_column_neighbour|after Stage 6.15", + "_guard_station_x_column_drift|after Stage 6.15", + "_guard_coordinates_finite|after Stage 6.16", + "_guard_section_bboxes_positive|after Stage 6.16", + "_guard_stations_in_sections|after Stage 6.16", + "_guard_ports_on_boundaries|after Stage 6.16", + "_guard_no_station_overlap|after Stage 6.16", + "_guard_no_coincident_station_coords|after Stage 6.16", + "_guard_fork_join_hub_centreline_agree|after Stage 6.16", + "_guard_no_line_crosses_non_consumer|after Stage 6.16", + "_guard_sparse_loop_station_clears_column_neighbour|after Stage 6.16", + "_guard_station_x_column_drift|after Stage 6.16", + "_guard_anchors_frozen_during_placement|Stage 6.17 _apply_planned_fan_geometry", + "_guard_coordinates_finite|after final", + "_guard_section_bboxes_positive|after final", + "_guard_stations_in_sections|after final", + "_guard_ports_on_boundaries|after final", + "_guard_no_station_overlap|after final", + "_guard_no_coincident_station_coords|after final", + "_guard_fork_join_hub_centreline_agree|after final", + "_guard_no_line_crosses_non_consumer|after final", + "_guard_sparse_loop_station_clears_column_neighbour|after final", + "_guard_station_x_column_drift|after final", + "_guard_planned_fan_frame_realised|after final", + "_guard_port_station_coords_synced|after final", + "_guard_no_section_overlap|after final", + "_guard_column_run_shares_its_anchored_edge|after final", + "_guard_row_trunk_cy_consistent|after final", + "_guard_off_track_clear_of_anchor|after final", + "_guard_fanout_junction_shares_exit_port_y|after final", + "_guard_fanout_junction_resolves_upstream|after final", + "_guard_entry_port_not_opposite_targets|after final", + "_guard_entry_port_fed_only_by_ports|after final", + "_guard_flow_exit_anchored_to_carrier|after final", + "_guard_wrap_exit_anchored_to_carrier|after final", + "_guard_fold_lr_exit_follows_target|after final", + "_guard_fold_lr_exit_sections_share_bbox_bottom|after final", + "_guard_stacked_rows_fill_rowspan_band|after final", + "_guard_perp_fed_entry_anchored_to_consumer|after final", + "_guard_corridor_fed_solo_rides_trunk|after final", + "_guard_perp_entry_clears_vertical_trunk_head|after final", + "_guard_post_convergence_trunk_continues|after final", + "_guard_perp_entry_feed_not_collinear|after final", + "_guard_merge_port_approach_side|after final", + "_guard_convergence_shallow_feeder_concentric|after final", + "_guard_station_bundle_contiguous_at_fan_port|after final", + "_guard_merge_port_outgoing_side_preserved|after final", + "_guard_exit_inherits_entry_bundle_order|after final", + "_guard_bypass_port_no_slot_gaps|after final", + "_guard_partial_branch_offset_gaps|after final", + "_guard_row_gaps|after final", + "_guard_section_top_padding|after final", + "_guard_section_bottom_padding|after final", + "_guard_terminus_icons_within_bbox|after final", + "_guard_inter_section_routes_in_row_band|after final", + "_guard_topmost_row_top_entry_hugs_section|after final", + "_guard_title_band_clearance|after final", + "_guard_off_track_output_clears_non_producer|after final", + "_guard_tb_exit_corner_column_order|after final", + "_guard_no_split_same_line_fanout_descents|after final", + "_guard_no_distinct_line_fanout_crossing|after final", + "_guard_fan_merge_no_partition_crossing|after final", + "_guard_trunk_continuation_drops_straight|after final", + "_guard_no_dogleg_crosses_exempt_trunk|after final", + "_guard_no_stacked_elbow_graze|after final", + "_guard_fanout_tail_join|after final", + "_guard_perp_entry_boundary_consistent|after final", + "_guard_perp_exit_over_leadin_no_overdip|after final", + "_guard_right_entry_drop_in_when_clear|after final", + "_guard_right_entry_corridor_descent_no_jog|after final", + "_guard_inter_section_route_no_backtrack|after final", + "_guard_inter_section_route_no_full_width_backtrack|after final", + "_guard_routes_enter_sections_at_ports|after final", + "_guard_port_legs_meet_rail_pill_on_own_rail|after final", + "_guard_rail_connector_ports_no_stub|after final", + "_guard_no_route_through_section|after final", + "_guard_inter_section_route_clears_own_section_interior|after final", + "_guard_feeder_exits_section_through_side|after final", + "_guard_entry_approach_from_port_side|after final", + "_guard_entry_landing_no_station_backtrack|after final", + "_guard_no_opposing_line_overlap|after final", + "_guard_serpentine_no_backtrack|after final", + "_guard_no_artefactual_counter_flow|after final", + "_guard_inter_row_run_clearance|after final", + "_guard_trunk_bands_crossing_optimal|after final", + "_guard_inter_section_descent_edge_clearance|after final", + "_guard_fan_bundles_coincide_or_separate|after final", + "_guard_ports_clear_unanchored_box_edges|after final", + "_guard_no_same_row_backward_feed|None", + "_guard_no_mixed_entry_directions|None", + "_guard_no_same_row_backward_feed|None", + "_guard_no_mixed_entry_directions|None", + "_guard_no_same_row_backward_feed|None", + "_guard_no_mixed_entry_directions|None", + "_guard_section_bboxes_positive|after Stage 1.1", + "_guard_no_negative_grid_columns|after Stage 1.1", + "_guard_explicit_grid_directions|after Stage 1.1", + "_guard_fold_relocated_flow_ports_face_connections|after Stage 1.1", + "_guard_tall_anchor_stack_well_formed|after Stage 1.1", + "_guard_independent_components_disjoint|after Stage 1.3", + "_guard_multi_section_cell_packed|after Stage 1.3", + "_guard_coordinates_finite|after Stage 2.1", + "_guard_stations_in_sections|after Stage 2.1", + "_guard_section_bboxes_positive|after Stage 2.1", + "_guard_ports_on_boundaries|after Stage 3.1", + "_guard_ports_on_boundaries|after top-align", + "_guard_anchors_frozen_during_placement|Stage 4.9 _apply_planned_fan_geometry", + "_guard_anchors_frozen_during_placement|Stage 4.9 _redistribute_fanout_siblings", + "_guard_anchors_frozen_during_placement|Stage 4.10 _redistribute_full_bundle_columns", + "_guard_coordinates_finite|after Stage 5.2", + "_guard_section_bboxes_positive|after Stage 5.2", + "_guard_ports_on_boundaries|after Stage 5.2", + "_guard_station_x_column_drift|after Stage 5.2", + "_guard_coordinates_finite|after Stage 5.3", + "_guard_section_bboxes_positive|after Stage 5.3", + "_guard_stations_in_sections|after Stage 5.3", + "_guard_ports_on_boundaries|after Stage 5.3", + "_guard_station_x_column_drift|after Stage 5.3", + "_guard_coordinates_finite|after Stage 5.4", + "_guard_section_bboxes_positive|after Stage 5.4", + "_guard_stations_in_sections|after Stage 5.4", + "_guard_ports_on_boundaries|after Stage 5.4", + "_guard_station_x_column_drift|after Stage 5.4", + "_guard_coordinates_finite|after Stage 5.5", + "_guard_section_bboxes_positive|after Stage 5.5", + "_guard_stations_in_sections|after Stage 5.5", + "_guard_ports_on_boundaries|after Stage 5.5", + "_guard_station_x_column_drift|after Stage 5.5", + "_guard_anchors_frozen_during_placement|Stage 6.1 _fan_free_content_upward", + "_guard_coordinates_finite|after Stage 6.1", + "_guard_section_bboxes_positive|after Stage 6.1", + "_guard_stations_in_sections|after Stage 6.1", + "_guard_ports_on_boundaries|after Stage 6.1", + "_guard_station_x_column_drift|after Stage 6.1", + "_guard_anchors_frozen_during_placement|Stage 6.2 _fan_source_inputs_upward", + "_guard_coordinates_finite|after Stage 6.2", + "_guard_section_bboxes_positive|after Stage 6.2", + "_guard_stations_in_sections|after Stage 6.2", + "_guard_ports_on_boundaries|after Stage 6.2", + "_guard_station_x_column_drift|after Stage 6.2", + "_guard_coordinates_finite|after Stage 6.4", + "_guard_section_bboxes_positive|after Stage 6.4", + "_guard_stations_in_sections|after Stage 6.4", + "_guard_ports_on_boundaries|after Stage 6.4", + "_guard_no_station_overlap|after Stage 6.4", + "_guard_no_coincident_station_coords|after Stage 6.4", + "_guard_fork_join_hub_centreline_agree|after Stage 6.4", + "_guard_station_x_column_drift|after Stage 6.4", + "_guard_coordinates_finite|after Stage 6.5", + "_guard_section_bboxes_positive|after Stage 6.5", + "_guard_stations_in_sections|after Stage 6.5", + "_guard_ports_on_boundaries|after Stage 6.5", + "_guard_no_station_overlap|after Stage 6.5", + "_guard_no_coincident_station_coords|after Stage 6.5", + "_guard_fork_join_hub_centreline_agree|after Stage 6.5", + "_guard_station_x_column_drift|after Stage 6.5", + "_guard_coordinates_finite|after Stage 6.6", + "_guard_section_bboxes_positive|after Stage 6.6", + "_guard_stations_in_sections|after Stage 6.6", + "_guard_ports_on_boundaries|after Stage 6.6", + "_guard_no_station_overlap|after Stage 6.6", + "_guard_no_coincident_station_coords|after Stage 6.6", + "_guard_fork_join_hub_centreline_agree|after Stage 6.6", + "_guard_station_x_column_drift|after Stage 6.6", + "_guard_coordinates_finite|after Stage 6.10", + "_guard_section_bboxes_positive|after Stage 6.10", + "_guard_stations_in_sections|after Stage 6.10", + "_guard_ports_on_boundaries|after Stage 6.10", + "_guard_no_station_overlap|after Stage 6.10", + "_guard_no_coincident_station_coords|after Stage 6.10", + "_guard_fork_join_hub_centreline_agree|after Stage 6.10", + "_guard_station_x_column_drift|after Stage 6.10", + "_guard_anchors_frozen_during_placement|Stage 6.11 _balance_section_content_around_trunk", + "_guard_coordinates_finite|after Stage 6.11", + "_guard_section_bboxes_positive|after Stage 6.11", + "_guard_stations_in_sections|after Stage 6.11", + "_guard_ports_on_boundaries|after Stage 6.11", + "_guard_no_station_overlap|after Stage 6.11", + "_guard_no_coincident_station_coords|after Stage 6.11", + "_guard_fork_join_hub_centreline_agree|after Stage 6.11", + "_guard_station_x_column_drift|after Stage 6.11", + "_guard_anchors_frozen_during_placement|Stage 6.12 _recenter_loop_side_stations", + "_guard_coordinates_finite|after Stage 6.12", + "_guard_section_bboxes_positive|after Stage 6.12", + "_guard_stations_in_sections|after Stage 6.12", + "_guard_ports_on_boundaries|after Stage 6.12", + "_guard_no_station_overlap|after Stage 6.12", + "_guard_no_coincident_station_coords|after Stage 6.12", + "_guard_fork_join_hub_centreline_agree|after Stage 6.12", + "_guard_station_x_column_drift|after Stage 6.12", + "_guard_coordinates_finite|after Stage 6.13", + "_guard_section_bboxes_positive|after Stage 6.13", + "_guard_stations_in_sections|after Stage 6.13", + "_guard_ports_on_boundaries|after Stage 6.13", + "_guard_no_station_overlap|after Stage 6.13", + "_guard_no_coincident_station_coords|after Stage 6.13", + "_guard_fork_join_hub_centreline_agree|after Stage 6.13", + "_guard_station_x_column_drift|after Stage 6.13", + "_guard_coordinates_finite|after Stage 6.14", + "_guard_section_bboxes_positive|after Stage 6.14", + "_guard_stations_in_sections|after Stage 6.14", + "_guard_ports_on_boundaries|after Stage 6.14", + "_guard_no_station_overlap|after Stage 6.14", + "_guard_no_coincident_station_coords|after Stage 6.14", + "_guard_fork_join_hub_centreline_agree|after Stage 6.14", + "_guard_no_line_crosses_non_consumer|after Stage 6.14", + "_guard_sparse_loop_station_clears_column_neighbour|after Stage 6.14", + "_guard_station_x_column_drift|after Stage 6.14", + "_guard_coordinates_finite|after Stage 6.15", + "_guard_section_bboxes_positive|after Stage 6.15", + "_guard_stations_in_sections|after Stage 6.15", + "_guard_ports_on_boundaries|after Stage 6.15", + "_guard_no_station_overlap|after Stage 6.15", + "_guard_no_coincident_station_coords|after Stage 6.15", + "_guard_fork_join_hub_centreline_agree|after Stage 6.15", + "_guard_no_line_crosses_non_consumer|after Stage 6.15", + "_guard_sparse_loop_station_clears_column_neighbour|after Stage 6.15", + "_guard_station_x_column_drift|after Stage 6.15", + "_guard_coordinates_finite|after Stage 6.16", + "_guard_section_bboxes_positive|after Stage 6.16", + "_guard_stations_in_sections|after Stage 6.16", + "_guard_ports_on_boundaries|after Stage 6.16", + "_guard_no_station_overlap|after Stage 6.16", + "_guard_no_coincident_station_coords|after Stage 6.16", + "_guard_fork_join_hub_centreline_agree|after Stage 6.16", + "_guard_no_line_crosses_non_consumer|after Stage 6.16", + "_guard_sparse_loop_station_clears_column_neighbour|after Stage 6.16", + "_guard_station_x_column_drift|after Stage 6.16", + "_guard_anchors_frozen_during_placement|Stage 6.17 _apply_planned_fan_geometry", "_guard_coordinates_finite|after final", "_guard_section_bboxes_positive|after final", "_guard_stations_in_sections|after final", @@ -386,6 +741,29 @@ "_guard_trunk_bands_crossing_optimal|after final", "_guard_inter_section_descent_edge_clearance|after final", "_guard_fan_bundles_coincide_or_separate|after final", - "_guard_ports_clear_unanchored_box_edges|after final" + "_guard_ports_clear_unanchored_box_edges|after final", + "_guard_no_label_overlap|final", + "_guard_no_diagonal_strikes_horizontal_label|final", + "_guard_no_line_strikes_label|final", + "_guard_bypass_v_flat_visible|final", + "_guard_no_wrapped_label_trunk_strike|final", + "_guard_file_icon_no_name_label|final", + "_guard_no_line_crosses_file_icon|final", + "_guard_centered_line_spread_balanced|final", + "_guard_rail_above_label_band|final", + "_guard_rail_stations_seat_on_rails|final", + "_guard_rail_one_station_per_column|final", + "_guard_single_trunk_off_track_step|final", + "_guard_off_track_consumer_on_trunk|final", + "_guard_symfan_entry_port_on_feeder_trunk|final", + "_guard_off_track_input_column_stack|final", + "_guard_off_track_not_hub|final", + "_guard_interchange_bar_clears_non_members|final", + "_guard_interchange_label_clears_connector|final", + "_guard_tb_top_entry_drop_hugs_top|final", + "_guard_side_entered_vertical_top_not_below_feeder|final", + "_guard_symmetric_diamond_branches_straddle_trunk|final", + "_guard_symmetric_diamond_branches_half_pitch|final", + "_guard_converge_siblings_merge_locally|final" ] } From b9b05adaf610b7d79502357c6b88a490ce407dd0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 01:00:39 +0100 Subject: [PATCH 110/158] fix(reservations): publish no content band where no box bounds the corridor A canvas corridor whose run passes no section has no content edge to be held off, and measuring one raises rather than returning a boundary. (cherry picked from commit 10bc77bd603f7e205db91c8c04ce80cef3feed43) --- src/nf_metro/layout/route_reservations.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index 25b1b8cc5..915bc693a 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -2595,14 +2595,19 @@ def canvas_content_band( if not isinstance(region, CanvasRegion): return None projected = _projected_claim_bounds(reservation, coordinate_translations) - measurement = _canvas_region_measurement( - graph, - region, - projected.longitudinal_start, - projected.longitudinal_end, - math.inf, - math.inf, - ) + try: + measurement = _canvas_region_measurement( + graph, + region, + projected.longitudinal_start, + projected.longitudinal_end, + math.inf, + math.inf, + ) + except ValueError: + # No box lies beside the corridor over its own run, so there is no + # content edge to hold it off and the margin is the canvas edge alone. + return None if region.side in CANVAS_EDGE_ON_NEGATIVE_SIDE: return (-math.inf, measurement.end - reservation.positive_side_clearance) return (measurement.start + reservation.negative_side_clearance, math.inf) From 8478accf0f0e662e7a99d903dee1c016c73b7ec5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 01:00:44 +0100 Subject: [PATCH 111/158] test(layout): measure the station grid on its own row's slot pitch A row whose widest bundle inflates its slot pitch holds every section in it on that wider pitch, so a station is on grid when it sits on its row's pitch, not the base spacing. Records funcprofiler's bypass in the feature manifest, which its settled geometry now carries. (cherry picked from commit 0ac27fccf298026c32db5df1d4351adfc7a34b1d) --- tests/data/layout_fixture_features.json | 1 + tests/test_layout_invariants.py | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/data/layout_fixture_features.json b/tests/data/layout_fixture_features.json index 2a113b29f..e71c2370f 100644 --- a/tests/data/layout_fixture_features.json +++ b/tests/data/layout_fixture_features.json @@ -26,6 +26,7 @@ "topologies/fanout_hub_two_line_trunk.mmd", "topologies/fold_bypass_creep.mmd", "topologies/fold_bypass_creep_tight.mmd", + "topologies/funcprofiler_upstream.mmd", "topologies/inrow_skip_breeze.mmd", "topologies/multirow_source_stacked_fan.mmd", "topologies/paired_input_fan_branch_tree.mmd", diff --git a/tests/test_layout_invariants.py b/tests/test_layout_invariants.py index 9a890dcfc..25ad44347 100644 --- a/tests/test_layout_invariants.py +++ b/tests/test_layout_invariants.py @@ -7002,11 +7002,12 @@ def test_all_stations_snap_to_grid(fixture): ) from nf_metro.layout.phases.fan_bundles import ( _section_has_symmetric_entry_fork, + _section_row_pitch, ) - y_spacing = 55.0 + base_spacing = 55.0 tol = 1.0 - graph = _layout(fixture, y_spacing=y_spacing) + graph = _layout(fixture, y_spacing=base_spacing) half_grid_ids = graph.half_grid_station_ids port_ids: set[str] = set() @@ -7022,15 +7023,21 @@ def test_all_stations_snap_to_grid(fixture): # centreline as a spine the join and any pass-through legitimately sit on. section_trunk_y: dict[str, float] = {} section_spine_y: dict[str, float] = {} + # A row whose widest bundle inflates its slot pitch past the base spacing + # holds every section in it on that wider pitch, so the grid a station is + # measured against is its own row's. + section_pitch: dict[str, float] = {} for sec in graph.sections.values(): if sec.direction not in ("LR", "RL") or sec.bbox_h <= 0: continue anchor = _first_lr_port(graph, sec) if anchor is None: continue + pitch = _section_row_pitch(graph, sec.id, base_spacing) + section_pitch[sec.id] = pitch anchor_id, anchor_y = anchor if anchor_id in half_grid_ids: - section_trunk_y[sec.id] = anchor_y + 0.5 * y_spacing + section_trunk_y[sec.id] = anchor_y + 0.5 * pitch section_spine_y[sec.id] = anchor_y else: section_trunk_y[sec.id] = anchor_y @@ -7087,6 +7094,7 @@ def test_all_stations_snap_to_grid(fixture): trunk_y = section_trunk_y.get(st.section_id) if trunk_y is None: continue + y_spacing = section_pitch.get(st.section_id, base_spacing) offset = (st.y - trunk_y) / y_spacing nearest_int = round(offset) on_grid = abs(offset - nearest_int) * y_spacing <= tol From 8894bddb514942bb3b6abbf584c673a1e7a978cf Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 01:31:48 +0100 Subject: [PATCH 112/158] refactor(routing): name the shared pieces the corridor and lane fixes use Carrier identity, the free-slot walk and the row-pitch reference each had one definition inlined at two sites; each now has a name, and the offset re-slot reads the module's own collision predicate instead of restating its tolerance. (cherry picked from commit f0233f2bdc576ed316cbc7bf513a4045897d5201) --- src/nf_metro/layout/ordering.py | 17 +++-- src/nf_metro/layout/route_reservations.py | 4 +- src/nf_metro/layout/routing/common.py | 2 + src/nf_metro/layout/routing/convergences.py | 33 ++++++---- src/nf_metro/layout/routing/offsets.py | 62 +++++++++++-------- src/nf_metro/layout/routing/reserved_bands.py | 6 +- .../data/routing_gate_coverage_baseline.json | 3 +- tests/test_linear_chain_flat_track.py | 17 ++--- 8 files changed, 79 insertions(+), 65 deletions(-) diff --git a/src/nf_metro/layout/ordering.py b/src/nf_metro/layout/ordering.py index c8eb9fc39..a88686802 100644 --- a/src/nf_metro/layout/ordering.py +++ b/src/nf_metro/layout/ordering.py @@ -359,24 +359,23 @@ def _place_single_node( # merely begin or end at either station add no incoming geometry, so a # changed line set alone is no reason to hop tracks. Falls through when # the predecessor's track is already taken at this layer. - sole_preds = list(G.predecessors(node)) + preds = list(G.predecessors(node)) + node_layer = layers.get(node, 0) if layers else 0 if ( - len(sole_preds) == 1 - and sole_preds[0] in tracks - and list(G.successors(sole_preds[0])) == [node] + len(preds) == 1 + and preds[0] in tracks + and list(G.successors(preds[0])) == [node] and not _is_track_occupied_at_layer( - tracks[sole_preds[0]], - layers.get(node, 0) if layers else 0, + tracks[preds[0]], + node_layer, layer_occupancy if layer_occupancy is not None else {}, node, ) ): - return tracks[sole_preds[0]] + return tracks[preds[0]] # Detect divergence: predecessor has more lines than this node if graph is not None: - preds = list(G.predecessors(node)) - node_layer = layers.get(node, 0) if layers else 0 node_lines = set(graph.station_lines(node)) pred_lines: set[str] = set() for p in preds: diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index 915bc693a..f6cb75513 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -2589,7 +2589,9 @@ def canvas_content_band( the canvas edge is sized from the content it ends up holding, so it is not. The half-band this returns is therefore open toward the canvas: it says how far the corridor must stay off the boxes it runs beside, and leaves growing - the canvas to the sizing that follows. ``None`` for a non-canvas region. + the canvas to the sizing that follows. The canvas extent goes in unbounded + for the same reason -- only the content edge of the measurement is spent. + ``None`` for a non-canvas region. """ region = reservation.region if not isinstance(region, CanvasRegion): diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index 8a46149a0..8eef3de3f 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -1368,6 +1368,8 @@ def iter_eligible_destination_tail_bundles( # track can name a lane another line already holds there. Seating on it # would draw the two lines as one stroke, which the corridor fan the # members arrive on has already spent tracks avoiding; leave them on it. + # Any shared stretch counts, not only one long enough to make the two + # corridor neighbours: the stroke overlays for as far as they share. if any( id(sibling.route) not in group_routes and sibling.route.line_id != trunk.route.line_id diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 814c3133d..6c86e65d3 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2468,6 +2468,21 @@ def on_central(point: tuple[float, float]) -> bool: ) +def _plan_carrier_ids(plan: ConvergencePlan) -> frozenset[str]: + """The endpoints whose stroke *plan*'s trunk carries. + + A run is named by the carriers that travel it rather than by the system it + belongs to: one route system can hold several convergences, and their runs + are neighbours of each other. + """ + return frozenset( + ( + *(landing.source_junction_id for landing in plan.landings), + *plan.target_entry_port_ids, + ) + ) + + def _trunk_corridor_run( plan: ConvergencePlan, graph: MetroGraph ) -> _CotravellingRun | None: @@ -2484,12 +2499,7 @@ def _trunk_corridor_run( max(start_x, end_x), axis.direction, frozenset(plan.line_ids), - frozenset( - ( - *(landing.source_junction_id for landing in plan.landings), - *plan.target_entry_port_ids, - ) - ), + _plan_carrier_ids(plan), inter_row_gap_upper_row(graph, coordinate), segments, ) @@ -2511,6 +2521,8 @@ def _plan_flank_corridor_runs( if axis is None or axis.axis is not DemandAxis.X: return () segments = _trunk_segments(axis) + line_ids = frozenset(plan.line_ids) + carrier_ids = _plan_carrier_ids(plan) runs: list[_CotravellingRun] = [] for source_side, (riser, flank) in ( (True, (segments[1], segments[2])), @@ -2532,13 +2544,8 @@ def _plan_flank_corridor_runs( min(start_x, end_x), max(start_x, end_x), _direction(*travel), - frozenset(plan.line_ids), - frozenset( - ( - *(landing.source_junction_id for landing in plan.landings), - *plan.target_entry_port_ids, - ) - ), + line_ids, + carrier_ids, inter_row_gap_upper_row(graph, start_y), (riser, flank, flank), ) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index ff24bb5f8..efd7ff59a 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -2936,6 +2936,24 @@ def _allocate_merge_ports_by_approach(ctx: _OffsetCtx) -> None: _apply_offsets_along_bundle(ctx, port_id, sec_id, new_offs) +def _nearest_free_slot( + ctx: _OffsetCtx, station_id: str, line_id: str, value: float, slots: int +) -> float | None: + """The slot nearest *value* on the station's pitch that no other line holds. + + Steps outward a slot at a time, taking the far side of *value* first so a + line displaced from a shared slot keeps its reading order with the bundle. + *slots* bounds the walk: the station's own lines are the only occupants, so + one of the first ``slots`` candidates either side is always free. + """ + step = ctx.offset_step + for distance in range(1, slots + 1): + for candidate in (value + distance * step, value - distance * step): + if not _would_collide(ctx, station_id, line_id, candidate): + return candidate + return None + + def _clear_carried_slot_collisions( ctx: _OffsetCtx, station_id: str, carried: dict[str, float] ) -> None: @@ -2946,37 +2964,31 @@ def _clear_carried_slot_collisions( carry lands on it the two lines draw as one stroke, so the line that is not part of the carried order moves to the nearest slot on the station's own pitch that nothing holds, on the side it already sits. + + Lines are taken in slot order and each move is published before the next is + chosen, so a line displaced here cannot be sent onto a slot a later one is + about to vacate. """ - step = ctx.offset_step - taken = { - lid: ctx.offsets.get((station_id, lid), 0.0) - for lid in ctx.graph.station_lines(station_id) - } - for lid, value in sorted(taken.items(), key=lambda item: item[1]): + lines = ctx.graph.station_lines(station_id) + if carried.keys().isdisjoint(lines): + return + seated = sorted( + ((lid, ctx.offsets.get((station_id, lid), 0.0)) for lid in lines), + key=lambda item: item[1], + ) + for lid, value in seated: if lid in carried: continue if not any( - other != lid and abs(taken[other] - value) <= _OFFSET_EQ_TOLERANCE - for other in taken - if other in carried + abs(ctx.offsets.get((station_id, other), 0.0) - value) + <= _OFFSET_EQ_TOLERANCE + for other in carried + if other != lid and other in lines ): continue - occupied = [other_value for other, other_value in taken.items() if other != lid] - free = next( - ( - candidate - for distance in range(1, len(taken) + 2) - for candidate in (value + distance * step, value - distance * step) - if not any( - abs(candidate - held) <= _OFFSET_EQ_TOLERANCE for held in occupied - ) - ), - None, - ) - if free is None: - continue - taken[lid] = free - ctx.offsets[(station_id, lid)] = free + free = _nearest_free_slot(ctx, station_id, lid, value, len(seated)) + if free is not None: + ctx.offsets[(station_id, lid)] = free def _apply_offsets_along_bundle( diff --git a/src/nf_metro/layout/routing/reserved_bands.py b/src/nf_metro/layout/routing/reserved_bands.py index 131e75515..a20a02eeb 100644 --- a/src/nf_metro/layout/routing/reserved_bands.py +++ b/src/nf_metro/layout/routing/reserved_bands.py @@ -576,11 +576,6 @@ def terminal_landing_band( is_row = isinstance(reservation.region, RowGapRegion) is_column = isinstance(reservation.region, ColumnGapRegion) allocation_axis = DemandAxis.Y if is_row else DemandAxis.X - band_key = ( - (round(lo / COORD_TOLERANCE), round(hi / COORD_TOLERANCE)) - if is_row or is_column - else (0, 0) - ) for claim in reservation.claims: claim_lo, claim_hi = terminal_landing_band(reservation, claim, lo, hi) edge = edge_by_member[claim.member_id] @@ -588,6 +583,7 @@ def terminal_landing_band( # The per-edge views answer "which grid boundary does this edge's # corridor cross", which a canvas margin crosses none of. if is_row or is_column: + band_key = (round(lo / COORD_TOLERANCE), round(hi / COORD_TOLERANCE)) bands_by_edge = row_by_edge if is_row else column_by_edge bands_by_edge.setdefault(edge_key, {}).setdefault(band_key, (lo, hi)) allocation = ( diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 390e84729..f829f54d7 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -882,6 +882,7 @@ "offsets.py::for _ in range(len(graph.stations) + 1):::#1", "offsets.py::for _ in range(max_iterations):::#1", "offsets.py::for _iteration in range(len(ctx.graph.sections) + 1):::#1", + "offsets.py::for distance in range(1, slots + 1):::#1", "offsets.py::for edge in graph.edges_from(port_id):::#2", "offsets.py::for other in lines:::#1", "offsets.py::for other_lid in nbr_lines:::#1", @@ -905,7 +906,7 @@ "offsets.py::if entry.side not in (PortSide.LEFT, PortSide.RIGHT):::#1", "offsets.py::if entry_port is None:::#1", "offsets.py::if exit_lines == set(j_lines):::#1", - "offsets.py::if free is None:::#1", + "offsets.py::if free is not None:::#1", "offsets.py::if gap is not None:::#1", "offsets.py::if internal_offs:::#1", "offsets.py::if key not in ctx.offsets:::#1", diff --git a/tests/test_linear_chain_flat_track.py b/tests/test_linear_chain_flat_track.py index 0366475e6..5e0d7172b 100644 --- a/tests/test_linear_chain_flat_track.py +++ b/tests/test_linear_chain_flat_track.py @@ -49,8 +49,6 @@ def _sole_links(graph: MetroGraph, members: set[str]) -> list[tuple[str, str]]: Both endpoints' full in/out degree is counted over the whole graph, so a station that also feeds a section exit is not treated as unbranched. """ - successors: dict[str, set[str]] = {member: set() for member in members} - predecessors: dict[str, set[str]] = {member: set() for member in members} out_degree: dict[str, set[str]] = {member: set() for member in members} in_degree: dict[str, set[str]] = {member: set() for member in members} for edge in graph.edges: @@ -58,16 +56,13 @@ def _sole_links(graph: MetroGraph, members: set[str]) -> list[tuple[str, str]]: out_degree[edge.source].add(edge.target) if edge.target in members: in_degree[edge.target].add(edge.source) - if edge.source in members and edge.target in members: - successors[edge.source].add(edge.target) - predecessors[edge.target].add(edge.source) return [ - (source, target) - for source, targets in successors.items() - for target in targets - if out_degree[source] == {target} - and in_degree[target] == {source} - and len(predecessors[target]) == 1 + (edge.source, edge.target) + for edge in graph.edges + if edge.source in members + and edge.target in members + and out_degree[edge.source] == {edge.target} + and in_degree[edge.target] == {edge.source} ] From dd84728527915675f888a345917d937010116f2e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 01:57:59 +0100 Subject: [PATCH 113/158] test(routing): refresh gate coverage for the combined quality tree --- docs/dev/routing_gate_coverage.md | 453 +++++++++++++++--------------- 1 file changed, 227 insertions(+), 226 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 55dac785c..b5a813338 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2389/3457** gates fully exercised (both/all arms hit by some fixture); **1068** gates have at least one un-exercised arm. +**2392/3461** gates fully exercised (both/all arms hit by some fixture); **1069** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -66,36 +66,36 @@ Gates with an un-exercised arm: | 1114 | `if port_ys[-1] - port_ys[0] > (n - 1) * step + COORD_TOLERANCE:` | `->L1115` | **defensive** -- Station offset allocation gives a complete n-line entry port one contiguous n-slot band, so its port-Y extent is exactly bounded by (n-1)*step. The wider-band reject is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-port-band]. | | 1121 | `if shared_hi - shared_lo < min_common_approach - COORD_TOLERANCE:` | `->L1122` | **defensive** -- Inter-row placement reserves at least the two-corner runway used by side-port peel-off handlers, so complete opposing entry tails share at least min_common_approach vertically. A shorter overlap is malformed settled geometry; test_invalid_opposing_candidate_is_rejected[insufficient-common-approach] exercises the guard. | | 1360 | `if pinned_bases and any(` | `->L1363` | | -| 1389 | `if k == 0 or k + 2 >= len(points):` | `->L1390` | | -| 1521 | `port is None` | `->L1526` | | -| 1522 | `or entry is None` | `->L1526` | | -| 1523 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L1526` | | -| 1524 | `or abs(entry.y - tgt.y) > COORD_TOLERANCE` | `->L1526` | | -| 1609 | `elif tgt_sec:` | `->L1617` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1720 | `if st is not None and st.is_port:` | `->L1718` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | -| 1769 | `if sec.bbox_w <= 0:` | `->L1770` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | -| 1817 | `if sec.bbox_w <= 0:` | `->L1818` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | -| 1851 | `if not src.is_port:` | `->L1849` | | -| 1867 | `for i in range(len(pts) - 1):` | `->L1868`, `->L1884` | **defensive** -- point_on_polyline is used only by the --animate renderer (render/animate.py); the matrix's render-path coverage sweep calls render_svg without animation, so none of its branches are reached. Exercised instead by test_animation.py / test_routing.py. | -| 1872 | `if seg_len2 == 0:` | `->L1873`, `->L1876` | **defensive** -- point_on_polyline degenerate-segment branch, reached only via the --animate renderer (render/animate.py); the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py, not the corpus. | -| 1873 | `if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:` | `->L1874`, `->L1875` | **defensive** -- point_on_polyline zero-length-segment hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1877 | `if t < -0.01 or t > 1.01:` | `->L1878`, `->L1879` | **defensive** -- point_on_polyline parameter-range branch, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1882 | `if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:` | `->L1867`, `->L1883` | **defensive** -- point_on_polyline projection hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | -| 1977 | `if all_in_range:` | `->L1981` | **defensive** -- cross_row bypass guard: the False arm (no sections in the column range -> return clearance) needs an empty [lo,hi] column span, which a valid multi-section pipeline routing cross_row never has; a degenerate-range guard. | -| 2004 | `if endpoints:` | `->L2007` | **defensive** -- Non-cross_row bypass guard: the endpoints list always includes the source and target sections (both in src_row), so it is never empty; the default-clearance arm only guards a degenerate empty endpoint set. | -| 2017 | `if src_row is not None:` | `->L2029` | **defensive** -- Header-clamp guard: the False arm (src_row is None) needs an unresolvable source section, but inter-section bypass sources always resolve to a grid row after layout; a guard against an unresolved source that doesn't occur. | -| 2024 | `if safe_cap >= row_bottom:` | `->L2027` | **defensive** -- The false arm is a defensive midpoint fallback for an inter-row gap too narrow to clear both an upper-row bypass and the lower section header. Placement reserves the routing band before bypass geometry is computed, so settled corpus layouts provide enough clearance for the safe-cap arm. | -| 2123 | `if section.bbox_w <= 0:` | `->L2124` | **defensive** -- Degenerate-bbox guard in _h_segment_penetrates_section (the single-section predicate shared by _h_segment_crosses_other_section and _packed_cell_mate_obstructs): sections always have positive width after layout. | -| 2149 | `if station is None:` | `->L2150` | **defensive** -- None-station guard: every production caller passes a concrete Station (grep-verified); the None arm only guards the typed Station\|None parameter. | -| 2155 | `for port in junction_source_ports(graph, station.id):` | `->L2174` | **defensive** -- Upstream loop-exit in resolve_section: every fan-out junction is emitted with an exit_port->junction edge whose source port carries a section id, so junction_source_ports always yields a sectioned port and the loop returns; the fall-through to the type-contract return None is the never-taken no-upstream fallback. | -| 2157 | `if sec:` | `->L2155` | **defensive** -- Upstream section-lookup guard: graph.sections.get(section_id) returning None requires a section_id absent from graph.sections, a corrupted state no valid parse produces; null-guard. | -| 2163 | `for e in graph.edges:` | `->L2174` | **defensive** -- No-preference graph.edges scan loop-exit: a fan-out junction always has a sectioned incident port (its exit/entry ports carry a section_id), so the loop always returns and never exhausts graph.edges; the fall-through to the type-contract return None is the never-taken no-neighbour fallback. | -| 2164 | `if e.source == station.id:` | `->L2165` | **defensive** -- Junction-as-source arm of the no-preference scan: fan-out junctions are emitted exit_port->junction before junction->entry_port, so graph.edges encounters the junction as a target (elif arm) first and returns; the source arm is a cheap structural guard whose deadness rests on emit order, not a hard type invariant. | -| 2170 | `if other.section_id:` | `->L2163` | **defensive** -- The prefer_upstream=False scan reads a junction's incident neighbour on either side, always a sectioned station or port; the section-less (False) arm only guards a junction-to-junction edge valid construction never produces. | -| 2172 | `if sec:` | `->L2163` | **defensive** -- prefer_upstream=False section-lookup guard: graph.sections.get(section_id) returning None requires a missing section_id (corrupted state); null-guard. | -| 2182 | `if section is None:` | `->L2183` | **defensive** -- resolve_section_colrow accepts a station whose owning section may not resolve. Production routing passes resolved ports or junctions with an incident sectioned port, so the None return only protects a malformed or incomplete graph. | -| 2225 | `if reserved is None or abs(src_row - tgt_row) != 1:` | `->L2226` | | -| 2281 | `if dy > 0:` | `->L2286` | **defensive** -- Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code. | +| 1391 | `if k == 0 or k + 2 >= len(points):` | `->L1392` | | +| 1523 | `port is None` | `->L1528` | | +| 1524 | `or entry is None` | `->L1528` | | +| 1525 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L1528` | | +| 1526 | `or abs(entry.y - tgt.y) > COORD_TOLERANCE` | `->L1528` | | +| 1611 | `elif tgt_sec:` | `->L1619` | **defensive** -- The else (col_key=round(sx)) needs an L-shaped (dx!=0,dy!=0) inter edge whose target resolves to no section. Only exit_port->junction edges lack a target section, and junction positioning makes those axis-aligned (same-X RIGHT exit or same-Y BOTTOM exit), never L-shaped, so the else is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1722 | `if st is not None and st.is_port:` | `->L1720` | **defensive** -- Null/non-port guard: after _resolve_sections both endpoints of an inter-section edge are ports/junctions and graph.stations.get() resolves them, so the False (None or non-port) arm only guards a malformed pre-resolve graph. | +| 1771 | `if sec.bbox_w <= 0:` | `->L1772` | **defensive** -- Zero-width-section guard: the loop scans all graph.sections, but after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts don't produce. | +| 1819 | `if sec.bbox_w <= 0:` | `->L1820` | **defensive** -- Zero-width-section guard in the squeeze re-centring loop: like its #1 twin, after compute_layout every placed section has bbox_w>0, so the skip arm only guards an empty/unplaced section that valid layouts do not produce. | +| 1853 | `if not src.is_port:` | `->L1851` | | +| 1869 | `for i in range(len(pts) - 1):` | `->L1870`, `->L1886` | **defensive** -- point_on_polyline is used only by the --animate renderer (render/animate.py); the matrix's render-path coverage sweep calls render_svg without animation, so none of its branches are reached. Exercised instead by test_animation.py / test_routing.py. | +| 1874 | `if seg_len2 == 0:` | `->L1875`, `->L1878` | **defensive** -- point_on_polyline degenerate-segment branch, reached only via the --animate renderer (render/animate.py); the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py, not the corpus. | +| 1875 | `if abs(point[0] - ax) <= tol and abs(point[1] - ay) <= tol:` | `->L1876`, `->L1877` | **defensive** -- point_on_polyline zero-length-segment hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1879 | `if t < -0.01 or t > 1.01:` | `->L1880`, `->L1881` | **defensive** -- point_on_polyline parameter-range branch, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1884 | `if abs(point[0] - proj_x) <= tol and abs(point[1] - proj_y) <= tol:` | `->L1869`, `->L1885` | **defensive** -- point_on_polyline projection hit test, reached only via the --animate renderer; the render-path coverage sweep doesn't animate. Exercised by test_animation.py / test_routing.py. | +| 1979 | `if all_in_range:` | `->L1983` | **defensive** -- cross_row bypass guard: the False arm (no sections in the column range -> return clearance) needs an empty [lo,hi] column span, which a valid multi-section pipeline routing cross_row never has; a degenerate-range guard. | +| 2006 | `if endpoints:` | `->L2009` | **defensive** -- Non-cross_row bypass guard: the endpoints list always includes the source and target sections (both in src_row), so it is never empty; the default-clearance arm only guards a degenerate empty endpoint set. | +| 2019 | `if src_row is not None:` | `->L2031` | **defensive** -- Header-clamp guard: the False arm (src_row is None) needs an unresolvable source section, but inter-section bypass sources always resolve to a grid row after layout; a guard against an unresolved source that doesn't occur. | +| 2026 | `if safe_cap >= row_bottom:` | `->L2029` | **defensive** -- The false arm is a defensive midpoint fallback for an inter-row gap too narrow to clear both an upper-row bypass and the lower section header. Placement reserves the routing band before bypass geometry is computed, so settled corpus layouts provide enough clearance for the safe-cap arm. | +| 2125 | `if section.bbox_w <= 0:` | `->L2126` | **defensive** -- Degenerate-bbox guard in _h_segment_penetrates_section (the single-section predicate shared by _h_segment_crosses_other_section and _packed_cell_mate_obstructs): sections always have positive width after layout. | +| 2151 | `if station is None:` | `->L2152` | **defensive** -- None-station guard: every production caller passes a concrete Station (grep-verified); the None arm only guards the typed Station\|None parameter. | +| 2157 | `for port in junction_source_ports(graph, station.id):` | `->L2176` | **defensive** -- Upstream loop-exit in resolve_section: every fan-out junction is emitted with an exit_port->junction edge whose source port carries a section id, so junction_source_ports always yields a sectioned port and the loop returns; the fall-through to the type-contract return None is the never-taken no-upstream fallback. | +| 2159 | `if sec:` | `->L2157` | **defensive** -- Upstream section-lookup guard: graph.sections.get(section_id) returning None requires a section_id absent from graph.sections, a corrupted state no valid parse produces; null-guard. | +| 2165 | `for e in graph.edges:` | `->L2176` | **defensive** -- No-preference graph.edges scan loop-exit: a fan-out junction always has a sectioned incident port (its exit/entry ports carry a section_id), so the loop always returns and never exhausts graph.edges; the fall-through to the type-contract return None is the never-taken no-neighbour fallback. | +| 2166 | `if e.source == station.id:` | `->L2167` | **defensive** -- Junction-as-source arm of the no-preference scan: fan-out junctions are emitted exit_port->junction before junction->entry_port, so graph.edges encounters the junction as a target (elif arm) first and returns; the source arm is a cheap structural guard whose deadness rests on emit order, not a hard type invariant. | +| 2172 | `if other.section_id:` | `->L2165` | **defensive** -- The prefer_upstream=False scan reads a junction's incident neighbour on either side, always a sectioned station or port; the section-less (False) arm only guards a junction-to-junction edge valid construction never produces. | +| 2174 | `if sec:` | `->L2165` | **defensive** -- prefer_upstream=False section-lookup guard: graph.sections.get(section_id) returning None requires a missing section_id (corrupted state); null-guard. | +| 2184 | `if section is None:` | `->L2185` | **defensive** -- resolve_section_colrow accepts a station whose owning section may not resolve. Production routing passes resolved ports or junctions with an incident sectioned port, so the None return only protects a malformed or incomplete graph. | +| 2227 | `if reserved is None or abs(src_row - tgt_row) != 1:` | `->L2228` | | +| 2283 | `if dy > 0:` | `->L2288` | **defensive** -- Multi-row upward-crossing arm: grid rows are assigned topologically and upward inter-section routes take other handlers (a same-row/around-section path), never reaching inter_row_channel_y's multi-row branch with dy<=0; verified by an upward multi-row fixture that bypasses this code. | ## `context.py` @@ -224,176 +224,176 @@ Gates with an un-exercised arm: | 2219 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2220` | | | 2226 | `if actual is None:` | `->L2227` | | | 2414 | `if any(` | `->L2419` | | -| 2476 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2477` | | -| 2511 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2512` | | -| 2520 | `if abs(start_y - end_y) > COORD_TOLERANCE:` | `->L2521` | | -| 2570 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2572` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | -| 2612 | `if run is None:` | `->L2613` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2702 | `if run is None:` | `->L2703` | | -| 2749 | `if run is None:` | `->L2750` | | -| 2796 | `if axis is None:` | `->L2797` | | -| 2838 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2839` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2848 | `if primary is None:` | `->L2849` | | -| 2861 | `or landing.opening_turn_segment is None` | `->L2863` | | -| 2874 | `if reseated is not None:` | `->L2857` | | -| 2914 | `if (` | `->L2920` | | -| 2922 | `for plan_rank, landing_rank in members:` | `->L2903`, `->L2923` | | -| 2925 | `if reseated is None:` | `->L2926`, `->L2927` | | -| 2944 | `if len(channel.line_ids) != 1:` | `->L2945` | | -| 2969 | `if (` | `->L2973` | | -| 2975 | `if endpoint is None:` | `->L2976` | | -| 2981 | `channel.flank_rank is not None` | `->L2986` | | -| 2986 | `if any(` | `->L2991` | | -| 2995 | `if moved is None:` | `->L2996` | | -| 3010 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3011` | | -| 3036 | `if (` | `->L3044` | | -| 3050 | `if reseated is None:` | `->L3051`, `->L3052` | | -| 3056 | `if abs(reseated_opening - source.x) >= (` | `->L3032`, `->L3061` | | -| 3061 | `if (` | `->L3066`, `->L3070` | | -| 3154 | `for rank in displaced_ranks:` | `->L3210` | | -| 3157 | `if (` | `->L3192` | | -| 3195 | `if reseated is None:` | `->L3196`, `->L3197` | | -| 3199 | `if (` | `->L3204`, `->L3208` | | -| 3217 | `if moved_channels and all(` | `->L3140`, `->L3225` | | -| 3242 | `if tail is None:` | `->L3243`, `->L3244` | | -| 3265 | `if (` | `->L3272` | | -| 3273 | `if bypass_segment is None:` | `->L3274`, `->L3275` | | -| 3275 | `for obstacle in direct_landings:` | `->L3264`, `->L3276` | | -| 3277 | `if (` | `->L3287`, `->L3288` | | -| 3290 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3291`, `->L3292` | | -| 3297 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3298`, `->L3299` | | -| 3305 | `if moved is None:` | `->L3306`, `->L3307` | | -| 3327 | `if bypass_segment is None:` | `->L3275`, `->L3328` | | -| 3361 | `if not obstacles:` | `->L3363` | | -| 3377 | `for coordinate in candidates:` | `->L3351`, `->L3378` | | -| 3378 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3379`, `->L3380` | | -| 3386 | `if moved is None:` | `->L3387`, `->L3388` | | -| 3394 | `if not moved_channels or any(` | `->L3401`, `->L3402` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3406 | `if (` | `->L3410`, `->L3411` | | -| 3471 | `obstacle_segment is None` | `->L3476` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 3472 | `or landing_segment is None` | `->L3476` | | -| 3487 | `if reseated is None:` | `->L3488` | | -| 3493 | `landing.member_id == plan.primary_trunk_member_id` | `->L3516` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 3494 | `and plan.trunk_axis is not None` | `->L3516` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 3495 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3516` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 3525 | `if (` | `->L3458` | | -| 3540 | `if axis is None:` | `->L3541` | | -| 3564 | `if coordinate is not None:` | `->L3569` | | -| 3606 | `if endpoint is None:` | `->L3607` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 3629 | `if plan.trunk_axis is None:` | `->L3630` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 3655 | `if coordinate is not None:` | `->L3661` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 3715 | `for seat, obstacle in obstacles:` | `->L-3700`, `->L3716` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 3717 | `if axis is None:` | `->L3718`, `->L3719` | | -| 3729 | `if lane is None:` | `->L3730`, `->L3731` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 3750 | `if flank_rank != 1:` | `->L3752` | | -| 3761 | `if fork is None:` | `->L3762`, `->L3770` | | -| 3838 | `if forked:` | `->L3839` | | -| 3839 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3840`, `->L3841` | | -| 3843 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3844` | | -| 3867 | `if forked:` | `->L3868`, `->L3869` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 3942 | `if endpoint is None:` | `->L3943` | | -| 3953 | `if coordinate is None:` | `->L3954` | | -| 3966 | `if reseated is not None:` | `->L3967`, `->L3970` | | -| 4013 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L4061` | | -| 4091 | `if not (` | `->L4094` | | -| 4110 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4111` | | -| 4168 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4153` | | -| 4417 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4418` | | -| 4437 | `if any(` | `->L4442` | | -| 4493 | `if axis is None:` | `->L4494` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 4635 | `if run is not None:` | `->L4686` | | -| 4762 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4763` | | -| 4862 | `if not landing_feasible(candidate_coordinate):` | `->L4863` | | -| 4872 | `if (` | `->L4876` | | -| 4925 | `if moved_plan is None:` | `->L4926` | | -| 4944 | `if (` | `->L4948` | | -| 5013 | `if (` | `->L5021` | | -| 5070 | `if moved is None:` | `->L5071` | | -| 5100 | `if (` | `->L5104` | | -| 5200 | `if any(` | `->L5208` | | -| 5258 | `if clearance is None:` | `->L5259` | | -| 5312 | `if opening_key in moved_openings:` | `->L5313` | | -| 5321 | `if moved is None:` | `->L5322` | | -| 5325 | `if not feasible:` | `->L5326` | | -| 5327 | `if not feasible:` | `->L5328` | | -| 5330 | `if (` | `->L5334` | | -| 5340 | `if any(` | `->L5344` | | -| 5351 | `if any(` | `->L5358` | | -| 5359 | `if any(` | `->L5364` | | -| 5397 | `if not obstacles:` | `->L5399` | | -| 5416 | `for coordinate in candidates:` | `->L5382`, `->L5417` | | -| 5423 | `if any(` | `->L5437`, `->L5438` | | -| 5493 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5494` | | -| 5734 | `if not negative or not positive:` | `->L5735` | | -| 5794 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5795` | | -| 5799 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5807` | | -| 5827 | `if gap is None:` | `->L5828` | | -| 5838 | `if requirement is None:` | `->L5839` | | -| 5842 | `if current is None or requirement.required > current.required:` | `->L5784` | | -| 5858 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5860` | | -| 5864 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5865`, `->L5866` | | -| 5874 | `if requirement is None:` | `->L5875`, `->L5876` | | -| 5879 | `if current is None or requirement.required > current.required:` | `->L5857`, `->L5880` | | -| 5911 | `if (` | `->L5917` | | -| 5922 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5923`, `->L5924` | | -| 5932 | `if requirement is not None:` | `->L5895`, `->L5933` | | -| 5979 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5983` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 5986 | `if first_delta * second_delta < 0:` | `->L5987` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 5997 | `if (` | `->L6009`, `->L6012` | | -| 6026 | `if opposing_approaches is not None:` | `->L6027` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 6071 | `if same_line and first_direction is not second_direction:` | `->L6076` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 6077 | `if (` | `->L6104` | | -| 6124 | `if conflict is not None:` | `->L6125` | | -| 6134 | `if requirements:` | `->L6135`, `->L6137` | | -| 6172 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6173` | | -| 6179 | `if (` | `->L6190` | | -| 6190 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6193`, `->L6194` | | -| 6194 | `if any(` | `->L6199`, `->L6200` | | -| 6207 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6208` | | -| 6208 | `if any(` | `->L6213`, `->L6214` | | -| 6220 | `if _gap_channels_crowd(` | `->L6227` | | -| 6227 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6230`, `->L6231` | | -| 6231 | `if any(` | `->L6235`, `->L6236` | | -| 6252 | `if not plan.owns_geometry:` | `->L6253` | | -| 6316 | `if not plan.owns_geometry:` | `->L6317` | | -| 6340 | `owner_edge not in edge_ranks` | `->L6344` | | -| 6379 | `if not plan.owns_geometry:` | `->L6380` | | -| 6398 | `if ownership.edge in by_edge:` | `->L6399` | | -| 6526 | `for item in system_plans:` | `->L6527`, `->L6537` | | -| 6883 | `if not horizontal and not vertical:` | `->L6884` | | -| 6907 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6892` | | -| 6940 | `if axis.axis is DemandAxis.X:` | `->L6963` | | -| 7067 | `if not candidates:` | `->L7068` | | -| 7089 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7092` | | -| 7092 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7095` | | -| 7098 | `if horizontal:` | `->L7099` | | -| 7167 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7168` | | -| 7175 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7176` | | -| 7194 | `if actual is None:` | `->L7195` | | -| 7201 | `direction is not landing.approach_direction` | `->L7205` | | -| 7202 | `or handedness is not landing.corner_handedness` | `->L7205` | | -| 7203 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7205` | | -| 7224 | `opening is None` | `->L7228` | | -| 7225 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7228` | | -| 7226 | `or emitted_segment != landing.opening_turn_segment` | `->L7228` | | -| 7237 | `if query is None:` | `->L7238` | | -| 7243 | `if not plan.owns_geometry:` | `->L7244` | | -| 7253 | `if (` | `->L7267` | | -| 7299 | `if opening is None:` | `->L7300` | | -| 7300 | `if not clearance_pending:` | `->L7301`, `->L7316` | | -| 7308 | `landing.opening_turn_segment is not None` | `->L7316` | | -| 7314 | `if route.curve_radii is not None:` | `->L7316` | | -| 7382 | `if landing.opening_turn_coordinate is not None:` | `->L7390` | | -| 7398 | `if not clearance_pending and any(` | `->L7402` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 7427 | `if not plan.owns_geometry:` | `->L7428` | | -| 7438 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7439` | | -| 7448 | `if route is None:` | `->L7449` | | -| 7454 | `if (` | `->L7459` | | -| 7466 | `if any(` | `->L7470` | | -| 7490 | `if (` | `->L7499` | | -| 7505 | `if (` | `->L7516` | | -| 7532 | `if route is None or membership is None:` | `->L7533` | | -| 7538 | `if any(` | `->L7542` | | +| 2491 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2492` | | +| 2521 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2522` | | +| 2532 | `if abs(start_y - end_y) > COORD_TOLERANCE:` | `->L2533` | | +| 2577 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2579` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | +| 2619 | `if run is None:` | `->L2620` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | +| 2709 | `if run is None:` | `->L2710` | | +| 2756 | `if run is None:` | `->L2757` | | +| 2803 | `if axis is None:` | `->L2804` | | +| 2845 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2846` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2855 | `if primary is None:` | `->L2856` | | +| 2868 | `or landing.opening_turn_segment is None` | `->L2870` | | +| 2881 | `if reseated is not None:` | `->L2864` | | +| 2921 | `if (` | `->L2927` | | +| 2929 | `for plan_rank, landing_rank in members:` | `->L2910`, `->L2930` | | +| 2932 | `if reseated is None:` | `->L2933`, `->L2934` | | +| 2951 | `if len(channel.line_ids) != 1:` | `->L2952` | | +| 2976 | `if (` | `->L2980` | | +| 2982 | `if endpoint is None:` | `->L2983` | | +| 2988 | `channel.flank_rank is not None` | `->L2993` | | +| 2993 | `if any(` | `->L2998` | | +| 3002 | `if moved is None:` | `->L3003` | | +| 3017 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3018` | | +| 3043 | `if (` | `->L3051` | | +| 3057 | `if reseated is None:` | `->L3058`, `->L3059` | | +| 3063 | `if abs(reseated_opening - source.x) >= (` | `->L3039`, `->L3068` | | +| 3068 | `if (` | `->L3073`, `->L3077` | | +| 3161 | `for rank in displaced_ranks:` | `->L3217` | | +| 3164 | `if (` | `->L3199` | | +| 3202 | `if reseated is None:` | `->L3203`, `->L3204` | | +| 3206 | `if (` | `->L3211`, `->L3215` | | +| 3224 | `if moved_channels and all(` | `->L3147`, `->L3232` | | +| 3249 | `if tail is None:` | `->L3250`, `->L3251` | | +| 3272 | `if (` | `->L3279` | | +| 3280 | `if bypass_segment is None:` | `->L3281`, `->L3282` | | +| 3282 | `for obstacle in direct_landings:` | `->L3271`, `->L3283` | | +| 3284 | `if (` | `->L3294`, `->L3295` | | +| 3297 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3298`, `->L3299` | | +| 3304 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3305`, `->L3306` | | +| 3312 | `if moved is None:` | `->L3313`, `->L3314` | | +| 3334 | `if bypass_segment is None:` | `->L3282`, `->L3335` | | +| 3368 | `if not obstacles:` | `->L3370` | | +| 3384 | `for coordinate in candidates:` | `->L3358`, `->L3385` | | +| 3385 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3386`, `->L3387` | | +| 3393 | `if moved is None:` | `->L3394`, `->L3395` | | +| 3401 | `if not moved_channels or any(` | `->L3408`, `->L3409` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3413 | `if (` | `->L3417`, `->L3418` | | +| 3478 | `obstacle_segment is None` | `->L3483` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3479 | `or landing_segment is None` | `->L3483` | | +| 3494 | `if reseated is None:` | `->L3495` | | +| 3500 | `landing.member_id == plan.primary_trunk_member_id` | `->L3523` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3501 | `and plan.trunk_axis is not None` | `->L3523` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3502 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3523` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3532 | `if (` | `->L3465` | | +| 3547 | `if axis is None:` | `->L3548` | | +| 3571 | `if coordinate is not None:` | `->L3576` | | +| 3613 | `if endpoint is None:` | `->L3614` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3636 | `if plan.trunk_axis is None:` | `->L3637` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3662 | `if coordinate is not None:` | `->L3668` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3722 | `for seat, obstacle in obstacles:` | `->L-3707`, `->L3723` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3724 | `if axis is None:` | `->L3725`, `->L3726` | | +| 3736 | `if lane is None:` | `->L3737`, `->L3738` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3757 | `if flank_rank != 1:` | `->L3759` | | +| 3768 | `if fork is None:` | `->L3769`, `->L3777` | | +| 3845 | `if forked:` | `->L3846` | | +| 3846 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3847`, `->L3848` | | +| 3850 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3851` | | +| 3874 | `if forked:` | `->L3875`, `->L3876` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3949 | `if endpoint is None:` | `->L3950` | | +| 3960 | `if coordinate is None:` | `->L3961` | | +| 3973 | `if reseated is not None:` | `->L3974`, `->L3977` | | +| 4020 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L4068` | | +| 4098 | `if not (` | `->L4101` | | +| 4117 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4118` | | +| 4175 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4160` | | +| 4424 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4425` | | +| 4444 | `if any(` | `->L4449` | | +| 4500 | `if axis is None:` | `->L4501` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4642 | `if run is not None:` | `->L4693` | | +| 4769 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4770` | | +| 4869 | `if not landing_feasible(candidate_coordinate):` | `->L4870` | | +| 4879 | `if (` | `->L4883` | | +| 4932 | `if moved_plan is None:` | `->L4933` | | +| 4951 | `if (` | `->L4955` | | +| 5020 | `if (` | `->L5028` | | +| 5077 | `if moved is None:` | `->L5078` | | +| 5107 | `if (` | `->L5111` | | +| 5207 | `if any(` | `->L5215` | | +| 5265 | `if clearance is None:` | `->L5266` | | +| 5319 | `if opening_key in moved_openings:` | `->L5320` | | +| 5328 | `if moved is None:` | `->L5329` | | +| 5332 | `if not feasible:` | `->L5333` | | +| 5334 | `if not feasible:` | `->L5335` | | +| 5337 | `if (` | `->L5341` | | +| 5347 | `if any(` | `->L5351` | | +| 5358 | `if any(` | `->L5365` | | +| 5366 | `if any(` | `->L5371` | | +| 5404 | `if not obstacles:` | `->L5406` | | +| 5423 | `for coordinate in candidates:` | `->L5389`, `->L5424` | | +| 5430 | `if any(` | `->L5444`, `->L5445` | | +| 5500 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5501` | | +| 5741 | `if not negative or not positive:` | `->L5742` | | +| 5801 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5802` | | +| 5806 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5814` | | +| 5834 | `if gap is None:` | `->L5835` | | +| 5845 | `if requirement is None:` | `->L5846` | | +| 5849 | `if current is None or requirement.required > current.required:` | `->L5791` | | +| 5865 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5867` | | +| 5871 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5872`, `->L5873` | | +| 5881 | `if requirement is None:` | `->L5882`, `->L5883` | | +| 5886 | `if current is None or requirement.required > current.required:` | `->L5864`, `->L5887` | | +| 5918 | `if (` | `->L5924` | | +| 5929 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5930`, `->L5931` | | +| 5939 | `if requirement is not None:` | `->L5902`, `->L5940` | | +| 5986 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5990` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 5993 | `if first_delta * second_delta < 0:` | `->L5994` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 6004 | `if (` | `->L6016`, `->L6019` | | +| 6033 | `if opposing_approaches is not None:` | `->L6034` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 6078 | `if same_line and first_direction is not second_direction:` | `->L6083` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 6084 | `if (` | `->L6111` | | +| 6131 | `if conflict is not None:` | `->L6132` | | +| 6141 | `if requirements:` | `->L6142`, `->L6144` | | +| 6179 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6180` | | +| 6186 | `if (` | `->L6197` | | +| 6197 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6200`, `->L6201` | | +| 6201 | `if any(` | `->L6206`, `->L6207` | | +| 6214 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6215` | | +| 6215 | `if any(` | `->L6220`, `->L6221` | | +| 6227 | `if _gap_channels_crowd(` | `->L6234` | | +| 6234 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6237`, `->L6238` | | +| 6238 | `if any(` | `->L6242`, `->L6243` | | +| 6259 | `if not plan.owns_geometry:` | `->L6260` | | +| 6323 | `if not plan.owns_geometry:` | `->L6324` | | +| 6347 | `owner_edge not in edge_ranks` | `->L6351` | | +| 6386 | `if not plan.owns_geometry:` | `->L6387` | | +| 6405 | `if ownership.edge in by_edge:` | `->L6406` | | +| 6533 | `for item in system_plans:` | `->L6534`, `->L6544` | | +| 6890 | `if not horizontal and not vertical:` | `->L6891` | | +| 6914 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6899` | | +| 6947 | `if axis.axis is DemandAxis.X:` | `->L6970` | | +| 7074 | `if not candidates:` | `->L7075` | | +| 7096 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7099` | | +| 7099 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7102` | | +| 7105 | `if horizontal:` | `->L7106` | | +| 7174 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7175` | | +| 7182 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7183` | | +| 7201 | `if actual is None:` | `->L7202` | | +| 7208 | `direction is not landing.approach_direction` | `->L7212` | | +| 7209 | `or handedness is not landing.corner_handedness` | `->L7212` | | +| 7210 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7212` | | +| 7231 | `opening is None` | `->L7235` | | +| 7232 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7235` | | +| 7233 | `or emitted_segment != landing.opening_turn_segment` | `->L7235` | | +| 7244 | `if query is None:` | `->L7245` | | +| 7250 | `if not plan.owns_geometry:` | `->L7251` | | +| 7260 | `if (` | `->L7274` | | +| 7306 | `if opening is None:` | `->L7307` | | +| 7307 | `if not clearance_pending:` | `->L7308`, `->L7323` | | +| 7315 | `landing.opening_turn_segment is not None` | `->L7323` | | +| 7321 | `if route.curve_radii is not None:` | `->L7323` | | +| 7389 | `if landing.opening_turn_coordinate is not None:` | `->L7397` | | +| 7405 | `if not clearance_pending and any(` | `->L7409` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7434 | `if not plan.owns_geometry:` | `->L7435` | | +| 7445 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7446` | | +| 7455 | `if route is None:` | `->L7456` | | +| 7461 | `if (` | `->L7466` | | +| 7473 | `if any(` | `->L7477` | | +| 7497 | `if (` | `->L7506` | | +| 7512 | `if (` | `->L7523` | | +| 7539 | `if route is None or membership is None:` | `->L7540` | | +| 7545 | `if any(` | `->L7549` | | ## `core.py` @@ -1021,7 +1021,7 @@ Gates with an un-exercised arm: ## `offsets.py` -477/571 gates fully exercised. +480/575 gates fully exercised. Gates with an un-exercised arm: @@ -1099,28 +1099,29 @@ Gates with an un-exercised arm: | 2877 | `if single_exit and feeding_exit is not None:` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | | 2879 | `if exit_lines == set(j_lines):` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | | 2881 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 2976 | `if free is None:` | `->L2977` | | -| 3049 | `if pred is None:` | `->L3050` | | -| 3145 | `if target_col is None:` | `->L3146` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | -| 3154 | `if source_col is None:` | `->L3155` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3464 | `for _ in range(max_iterations):` | `->L-3410` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | -| 3548 | `if src_n <= tgt_n:` | `->L3551` | | -| 3580 | `if not a.section_id or a.section_id != b.section_id:` | `->L3581` | | -| 3662 | `if ctx.topology is None:` | `->L3663` | | -| 3686 | `if key not in ctx.offsets:` | `->L3687` | | -| 3735 | `len(levels) != len(continuing)` | `->L3738` | | -| 3798 | `if line_id not in assignments:` | `->L3799` | | -| 3803 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3805` | | -| 3825 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3850` | | -| 3836 | `if line_id not in assignments:` | `->L3837` | | -| 3843 | `if set(frames).difference(next_frames):` | `->L3844` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3878 | `if any(` | `->L3882` | | -| 3884 | `if local_offset is None or not (` | `->L3890` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3909 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3910` | | -| 3920 | `if gap is not None:` | `->L3921` | | -| 3951 | `if any(` | `->L3957` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3975 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3976` | | -| 4152 | `if dag is not None:` | `->L4160` | | +| 2950 | `for distance in range(1, slots + 1):` | `->L2954` | | +| 2990 | `if free is not None:` | `->L2979` | | +| 3061 | `if pred is None:` | `->L3062` | | +| 3157 | `if target_col is None:` | `->L3158` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | +| 3166 | `if source_col is None:` | `->L3167` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | +| 3476 | `for _ in range(max_iterations):` | `->L-3422` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | +| 3560 | `if src_n <= tgt_n:` | `->L3563` | | +| 3592 | `if not a.section_id or a.section_id != b.section_id:` | `->L3593` | | +| 3674 | `if ctx.topology is None:` | `->L3675` | | +| 3698 | `if key not in ctx.offsets:` | `->L3699` | | +| 3747 | `len(levels) != len(continuing)` | `->L3750` | | +| 3810 | `if line_id not in assignments:` | `->L3811` | | +| 3815 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3817` | | +| 3837 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3862` | | +| 3848 | `if line_id not in assignments:` | `->L3849` | | +| 3855 | `if set(frames).difference(next_frames):` | `->L3856` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3890 | `if any(` | `->L3894` | | +| 3896 | `if local_offset is None or not (` | `->L3902` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 3921 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3922` | | +| 3932 | `if gap is not None:` | `->L3933` | | +| 3963 | `if any(` | `->L3969` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3987 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3988` | | +| 4164 | `if dag is not None:` | `->L4172` | | ## `orientation.py` @@ -1228,8 +1229,8 @@ Gates with an un-exercised arm: | 530 | `if target is None or not target.is_port or target.section_id is None:` | `->L531` | | | 534 | `if start[0] != end[0] or final_start[1] != final_end[1]:` | `->L535` | | | 562 | `if realised is None:` | `->L563` | | -| 627 | `if band is None:` | `->L628` | **defensive** -- Every record for one edge and segment rank observes the same physical route segment. Disjoint clearance intervals for that key therefore require a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory corridor bounds. | -| 631 | `if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:` | `->L632` | **defensive** -- Repeated observations of one route-segment claim project the same declared gap coordinate through the same member translation. A wider allocation range therefore requires a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory exact allocations. | +| 623 | `if band is None:` | `->L624` | **defensive** -- Every record for one edge and segment rank observes the same physical route segment. Disjoint clearance intervals for that key therefore require a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory corridor bounds. | +| 627 | `if allocation_range[1] - allocation_range[0] > COORD_TOLERANCE:` | `->L628` | **defensive** -- Repeated observations of one route-segment claim project the same declared gap coordinate through the same member translation. A wider allocation range therefore requires a fabricated or inconsistent reservation ledger; the raise protects the published claim view from contradictory exact allocations. | ## `reversal.py` From f31bad9e3036967cf276ec61afb2437a3c1dd722 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 02:47:05 +0100 Subject: [PATCH 114/158] fix(routing): offer a translating bundle every claim-clearing lane A gap bundle moves as one body, so the translation that frees its crowded member seats the siblings on lanes that member never met. Deriving the candidate translations from every member/claim pair that owes a clearance, rather than from the crowded pairs alone, keeps those placements in the search; with only the crowded pairs' own positions the nearest survivor can be a runway coordinate a whole corridor away. Co-Authored-By: Claude Fable 5 (cherry picked from commit 285e09edce79fab0f1b0b7fe6b75ed6817c3eb4b) --- src/nf_metro/layout/routing/member_geometry.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 2f8568904..d92fa539f 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1628,6 +1628,14 @@ def _allocate_bundle_around_claims( clearance a bundle owes its neighbours is only knowable here: the whole bundle translates as one body, which keeps its members' lane order and keeps any carrier it already shares with a claim intact. + + Moving as one body is also why the candidate translations are drawn from + every member/claim pair that owes a clearance rather than from the crowded + pairs alone: the placement that frees the crowded member seats its siblings + on lanes it never met, so the positions that clear *those* claims are the + ones the body has to choose between. Offered only the crowded pairs' own + positions, the nearest survivor can be a runway coordinate a whole corridor + away. """ relevant_by_key = { item.key: tuple( @@ -1642,21 +1650,23 @@ def _allocate_bundle_around_claims( ) for item in items } - crowded = tuple( + owed = tuple( (item, claim, required) for item in items for claim in relevant_by_key[item.key] if (required := _claim_clearance(item, claim, ctx)) > 0.0 - and abs(item.channel.x - claim.coordinate) < required - COORD_TOLERANCE_FINE ) - if not crowded: + if not any( + abs(item.channel.x - claim.coordinate) < required - COORD_TOLERANCE_FINE + for item, claim, required in owed + ): return bounds_by_key = {item.key: _channel_bounds(item, ctx) for item in items} deltas = {0.0} deltas.update( claim.coordinate + sign * required - item.channel.x - for item, claim, required in crowded + for item, claim, required in owed for sign in (-1.0, 1.0) ) for item in items: From 8d0d0efeaf17be58f88caffce32bcc080f6be9f6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 02:47:17 +0100 Subject: [PATCH 115/158] fix(routing): read a gap fan's approach weave per leg A gap corridor collects every leg that descends through it, so one bundle can hold a divergence fan alongside a leg that reaches the gap from the far side. The approach-weave term models a lead-in travelling towards its channel over the lanes seated before it; a leg arriving from the other side makes no such weave, and reading the approach side per bundle let one such leg silence the term for the whole fan. The fan then fell back to its incoming-x order, which for a rightward run turning down is the mirror of the order the corner needs. Co-Authored-By: Claude Fable 5 (cherry picked from commit 745d6e49030ed2c24a6e80b97cc5937cc9237f5b) --- src/nf_metro/layout/routing/normalize.py | 29 +++--- tests/test_gap_fan_lane_order.py | 112 +++++++++++++++++++++++ 2 files changed, 127 insertions(+), 14 deletions(-) create mode 100644 tests/test_gap_fan_lane_order.py diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index ad838510f..ec4799b9b 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -4986,6 +4986,19 @@ def _corridor_leadout_right(chans: list[_VChannel], default: bool) -> bool: return votes.count(True) >= votes.count(False) +def _leg_turns_off_right_of_source(ch: _VChannel) -> bool: + """Whether *ch* leaves its source rightward, so its lead-in weaves the fan. + + The approach-weave model is one-sided: a leg that turns off to the right of + where it started overtakes the legs seated left of it, while a leg turning + off on the left is the mirror image whose deep ends already nest. Read per + leg, not per bundle -- a gap collects legs from unrelated sources, and one + foreign leg approaching from the far side says nothing about how the fan it + joined has to stack. + """ + return bool(ch.route.points) and ch.route.points[0][0] <= ch.x + COORD_TOLERANCE + + def _distinct_line_order(chans: list[_VChannel]) -> list[str]: """Left-to-right order of the distinct lines in one gap-bundle corridor. @@ -5035,7 +5048,8 @@ def _distinct_line_order(chans: list[_VChannel]) -> list[str]: turns[lid].append(ch.y_hi) deepest[lid] = max(deepest.get(lid, ch.y_hi), ch.y_hi) rep_x[lid] = min(rep_x.get(lid, ch.x), ch.x) - approach[lid].append(ch.y_lo if down else ch.y_hi) + if _leg_turns_off_right_of_source(ch): + approach[lid].append(ch.y_lo if down else ch.y_hi) span_lo[lid] = min(span_lo.get(lid, ch.y_lo), ch.y_lo) span_hi[lid] = max(span_hi.get(lid, ch.y_hi), ch.y_hi) @@ -5047,17 +5061,6 @@ def peel_crossings_if_left(a: str, b: str) -> int: # Leftward: a's deeper vertical crosses b's shallower lead-outs. return sum(1 for t in turns[b] if t < deepest[a] - COORD_TOLERANCE) - # The approach-weave term models a fan whose lead-ins enter from the LEFT - # and descend rightward (a bypass overtaking its down-turns on the right). - # A leftward-descending fan (source to the right of its channels) is the - # mirror image, where the deep-end ordering already nests the lines; the - # rightward-only term would mis-order it, so restrict it to fans whose - # source sits left of every descent channel. - fan_rightward = all( - ch.route.points and ch.route.points[0][0] <= ch.x + COORD_TOLERANCE - for ch in chans - ) - def approach_crossings_if_left(a: str, b: str) -> int: # Source-end (fan) crossings when a is placed LEFT of b: the RIGHT # line's lead-in, extending from the shared junction past the LEFT @@ -5065,8 +5068,6 @@ def approach_crossings_if_left(a: str, b: str) -> int: # bypass makes when it descends on the far side of the fan but # approaches from the bundle's near side; ordering it out avoids the # tangle the deep-end-only test cannot see. - if not fan_rightward: - return 0 right = b # a is LEFT, so b sits to the RIGHT lo, hi = span_lo[a], span_hi[a] return sum( diff --git a/tests/test_gap_fan_lane_order.py b/tests/test_gap_fan_lane_order.py new file mode 100644 index 000000000..1d9d0cce5 --- /dev/null +++ b/tests/test_gap_fan_lane_order.py @@ -0,0 +1,112 @@ +"""A fan's lane order is read from each leg's own approach, not the bundle's. + +A gap corridor collects every leg that descends through it, so one bundle can +hold a divergence fan alongside an unrelated leg that reaches the gap from the +far side. The approach-weave term that orders the fan models a lead-in +travelling *towards* its channel over the lanes seated before it; a leg +arriving from the other side makes no such weave and says nothing about how the +fan it happens to share the gap with has to stack. + +Read per bundle instead of per leg, one such foreign leg silences the term for +everyone, and the fan falls back to its incoming-x order. For a rightward run +turning down that is the mirror of the order the corner needs: the shallowest +approach rides the outside of the bend and turns off at the largest x, so the +lanes read bottom-approach-first from the left. +""" + +from __future__ import annotations + +from pathlib import Path + +from nf_metro.layout.engine import compute_layout +from nf_metro.layout.routing import compute_station_offsets, observe_route_edges +from nf_metro.layout.routing.common import RoutedPath +from nf_metro.layout.routing.normalize import _distinct_line_order, _VChannel +from nf_metro.parser.mermaid import parse_metro_mermaid +from nf_metro.parser.model import Edge + +FROZEN = Path(__file__).parent / "fixtures" / "hash_seed_determinism" + +_FAN_SOURCE = "__junction_27" +_FAN_TARGET = "s10__entry_right_19" + + +def _descent( + line_id: str, + target: str, + *, + source_x: float, + approach_y: float, + channel_x: float, + deep_y: float, +) -> _VChannel: + """One leg approaching horizontally at *approach_y*, then descending.""" + points = [ + (source_x, approach_y), + (channel_x, approach_y), + (channel_x, deep_y), + (channel_x - 100.0, deep_y), + ] + route = RoutedPath( + Edge("src", target, line_id), line_id, points, is_inter_section=True + ) + return _VChannel(route, 1, channel_x, approach_y, deep_y, True) + + +def _fan() -> list[_VChannel]: + """Four legs off one junction, overlaid on the channel they will nest in.""" + return [ + _descent( + f"l{rank}", + f"t{rank}", + source_x=100.0, + approach_y=6.0 + 4.0 * rank, + channel_x=150.0, + deep_y=200.0, + ) + for rank in range(4) + ] + + +def _foreign_leg() -> _VChannel: + """A leg reaching the same gap from the right, sharing the fan's line l1.""" + return _descent( + "l1", "far", source_x=300.0, approach_y=150.0, channel_x=250.0, deep_y=200.0 + ) + + +def test_fan_lanes_mirror_their_approach_order() -> None: + """The reference: the deepest approach takes the leftmost lane.""" + assert _distinct_line_order(_fan()) == ["l3", "l2", "l1", "l0"] + + +def test_a_foreign_leg_in_the_gap_leaves_the_fan_order_alone() -> None: + """A far-side leg carries no weave, so it casts no vote on the fan.""" + assert _distinct_line_order([*_fan(), _foreign_leg()]) == ["l3", "l2", "l1", "l0"] + + +def test_seed_41_fan_turns_down_in_its_approach_order() -> None: + """The corpus case: junction 27's fan shares its gap with a far-side leg. + + Its two same-target legs meet at one corner, where the lane order the corner + is built from has to match the lanes their approaches arrive on. + """ + graph = parse_metro_mermaid((FROZEN / "seed_41.mmd").read_text()) + compute_layout(graph) + offsets = compute_station_offsets(graph) + observed = observe_route_edges(graph, station_offsets=offsets) + + legs = { + route.line_id: route.points + for route in observed.routes + if (route.edge.source, route.edge.target) == (_FAN_SOURCE, _FAN_TARGET) + } + assert set(legs) == {"l2", "l3"} + # points[0] is the fan stub, points[1] the corner the descent turns on. + approach = {line_id: points[0][1] for line_id, points in legs.items()} + channel = {line_id: points[1][0] for line_id, points in legs.items()} + deep = {line_id: points[2][1] for line_id, points in legs.items()} + + assert approach["l2"] < approach["l3"] + assert channel["l3"] < channel["l2"] + assert deep["l3"] < deep["l2"] From 4115a02320b5fa90eac20c633b82a5a460c2cef8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 02:47:25 +0100 Subject: [PATCH 116/158] test(routing): refresh gate coverage for the per-leg fan weave Co-Authored-By: Claude Fable 5 (cherry picked from commit 0a8fe89cd6830c3b2ffffb540bc78712c8847a01) --- docs/dev/routing_gate_coverage.md | 59 ++++++++++--------- .../data/routing_gate_coverage_baseline.json | 1 + 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index b5a813338..d52c522d7 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2392/3461** gates fully exercised (both/all arms hit by some fixture); **1069** gates have at least one un-exercised arm. +**2391/3461** gates fully exercised (both/all arms hit by some fixture); **1070** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -827,30 +827,30 @@ Gates with an un-exercised arm: | 1498 | `if abs(channel.x - target) <= COORD_TOLERANCE:` | `->L1500` | **needs-review** -- _align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored. | | 1523 | `if coordinate is not None:` | `->L1478`, `->L1524` | | | 1595 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1596` | | -| 1852 | `if radii is not None:` | `->L1857` | | -| 1853 | `if 0 <= rank - 1 < len(radii):` | `->L1855` | | -| 1855 | `if rank < len(radii):` | `->L1857` | | -| 1880 | `if rank < len(route.exit_shared_opening_points):` | `->L1881` | | -| 1894 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1877` | | -| 1920 | `if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:` | `->L1922` | | -| 1922 | `if all(` | `->L1918`, `->L1927` | | -| 2001 | `if movable_run:` | `->L2002` | | -| 2052 | `if context is not None:` | `->L2067` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | -| 2068 | `if key in ctx.skip_edges:` | `->L2069` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | -| 2071 | `if edge is None:` | `->L2072` | | -| 2075 | `if family_id is None:` | `->L2076` | | -| 2098 | `if system_id not in failures:` | `->L2102` | | -| 2406 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2407` | | -| 2412 | `if actual != (channel.start, channel.end):` | `->L2413` | | -| 2416 | `if (` | `->L2421` | | -| 2435 | `if radius_index >= len(radii):` | `->L2436` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | -| 2442 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2443` | | -| 2447 | `if radius_index + 2 >= len(route.points):` | `->L2448` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | -| 2463 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2464` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | +| 1862 | `if radii is not None:` | `->L1867` | | +| 1863 | `if 0 <= rank - 1 < len(radii):` | `->L1865` | | +| 1865 | `if rank < len(radii):` | `->L1867` | | +| 1890 | `if rank < len(route.exit_shared_opening_points):` | `->L1891` | | +| 1904 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1887` | | +| 1930 | `if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:` | `->L1932` | | +| 1932 | `if all(` | `->L1928`, `->L1937` | | +| 2011 | `if movable_run:` | `->L2012` | | +| 2062 | `if context is not None:` | `->L2077` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | +| 2078 | `if key in ctx.skip_edges:` | `->L2079` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | +| 2081 | `if edge is None:` | `->L2082` | | +| 2085 | `if family_id is None:` | `->L2086` | | +| 2108 | `if system_id not in failures:` | `->L2112` | | +| 2416 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2417` | | +| 2422 | `if actual != (channel.start, channel.end):` | `->L2423` | | +| 2426 | `if (` | `->L2431` | | +| 2445 | `if radius_index >= len(radii):` | `->L2446` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | +| 2452 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2453` | | +| 2457 | `if radius_index + 2 >= len(route.points):` | `->L2458` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | +| 2473 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2474` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | ## `normalize.py` -430/592 gates fully exercised. +429/592 gates fully exercised. Gates with an un-exercised arm: @@ -1011,13 +1011,14 @@ Gates with an un-exercised arm: | 4979 | `if not 0 <= far < len(pts):` | `->L4980` | | | 4982 | `if abs(dx) > COORD_TOLERANCE:` | `->L4976` | | | 4984 | `if not votes:` | `->L4985` | | -| 5120 | `if rp.curve_radii is None:` | `->L5121` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5123 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5124` | | -| 5147 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5097` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5177 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5179` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5232 | `elif right_ok:` | `->L5235` | | -| 5281 | `if s.bbox_w <= 0:` | `->L5282` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 5669 | `if not blockers:` | `->L5670` | | +| 5091 | `if rep_x[a] != rep_x[b]:` | `->L5093` | | +| 5121 | `if rp.curve_radii is None:` | `->L5122` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5124 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5125` | | +| 5148 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5098` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5178 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5180` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5233 | `elif right_ok:` | `->L5236` | | +| 5282 | `if s.bbox_w <= 0:` | `->L5283` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 5670 | `if not blockers:` | `->L5671` | | ## `offsets.py` diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index f829f54d7..3feca100e 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -843,6 +843,7 @@ "normalize.py::if reconcile_owned_corridor:::#2", "normalize.py::if reconcile_owned_corridor:::#4", "normalize.py::if ref is not None:::#1", + "normalize.py::if rep_x[a] != rep_x[b]:::#1", "normalize.py::if route.curve_radii is None or membership is None:::#1", "normalize.py::if route.curve_radii is None:::#1", "normalize.py::if route_system_owns_segment_boundary(route, opening.idx):::#1", From c7a6987d29206cfcb8149b1bf599431f9fb47fe1 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 02:16:48 +0100 Subject: [PATCH 117/158] fix(routing): snap a partly-continuing junction bundle onto its entry port A junction that also carries a line past the section could not adopt the entry port's lane order, so the bundle re-ordered at the seam and the lines that did enter arrived on lanes the section does not draw. (cherry picked from commit 915cead48cf0eb389a8e63ca32219fcd617329a7) --- src/nf_metro/layout/routing/offsets.py | 73 ++++++++++++++++++-------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index efd7ff59a..39a91619e 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -2795,6 +2795,32 @@ def _leaves_lane_hole( ) +def _passing_lanes_undisturbed( + ctx: _OffsetCtx, + desired: Mapping[str, float], + current: Mapping[str, float], + passing: Mapping[str, float], +) -> bool: + """Whether re-slotting onto *desired* leaves the *passing* lanes intact. + + Lines that leave a junction for somewhere other than the entry port keep + their own lane, stay on the same side of every re-slotted line, and leave + a bundle that closes up behind the move. + """ + lanes = sorted([*desired.values(), *passing.values()]) + if any( + upper - lower > ctx.offset_step + _OFFSET_EQ_TOLERANCE + for lower, upper in zip(lanes, lanes[1:]) + ): + return False + return all( + abs(want - held) > _OFFSET_EQ_TOLERANCE + and (want > held) == (current[lid] > held) + for lid, want in desired.items() + for held in passing.values() + ) + + def _align_junction_to_entry_port(ctx: _OffsetCtx) -> None: """Resolve same-Y junction-to-entry-port slants left by Path 2. @@ -2805,12 +2831,13 @@ def _align_junction_to_entry_port(ctx: _OffsetCtx) -> None: a small per-line offset mismatch becomes a visible diagonal between the junction and the entry port. - For each junction where every outbound non-junction target is an - entry port at the junction's own base Y, and every junction line - maps to a single such target with a known offset, snap the junction - offsets to the target offsets. If the swap matches the feeding - exit port's lines exactly, mirror the change there too so the - 10-px exit-to-junction segment stays horizontal. + For each junction, the lines that reach a single entry port at the + junction's own base Y snap to that port's offsets, so the bundle + arrives on the lanes it rides inside the section. Lines that leave the + junction elsewhere hold their lane, and the snap is abandoned unless + they can. If the swap matches the feeding exit port's lines exactly, + mirror the change there too so the 10-px exit-to-junction segment stays + horizontal. """ graph = ctx.graph for jid in graph.junctions: @@ -2824,37 +2851,36 @@ def _align_junction_to_entry_port(ctx: _OffsetCtx) -> None: for edge in graph.edges_from(jid): line_targets.setdefault(edge.line_id, []).append(edge.target) line_to_target: dict[str, str] = {} - ok = True for lid in j_lines: targets = line_targets.get(lid, []) if len(targets) != 1: - ok = False - break + continue tgt_id = targets[0] tgt_st = graph.stations.get(tgt_id) tgt_port = graph.ports.get(tgt_id) if not tgt_st or not tgt_port or not tgt_port.is_entry: - ok = False - break + continue if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT): - ok = False - break + continue if abs(tgt_st.y - j_st.y) > _SAME_Y_TOLERANCE: - ok = False - break + continue if (tgt_id, lid) not in ctx.offsets: - ok = False - break + continue line_to_target[lid] = tgt_id - if not ok or len(line_to_target) != len(j_lines): + if len(line_to_target) < 2: continue - desired = {lid: ctx.offsets[(line_to_target[lid], lid)] for lid in j_lines} + desired = { + lid: ctx.offsets[(line_to_target[lid], lid)] for lid in line_to_target + } if len(set(desired.values())) != len(desired): continue current = {lid: ctx.offsets.get((jid, lid), 0.0) for lid in j_lines} + passing = {lid: current[lid] for lid in j_lines if lid not in desired} + if passing and not _passing_lanes_undisturbed(ctx, desired, current, passing): + continue if all( - abs(desired[lid] - current[lid]) <= _OFFSET_EQ_TOLERANCE for lid in j_lines + abs(desired[lid] - current[lid]) <= _OFFSET_EQ_TOLERANCE for lid in desired ): continue @@ -2876,7 +2902,12 @@ def _align_junction_to_entry_port(ctx: _OffsetCtx) -> None: ctx.offsets[(jid, lid)] = off if single_exit and feeding_exit is not None: exit_lines = set(graph.station_lines(feeding_exit)) - if exit_lines == set(j_lines): + shares_lanes = all( + abs(ctx.offsets.get((feeding_exit, lid), 0.0) - current[lid]) + <= _OFFSET_EQ_TOLERANCE + for lid in j_lines + ) + if exit_lines == set(j_lines) and shares_lanes: exit_st = graph.stations[feeding_exit] if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE: for lid, off in desired.items(): From 8392b01a9c76566317628f39b51eea9efd5502c8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 02:27:03 +0100 Subject: [PATCH 118/158] fix(routing): refresh a divergence junction after its exit port recompacts The junction carries a copy of its exit port's bundle taken before the fan-port recompaction settles that port, so each of the two 10-px stubs it sits between drew a jog. (cherry picked from commit 1a48031dd62260c19d06b796e7bca1423e1f7ca1) --- src/nf_metro/layout/routing/offsets.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 39a91619e..2b2ef24d6 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -2417,8 +2417,20 @@ def _propagate_touched_exit_ports_to_entries( or a reversing seam each carry the line on their own arrival-order lane rather than the feeder's raw stored offset, so a direct copy there would be wrong, not merely redundant. + + A divergence junction carries a verbatim copy of its exit port's bundle + (:func:`_propagate_to_junctions`), so it re-inherits outright; a copy + taken before the recompaction draws a jog on each of the two stubs the + junction sits between. """ graph = ctx.graph + for jid, exit_port_id in ctx.divergence_exit_ports.items(): + if exit_port_id not in touched: + continue + for line_id in graph.station_lines(jid): + port_off = ctx.offsets.get((exit_port_id, line_id)) + if port_off is not None: + ctx.offsets[(jid, line_id)] = port_off for sid in sorted(touched, key=ctx.station_rank.__getitem__): src_port = graph.ports.get(sid) if src_port is None or src_port.is_entry: From ef525a533f655ce59ce9b38ceb9e419da8f13751 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 02:36:31 +0100 Subject: [PATCH 119/158] fix(routing): re-seat a fan-out source bundle on its peel order Compaction propagating in from a narrower station could permute the source section away from the peel order the fan-out ordering and the junction reconciliation both assume, so the exit port and its junction sat on different lanes across a 10-px stub and the descending pair crossed at the corner. (cherry picked from commit 54047eb29091305f81d9b4d853137fa4ac9710de) --- src/nf_metro/layout/routing/offsets.py | 50 ++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 2b2ef24d6..0d9a0a1a0 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -903,6 +903,55 @@ def _reorder_fanout_divergence(ctx: _OffsetCtx) -> None: _apply_section_line_order(ctx, sec_id, new_order) +def _restore_fanout_peel_order( + ctx: _OffsetCtx, + same_y_adj: dict[str, dict[str, list[tuple[str, str]]]], +) -> None: + """Re-seat a fan-out source bundle on its peel order. + + :func:`_reorder_fanout_divergence` seats the source section on the order + its lines peel off the shared exit fan and + :func:`_reconcile_fanout_junction_offsets` holds the junction to that same + order, so any pass that permutes the section in between leaves the exit + port and its junction on different lanes across a 10-px stub. Re-seating + only permutes the slots those passes settled, so it costs no space. + """ + if ctx.compact: + return + graph = ctx.graph + for junction_id, exit_port_id in ctx.divergence_exit_ports.items(): + section = graph.section_for_port(graph.ports[exit_port_id]) + if not lanes_run_along_y(section.direction): + continue + peel_order = fanout_divergence_peel_order( + graph, junction_id, ctx.line_priority, ctx.topology + ) + if peel_order is None: + continue + settled = sorted( + ctx.offsets.get((exit_port_id, lid), 0.0) for lid in peel_order + ) + for lid, want in zip(peel_order, settled): + cur = ctx.offsets.get((exit_port_id, lid), 0.0) + if abs(cur - want) <= _OFFSET_EQ_TOLERANCE: + continue + swap_lid = next( + ( + other + for other in peel_order + if other != lid + and abs(ctx.offsets.get((exit_port_id, other), 0.0) - want) + <= _OFFSET_EQ_TOLERANCE + ), + None, + ) + if swap_lid is None: + continue + _propagate_offset_swap( + ctx, same_y_adj, section.id, exit_port_id, lid, swap_lid, want, cur + ) + + def _reconcile_fanout_junction_offsets(ctx: _OffsetCtx) -> None: """Assign each clean divergence's settled slots in semantic peel order.""" incoming_count = Counter(edge.target for edge in ctx.graph.edges) @@ -4175,6 +4224,7 @@ def compute_station_offsets( _recenter_partial_fan_branches(ctx) _reverse_near_vertical_junction_right_entry_offsets(ctx) _recompact_fan_port_bordering_stations(ctx, same_y_adj, sec_layer_stations) + _restore_fanout_peel_order(ctx, same_y_adj) _reconcile_horizontal_offsets(ctx) _center_rail_boundary_port_bundles(ctx) _recenter_single_line_corridor_entry(ctx) From 9726aa1c38be2ec991b6f08d8fd3e4b78510a3ef Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 02:45:04 +0100 Subject: [PATCH 120/158] test(routing): hold seam stubs level and approaches on the port lane Two corpus invariants over examples, topologies and the frozen seeds: a seam whose endpoints share a base Y draws on one lane end to end, and an approach into a same-row entry port ends on the lane its line rides inside the section. (cherry picked from commit 60144c5f0652104f9c81091b6cf1a3d0bfe89511) --- tests/test_seam_lane_agreement.py | 114 +++++++++++++++++++++++++++--- 1 file changed, 105 insertions(+), 9 deletions(-) diff --git a/tests/test_seam_lane_agreement.py b/tests/test_seam_lane_agreement.py index 08eec0e18..a34c6cb27 100644 --- a/tests/test_seam_lane_agreement.py +++ b/tests/test_seam_lane_agreement.py @@ -1,15 +1,17 @@ -"""Level seams into single-line ports draw level. +"""A bundle keeps one lane order across a section seam. A straight inter-section connector has no vertical leg to absorb an endpoint lane mismatch, so the deferred-offset renderer distributes any difference -linearly and the whole seam reads as an almost-horizontal slope. A -single-line port has no bundle constraining its lane, so its seam offset can -always agree with its partner's; these seams are held level across the frozen -seed corpus, where the slopes were first observed. - -The agreement only counts when it is not bought at the station row's expense: -a port either takes its whole flat in-section run to the seam partner's lane -or stays where its run-mates ride, never parting from them. +linearly and the whole seam reads as an almost-horizontal slope; over a 10-px +exit or junction stub the same mismatch reads as a jog. An approach that ends +off the lane its line rides inside the section breaks the drawn line at the +port instead, the bundle jumping lanes over zero width. + +A single-line port has no bundle constraining its lane, so its seam offset can +always agree with its partner's - but the agreement only counts when it is not +bought at the station row's expense: such a port either takes its whole flat +in-section run to the seam partner's lane or stays where its run-mates ride, +never parting from them. """ from __future__ import annotations @@ -26,6 +28,7 @@ from nf_metro.layout.routing.common import apply_route_offsets from nf_metro.layout.routing.core import observe_route_edges from nf_metro.layout.routing.offsets import compute_station_offsets +from nf_metro.parser.model import PortSide ROOT = Path(__file__).parents[1] FROZEN = ROOT / "tests" / "fixtures" / "hash_seed_determinism" @@ -38,6 +41,99 @@ key=lambda p: (p.parent.name, p.name), ) +_STUB_SLOPE_XFAILS = { + "seed_41": "s4__exit_left_4 hands its pair to __junction_29 transposed", +} +_APPROACH_LANE_XFAILS = { + "seed_15": "s8__exit_left_8 and __junction_26 land off s10__entry_right_19", + "seed_77": "the two U-detour feeders land on s9__entry_right_25 transposed", +} + + +def _corpus_params(xfails: dict[str, str]) -> list[Any]: + return [ + pytest.param( + path, + id=path.stem, + marks=( + [pytest.mark.xfail(strict=True, reason=xfails[path.stem])] + if path.stem in xfails + else [] + ), + ) + for path in CORPUS + ] + + +def _observe(path: Path) -> tuple[Any, dict[tuple[str, str], float], Any]: + """Route *path* far enough to read every edge's drawn geometry.""" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + offsets = compute_station_offsets(graph) + observation = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=True, + ) + return graph, offsets, observation + + +@pytest.mark.parametrize("path", _corpus_params(_STUB_SLOPE_XFAILS)) +def test_level_seam_stubs_draw_level(path: Path) -> None: + """A seam whose endpoints share a base Y draws on one lane end to end. + + The exit-port stub, the junction stub and the connector between them are + each one straight run with no vertical leg to absorb a lane mismatch, so + endpoints that disagree read as a jog on a 10-px stub. + """ + _graph, offsets, observation = _observe(path) + sloped = [] + for route in observation.routes: + if not route.is_inter_section or len(route.points) != 2: + continue + (xa, ya), (xb, yb) = route.points + if abs(ya - yb) > COORD_TOLERANCE or abs(xa - xb) <= COORD_TOLERANCE: + continue + drawn = apply_route_offsets(route, offsets) + if abs(drawn[0][1] - drawn[-1][1]) > COORD_TOLERANCE: + sloped.append( + f"{route.edge.source}->{route.edge.target} [{route.line_id}]: " + f"{drawn[0]} -> {drawn[-1]}" + ) + assert not sloped, "level seams drawn sloped:\n" + "\n".join(sloped) + + +@pytest.mark.parametrize("path", _corpus_params(_APPROACH_LANE_XFAILS)) +def test_seam_approach_lands_on_the_port_lane(path: Path) -> None: + """An approach ends on the lane its line rides inside the section. + + An approach that lands anywhere else leaves the drawn line broken at the + port: the bundle re-orders across the seam and each mismatched line jumps + lanes over zero width. + """ + graph, offsets, observation = _observe(path) + misplaced = [] + for route in observation.routes: + if not route.is_inter_section: + continue + port = graph.ports.get(route.edge.target) + if port is None or not port.is_entry: + continue + if port.side not in (PortSide.LEFT, PortSide.RIGHT): + continue + station = graph.stations[route.edge.target] + if abs(station.y - graph.stations[route.edge.source].y) > COORD_TOLERANCE: + continue + lane_y = station.y + offsets.get((route.edge.target, route.line_id), 0.0) + drawn = apply_route_offsets(route, offsets) + if abs(drawn[-1][1] - lane_y) > COORD_TOLERANCE: + misplaced.append( + f"{route.edge.source}->{route.edge.target} [{route.line_id}]: " + f"ends {drawn[-1][1]}, port lane {lane_y}" + ) + assert not misplaced, "approaches off the port's lane:\n" + "\n".join(misplaced) + @pytest.mark.parametrize( "name", ("seed_15.mmd", "seed_41.mmd", "seed_72.mmd", "seed_77.mmd") From 9f0e7f492eb4a811360ef21bc3c0e8b78973c1b8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 02:45:51 +0100 Subject: [PATCH 121/158] test(layout): hold every topology to the almost-horizontal check Neither excluded fixture draws an almost-horizontal edge, so the corpus check runs over all of them. (cherry picked from commit f172cc1e16aabca6c3e97f53eafbbbe67c16ce29) --- tests/test_topology_validation.py | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/tests/test_topology_validation.py b/tests/test_topology_validation.py index f5c08be7e..d11050bcd 100644 --- a/tests/test_topology_validation.py +++ b/tests/test_topology_validation.py @@ -67,11 +67,6 @@ def _compute_routes(graph): # --- Parametrized validation across all topologies --- -_ALMOST_HORIZONTAL_XFAILS = { - "funcprofiler_upstream": "known almost-horizontal humann3 junction edge", - "bypass_fan_in_outer_slot": "meth slope 0.075 in minimum-width column gap", -} - _ERROR_VALIDATORS = ( check_section_overlap, check_station_containment, @@ -97,12 +92,11 @@ def test_topology_validation(path: Path) -> None: for violation in validator(graph) if violation.severity == Severity.ERROR ) - if path.stem not in _ALMOST_HORIZONTAL_XFAILS: - problems.extend( - f"{check_almost_horizontal_edges.__name__}: {violation.message}" - for violation in check_almost_horizontal_edges(graph) - if violation.severity == Severity.WARNING - ) + problems.extend( + f"{check_almost_horizontal_edges.__name__}: {violation.message}" + for violation in check_almost_horizontal_edges(graph) + if violation.severity == Severity.WARNING + ) problems.extend( f"station {sid!r} remains at the origin" for sid, station in graph.stations.items() @@ -115,18 +109,6 @@ def test_topology_validation(path: Path) -> None: assert not problems, "\n".join(problems) -@pytest.mark.parametrize( - ("stem", "reason"), - [ - pytest.param(stem, reason, id=stem) - for stem, reason in _ALMOST_HORIZONTAL_XFAILS.items() - ], -) -def test_no_almost_horizontal_edges_known_defects(stem: str, reason: str) -> None: - """Document fixtures excluded from the almost-horizontal corpus check.""" - pytest.xfail(f"{stem}: {reason}") - - # --- Serpentine stacked-section invariant (issue #421) --- # Fixtures known to contain a serpentine run of stacked, chained, From fe489e7861d03561cf0db85034a80d0de0cc3bfd Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 03:08:27 +0100 Subject: [PATCH 122/158] test(routing): refresh gate coverage for the seam-lane tree The junction-to-entry-port snap now runs its lane-preservation check, so its old triage entry no longer names an open gap. (cherry picked from commit a2c6d5ce757b5eb9dc09b991978e6df36b610b5d) --- src/nf_metro/layout/routing/offsets.py | 4 ++++ tests/data/routing_gate_coverage_baseline.json | 13 +++++++------ tests/data/routing_gate_triage.json | 4 ---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 0d9a0a1a0..77090370a 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -4175,6 +4175,10 @@ def compute_station_offsets( against that same port; a final pass rechecks just the stations the fan-port guard itself flags and recompacts those, plus any port whose own bundle is left non-contiguous the same way (non-compact only). + 12b. **Fan-out peel-order re-seating** - the compaction phases can permute + a fan-out source section away from the peel order phase 2 seated it on + and the junction phase below holds it to; a permutation of the slots + they settled puts the exit port back on that order (non-compact LR/RL). 13. **Final horizontal re-reconciliation** - phase 12 can change a port's offset after phase 8 already snapped a same-section, same-Y real station to that port's old value; re-running phase 8 catches any such diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 3feca100e..a34300daf 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -814,6 +814,7 @@ "normalize.py::if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:::#1", "normalize.py::if len(targets) != 1:::#1", "normalize.py::if len(trunks) < 2:::#1", + "normalize.py::if len(turns) != 1:::#1", "normalize.py::if len({id(t.route) for t in grp}) < 2:::#2", "normalize.py::if lower > upper + COORD_TOLERANCE_FINE:::#1", "normalize.py::if mid + half > gap_right + COORD_TOLERANCE:::#1", @@ -887,16 +888,14 @@ "offsets.py::for edge in graph.edges_from(port_id):::#2", "offsets.py::for other in lines:::#1", "offsets.py::for other_lid in nbr_lines:::#1", - "offsets.py::if (::#3", - "offsets.py::if (cur_sid, cur_lid) in visited:::#1", "offsets.py::if (tgt_id, lid) not in ctx.offsets:::#1", "offsets.py::if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:::#1", "offsets.py::if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if anchor_feeders:::#1", - "offsets.py::if any(::#3", "offsets.py::if any(::#4", + "offsets.py::if any(::#5", "offsets.py::if ctx.topology is None:::#1", "offsets.py::if cur in seen:::#1", "offsets.py::if dag is not None:::#1", @@ -906,12 +905,11 @@ "offsets.py::if edge.target in inbound:::#1", "offsets.py::if entry.side not in (PortSide.LEFT, PortSide.RIGHT):::#1", "offsets.py::if entry_port is None:::#1", - "offsets.py::if exit_lines == set(j_lines):::#1", + "offsets.py::if exit_lines == set(j_lines) and shares_lanes:::#1", "offsets.py::if free is not None:::#1", "offsets.py::if gap is not None:::#1", "offsets.py::if internal_offs:::#1", "offsets.py::if key not in ctx.offsets:::#1", - "offsets.py::if len(nbr_lines) < 2:::#1", "offsets.py::if len(seed_lines) < 2:::#2", "offsets.py::if len(set(feeder_row.values())) < 2:::#1", "offsets.py::if len(shared) < 2:::#1", @@ -944,11 +942,11 @@ "offsets.py::if nxt in seen:::#1", "offsets.py::if off is not None:::#1", "offsets.py::if ordered != expected:::#1", - "offsets.py::if other_lid == cur_lid:::#1", "offsets.py::if paired_off is not None:::#1", "offsets.py::if pending is None:::#2", "offsets.py::if port.section_id is None:::#1", "offsets.py::if port_off is not None:::#1", + "offsets.py::if port_off is not None:::#2", "offsets.py::if port_st is None:::#1", "offsets.py::if pred is None:::#1", "offsets.py::if reverse:::#3", @@ -966,6 +964,7 @@ "offsets.py::if src_port and not src_port.is_entry:::#2", "offsets.py::if station.section_id is not None:::#1", "offsets.py::if swap_lid is None:::#1", + "offsets.py::if swap_lid is None:::#2", "offsets.py::if target_col is None:::#1", "offsets.py::if target_id is None:::#1", "offsets.py::if tgt.is_port:::#1", @@ -979,7 +978,9 @@ "perp.py::if not feeders:::#1", "planning.py::elif abs(first[1] - second[1]) <= COORD_TOLERANCE:::#1", "planning.py::for index, point in enumerate(points):::#1", + "planning.py::if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:::#1", "planning.py::if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:::#1", + "planning.py::if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:::#1", "planning.py::if allocated.curve_radii is None or len(allocated.curve_radii) != len(::#1", "planning.py::if changed:::#1", "planning.py::if corner_offsets is None:::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index efe92c186..6935a56aa 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -887,10 +887,6 @@ "note": "In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam.", "status": "defensive" }, - "offsets.py::if exit_lines == set(j_lines):::#1": { - "note": "Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always.", - "status": "defensive" - }, "offsets.py::if internal_offs:::#1": { "note": "Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state.", "status": "defensive" From 155e381bf72d67ded9f0cd147a42797590f88a0a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 03:13:17 +0100 Subject: [PATCH 123/158] test(routing): refresh gate coverage for the seam quality fixes --- docs/dev/routing_gate_coverage.md | 173 +++++++++++++++--------------- 1 file changed, 87 insertions(+), 86 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index d52c522d7..7a6cd053c 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2391/3461** gates fully exercised (both/all arms hit by some fixture); **1070** gates have at least one un-exercised arm. +**2403/3474** gates fully exercised (both/all arms hit by some fixture); **1071** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **288** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **287** gaps carry a triage verdict. ## `arranger.py` @@ -850,7 +850,7 @@ Gates with an un-exercised arm: ## `normalize.py` -429/592 gates fully exercised. +428/592 gates fully exercised. Gates with an un-exercised arm: @@ -920,6 +920,7 @@ Gates with an un-exercised arm: | 2067 | `if not sibling_xs:` | `->L2068` | | | 2070 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2071` | | | 2073 | `if _section_intrudes(` | `->L2080` | | +| 2117 | `if len(turns) != 1:` | `->L2118` | | | 2138 | `if any(` | `->L2142` | | | 2205 | `for _ in range(max(1, len(buckets))):` | `->L-2151` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | | 2281 | `if ch.route.convergence_plan_id is not None:` | `->L2282` | | @@ -1022,7 +1023,7 @@ Gates with an un-exercised arm: ## `offsets.py` -480/575 gates fully exercised. +495/588 gates fully exercised. Gates with an un-exercised arm: @@ -1043,86 +1044,84 @@ Gates with an un-exercised arm: | 736 | `if entry_port is None:` | `->L737` | | | 801 | `if not all(lid in feeder_off for lid in primary_lines):` | `->L802` | | | 850 | `if new_order is None:` | `->L853` | | -| 962 | `if cur in seen:` | `->L963` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 972 | `if not src.is_port and src.section_id == sec_id:` | `->L965` | | -| 1058 | `if not target_id:` | `->L1059` | **defensive** -- An exit-only line at station sid is identified by being present in station_lines(sid) but absent from ctx.inbound[sid]. station_lines() returns lines appearing in any edge whose source or target is sid. For a line to be exit-only at sid, it must appear in at least one outbound edge from sid; otherwise it would not appear in station_lines(sid) at all. If an outbound edge exists, outbound_target[(sid, lid)] is always set, so target_id is never None when execution reaches L422. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1061 | `if not target_st:` | `->L1062` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | -| 1078 | `for other in lines:` | `->L1086` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | -| 1086 | `if swap_lid is None:` | `->L1087` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | -| 1131 | `if (cur_sid, cur_lid) in visited:` | `->L1132` | | -| 1143 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1144` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1150 | `if len(nbr_lines) < 2:` | `->L1154` | | -| 1154 | `for other_lid in nbr_lines:` | `->L1136`, `->L1155` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1155 | `if other_lid == cur_lid:` | `->L1156`, `->L1157` | | -| 1157 | `if (` | `->L1154`, `->L1161` | | -| 1165 | `if max_steps <= 0:` | `->L1166` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | -| 1193 | `if lid not in seen:` | `->L1190` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1419 | `for _ in range(len(graph.stations) + 1):` | `->L1436` | | -| 1423 | `if edge is None:` | `->L1424` | | -| 1426 | `if nxt in seen:` | `->L1427` | | -| 1511 | `if not src_st.is_port:` | `->L1509` | | -| 1515 | `if internal_offs:` | `->L1503` | **defensive** -- Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state. | -| 1545 | `if not src_st.is_port:` | `->L1543` | | -| 1676 | `if anchor_feeders:` | `->L1679` | | -| 1698 | `if port_off is not None:` | `->L1696` | **defensive** -- _compute_base_offsets runs before junction propagation and creates an offset for every station-line pair. A divergence exit port and its junction carry the same connector lines, so this lookup always succeeds; the missing-offset arm protects an incomplete synthetic context. | -| 1725 | `if port_st is None:` | `->L1726` | | -| 1800 | `if not src.is_port:` | `->L1801` | | -| 1957 | `if not src.is_port:` | `->L1958` | | -| 1984 | `if paired_off is not None:` | `->L1982` | **defensive** -- _compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable. | -| 1990 | `if not tgt_st.is_port:` | `->L1988` | | -| 2038 | `if set(inherited) != set(graph.station_lines(port_id)):` | `->L2039` | **defensive** -- _inherit_level_convergence_entry_offsets skips a convergence entry port when the lines it inherits from its immediate feeders do not cover every line the port carries. A convergence entry's lines are, by construction, exactly the union of its inbound edges' lines, and each inbound edge supplies that line's feeder offset, so the inherited set always equals the port's line set and the mismatch arm is never taken. Defensive against a port line with no inbound edge (a malformed graph). | -| 2075 | `if entry.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2076` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam. | -| 2083 | `if len(shared) < 2:` | `->L2084` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken. | -| 2172 | `if edge.line_id not in lines:` | `->L2173` | | -| 2229 | `for edge in graph.edges_from(port_id):` | `->L2238` | | -| 2233 | `if tgt.is_port:` | `->L2234` | | -| 2238 | `if target_id is None:` | `->L2239` | | -| 2323 | `if not sec_stations:` | `->L2324` | **defensive** -- The parser calls _remove_empty_sections() (resolve.py:26) which deletes any section whose station_ids list is empty before port creation. Ports are only added to station_ids during _create_port_stations() (resolve.py:527), which runs AFTER _remove_empty_sections(). Therefore every section in graph.sections at layout time has at least one non-port station; sec_stations is never empty. | -| 2368 | `if station.section_id is not None:` | `->L2360` | | -| 2377 | `if port.section_id is None:` | `->L2378` | | -| 2390 | `if section is None:` | `->L2391` | | -| 2430 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2431` | | -| 2432 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2433` | | -| 2437 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2438` | | -| 2440 | `if off is not None:` | `->L2426` | | -| 2460 | `if not any(` | `->L2463` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | -| 2478 | `if len(seed_lines) < 2:` | `->L2479` | | -| 2484 | `if not fixed_here or not movable:` | `->L2485` | | -| 2507 | `if not any(` | `->L2510` | | -| 2599 | `if not changed_lids:` | `->L2600` | | -| 2618 | `if pending is None:` | `->L2619` | | -| 2747 | `if max_steps <= 0:` | `->L2748` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | -| 2761 | `if sec_a is None and id_a in graph.ports:` | `->L2762` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2763 | `if sec_b is None and id_b in graph.ports:` | `->L2764` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2845 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2846` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2865 | `if src_port and not src_port.is_entry:` | `->L2872` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | -| 2868 | `elif feeding_exit != edge.source:` | `->L2869` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2877 | `if single_exit and feeding_exit is not None:` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | -| 2879 | `if exit_lines == set(j_lines):` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its lines-differ arm (->1147) is additionally defensive: a fan-out junction carries exactly its single exit port's fanned lines, so exit_lines == j_lines always. | -| 2881 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2816` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 2950 | `for distance in range(1, slots + 1):` | `->L2954` | | -| 2990 | `if free is not None:` | `->L2979` | | -| 3061 | `if pred is None:` | `->L3062` | | -| 3157 | `if target_col is None:` | `->L3158` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | -| 3166 | `if source_col is None:` | `->L3167` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3476 | `for _ in range(max_iterations):` | `->L-3422` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | -| 3560 | `if src_n <= tgt_n:` | `->L3563` | | -| 3592 | `if not a.section_id or a.section_id != b.section_id:` | `->L3593` | | -| 3674 | `if ctx.topology is None:` | `->L3675` | | -| 3698 | `if key not in ctx.offsets:` | `->L3699` | | -| 3747 | `len(levels) != len(continuing)` | `->L3750` | | -| 3810 | `if line_id not in assignments:` | `->L3811` | | -| 3815 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3817` | | -| 3837 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3862` | | -| 3848 | `if line_id not in assignments:` | `->L3849` | | -| 3855 | `if set(frames).difference(next_frames):` | `->L3856` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3890 | `if any(` | `->L3894` | | -| 3896 | `if local_offset is None or not (` | `->L3902` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 3921 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L3922` | | -| 3932 | `if gap is not None:` | `->L3933` | | -| 3963 | `if any(` | `->L3969` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3987 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L3988` | | -| 4164 | `if dag is not None:` | `->L4172` | | +| 948 | `if swap_lid is None:` | `->L949` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | +| 1011 | `if cur in seen:` | `->L1012` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1021 | `if not src.is_port and src.section_id == sec_id:` | `->L1014` | | +| 1107 | `if not target_id:` | `->L1108` | **defensive** -- An exit-only line at station sid is identified by being present in station_lines(sid) but absent from ctx.inbound[sid]. station_lines() returns lines appearing in any edge whose source or target is sid. For a line to be exit-only at sid, it must appear in at least one outbound edge from sid; otherwise it would not appear in station_lines(sid) at all. If an outbound edge exists, outbound_target[(sid, lid)] is always set, so target_id is never None when execution reaches L422. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1110 | `if not target_st:` | `->L1111` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | +| 1127 | `for other in lines:` | `->L1135` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | +| 1135 | `if swap_lid is None:` | `->L1136` | | +| 1192 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1193` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1203 | `for other_lid in nbr_lines:` | `->L1185` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1214 | `if max_steps <= 0:` | `->L1215` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | +| 1242 | `if lid not in seen:` | `->L1239` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1468 | `for _ in range(len(graph.stations) + 1):` | `->L1485` | | +| 1472 | `if edge is None:` | `->L1473` | | +| 1475 | `if nxt in seen:` | `->L1476` | | +| 1560 | `if not src_st.is_port:` | `->L1558` | | +| 1564 | `if internal_offs:` | `->L1552` | **defensive** -- Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state. | +| 1594 | `if not src_st.is_port:` | `->L1592` | | +| 1725 | `if anchor_feeders:` | `->L1728` | | +| 1747 | `if port_off is not None:` | `->L1745` | **defensive** -- _compute_base_offsets runs before junction propagation and creates an offset for every station-line pair. A divergence exit port and its junction carry the same connector lines, so this lookup always succeeds; the missing-offset arm protects an incomplete synthetic context. | +| 1774 | `if port_st is None:` | `->L1775` | | +| 1849 | `if not src.is_port:` | `->L1850` | | +| 2006 | `if not src.is_port:` | `->L2007` | | +| 2033 | `if paired_off is not None:` | `->L2031` | **defensive** -- _compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable. | +| 2039 | `if not tgt_st.is_port:` | `->L2037` | | +| 2087 | `if set(inherited) != set(graph.station_lines(port_id)):` | `->L2088` | **defensive** -- _inherit_level_convergence_entry_offsets skips a convergence entry port when the lines it inherits from its immediate feeders do not cover every line the port carries. A convergence entry's lines are, by construction, exactly the union of its inbound edges' lines, and each inbound edge supplies that line's feeder offset, so the inherited set always equals the port's line set and the mismatch arm is never taken. Defensive against a port line with no inbound edge (a malformed graph). | +| 2124 | `if entry.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2125` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam. | +| 2132 | `if len(shared) < 2:` | `->L2133` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken. | +| 2221 | `if edge.line_id not in lines:` | `->L2222` | | +| 2278 | `for edge in graph.edges_from(port_id):` | `->L2287` | | +| 2282 | `if tgt.is_port:` | `->L2283` | | +| 2287 | `if target_id is None:` | `->L2288` | | +| 2372 | `if not sec_stations:` | `->L2373` | **defensive** -- The parser calls _remove_empty_sections() (resolve.py:26) which deletes any section whose station_ids list is empty before port creation. Ports are only added to station_ids during _create_port_stations() (resolve.py:527), which runs AFTER _remove_empty_sections(). Therefore every section in graph.sections at layout time has at least one non-port station; sec_stations is never empty. | +| 2417 | `if station.section_id is not None:` | `->L2409` | | +| 2426 | `if port.section_id is None:` | `->L2427` | | +| 2439 | `if section is None:` | `->L2440` | | +| 2481 | `if port_off is not None:` | `->L2479` | | +| 2491 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2492` | | +| 2493 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2494` | | +| 2498 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2499` | | +| 2501 | `if off is not None:` | `->L2487` | | +| 2521 | `if not any(` | `->L2524` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | +| 2539 | `if len(seed_lines) < 2:` | `->L2540` | | +| 2545 | `if not fixed_here or not movable:` | `->L2546` | | +| 2568 | `if not any(` | `->L2571` | | +| 2660 | `if not changed_lids:` | `->L2661` | | +| 2679 | `if pending is None:` | `->L2680` | | +| 2808 | `if max_steps <= 0:` | `->L2809` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | +| 2822 | `if sec_a is None and id_a in graph.ports:` | `->L2823` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2824 | `if sec_b is None and id_b in graph.ports:` | `->L2825` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2928 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2929` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2952 | `if src_port and not src_port.is_entry:` | `->L2959` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | +| 2955 | `elif feeding_exit != edge.source:` | `->L2956` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2964 | `if single_exit and feeding_exit is not None:` | `->L2904` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | +| 2971 | `if exit_lines == set(j_lines) and shares_lanes:` | `->L2904` | | +| 2973 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2904` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | +| 3042 | `for distance in range(1, slots + 1):` | `->L3046` | | +| 3082 | `if free is not None:` | `->L3071` | | +| 3153 | `if pred is None:` | `->L3154` | | +| 3249 | `if target_col is None:` | `->L3250` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | +| 3258 | `if source_col is None:` | `->L3259` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | +| 3568 | `for _ in range(max_iterations):` | `->L-3514` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | +| 3652 | `if src_n <= tgt_n:` | `->L3655` | | +| 3684 | `if not a.section_id or a.section_id != b.section_id:` | `->L3685` | | +| 3766 | `if ctx.topology is None:` | `->L3767` | | +| 3790 | `if key not in ctx.offsets:` | `->L3791` | | +| 3839 | `len(levels) != len(continuing)` | `->L3842` | | +| 3902 | `if line_id not in assignments:` | `->L3903` | | +| 3907 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3909` | | +| 3929 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3954` | | +| 3940 | `if line_id not in assignments:` | `->L3941` | | +| 3947 | `if set(frames).difference(next_frames):` | `->L3948` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 3982 | `if any(` | `->L3986` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 3988 | `if local_offset is None or not (` | `->L3994` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 4013 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L4014` | | +| 4024 | `if gap is not None:` | `->L4025` | | +| 4055 | `if any(` | `->L4061` | | +| 4079 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L4080` | | +| 4261 | `if dag is not None:` | `->L4269` | | ## `orientation.py` @@ -1148,7 +1147,7 @@ Gates with an un-exercised arm: ## `planning.py` -19/36 gates fully exercised. +17/36 gates fully exercised. Gates with an un-exercised arm: @@ -1157,7 +1156,9 @@ Gates with an un-exercised arm: | 94 | `if changed:` | `->L95` | | | 96 | `if not replacements:` | `->L98` | | | 121 | `elif abs(first[1] - second[1]) <= COORD_TOLERANCE:` | `->L124` | | -| 130 | `for index, point in enumerate(points):` | `->L136` | | +| 127 | `if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:` | `->L129` | | +| 130 | `for index, point in enumerate(points):` | `->L131`, `->L136` | | +| 131 | `if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:` | `->L132`, `->L133` | | | 169 | `if allocated.curve_radii is None or len(allocated.curve_radii) != len(` | `->L172` | | | 190 | `plan_offset is None` | `->L195` | | | 191 | `or plan_base is None` | `->L195` | | From e3ed0b8f698a44c806afdbc8c73388003fe3c1a2 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 03:17:45 +0100 Subject: [PATCH 124/158] test(layout): lock the carrier-anchored exit contract on a branching fixture The lock needs a fixture whose carrier row and consumer row genuinely differ, which requires branching to displace the carrier; asymmetric_tree expresses that shape with a medium branch whose exit carrier sits a row below the downstream consumer. --- tests/test_layout_invariants.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_layout_invariants.py b/tests/test_layout_invariants.py index 25ad44347..e9f8546c3 100644 --- a/tests/test_layout_invariants.py +++ b/tests/test_layout_invariants.py @@ -1154,14 +1154,14 @@ def test_flow_exit_port_anchors_to_carrying_station(fixture): ) -def test_seed_72_flow_exit_reconciles_to_carrier_without_moving_consumer_entry(): +def test_flow_exit_reconciles_to_carrier_without_moving_consumer_entry(): """A carrier-anchored exit keeps its downstream entry on the consumer row.""" - graph = _layout("hash_seed_determinism/seed_72.mmd", center_ports=False) + graph = _layout("topologies/asymmetric_tree.mmd", center_ports=False) - exit_port = graph.stations["s7__exit_left_5"] - carrier = graph.stations["n7_3"] - entry_port = graph.stations["s8__entry_right_13"] - consumer = graph.stations["n8_0"] + exit_port = graph.stations["branch_med_1__exit_right_1"] + carrier = graph.stations["m2"] + entry_port = graph.stations["branch_med_2__entry_left_7"] + consumer = graph.stations["m3"] assert abs(exit_port.y - carrier.y) <= _Y_TOL assert abs(entry_port.y - consumer.y) <= _Y_TOL From 78043918aad7de36fece44413968382523352552 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 03:56:40 +0100 Subject: [PATCH 125/158] fix(routing): seat a separated trunk lane in a corridor, not in a box `_separate_distinct_cotravelling_trunks` ranks candidate lanes purely by proper crossings against neighbouring runs. That measure says nothing about where the section boxes are, so a lane clear of every neighbour can sit inside a section interior the trunk never touches: a long same-row merge trunk gets evacuated out of the corridor its bypass geometry chose and run straight through the boxes it was reaching across. Bound the candidates by the same open-interior test the pass-through guard applies, so the crossing rank chooses among lanes a run may actually occupy, and leave the trunk where it is when no such lane is clear of its neighbours. Co-Authored-By: Claude Fable 5 (cherry picked from commit 2cda66c5fa5ebeec68c59e28055760170a2c9293) --- src/nf_metro/layout/routing/convergences.py | 48 ++++++++++++++++++- .../data/routing_gate_coverage_baseline.json | 11 ++++- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 6c86e65d3..7c8c53f1a 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2483,6 +2483,40 @@ def _plan_carrier_ids(plan: ConvergencePlan) -> frozenset[str]: ) +def _plan_section_ids(plan: ConvergencePlan, graph: MetroGraph) -> frozenset[str]: + """The sections *plan*'s members start in, end in, or pass a port of.""" + return frozenset( + section_id + for edge in plan.resolved_member_edges + for endpoint in (edge.source, edge.target) + if (section_id := graph.section_for_station(endpoint)) is not None + ) + + +def _lane_clears_section_interiors( + plan: ConvergencePlan, graph: MetroGraph, coordinate: float +) -> bool: + """Whether *plan*'s trunk run at *coordinate* stays out of foreign boxes. + + Lane separation ranks candidates by crossings against neighbouring runs, a + measure blind to where the section boxes sit: a lane clear of every + neighbour may lie inside a section interior the trunk never touches. A + trunk run belongs in a corridor between the boxes, so this bounds the + candidates the crossing rank chooses among. + """ + from nf_metro.layout.routing.normalize import _h_segment_crosses_other_section + + axis = plan.trunk_axis + assert axis is not None + return not _h_segment_crosses_other_section( + graph, + axis.extent_start, + axis.extent_end, + coordinate, + _plan_section_ids(plan, graph), + ) + + def _trunk_corridor_run( plan: ConvergencePlan, graph: MetroGraph ) -> _CotravellingRun | None: @@ -2726,8 +2760,18 @@ def _separate_distinct_cotravelling_trunks( if abs(item.coordinate - run.coordinate) < step - COORD_TOLERANCE ) if obstacles: - coordinate = _crossing_minimal_lane(plan, run, neighbours, step) - assert coordinate is not None + coordinate = _crossing_minimal_lane( + plan, + run, + neighbours, + step, + lambda candidate: _lane_clears_section_interiors( + plan, graph, candidate + ), + ) + if coordinate is None: + seated.append(run) + continue settled[plan_rank] = _move_trunk_axis(plan, coordinate) moved = _trunk_corridor_run(settled[plan_rank], graph) assert moved is not None diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index a34300daf..25114949e 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -86,6 +86,7 @@ "convergences.py::entry is not None::#1", "convergences.py::entry_port is None::#1", "convergences.py::for coordinate in candidates:::#1", + "convergences.py::for coordinate in candidates:::#3", "convergences.py::for coordinate in candidates:::#4", "convergences.py::for edge_key in incoming_edges:::#3", "convergences.py::for item in system_plans:::#1", @@ -112,6 +113,7 @@ "convergences.py::if (::#29", "convergences.py::if (::#3", "convergences.py::if (::#30", + "convergences.py::if (::#33", "convergences.py::if (::#34", "convergences.py::if (::#38", "convergences.py::if (::#40", @@ -131,6 +133,7 @@ "convergences.py::if _points_coincide(*segment):::#1", "convergences.py::if _stacked_elbow_channels_crowd(channel, member_channel):::#1", "convergences.py::if abs(approach_delta) > COORD_TOLERANCE:::#1", + "convergences.py::if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(endpoint - flank_coordinate) <= clearance:::#1", "convergences.py::if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:::#1", "convergences.py::if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:::#1", @@ -180,7 +183,8 @@ "convergences.py::if clearance is None:::#1", "convergences.py::if conflict is not None:::#1", "convergences.py::if continuation.covered_by_member_id is not None:::#1", - "convergences.py::if coordinate is None:::#2", + "convergences.py::if coordinate is None:::#1", + "convergences.py::if coordinate is None:::#3", "convergences.py::if coordinate is not None:::#2", "convergences.py::if coordinate is not None:::#3", "convergences.py::if current is None or requirement.required > current.required:::#1", @@ -201,6 +205,7 @@ "convergences.py::if first.claimant_member_ids & second.claimant_member_ids:::#1", "convergences.py::if first_delta * second_delta < 0:::#1", "convergences.py::if first_plan.trunk_axis.axis is DemandAxis.X:::#1", + "convergences.py::if fixed.gap != gap and not _stacked_elbow_channels_crowd(::#1", "convergences.py::if flank_rank != 1:::#1", "convergences.py::if fork is None:::#1", "convergences.py::if forked:::#1", @@ -239,6 +244,7 @@ "convergences.py::if not landing_feasible(candidate_coordinate):::#1", "convergences.py::if not moved:::#1", "convergences.py::if not moved_channels or any(::#1", + "convergences.py::if not moved_channels or any(::#3", "convergences.py::if not negative or not positive:::#1", "convergences.py::if not obstacles:::#1", "convergences.py::if not obstacles:::#5", @@ -807,6 +813,7 @@ "normalize.py::if has_immovable_planned_channel and any(::#1", "normalize.py::if hi - lo <= 2 * COORD_TOLERANCE:::#1", "normalize.py::if i in relocated:::#1", + "normalize.py::if k + 2 != len(pts) - 1 or y_hi - y_lo < radius:::#1", "normalize.py::if k < len(rp.curve_radii) and k + 2 < len(pts):::#1", "normalize.py::if k == desc.idx + 1:::#1", "normalize.py::if leg_is_plan_stated(mover):::#1", @@ -831,6 +838,7 @@ "normalize.py::if not crossing:::#1", "normalize.py::if not downs or not ups:::#1", "normalize.py::if not primary and fixed_obstacles:::#1", + "normalize.py::if not reference_fits(lower):::#1", "normalize.py::if not sibling_xs:::#1", "normalize.py::if not verticals:::#1", "normalize.py::if not votes:::#1", @@ -869,6 +877,7 @@ "normalize.py::or any(run.route.exit_turn_plan_id is not None for run in lane.runs)::#1", "normalize.py::or assignment.turn_direction is None::#1", "normalize.py::or base_radius is None::#1", + "normalize.py::or ch.y_hi - ch.y_lo > 2 * ctx.offset_step + COORD_TOLERANCE::#1", "normalize.py::or entry is None::#1", "normalize.py::or len(route.points) < 3::#1", "normalize.py::or len(upstream.points) < 2::#1", From 10ad8a2aa2b26545e65b9784c43f4f5d1ea64026 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 03:56:48 +0100 Subject: [PATCH 126/158] test(routing): lock a long trunk reach to its inter-row corridor seed_41's `__junction_32` l3 trunk reaches five columns west along its own row. The lock names the corridor turn it rides and asserts the run touches no section it does not connect to, so a lane chosen inside the boxes reds here rather than only at the render guard. Co-Authored-By: Claude Fable 5 (cherry picked from commit 354893902a622af7b99b8bca6ed834a0b8ba09ae) --- ...test_fused_cotravelling_lines_invariant.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index c71878d23..9b0c91413 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -39,6 +39,7 @@ import nf_metro.layout.routing.member_geometry as member_geometry from nf_metro.layout.constants import graph_offset_step from nf_metro.layout.engine import compute_layout +from nf_metro.layout.phases._common import routes_through_unrelated_sections from nf_metro.layout.routing import ( compute_station_offsets, observe_route_edges, @@ -374,6 +375,26 @@ def test_seed_77_merge_trunk_stays_in_its_inter_row_corridor() -> None: assert trunk.points[2] == pytest.approx((2718.0, 348.0)) +def test_seed_41_separated_trunk_lane_stays_out_of_the_section_boxes() -> None: + """Distinct-line separation reseats a trunk in a corridor, not in a box. + + ``__junction_32``'s l3 trunk reaches five columns west along its own row, + and the lane it is separated onto has to be one a run may occupy: the gap + above the row carries it clear of every box between the two ends. + """ + path = FROZEN_FUZZ / "seed_41.mmd" + graph, routes, offsets = _route(path) + trunk = next( + route + for route in routes + if (route.edge.source, route.edge.target, route.line_id) + == ("__junction_32", "__merge_17", "l3") + ) + + assert trunk.points[2] == pytest.approx((712.0, 546.0)) + assert not routes_through_unrelated_sections(graph, routes=[trunk], offsets=offsets) + + def test_seed_77_settled_entry_bundle_keeps_allocation_lanes() -> None: """A settled member carries every destination peer's allocation lane.""" _graph, routes, _offsets = _route(FROZEN_FUZZ / "seed_77.mmd") From 95f12c5d203b7b9300c1d6d22070e4229ca12316 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:01:49 +0100 Subject: [PATCH 127/158] test(routing): refresh gate coverage for the corridor-seated trunk fix --- docs/dev/routing_gate_coverage.md | 355 +++++++++++++++--------------- 1 file changed, 182 insertions(+), 173 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 7a6cd053c..e7695ae7c 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2403/3474** gates fully exercised (both/all arms hit by some fixture); **1071** gates have at least one un-exercised arm. +**2395/3475** gates fully exercised (both/all arms hit by some fixture); **1080** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -136,7 +136,7 @@ Gates with an un-exercised arm: ## `convergences.py` -363/615 gates fully exercised. +358/616 gates fully exercised. Gates with an un-exercised arm: @@ -224,176 +224,182 @@ Gates with an un-exercised arm: | 2219 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2220` | | | 2226 | `if actual is None:` | `->L2227` | | | 2414 | `if any(` | `->L2419` | | -| 2491 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2492` | | -| 2521 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2522` | | -| 2532 | `if abs(start_y - end_y) > COORD_TOLERANCE:` | `->L2533` | | -| 2577 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2579` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | -| 2619 | `if run is None:` | `->L2620` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2709 | `if run is None:` | `->L2710` | | -| 2756 | `if run is None:` | `->L2757` | | -| 2803 | `if axis is None:` | `->L2804` | | -| 2845 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2846` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2855 | `if primary is None:` | `->L2856` | | -| 2868 | `or landing.opening_turn_segment is None` | `->L2870` | | -| 2881 | `if reseated is not None:` | `->L2864` | | -| 2921 | `if (` | `->L2927` | | -| 2929 | `for plan_rank, landing_rank in members:` | `->L2910`, `->L2930` | | -| 2932 | `if reseated is None:` | `->L2933`, `->L2934` | | -| 2951 | `if len(channel.line_ids) != 1:` | `->L2952` | | -| 2976 | `if (` | `->L2980` | | -| 2982 | `if endpoint is None:` | `->L2983` | | -| 2988 | `channel.flank_rank is not None` | `->L2993` | | -| 2993 | `if any(` | `->L2998` | | -| 3002 | `if moved is None:` | `->L3003` | | -| 3017 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3018` | | -| 3043 | `if (` | `->L3051` | | -| 3057 | `if reseated is None:` | `->L3058`, `->L3059` | | -| 3063 | `if abs(reseated_opening - source.x) >= (` | `->L3039`, `->L3068` | | -| 3068 | `if (` | `->L3073`, `->L3077` | | -| 3161 | `for rank in displaced_ranks:` | `->L3217` | | -| 3164 | `if (` | `->L3199` | | -| 3202 | `if reseated is None:` | `->L3203`, `->L3204` | | -| 3206 | `if (` | `->L3211`, `->L3215` | | -| 3224 | `if moved_channels and all(` | `->L3147`, `->L3232` | | -| 3249 | `if tail is None:` | `->L3250`, `->L3251` | | -| 3272 | `if (` | `->L3279` | | -| 3280 | `if bypass_segment is None:` | `->L3281`, `->L3282` | | -| 3282 | `for obstacle in direct_landings:` | `->L3271`, `->L3283` | | -| 3284 | `if (` | `->L3294`, `->L3295` | | -| 3297 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3298`, `->L3299` | | -| 3304 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3305`, `->L3306` | | -| 3312 | `if moved is None:` | `->L3313`, `->L3314` | | -| 3334 | `if bypass_segment is None:` | `->L3282`, `->L3335` | | -| 3368 | `if not obstacles:` | `->L3370` | | -| 3384 | `for coordinate in candidates:` | `->L3358`, `->L3385` | | -| 3385 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3386`, `->L3387` | | -| 3393 | `if moved is None:` | `->L3394`, `->L3395` | | -| 3401 | `if not moved_channels or any(` | `->L3408`, `->L3409` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3413 | `if (` | `->L3417`, `->L3418` | | -| 3478 | `obstacle_segment is None` | `->L3483` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 3479 | `or landing_segment is None` | `->L3483` | | -| 3494 | `if reseated is None:` | `->L3495` | | -| 3500 | `landing.member_id == plan.primary_trunk_member_id` | `->L3523` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 3501 | `and plan.trunk_axis is not None` | `->L3523` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 3502 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3523` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 3532 | `if (` | `->L3465` | | -| 3547 | `if axis is None:` | `->L3548` | | -| 3571 | `if coordinate is not None:` | `->L3576` | | -| 3613 | `if endpoint is None:` | `->L3614` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 3636 | `if plan.trunk_axis is None:` | `->L3637` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 3662 | `if coordinate is not None:` | `->L3668` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 3722 | `for seat, obstacle in obstacles:` | `->L-3707`, `->L3723` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 3724 | `if axis is None:` | `->L3725`, `->L3726` | | -| 3736 | `if lane is None:` | `->L3737`, `->L3738` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 3757 | `if flank_rank != 1:` | `->L3759` | | -| 3768 | `if fork is None:` | `->L3769`, `->L3777` | | -| 3845 | `if forked:` | `->L3846` | | -| 3846 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3847`, `->L3848` | | -| 3850 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3851` | | -| 3874 | `if forked:` | `->L3875`, `->L3876` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 3949 | `if endpoint is None:` | `->L3950` | | -| 3960 | `if coordinate is None:` | `->L3961` | | -| 3973 | `if reseated is not None:` | `->L3974`, `->L3977` | | -| 4020 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L4068` | | -| 4098 | `if not (` | `->L4101` | | -| 4117 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4118` | | -| 4175 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4160` | | -| 4424 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4425` | | -| 4444 | `if any(` | `->L4449` | | -| 4500 | `if axis is None:` | `->L4501` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 4642 | `if run is not None:` | `->L4693` | | -| 4769 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4770` | | -| 4869 | `if not landing_feasible(candidate_coordinate):` | `->L4870` | | -| 4879 | `if (` | `->L4883` | | -| 4932 | `if moved_plan is None:` | `->L4933` | | -| 4951 | `if (` | `->L4955` | | -| 5020 | `if (` | `->L5028` | | -| 5077 | `if moved is None:` | `->L5078` | | -| 5107 | `if (` | `->L5111` | | -| 5207 | `if any(` | `->L5215` | | -| 5265 | `if clearance is None:` | `->L5266` | | -| 5319 | `if opening_key in moved_openings:` | `->L5320` | | -| 5328 | `if moved is None:` | `->L5329` | | -| 5332 | `if not feasible:` | `->L5333` | | -| 5334 | `if not feasible:` | `->L5335` | | -| 5337 | `if (` | `->L5341` | | -| 5347 | `if any(` | `->L5351` | | -| 5358 | `if any(` | `->L5365` | | -| 5366 | `if any(` | `->L5371` | | -| 5404 | `if not obstacles:` | `->L5406` | | -| 5423 | `for coordinate in candidates:` | `->L5389`, `->L5424` | | -| 5430 | `if any(` | `->L5444`, `->L5445` | | -| 5500 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5501` | | -| 5741 | `if not negative or not positive:` | `->L5742` | | -| 5801 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5802` | | -| 5806 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5814` | | -| 5834 | `if gap is None:` | `->L5835` | | -| 5845 | `if requirement is None:` | `->L5846` | | -| 5849 | `if current is None or requirement.required > current.required:` | `->L5791` | | -| 5865 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5867` | | -| 5871 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5872`, `->L5873` | | -| 5881 | `if requirement is None:` | `->L5882`, `->L5883` | | -| 5886 | `if current is None or requirement.required > current.required:` | `->L5864`, `->L5887` | | -| 5918 | `if (` | `->L5924` | | -| 5929 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5930`, `->L5931` | | -| 5939 | `if requirement is not None:` | `->L5902`, `->L5940` | | -| 5986 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L5990` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 5993 | `if first_delta * second_delta < 0:` | `->L5994` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 6004 | `if (` | `->L6016`, `->L6019` | | -| 6033 | `if opposing_approaches is not None:` | `->L6034` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 6078 | `if same_line and first_direction is not second_direction:` | `->L6083` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 6084 | `if (` | `->L6111` | | -| 6131 | `if conflict is not None:` | `->L6132` | | -| 6141 | `if requirements:` | `->L6142`, `->L6144` | | -| 6179 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6180` | | -| 6186 | `if (` | `->L6197` | | -| 6197 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6200`, `->L6201` | | -| 6201 | `if any(` | `->L6206`, `->L6207` | | -| 6214 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6215` | | -| 6215 | `if any(` | `->L6220`, `->L6221` | | -| 6227 | `if _gap_channels_crowd(` | `->L6234` | | -| 6234 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6237`, `->L6238` | | -| 6238 | `if any(` | `->L6242`, `->L6243` | | -| 6259 | `if not plan.owns_geometry:` | `->L6260` | | -| 6323 | `if not plan.owns_geometry:` | `->L6324` | | -| 6347 | `owner_edge not in edge_ranks` | `->L6351` | | -| 6386 | `if not plan.owns_geometry:` | `->L6387` | | -| 6405 | `if ownership.edge in by_edge:` | `->L6406` | | -| 6533 | `for item in system_plans:` | `->L6534`, `->L6544` | | -| 6890 | `if not horizontal and not vertical:` | `->L6891` | | -| 6914 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6899` | | -| 6947 | `if axis.axis is DemandAxis.X:` | `->L6970` | | -| 7074 | `if not candidates:` | `->L7075` | | -| 7096 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7099` | | -| 7099 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7102` | | -| 7105 | `if horizontal:` | `->L7106` | | -| 7174 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7175` | | -| 7182 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7183` | | -| 7201 | `if actual is None:` | `->L7202` | | -| 7208 | `direction is not landing.approach_direction` | `->L7212` | | -| 7209 | `or handedness is not landing.corner_handedness` | `->L7212` | | -| 7210 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7212` | | -| 7231 | `opening is None` | `->L7235` | | -| 7232 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7235` | | -| 7233 | `or emitted_segment != landing.opening_turn_segment` | `->L7235` | | -| 7244 | `if query is None:` | `->L7245` | | -| 7250 | `if not plan.owns_geometry:` | `->L7251` | | -| 7260 | `if (` | `->L7274` | | -| 7306 | `if opening is None:` | `->L7307` | | -| 7307 | `if not clearance_pending:` | `->L7308`, `->L7323` | | -| 7315 | `landing.opening_turn_segment is not None` | `->L7323` | | -| 7321 | `if route.curve_radii is not None:` | `->L7323` | | -| 7389 | `if landing.opening_turn_coordinate is not None:` | `->L7397` | | -| 7405 | `if not clearance_pending and any(` | `->L7409` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 7434 | `if not plan.owns_geometry:` | `->L7435` | | -| 7445 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7446` | | -| 7455 | `if route is None:` | `->L7456` | | -| 7461 | `if (` | `->L7466` | | -| 7473 | `if any(` | `->L7477` | | -| 7497 | `if (` | `->L7506` | | -| 7512 | `if (` | `->L7523` | | -| 7539 | `if route is None or membership is None:` | `->L7540` | | -| 7545 | `if any(` | `->L7549` | | +| 2525 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2526` | | +| 2555 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2556` | | +| 2566 | `if abs(start_y - end_y) > COORD_TOLERANCE:` | `->L2567` | | +| 2611 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2613` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | +| 2653 | `if run is None:` | `->L2654` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | +| 2743 | `if run is None:` | `->L2744` | | +| 2772 | `if coordinate is None:` | `->L2773` | | +| 2800 | `if run is None:` | `->L2801` | | +| 2847 | `if axis is None:` | `->L2848` | | +| 2889 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2890` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2899 | `if primary is None:` | `->L2900` | | +| 2912 | `or landing.opening_turn_segment is None` | `->L2914` | | +| 2925 | `if reseated is not None:` | `->L2908` | | +| 2965 | `if (` | `->L2971` | | +| 2973 | `for plan_rank, landing_rank in members:` | `->L2954`, `->L2974` | | +| 2976 | `if reseated is None:` | `->L2977`, `->L2978` | | +| 2995 | `if len(channel.line_ids) != 1:` | `->L2996` | | +| 3020 | `if (` | `->L3024` | | +| 3026 | `if endpoint is None:` | `->L3027` | | +| 3032 | `channel.flank_rank is not None` | `->L3037` | | +| 3037 | `if any(` | `->L3042` | | +| 3046 | `if moved is None:` | `->L3047` | | +| 3061 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3062` | | +| 3087 | `if (` | `->L3095` | | +| 3101 | `if reseated is None:` | `->L3102`, `->L3103` | | +| 3107 | `if abs(reseated_opening - source.x) >= (` | `->L3083`, `->L3112` | | +| 3112 | `if (` | `->L3117`, `->L3121` | | +| 3205 | `for rank in displaced_ranks:` | `->L3261` | | +| 3208 | `if (` | `->L3243` | | +| 3246 | `if reseated is None:` | `->L3247`, `->L3248` | | +| 3250 | `if (` | `->L3255`, `->L3259` | | +| 3268 | `if moved_channels and all(` | `->L3191`, `->L3276` | | +| 3293 | `if tail is None:` | `->L3294`, `->L3295` | | +| 3316 | `if (` | `->L3323` | | +| 3324 | `if bypass_segment is None:` | `->L3325`, `->L3326` | | +| 3326 | `for obstacle in direct_landings:` | `->L3315`, `->L3327` | | +| 3328 | `if (` | `->L3338`, `->L3339` | | +| 3341 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3342`, `->L3343` | | +| 3348 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3349`, `->L3350` | | +| 3356 | `if moved is None:` | `->L3357`, `->L3358` | | +| 3378 | `if bypass_segment is None:` | `->L3326`, `->L3379` | | +| 3412 | `if not obstacles:` | `->L3414` | | +| 3428 | `for coordinate in candidates:` | `->L3402`, `->L3429` | | +| 3429 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3430`, `->L3431` | | +| 3437 | `if moved is None:` | `->L3438`, `->L3439` | | +| 3445 | `if not moved_channels or any(` | `->L3452`, `->L3453` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3457 | `if (` | `->L3461`, `->L3462` | | +| 3522 | `obstacle_segment is None` | `->L3527` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3523 | `or landing_segment is None` | `->L3527` | | +| 3538 | `if reseated is None:` | `->L3539` | | +| 3544 | `landing.member_id == plan.primary_trunk_member_id` | `->L3567` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3545 | `and plan.trunk_axis is not None` | `->L3567` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3546 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3567` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3576 | `if (` | `->L3509` | | +| 3591 | `if axis is None:` | `->L3592` | | +| 3615 | `if coordinate is not None:` | `->L3620` | | +| 3657 | `if endpoint is None:` | `->L3658` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3680 | `if plan.trunk_axis is None:` | `->L3681` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3706 | `if coordinate is not None:` | `->L3712` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3766 | `for seat, obstacle in obstacles:` | `->L-3751`, `->L3767` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3768 | `if axis is None:` | `->L3769`, `->L3770` | | +| 3780 | `if lane is None:` | `->L3781`, `->L3782` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3801 | `if flank_rank != 1:` | `->L3803` | | +| 3812 | `if fork is None:` | `->L3813`, `->L3821` | | +| 3889 | `if forked:` | `->L3890` | | +| 3890 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3891`, `->L3892` | | +| 3894 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3895` | | +| 3918 | `if forked:` | `->L3919`, `->L3920` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3993 | `if endpoint is None:` | `->L3994` | | +| 4004 | `if coordinate is None:` | `->L4005` | | +| 4017 | `if reseated is not None:` | `->L4018`, `->L4021` | | +| 4064 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L4112` | | +| 4142 | `if not (` | `->L4145` | | +| 4161 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4162` | | +| 4219 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4204` | | +| 4468 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4469` | | +| 4488 | `if any(` | `->L4493` | | +| 4544 | `if axis is None:` | `->L4545` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4686 | `if run is not None:` | `->L4737` | | +| 4813 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4814` | | +| 4913 | `if not landing_feasible(candidate_coordinate):` | `->L4914` | | +| 4923 | `if (` | `->L4927` | | +| 4976 | `if moved_plan is None:` | `->L4977` | | +| 4995 | `if (` | `->L4999` | | +| 5064 | `if (` | `->L5072` | | +| 5101 | `for coordinate in candidates:` | `->L5054` | | +| 5121 | `if moved is None:` | `->L5122` | | +| 5133 | `if not moved_channels or any(` | `->L5146` | | +| 5151 | `if (` | `->L5155` | | +| 5251 | `if any(` | `->L5259` | | +| 5309 | `if clearance is None:` | `->L5310` | | +| 5316 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5320` | | +| 5323 | `if (` | `->L5328`, `->L5329` | | +| 5349 | `if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:` | `->L5350` | | +| 5363 | `if opening_key in moved_openings:` | `->L5364` | | +| 5372 | `if moved is None:` | `->L5373` | | +| 5376 | `if not feasible:` | `->L5377` | | +| 5378 | `if not feasible:` | `->L5379` | | +| 5381 | `if (` | `->L5385` | | +| 5391 | `if any(` | `->L5395` | | +| 5402 | `if any(` | `->L5409` | | +| 5410 | `if any(` | `->L5415` | | +| 5448 | `if not obstacles:` | `->L5450` | | +| 5467 | `for coordinate in candidates:` | `->L5433`, `->L5468` | | +| 5474 | `if any(` | `->L5488`, `->L5489` | | +| 5544 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5545` | | +| 5785 | `if not negative or not positive:` | `->L5786` | | +| 5845 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5846` | | +| 5850 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5858` | | +| 5878 | `if gap is None:` | `->L5879` | | +| 5889 | `if requirement is None:` | `->L5890` | | +| 5893 | `if current is None or requirement.required > current.required:` | `->L5835` | | +| 5909 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5911` | | +| 5915 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5916`, `->L5917` | | +| 5925 | `if requirement is None:` | `->L5926`, `->L5927` | | +| 5930 | `if current is None or requirement.required > current.required:` | `->L5908`, `->L5931` | | +| 5962 | `if (` | `->L5968` | | +| 5973 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5974`, `->L5975` | | +| 5983 | `if requirement is not None:` | `->L5946`, `->L5984` | | +| 6030 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L6034` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 6037 | `if first_delta * second_delta < 0:` | `->L6038` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 6048 | `if (` | `->L6060`, `->L6063` | | +| 6077 | `if opposing_approaches is not None:` | `->L6078` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 6122 | `if same_line and first_direction is not second_direction:` | `->L6127` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 6128 | `if (` | `->L6155` | | +| 6175 | `if conflict is not None:` | `->L6176` | | +| 6185 | `if requirements:` | `->L6186`, `->L6188` | | +| 6223 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6224` | | +| 6230 | `if (` | `->L6241` | | +| 6241 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6244`, `->L6245` | | +| 6245 | `if any(` | `->L6250`, `->L6251` | | +| 6258 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6259` | | +| 6259 | `if any(` | `->L6264`, `->L6265` | | +| 6271 | `if _gap_channels_crowd(` | `->L6278` | | +| 6278 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6281`, `->L6282` | | +| 6282 | `if any(` | `->L6286`, `->L6287` | | +| 6303 | `if not plan.owns_geometry:` | `->L6304` | | +| 6367 | `if not plan.owns_geometry:` | `->L6368` | | +| 6391 | `owner_edge not in edge_ranks` | `->L6395` | | +| 6430 | `if not plan.owns_geometry:` | `->L6431` | | +| 6449 | `if ownership.edge in by_edge:` | `->L6450` | | +| 6577 | `for item in system_plans:` | `->L6578`, `->L6588` | | +| 6934 | `if not horizontal and not vertical:` | `->L6935` | | +| 6958 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6943` | | +| 6991 | `if axis.axis is DemandAxis.X:` | `->L7014` | | +| 7118 | `if not candidates:` | `->L7119` | | +| 7140 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7143` | | +| 7143 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7146` | | +| 7149 | `if horizontal:` | `->L7150` | | +| 7218 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7219` | | +| 7226 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7227` | | +| 7245 | `if actual is None:` | `->L7246` | | +| 7252 | `direction is not landing.approach_direction` | `->L7256` | | +| 7253 | `or handedness is not landing.corner_handedness` | `->L7256` | | +| 7254 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7256` | | +| 7275 | `opening is None` | `->L7279` | | +| 7276 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7279` | | +| 7277 | `or emitted_segment != landing.opening_turn_segment` | `->L7279` | | +| 7288 | `if query is None:` | `->L7289` | | +| 7294 | `if not plan.owns_geometry:` | `->L7295` | | +| 7304 | `if (` | `->L7318` | | +| 7350 | `if opening is None:` | `->L7351` | | +| 7351 | `if not clearance_pending:` | `->L7352`, `->L7367` | | +| 7359 | `landing.opening_turn_segment is not None` | `->L7367` | | +| 7365 | `if route.curve_radii is not None:` | `->L7367` | | +| 7433 | `if landing.opening_turn_coordinate is not None:` | `->L7441` | | +| 7449 | `if not clearance_pending and any(` | `->L7453` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7478 | `if not plan.owns_geometry:` | `->L7479` | | +| 7489 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7490` | | +| 7499 | `if route is None:` | `->L7500` | | +| 7505 | `if (` | `->L7510` | | +| 7517 | `if any(` | `->L7521` | | +| 7541 | `if (` | `->L7550` | | +| 7556 | `if (` | `->L7567` | | +| 7583 | `if route is None or membership is None:` | `->L7584` | | +| 7589 | `if any(` | `->L7593` | | ## `core.py` @@ -850,7 +856,7 @@ Gates with an un-exercised arm: ## `normalize.py` -428/592 gates fully exercised. +425/592 gates fully exercised. Gates with an un-exercised arm: @@ -884,6 +890,7 @@ Gates with an un-exercised arm: | 1058 | `if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:` | `->L1060` | | | 1060 | `if rank + 2 < len(route.points):` | `->L1065` | | | 1063 | `if abs(corner[1] - after[1]) <= COORD_TOLERANCE:` | `->L1065` | | +| 1372 | `if not reference_fits(lower):` | `->L1373` | | | 1438 | `go is not None` | `->L1444` | | | 1439 | `and gt is not None` | `->L1444` | | | 1476 | `if len(pts) < 2:` | `->L1477` | | @@ -937,6 +944,7 @@ Gates with an un-exercised arm: | 2692 | `or entry is None` | `->L2698` | | | 2693 | `or port is None` | `->L2698` | | | 2694 | `or port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L2698` | | +| 2696 | `or ch.y_hi - ch.y_lo > 2 * ctx.offset_step + COORD_TOLERANCE` | `->L2699` | | | 2721 | `if boundary_dogleg_stitch(rp, ch, target):` | `->L2722` | | | 2767 | `if rp.curve_radii is None:` | `->L2768` | **defensive** -- curve_radii is always a concrete list for inter-section routes (every inter-section handler sets it); the None arm in _reseat_concentric_flanking is a belt-and-suspenders guard. | | 2796 | `if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):` | `->L2797` | | @@ -945,6 +953,7 @@ Gates with an un-exercised arm: | 3149 | `if any(` | `->L3153` | | | 3247 | `if source_section is not None and source_section.bbox_w > 0:` | `->L3268` | | | 3296 | `if not verticals:` | `->L3297` | **defensive** -- Shape guard in _land_feeder_on_run: a merge branch feeder is built as a descent into a tail, so it always has a vertical leg. Reachable in principle only if a feeder's source Y coincides with the trunk channel level, collapsing the descent below COORD_TOLERANCE (#1597). | +| 3301 | `if k + 2 != len(pts) - 1 or y_hi - y_lo < radius:` | `->L3302` | | | 3312 | `if rp.curve_radii is not None:` | `->L3314` | **defensive** -- Truncating the tail in _land_feeder_on_run keeps curve_radii aligned with the shortened waypoint list when metadata is present. Hand-built routes may omit that metadata, so the field cannot be treated as always present (#1597). | | 3532 | `elif far_y < t.y - COORD_TOLERANCE:` | `->L3526` | **defensive** -- Degenerate-leg guard in _trunk_slot_features: a trunk's flanking legs are genuine vertical legs (far_y differs from the trunk y), so neither the below nor the above classification is skipped; the fall-through arm needs a zero-height leg the layout never produces. | | 3562 | `if feats is None:` | `->L3563` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | From 4282aa3cc3e777da32e66c714abfdc53ebd74d85 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:28:27 +0100 Subject: [PATCH 128/158] fix(routing): seat convergence landings by their lane runs Two gap legs whose Y spans merely abut still contend for the lane they both turn onto, so a landing column is ordered by the runs at its ends: the leg whose run continues past the gap takes the smaller column. The seating that produced handler-owned members is re-run with those legs as lane obstacles when one of them overlays a settled landing, and a member channel that diverges up and down from one junction lane follows its plan claim as one opening turn. (cherry picked from commit 54a569d2d872b19d0cb5a1d8fb31ac448eaefc08) --- src/nf_metro/layout/routing/convergences.py | 261 +++++++++++++++++- .../layout/routing/member_geometry.py | 23 +- src/nf_metro/layout/routing/planning.py | 125 ++++++--- ...test_fused_cotravelling_lines_invariant.py | 2 +- 4 files changed, 365 insertions(+), 46 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 7c8c53f1a..a8f8140f6 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2,6 +2,7 @@ from __future__ import annotations +import math from collections import defaultdict from collections.abc import Callable, Iterable, Iterator, Mapping from dataclasses import dataclass, field, replace @@ -49,6 +50,8 @@ FanPlanId, GridSpan, KeepOutClass, + RouteMemberGapChannel, + RouteMemberGeometryPlan, RoutePlanDiagnostic, RouteSemanticScaffold, RouteSystemId, @@ -4113,6 +4116,23 @@ def _dogleg_internal_counter_running_feeders( return tuple(settled) +@dataclass(frozen=True, slots=True) +class _LaneRun: + """A horizontal run a gap channel turns onto, named by the lane it holds. + + The run reaches from the channel's own column to ``far``, so it follows the + column wherever a settling move seats it: only ``far`` is fixed elsewhere + (a station, a junction, the trunk it joins). + """ + + lane: float + far: float + + def span(self, coordinate: float) -> tuple[float, float]: + """The extent this run covers with its channel seated at *coordinate*.""" + return min(coordinate, self.far), max(coordinate, self.far) + + @dataclass(frozen=True) class _PlanGapChannel: """One vertical leg a convergence plan pins inside an inter-column gap. @@ -4121,7 +4141,9 @@ class _PlanGapChannel: settling move knows which :func:`_move_trunk_flank` call re-seats the whole stack standing on it; ``None`` marks a leg on a column no flank owns, which only ever acts as an obstacle. ``line_ids`` and ``claimant_member_ids`` - describe this physical leg, not the wider convergence plan. + describe this physical leg, not the wider convergence plan. ``lane_runs`` + are the horizontal runs the leg turns onto at its ends; two legs whose Y + spans merely abut contend for the lane they both turn onto. """ flank_rank: int | None @@ -4137,6 +4159,7 @@ class _PlanGapChannel: system_id: RouteSystemId continuation_endpoint_ids: frozenset[str] member_geometry_owned: bool + lane_runs: tuple[_LaneRun, ...] = () def __post_init__(self) -> None: if not ( @@ -4145,6 +4168,33 @@ def __post_init__(self) -> None: raise ValueError("planned gap channel requires complete carrier provenance") +def _landing_lane_runs( + landing: ConvergenceLanding, + column: float, + source_lane: float, + trunk_lane: float, + graph: MetroGraph, +) -> tuple[_LaneRun, ...]: + """The lanes a landing's opening turn joins its source and its trunk on. + + The lead-in reaches the turn along the lane the landing leaves its source + junction on; the lead-out reaches the join point along the trunk's lane + when the opening lands straight on it. A bypass whose lead-out drops to a + different corridor states no lead-out lane here: the leg carrying it is the + separate bypass span. + """ + runs: list[_LaneRun] = [] + source = graph.stations.get(landing.source_junction_id) + if source is not None and abs(source.x - column) > COORD_TOLERANCE: + runs.append(_LaneRun(source_lane, source.x)) + if ( + abs(trunk_lane - landing.join_point[1]) <= COORD_TOLERANCE + and abs(landing.join_point[0] - column) > COORD_TOLERANCE + ): + runs.append(_LaneRun(trunk_lane, landing.join_point[0])) + return tuple(runs) + + def _plan_gap_channels( plan: ConvergencePlan, graph: MetroGraph, @@ -4198,6 +4248,7 @@ def _plan_gap_channels( frozenset[EmissionMemberId], frozenset[str], frozenset[str], + tuple[_LaneRun, ...], ] ] = [] flank_columns: dict[int, tuple[float, frozenset[str], _Segment]] = {} @@ -4227,6 +4278,7 @@ def _plan_gap_channels( frozenset({plan.primary_trunk_member_id}), frozenset({primary_edge.source}), connector_ids_by_line[primary_edge.line_id], + (), ) ) for landing in plan.landings: @@ -4258,6 +4310,7 @@ def _plan_gap_channels( frozenset({landing.member_id}), frozenset({landing.source_junction_id}), connector_ids_by_member[landing.member_id], + _landing_lane_runs(landing, start_x, start_y, end_y, graph), ) ) entry_port = next( @@ -4288,6 +4341,7 @@ def _plan_gap_channels( frozenset({landing.member_id}), frozenset({landing.source_junction_id}), connector_ids_by_member[landing.member_id], + (), ) ) channels: list[_PlanGapChannel] = [] @@ -4300,6 +4354,7 @@ def _plan_gap_channels( claimant_member_ids, source_junction_ids, connector_ids, + lane_runs, ) in spans: y_lo, y_hi = sorted((start_y, end_y)) gap = gap_lo_for_x(graph, x, y_lo, y_hi, lookup=lookup) @@ -4320,6 +4375,7 @@ def _plan_gap_channels( plan.system_id, continuation_endpoints, False, + lane_runs, ) ) return tuple(channels) @@ -5187,8 +5243,15 @@ def _repack_crowded_gap_channels( # noqa: C901 graph: MetroGraph, curve_radius: float, fixed_channels: tuple[_PlanGapChannel, ...], + lane_obstacles: tuple[_PlanGapChannel, ...] = (), ) -> tuple[ConvergencePlan, ...]: - """Pack a connected set of crowded plan carriers into its usable gap.""" + """Pack a connected set of crowded plan carriers into its usable gap. + + ``lane_obstacles`` are frozen handler legs whose lanes the packed carriers + have to stay off. They order columns rather than space them: a carrier + whose run reaches along an obstacle's lane has to sit on the side its own + fixed end lies, so the two runs meet end to end instead of overlaying. + """ lookup = gap_lookup_geometry(graph) settled = list(plans) channel_cache: dict[int, tuple[ConvergencePlan, tuple[_PlanGapChannel, ...]]] = {} @@ -5255,6 +5318,9 @@ def channels_of(plan: ConvergencePlan) -> tuple[_PlanGapChannel, ...]: or _stacked_elbow_channels_crowd(channel, fixed) ) for fixed in fixed_channels + ) or any( + obstacle.gap[0] == gap[0] and _lane_runs_overlay(channel, obstacle) + for obstacle in lane_obstacles ): fixed_crowded_keys.add(key) @@ -5329,6 +5395,26 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: coordinate = fixed.coordinate + ( clearance if from_left else -clearance ) + for obstacle in ( + *( + replace( + representatives[prior_key], coordinate=prior_coordinate + ) + for prior_key, prior_coordinate in positions.items() + ), + *( + obstacle + for obstacle in lane_obstacles + if obstacle.gap[0] == gap[0] + ), + ): + lane_lo, lane_hi = _lane_run_seat_bounds( + channel, obstacle, BUNDLE_TO_BUNDLE_CLEARANCE + ) + if from_left and math.isfinite(lane_lo): + coordinate = max(coordinate, lane_lo) + elif not from_left and math.isfinite(lane_hi): + coordinate = min(coordinate, lane_hi) positions[key] = coordinate return positions @@ -5413,6 +5499,13 @@ def packed_positions(from_left: bool) -> dict[_GapCarrierKey, float]: for fixed in fixed_channels ): continue + if any( + _lane_runs_overlay(channel, obstacle) + for channel in moved_channels + for obstacle in lane_obstacles + if obstacle.gap[0] == gap[0] + ): + continue settled = candidate break return tuple(settled) @@ -5491,6 +5584,57 @@ def _clear_fixed_gap_flanks( return tuple(settled) +def _lane_runs_overlay( + first: _PlanGapChannel, + second: _PlanGapChannel, + first_coordinate: float | None = None, +) -> bool: + """Whether two distinct-line legs draw over each other on a shared lane. + + Two legs stacked end to end in one gap share no Y span, so no channel + clearance speaks for them; what they do share is the lane they both turn + onto, and there their columns order the runs. The run reaching further + along the lane has to sit outside the one that stops at its own column, + which is a statement about their columns, not about the space between them. + """ + if first.line_ids & second.line_ids: + return False + coordinate = first.coordinate if first_coordinate is None else first_coordinate + return any( + abs(run.lane - other.lane) <= COORD_TOLERANCE + and min(run.span(coordinate)[1], other.span(second.coordinate)[1]) + - max(run.span(coordinate)[0], other.span(second.coordinate)[0]) + > COORD_TOLERANCE + for run in first.lane_runs + for other in second.lane_runs + ) + + +def _lane_run_seat_bounds( + channel: _PlanGapChannel, obstacle: _PlanGapChannel, clearance: float +) -> tuple[float, float]: + """The columns that keep *channel*'s lane runs clear of *obstacle*'s. + + An empty range (``lo > hi``) says no column on this lane clears the + obstacle, because the run's fixed far end already reaches inside it. + """ + lo, hi = -math.inf, math.inf + if channel.line_ids & obstacle.line_ids: + return lo, hi + for run in channel.lane_runs: + for other in obstacle.lane_runs: + if abs(run.lane - other.lane) > COORD_TOLERANCE: + continue + other_lo, other_hi = other.span(obstacle.coordinate) + if run.far <= other_lo - clearance: + hi = min(hi, other_lo - clearance) + elif run.far >= other_hi + clearance: + lo = max(lo, other_hi + clearance) + else: + return math.inf, -math.inf + return lo, hi + + def _stacked_elbow_channels_crowd( first: _PlanGapChannel, second: _PlanGapChannel ) -> bool: @@ -5603,6 +5747,36 @@ def _landing_channels_crowd( ) +def _member_channel_lane_runs( + plan: RouteMemberGeometryPlan, channel: RouteMemberGapChannel +) -> tuple[_LaneRun, ...]: + """The horizontal runs a frozen member's gap leg turns onto at its ends.""" + points = plan.points + rank = channel.segment_rank + if not ( + 0 <= rank + and rank + 1 < len(points) + and points[rank : rank + 2] + == ( + channel.start, + channel.end, + ) + ): + return () + runs: list[_LaneRun] = [] + for corner, neighbour in ((rank, rank - 1), (rank + 1, rank + 2)): + if not 0 <= neighbour < len(points): + continue + turn, beyond = points[corner], points[neighbour] + if ( + abs(beyond[1] - turn[1]) > COORD_TOLERANCE + or abs(beyond[0] - turn[0]) <= COORD_TOLERANCE + ): + continue + runs.append(_LaneRun(turn[1], beyond[0])) + return tuple(runs) + + def _planned_member_gap_channels( plans: tuple[ConvergencePlan, ...], member_geometry: MemberGeometryExecution, @@ -5622,6 +5796,7 @@ def _planned_member_gap_channels( plan.system_id, frozenset({plan.edge.target}), True, + _member_channel_lane_runs(plan, channel), ) for plan in member_geometry.plans for channel in plan.gap_channels @@ -6607,6 +6782,7 @@ def _settle_convergence_geometry( exit_turn_plans: tuple[ExitTurnPlan, ...], fixed_channels: tuple[_PlanGapChannel, ...] = (), member_runs: tuple[_CotravellingRun, ...] = (), + lane_obstacles: tuple[_PlanGapChannel, ...] = (), ) -> tuple[ConvergencePlan, ...]: """Apply the shared convergence channel-settlement sequence.""" @@ -6654,7 +6830,7 @@ def _settle_convergence_geometry( ) settled = _clear_fixed_gap_flanks(settled, graph, fixed_channels, ctx.curve_radius) settled = _repack_crowded_gap_channels( - settled, graph, ctx.curve_radius, fixed_channels + settled, graph, ctx.curve_radius, fixed_channels, lane_obstacles ) settled = _settle_reserved_trunk_axes(settled, graph, ctx, member_runs) settled = _clear_fixed_gap_flanks( @@ -6678,7 +6854,7 @@ def _settle_convergence_geometry( settle_stacked=True, ) settled = _repack_crowded_gap_channels( - settled, graph, ctx.curve_radius, fixed_channels + settled, graph, ctx.curve_radius, fixed_channels, lane_obstacles ) settled = _fuse_shared_terminal_gap_channels(settled, ctx) settled = _separate_distinct_terminal_gap_channels(settled, graph, ctx.curve_radius) @@ -6717,6 +6893,7 @@ def _settle_convergence_execution( member_geometry: MemberGeometryExecution | None = None, include_resources: bool = False, allow_clearance_requirements: bool = False, + lane_obstacles: tuple[_PlanGapChannel, ...] = (), ) -> ConvergencePlanExecution: """Settle the eligible owners of *planned_system_ids* back into *execution*. @@ -6750,6 +6927,7 @@ def _settle_convergence_execution( if member_geometry is not None else () ), + lane_obstacles, ) if ( member_geometry is not None @@ -6833,14 +7011,87 @@ def settle_preliminary_convergence_execution( *, exit_turn_plans: tuple[ExitTurnPlan, ...], planned_system_ids: frozenset[RouteSystemId], + lane_obstacles: tuple[HandlerGapChannel, ...] = (), ) -> ConvergencePlanExecution: - """Settle provisional convergence decisions before member allocation.""" + """Settle provisional convergence decisions before member allocation. + + ``lane_obstacles`` are the handler-owned legs a member allocation already + froze (:func:`handler_gap_channels`). A landing column is spent here and + frozen into its members straight after, so a lane a handler holds has to be + read at this point or not at all. + """ return _settle_convergence_execution( execution, graph, ctx, exit_turn_plans=exit_turn_plans, planned_system_ids=planned_system_ids, + lane_obstacles=lane_obstacles, + ) + + +HandlerGapChannel: TypeAlias = _PlanGapChannel + + +def handler_gap_channels( + member_geometry: MemberGeometryExecution, graph: MetroGraph +) -> tuple[HandlerGapChannel, ...]: + """The gap legs handler-owned members hold, with the lanes they turn onto. + + A ``normalize_exempt`` member draws its own geometry and no settling pass + moves it, so its columns and the lanes they open are the fixed part of a + gap: everything else in that gap is seated around them. + """ + del graph + return tuple( + _PlanGapChannel( + None, + channel.start[0], + min(channel.start[1], channel.end[1]), + max(channel.start[1], channel.end[1]), + channel.direction is Direction.D, + (channel.gap_lo_col, channel.row), + frozenset({plan.edge.line_id}), + frozenset({plan.member_id}), + frozenset({plan.edge.source}), + frozenset(plan.connector_ids), + plan.system_id, + frozenset({plan.edge.target}), + True, + _member_channel_lane_runs(plan, channel), + ) + for plan in member_geometry.plans + if plan.normalize_exempt + for channel in plan.gap_channels + ) + + +def overlaying_lane_obstacles( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + lane_obstacles: tuple[HandlerGapChannel, ...], +) -> tuple[HandlerGapChannel, ...]: + """The handler legs whose lanes a settled landing actually draws over. + + Only these order the packed columns: an obstacle nowhere near a plan + channel must not perturb packs that never contend with it. + """ + if not lane_obstacles: + return () + lookup = gap_lookup_geometry(graph) + channels = tuple( + channel + for plan in plans + if plan.owns_geometry + for channel in _plan_gap_channels(plan, graph, lookup) + ) + return tuple( + obstacle + for obstacle in lane_obstacles + if any( + channel.gap[0] == obstacle.gap[0] and _lane_runs_overlay(channel, obstacle) + for channel in channels + ) ) diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index d92fa539f..289470d8b 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -1465,6 +1465,24 @@ def _align_packed_cell_handoffs( _seat_channel(handoff_channel.channel, carrier_channel.channel.x) +def _claim_shares_opening_turn( + item: _MaterializedChannel, claim: PreliminaryGapChannelClaim +) -> bool: + """Whether a claim and a member leg open from one turn on a shared lane. + + A same-line pair leaving one junction can diverge up and down from the lane + it travels, so their spans meet at that lane rather than overlapping. The + two legs are one opening turn and hold one column; read on span overlap + alone they read as unrelated and drift apart into a staggered fork. + """ + channel = item.channel + return ( + channel.down is not claim.down + and abs(min(channel.y_hi, claim.y_hi) - max(channel.y_lo, claim.y_lo)) + <= COORD_TOLERANCE + ) + + def _align_same_line_channels( materialized: tuple[_MaterializedChannel, ...], claims_by_system_gap: Mapping[ @@ -1489,7 +1507,10 @@ def _align_same_line_channels( ) if route.line_id in claim.line_ids and _claim_source_compatible(item, claim) - and spans_share_corridor(channel.y_lo, channel.y_hi, claim.y_lo, claim.y_hi) + and ( + spans_share_corridor(channel.y_lo, channel.y_hi, claim.y_lo, claim.y_hi) + or _claim_shares_opening_turn(item, claim) + ) ) coordinates = {claim.coordinate for claim in matching} if len(coordinates) != 1: diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index c42d85afc..ce6e91b55 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -18,8 +18,11 @@ from nf_metro.layout.routing.context import _RoutingCtx from nf_metro.layout.routing.convergences import ( ConvergencePlanExecution, + HandlerGapChannel, build_convergence_plan_execution, empty_convergence_plan_execution, + handler_gap_channels, + overlaying_lane_obstacles, preliminary_member_gap_claims, restrict_convergence_execution, settle_global_convergence_execution, @@ -382,6 +385,18 @@ def _with_settled_exit_turns( ) +def _restore_initial_station_offsets( + ctx: _RoutingCtx, + station_offsets: dict[tuple[str, str], float] | None, + initial: dict[tuple[str, str], float], +) -> None: + """Return the shared offset map to the state a planning pass starts from.""" + if station_offsets is not None: + station_offsets.clear() + station_offsets.update(initial) + ctx.station_offsets = station_offsets + + def prepare_route_system_planning( graph: MetroGraph, ctx: _RoutingCtx, @@ -425,6 +440,7 @@ def prepare_member_geometry( exit_turns: ExitTurnExecution, pending_plan_ids: frozenset[ExitTurnPlanId], settled_plan_ids: frozenset[ExitTurnPlanId] = frozenset(), + lane_obstacles: tuple[HandlerGapChannel, ...] = (), ) -> tuple[ Mapping[ResolvedEdge, RouteFamilyId], ConvergencePlanExecution, @@ -477,6 +493,7 @@ def prepare_member_geometry( ctx, exit_turn_plans=exit_turns.plans, planned_system_ids=planned_ids, + lane_obstacles=lane_obstacles, ) ctx.convergences = convergences.query member_geometry = build_member_geometry_execution( @@ -500,48 +517,78 @@ def prepare_member_geometry( allocation_exit_turns, pending_plan_ids = ( exit_turn_routing.promote_pending_gap_allocation(provisional_exit_turns) ) - if pending_plan_ids: - _, _, _, allocation_geometry = prepare_member_geometry( - allocation_exit_turns, pending_plan_ids - ) - ctx.settled_exit_turns = allocation_geometry.settled_exit_turns - if station_offsets is not None: - station_offsets.clear() - station_offsets.update(initial_station_offsets) - ctx.station_offsets = station_offsets - exit_turns = exit_turn_routing.build_exit_turn_execution( - graph, - ctx, - ) - unresolved = tuple( - plan - for plan in exit_turns.plans - if plan.legacy_reason == exit_turn_routing.GAP_ALLOCATION_PENDING - ) - if unresolved: - exit_turns = exit_turn_routing.decline_unsettled_gap_allocation(exit_turns) - family_by_edge, convergences, preliminary_planned_ids, member_geometry = ( - prepare_member_geometry( - exit_turns, - frozenset(), - pending_plan_ids, + + def seat_members( + lane_obstacles: tuple[HandlerGapChannel, ...] = (), + ) -> tuple[ + ExitTurnExecution, + Mapping[ResolvedEdge, RouteFamilyId], + ConvergencePlanExecution, + frozenset[RouteSystemId], + MemberGeometryExecution, + ]: + if pending_plan_ids: + _, _, _, allocation_geometry = prepare_member_geometry( + allocation_exit_turns, pending_plan_ids, frozenset(), lane_obstacles + ) + ctx.settled_exit_turns = allocation_geometry.settled_exit_turns + _restore_initial_station_offsets( + ctx, station_offsets, initial_station_offsets + ) + exit_turns = exit_turn_routing.build_exit_turn_execution( + graph, + ctx, + ) + unresolved = tuple( + plan + for plan in exit_turns.plans + if plan.legacy_reason == exit_turn_routing.GAP_ALLOCATION_PENDING + ) + if unresolved: + exit_turns = exit_turn_routing.decline_unsettled_gap_allocation( + exit_turns + ) + family_by_edge, convergences, planned_ids, members = ( + prepare_member_geometry( + exit_turns, + frozenset(), + pending_plan_ids, + lane_obstacles, + ) ) + members = _with_settled_exit_turns(members, allocation_geometry, ctx) + return exit_turns, family_by_edge, convergences, planned_ids, members + if ctx.prior_exit_turn_dispositions is not None: + exit_turns = exit_turn_routing.build_exit_turn_execution(graph, ctx) + else: + exit_turns = provisional_exit_turns + family_by_edge, convergences, planned_ids, members = prepare_member_geometry( + exit_turns, pending_plan_ids, frozenset(), lane_obstacles ) - member_geometry = _with_settled_exit_turns( + return exit_turns, family_by_edge, convergences, planned_ids, members + + ( + exit_turns, + family_by_edge, + convergences, + preliminary_planned_ids, + member_geometry, + ) = seat_members() + # A landing column is spent before any handler member is frozen, so the + # lanes handler-owned members hold are readable only from a seating that + # has already produced them. + lane_obstacles = overlaying_lane_obstacles( + convergences.plans, graph, handler_gap_channels(member_geometry, graph) + ) + if lane_obstacles: + _restore_initial_station_offsets(ctx, station_offsets, initial_station_offsets) + ( + exit_turns, + family_by_edge, + convergences, + preliminary_planned_ids, member_geometry, - allocation_geometry, - ctx, - ) - elif ctx.prior_exit_turn_dispositions is not None: - exit_turns = exit_turn_routing.build_exit_turn_execution(graph, ctx) - family_by_edge, convergences, preliminary_planned_ids, member_geometry = ( - prepare_member_geometry(exit_turns, pending_plan_ids) - ) - else: - exit_turns = provisional_exit_turns - family_by_edge, convergences, preliminary_planned_ids, member_geometry = ( - prepare_member_geometry(exit_turns, pending_plan_ids) - ) + ) = seat_members(lane_obstacles) allocation_planned_ids = _allocation_eligible_system_ids( preliminary_planned_ids, frozenset(member_geometry.failure_reasons), diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index 9b0c91413..a00f65d2e 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -169,7 +169,7 @@ def _disable_separation_stages(monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setattr( convergences, "_repack_crowded_gap_channels", - lambda plans, graph, curve_radius, fixed_channels: plans, + lambda plans, graph, curve_radius, fixed_channels, lane_obstacles=(): plans, ) monkeypatch.setattr( convergences, From 8de875bc6babd538586d6427c4ee88983c6eb50c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:29:18 +0100 Subject: [PATCH 129/158] fix(routing): separate distinct plans that share trunk carriers A carrier-set filter on the neighbour scan hid two plans whose landings and entry ports coincide, and their distinct-line trunks fused at zero separation. A plan's own central and flank runs all carry the plan's line set, so the distinct-line condition alone excludes them. (cherry picked from commit 7e594ea3cb0805068b997a4b7d9479750e78caa0) --- src/nf_metro/layout/routing/convergences.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index a8f8140f6..7bb229a3e 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -2745,15 +2745,14 @@ def _separate_distinct_cotravelling_trunks( run = _trunk_corridor_run(plan, graph) if run is None: continue - # Carrier identity, not system identity: one route system can hold - # several convergences, and two distinct-line trunks fuse just as - # readily inside one system. A plan's own runs share its carriers and - # are never their own neighbours. + # A plan's own runs (central and flanks) all carry the plan's line + # set, so the distinct-line condition already excludes them; any + # narrower identity filter hides genuinely distinct plans that share + # junctions or ports and lets their trunks fuse. neighbours = tuple( item for item in seated - if item.carrier_ids != run.carrier_ids - and item.direction is run.direction + if item.direction is run.direction and item.line_ids != run.line_ids and spans_share_corridor(run.lo, run.hi, item.lo, item.hi) ) From 10891866924d1b05fb3567f2a5b51df0c8c288bf Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:29:31 +0100 Subject: [PATCH 130/158] fix(routing): keep the unweave riser off plan-owned and overlaid columns The exempt-trunk unweave may not choose a riser column a pre-routing plan already names, and a candidate column whose far run would stretch across the obstacle route's run overlays two distinct lines on one lane; with no admissible candidate the re-band alone resolves the crossing. (cherry picked from commit 27521e6358466916cec504922442dea342220a19) --- src/nf_metro/layout/routing/normalize.py | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index ec4799b9b..92144680b 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -4237,6 +4237,40 @@ def _unweave_exempt_trunk_riser( or abs(corner[1] - after[1]) > COORD_TOLERANCE ): continue + if planner_owns_segment(route, rank - 1): + continue + + def _lane_run_overlays_obstacle(candidate: float, rank: int = rank) -> bool: + """Whether the run beyond the moved riser lands on the obstacle's lane. + + Two distinct lines may share a gap, but the run each turns onto has + to meet the other's end to end; a riser column that stretches its + far run across the obstacle's run overlays the two on one lane. + """ + if obstacle.route.line_id == route.line_id: + return False + if rank == trunk.idx: + if rank < 2: + return False + far, near = points[rank - 2], points[rank - 1] + else: + if rank + 1 >= len(points): + return False + near, far = points[rank], points[rank + 1] + if abs(far[1] - near[1]) > COORD_TOLERANCE: + return False + lane = near[1] + lo, hi = min(far[0], candidate), max(far[0], candidate) + return any( + abs(ay - by) <= COORD_TOLERANCE + and abs(ay - lane) < ctx.offset_step - COORD_TOLERANCE + and min(ax, bx) < hi - COORD_TOLERANCE + and lo < max(ax, bx) - COORD_TOLERANCE + for (ax, ay), (bx, by) in zip( + obstacle.route.points, obstacle.route.points[1:] + ) + ) + gap = gap_lo_for_x( ctx.graph, corner[0], min(before[1], corner[1]), max(before[1], corner[1]) ) @@ -4254,6 +4288,7 @@ def _unweave_exempt_trunk_riser( max(before[1], corner[1]), ) != gap + or _lane_run_overlays_obstacle(candidate) ): continue candidate_trunk = _htrunk_seg(trunk, trunk.y) From 5bcb920f4cb801c9d9bebcf4a2bee0962a0e312e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:29:44 +0100 Subject: [PATCH 131/158] test(routing): lock the resolved seed_15 column classes The gate the opening-turn claim match fully exercises leaves the triage sidecar, and the coverage doc and baseline follow the new arms. (cherry picked from commit 29c027ecf2f6c9d87137b7b9f52bff42b6eca203) --- .../data/routing_gate_coverage_baseline.json | 18 +++++-- tests/data/routing_gate_triage.json | 4 -- tests/test_plan_owned_channel_agreement.py | 52 +++++++++++++++++++ 3 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 tests/test_plan_owned_channel_agreement.py diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 25114949e..45609bcf0 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -73,6 +73,7 @@ "context.py::if tgt_col is None:::#1", "context.py::if tgt_col is None:::#2", "context.py::if tgt_col is None:::#3", + "convergences.py::abs(beyond[1] - turn[1]) > COORD_TOLERANCE::#1", "convergences.py::and abs(endpoint[1] - target[1]) > COORD_TOLERANCE::#1", "convergences.py::and abs(target[0] - entry.x) <= COORD_TOLERANCE::#1", "convergences.py::and landing.opening_turn_segment is not None::#1", @@ -83,6 +84,8 @@ "convergences.py::axis is None::#1", "convergences.py::channel.flank_rank is not None::#1", "convergences.py::direction is not landing.approach_direction::#1", + "convergences.py::elif not from_left and math.isfinite(lane_hi):::#1", + "convergences.py::elif run.far >= other_hi + clearance:::#1", "convergences.py::entry is not None::#1", "convergences.py::entry_port is None::#1", "convergences.py::for coordinate in candidates:::#1", @@ -146,7 +149,6 @@ "convergences.py::if abs(start_y - end_y) > COORD_TOLERANCE:::#1", "convergences.py::if actual is None:::#1", "convergences.py::if actual is None:::#2", - "convergences.py::if any(::#14", "convergences.py::if any(::#16", "convergences.py::if any(::#17", "convergences.py::if any(::#18", @@ -157,6 +159,7 @@ "convergences.py::if any(::#22", "convergences.py::if any(::#23", "convergences.py::if any(::#24", + "convergences.py::if any(::#25", "convergences.py::if any(::#3", "convergences.py::if any(::#5", "convergences.py::if any(::#7", @@ -228,7 +231,9 @@ "convergences.py::if moved_channels and all(::#1", "convergences.py::if moved_plan is None:::#1", "convergences.py::if not (::#3", + "convergences.py::if not (::#4", "convergences.py::if not 0 <= flank_rank < len(route.points) - 1:::#1", + "convergences.py::if not 0 <= neighbour < len(points):::#1", "convergences.py::if not _bypass_opening_candidate_feasible(landing, candidate, ctx):::#1", "convergences.py::if not _inside_usable_gap(gap_edges, coordinate):::#1", "convergences.py::if not _stacked_elbow_channels_crowd(channel, fixed):::#1", @@ -299,10 +304,12 @@ "convergences.py::if run is None:::#2", "convergences.py::if run is None:::#3", "convergences.py::if run is not None:::#1", + "convergences.py::if run.far <= other_lo - clearance:::#1", "convergences.py::if runway < curve_radius - COORD_TOLERANCE:::#2", "convergences.py::if same_line and first_direction is not second_direction:::#1", "convergences.py::if section is None:::#1", "convergences.py::if shared_carrier and separation > COORD_TOLERANCE:::#1", + "convergences.py::if source is not None and abs(source.x - column) > COORD_TOLERANCE:::#1", "convergences.py::if tail is None:::#2", "convergences.py::if tail is not None and _points_coincide(tail[0], landing.join_point):::#1", "convergences.py::if topology is None:::#1", @@ -317,6 +324,7 @@ "convergences.py::obstacle_segment is None::#1", "convergences.py::opening is None::#1", "convergences.py::or abs(after[0] - end[0]) > COORD_TOLERANCE::#1", + "convergences.py::or abs(beyond[0] - turn[0]) <= COORD_TOLERANCE::#1", "convergences.py::or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE::#1", "convergences.py::or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", "convergences.py::or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE::#1", @@ -673,7 +681,6 @@ "member_geometry.py::if _planner_owns_channel(::#1", "member_geometry.py::if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:::#1", - "member_geometry.py::if abs(channel.x - target) <= COORD_TOLERANCE:::#1", "member_geometry.py::if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if actual != (channel.start, channel.end):::#1", "member_geometry.py::if all(::#1", @@ -752,7 +759,6 @@ "normalize.py::go is not None::#1", "normalize.py::if (::#1", "normalize.py::if (::#10", - "normalize.py::if (::#12", "normalize.py::if (::#14", "normalize.py::if (::#9", "normalize.py::if (cross_below is not None and cross_above is not None) or not (::#1", @@ -767,6 +773,7 @@ "normalize.py::if abs(delta) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:::#1", "normalize.py::if abs(dx) > COORD_TOLERANCE:::#1", + "normalize.py::if abs(far[1] - near[1]) > COORD_TOLERANCE:::#1", "normalize.py::if abs(first_x - second_x) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(ly - pts[1][1]) < COORD_TOLERANCE:::#1", "normalize.py::if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:::#1", @@ -795,7 +802,6 @@ "normalize.py::if bool(mover.convergence_owned_segment_ranks) and not bool(::#1", "normalize.py::if boundary_dogleg_stitch(rp, ch, target):::#1", "normalize.py::if ch.route.convergence_plan_id is not None:::#1", - "normalize.py::if changed:::#2", "normalize.py::if channel is None:::#1", "normalize.py::if channel.idx == 0:::#1", "normalize.py::if col in moved:::#1", @@ -842,11 +848,15 @@ "normalize.py::if not sibling_xs:::#1", "normalize.py::if not verticals:::#1", "normalize.py::if not votes:::#1", + "normalize.py::if obstacle.route.line_id == route.line_id:::#1", "normalize.py::if opposing_bundle is not None and {::#1", "normalize.py::if overlap <= COORD_TOLERANCE:::#1", "normalize.py::if planned and max(planned) - min(planned) > COORD_TOLERANCE:::#1", "normalize.py::if planned_offsets is None:::#1", + "normalize.py::if rank + 1 >= len(points):::#1", "normalize.py::if rank + 2 < len(route.points):::#1", + "normalize.py::if rank < 2:::#1", + "normalize.py::if rank == trunk.idx:::#1", "normalize.py::if rank > 0:::#1", "normalize.py::if reconcile_owned_corridor:::#1", "normalize.py::if reconcile_owned_corridor:::#2", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index 6935a56aa..f705ff007 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -635,10 +635,6 @@ "note": "Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius.", "status": "defensive" }, - "member_geometry.py::if abs(channel.x - target) <= COORD_TOLERANCE:::#1": { - "note": "_align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored.", - "status": "needs-review" - }, "member_geometry.py::if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:::#1": { "note": "_candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable.", "status": "needs-review" diff --git a/tests/test_plan_owned_channel_agreement.py b/tests/test_plan_owned_channel_agreement.py new file mode 100644 index 000000000..9d2e4338c --- /dev/null +++ b/tests/test_plan_owned_channel_agreement.py @@ -0,0 +1,52 @@ +"""A member channel seated on its convergence claim stays on the plan's column. + +The seed_15 fixture drives one junction opening (``__junction_24``, line l1) +whose column is named by both a convergence-plan gap channel and the member +route that draws the stroke. Whether or not the render completes, its failure +text must never report the defect classes that column disagreement produces: + +- the closing feasibility validator's ``ambiguous same-line member channel`` + (plan and member naming different columns for one carrier), +- a ``collinear overlay`` of the two entry tails sharing one lane in the + gap between columns 5 and 6, and +- sub-radius jogs from a trunk relocated onto a lane it cannot reach with + formed curves. +""" + +from pathlib import Path + +import pytest + +from nf_metro.api import render_string + +SEED_15 = Path(__file__).parent / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" + + +@pytest.fixture(scope="module") +def seed_15_failure() -> str: + try: + render_string(SEED_15.read_text()) + except Exception as error: + return str(error) + return "" + + +def test_no_ambiguous_same_line_member_channel(seed_15_failure: str) -> None: + assert "ambiguous same-line member channel" not in seed_15_failure + + +def test_entry_tails_keep_their_own_columns(seed_15_failure: str) -> None: + assert ( + "line 'l2' (__junction_23->s5__entry_right_16) and line 'l1'" + not in seed_15_failure + ) + + +def test_trunk_relocation_keeps_formed_curves(seed_15_failure: str) -> None: + starved = [ + line + for line in seed_15_failure.splitlines() + if "starved below a formed curve" in line + and "'__junction_24'->'__merge_12'" in line + ] + assert starved == [] From aa040bd07dcc829b0324cbbb1e8a4b2c2fb54bc7 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:43:36 +0100 Subject: [PATCH 132/158] test(routing): refresh gate coverage for the lane-run landing fixes --- docs/dev/routing_gate_coverage.md | 712 +++++++++++++++--------------- 1 file changed, 361 insertions(+), 351 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index e7695ae7c..a7473aa15 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2395/3475** gates fully exercised (both/all arms hit by some fixture); **1080** gates have at least one un-exercised arm. +**2412/3502** gates fully exercised (both/all arms hit by some fixture); **1090** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **287** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **286** gaps carry a triage verdict. ## `arranger.py` @@ -136,270 +136,278 @@ Gates with an un-exercised arm: ## `convergences.py` -358/616 gates fully exercised. +370/636 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 210 | `if edge_rank is None:` | `->L211` | | -| 292 | `if owned:` | `->L286` | | -| 308 | `if route is None:` | `->L309` | | -| 329 | `if route is None:` | `->L330` | | -| 343 | `if family is None:` | `->L344` | | -| 352 | `if not runs:` | `->L353` | | -| 374 | `if axis.axis is not DemandAxis.X:` | `->L375` | | -| 391 | `if route.exit_lane_transition_plan_id is not None:` | `->L392` | | -| 424 | `if not candidates:` | `->L425` | | -| 440 | `if (` | `->L449` | | -| 461 | `if (` | `->L469` | | -| 470 | `for rank in range(len(route.points) - 2, -1, -1):` | `->L471`, `->L483` | | -| 472 | `if (` | `->L470`, `->L479` | | -| 484 | `entry is not None` | `->L496` | | -| 485 | `and port is not None` | `->L496` | | -| 486 | `and port.side in (PortSide.LEFT, PortSide.RIGHT)` | `->L496` | | -| 488 | `and abs(target[0] - entry.x) <= COORD_TOLERANCE` | `->L496` | | -| 489 | `and abs(endpoint[1] - target[1]) > COORD_TOLERANCE` | `->L496` | | -| 502 | `if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE:` | `->L505` | | -| 506 | `if elbow != endpoint and elbow != target:` | `->L507`, `->L508` | | -| 552 | `if opening_rank is None:` | `->L553` | | -| 555 | `if route.curve_radii is not None:` | `->L559` | | -| 572 | `not landing.bypass` | `->L573`, `->L576` | | -| 573 | `or opening is None` | `->L574`, `->L576` | | -| 574 | `or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L576`, `->L577` | | -| 579 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L580`, `->L581` | | -| 589 | `if landing.opening_turn_segment is None or not landing.bypass:` | `->L590` | | -| 593 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L594` | | -| 610 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L611` | | -| 614 | `if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:` | `->L620` | | -| 621 | `outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE` | `->L622`, `->L624` | | -| 622 | `or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L624`, `->L625` | | -| 650 | `for rank, (start, end) in enumerate(zip(points, points[1:])):` | `->L666` | | -| 653 | `runway <= COORD_TOLERANCE` | `->L656` | | -| 661 | `if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:` | `->L665` | | -| 716 | `if exit_turn_geometry != _exit_turn_geometry(route):` | `->L717` | | -| 728 | `if approach is None:` | `->L729` | | -| 782 | `if direction in {Direction.R, Direction.L}:` | `->L786` | | -| 811 | `if len(route.points) < 2:` | `->L812` | | -| 821 | `if axis is DemandAxis.X:` | `->L827` | | -| 822 | `if abs(start[1] - end[1]) > COORD_TOLERANCE:` | `->L823` | | -| 827 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L828`, `->L829` | | -| 831 | `if extent_end - extent_start > COORD_TOLERANCE:` | `->L810` | | -| 914 | `entry_port is None` | `->L918` | | -| 915 | `or entry_port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L918` | | -| 916 | `or axis.axis is not DemandAxis.X` | `->L918` | | -| 920 | `if section is None:` | `->L921` | | -| 960 | `if opening is None:` | `->L961` | | -| 989 | `if axis is DemandAxis.X:` | `->L991` | | -| 1039 | `if any(edge not in edge_order for edge in edges):` | `->L1040` | | -| 1075 | `if not incoming_edges or not outgoing_edges:` | `->L1076` | | -| 1081 | `if group.line_id not in line_order:` | `->L1082` | | -| 1098 | `if trunk_edge_key is None:` | `->L1099` | | -| 1147 | `if route is not None:` | `->L1151` | | -| 1151 | `if route is None:` | `->L1152` | | -| 1168 | `if any(` | `->L1172` | | -| 1186 | `if (` | `->L1191` | | -| 1191 | `for edge_key in incoming_edges:` | `->L1192`, `->L1195` | | -| 1371 | `if (` | `->L1383` | | -| 1414 | `if continuation.covered_by_member_id is not None:` | `->L1415` | | -| 1523 | `if topology is None:` | `->L1524` | | -| 1611 | `if plan.trunk_axis is None:` | `->L1612` | **defensive** -- _turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one. | -| 1641 | `if _points_coincide(*segment):` | `->L1642` | | -| 1666 | `if (` | `->L1674` | | -| 1704 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1705` | | -| 1720 | `if abs(source_x - opening_x) > COORD_TOLERANCE:` | `->L1787` | | -| 1754 | `if uses_exit_handedness:` | `->L1755` | | -| 1778 | `if not uses_exit_handedness and (` | `->L1787` | | -| 1783 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1787` | | -| 1891 | `if opening_follows_flank:` | `->L1892` | | -| 1963 | `if landing.opening_turn_segment is None:` | `->L1964` | | -| 1970 | `if not carry_join:` | `->L1971` | | -| 2007 | `landing.approach_axis is DemandAxis.X` | `->L2011` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | -| 2008 | `and landing.opening_turn_segment is not None` | `->L2011` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | -| 2013 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L2014`, `->L2015` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | -| 2034 | `if reseated is None:` | `->L2035` | | -| 2040 | `if not moved:` | `->L2041` | | -| 2125 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2134` | | -| 2174 | `axis is None` | `->L2177` | | -| 2219 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2220` | | -| 2226 | `if actual is None:` | `->L2227` | | -| 2414 | `if any(` | `->L2419` | | -| 2525 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2526` | | -| 2555 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2556` | | -| 2566 | `if abs(start_y - end_y) > COORD_TOLERANCE:` | `->L2567` | | -| 2611 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2613` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | -| 2653 | `if run is None:` | `->L2654` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | -| 2743 | `if run is None:` | `->L2744` | | -| 2772 | `if coordinate is None:` | `->L2773` | | -| 2800 | `if run is None:` | `->L2801` | | -| 2847 | `if axis is None:` | `->L2848` | | -| 2889 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2890` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | -| 2899 | `if primary is None:` | `->L2900` | | -| 2912 | `or landing.opening_turn_segment is None` | `->L2914` | | -| 2925 | `if reseated is not None:` | `->L2908` | | -| 2965 | `if (` | `->L2971` | | -| 2973 | `for plan_rank, landing_rank in members:` | `->L2954`, `->L2974` | | -| 2976 | `if reseated is None:` | `->L2977`, `->L2978` | | -| 2995 | `if len(channel.line_ids) != 1:` | `->L2996` | | -| 3020 | `if (` | `->L3024` | | -| 3026 | `if endpoint is None:` | `->L3027` | | -| 3032 | `channel.flank_rank is not None` | `->L3037` | | -| 3037 | `if any(` | `->L3042` | | -| 3046 | `if moved is None:` | `->L3047` | | -| 3061 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3062` | | -| 3087 | `if (` | `->L3095` | | -| 3101 | `if reseated is None:` | `->L3102`, `->L3103` | | -| 3107 | `if abs(reseated_opening - source.x) >= (` | `->L3083`, `->L3112` | | -| 3112 | `if (` | `->L3117`, `->L3121` | | -| 3205 | `for rank in displaced_ranks:` | `->L3261` | | -| 3208 | `if (` | `->L3243` | | -| 3246 | `if reseated is None:` | `->L3247`, `->L3248` | | -| 3250 | `if (` | `->L3255`, `->L3259` | | -| 3268 | `if moved_channels and all(` | `->L3191`, `->L3276` | | -| 3293 | `if tail is None:` | `->L3294`, `->L3295` | | -| 3316 | `if (` | `->L3323` | | -| 3324 | `if bypass_segment is None:` | `->L3325`, `->L3326` | | -| 3326 | `for obstacle in direct_landings:` | `->L3315`, `->L3327` | | -| 3328 | `if (` | `->L3338`, `->L3339` | | -| 3341 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3342`, `->L3343` | | -| 3348 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3349`, `->L3350` | | -| 3356 | `if moved is None:` | `->L3357`, `->L3358` | | -| 3378 | `if bypass_segment is None:` | `->L3326`, `->L3379` | | -| 3412 | `if not obstacles:` | `->L3414` | | -| 3428 | `for coordinate in candidates:` | `->L3402`, `->L3429` | | -| 3429 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3430`, `->L3431` | | -| 3437 | `if moved is None:` | `->L3438`, `->L3439` | | -| 3445 | `if not moved_channels or any(` | `->L3452`, `->L3453` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | -| 3457 | `if (` | `->L3461`, `->L3462` | | -| 3522 | `obstacle_segment is None` | `->L3527` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | -| 3523 | `or landing_segment is None` | `->L3527` | | -| 3538 | `if reseated is None:` | `->L3539` | | -| 3544 | `landing.member_id == plan.primary_trunk_member_id` | `->L3567` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | -| 3545 | `and plan.trunk_axis is not None` | `->L3567` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | -| 3546 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3567` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | -| 3576 | `if (` | `->L3509` | | -| 3591 | `if axis is None:` | `->L3592` | | -| 3615 | `if coordinate is not None:` | `->L3620` | | -| 3657 | `if endpoint is None:` | `->L3658` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | -| 3680 | `if plan.trunk_axis is None:` | `->L3681` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | -| 3706 | `if coordinate is not None:` | `->L3712` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | -| 3766 | `for seat, obstacle in obstacles:` | `->L-3751`, `->L3767` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | -| 3768 | `if axis is None:` | `->L3769`, `->L3770` | | -| 3780 | `if lane is None:` | `->L3781`, `->L3782` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | -| 3801 | `if flank_rank != 1:` | `->L3803` | | -| 3812 | `if fork is None:` | `->L3813`, `->L3821` | | -| 3889 | `if forked:` | `->L3890` | | -| 3890 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3891`, `->L3892` | | -| 3894 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3895` | | -| 3918 | `if forked:` | `->L3919`, `->L3920` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | -| 3993 | `if endpoint is None:` | `->L3994` | | -| 4004 | `if coordinate is None:` | `->L4005` | | -| 4017 | `if reseated is not None:` | `->L4018`, `->L4021` | | -| 4064 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L4112` | | -| 4142 | `if not (` | `->L4145` | | -| 4161 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4162` | | -| 4219 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4204` | | -| 4468 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4469` | | -| 4488 | `if any(` | `->L4493` | | -| 4544 | `if axis is None:` | `->L4545` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | -| 4686 | `if run is not None:` | `->L4737` | | -| 4813 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4814` | | -| 4913 | `if not landing_feasible(candidate_coordinate):` | `->L4914` | | -| 4923 | `if (` | `->L4927` | | -| 4976 | `if moved_plan is None:` | `->L4977` | | -| 4995 | `if (` | `->L4999` | | -| 5064 | `if (` | `->L5072` | | -| 5101 | `for coordinate in candidates:` | `->L5054` | | -| 5121 | `if moved is None:` | `->L5122` | | -| 5133 | `if not moved_channels or any(` | `->L5146` | | -| 5151 | `if (` | `->L5155` | | -| 5251 | `if any(` | `->L5259` | | -| 5309 | `if clearance is None:` | `->L5310` | | -| 5316 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5320` | | -| 5323 | `if (` | `->L5328`, `->L5329` | | -| 5349 | `if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:` | `->L5350` | | -| 5363 | `if opening_key in moved_openings:` | `->L5364` | | -| 5372 | `if moved is None:` | `->L5373` | | -| 5376 | `if not feasible:` | `->L5377` | | -| 5378 | `if not feasible:` | `->L5379` | | -| 5381 | `if (` | `->L5385` | | -| 5391 | `if any(` | `->L5395` | | -| 5402 | `if any(` | `->L5409` | | -| 5410 | `if any(` | `->L5415` | | -| 5448 | `if not obstacles:` | `->L5450` | | -| 5467 | `for coordinate in candidates:` | `->L5433`, `->L5468` | | -| 5474 | `if any(` | `->L5488`, `->L5489` | | -| 5544 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5545` | | -| 5785 | `if not negative or not positive:` | `->L5786` | | -| 5845 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L5846` | | -| 5850 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L5858` | | -| 5878 | `if gap is None:` | `->L5879` | | -| 5889 | `if requirement is None:` | `->L5890` | | -| 5893 | `if current is None or requirement.required > current.required:` | `->L5835` | | -| 5909 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L5911` | | -| 5915 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5916`, `->L5917` | | -| 5925 | `if requirement is None:` | `->L5926`, `->L5927` | | -| 5930 | `if current is None or requirement.required > current.required:` | `->L5908`, `->L5931` | | -| 5962 | `if (` | `->L5968` | | -| 5973 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L5974`, `->L5975` | | -| 5983 | `if requirement is not None:` | `->L5946`, `->L5984` | | -| 6030 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L6034` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | -| 6037 | `if first_delta * second_delta < 0:` | `->L6038` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 6048 | `if (` | `->L6060`, `->L6063` | | -| 6077 | `if opposing_approaches is not None:` | `->L6078` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | -| 6122 | `if same_line and first_direction is not second_direction:` | `->L6127` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | -| 6128 | `if (` | `->L6155` | | -| 6175 | `if conflict is not None:` | `->L6176` | | -| 6185 | `if requirements:` | `->L6186`, `->L6188` | | -| 6223 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6224` | | -| 6230 | `if (` | `->L6241` | | -| 6241 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6244`, `->L6245` | | -| 6245 | `if any(` | `->L6250`, `->L6251` | | -| 6258 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6259` | | -| 6259 | `if any(` | `->L6264`, `->L6265` | | -| 6271 | `if _gap_channels_crowd(` | `->L6278` | | -| 6278 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6281`, `->L6282` | | -| 6282 | `if any(` | `->L6286`, `->L6287` | | -| 6303 | `if not plan.owns_geometry:` | `->L6304` | | -| 6367 | `if not plan.owns_geometry:` | `->L6368` | | -| 6391 | `owner_edge not in edge_ranks` | `->L6395` | | -| 6430 | `if not plan.owns_geometry:` | `->L6431` | | -| 6449 | `if ownership.edge in by_edge:` | `->L6450` | | -| 6577 | `for item in system_plans:` | `->L6578`, `->L6588` | | -| 6934 | `if not horizontal and not vertical:` | `->L6935` | | -| 6958 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L6943` | | -| 6991 | `if axis.axis is DemandAxis.X:` | `->L7014` | | -| 7118 | `if not candidates:` | `->L7119` | | -| 7140 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7143` | | -| 7143 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7146` | | -| 7149 | `if horizontal:` | `->L7150` | | -| 7218 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7219` | | -| 7226 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7227` | | -| 7245 | `if actual is None:` | `->L7246` | | -| 7252 | `direction is not landing.approach_direction` | `->L7256` | | -| 7253 | `or handedness is not landing.corner_handedness` | `->L7256` | | -| 7254 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7256` | | -| 7275 | `opening is None` | `->L7279` | | -| 7276 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7279` | | -| 7277 | `or emitted_segment != landing.opening_turn_segment` | `->L7279` | | -| 7288 | `if query is None:` | `->L7289` | | -| 7294 | `if not plan.owns_geometry:` | `->L7295` | | -| 7304 | `if (` | `->L7318` | | -| 7350 | `if opening is None:` | `->L7351` | | -| 7351 | `if not clearance_pending:` | `->L7352`, `->L7367` | | -| 7359 | `landing.opening_turn_segment is not None` | `->L7367` | | -| 7365 | `if route.curve_radii is not None:` | `->L7367` | | -| 7433 | `if landing.opening_turn_coordinate is not None:` | `->L7441` | | -| 7449 | `if not clearance_pending and any(` | `->L7453` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | -| 7478 | `if not plan.owns_geometry:` | `->L7479` | | -| 7489 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7490` | | -| 7499 | `if route is None:` | `->L7500` | | -| 7505 | `if (` | `->L7510` | | -| 7517 | `if any(` | `->L7521` | | -| 7541 | `if (` | `->L7550` | | -| 7556 | `if (` | `->L7567` | | -| 7583 | `if route is None or membership is None:` | `->L7584` | | -| 7589 | `if any(` | `->L7593` | | +| 213 | `if edge_rank is None:` | `->L214` | | +| 295 | `if owned:` | `->L289` | | +| 311 | `if route is None:` | `->L312` | | +| 332 | `if route is None:` | `->L333` | | +| 346 | `if family is None:` | `->L347` | | +| 355 | `if not runs:` | `->L356` | | +| 377 | `if axis.axis is not DemandAxis.X:` | `->L378` | | +| 394 | `if route.exit_lane_transition_plan_id is not None:` | `->L395` | | +| 427 | `if not candidates:` | `->L428` | | +| 443 | `if (` | `->L452` | | +| 464 | `if (` | `->L472` | | +| 473 | `for rank in range(len(route.points) - 2, -1, -1):` | `->L474`, `->L486` | | +| 475 | `if (` | `->L473`, `->L482` | | +| 487 | `entry is not None` | `->L499` | | +| 488 | `and port is not None` | `->L499` | | +| 489 | `and port.side in (PortSide.LEFT, PortSide.RIGHT)` | `->L499` | | +| 491 | `and abs(target[0] - entry.x) <= COORD_TOLERANCE` | `->L499` | | +| 492 | `and abs(endpoint[1] - target[1]) > COORD_TOLERANCE` | `->L499` | | +| 505 | `if vertical and abs(endpoint[0] - target[0]) <= COORD_TOLERANCE:` | `->L508` | | +| 509 | `if elbow != endpoint and elbow != target:` | `->L510`, `->L511` | | +| 555 | `if opening_rank is None:` | `->L556` | | +| 558 | `if route.curve_radii is not None:` | `->L562` | | +| 575 | `not landing.bypass` | `->L576`, `->L579` | | +| 576 | `or opening is None` | `->L577`, `->L579` | | +| 577 | `or abs(opening[1][1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L579`, `->L580` | | +| 582 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L583`, `->L584` | | +| 592 | `if landing.opening_turn_segment is None or not landing.bypass:` | `->L593` | | +| 596 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L597` | | +| 613 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L614` | | +| 617 | `if abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE:` | `->L623` | | +| 624 | `outward * (opening_end[0] - landing.join_point[0]) < SECTION_ROUTE_CLEARANCE` | `->L625`, `->L627` | | +| 625 | `or abs(opening_end[1] - landing.join_point[1]) <= COORD_TOLERANCE` | `->L627`, `->L628` | | +| 653 | `for rank, (start, end) in enumerate(zip(points, points[1:])):` | `->L669` | | +| 656 | `runway <= COORD_TOLERANCE` | `->L659` | | +| 664 | `if abs(prior[0] - start[0]) + abs(prior[1] - start[1]) > COORD_TOLERANCE:` | `->L668` | | +| 719 | `if exit_turn_geometry != _exit_turn_geometry(route):` | `->L720` | | +| 731 | `if approach is None:` | `->L732` | | +| 785 | `if direction in {Direction.R, Direction.L}:` | `->L789` | | +| 814 | `if len(route.points) < 2:` | `->L815` | | +| 824 | `if axis is DemandAxis.X:` | `->L830` | | +| 825 | `if abs(start[1] - end[1]) > COORD_TOLERANCE:` | `->L826` | | +| 830 | `if abs(start[0] - end[0]) > COORD_TOLERANCE:` | `->L831`, `->L832` | | +| 834 | `if extent_end - extent_start > COORD_TOLERANCE:` | `->L813` | | +| 917 | `entry_port is None` | `->L921` | | +| 918 | `or entry_port.side not in (PortSide.LEFT, PortSide.RIGHT)` | `->L921` | | +| 919 | `or axis.axis is not DemandAxis.X` | `->L921` | | +| 923 | `if section is None:` | `->L924` | | +| 963 | `if opening is None:` | `->L964` | | +| 992 | `if axis is DemandAxis.X:` | `->L994` | | +| 1042 | `if any(edge not in edge_order for edge in edges):` | `->L1043` | | +| 1078 | `if not incoming_edges or not outgoing_edges:` | `->L1079` | | +| 1084 | `if group.line_id not in line_order:` | `->L1085` | | +| 1101 | `if trunk_edge_key is None:` | `->L1102` | | +| 1150 | `if route is not None:` | `->L1154` | | +| 1154 | `if route is None:` | `->L1155` | | +| 1171 | `if any(` | `->L1175` | | +| 1189 | `if (` | `->L1194` | | +| 1194 | `for edge_key in incoming_edges:` | `->L1195`, `->L1198` | | +| 1374 | `if (` | `->L1386` | | +| 1417 | `if continuation.covered_by_member_id is not None:` | `->L1418` | | +| 1526 | `if topology is None:` | `->L1527` | | +| 1614 | `if plan.trunk_axis is None:` | `->L1615` | **defensive** -- _turn_crosses_shared_run's no-trunk-axis skip, a gate the restored conflict conditions added whose ordinal collided with a pre-existing baseline key, so the ratchet acknowledged it without a verdict. Its sole caller is _system_conflict's trunk-pair scan, whose `trunks` tuple is built only from plans with a trunk axis, so the plan handed over always has one. | +| 1644 | `if _points_coincide(*segment):` | `->L1645` | | +| 1669 | `if (` | `->L1677` | | +| 1707 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1708` | | +| 1723 | `if abs(source_x - opening_x) > COORD_TOLERANCE:` | `->L1790` | | +| 1757 | `if uses_exit_handedness:` | `->L1758` | | +| 1781 | `if not uses_exit_handedness and (` | `->L1790` | | +| 1786 | `if direction_axis(incoming) is not landing.approach_axis:` | `->L1790` | | +| 1894 | `if opening_follows_flank:` | `->L1895` | | +| 1966 | `if landing.opening_turn_segment is None:` | `->L1967` | | +| 1973 | `if not carry_join:` | `->L1974` | | +| 2010 | `landing.approach_axis is DemandAxis.X` | `->L2014` | **needs-review** -- _reseat_landing_cross moves a stated opening turn only on an X approach, because the opening turn names a column and _landing_cross_segment reads a perpendicular approach's crossing row off the runway whatever opening turn the landing carries. The false arm is the perpendicular class the widened _settle_opposing_landing_channels scope newly admits; corpus-wide every counter-running same-line pair that conflicts approaches on X. Reachable. | +| 2011 | `and landing.opening_turn_segment is not None` | `->L2014` | **defensive** -- The second operand of the same condition. A landing that states an opening turn coordinate states its segment with it, so on an X approach the operand is true wherever the first is; it narrows the Optional _reseat_landing_opening requires. | +| 2016 | `if runway < curve_radius - COORD_TOLERANCE:` | `->L2017`, `->L2018` | **needs-review** -- _reseat_landing_cross refusing a seat that costs the approach corner its radius, on the runway-stated branch. Un-exercised because that branch is itself un-exercised; see `if landing.opening_turn_segment is not None:::#1`. Reachable. | +| 2037 | `if reseated is None:` | `->L2038` | | +| 2043 | `if not moved:` | `->L2044` | | +| 2128 | `if abs(approach_delta) > COORD_TOLERANCE:` | `->L2137` | | +| 2177 | `axis is None` | `->L2180` | | +| 2222 | `if tail is not None and _points_coincide(tail[0], landing.join_point):` | `->L2223` | | +| 2229 | `if actual is None:` | `->L2230` | | +| 2417 | `if any(` | `->L2422` | | +| 2528 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2529` | | +| 2558 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2559` | | +| 2569 | `if abs(start_y - end_y) > COORD_TOLERANCE:` | `->L2570` | | +| 2614 | `or abs(after[0] - end[0]) > COORD_TOLERANCE` | `->L2616` | **needs-review** -- Mirror of the leading-flank reject: an interior horizontal whose trailing flank is not vertical. Same H-D-H evidence and the same reason it is not covered by the common.py precedent. Wants a fixture. | +| 2656 | `if run is None:` | `->L2657` | **defensive** -- _pack_cotravelling_corridor_runs skips a plan with no X-axis trunk run. _trunk_corridor_run returns None only when trunk_axis is absent or is DemandAxis.Y; every plan reaching here is owns_geometry, and owns_geometry => trunk_axis is not None is asserted at four call sites. One root cause with the module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk (346 calls, all X). | +| 2746 | `if run is None:` | `->L2747` | | +| 2774 | `if coordinate is None:` | `->L2775` | | +| 2802 | `if run is None:` | `->L2803` | | +| 2849 | `if axis is None:` | `->L2850` | | +| 2891 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L2892` | **defensive** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,18] split). The `axis is None` half cannot fire: callers filter on plan.owns_geometry and owns_geometry => trunk_axis is not None is asserted at 4 sites. The DemandAxis.Y half is unsettled -- a vertical trunk axis is constructible in code (_direct_axis_points / _shared_terminal_axis yield Y for a vertical approach) but no corpus topology produces one; if a TB convergence trunk is shown constructible this reclassifies reachable-but-benign (the guard returns the right empty answer). | +| 2901 | `if primary is None:` | `->L2902` | | +| 2914 | `or landing.opening_turn_segment is None` | `->L2916` | | +| 2927 | `if reseated is not None:` | `->L2910` | | +| 2967 | `if (` | `->L2973` | | +| 2975 | `for plan_rank, landing_rank in members:` | `->L2956`, `->L2976` | | +| 2978 | `if reseated is None:` | `->L2979`, `->L2980` | | +| 2997 | `if len(channel.line_ids) != 1:` | `->L2998` | | +| 3022 | `if (` | `->L3026` | | +| 3028 | `if endpoint is None:` | `->L3029` | | +| 3034 | `channel.flank_rank is not None` | `->L3039` | | +| 3039 | `if any(` | `->L3044` | | +| 3048 | `if moved is None:` | `->L3049` | | +| 3063 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L3064` | | +| 3089 | `if (` | `->L3097` | | +| 3103 | `if reseated is None:` | `->L3104`, `->L3105` | | +| 3109 | `if abs(reseated_opening - source.x) >= (` | `->L3085`, `->L3114` | | +| 3114 | `if (` | `->L3119`, `->L3123` | | +| 3207 | `for rank in displaced_ranks:` | `->L3263` | | +| 3210 | `if (` | `->L3245` | | +| 3248 | `if reseated is None:` | `->L3249`, `->L3250` | | +| 3252 | `if (` | `->L3257`, `->L3261` | | +| 3270 | `if moved_channels and all(` | `->L3193`, `->L3278` | | +| 3295 | `if tail is None:` | `->L3296`, `->L3297` | | +| 3318 | `if (` | `->L3325` | | +| 3326 | `if bypass_segment is None:` | `->L3327`, `->L3328` | | +| 3328 | `for obstacle in direct_landings:` | `->L3317`, `->L3329` | | +| 3330 | `if (` | `->L3340`, `->L3341` | | +| 3343 | `if port is None or port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L3344`, `->L3345` | | +| 3350 | `if not _bypass_opening_candidate_feasible(landing, candidate, ctx):` | `->L3351`, `->L3352` | | +| 3358 | `if moved is None:` | `->L3359`, `->L3360` | | +| 3380 | `if bypass_segment is None:` | `->L3328`, `->L3381` | | +| 3414 | `if not obstacles:` | `->L3416` | | +| 3430 | `for coordinate in candidates:` | `->L3404`, `->L3431` | | +| 3431 | `if not _inside_usable_gap(gap_edges, coordinate):` | `->L3432`, `->L3433` | | +| 3439 | `if moved is None:` | `->L3440`, `->L3441` | | +| 3447 | `if not moved_channels or any(` | `->L3454`, `->L3455` | **needs-review** -- Reached by the corpus at 897747b0 and no longer: the branch's later commits (908637eb..04209e3d) changed which paths fire, so this arm lost its last covering fixture rather than becoming unreachable. Left un-exercised deliberately -- the render corpus is frozen for a measurement against main, so no fixture was authored. | +| 3459 | `if (` | `->L3463`, `->L3464` | | +| 3524 | `obstacle_segment is None` | `->L3529` | **defensive** -- A resident is read back from `settled` on every comparison, and laning moves its cross run rather than removing it, so the segment is drawable whenever it is read. The operand guards the Optional that read returns. | +| 3525 | `or landing_segment is None` | `->L3529` | | +| 3540 | `if reseated is None:` | `->L3541` | | +| 3546 | `landing.member_id == plan.primary_trunk_member_id` | `->L3569` | **defensive** -- The first conjunct of the widened flank-carry condition. Its false arm is the ordinary feeder landing, which every fixture re-seating a landing takes; the coverage tool reports the operand separately from the conjunction above it. | +| 3547 | `and plan.trunk_axis is not None` | `->L3569` | **defensive** -- _settle_opposing_landing_channels carries the trunk flank only when the landing it re-seated is the plan's primary trunk member. A plan naming a primary trunk member always states the trunk axis that member travels, so the false arm is unreachable through this conjunction; it narrows the Optional for the flank move below. | +| 3548 | `and plan.trunk_axis.axis is landing.approach_axis` | `->L3569` | **needs-review** -- The flank follows a re-seated landing only where flank and landing are measured on one axis. Every primary-trunk landing the corpus re-seats approaches on its own trunk's axis, so the false arm wants a fixture whose trunk travels one axis while its primary trunk member's landing approaches on the other -- a perpendicular approach into a convergence, which is the class the widened scope newly admits. Reachable. | +| 3578 | `if (` | `->L3511` | | +| 3593 | `if axis is None:` | `->L3594` | | +| 3617 | `if coordinate is not None:` | `->L3622` | | +| 3659 | `if endpoint is None:` | `->L3660` | **defensive** -- _flank_lane needs the endpoint its flank turns onto to price the runway. ConvergenceTrunkAxis states source and target endpoint coordinates together or not at all, and every construction site in this module passes both, so the arm guards the Optional rather than a shape the planner builds. | +| 3682 | `if plan.trunk_axis is None:` | `->L3683` | **defensive** -- Pre-existing gap, re-keyed from #1 by the restored _turn_crosses_shared_run guard that now takes that ordinal (unchanged [0,11] split). _lane_trunk_flanks' skip for a plan with no trunk axis. Every plan reaching it is PLANNED -- the two _settle_convergence_geometry call sites filter on owns_geometry and the third caller passes freshly built planned plans -- and validate_convergence_plans asserts trunk_axis is not None for exactly those, so a plan that took this skip would abort on that assertion rather than render. _build_planned_convergence can construct such a plan, so the guard is defensive in practice rather than unconstructible. | +| 3708 | `if coordinate is not None:` | `->L3714` | **needs-review** -- Pre-existing gap, re-keyed from #2 by the newly inserted packing gates (unchanged [0,2] split). _nearest_lane's fall-through when no flank candidate clears the runway: it runs 9 times, always against a single obstacle, and in 5 of those one of the two candidates is already rejected by the curve-radius runway test, so a shorter flank runway rejects both. Reachable; wants a fixture. | +| 3768 | `for seat, obstacle in obstacles:` | `->L-3753`, `->L3769` | **needs-review** -- The give-way loop in _lane_trunk_flanks, entered only when no lane one clearance from the residents leaves the arriving flank a full turn radius to its endpoint. No corpus fixture crowds two same-line counter-running flanks that tightly, so the loop body is un-entered. Reachable, and exercised by test_a_flank_with_no_lane_of_its_own_is_given_way_to_by_the_resident and by test_a_resident_gives_way_to_a_lane_clear_of_the_flanks_around_it. | +| 3770 | `if axis is None:` | `->L3771`, `->L3772` | | +| 3782 | `if lane is None:` | `->L3783`, `->L3784` | **needs-review** -- A resident asked to give way that has no reachable lane of its own either. Un-entered because the give-way path itself is un-entered on the corpus. Reachable; a fixture is a channel with no seat for either run, which is the population #1712 exists to give room to. | +| 3803 | `if flank_rank != 1:` | `->L3805` | | +| 3814 | `if fork is None:` | `->L3815`, `->L3823` | | +| 3891 | `if forked:` | `->L3892` | | +| 3892 | `if abs(flank_coordinate - landing_coordinate) <= COORD_TOLERANCE:` | `->L3893`, `->L3894` | | +| 3896 | `if abs(endpoint - flank_coordinate) <= clearance:` | `->L3897` | | +| 3920 | `if forked:` | `->L3921`, `->L3922` | **needs-review** -- _landing_gives_way_to_flank joins the landing to the flank's column when the two are one stroke off a shared fork, and steps it one clearance off otherwise. Neither arm is reached because _flank_settled_column never declines on the corpus: all 32 crowded landing/flank pairs seat with 9px to spare. Reachable; a fixture needs an inter-column gap below MERGE_GAP_MIN carrying a chained convergence. | +| 3995 | `if endpoint is None:` | `->L3996` | | +| 4006 | `if coordinate is None:` | `->L4007` | | +| 4019 | `if reseated is not None:` | `->L4020`, `->L4023` | | +| 4066 | `if axis is not None and axis.axis is DemandAxis.X:` | `->L4114` | | +| 4164 | `if not (` | `->L4167` | | +| 4187 | `if source is not None and abs(source.x - column) > COORD_TOLERANCE:` | `->L4189` | | +| 4210 | `if axis is None or axis.axis is not DemandAxis.X:` | `->L4211` | | +| 4269 | `if primary_edge is not None and plan.primary_trunk_member_id is not None:` | `->L4254` | | +| 4523 | `if endpoint is None or abs(endpoint - column) <= curve_radius:` | `->L4524` | | +| 4543 | `if any(` | `->L4548` | | +| 4599 | `if axis is None:` | `->L4600` | **defensive** -- A resident flank in _give_way_to was seated from a plan whose trunk axis was read to build it, so the plan still states one. The guard narrows the Optional before the flank move. | +| 4741 | `if run is not None:` | `->L4792` | | +| 4868 | `if plan.trunk_axis is None or plan.trunk_axis.axis is not DemandAxis.X:` | `->L4869` | | +| 4968 | `if not landing_feasible(candidate_coordinate):` | `->L4969` | | +| 4978 | `if (` | `->L4982` | | +| 5031 | `if moved_plan is None:` | `->L5032` | | +| 5050 | `if (` | `->L5054` | | +| 5119 | `if (` | `->L5127` | | +| 5156 | `for coordinate in candidates:` | `->L5109` | | +| 5176 | `if moved is None:` | `->L5177` | | +| 5188 | `if not moved_channels or any(` | `->L5201` | | +| 5206 | `if (` | `->L5210` | | +| 5374 | `if clearance is None:` | `->L5375` | | +| 5381 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5385` | | +| 5388 | `if (` | `->L5393`, `->L5394` | | +| 5415 | `elif not from_left and math.isfinite(lane_hi):` | `->L5416` | | +| 5434 | `if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:` | `->L5435` | | +| 5448 | `if opening_key in moved_openings:` | `->L5449` | | +| 5457 | `if moved is None:` | `->L5458` | | +| 5461 | `if not feasible:` | `->L5462` | | +| 5463 | `if not feasible:` | `->L5464` | | +| 5466 | `if (` | `->L5470` | | +| 5476 | `if any(` | `->L5480` | | +| 5487 | `if any(` | `->L5494` | | +| 5495 | `if any(` | `->L5500` | | +| 5501 | `if any(` | `->L5507` | | +| 5540 | `if not obstacles:` | `->L5542` | | +| 5559 | `for coordinate in candidates:` | `->L5525`, `->L5560` | | +| 5566 | `if any(` | `->L5580`, `->L5581` | | +| 5628 | `if run.far <= other_lo - clearance:` | `->L5629` | | +| 5630 | `elif run.far >= other_hi + clearance:` | `->L5633` | | +| 5687 | `if first.claimant_member_ids & second.claimant_member_ids:` | `->L5688` | | +| 5755 | `if not (` | `->L5764` | | +| 5767 | `if not 0 <= neighbour < len(points):` | `->L5768` | | +| 5771 | `abs(beyond[1] - turn[1]) > COORD_TOLERANCE` | `->L5774` | | +| 5772 | `or abs(beyond[0] - turn[0]) <= COORD_TOLERANCE` | `->L5774` | | +| 5959 | `if not negative or not positive:` | `->L5960` | | +| 6019 | `if _direction(*landing_segment) not in (Direction.U, Direction.D):` | `->L6020` | | +| 6024 | `if endpoint is None or _shared_source_bundle_stroke(` | `->L6032` | | +| 6052 | `if gap is None:` | `->L6053` | | +| 6063 | `if requirement is None:` | `->L6064` | | +| 6067 | `if current is None or requirement.required > current.required:` | `->L6009` | | +| 6083 | `if not _stacked_elbow_channels_crowd(channel, fixed):` | `->L6085` | | +| 6089 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L6090`, `->L6091` | | +| 6099 | `if requirement is None:` | `->L6100`, `->L6101` | | +| 6104 | `if current is None or requirement.required > current.required:` | `->L6082`, `->L6105` | | +| 6136 | `if (` | `->L6142` | | +| 6147 | `if candidate <= right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE:` | `->L6148`, `->L6149` | | +| 6157 | `if requirement is not None:` | `->L6120`, `->L6158` | | +| 6204 | `if first_plan.trunk_axis.axis is DemandAxis.X:` | `->L6208` | **needs-review** -- The Y-axis half of the opening-arm delta measurement. Six fixtures reach it and all take the X half, for the one root cause shared with this module's other DemandAxis.X scope guards: no corpus topology produces a vertical convergence trunk. Not a guard -- both halves are correct code for their axis -- so it is reachable exactly when a vertical trunk axis is. What would settle it is a TB convergence whose _direct_axis_points / _shared_terminal_axis yields DemandAxis.Y. | +| 6211 | `if first_delta * second_delta < 0:` | `->L6212` | **needs-review** -- OPPOSING_OPENING_CHANNEL: two arms of one line that turn on one shared column and then open to opposite sides of their source. Six fixtures reach the test with a genuine shared-opening pair, and in every one the two trunks open the same way, which the code below reads as one stroke branching to several destinations. Neutralising _settle_opposing_landing_channels makes it fire on merge_bottom_row_bypass and merge_feeder_shared_channel_gap; neutralising _settle_shared_opening_pivots and _settle_shared_source_openings does not, and the pivot pass cannot suppress it in any case because its group key partitions by the travel direction of flank 1. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 6222 | `if (` | `->L6234`, `->L6237` | | +| 6251 | `if opposing_approaches is not None:` | `->L6252` | **needs-review** -- The refusal arm for the SHARED_APPROACH_CHANNEL conflict _opposing_landing_approaches reports. Un-exercised for exactly the reason that helper's own pair test is (`convergences.py::if (::#4`): the helper is called on 18 fixtures and returns None on every one. Reachable; closing it and closing #4 are the same fixture. | +| 6296 | `if same_line and first_direction is not second_direction:` | `->L6301` | **needs-review** -- SHARED_TRUNK_CHANNEL for a same-line pair whose outward and return legs crowd one channel and which _settle_shared_trunk_channels could seat no lane for: both runs boxed in by the obstacles either side of them, since the arriving flank now gives way to a resident and the resident gives way back. Read in the travel frame the laning pass decides in, so it no longer fires on a rank-1/rank-3 pair that pass deliberately fused. Neutralising that pass makes it fire 5 times on merge_around_below_leftmost, all central-run pairs at separation 0 and 6px. Reachable; reaching it is a feasibility refusal rather than a change of emitter -- see #1712. | +| 6302 | `if (` | `->L6329` | | +| 6349 | `if conflict is not None:` | `->L6350` | | +| 6359 | `if requirements:` | `->L6360`, `->L6362` | | +| 6397 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6398` | | +| 6404 | `if (` | `->L6415` | | +| 6415 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6418`, `->L6419` | | +| 6419 | `if any(` | `->L6424`, `->L6425` | | +| 6432 | `if _stacked_elbow_channels_crowd(channel, member_channel):` | `->L6433` | | +| 6433 | `if any(` | `->L6438`, `->L6439` | | +| 6445 | `if _gap_channels_crowd(` | `->L6452` | | +| 6452 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6455`, `->L6456` | | +| 6456 | `if any(` | `->L6460`, `->L6461` | | +| 6477 | `if not plan.owns_geometry:` | `->L6478` | | +| 6541 | `if not plan.owns_geometry:` | `->L6542` | | +| 6565 | `owner_edge not in edge_ranks` | `->L6569` | | +| 6604 | `if not plan.owns_geometry:` | `->L6605` | | +| 6623 | `if ownership.edge in by_edge:` | `->L6624` | | +| 6751 | `for item in system_plans:` | `->L6752`, `->L6762` | | +| 7184 | `if not horizontal and not vertical:` | `->L7185` | | +| 7208 | `if interval[1] - interval[0] > COORD_TOLERANCE:` | `->L7193` | | +| 7241 | `if axis.axis is DemandAxis.X:` | `->L7264` | | +| 7368 | `if not candidates:` | `->L7369` | | +| 7390 | `if owned_offsets[0] is not None and owned_bases[0] is not None:` | `->L7393` | | +| 7393 | `if owned_offsets[1] is not None and owned_bases[1] is not None:` | `->L7396` | | +| 7399 | `if horizontal:` | `->L7400` | | +| 7468 | `if abs(route.points[rank][across] - axis.coordinate) > COORD_TOLERANCE:` | `->L7469` | | +| 7476 | `if not 0 <= flank_rank < len(route.points) - 1:` | `->L7477` | | +| 7495 | `if actual is None:` | `->L7496` | | +| 7502 | `direction is not landing.approach_direction` | `->L7506` | | +| 7503 | `or handedness is not landing.corner_handedness` | `->L7506` | | +| 7504 | `or runway < landing.minimum_runway - COORD_TOLERANCE` | `->L7506` | | +| 7525 | `opening is None` | `->L7529` | | +| 7526 | `or abs(opening.x - landing.opening_turn_coordinate) > COORD_TOLERANCE` | `->L7529` | | +| 7527 | `or emitted_segment != landing.opening_turn_segment` | `->L7529` | | +| 7538 | `if query is None:` | `->L7539` | | +| 7544 | `if not plan.owns_geometry:` | `->L7545` | | +| 7554 | `if (` | `->L7568` | | +| 7600 | `if opening is None:` | `->L7601` | | +| 7601 | `if not clearance_pending:` | `->L7602`, `->L7617` | | +| 7609 | `landing.opening_turn_segment is not None` | `->L7617` | | +| 7615 | `if route.curve_radii is not None:` | `->L7617` | | +| 7683 | `if landing.opening_turn_coordinate is not None:` | `->L7691` | | +| 7699 | `if not clearance_pending and any(` | `->L7703` | **needs-review** -- The endpoint-agreement refusal is deferred only while a provisional convergence plan carries a published boundary-clearance requirement. Production rendering settles that grant and immediately observes a strict plan with clearance publication disabled, so the same guard is active before anything can render. No committed corpus fixture reaches the provisional shortfall; the controlled regression lowers the placement floor to exercise both arms. | +| 7728 | `if not plan.owns_geometry:` | `->L7729` | | +| 7739 | `if trunk_route is None or not _route_covers_trunk(trunk_route, plan.trunk_axis):` | `->L7740` | | +| 7749 | `if route is None:` | `->L7750` | | +| 7755 | `if (` | `->L7760` | | +| 7767 | `if any(` | `->L7771` | | +| 7791 | `if (` | `->L7800` | | +| 7806 | `if (` | `->L7817` | | +| 7833 | `if route is None or membership is None:` | `->L7834` | | +| 7839 | `if any(` | `->L7843` | | ## `core.py` @@ -787,7 +795,7 @@ Gates with an un-exercised arm: ## `member_geometry.py` -113/173 gates fully exercised. +114/173 gates fully exercised. Gates with an un-exercised arm: @@ -830,33 +838,32 @@ Gates with an un-exercised arm: | 1451 | `if not ctx.validate_final_route_frames:` | `->L1452`, `->L1453` | | | 1457 | `if not _candidate_clears_runway(` | `->L1460` | | | 1460 | `if not ctx.validate_final_route_frames:` | `->L1461`, `->L1462` | | -| 1498 | `if abs(channel.x - target) <= COORD_TOLERANCE:` | `->L1500` | **needs-review** -- _align_same_line_channels' re-seat arm. Its one fixture (genomeassembly_organellar) still reaches the gate but now finds the channel already on its carrier's claim coordinate, so the reseat is skipped. Bisecting the range shows 0f58d60c -- ranking member channels over a gap's whole population -- is what makes the claim and the channel coincide on arrival, not the bundle-pitch packing. Reachable; the frozen render corpus means no fixture was authored. | -| 1523 | `if coordinate is not None:` | `->L1478`, `->L1524` | | -| 1595 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1596` | | -| 1862 | `if radii is not None:` | `->L1867` | | -| 1863 | `if 0 <= rank - 1 < len(radii):` | `->L1865` | | -| 1865 | `if rank < len(radii):` | `->L1867` | | -| 1890 | `if rank < len(route.exit_shared_opening_points):` | `->L1891` | | -| 1904 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1887` | | -| 1930 | `if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:` | `->L1932` | | -| 1932 | `if all(` | `->L1928`, `->L1937` | | -| 2011 | `if movable_run:` | `->L2012` | | -| 2062 | `if context is not None:` | `->L2077` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | -| 2078 | `if key in ctx.skip_edges:` | `->L2079` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | -| 2081 | `if edge is None:` | `->L2082` | | -| 2085 | `if family_id is None:` | `->L2086` | | -| 2108 | `if system_id not in failures:` | `->L2112` | | -| 2416 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2417` | | -| 2422 | `if actual != (channel.start, channel.end):` | `->L2423` | | -| 2426 | `if (` | `->L2431` | | -| 2445 | `if radius_index >= len(radii):` | `->L2446` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | -| 2452 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2453` | | -| 2457 | `if radius_index + 2 >= len(route.points):` | `->L2458` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | -| 2473 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2474` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | +| 1544 | `if coordinate is not None:` | `->L1496` | | +| 1616 | `if overlap <= MIN_CORRIDOR_Y_OVERLAP:` | `->L1617` | | +| 1883 | `if radii is not None:` | `->L1888` | | +| 1884 | `if 0 <= rank - 1 < len(radii):` | `->L1886` | | +| 1886 | `if rank < len(radii):` | `->L1888` | | +| 1911 | `if rank < len(route.exit_shared_opening_points):` | `->L1912` | | +| 1925 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1908` | | +| 1951 | `if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:` | `->L1953` | | +| 1953 | `if all(` | `->L1949`, `->L1958` | | +| 2032 | `if movable_run:` | `->L2033` | | +| 2083 | `if context is not None:` | `->L2098` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | +| 2099 | `if key in ctx.skip_edges:` | `->L2100` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | +| 2102 | `if edge is None:` | `->L2103` | | +| 2106 | `if family_id is None:` | `->L2107` | | +| 2129 | `if system_id not in failures:` | `->L2133` | | +| 2437 | `if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks:` | `->L2438` | | +| 2443 | `if actual != (channel.start, channel.end):` | `->L2444` | | +| 2447 | `if (` | `->L2452` | | +| 2466 | `if radius_index >= len(radii):` | `->L2467` | **defensive** -- Every radius flanking a frozen plan-owned channel must survive emission. Production materialises the plan's complete radius tuple; test_member_geometry_validator_attributes_missing_flanking_radius exercises the attributed failure. | +| 2473 | `if offsets is None or bases is None or offset is None or base is None:` | `->L2474` | | +| 2478 | `if radius_index + 2 >= len(route.points):` | `->L2479` | **defensive** -- A frozen member corner with a published radius must retain all three defining points. Production plans emit complete paths; test_member_geometry_validator_attributes_missing_corner_points exercises the attributed failure for malformed emitted geometry. | +| 2494 | `if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:` | `->L2495` | **defensive** -- Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius. | ## `normalize.py` -425/592 gates fully exercised. +428/598 gates fully exercised. Gates with an un-exercised arm: @@ -980,55 +987,58 @@ Gates with an un-exercised arm: | 4105 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4106` | | | 4109 | `elif above_ok:` | `->L4112` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | | 4112 | `if reconcile_owned_corridor:` | `->L4113`, `->L4116` | | -| 4177 | `if (` | `->L4181` | | -| 4183 | `if changed:` | `->L4184` | | | 4213 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4233` | | | 4215 | `if target_y is None:` | `->L4216` | | | 4218 | `if (` | `->L4229` | | | 4237 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4239` | | -| 4352 | `if band is None:` | `->L4353` | | -| 4358 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4362` | | -| 4383 | `and span[0] < crossed[1]` | `->L4384` | | -| 4384 | `and crossed[0] < span[1]` | `->L4375`, `->L4386` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4494 | `if i in relocated:` | `->L4495` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4508 | `if not primary and fixed_obstacles:` | `->L4509` | | -| 4514 | `not secondary_may_yield_at_shared_source` | `->L4515`, `->L4518` | | -| 4515 | `or not lane_sources & fixed_sources` | `->L4516`, `->L4518` | | -| 4516 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4518`, `->L4519` | | -| 4535 | `if any(` | `->L4539` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4616 | `if sg[0].sign_x != t.sign_x:` | `->L4617` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4652 | `and base_in is not None` | `->L4666` | | -| 4653 | `and base_out is not None` | `->L4666` | | -| 4669 | `if rp.curve_radii is None:` | `->L4670` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4681 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4683` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4683 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4626` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4738 | `if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:` | `->L4740` | | -| 4748 | `if hi - lo <= 2 * COORD_TOLERANCE:` | `->L4749`, `->L4751` | | -| 4761 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4764`, `->L4765` | | -| 4765 | `if leg_is_plan_stated(mover):` | `->L4766`, `->L4767` | | -| 4768 | `for delta in (step, -step):` | `->L4735`, `->L4769` | | -| 4770 | `if all(` | `->L4768`, `->L4773` | | -| 4800 | `for upstream in routes:` | `->L-4783`, `->L4801` | | -| 4802 | `upstream.edge.target != mover.edge.source` | `->L4803`, `->L4806` | | -| 4803 | `or upstream.line_id != mover.line_id` | `->L4804`, `->L4806` | | -| 4804 | `or len(upstream.points) < 2` | `->L4806`, `->L4807` | | -| 4809 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4810`, `->L4812` | | -| 4810 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4812`, `->L4813` | | -| 4814 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4815`, `->L4816` | | -| 4874 | `if down is None or len(up.points) < 2:` | `->L4875` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4928 | `if len(targets) != 1:` | `->L4929` | | -| 4938 | `if col is None:` | `->L4939` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 4979 | `if not 0 <= far < len(pts):` | `->L4980` | | -| 4982 | `if abs(dx) > COORD_TOLERANCE:` | `->L4976` | | -| 4984 | `if not votes:` | `->L4985` | | -| 5091 | `if rep_x[a] != rep_x[b]:` | `->L5093` | | -| 5121 | `if rp.curve_radii is None:` | `->L5122` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5124 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5125` | | -| 5148 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5098` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5178 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5180` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5233 | `elif right_ok:` | `->L5236` | | -| 5282 | `if s.bbox_w <= 0:` | `->L5283` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 5670 | `if not blockers:` | `->L5671` | | +| 4250 | `if obstacle.route.line_id == route.line_id:` | `->L4251` | | +| 4252 | `if rank == trunk.idx:` | `->L4257` | | +| 4253 | `if rank < 2:` | `->L4254` | | +| 4257 | `if rank + 1 >= len(points):` | `->L4258`, `->L4259` | | +| 4260 | `if abs(far[1] - near[1]) > COORD_TOLERANCE:` | `->L4261` | | +| 4387 | `if band is None:` | `->L4388` | | +| 4393 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4397` | | +| 4418 | `and span[0] < crossed[1]` | `->L4419` | | +| 4419 | `and crossed[0] < span[1]` | `->L4410`, `->L4421` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4529 | `if i in relocated:` | `->L4530` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4543 | `if not primary and fixed_obstacles:` | `->L4544` | | +| 4549 | `not secondary_may_yield_at_shared_source` | `->L4550`, `->L4553` | | +| 4550 | `or not lane_sources & fixed_sources` | `->L4551`, `->L4553` | | +| 4551 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4553`, `->L4554` | | +| 4570 | `if any(` | `->L4574` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4651 | `if sg[0].sign_x != t.sign_x:` | `->L4652` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4687 | `and base_in is not None` | `->L4701` | | +| 4688 | `and base_out is not None` | `->L4701` | | +| 4704 | `if rp.curve_radii is None:` | `->L4705` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4716 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4718` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4718 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4661` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4773 | `if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:` | `->L4775` | | +| 4783 | `if hi - lo <= 2 * COORD_TOLERANCE:` | `->L4784`, `->L4786` | | +| 4796 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4799`, `->L4800` | | +| 4800 | `if leg_is_plan_stated(mover):` | `->L4801`, `->L4802` | | +| 4803 | `for delta in (step, -step):` | `->L4770`, `->L4804` | | +| 4805 | `if all(` | `->L4803`, `->L4808` | | +| 4835 | `for upstream in routes:` | `->L-4818`, `->L4836` | | +| 4837 | `upstream.edge.target != mover.edge.source` | `->L4838`, `->L4841` | | +| 4838 | `or upstream.line_id != mover.line_id` | `->L4839`, `->L4841` | | +| 4839 | `or len(upstream.points) < 2` | `->L4841`, `->L4842` | | +| 4844 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4845`, `->L4847` | | +| 4845 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4847`, `->L4848` | | +| 4849 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4850`, `->L4851` | | +| 4909 | `if down is None or len(up.points) < 2:` | `->L4910` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4963 | `if len(targets) != 1:` | `->L4964` | | +| 4973 | `if col is None:` | `->L4974` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 5014 | `if not 0 <= far < len(pts):` | `->L5015` | | +| 5017 | `if abs(dx) > COORD_TOLERANCE:` | `->L5011` | | +| 5019 | `if not votes:` | `->L5020` | | +| 5126 | `if rep_x[a] != rep_x[b]:` | `->L5128` | | +| 5156 | `if rp.curve_radii is None:` | `->L5157` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5159 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5160` | | +| 5183 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5133` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5213 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5215` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5268 | `elif right_ok:` | `->L5271` | | +| 5317 | `if s.bbox_w <= 0:` | `->L5318` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 5705 | `if not blockers:` | `->L5706` | | ## `offsets.py` @@ -1156,31 +1166,31 @@ Gates with an un-exercised arm: ## `planning.py` -17/36 gates fully exercised. +18/37 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 94 | `if changed:` | `->L95` | | -| 96 | `if not replacements:` | `->L98` | | -| 121 | `elif abs(first[1] - second[1]) <= COORD_TOLERANCE:` | `->L124` | | -| 127 | `if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:` | `->L129` | | -| 130 | `for index, point in enumerate(points):` | `->L131`, `->L136` | | -| 131 | `if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:` | `->L132`, `->L133` | | -| 169 | `if allocated.curve_radii is None or len(allocated.curve_radii) != len(` | `->L172` | | -| 190 | `plan_offset is None` | `->L195` | | -| 191 | `or plan_base is None` | `->L195` | | -| 201 | `offset is None` | `->L206` | | -| 202 | `or base is None` | `->L206` | | -| 204 | `or i + 2 >= len(allocated_points)` | `->L206` | | -| 214 | `if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:` | `->L215` | | -| 298 | `if settled is None or rank is None:` | `->L301` | | -| 301 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L302`, `->L305` | | -| 306 | `if membership is None:` | `->L307`, `->L308` | | -| 309 | `if corner_offsets is None:` | `->L310`, `->L313` | | -| 408 | `if scaffold is None:` | `->L409` | | -| 508 | `if station_offsets is not None:` | `->L511` | | +| 97 | `if changed:` | `->L98` | | +| 99 | `if not replacements:` | `->L101` | | +| 124 | `elif abs(first[1] - second[1]) <= COORD_TOLERANCE:` | `->L127` | | +| 130 | `if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:` | `->L132` | | +| 133 | `for index, point in enumerate(points):` | `->L134`, `->L139` | | +| 134 | `if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:` | `->L135`, `->L136` | | +| 172 | `if allocated.curve_radii is None or len(allocated.curve_radii) != len(` | `->L175` | | +| 193 | `plan_offset is None` | `->L198` | | +| 194 | `or plan_base is None` | `->L198` | | +| 204 | `offset is None` | `->L209` | | +| 205 | `or base is None` | `->L209` | | +| 207 | `or i + 2 >= len(allocated_points)` | `->L209` | | +| 217 | `if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:` | `->L218` | | +| 301 | `if settled is None or rank is None:` | `->L304` | | +| 304 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L305`, `->L308` | | +| 309 | `if membership is None:` | `->L310`, `->L311` | | +| 312 | `if corner_offsets is None:` | `->L313`, `->L316` | | +| 394 | `if station_offsets is not None:` | `->L397` | | +| 423 | `if scaffold is None:` | `->L424` | | ## `postprocess.py` From a1449fa312c212712a5e722914fc97ee4713a3e9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:50:57 +0100 Subject: [PATCH 133/158] test(routing): lock the leftward upturn lane order on a settlement fixture The lock needs a planned left-exit turn with two source lanes and live turn axes; multi_frame_exit_lane_settlement expresses that shape with side_a/side_b turning up out of side_work. --- tests/test_exit_turn_planner.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/test_exit_turn_planner.py b/tests/test_exit_turn_planner.py index 98997247f..7aef0acfe 100644 --- a/tests/test_exit_turn_planner.py +++ b/tests/test_exit_turn_planner.py @@ -401,11 +401,15 @@ def test_merge_feeder_does_not_compress_a_terminal_landing_curve() -> None: def test_leftward_upturn_preserves_source_lane_order() -> None: - graph, offsets, observation = _observe(FROZEN / "seed_72.mmd") + graph, offsets, observation = _observe( + TOPOLOGIES / "multi_frame_exit_lane_settlement.mmd" + ) _raw_graph, _raw_offsets, _original_offsets, execution = _build_execution( - FROZEN / "seed_72.mmd" + TOPOLOGIES / "multi_frame_exit_lane_settlement.mmd" + ) + plan = next( + item for item in execution.plans if item.source_id == "side_work__exit_left_5" ) - plan = next(item for item in execution.plans if item.source_id == "s7__exit_left_5") system = next( item for item in observation.plan.systems if item.id == plan.system_id ) @@ -413,9 +417,9 @@ def test_leftward_upturn_preserves_source_lane_order() -> None: assert plan.disposition is ExitTurnDisposition.PLANNED assert system.disposition is RouteSystemDisposition.PLANNED assert not system.compatibility_reasons - assert tuple(lane.line_id for lane in plan.source_lanes) == ("l6", "l2") + assert tuple(lane.line_id for lane in plan.source_lanes) == ("side_a", "side_b") axes = {axis.line_id: axis.coordinate for axis in plan.axes} - assert axes["l6"] < axes["l2"] + assert axes["side_a"] < axes["side_b"] routes = { route.line_id: route for route in observation.routes @@ -426,7 +430,7 @@ def test_leftward_upturn_preserves_source_lane_order() -> None: line_id: apply_route_offsets(route, offsets)[1][0] for line_id, route in routes.items() } - assert turn_x["l6"] < turn_x["l2"] + assert turn_x["side_a"] < turn_x["side_b"] validate_exit_turn_plans(graph, observation.routes, observation.plan, offsets) From 3033090782b1a6c06924bacbdf91767a923b366a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:18:10 +0100 Subject: [PATCH 134/158] fix(offsets): let a seam snap pass a line that only leaves the station [skip ci] Two lines meeting end to end at a station draw on opposite sides of its marker, so one lane carries both. Treating them as a collision held a single-line entry port off its feeder's lane and left the seam to ramp. (cherry picked from commit 7aa85043fc414a2149081e751a1c1ad7cb2b333a) --- src/nf_metro/layout/routing/offsets.py | 60 +++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 77090370a..47bde9cdc 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -2837,6 +2837,61 @@ def _would_collide( ) +def _line_flow_sides(ctx: _OffsetCtx, station_id: str, line_id: str) -> set[int]: + """The sides of *station_id*, along its flow axis, that *line_id* reaches. + + ``-1`` and ``1`` are the upstream and downstream sides of the station on the + axis its runs travel along; ``0`` marks a neighbour on the station itself, + whose side cannot be read from the geometry. + """ + graph = ctx.graph + station = graph.stations[station_id] + section = graph.sections.get(station.section_id or "") + along_x = section is None or lanes_run_along_y(section.direction) + here = station.x if along_x else station.y + sides = set() + for edge in (*graph.edges_to(station_id), *graph.edges_from(station_id)): + if edge.line_id != line_id: + continue + other_id = edge.source if edge.target == station_id else edge.target + other = graph.stations[other_id] + delta = (other.x if along_x else other.y) - here + if abs(delta) <= COORD_TOLERANCE_FINE: + sides.add(0) + else: + sides.add(1 if delta > 0 else -1) + return sides + + +def _shares_a_lane_side( + ctx: _OffsetCtx, station_id: str, lid_a: str, lid_b: str +) -> bool: + """Whether two lines at *station_id* both occupy one side of it. + + A line that only arrives at a station and one that only leaves it draw on + opposite sides of the marker, so one lane carries both without either + stroke covering the other. Lines that reach the same side need lanes of + their own, as do lines whose side the geometry cannot resolve. + """ + sides_a = _line_flow_sides(ctx, station_id, lid_a) + sides_b = _line_flow_sides(ctx, station_id, lid_b) + if not sides_a or not sides_b or 0 in sides_a or 0 in sides_b: + return True + return not sides_a.isdisjoint(sides_b) + + +def _would_overlap( + ctx: _OffsetCtx, station_id: str, line_id: str, value: float +) -> bool: + """Whether *value* draws *line_id* over a line sharing a side of the station.""" + return any( + ctx.offsets.get((station_id, lid), 0.0) == value + and _shares_a_lane_side(ctx, station_id, line_id, lid) + for lid in ctx.graph.station_lines(station_id) + if lid != line_id + ) + + def _leaves_lane_hole( ctx: _OffsetCtx, station_id: str, line_id: str, value: float ) -> bool: @@ -3587,7 +3642,8 @@ def _flat_run(station_id: str, lid: str) -> list[str]: # the whole story -- a single-line port -- may move to meet # its partner, and only when its flat in-section run is # free to come along: a run held on another lane, whether - # by a collision or by a seam of its own at the far end, + # by an overlapping neighbour or by a seam of its own at + # the far end, # would keep the mismatch and merely relocate it onto the # much shorter station row, where it reads as a steep # diagonal rather than a seam the routed vertical legs or @@ -3601,7 +3657,7 @@ def _movable(sid: str) -> bool: for member in _flat_run(sid, lid): if ctx.offsets.get( (member, lid), 0.0 - ) != candidate and _would_collide( + ) != candidate and _would_overlap( ctx, member, lid, candidate ): return False From a655d300923cde8c90fb5130650e7495063baca7 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:31:43 +0100 Subject: [PATCH 135/158] fix(routing): launch a fan L-shape from the side its turn column landed on [skip ci] Clearing a blocked turn column can seat it on the far side of the source from the target. A lead-in measured from the target's side then doubles back over its own corner, and the reversed segment mirrors the member's lane offset as well. (cherry picked from commit 6dd4dbfe5b8fb42e86e5a99186d776556f8784f0) --- .../layout/routing/inter_section_handlers.py | 6 ++ .../test_route_leadin_backtrack_invariant.py | 79 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 tests/test_route_leadin_backtrack_invariant.py diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index 744350682..f417e101a 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -4331,6 +4331,12 @@ def _l_shape_fan_source_turn( endpoint_port_xs(ctx.graph, edge), target_x=tx, ) + # Clearing a blocked column can seat the turn on the far side of the source + # from the target, which reverses the direction the run leaves the source + # in. A lead-in measured from the target's side would then double back + # over the turn and hand the emitter a reversed segment to offset against. + if abs(axis_x - sx) > COORD_TOLERANCE: + run_direction = horizontal_direction(axis_x - sx) lead_length = ctx.curve_radius + 2 * half_width launch_x = axis_x - run_direction.sign * lead_length launch_x = min(launch_x, sx) if run_direction is Direction.R else max(launch_x, sx) diff --git a/tests/test_route_leadin_backtrack_invariant.py b/tests/test_route_leadin_backtrack_invariant.py new file mode 100644 index 000000000..3814102ba --- /dev/null +++ b/tests/test_route_leadin_backtrack_invariant.py @@ -0,0 +1,79 @@ +"""A route's lead-in runs from its source towards its turn, never past it. + +An inter-section route that opens with a straight run into a corner takes that +run as the corner's runway: it starts back from the turn on the source's side +and travels towards it. A lead-in laid out on the far side of the turn instead +doubles back over the corner - the drawn stroke leaves its source, overshoots, +and reverses - and the emitter offsets its members against a segment travelling +the opposite way, so the bundle's lanes come out mirrored at the turn as well. +""" + +from __future__ import annotations + +import warnings +from pathlib import Path +from typing import Any + +import pytest + +from nf_metro.api import prepare_graph +from nf_metro.layout.constants import COORD_TOLERANCE +from nf_metro.layout.routing.core import observe_route_edges +from nf_metro.layout.routing.offsets import compute_station_offsets + +ROOT = Path(__file__).parents[1] +CORPUS = sorted( + ( + *(ROOT / "examples").glob("*.mmd"), + *(ROOT / "examples" / "topologies").glob("*.mmd"), + *(ROOT / "tests" / "fixtures" / "hash_seed_determinism").glob("*.mmd"), + ), + key=lambda p: (p.parent.name, p.name), +) + + +def _observe(path: Path) -> tuple[Any, Any]: + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + offsets = compute_station_offsets(graph) + observation = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=True, + ) + return graph, observation + + +def _backtracking_leadins(graph: Any, observation: Any) -> list[str]: + found = [] + for route in observation.routes: + if not route.is_inter_section or len(route.points) < 3: + continue + (x0, y0), (x1, y1), (x2, y2) = route.points[:3] + source = graph.stations[route.edge.source] + for lead, turn, here, cross_lead, cross_turn in ( + (x0, x1, source.x, y0, y1), + (y0, y1, source.y, x0, x1), + ): + if abs(cross_lead - cross_turn) > COORD_TOLERANCE: + continue + if abs(turn - lead) <= COORD_TOLERANCE: + continue + straight_on = (x2 - x1, y2 - y1) == (x1 - x0, y1 - y0) + if straight_on: + continue + if (turn - lead) * (turn - here) < -COORD_TOLERANCE: + found.append( + f"{route.edge.source}->{route.edge.target} [{route.line_id}]: " + f"leads in from {lead} to a turn at {turn}, " + f"past its source at {here}" + ) + return found + + +@pytest.mark.parametrize("path", CORPUS, ids=lambda p: p.stem) +def test_lead_in_runs_towards_its_turn(path: Path) -> None: + graph, observation = _observe(path) + backtracking = _backtracking_leadins(graph, observation) + assert not backtracking, "lead-ins past their own turn:\n" + "\n".join(backtracking) From bad5031f7d33331d35e3d6642dcf06e93f972553 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:17:30 +0100 Subject: [PATCH 136/158] test(routing): refresh gate coverage for the fan lead-in and lane-side arms [skip ci] (cherry picked from commit a443a6f8c2e13ce7c26df4b936d6185a08010efc) --- tests/data/routing_gate_coverage_baseline.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 45609bcf0..865016f1c 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -514,6 +514,7 @@ "inter_section_handlers.py::if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):::#1", "inter_section_handlers.py::if _v_segment_crosses_other_section(graph, corner_x, src.y, ey, exclude):::#1", "inter_section_handlers.py::if _would_route_around_section_below(other, ctx):::#1", + "inter_section_handlers.py::if abs(axis_x - sx) > COORD_TOLERANCE:::#1", "inter_section_handlers.py::if abs(ep.y - f.sy) < ctx.curve_radius:::#1", "inter_section_handlers.py::if abs(js.x - src.x) <= COORD_TOLERANCE:::#1", "inter_section_handlers.py::if abs(start[0] - end[0]) > COORD_TOLERANCE:::#1", @@ -574,6 +575,7 @@ "inter_section_handlers.py::if not _h_segment_crosses_other_section(::#1", "inter_section_handlers.py::if not _inter_row_band_fits(gap_top, gap_bottom):::#1", "inter_section_handlers.py::if not _inter_row_band_fits(gap_top, gap_bottom):::#2", + "inter_section_handlers.py::if not any(::#1", "inter_section_handlers.py::if not candidates:::#1", "inter_section_handlers.py::if not is_inter:::#1", "inter_section_handlers.py::if not section_ids:::#1", @@ -827,7 +829,6 @@ "normalize.py::if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:::#1", "normalize.py::if len(targets) != 1:::#1", "normalize.py::if len(trunks) < 2:::#1", - "normalize.py::if len(turns) != 1:::#1", "normalize.py::if len({id(t.route) for t in grp}) < 2:::#2", "normalize.py::if lower > upper + COORD_TOLERANCE_FINE:::#1", "normalize.py::if mid + half > gap_right + COORD_TOLERANCE:::#1", @@ -909,6 +910,7 @@ "offsets.py::for other_lid in nbr_lines:::#1", "offsets.py::if (tgt_id, lid) not in ctx.offsets:::#1", "offsets.py::if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:::#1", + "offsets.py::if abs(delta) <= COORD_TOLERANCE_FINE:::#1", "offsets.py::if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:::#1", "offsets.py::if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:::#1", "offsets.py::if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:::#1", @@ -950,6 +952,7 @@ "offsets.py::if not changed_lids:::#1", "offsets.py::if not fixed_here or not movable:::#1", "offsets.py::if not sec_stations:::#1", + "offsets.py::if not sides_a or not sides_b or 0 in sides_a or 0 in sides_b:::#1", "offsets.py::if not src.is_port and src.section_id == sec_id:::#1", "offsets.py::if not src.is_port:::#1", "offsets.py::if not src.is_port:::#2", From 1ca2f51253c106d6b82bfbd3f976757a52de0223 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:25:18 +0100 Subject: [PATCH 137/158] test(offsets): lock the level s14 seam the sequential-lane share buys (cherry picked from commit d543551734c71f0ad8d109f6bc01a93b0d0c9b81) --- tests/test_seam_lane_agreement.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/test_seam_lane_agreement.py b/tests/test_seam_lane_agreement.py index a34c6cb27..0018b2193 100644 --- a/tests/test_seam_lane_agreement.py +++ b/tests/test_seam_lane_agreement.py @@ -173,6 +173,26 @@ def single_line_port(station_id: str) -> bool: assert not sloped, "level seams drawn sloped:\n" + "\n".join(sloped) +def test_a_line_leaving_a_station_frees_the_lane_an_arriving_line_needs() -> None: + """Lines meeting end to end at a station share one lane. + + ``s14`` is a chain of single strokes: l3 arrives at ``n14_0`` from the + entry port and l2 leaves it for ``n14_1``. The two draw on opposite sides + of the marker, so l2 does not hold l3 off the lane ``__junction_42`` + delivers it on, and the seam runs level instead of ramping into the port. + """ + graph, offsets, observation = _observe(FROZEN / "seed_77.mmd") + assert offsets[("n14_0", "l3")] == offsets[("n14_0", "l2")] + seam = next( + route + for route in observation.routes + if (route.edge.source, route.edge.target, route.line_id) + == ("__junction_42", "s14__entry_left_32", "l3") + ) + drawn = apply_route_offsets(seam, offsets) + assert abs(drawn[0][1] - drawn[-1][1]) <= COORD_TOLERANCE + + def _station_row_disagreements(ctx: Any) -> list[str]: """Single-line ports whose lane differs from a flat in-section run-mate.""" graph = ctx.graph From e933f8837d38755282c8dc49fb258e769969c6b1 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:29:50 +0100 Subject: [PATCH 138/158] test(routing): refresh gate coverage for the seed_77 residual fixes --- docs/dev/routing_gate_coverage.md | 207 +++++++++++++++--------------- 1 file changed, 105 insertions(+), 102 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index a7473aa15..64ea5b970 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2412/3502** gates fully exercised (both/all arms hit by some fixture); **1090** gates have at least one un-exercised arm. +**2414/3507** gates fully exercised (both/all arms hit by some fixture); **1093** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -593,7 +593,7 @@ Gates with an un-exercised arm: ## `inter_section_handlers.py` -210/368 gates fully exercised. +209/369 gates fully exercised. Gates with an un-exercised arm: @@ -689,74 +689,76 @@ Gates with an un-exercised arm: | 4042 | `if route is None:` | `->L4043` | **defensive** -- _declare_channel deliberately accepts RoutedPath \| None so declining builders can be ignored. Production callers currently pass concrete routes; the None no-op remains a defensive helper contract. | | 4089 | `if route is None:` | `->L4090` | **defensive** -- _declare_placed_channels accepts RoutedPath \| None to match _declare_trunk and _declare_channel, but all three call sites have already established the route (an assert on the left-entry corridor, a RuntimeError when a planned fan emitter omits a member, and a locally built U-bypass), so the None no-op is a helper contract nothing exercises. | | 4262 | `if ctx.exit_turns is None:` | `->L4263` | **needs-review** -- _perp_entry_turn_is_planned answers False for the pre-plan context the exit-turn planner probes emitters with; ctx.exit_turns is bound only for emission. That context does reach these emitters -- the same guard in _seat_bypass_descent takes its None arm on packed_cell_right_exit_left_entry_wrap -- but no corpus probe reaches the TOP/BOTTOM-entry L-shape records this predicate feeds. | -| 4354 | `while cur is not None and cur not in seen:` | `->L4370` | | -| 4363 | `if cur in graph.junctions:` | `->L4369` | | -| 4450 | `if (` | `->L4456` | | -| 4639 | `if geometry is None:` | `->L4640` | | -| 4738 | `if abs(tgt.x - src.x) <= ctx.curve_radius:` | `->L4739` | | -| 4751 | `if _h_segment_crosses_other_section(graph, src.x, final_x, src.y, exclude):` | `->L4752` | **defensive** -- Traverse-first clearance test in _top_entry_side_fan_traverse_clears (#1349). The below-side fan branch only reaches this gate when its junction also feeds an aligned straight drop; the corpus fan sits a clear row above its target, so the source-Y traverse never crosses another section and the fall-back-to-staircase arm is not exercised. Defensive. | -| 4879 | `if abs(tgt.x - src.x) > COORD_TOLERANCE or src.id not in ctx.graph.junctions:` | `->L4880` | | -| 4914 | `if feeder is not None:` | `->L4919` | | -| 5091 | `if len(points) < 3:` | `->L5092` | | -| 5143 | `if not section_ids:` | `->L5144` | | -| 5223 | `if mid_y is None:` | `->L5240` | | -| 5255 | `channel_y is None` | `->L5285` | | -| 5257 | `and src_sec is not None` | `->L5285` | **defensive** -- Inter-row exit mid-Y clearance bump (the n>1 multi-line branch). When more than one line shares the exit the source section always resolves, so the `src_sec is None` short-circuit past the clearance bump is never taken. | -| 5258 | `and tgt_sec is not None` | `->L5285` | **defensive** -- Companion to src_sec in the same n>1 mid-Y clearance branch: the target section always resolves there, so the `tgt_sec is None` short-circuit past the bump is never taken. | -| 5287 | `if exit_side is not None:` | `->L5289` | | -| 5289 | `elif abs(dx) > ctx.curve_radius:` | `->L5290`, `->L5292` | | -| 5293 | `if src.id in ctx.graph.junctions:` | `->L5294`, `->L5306` | **needs-review** -- Reachable only via a defective render (LR->TB TOP-entry routing); see #720. | -| 5294 | `for je in ctx.graph.edges_to(src.id):` | `->L5295`, `->L5306` | | -| 5296 | `if js.is_port:` | `->L5294`, `->L5297` | | -| 5297 | `if abs(js.x - src.x) <= COORD_TOLERANCE:` | `->L5298`, `->L5300` | | -| 5312 | `if exit_side is not None and not straight_drop:` | `->L5322` | | -| 5360 | `if not straight_drop:` | `->L5364` | **needs-review** -- A top-entry fan branch fed straight from directly above the junction (straight_drop) keeps its lead-in column at the source X rather than the shared fan pivot; the corpus's fan branches all carry horizontal travel, so the straight-drop arm is unexercised. | -| 5362 | `if lead is Direction.R:` | `->L5364` | **needs-review** -- A top-entry fan branch leading LEFT out of the junction skips the _v1_corner_x right-edge clearance bump; the corpus's fan branches all lead right, so the left-lead arm is unexercised. | -| 5389 | `if straight_drop:` | `->L5390` | | -| 5466 | `if ctx.exit_turns is None:` | `->L5467` | | -| 5551 | `if src_sec is None or tgt_sec is None or src_sec.grid_row >= tgt_sec.grid_row:` | `->L5554` | | -| 5721 | `if src_section and src_section.bbox_w > 0:` | `->L5722` | | -| 5742 | `if tgt_sec is None:` | `->L5743` | | -| 5813 | `if src_col is None:` | `->L5814` | | -| 6048 | `if src_sec is not None:` | `->L6079` | **defensive** -- Defensive guard in the fanned entry-wrap source-clearance lift: a fan-out junction always resolves to its source section, so the None arm is unreachable in practice. | -| 6085 | `if tgt_col is not None:` | `->L6090` | **defensive** -- tgt_col from _resolve_section_col on a valid LEFT entry port is always non-None (sections get grid_col>=0 after auto-layout). | -| 6087 | `if shared_vx is not None:` | `->L6090` | **defensive** -- _fan_left_entry_descent_x returns None only when col_left<=0; col_left_edge for the target's own column is always >0. | -| 6213 | `if entry_side is PortSide.LEFT:` | `->L6216` | | -| 6281 | `if entry_port is None:` | `->L6282` | **defensive** -- _route_around_section_below is always called with a non-None entry_port (both dispatch sites pass a checked station). | -| 6292 | `if trunk_src is None or trunk_src == edge.source:` | `->L6294` | **needs-review** -- Reachable only via a defective render (merge-junction tangle); see #721. | -| 6345 | `if col_left <= 0.0:` | `->L6346` | **defensive** -- col_left_edge's 0.0 default only fires for a column with no sections; the target's own column always holds its section. | -| 6382 | `if entry_port is None:` | `->L6383` | **defensive** -- Every caller of _corridor_is_viable passes a non-None entry_port. | -| 6389 | `if src_row is None or ep_row is None or src_col is None or ep_col is None:` | `->L6390` | **defensive** -- _resolve_section_colrow returns (None,None) only for a station with no section; valid entry ports always have a section with non-negative grid coords. | -| 6477 | `if fan is not None and corridor is not None and corridor.band_y is not None:` | `->L6481` | **needs-review** -- Corridor-feeder shared inter-row band gate: the corpus's corridor feeders belong to fans whose corridor carries a band_y, so the short-circuit past it (no corridor or bypass-only) is unexercised; it falls to the elif fan-is-not-None global-band branch. | -| 6481 | `elif fan is not None:` | `->L6485`, `->L6490` | **needs-review** -- Corridor-feeder fallback for a fan whose junction earned no corridor (its in-column gap below does not fit the bundle); the corpus's fans all earn a corridor, so this global-band branch is unexercised. | -| 6490 | `elif gap_bottom > gap_top:` | `->L6491`, `->L6495` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6500 | `if fan is None and gap_bottom > gap_top:` | `->L6501` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6514 | `if fan is not None and ep_col is not None:` | `->L6516` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6516 | `if vx is None:` | `->L6517` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6618 | `if ep_section and ep_section.bbox_w > 0:` | `->L6621` | **defensive** -- entry_port.section_id is always set and the section has bbox_w>0 after layout; the else arm never fires. | -| 6916 | `if claim.line_id != edge.line_id or claim.owner_source == edge.source:` | `->L6918` | | -| 6918 | `if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):` | `->L6919`, `->L6920` | | -| 6920 | `if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:` | `->L6915`, `->L6921` | | -| 7017 | `if (` | `->L6987` | | -| 7037 | `if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):` | `->L7038` | | -| 7170 | `if gap_bottom <= gap_top:` | `->L7171` | **defensive** -- The row-gap enforcer keeps stacked rows separated, so the inter-row band above a target row (row_bottom_edge(tgt_row-1) up to row_top_edge(tgt_row)) has positive height whenever a RIGHT entry is fed from a higher row; the degenerate-band arm guards an abutting-rows layout placement never produces. | -| 7174 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7175` | **defensive** -- Band-fit test in _right_entry_gap_above_is_clear (#889), reached only when the cross-row RIGHT-entry drop-in is not clear (the exotic blocked-descent case above). The corpus always takes the drop-in, so neither arm of the gap-above fallback is exercised. Defensive. | -| 7330 | `if gap_bottom <= gap_top:` | `->L7331` | | -| 7332 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7333` | | -| 7343 | `if f.v_segment_crosses_other_section(vx, gy, tgt.y):` | `->L7344` | | -| 7438 | `if source is None or source.bbox_w <= 0:` | `->L7439` | | -| 7443 | `if source.id not in members:` | `->L7444` | | -| 7449 | `if other.bbox_x <= source_right + COORD_TOLERANCE:` | `->L7450` | | -| 7451 | `if cellmate_left is None or other.bbox_x < cellmate_left:` | `->L7445` | | -| 7453 | `if cellmate_left is None:` | `->L7454` | | -| 7491 | `if band0_bottom <= band0_top or not _inter_row_band_fits(band0_top, band0_bottom):` | `->L7492` | | -| 7493 | `if band1_bottom <= band1_top or not _inter_row_band_fits(band1_top, band1_bottom):` | `->L7494` | | -| 7495 | `if band1_top <= band0_bottom + COORD_TOLERANCE:` | `->L7496` | | -| 7511 | `if f.v_segment_crosses_other_section(corner_x, band0_y, band1_y, exclude):` | `->L7512` | | -| 7568 | `if geom is None:` | `->L7569` | | -| 7571 | `if f.v_segment_crosses_other_section(geom.lead_x, src.y, geom.band0_y):` | `->L7572` | | -| 7573 | `if f.h_segment_crosses_other_section(geom.lead_x, geom.corner_x, geom.band0_y):` | `->L7574` | | -| 7575 | `if f.h_segment_crosses_other_section(geom.corner_x, geom.vx, geom.band1_y):` | `->L7576` | | +| 4288 | `if not any(` | `->L4293` | | +| 4338 | `if abs(axis_x - sx) > COORD_TOLERANCE:` | `->L4340` | | +| 4360 | `while cur is not None and cur not in seen:` | `->L4376` | | +| 4369 | `if cur in graph.junctions:` | `->L4375` | | +| 4456 | `if (` | `->L4462` | | +| 4645 | `if geometry is None:` | `->L4646` | | +| 4744 | `if abs(tgt.x - src.x) <= ctx.curve_radius:` | `->L4745` | | +| 4757 | `if _h_segment_crosses_other_section(graph, src.x, final_x, src.y, exclude):` | `->L4758` | **defensive** -- Traverse-first clearance test in _top_entry_side_fan_traverse_clears (#1349). The below-side fan branch only reaches this gate when its junction also feeds an aligned straight drop; the corpus fan sits a clear row above its target, so the source-Y traverse never crosses another section and the fall-back-to-staircase arm is not exercised. Defensive. | +| 4885 | `if abs(tgt.x - src.x) > COORD_TOLERANCE or src.id not in ctx.graph.junctions:` | `->L4886` | | +| 4920 | `if feeder is not None:` | `->L4925` | | +| 5097 | `if len(points) < 3:` | `->L5098` | | +| 5149 | `if not section_ids:` | `->L5150` | | +| 5229 | `if mid_y is None:` | `->L5246` | | +| 5261 | `channel_y is None` | `->L5291` | | +| 5263 | `and src_sec is not None` | `->L5291` | **defensive** -- Inter-row exit mid-Y clearance bump (the n>1 multi-line branch). When more than one line shares the exit the source section always resolves, so the `src_sec is None` short-circuit past the clearance bump is never taken. | +| 5264 | `and tgt_sec is not None` | `->L5291` | **defensive** -- Companion to src_sec in the same n>1 mid-Y clearance branch: the target section always resolves there, so the `tgt_sec is None` short-circuit past the bump is never taken. | +| 5293 | `if exit_side is not None:` | `->L5295` | | +| 5295 | `elif abs(dx) > ctx.curve_radius:` | `->L5296`, `->L5298` | | +| 5299 | `if src.id in ctx.graph.junctions:` | `->L5300`, `->L5312` | **needs-review** -- Reachable only via a defective render (LR->TB TOP-entry routing); see #720. | +| 5300 | `for je in ctx.graph.edges_to(src.id):` | `->L5301`, `->L5312` | | +| 5302 | `if js.is_port:` | `->L5300`, `->L5303` | | +| 5303 | `if abs(js.x - src.x) <= COORD_TOLERANCE:` | `->L5304`, `->L5306` | | +| 5318 | `if exit_side is not None and not straight_drop:` | `->L5328` | | +| 5366 | `if not straight_drop:` | `->L5370` | **needs-review** -- A top-entry fan branch fed straight from directly above the junction (straight_drop) keeps its lead-in column at the source X rather than the shared fan pivot; the corpus's fan branches all carry horizontal travel, so the straight-drop arm is unexercised. | +| 5368 | `if lead is Direction.R:` | `->L5370` | **needs-review** -- A top-entry fan branch leading LEFT out of the junction skips the _v1_corner_x right-edge clearance bump; the corpus's fan branches all lead right, so the left-lead arm is unexercised. | +| 5395 | `if straight_drop:` | `->L5396` | | +| 5472 | `if ctx.exit_turns is None:` | `->L5473` | | +| 5557 | `if src_sec is None or tgt_sec is None or src_sec.grid_row >= tgt_sec.grid_row:` | `->L5560` | | +| 5727 | `if src_section and src_section.bbox_w > 0:` | `->L5728` | | +| 5748 | `if tgt_sec is None:` | `->L5749` | | +| 5819 | `if src_col is None:` | `->L5820` | | +| 6054 | `if src_sec is not None:` | `->L6085` | **defensive** -- Defensive guard in the fanned entry-wrap source-clearance lift: a fan-out junction always resolves to its source section, so the None arm is unreachable in practice. | +| 6091 | `if tgt_col is not None:` | `->L6096` | **defensive** -- tgt_col from _resolve_section_col on a valid LEFT entry port is always non-None (sections get grid_col>=0 after auto-layout). | +| 6093 | `if shared_vx is not None:` | `->L6096` | **defensive** -- _fan_left_entry_descent_x returns None only when col_left<=0; col_left_edge for the target's own column is always >0. | +| 6219 | `if entry_side is PortSide.LEFT:` | `->L6222` | | +| 6287 | `if entry_port is None:` | `->L6288` | **defensive** -- _route_around_section_below is always called with a non-None entry_port (both dispatch sites pass a checked station). | +| 6298 | `if trunk_src is None or trunk_src == edge.source:` | `->L6300` | **needs-review** -- Reachable only via a defective render (merge-junction tangle); see #721. | +| 6351 | `if col_left <= 0.0:` | `->L6352` | **defensive** -- col_left_edge's 0.0 default only fires for a column with no sections; the target's own column always holds its section. | +| 6388 | `if entry_port is None:` | `->L6389` | **defensive** -- Every caller of _corridor_is_viable passes a non-None entry_port. | +| 6395 | `if src_row is None or ep_row is None or src_col is None or ep_col is None:` | `->L6396` | **defensive** -- _resolve_section_colrow returns (None,None) only for a station with no section; valid entry ports always have a section with non-negative grid coords. | +| 6483 | `if fan is not None and corridor is not None and corridor.band_y is not None:` | `->L6487` | **needs-review** -- Corridor-feeder shared inter-row band gate: the corpus's corridor feeders belong to fans whose corridor carries a band_y, so the short-circuit past it (no corridor or bypass-only) is unexercised; it falls to the elif fan-is-not-None global-band branch. | +| 6487 | `elif fan is not None:` | `->L6491`, `->L6496` | **needs-review** -- Corridor-feeder fallback for a fan whose junction earned no corridor (its in-column gap below does not fit the bundle); the corpus's fans all earn a corridor, so this global-band branch is unexercised. | +| 6496 | `elif gap_bottom > gap_top:` | `->L6497`, `->L6501` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6506 | `if fan is None and gap_bottom > gap_top:` | `->L6507` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6520 | `if fan is not None and ep_col is not None:` | `->L6522` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6522 | `if vx is None:` | `->L6523` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6624 | `if ep_section and ep_section.bbox_w > 0:` | `->L6627` | **defensive** -- entry_port.section_id is always set and the section has bbox_w>0 after layout; the else arm never fires. | +| 6922 | `if claim.line_id != edge.line_id or claim.owner_source == edge.source:` | `->L6924` | | +| 6924 | `if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):` | `->L6925`, `->L6926` | | +| 6926 | `if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:` | `->L6921`, `->L6927` | | +| 7023 | `if (` | `->L6993` | | +| 7043 | `if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):` | `->L7044` | | +| 7176 | `if gap_bottom <= gap_top:` | `->L7177` | **defensive** -- The row-gap enforcer keeps stacked rows separated, so the inter-row band above a target row (row_bottom_edge(tgt_row-1) up to row_top_edge(tgt_row)) has positive height whenever a RIGHT entry is fed from a higher row; the degenerate-band arm guards an abutting-rows layout placement never produces. | +| 7180 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7181` | **defensive** -- Band-fit test in _right_entry_gap_above_is_clear (#889), reached only when the cross-row RIGHT-entry drop-in is not clear (the exotic blocked-descent case above). The corpus always takes the drop-in, so neither arm of the gap-above fallback is exercised. Defensive. | +| 7336 | `if gap_bottom <= gap_top:` | `->L7337` | | +| 7338 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7339` | | +| 7349 | `if f.v_segment_crosses_other_section(vx, gy, tgt.y):` | `->L7350` | | +| 7444 | `if source is None or source.bbox_w <= 0:` | `->L7445` | | +| 7449 | `if source.id not in members:` | `->L7450` | | +| 7455 | `if other.bbox_x <= source_right + COORD_TOLERANCE:` | `->L7456` | | +| 7457 | `if cellmate_left is None or other.bbox_x < cellmate_left:` | `->L7451` | | +| 7459 | `if cellmate_left is None:` | `->L7460` | | +| 7497 | `if band0_bottom <= band0_top or not _inter_row_band_fits(band0_top, band0_bottom):` | `->L7498` | | +| 7499 | `if band1_bottom <= band1_top or not _inter_row_band_fits(band1_top, band1_bottom):` | `->L7500` | | +| 7501 | `if band1_top <= band0_bottom + COORD_TOLERANCE:` | `->L7502` | | +| 7517 | `if f.v_segment_crosses_other_section(corner_x, band0_y, band1_y, exclude):` | `->L7518` | | +| 7574 | `if geom is None:` | `->L7575` | | +| 7577 | `if f.v_segment_crosses_other_section(geom.lead_x, src.y, geom.band0_y):` | `->L7578` | | +| 7579 | `if f.h_segment_crosses_other_section(geom.lead_x, geom.corner_x, geom.band0_y):` | `->L7580` | | +| 7581 | `if f.h_segment_crosses_other_section(geom.corner_x, geom.vx, geom.band1_y):` | `->L7582` | | ## `intra_handlers.py` @@ -863,7 +865,7 @@ Gates with an un-exercised arm: ## `normalize.py` -428/598 gates fully exercised. +429/598 gates fully exercised. Gates with an un-exercised arm: @@ -934,7 +936,6 @@ Gates with an un-exercised arm: | 2067 | `if not sibling_xs:` | `->L2068` | | | 2070 | `if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:` | `->L2071` | | | 2073 | `if _section_intrudes(` | `->L2080` | | -| 2117 | `if len(turns) != 1:` | `->L2118` | | | 2138 | `if any(` | `->L2142` | | | 2205 | `for _ in range(max(1, len(buckets))):` | `->L-2151` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | | 2281 | `if ch.route.convergence_plan_id is not None:` | `->L2282` | | @@ -1042,7 +1043,7 @@ Gates with an un-exercised arm: ## `offsets.py` -495/588 gates fully exercised. +497/592 gates fully exercised. Gates with an un-exercised arm: @@ -1112,35 +1113,37 @@ Gates with an un-exercised arm: | 2808 | `if max_steps <= 0:` | `->L2809` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | | 2822 | `if sec_a is None and id_a in graph.ports:` | `->L2823` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | | 2824 | `if sec_b is None and id_b in graph.ports:` | `->L2825` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2928 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2929` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2952 | `if src_port and not src_port.is_entry:` | `->L2959` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | -| 2955 | `elif feeding_exit != edge.source:` | `->L2956` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2964 | `if single_exit and feeding_exit is not None:` | `->L2904` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | -| 2971 | `if exit_lines == set(j_lines) and shares_lanes:` | `->L2904` | | -| 2973 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2904` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 3042 | `for distance in range(1, slots + 1):` | `->L3046` | | -| 3082 | `if free is not None:` | `->L3071` | | -| 3153 | `if pred is None:` | `->L3154` | | -| 3249 | `if target_col is None:` | `->L3250` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | -| 3258 | `if source_col is None:` | `->L3259` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3568 | `for _ in range(max_iterations):` | `->L-3514` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | -| 3652 | `if src_n <= tgt_n:` | `->L3655` | | -| 3684 | `if not a.section_id or a.section_id != b.section_id:` | `->L3685` | | -| 3766 | `if ctx.topology is None:` | `->L3767` | | -| 3790 | `if key not in ctx.offsets:` | `->L3791` | | -| 3839 | `len(levels) != len(continuing)` | `->L3842` | | -| 3902 | `if line_id not in assignments:` | `->L3903` | | -| 3907 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3909` | | -| 3929 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L3954` | | -| 3940 | `if line_id not in assignments:` | `->L3941` | | -| 3947 | `if set(frames).difference(next_frames):` | `->L3948` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 3982 | `if any(` | `->L3986` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 3988 | `if local_offset is None or not (` | `->L3994` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 4013 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L4014` | | -| 4024 | `if gap is not None:` | `->L4025` | | -| 4055 | `if any(` | `->L4061` | | -| 4079 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L4080` | | -| 4261 | `if dag is not None:` | `->L4269` | | +| 2859 | `if abs(delta) <= COORD_TOLERANCE_FINE:` | `->L2860` | | +| 2878 | `if not sides_a or not sides_b or 0 in sides_a or 0 in sides_b:` | `->L2879` | | +| 2983 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2984` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 3007 | `if src_port and not src_port.is_entry:` | `->L3014` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | +| 3010 | `elif feeding_exit != edge.source:` | `->L3011` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 3019 | `if single_exit and feeding_exit is not None:` | `->L2959` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | +| 3026 | `if exit_lines == set(j_lines) and shares_lanes:` | `->L2959` | | +| 3028 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2959` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | +| 3097 | `for distance in range(1, slots + 1):` | `->L3101` | | +| 3137 | `if free is not None:` | `->L3126` | | +| 3208 | `if pred is None:` | `->L3209` | | +| 3304 | `if target_col is None:` | `->L3305` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | +| 3313 | `if source_col is None:` | `->L3314` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | +| 3623 | `for _ in range(max_iterations):` | `->L-3569` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | +| 3708 | `if src_n <= tgt_n:` | `->L3711` | | +| 3740 | `if not a.section_id or a.section_id != b.section_id:` | `->L3741` | | +| 3822 | `if ctx.topology is None:` | `->L3823` | | +| 3846 | `if key not in ctx.offsets:` | `->L3847` | | +| 3895 | `len(levels) != len(continuing)` | `->L3898` | | +| 3958 | `if line_id not in assignments:` | `->L3959` | | +| 3963 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3965` | | +| 3985 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L4010` | | +| 3996 | `if line_id not in assignments:` | `->L3997` | | +| 4003 | `if set(frames).difference(next_frames):` | `->L4004` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 4038 | `if any(` | `->L4042` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 4044 | `if local_offset is None or not (` | `->L4050` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 4069 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L4070` | | +| 4080 | `if gap is not None:` | `->L4081` | | +| 4111 | `if any(` | `->L4117` | | +| 4135 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L4136` | | +| 4317 | `if dag is not None:` | `->L4325` | | ## `orientation.py` From 8812d1ccbd29b230e97150bddcdc112738f430e5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 04:20:07 +0100 Subject: [PATCH 139/158] fix(offsets): re-inherit a divergence junction after its exit port reverses A junction holds nothing but the verbatim copy of its exit port's bundle, so a section reversal that runs after the copy leaves the junction transposed and the two 10-px stubs it sits between draw the crossing. Co-Authored-By: Claude Fable 5 (cherry picked from commit b81788c66185aaeddab41d12d41124ae1ac10377) --- src/nf_metro/layout/routing/offsets.py | 39 ++++++++++++++++++++------ tests/test_seam_lane_agreement.py | 4 +-- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/nf_metro/layout/routing/offsets.py b/src/nf_metro/layout/routing/offsets.py index 47bde9cdc..d37f81f59 100644 --- a/src/nf_metro/layout/routing/offsets.py +++ b/src/nf_metro/layout/routing/offsets.py @@ -3,7 +3,14 @@ from __future__ import annotations from collections import Counter, deque -from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence +from collections.abc import ( + Callable, + Collection, + Iterable, + Iterator, + Mapping, + Sequence, +) from dataclasses import dataclass, field from nf_metro.layout.constants import ( @@ -2447,6 +2454,25 @@ def _recompact_fan_port_bordering_stations( _propagate_touched_exit_ports_to_entries(ctx, touched) +def _refresh_divergence_junctions(ctx: _OffsetCtx, touched: Collection[str]) -> None: + """Re-copy the bundle of every divergence junction fed by a moved exit port. + + A junction has no section of its own, so it holds nothing but the verbatim + copy :func:`_propagate_to_junctions` gave it. Any later pass that moves the + exit port leaves that copy stale, and the two 10-px stubs the junction sits + between then draw the difference -- a jog, or a crossing when the move was a + reversal. + """ + graph = ctx.graph + for jid, exit_port_id in ctx.divergence_exit_ports.items(): + if exit_port_id not in touched: + continue + for line_id in graph.station_lines(jid): + port_off = ctx.offsets.get((exit_port_id, line_id)) + if port_off is not None: + ctx.offsets[(jid, line_id)] = port_off + + def _propagate_touched_exit_ports_to_entries( ctx: _OffsetCtx, touched: set[str] ) -> None: @@ -2473,13 +2499,7 @@ def _propagate_touched_exit_ports_to_entries( junction sits between. """ graph = ctx.graph - for jid, exit_port_id in ctx.divergence_exit_ports.items(): - if exit_port_id not in touched: - continue - for line_id in graph.station_lines(jid): - port_off = ctx.offsets.get((exit_port_id, line_id)) - if port_off is not None: - ctx.offsets[(jid, line_id)] = port_off + _refresh_divergence_junctions(ctx, touched) for sid in sorted(touched, key=ctx.station_rank.__getitem__): src_port = graph.ports.get(sid) if src_port is None or src_port.is_entry: @@ -4340,14 +4360,17 @@ def _reverse_offsets_from_roots(ctx: _OffsetCtx, roots: set[str]) -> None: key = station.section_id section_span[key] = max(section_span.get(key, 0.0), off) + reversed_ids = set() for sid, station in ctx.graph.stations.items(): if station.section_id not in affected: continue + reversed_ids.add(sid) max_off = section_span.get(station.section_id, 0.0) for lid in ctx.graph.station_lines(sid): ctx.offsets[(sid, lid)] = reversed_offset( ctx.offsets.get((sid, lid), 0.0), max_off ) + _refresh_divergence_junctions(ctx, reversed_ids) def _reverse_near_vertical_junction_right_entry_offsets(ctx: _OffsetCtx) -> None: diff --git a/tests/test_seam_lane_agreement.py b/tests/test_seam_lane_agreement.py index 0018b2193..10bd62e92 100644 --- a/tests/test_seam_lane_agreement.py +++ b/tests/test_seam_lane_agreement.py @@ -41,9 +41,7 @@ key=lambda p: (p.parent.name, p.name), ) -_STUB_SLOPE_XFAILS = { - "seed_41": "s4__exit_left_4 hands its pair to __junction_29 transposed", -} +_STUB_SLOPE_XFAILS: dict[str, str] = {} _APPROACH_LANE_XFAILS = { "seed_15": "s8__exit_left_8 and __junction_26 land off s10__entry_right_19", "seed_77": "the two U-detour feeders land on s9__entry_right_25 transposed", From 44175a8c6be624db2a29afd77562a6e9126617a6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:04:45 +0100 Subject: [PATCH 140/158] fix(planning): keep an allocated path off a seam it lands transposed on The gap-allocation pass settles its columns before the continuation flanks are seated, so its path can reach an entry port on the wrong lane; importing it over a normalized path that lands on the port's own lane transposes the bundle at the seam. Co-Authored-By: Claude Fable 5 (cherry picked from commit c06525ed7e7b82969cbeeed0b6a74b3b7606a719) --- src/nf_metro/layout/routing/planning.py | 33 +++++++++++++++++++++++++ tests/test_seam_lane_agreement.py | 1 - 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index ce6e91b55..d02f17be1 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -110,6 +110,30 @@ def _allocation_eligible_system_ids( return preliminary_planned_ids - member_failure_ids +def _lands_on_entry_port_lane( + points: tuple[tuple[float, float], ...], + edge: ResolvedEdge, + ctx: _RoutingCtx, +) -> bool | None: + """Whether *points* end on the lane the entry port holds for the line. + + ``None`` where the seam states no lane to land on: a target that is not a + flow-side entry port, or one with no settled offset for this line. + """ + from nf_metro.parser.model import PortSide + + offsets = ctx.station_offsets or {} + lane = offsets.get((edge.target, edge.line_id)) + port = ctx.graph.ports.get(edge.target) + if lane is None or port is None or not port.is_entry: + return None + if port.side not in (PortSide.LEFT, PortSide.RIGHT): + return None + return abs(points[-1][1] - (ctx.graph.stations[edge.target].y + lane)) <= ( + COORD_TOLERANCE + ) + + def _allocated_points_in_source_frame( plan: RouteMemberGeometryPlan, allocated: RouteMemberGeometryPlan, @@ -274,6 +298,15 @@ def _with_settled_exit_turns( in reconciled_targets ) and allocated is not None: allocated_points = _allocated_points_in_source_frame(plan, allocated, ctx) + # The allocation pass settles gap columns before the continuation + # flanks are seated, so its path can reach the seam transposed. + # A path that lands off the lane the entry port holds cannot be + # imported over one that lands on it. + if _lands_on_entry_port_lane( + plan.points, plan.edge, ctx + ) and not _lands_on_entry_port_lane(allocated_points, plan.edge, ctx): + plans.append(plan) + continue gap_channels = tuple( replace( channel, diff --git a/tests/test_seam_lane_agreement.py b/tests/test_seam_lane_agreement.py index 10bd62e92..e227bdfd8 100644 --- a/tests/test_seam_lane_agreement.py +++ b/tests/test_seam_lane_agreement.py @@ -43,7 +43,6 @@ _STUB_SLOPE_XFAILS: dict[str, str] = {} _APPROACH_LANE_XFAILS = { - "seed_15": "s8__exit_left_8 and __junction_26 land off s10__entry_right_19", "seed_77": "the two U-detour feeders land on s9__entry_right_25 transposed", } From 1b594911384ea965acfdf9ea9052b6d90cb8446d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:21:00 +0100 Subject: [PATCH 141/158] test(routing): refresh gate coverage for the seam lane fixes Co-Authored-By: Claude Fable 5 (cherry picked from commit fdc674f02e7fea285776ceed1cfaf16d07594c79) --- tests/data/routing_gate_coverage_baseline.json | 17 +++++++++-------- tests/data/routing_gate_triage.json | 4 ---- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 865016f1c..a33e4424e 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -19,6 +19,7 @@ "common.py::if endpoints:::#1", "common.py::if k == 0 or k + 2 >= len(points):::#1", "common.py::if len({round(value, 6) for value in port_ys}) != n:::#1", + "common.py::if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:::#1", "common.py::if n == 0:::#1", "common.py::if not consumer.is_port:::#1", "common.py::if not src.is_port:::#1", @@ -92,9 +93,11 @@ "convergences.py::for coordinate in candidates:::#3", "convergences.py::for coordinate in candidates:::#4", "convergences.py::for edge_key in incoming_edges:::#3", + "convergences.py::for fixed in fixed_channels:::#1", "convergences.py::for item in system_plans:::#1", "convergences.py::for obstacle in direct_landings:::#1", "convergences.py::for plan_rank, landing_rank in members:::#1", + "convergences.py::for positions in (packed_positions(True), packed_positions(False)):::#1", "convergences.py::for rank in displaced_ranks:::#1", "convergences.py::for rank in range(len(route.points) - 2, -1, -1):::#1", "convergences.py::for rank, (start, end) in enumerate(zip(points, points[1:])):::#1", @@ -149,6 +152,7 @@ "convergences.py::if abs(start_y - end_y) > COORD_TOLERANCE:::#1", "convergences.py::if actual is None:::#1", "convergences.py::if actual is None:::#2", + "convergences.py::if any(::#15", "convergences.py::if any(::#16", "convergences.py::if any(::#17", "convergences.py::if any(::#18", @@ -308,7 +312,6 @@ "convergences.py::if runway < curve_radius - COORD_TOLERANCE:::#2", "convergences.py::if same_line and first_direction is not second_direction:::#1", "convergences.py::if section is None:::#1", - "convergences.py::if shared_carrier and separation > COORD_TOLERANCE:::#1", "convergences.py::if source is not None and abs(source.x - column) > COORD_TOLERANCE:::#1", "convergences.py::if tail is None:::#2", "convergences.py::if tail is not None and _points_coincide(tail[0], landing.join_point):::#1", @@ -683,11 +686,9 @@ "member_geometry.py::if _planner_owns_channel(::#1", "member_geometry.py::if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:::#1", - "member_geometry.py::if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if actual != (channel.start, channel.end):::#1", "member_geometry.py::if all(::#1", "member_geometry.py::if allocated is None:::#1", - "member_geometry.py::if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:::#1", "member_geometry.py::if channel is None:::#1", "member_geometry.py::if claim in channel_claims:::#1", "member_geometry.py::if context is not None:::#1", @@ -715,7 +716,6 @@ "member_geometry.py::if radius_index + 2 >= len(route.points):::#1", "member_geometry.py::if radius_index >= len(radii):::#1", "member_geometry.py::if rank < len(radii):::#1", - "member_geometry.py::if rank < len(route.exit_shared_opening_points):::#1", "member_geometry.py::if route is None:::#1", "member_geometry.py::if route is None:::#2", "member_geometry.py::if route.exit_lane_transition_plan_id is not None:::#1", @@ -747,13 +747,13 @@ "normalize.py::elif right_ok:::#1", "normalize.py::elif up_ok:::#1", "normalize.py::for _ in range(max(1, len(buckets))):::#1", + "normalize.py::for _step in range(64):::#1", "normalize.py::for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):::#1", "normalize.py::for ch in downs:::#1", "normalize.py::for delta in (step, -step):::#1", "normalize.py::for descent in downs:::#1", "normalize.py::for group in _merge_feeder_groups(routes, ctx):::#1", "normalize.py::for grp in groups:::#3", - "normalize.py::for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):::#1", "normalize.py::for r, k, _y in crossing:::#1", "normalize.py::for sign in (1, -1):::#1", "normalize.py::for up in ups:::#1", @@ -781,11 +781,11 @@ "normalize.py::if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:::#1", "normalize.py::if abs(overlap) > COORD_TOLERANCE:::#1", "normalize.py::if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:::#1", - "normalize.py::if abs(shift) <= COORD_TOLERANCE or any(::#1", "normalize.py::if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(up.x - descent.x) > radius:::#1", "normalize.py::if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(y2 - y1) > COORD_TOLERANCE or abs(x2 - x1) <= COORD_TOLERANCE:::#1", + "normalize.py::if actual - common <= COORD_TOLERANCE_FINE:::#1", "normalize.py::if all(::#1", "normalize.py::if allocated_offsets is None or allocated_bases is None:::#1", "normalize.py::if anchor_section_id is not None and anchor_side is not None:::#1", @@ -840,7 +840,7 @@ "normalize.py::if not 0 <= far < len(pts):::#1", "normalize.py::if not 0 <= radius_idx < len(rp.curve_radii):::#1", "normalize.py::if not any(not t.route.normalize_exempt for t in grp):::#2", - "normalize.py::if not blockers:::#1", + "normalize.py::if not changed:::#1", "normalize.py::if not chans:::#1", "normalize.py::if not crossing:::#1", "normalize.py::if not downs or not ups:::#1", @@ -864,6 +864,7 @@ "normalize.py::if reconcile_owned_corridor:::#4", "normalize.py::if ref is not None:::#1", "normalize.py::if rep_x[a] != rep_x[b]:::#1", + "normalize.py::if resolved < common:::#1", "normalize.py::if route.curve_radii is None or membership is None:::#1", "normalize.py::if route.curve_radii is None:::#1", "normalize.py::if route_system_owns_segment_boundary(route, opening.idx):::#1", @@ -1006,6 +1007,7 @@ "planning.py::if allocated.curve_radii is None or len(allocated.curve_radii) != len(::#1", "planning.py::if changed:::#1", "planning.py::if corner_offsets is None:::#1", + "planning.py::if lane is None or port is None or not port.is_entry:::#1", "planning.py::if membership is None:::#1", "planning.py::if not replacements:::#1", "planning.py::if plan.curve_radii is None or ctx.exit_turns is None:::#1", @@ -1043,7 +1045,6 @@ "reserved_bands.py::if band is None:::#2", "reserved_bands.py::if boundary is None:::#1", "reserved_bands.py::if content_band is not None:::#1", - "reserved_bands.py::if lower > upper + COORD_TOLERANCE:::#1", "reserved_bands.py::if not isinstance(::#1", "reserved_bands.py::if realised is None:::#2", "reserved_bands.py::if seat is None:::#1", diff --git a/tests/data/routing_gate_triage.json b/tests/data/routing_gate_triage.json index f705ff007..6c582a4c9 100644 --- a/tests/data/routing_gate_triage.json +++ b/tests/data/routing_gate_triage.json @@ -635,10 +635,6 @@ "note": "Final member-plan validation aborts when a plan-owned channel corner disagrees with its recorded concentric inputs. Valid production geometry derives that radius from the same inputs; both failure flanks are exercised by test_member_geometry_validator_rejects_changed_flanking_radius.", "status": "defensive" }, - "member_geometry.py::if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:::#1": { - "note": "_candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable.", - "status": "needs-review" - }, "member_geometry.py::if context is not None:::#1": { "note": "_convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures).", "status": "defensive" From 4cdc932b1f68299beb320e7641b95f2fe6cbfa61 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:35:40 +0100 Subject: [PATCH 142/158] test(routing): refresh gate coverage for the seam order fixes --- docs/dev/routing_gate_coverage.md | 261 +++++++++++++++--------------- 1 file changed, 131 insertions(+), 130 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 64ea5b970..4473d297e 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,11 +12,11 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2414/3507** gates fully exercised (both/all arms hit by some fixture); **1093** gates have at least one un-exercised arm. +**2416/3510** gates fully exercised (both/all arms hit by some fixture); **1094** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. -The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **286** gaps carry a triage verdict. +The Triage column carries a curated verdict for gaps no fixture can close: **defensive** (a guard arm a valid topology never violates), **candidate-dead** (no constructible topology reaches it; left in place pending a separate deletion review), or **needs-review** (not yet classified). A blank cell means the gap is still open for a fixture. **285** gaps carry a triage verdict. ## `arranger.py` @@ -48,7 +48,7 @@ Gates with an un-exercised arm: ## `common.py` -155/197 gates fully exercised. +154/197 gates fully exercised. Gates with an un-exercised arm: @@ -64,6 +64,7 @@ Gates with an un-exercised arm: | 1020 | `if abs(y4 - y3) > COORD_TOLERANCE or abs(x4 - x3) <= COORD_TOLERANCE:` | `->L1021` | **defensive** -- Trunk-not-horizontal guard in port_peeloff_tail, reached only after the earlier port-lead and riser checks returned early. In an orthogonal route segments alternate H/V, so the segment preceding a vertical riser is always horizontal; instrumenting the corpus the guard is reached but the non-horizontal-trunk arm never fires. Defensive against a degenerate collinear tail the router does not produce. | | 1112 | `if len({round(value, 6) for value in port_ys}) != n:` | `->L1113` | **defensive** -- A complete entry port assigns every distinct line a unique station-offset slot. Duplicate port-Y values therefore require a malformed route set that bypassed station offset allocation; test_invalid_opposing_candidate_is_rejected[duplicate-port-slot] exercises the rejection directly. | | 1114 | `if port_ys[-1] - port_ys[0] > (n - 1) * step + COORD_TOLERANCE:` | `->L1115` | **defensive** -- Station offset allocation gives a complete n-line entry port one contiguous n-slot band, so its port-Y extent is exactly bounded by (n-1)*step. The wider-band reject is exercised by test_invalid_opposing_candidate_is_rejected[noncontiguous-port-band]. | +| 1117 | `if max(peel_xs) - min(peel_xs) > (n - 1) * step + COORD_TOLERANCE:` | `->L1118` | | | 1121 | `if shared_hi - shared_lo < min_common_approach - COORD_TOLERANCE:` | `->L1122` | **defensive** -- Inter-row placement reserves at least the two-corner runway used by side-port peel-off handlers, so complete opposing entry tails share at least min_common_approach vertically. A shorter overlap is malformed settled geometry; test_invalid_opposing_candidate_is_rejected[insufficient-common-approach] exercises the guard. | | 1360 | `if pinned_bases and any(` | `->L1363` | | | 1391 | `if k == 0 or k + 2 >= len(points):` | `->L1392` | | @@ -136,7 +137,7 @@ Gates with an un-exercised arm: ## `convergences.py` -370/636 gates fully exercised. +368/636 gates fully exercised. Gates with an un-exercised arm: @@ -315,9 +316,12 @@ Gates with an un-exercised arm: | 5188 | `if not moved_channels or any(` | `->L5201` | | | 5206 | `if (` | `->L5210` | | | 5374 | `if clearance is None:` | `->L5375` | | -| 5381 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5385` | | +| 5380 | `for fixed in fixed_channels:` | `->L5381` | | +| 5381 | `if fixed.gap != gap and not _stacked_elbow_channels_crowd(` | `->L5384`, `->L5385` | | | 5388 | `if (` | `->L5393`, `->L5394` | | | 5415 | `elif not from_left and math.isfinite(lane_hi):` | `->L5416` | | +| 5420 | `for positions in (packed_positions(True), packed_positions(False)):` | `->L5354` | | +| 5421 | `if any(` | `->L5426` | | | 5434 | `if abs(coordinate - key.coordinate) <= COORD_TOLERANCE:` | `->L5435` | | | 5448 | `if opening_key in moved_openings:` | `->L5449` | | | 5457 | `if moved is None:` | `->L5458` | | @@ -359,7 +363,6 @@ Gates with an un-exercised arm: | 6302 | `if (` | `->L6329` | | | 6349 | `if conflict is not None:` | `->L6350` | | | 6359 | `if requirements:` | `->L6360`, `->L6362` | | -| 6397 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6398` | | | 6404 | `if (` | `->L6415` | | | 6415 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6418`, `->L6419` | | | 6419 | `if any(` | `->L6424`, `->L6425` | | @@ -797,7 +800,7 @@ Gates with an un-exercised arm: ## `member_geometry.py` -114/173 gates fully exercised. +117/173 gates fully exercised. Gates with an un-exercised arm: @@ -835,7 +838,6 @@ Gates with an un-exercised arm: | 1284 | `if route.exit_lane_transition_plan_id is not None:` | `->L1285` | | | 1286 | `if route.fan_plan_id is not None or route.fan_route_emitter is not None:` | `->L1287` | | | 1288 | `if convergence_owns_segment_boundary(route, segment_rank):` | `->L1289` | | -| 1348 | `if bounds.band is not None and not bounds.band.lo <= candidate <= bounds.band.hi:` | `->L1349` | **needs-review** -- _candidate_clears_runway's band rejection, unreachable while `if band is not None:::#1` never populates a band on this path. Reachable. | | 1448 | `if _planner_owns_channel(` | `->L1451` | | | 1451 | `if not ctx.validate_final_route_frames:` | `->L1452`, `->L1453` | | | 1457 | `if not _candidate_clears_runway(` | `->L1460` | | @@ -845,10 +847,8 @@ Gates with an un-exercised arm: | 1883 | `if radii is not None:` | `->L1888` | | | 1884 | `if 0 <= rank - 1 < len(radii):` | `->L1886` | | | 1886 | `if rank < len(radii):` | `->L1888` | | -| 1911 | `if rank < len(route.exit_shared_opening_points):` | `->L1912` | | | 1925 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1908` | | -| 1951 | `if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:` | `->L1953` | | -| 1953 | `if all(` | `->L1949`, `->L1958` | | +| 1953 | `if all(` | `->L1949` | | | 2032 | `if movable_run:` | `->L2033` | | | 2083 | `if context is not None:` | `->L2098` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | | 2099 | `if key in ctx.skip_edges:` | `->L2100` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | @@ -865,7 +865,7 @@ Gates with an un-exercised arm: ## `normalize.py` -429/598 gates fully exercised. +428/598 gates fully exercised. Gates with an un-exercised arm: @@ -879,7 +879,6 @@ Gates with an un-exercised arm: | 435 | `if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:` | `->L436` | **defensive** -- The opening segment before a declared same-source divergence channel is a non-degenerate horizontal run by construction. The non-horizontal or zero-length arm defensively rejects a route shape that cannot provide a shared trunk endpoint. | | 441 | `if a_trunk is None or b_trunk is None:` | `->L442` | **defensive** -- A symmetric divergence is considered only for declared gap channels produced by a same-source branch opening. Those channels follow a horizontal opening run, so both opening trunks resolve; the missing-trunk arm defensively rejects a different route shape. | | 516 | `if not chans:` | `->L517` | | -| 627 | `for k, x, y_lo, y_hi, seg_down in iter_vertical_segments(rp):` | `->L630` | | | 660 | `if ctx.exit_turns is None:` | `->L661` | | | 665 | `assignment is None` | `->L670` | | | 667 | `or assignment.turn_direction is None` | `->L670` | | @@ -938,6 +937,10 @@ Gates with an un-exercised arm: | 2073 | `if _section_intrudes(` | `->L2080` | | | 2138 | `if any(` | `->L2142` | | | 2205 | `for _ in range(max(1, len(buckets))):` | `->L-2151` | **defensive** -- Bounded fixed-point repair for coincident corner radii. Production routes settle without a second correction pass; the multi-bucket propagation and loop-exhaustion paths are exercised directly by test_unify_refreshes_a_shared_route_after_changing_one_corner. | +| 2223 | `if actual - common <= COORD_TOLERANCE_FINE:` | `->L2225` | | +| 2228 | `for _step in range(64):` | `->L2229`, `->L2236` | | +| 2232 | `if resolved < common:` | `->L2233`, `->L2235` | | +| 2243 | `if not changed:` | `->L2205` | | | 2281 | `if ch.route.convergence_plan_id is not None:` | `->L2282` | | | 2291 | `if _planner_owns_channel(ch) and (` | `->L2294` | | | 2365 | `if opposing_bundle is not None and {` | `->L2368` | **defensive** -- iter_opposing_entry_confluences requires the complete direct-port line set, while by_port can only add a member through convergence-junction aliasing. Resolved convergence junctions replace the direct approach rather than coexist with a complete direct-port bundle, so unequal ownership sets require an inconsistent route/context pair. test_opposing_group_with_an_extra_mapped_approach_uses_generic_ownership exercises the defensive fallback. | @@ -998,7 +1001,6 @@ Gates with an un-exercised arm: | 4257 | `if rank + 1 >= len(points):` | `->L4258`, `->L4259` | | | 4260 | `if abs(far[1] - near[1]) > COORD_TOLERANCE:` | `->L4261` | | | 4387 | `if band is None:` | `->L4388` | | -| 4393 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4397` | | | 4418 | `and span[0] < crossed[1]` | `->L4419` | | | 4419 | `and crossed[0] < span[1]` | `->L4410`, `->L4421` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | | 4529 | `if i in relocated:` | `->L4530` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | @@ -1039,7 +1041,6 @@ Gates with an un-exercised arm: | 5213 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5215` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | | 5268 | `elif right_ok:` | `->L5271` | | | 5317 | `if s.bbox_w <= 0:` | `->L5318` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | -| 5705 | `if not blockers:` | `->L5706` | | ## `offsets.py` @@ -1049,101 +1050,101 @@ Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 143 | `if edge.target in inbound:` | `->L145` | **defensive** -- inbound is pre-built as {sid: set() for sid in graph.stations}, so every station id in the graph is a key. All edge endpoints are guaranteed to be in graph.stations after parsing (regular nodes via register_station, ports via add_port->add_station, junctions via add_station), so edge.target is always found in inbound and the False branch (54->56) is never taken. | -| 145 | `if edge.source in outbound:` | `->L142` | **defensive** -- outbound is pre-built from graph.stations keys identically to inbound. All edge sources are registered stations by construction (regular nodes, ports, junctions), so edge.source is always found in outbound and the False branch (56->53) is never taken. | -| 414 | `if ordered != expected:` | `->L415` | **defensive** -- The raise arm of _assert_sections_anchored_on_trunk, a backstop on the postcondition of _reindex_section_local: an independent section (no flat-frame neighbour) always lands on the contiguous top-anchored levels 0,step,...,(m-1)*step by construction, so the mismatch arm never fires across the corpus. It guards against a future change that stops re-anchoring such a section. | -| 457 | `while cur is not None and cur not in seen:` | `->L466` | | -| 492 | `if slot is None:` | `->L493` | | -| 505 | `if neighbour is None:` | `->L506` | | -| 629 | `if reverse:` | `->L630` | **needs-review** -- Reachable only on a reconvergence section that is also a serpentine fold, where the fold corner crosses lines mid-curve and the return-row bundle sits one offset too low (#705). Exercise with a clean fixture once #705 is fixed. | -| 660 | `if section is None:` | `->L661` | | -| 684 | `if not all(lid in feeder_off for lid in continuing):` | `->L685` | | -| 692 | `if lid in new_off:` | `->L691` | | -| 714 | `if section is not None:` | `->L712` | | -| 716 | `if len(set(feeder_row.values())) < 2:` | `->L717` | | -| 736 | `if entry_port is None:` | `->L737` | | -| 801 | `if not all(lid in feeder_off for lid in primary_lines):` | `->L802` | | -| 850 | `if new_order is None:` | `->L853` | | -| 948 | `if swap_lid is None:` | `->L949` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | -| 1011 | `if cur in seen:` | `->L1012` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1021 | `if not src.is_port and src.section_id == sec_id:` | `->L1014` | | -| 1107 | `if not target_id:` | `->L1108` | **defensive** -- An exit-only line at station sid is identified by being present in station_lines(sid) but absent from ctx.inbound[sid]. station_lines() returns lines appearing in any edge whose source or target is sid. For a line to be exit-only at sid, it must appear in at least one outbound edge from sid; otherwise it would not appear in station_lines(sid) at all. If an outbound edge exists, outbound_target[(sid, lid)] is always set, so target_id is never None when execution reaches L422. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1110 | `if not target_st:` | `->L1111` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | -| 1127 | `for other in lines:` | `->L1135` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | -| 1135 | `if swap_lid is None:` | `->L1136` | | -| 1192 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1193` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1203 | `for other_lid in nbr_lines:` | `->L1185` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | -| 1214 | `if max_steps <= 0:` | `->L1215` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | -| 1242 | `if lid not in seen:` | `->L1239` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 1468 | `for _ in range(len(graph.stations) + 1):` | `->L1485` | | -| 1472 | `if edge is None:` | `->L1473` | | -| 1475 | `if nxt in seen:` | `->L1476` | | -| 1560 | `if not src_st.is_port:` | `->L1558` | | -| 1564 | `if internal_offs:` | `->L1552` | **defensive** -- Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state. | -| 1594 | `if not src_st.is_port:` | `->L1592` | | -| 1725 | `if anchor_feeders:` | `->L1728` | | -| 1747 | `if port_off is not None:` | `->L1745` | **defensive** -- _compute_base_offsets runs before junction propagation and creates an offset for every station-line pair. A divergence exit port and its junction carry the same connector lines, so this lookup always succeeds; the missing-offset arm protects an incomplete synthetic context. | -| 1774 | `if port_st is None:` | `->L1775` | | -| 1849 | `if not src.is_port:` | `->L1850` | | -| 2006 | `if not src.is_port:` | `->L2007` | | -| 2033 | `if paired_off is not None:` | `->L2031` | **defensive** -- _compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable. | -| 2039 | `if not tgt_st.is_port:` | `->L2037` | | -| 2087 | `if set(inherited) != set(graph.station_lines(port_id)):` | `->L2088` | **defensive** -- _inherit_level_convergence_entry_offsets skips a convergence entry port when the lines it inherits from its immediate feeders do not cover every line the port carries. A convergence entry's lines are, by construction, exactly the union of its inbound edges' lines, and each inbound edge supplies that line's feeder offset, so the inherited set always equals the port's line set and the mismatch arm is never taken. Defensive against a port line with no inbound edge (a malformed graph). | -| 2124 | `if entry.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2125` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam. | -| 2132 | `if len(shared) < 2:` | `->L2133` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken. | -| 2221 | `if edge.line_id not in lines:` | `->L2222` | | -| 2278 | `for edge in graph.edges_from(port_id):` | `->L2287` | | -| 2282 | `if tgt.is_port:` | `->L2283` | | -| 2287 | `if target_id is None:` | `->L2288` | | -| 2372 | `if not sec_stations:` | `->L2373` | **defensive** -- The parser calls _remove_empty_sections() (resolve.py:26) which deletes any section whose station_ids list is empty before port creation. Ports are only added to station_ids during _create_port_stations() (resolve.py:527), which runs AFTER _remove_empty_sections(). Therefore every section in graph.sections at layout time has at least one non-port station; sec_stations is never empty. | -| 2417 | `if station.section_id is not None:` | `->L2409` | | -| 2426 | `if port.section_id is None:` | `->L2427` | | -| 2439 | `if section is None:` | `->L2440` | | -| 2481 | `if port_off is not None:` | `->L2479` | | -| 2491 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2492` | | -| 2493 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2494` | | -| 2498 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2499` | | -| 2501 | `if off is not None:` | `->L2487` | | -| 2521 | `if not any(` | `->L2524` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | -| 2539 | `if len(seed_lines) < 2:` | `->L2540` | | -| 2545 | `if not fixed_here or not movable:` | `->L2546` | | -| 2568 | `if not any(` | `->L2571` | | -| 2660 | `if not changed_lids:` | `->L2661` | | -| 2679 | `if pending is None:` | `->L2680` | | -| 2808 | `if max_steps <= 0:` | `->L2809` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | -| 2822 | `if sec_a is None and id_a in graph.ports:` | `->L2823` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2824 | `if sec_b is None and id_b in graph.ports:` | `->L2825` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 2859 | `if abs(delta) <= COORD_TOLERANCE_FINE:` | `->L2860` | | -| 2878 | `if not sides_a or not sides_b or 0 in sides_a or 0 in sides_b:` | `->L2879` | | -| 2983 | `if (tgt_id, lid) not in ctx.offsets:` | `->L2984` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 3007 | `if src_port and not src_port.is_entry:` | `->L3014` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | -| 3010 | `elif feeding_exit != edge.source:` | `->L3011` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 3019 | `if single_exit and feeding_exit is not None:` | `->L2959` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | -| 3026 | `if exit_lines == set(j_lines) and shares_lanes:` | `->L2959` | | -| 3028 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2959` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | -| 3097 | `for distance in range(1, slots + 1):` | `->L3101` | | -| 3137 | `if free is not None:` | `->L3126` | | -| 3208 | `if pred is None:` | `->L3209` | | -| 3304 | `if target_col is None:` | `->L3305` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | -| 3313 | `if source_col is None:` | `->L3314` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | -| 3623 | `for _ in range(max_iterations):` | `->L-3569` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | -| 3708 | `if src_n <= tgt_n:` | `->L3711` | | -| 3740 | `if not a.section_id or a.section_id != b.section_id:` | `->L3741` | | -| 3822 | `if ctx.topology is None:` | `->L3823` | | -| 3846 | `if key not in ctx.offsets:` | `->L3847` | | -| 3895 | `len(levels) != len(continuing)` | `->L3898` | | -| 3958 | `if line_id not in assignments:` | `->L3959` | | -| 3963 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3965` | | -| 3985 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L4010` | | -| 3996 | `if line_id not in assignments:` | `->L3997` | | -| 4003 | `if set(frames).difference(next_frames):` | `->L4004` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | -| 4038 | `if any(` | `->L4042` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | -| 4044 | `if local_offset is None or not (` | `->L4050` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | -| 4069 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L4070` | | -| 4080 | `if gap is not None:` | `->L4081` | | -| 4111 | `if any(` | `->L4117` | | -| 4135 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L4136` | | -| 4317 | `if dag is not None:` | `->L4325` | | +| 150 | `if edge.target in inbound:` | `->L152` | **defensive** -- inbound is pre-built as {sid: set() for sid in graph.stations}, so every station id in the graph is a key. All edge endpoints are guaranteed to be in graph.stations after parsing (regular nodes via register_station, ports via add_port->add_station, junctions via add_station), so edge.target is always found in inbound and the False branch (54->56) is never taken. | +| 152 | `if edge.source in outbound:` | `->L149` | **defensive** -- outbound is pre-built from graph.stations keys identically to inbound. All edge sources are registered stations by construction (regular nodes, ports, junctions), so edge.source is always found in outbound and the False branch (56->53) is never taken. | +| 421 | `if ordered != expected:` | `->L422` | **defensive** -- The raise arm of _assert_sections_anchored_on_trunk, a backstop on the postcondition of _reindex_section_local: an independent section (no flat-frame neighbour) always lands on the contiguous top-anchored levels 0,step,...,(m-1)*step by construction, so the mismatch arm never fires across the corpus. It guards against a future change that stops re-anchoring such a section. | +| 464 | `while cur is not None and cur not in seen:` | `->L473` | | +| 499 | `if slot is None:` | `->L500` | | +| 512 | `if neighbour is None:` | `->L513` | | +| 636 | `if reverse:` | `->L637` | **needs-review** -- Reachable only on a reconvergence section that is also a serpentine fold, where the fold corner crosses lines mid-curve and the return-row bundle sits one offset too low (#705). Exercise with a clean fixture once #705 is fixed. | +| 667 | `if section is None:` | `->L668` | | +| 691 | `if not all(lid in feeder_off for lid in continuing):` | `->L692` | | +| 699 | `if lid in new_off:` | `->L698` | | +| 721 | `if section is not None:` | `->L719` | | +| 723 | `if len(set(feeder_row.values())) < 2:` | `->L724` | | +| 743 | `if entry_port is None:` | `->L744` | | +| 808 | `if not all(lid in feeder_off for lid in primary_lines):` | `->L809` | | +| 857 | `if new_order is None:` | `->L860` | | +| 955 | `if swap_lid is None:` | `->L956` | **defensive** -- In _reorder_one_exit_line, swap_lid is None only if the loop over `lines` exhausts without a match, but desired_off (min or max of all_offs) is always held by another line, so the early-return guard never fires (0/128). Defensive. Reclassified defensive (#762). | +| 1018 | `if cur in seen:` | `->L1019` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1028 | `if not src.is_port and src.section_id == sec_id:` | `->L1021` | | +| 1114 | `if not target_id:` | `->L1115` | **defensive** -- An exit-only line at station sid is identified by being present in station_lines(sid) but absent from ctx.inbound[sid]. station_lines() returns lines appearing in any edge whose source or target is sid. For a line to be exit-only at sid, it must appear in at least one outbound edge from sid; otherwise it would not appear in station_lines(sid) at all. If an outbound edge exists, outbound_target[(sid, lid)] is always set, so target_id is never None when execution reaches L422. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1117 | `if not target_st:` | `->L1118` | **defensive** -- After parse and layout, every edge target ID in a MetroGraph maps to a station in graph.stations. The guard protects against a structurally malformed graph where an edge references a nonexistent station ID, which cannot occur with valid .mmd input processed through the parser and _resolve_sections(). | +| 1134 | `for other in lines:` | `->L1142` | **defensive** -- In _reorder_one_exit_line, the loop over `lines` always finds the swap partner: desired_off is the min or max of all_offs, which by construction is held by another line, so the loop-exhausted-without-match arm is never taken (0/128). Defensive. Reclassified defensive (#762). | +| 1142 | `if swap_lid is None:` | `->L1143` | | +| 1199 | `if abs(nbr_cur - new_off) < _OFFSET_EQ_TOLERANCE:` | `->L1200` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1210 | `for other_lid in nbr_lines:` | `->L1192` | **needs-review** -- In the exit-only-line reorder / same-Y offset propagation; reachable only via a multi-line LR/RL section with a perpendicular (TOP/BOTTOM) exit port, which the engine lays out as a station-as-elbow + collinear overlay PhaseInvariantError (#706). Exercise with a clean fixture once #706 is fixed. | +| 1221 | `if max_steps <= 0:` | `->L1222` | **defensive** -- max_steps = len(graph.stations) * len(graph.lines). Each BFS iteration dequeues one (station, line) pair and marks it visited; visited pairs are skipped on re-encounter. The number of distinct (station, line) pairs is bounded by \|stations\| * \|lines\|, so the BFS can perform at most that many productive steps before the queue empties. The `while queue and max_steps > 0` condition therefore always exits via the queue-empty branch; max_steps reaches zero only if more productive steps occur than unique pairs, which is impossible in a finite graph. | +| 1249 | `if lid not in seen:` | `->L1246` | **defensive** -- The iterator at L554 is `sorted(set(sec_entry_lines), ...)`. The outer `set()` deduplicates the list before iteration, so each `lid` appears exactly once and `seen` never contains it when processed. The false arm (lid already in seen) is logically unreachable — the dedup happens at set construction, making the `seen` guard dead code. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 1475 | `for _ in range(len(graph.stations) + 1):` | `->L1492` | | +| 1479 | `if edge is None:` | `->L1480` | | +| 1482 | `if nxt in seen:` | `->L1483` | | +| 1567 | `if not src_st.is_port:` | `->L1565` | | +| 1571 | `if internal_offs:` | `->L1559` | **defensive** -- Exit ports are only created when inter-section edges exist (resolve.py `_create_port_stations` iterates `exit_group_edges` which is populated only from actual edges). Every TB LEFT/RIGHT exit port therefore has at least one edge from an internal station, so `internal_offs` is never empty when the loop is entered. The false arm is a defensive guard against an impossible empty-feeder state. | +| 1601 | `if not src_st.is_port:` | `->L1599` | | +| 1732 | `if anchor_feeders:` | `->L1735` | | +| 1754 | `if port_off is not None:` | `->L1752` | **defensive** -- _compute_base_offsets runs before junction propagation and creates an offset for every station-line pair. A divergence exit port and its junction carry the same connector lines, so this lookup always succeeds; the missing-offset arm protects an incomplete synthetic context. | +| 1781 | `if port_st is None:` | `->L1782` | | +| 1856 | `if not src.is_port:` | `->L1857` | | +| 2013 | `if not src.is_port:` | `->L2014` | | +| 2040 | `if paired_off is not None:` | `->L2038` | **defensive** -- _compute_base_offsets sets ctx.offsets[(sid, lid)] for every station-line pair before _propagate_lr_rl_exit_to_entry runs. Exit ports are stations. The for-loop at L791 iterates graph.station_lines(port_id) which equals graph.station_lines(exit_port_id) (enforced by the exit_lines != entry_lines guard at L788). For each lid, ctx.offsets.get((exit_port_id, lid)) is therefore never None. The loop-back arc (793,791) for the paired_off-is-None case is structurally unreachable. | +| 2046 | `if not tgt_st.is_port:` | `->L2044` | | +| 2094 | `if set(inherited) != set(graph.station_lines(port_id)):` | `->L2095` | **defensive** -- _inherit_level_convergence_entry_offsets skips a convergence entry port when the lines it inherits from its immediate feeders do not cover every line the port carries. A convergence entry's lines are, by construction, exactly the union of its inbound edges' lines, and each inbound edge supplies that line's feeder offset, so the inherited set always equals the port's line set and the mismatch arm is never taken. Defensive against a port line with no inbound edge (a malformed graph). | +| 2131 | `if entry.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2132` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam exit/entry reconciliation to horizontal (LEFT/RIGHT) entry ports, whose per-line offsets are Y like the TB exit's. A TOP/BOTTOM entry stores X-offsets, so copying across would be a category error. No corpus fixture routes a TB LEFT/RIGHT exit directly into a TOP/BOTTOM entry at the same Y, so the skip arm is never taken; defensive against that cross-axis seam. | +| 2139 | `if len(shared) < 2:` | `->L2140` | **defensive** -- In _align_flat_tb_exit_to_entry: scopes the flat-seam reconciliation to multi-line bundles, where a constant per-line offset delta means the lines share an order and only the bundle anchoring differs (the auto-folded serpentine case in #1198). A single shared line carries no bundle order to preserve and is left to the single-line corridor passes; no corpus fixture reaches the pass with fewer than two shared lines, so the skip arm is never taken. | +| 2228 | `if edge.line_id not in lines:` | `->L2229` | | +| 2285 | `for edge in graph.edges_from(port_id):` | `->L2294` | | +| 2289 | `if tgt.is_port:` | `->L2290` | | +| 2294 | `if target_id is None:` | `->L2295` | | +| 2379 | `if not sec_stations:` | `->L2380` | **defensive** -- The parser calls _remove_empty_sections() (resolve.py:26) which deletes any section whose station_ids list is empty before port creation. Ports are only added to station_ids during _create_port_stations() (resolve.py:527), which runs AFTER _remove_empty_sections(). Therefore every section in graph.sections at layout time has at least one non-port station; sec_stations is never empty. | +| 2424 | `if station.section_id is not None:` | `->L2416` | | +| 2433 | `if port.section_id is None:` | `->L2434` | | +| 2446 | `if section is None:` | `->L2447` | | +| 2472 | `if port_off is not None:` | `->L2470` | | +| 2511 | `if tgt_port.side not in (PortSide.LEFT, PortSide.RIGHT):` | `->L2512` | | +| 2513 | `if tgt_port.section_id in ctx.tb_sections:` | `->L2514` | | +| 2518 | `if not _stores_reflected(ctx, tgt_port.section_id) and reversed_seam:` | `->L2519` | | +| 2521 | `if off is not None:` | `->L2507` | | +| 2541 | `if not any(` | `->L2544` | **defensive** -- The L920 check returns None when offsets are EXACTLY equal to expected (exact float ==). The L926 check returns None when differences are less than _OFFSET_EQ_TOLERANCE (0.001). Since all offsets are integer multiples of OFFSET_STEP (3.0px), any non-zero difference is exactly 3.0 or more, which is >> 0.001. So L920 catches exact matches and L926 can never catch a case L920 missed; the near-equal window (0,0.001) is unreachable with 3.0px discrete steps. | +| 2559 | `if len(seed_lines) < 2:` | `->L2560` | | +| 2565 | `if not fixed_here or not movable:` | `->L2566` | | +| 2588 | `if not any(` | `->L2591` | | +| 2680 | `if not changed_lids:` | `->L2681` | | +| 2699 | `if pending is None:` | `->L2700` | | +| 2828 | `if max_steps <= 0:` | `->L2829` | **defensive** -- max_steps = n_sec_stations * len(graph.lines). The BFS visits each (station_id, line_id) pair at most once (the visited set at L1017 prevents revisits). The total distinct pairs is bounded by n_sec_stations * len(graph.lines) = max_steps. Since max_steps decrements by 1 per loop iteration and the loop exits when the queue is empty (naturally after at most max_steps unique visits), the condition max_steps <= 0 is never True; the while-loop guard already prevents the body from executing when the queue is empty. | +| 2842 | `if sec_a is None and id_a in graph.ports:` | `->L2843` | **defensive** -- The true arm requires sec_a is None AND id_a in graph.ports simultaneously. Junction stations (section_id=None) are added only via graph.add_junction() which calls graph.add_station() but NOT graph.add_port(). graph.add_port() (model.py:483) requires a Port object with a non-None section_id (Port.section_id is typed str, not Optional[str], per model.py:218). Therefore no station with section_id=None can ever be in graph.ports; the conjunction sec_a is None AND id_a in graph.ports is unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2844 | `if sec_b is None and id_b in graph.ports:` | `->L2845` | **defensive** -- Same argument as L1084: id_b in graph.ports requires the station to have been registered via graph.add_port(), which always supplies a non-None section_id for the created station. A station with section_id=None (sec_b is None) is a junction created by add_junction(), which never calls add_port(). The precondition sec_b is None AND id_b in graph.ports is therefore unsatisfiable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 2879 | `if abs(delta) <= COORD_TOLERANCE_FINE:` | `->L2880` | | +| 2898 | `if not sides_a or not sides_b or 0 in sides_a or 0 in sides_b:` | `->L2899` | | +| 3003 | `if (tgt_id, lid) not in ctx.offsets:` | `->L3004` | **defensive** -- The True branch (missing entry-port offset -> ok=False) is unreachable because phase 7 (_compute_entry_port_offsets) runs before this function (phase 8a) and assigns an offset for every (entry_port_id, line_id) pair in the graph. By the time _align_junction_to_entry_port runs, ctx.offsets is populated for all entry ports, so the guard never fires. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 3027 | `if src_port and not src_port.is_entry:` | `->L3034` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its else arm (->1203) is additionally defensive: the sole feeder of a >=2-line fan-out junction is its exit port, a non-entry port. | +| 3030 | `elif feeding_exit != edge.source:` | `->L3031` | **defensive** -- This arm (single_exit=False due to multiple distinct exit ports feeding one junction) requires one junction to receive edges from two different exit ports. But _rewrite_edges_with_junctions in resolve.py creates exactly one junction per exit port fan-out, wired exclusively from that exit port's edges. A junction always has a single upstream exit port; the elif is structurally unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 3039 | `if single_exit and feeding_exit is not None:` | `->L2979` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its False arm (->1147) is additionally defensive: a >=2-line junction reaching this body is always a single-exit-port-fed fan-out junction (merge junctions carry one line and are skipped by len(j_lines)<2). | +| 3046 | `if exit_lines == set(j_lines) and shares_lanes:` | `->L2979` | | +| 3048 | `if abs(exit_st.y - j_st.y) <= _SAME_Y_TOLERANCE:` | `->L2979` | **defensive** -- Reaches the realignment body of _align_junction_to_entry_port only via a TB-reversed two-line bundle fanning into a junction (the #704 boundary fix is in, so this body is now provably reachable). The junction_entry_reversed_fold fixture now ships that topology; with the bundle order carried concentrically through the reversal corners the junction offsets already match their entry ports, so the realignment body short-circuits before its offset-writing arms and they stay un-exercised corpus-wide. Defensive. Its Y-differs arm (->1147) is additionally defensive: only a BOTTOM-exit junction is offset in Y from its exit, but such a junction sits below the consumer row and never meets the body's all-entries-within-tolerance precondition. | +| 3117 | `for distance in range(1, slots + 1):` | `->L3121` | | +| 3157 | `if free is not None:` | `->L3146` | | +| 3228 | `if pred is None:` | `->L3229` | | +| 3324 | `if target_col is None:` | `->L3325` | **defensive** -- A registered LEFT entry port always has an owning section with a grid column after placement. The missing-target-column return protects a malformed or partially laid-out graph. | +| 3333 | `if source_col is None:` | `->L3334` | **defensive** -- _convergence_feeders receives resolved sources feeding a registered LEFT entry port. Each source is a sectioned port or a junction resolvable through one, so the missing-column arm protects an incomplete graph. | +| 3643 | `for _ in range(max_iterations):` | `->L-3589` | **defensive** -- The iteration budget of _reconcile_horizontal_offsets. Its exhausted-without-break arm needs a corpus fixture whose offsets never settle within ten sweeps; every fixture reaches a fixed point and breaks out early, so the bound is a non-termination backstop rather than a reachable path. | +| 3728 | `if src_n <= tgt_n:` | `->L3731` | | +| 3760 | `if not a.section_id or a.section_id != b.section_id:` | `->L3761` | | +| 3842 | `if ctx.topology is None:` | `->L3843` | | +| 3866 | `if key not in ctx.offsets:` | `->L3867` | | +| 3915 | `len(levels) != len(continuing)` | `->L3918` | | +| 3978 | `if line_id not in assignments:` | `->L3979` | | +| 3983 | `and abs(owned - assignments[line_id]) > _OFFSET_EQ_TOLERANCE` | `->L3985` | | +| 4005 | `for _iteration in range(len(ctx.graph.sections) + 1):` | `->L4030` | | +| 4016 | `if line_id not in assignments:` | `->L4017` | | +| 4023 | `if set(frames).difference(next_frames):` | `->L4024` | **defensive** -- This fixed-point transaction rollback handles an entry frame accepted in one iteration whose owner disappears in a later iteration. Valid settled graphs converge monotonically; only deliberately transient planner state reaches this arm. test_linear_entry_frame_settlement_restores_offsets_if_owner_disappears exercises the rollback through controlled planner output. | +| 4058 | `if any(` | `->L4062` | **defensive** -- This post-acceptance marker-cache guard rejects a continuing cohort whose inherited offsets are not one contiguous step sequence. _linear_entry_frame only accepts and materializes contiguous inherited levels, so authored topology cannot reach this reject arm. It protects corrupted or hand-built state. | +| 4064 | `if local_offset is None or not (` | `->L4070` | **defensive** -- This post-acceptance marker-cache guard requires the sole local line to occupy exactly the adjacent lane above or below the continuing cohort. The accepted frame allocator always creates one such adjacent assignment. The missing or nonadjacent arm protects corrupted or incomplete offset maps. | +| 4089 | `if abs(actual - expected) > _OFFSET_EQ_TOLERANCE:` | `->L4090` | | +| 4100 | `if gap is not None:` | `->L4101` | | +| 4131 | `if any(` | `->L4137` | | +| 4155 | `if actual is None or abs(actual - assignment.offset) > _OFFSET_EQ_TOLERANCE:` | `->L4156` | | +| 4337 | `if dag is not None:` | `->L4345` | | ## `orientation.py` @@ -1169,7 +1170,7 @@ Gates with an un-exercised arm: ## `planning.py` -18/37 gates fully exercised. +20/40 gates fully exercised. Gates with an un-exercised arm: @@ -1177,23 +1178,24 @@ Gates with an un-exercised arm: | ---: | --- | --- | --- | | 97 | `if changed:` | `->L98` | | | 99 | `if not replacements:` | `->L101` | | -| 124 | `elif abs(first[1] - second[1]) <= COORD_TOLERANCE:` | `->L127` | | -| 130 | `if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:` | `->L132` | | -| 133 | `for index, point in enumerate(points):` | `->L134`, `->L139` | | -| 134 | `if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:` | `->L135`, `->L136` | | -| 172 | `if allocated.curve_radii is None or len(allocated.curve_radii) != len(` | `->L175` | | -| 193 | `plan_offset is None` | `->L198` | | -| 194 | `or plan_base is None` | `->L198` | | -| 204 | `offset is None` | `->L209` | | -| 205 | `or base is None` | `->L209` | | -| 207 | `or i + 2 >= len(allocated_points)` | `->L209` | | -| 217 | `if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:` | `->L218` | | -| 301 | `if settled is None or rank is None:` | `->L304` | | -| 304 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L305`, `->L308` | | -| 309 | `if membership is None:` | `->L310`, `->L311` | | -| 312 | `if corner_offsets is None:` | `->L313`, `->L316` | | -| 394 | `if station_offsets is not None:` | `->L397` | | -| 423 | `if scaffold is None:` | `->L424` | | +| 128 | `if lane is None or port is None or not port.is_entry:` | `->L129` | | +| 148 | `elif abs(first[1] - second[1]) <= COORD_TOLERANCE:` | `->L151` | | +| 154 | `if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:` | `->L156` | | +| 157 | `for index, point in enumerate(points):` | `->L158`, `->L163` | | +| 158 | `if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:` | `->L159`, `->L160` | | +| 196 | `if allocated.curve_radii is None or len(allocated.curve_radii) != len(` | `->L199` | | +| 217 | `plan_offset is None` | `->L222` | | +| 218 | `or plan_base is None` | `->L222` | | +| 228 | `offset is None` | `->L233` | | +| 229 | `or base is None` | `->L233` | | +| 231 | `or i + 2 >= len(allocated_points)` | `->L233` | | +| 241 | `if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:` | `->L242` | | +| 334 | `if settled is None or rank is None:` | `->L337` | | +| 337 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L338`, `->L341` | | +| 342 | `if membership is None:` | `->L343`, `->L344` | | +| 345 | `if corner_offsets is None:` | `->L346`, `->L349` | | +| 427 | `if station_offsets is not None:` | `->L430` | | +| 456 | `if scaffold is None:` | `->L457` | | ## `postprocess.py` @@ -1237,7 +1239,7 @@ Gates with an un-exercised arm: ## `reserved_bands.py` -19/31 gates fully exercised. +20/31 gates fully exercised. Gates with an un-exercised arm: @@ -1246,7 +1248,6 @@ Gates with an un-exercised arm: | 63 | `if self.hi < self.lo - COORD_TOLERANCE:` | `->L64` | **defensive** -- The invariant the router relies on: a band handed to _center_inter_row_channel or centre_inter_column_channel always holds a channel, so the narrow-gap fallback cannot be reached for a claimed corridor. build_reserved_corridors filters an empty intersection out before constructing a band, so the raise guards direct construction only. | | 65 | `if self.allocation is not None and not math.isfinite(self.allocation):` | `->L66` | **defensive** -- Published allocations originate from finite observed route coordinates plus finite reservation translations. A non-finite value can only reach ReservedBand through malformed direct construction; the guard keeps invalid coordinates out of planner seating. | | 204 | `if boundary is None:` | `->L205` | **defensive** -- Optional-boundary convenience for callers carrying an unresolved grid index (_left_exit_wrap_over_top_y takes tgt_row: int \| None). Such a caller returns before it needs a band -- with no target row there is no gap above it to measure, so the wrap is rejected first -- leaving this arm a type-level accommodation no topology reaches. | -| 309 | `if lower > upper + COORD_TOLERANCE:` | `->L310` | | | 354 | `if seat is None:` | `->L355` | | | 411 | `if not isinstance(` | `->L414` | | | 420 | `if content_band is not None:` | `->L422` | | From 00032c637f5326c17f118502794955198b5acb19 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:07:07 +0100 Subject: [PATCH 143/158] fix(reservations): state no realisation where no box bounds the corridor A gap corridor re-measured after the geometry moved out from under its claim can find its run beside no box at all. The measurement raises to say the region does not describe the run there, which every region search already reads as such; the re-measure now reads it the same way and publishes nothing, rather than letting the signal escape as an error. Co-Authored-By: Claude Fable 5 (cherry picked from commit 4405623d7415c66917ea3f3571766036c1502b65) --- src/nf_metro/layout/route_reservations.py | 70 ++++++++++++----------- tests/test_route_reservations.py | 41 ++++++++++++- 2 files changed, 78 insertions(+), 33 deletions(-) diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index f6cb75513..c1171bf96 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -2769,37 +2769,40 @@ def _realise_one( occupied_start = projected.occupied_start occupied_end = projected.occupied_end landing_section_ids = frozenset(reservation.landing_section_ids) - if isinstance(reservation.region, RowGapRegion): - measurement = _row_region_measurement( - graph, - reservation.region, - reservation.measurement_scope, - reservation.span, - longitudinal_start, - longitudinal_end, - landing_section_ids, - ) - elif isinstance(reservation.region, ColumnGapRegion): - measurement = _column_region_measurement( - graph, - reservation.region, - reservation.measurement_scope, - reservation.span, - longitudinal_start, - longitudinal_end, - landing_section_ids, - ) - else: - assert canvas_width is not None and canvas_height is not None - measurement = _canvas_region_measurement( - graph, - reservation.region, - longitudinal_start, - longitudinal_end, - canvas_width, - canvas_height, - header_keepouts, - ) + try: + if isinstance(reservation.region, RowGapRegion): + measurement = _row_region_measurement( + graph, + reservation.region, + reservation.measurement_scope, + reservation.span, + longitudinal_start, + longitudinal_end, + landing_section_ids, + ) + elif isinstance(reservation.region, ColumnGapRegion): + measurement = _column_region_measurement( + graph, + reservation.region, + reservation.measurement_scope, + reservation.span, + longitudinal_start, + longitudinal_end, + landing_section_ids, + ) + else: + assert canvas_width is not None and canvas_height is not None + measurement = _canvas_region_measurement( + graph, + reservation.region, + longitudinal_start, + longitudinal_end, + canvas_width, + canvas_height, + header_keepouts, + ) + except ValueError: + return None measurement = _launch_anchored_measurement( graph, reservation, measurement, occupied_start, occupied_end ) @@ -2860,7 +2863,10 @@ def realise_reservation( has to read live section envelopes rather than a frozen realisation. A claim observed before a settlement translation is projected through *coordinate_translations* so it measures the geometry it now describes. - Returns ``None`` for a canvas-side corridor when no canvas bounds are known. + Returns ``None`` for a canvas-side corridor when no canvas bounds are known, + and for a corridor whose region has no box beside the run on one of its + sides: a realisation states the room between two named blockers, so where + one side names none there is no realisation to state. """ return _realise_one( graph, diff --git a/tests/test_route_reservations.py b/tests/test_route_reservations.py index 5d707117a..3c9325ea1 100644 --- a/tests/test_route_reservations.py +++ b/tests/test_route_reservations.py @@ -19,7 +19,7 @@ CURVE_RADIUS, OFFSET_STEP, ) -from nf_metro.layout.geometry import cotravelling_lane_clearance +from nf_metro.layout.geometry import cotravelling_lane_clearance, shift_section from nf_metro.layout.route_plan import ( BindingKind, DemandAxis, @@ -532,6 +532,45 @@ def test_stacked_collector_reuses_three_lanes_across_twelve_claims() -> None: assert realised.capacity_slack >= -0.01 +@pytest.mark.parametrize( + ("region_kind", "path"), + ( + (RowGapRegion, TOPOLOGIES / "opposing_bypass_corridor.mmd"), + ( + ColumnGapRegion, + ROOT / "tests" / "fixtures" / "regressions" / "stacked_collector_fanin.mmd", + ), + ), + ids=("row-gap", "column-gap"), +) +def test_a_corridor_beside_no_box_realises_as_nothing(region_kind, path: Path) -> None: + """A gap corridor whose run passes no box has no realisation to state. + + A realisation is the room between two named blockers, so a boundary side + with nothing beside the run cannot furnish one. Re-measuring after the + geometry has moved out from under a claim is the case that reaches this: + the region search reads the same absence as "not this region", and the + re-measure has no region to choose. + """ + graph, _routes, plan = _observe(path) + reservation = next( + item + for item in plan.reservations + if isinstance(item.region, region_kind) + and item.measurement_scope is CorridorMeasurementScope.OBSERVED_RUN + ) + assert realise_reservation(graph, reservation) is not None + # The run travels across the boundary, so moving every box along that + # travel leaves the claim describing a stretch of bare canvas. + away = 10_000.0 + for section in graph.sections.values(): + if isinstance(reservation.region, RowGapRegion): + shift_section(graph, section, dx=away) + else: + shift_section(graph, section, dy=away) + assert realise_reservation(graph, reservation) is None + + def test_asymmetric_grid_spans_select_provenance_on_the_canonical_axes() -> None: path = ROOT / "tests" / "fixtures" / "regressions" / "stacked_collector_fanin.mmd" graph, _routes, plan = _observe(path) From 577420a4843ada425293aa433b69827f71055dcb Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:07:15 +0100 Subject: [PATCH 144/158] fix(settlement): hold open only the separations the grid orders A widening carries whole bands in grid order, so the distance it opens between two boxes is the one that runs the way their indices do. A box drawn ahead of a band it is indexed behind is carried toward its neighbour by every widening of the boundary between them, so the monotone check no longer counts that distance among the separations it compares. Co-Authored-By: Claude Fable 5 (cherry picked from commit 13be5fed3f9fe042fd506c389337db6afe4b577a) --- src/nf_metro/layout/envelope_settlement.py | 18 ++++++++++++++-- tests/test_envelope_settlement.py | 24 ++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/nf_metro/layout/envelope_settlement.py b/src/nf_metro/layout/envelope_settlement.py index 531e8c648..bb44cf41a 100644 --- a/src/nf_metro/layout/envelope_settlement.py +++ b/src/nf_metro/layout/envelope_settlement.py @@ -840,6 +840,13 @@ def _box_extents(section: Section) -> tuple[tuple[float, float], tuple[float, fl ) +def _grid_precedes( + axis: SettlementAxisGeometry, first: Section, second: Section +) -> bool: + """*first* occupies grid indices ending at or before *second*'s begin.""" + return axis.start_index(first) + axis.span(first) <= axis.start_index(second) + + def _axis_gaps( graph: MetroGraph, axis: SettlementAxisGeometry ) -> dict[tuple[str, str], float]: @@ -849,6 +856,13 @@ def _axis_gaps( translation. Boxes that do not overlap across the axis never face each other, so the distance between them is not a separation this stage owes anything to. + + Neither does a pair drawn in the opposite order to the grid indices it is + filed under. Settlement translates whole bands in grid order, so the + separation it holds open between two boxes is the one that runs the way + their indices do; a box drawn ahead of a band it is indexed behind is + carried toward its neighbour by every widening of the boundary between + them, and no amount of translation is the arrangement it wanted. """ along_index = 1 if axis.axis is SettlementAxis.ROW else 0 across_index = 1 - along_index @@ -866,9 +880,9 @@ def _axis_gaps( continue first_start, first_end = first_extents[along_index] second_start, second_end = second_extents[along_index] - if first_end <= second_start: + if first_end <= second_start and _grid_precedes(axis, first, second): gaps[first_key, second_key] = second_start - first_end - elif second_end <= first_start: + elif second_end <= first_start and _grid_precedes(axis, second, first): gaps[second_key, first_key] = first_start - second_end return gaps diff --git a/tests/test_envelope_settlement.py b/tests/test_envelope_settlement.py index eed9a84cd..87f26bf8d 100644 --- a/tests/test_envelope_settlement.py +++ b/tests/test_envelope_settlement.py @@ -1154,6 +1154,30 @@ def shift_the_wrong_way(target, section, dx=0.0, dy=0.0): assert _geometry(graph) == before +def test_a_pair_drawn_against_its_grid_order_holds_no_separation() -> None: + """The monotone claim covers the separations settlement can hold open. + + A widening carries whole bands in grid order, so it opens the distance + between two boxes only where that distance runs the way their indices do. + Where a box is drawn ahead of a band it is indexed behind, every widening + of the boundary between them closes the distance instead, and the pair has + no separation for the monotone check to compare. + """ + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_41.mmd" + graph, _plan = _observe(path) + upper, lower = graph.sections["s1"], graph.sections["s2"] + assert upper.grid_row + upper.grid_row_span <= lower.grid_row + assert ("s1", "s2") in envelope_settlement._axis_gaps( + graph, envelope_settlement.ROW_AXIS + ) + + shift_section(graph, lower, dy=-(lower.bbox_y + lower.bbox_h - upper.bbox_y) - 60.0) + assert lower.bbox_y + lower.bbox_h < upper.bbox_y + gaps = envelope_settlement._axis_gaps(graph, envelope_settlement.ROW_AXIS) + assert ("s2", "s1") not in gaps + assert ("s1", "s2") not in gaps + + @pytest.mark.parametrize("path", DEFICIT_CORPUS, ids=lambda item: item.name) def test_the_column_phase_never_narrows_a_row_corridor(path: Path) -> None: """Why the row phase needs no recheck after the columns settle. From e4d17c4ffeb5e47bb0179b6400d5c92fed2ebab8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 05:36:17 +0100 Subject: [PATCH 145/158] fix(settlement): keep the separation of boxes that share a grid index Boxes filed at one index move together under every translation, so the distance between them is held whatever settlement does and stays a separation the monotone check can compare. Only a pair drawn in the reverse of a strict grid order has no such distance to keep. Co-Authored-By: Claude Fable 5 (cherry picked from commit 623d698963fbef22ba75456dbd832215ad8639db) --- src/nf_metro/layout/envelope_settlement.py | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/nf_metro/layout/envelope_settlement.py b/src/nf_metro/layout/envelope_settlement.py index bb44cf41a..8464c7fe7 100644 --- a/src/nf_metro/layout/envelope_settlement.py +++ b/src/nf_metro/layout/envelope_settlement.py @@ -840,11 +840,11 @@ def _box_extents(section: Section) -> tuple[tuple[float, float], tuple[float, fl ) -def _grid_precedes( - axis: SettlementAxisGeometry, first: Section, second: Section +def _drawn_against_the_grid( + axis: SettlementAxisGeometry, ahead: Section, behind: Section ) -> bool: - """*first* occupies grid indices ending at or before *second*'s begin.""" - return axis.start_index(first) + axis.span(first) <= axis.start_index(second) + """*ahead* is drawn before *behind* while indexed strictly after it.""" + return axis.start_index(behind) + axis.span(behind) <= axis.start_index(ahead) def _axis_gaps( @@ -857,12 +857,12 @@ def _axis_gaps( other, so the distance between them is not a separation this stage owes anything to. - Neither does a pair drawn in the opposite order to the grid indices it is - filed under. Settlement translates whole bands in grid order, so the - separation it holds open between two boxes is the one that runs the way - their indices do; a box drawn ahead of a band it is indexed behind is - carried toward its neighbour by every widening of the boundary between - them, and no amount of translation is the arrangement it wanted. + Neither does a pair drawn in the reverse of the grid order it is filed + under. A widening carries the bands from its boundary onward and leaves + the rest, so it opens the distance between two boxes where that distance + runs the way their indices do, and closes it where it runs against them. + Boxes sharing an index move together under every translation, so their + separation is held and stays comparable. """ along_index = 1 if axis.axis is SettlementAxis.ROW else 0 across_index = 1 - along_index @@ -880,9 +880,13 @@ def _axis_gaps( continue first_start, first_end = first_extents[along_index] second_start, second_end = second_extents[along_index] - if first_end <= second_start and _grid_precedes(axis, first, second): + if first_end <= second_start and not _drawn_against_the_grid( + axis, first, second + ): gaps[first_key, second_key] = second_start - first_end - elif second_end <= first_start and _grid_precedes(axis, second, first): + elif second_end <= first_start and not _drawn_against_the_grid( + axis, second, first + ): gaps[second_key, first_key] = first_start - second_end return gaps From faa2750adeb3b81ea3b56a776effb75b8b299822 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 06:36:25 +0100 Subject: [PATCH 146/158] fix(routing): hold an unweave riser on the column its plan names The exempt-trunk unweave may not move a riser off a column any convergence plan states for that line in that gap: the closing feasibility validator holds the plan gap channel and the member stroke drawing it to one column, so the move contradicts the plan even when it is collision-free. With the riser held, the later re-band alone resolves the crossing the move was for. (cherry picked from commit bb353eaaef9d8ac38f47354089ba9d714f9ba170) --- src/nf_metro/layout/routing/normalize.py | 34 ++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 92144680b..c20fa3e2f 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -4186,6 +4186,38 @@ def _unweave_against_crossing_obstacles( return set() +def _convergence_plan_names_column( + route: RoutedPath, + before: tuple[float, float], + corner: tuple[float, float], + gap: tuple[int, int | None], + ctx: _RoutingCtx, +) -> bool: + """Whether the route's convergence plan states this channel's column. + + The closing feasibility validator holds a plan gap channel and the member + stroke drawing it to one column, so moving a riser off the column its own + plan names contradicts the plan even when the move is collision-free. + """ + if ctx.convergences is None: + return False + from nf_metro.layout.routing.convergences import ( + _plan_gap_channels, + gap_lookup_geometry, + ) + + lookup = gap_lookup_geometry(ctx.graph) + y_lo, y_hi = sorted((before[1], corner[1])) + return any( + channel.gap == gap + and route.line_id in channel.line_ids + and abs(channel.coordinate - before[0]) <= COORD_TOLERANCE + and spans_share_corridor(channel.y_lo, channel.y_hi, y_lo, y_hi) + for plan in ctx.convergences.plans + for channel in _plan_gap_channels(plan, ctx.graph, lookup) + ) + + def _unweave_exempt_trunk_riser( trunk: _HTrunk, obstacle: _HTrunk, @@ -4276,6 +4308,8 @@ def _lane_run_overlays_obstacle(candidate: float, rank: int = rank) -> bool: ) if gap is None: continue + if _convergence_plan_names_column(route, before, corner, gap, ctx): + continue for obstacle_x in (obstacle_segment.xa, obstacle_segment.xb): for candidate in (obstacle_x + clearance, obstacle_x - clearance): if ( From c05602766789f498d4d093b86f0f0f076a710610 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 06:36:26 +0100 Subject: [PATCH 147/158] test(routing): read the seed_15 locks from its rendered geometry seed_15 renders once the unweave riser keeps its plan column, so the exact-coordinate locks state the measured geometry: the junction_24 member rides the plan's 1562 column end to end, the junction_23 shared opening branches at y=604, the junction_25 landing carries no opening turn, and the junction_27 landing member reaches its merge on a straight lane run with no bypass-tail channel. (cherry picked from commit d9e6ef1199e7545a253b64c872fff2ce64cf173e) --- docs/dev/routing_gate_coverage.md | 109 +++++++++--------- .../data/routing_gate_coverage_baseline.json | 3 + tests/test_convergence_planner.py | 12 +- tests/test_final_convergence_feasibility.py | 14 +-- tests/test_member_geometry.py | 18 +-- 5 files changed, 81 insertions(+), 75 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index 4473d297e..daa160a34 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2416/3510** gates fully exercised (both/all arms hit by some fixture); **1094** gates have at least one un-exercised arm. +**2415/3512** gates fully exercised (both/all arms hit by some fixture); **1097** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -137,7 +137,7 @@ Gates with an un-exercised arm: ## `convergences.py` -368/636 gates fully exercised. +367/636 gates fully exercised. Gates with an un-exercised arm: @@ -363,6 +363,7 @@ Gates with an un-exercised arm: | 6302 | `if (` | `->L6329` | | | 6349 | `if conflict is not None:` | `->L6350` | | | 6359 | `if requirements:` | `->L6360`, `->L6362` | | +| 6397 | `if shared_carrier and separation > COORD_TOLERANCE:` | `->L6398` | | | 6404 | `if (` | `->L6415` | | | 6415 | `if _channel_inside_gap(graph, channel) and _channel_inside_gap(` | `->L6418`, `->L6419` | | | 6419 | `if any(` | `->L6424`, `->L6425` | | @@ -865,7 +866,7 @@ Gates with an un-exercised arm: ## `normalize.py` -428/598 gates fully exercised. +428/600 gates fully exercised. Gates with an un-exercised arm: @@ -991,56 +992,58 @@ Gates with an un-exercised arm: | 4105 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4106` | | | 4109 | `elif above_ok:` | `->L4112` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | | 4112 | `if reconcile_owned_corridor:` | `->L4113`, `->L4116` | | -| 4213 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4233` | | -| 4215 | `if target_y is None:` | `->L4216` | | -| 4218 | `if (` | `->L4229` | | -| 4237 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4239` | | -| 4250 | `if obstacle.route.line_id == route.line_id:` | `->L4251` | | -| 4252 | `if rank == trunk.idx:` | `->L4257` | | -| 4253 | `if rank < 2:` | `->L4254` | | -| 4257 | `if rank + 1 >= len(points):` | `->L4258`, `->L4259` | | -| 4260 | `if abs(far[1] - near[1]) > COORD_TOLERANCE:` | `->L4261` | | -| 4387 | `if band is None:` | `->L4388` | | -| 4418 | `and span[0] < crossed[1]` | `->L4419` | | -| 4419 | `and crossed[0] < span[1]` | `->L4410`, `->L4421` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4529 | `if i in relocated:` | `->L4530` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4543 | `if not primary and fixed_obstacles:` | `->L4544` | | -| 4549 | `not secondary_may_yield_at_shared_source` | `->L4550`, `->L4553` | | -| 4550 | `or not lane_sources & fixed_sources` | `->L4551`, `->L4553` | | -| 4551 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4553`, `->L4554` | | -| 4570 | `if any(` | `->L4574` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4651 | `if sg[0].sign_x != t.sign_x:` | `->L4652` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4687 | `and base_in is not None` | `->L4701` | | -| 4688 | `and base_out is not None` | `->L4701` | | -| 4704 | `if rp.curve_radii is None:` | `->L4705` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4716 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4718` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4718 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4661` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4773 | `if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:` | `->L4775` | | -| 4783 | `if hi - lo <= 2 * COORD_TOLERANCE:` | `->L4784`, `->L4786` | | -| 4796 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4799`, `->L4800` | | -| 4800 | `if leg_is_plan_stated(mover):` | `->L4801`, `->L4802` | | -| 4803 | `for delta in (step, -step):` | `->L4770`, `->L4804` | | -| 4805 | `if all(` | `->L4803`, `->L4808` | | -| 4835 | `for upstream in routes:` | `->L-4818`, `->L4836` | | -| 4837 | `upstream.edge.target != mover.edge.source` | `->L4838`, `->L4841` | | -| 4838 | `or upstream.line_id != mover.line_id` | `->L4839`, `->L4841` | | -| 4839 | `or len(upstream.points) < 2` | `->L4841`, `->L4842` | | -| 4844 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4845`, `->L4847` | | -| 4845 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4847`, `->L4848` | | -| 4849 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4850`, `->L4851` | | -| 4909 | `if down is None or len(up.points) < 2:` | `->L4910` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4963 | `if len(targets) != 1:` | `->L4964` | | -| 4973 | `if col is None:` | `->L4974` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 5014 | `if not 0 <= far < len(pts):` | `->L5015` | | -| 5017 | `if abs(dx) > COORD_TOLERANCE:` | `->L5011` | | -| 5019 | `if not votes:` | `->L5020` | | -| 5126 | `if rep_x[a] != rep_x[b]:` | `->L5128` | | -| 5156 | `if rp.curve_radii is None:` | `->L5157` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5159 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5160` | | -| 5183 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5133` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5213 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5215` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5268 | `elif right_ok:` | `->L5271` | | -| 5317 | `if s.bbox_w <= 0:` | `->L5318` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 4202 | `if ctx.convergences is None:` | `->L4203` | | +| 4245 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4265` | | +| 4247 | `if target_y is None:` | `->L4248` | | +| 4250 | `if (` | `->L4261` | | +| 4269 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4271` | | +| 4282 | `if obstacle.route.line_id == route.line_id:` | `->L4283` | | +| 4284 | `if rank == trunk.idx:` | `->L4289` | | +| 4285 | `if rank < 2:` | `->L4286` | | +| 4289 | `if rank + 1 >= len(points):` | `->L4290`, `->L4291` | | +| 4292 | `if abs(far[1] - near[1]) > COORD_TOLERANCE:` | `->L4293` | | +| 4421 | `if band is None:` | `->L4422` | | +| 4427 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4431` | | +| 4452 | `and span[0] < crossed[1]` | `->L4453` | | +| 4453 | `and crossed[0] < span[1]` | `->L4444`, `->L4455` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4563 | `if i in relocated:` | `->L4564` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4577 | `if not primary and fixed_obstacles:` | `->L4578` | | +| 4583 | `not secondary_may_yield_at_shared_source` | `->L4584`, `->L4587` | | +| 4584 | `or not lane_sources & fixed_sources` | `->L4585`, `->L4587` | | +| 4585 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4587`, `->L4588` | | +| 4604 | `if any(` | `->L4608` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4685 | `if sg[0].sign_x != t.sign_x:` | `->L4686` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4721 | `and base_in is not None` | `->L4735` | | +| 4722 | `and base_out is not None` | `->L4735` | | +| 4738 | `if rp.curve_radii is None:` | `->L4739` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4750 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4752` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4752 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4695` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4807 | `if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:` | `->L4809` | | +| 4817 | `if hi - lo <= 2 * COORD_TOLERANCE:` | `->L4818`, `->L4820` | | +| 4830 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4833`, `->L4834` | | +| 4834 | `if leg_is_plan_stated(mover):` | `->L4835`, `->L4836` | | +| 4837 | `for delta in (step, -step):` | `->L4804`, `->L4838` | | +| 4839 | `if all(` | `->L4837`, `->L4842` | | +| 4869 | `for upstream in routes:` | `->L-4852`, `->L4870` | | +| 4871 | `upstream.edge.target != mover.edge.source` | `->L4872`, `->L4875` | | +| 4872 | `or upstream.line_id != mover.line_id` | `->L4873`, `->L4875` | | +| 4873 | `or len(upstream.points) < 2` | `->L4875`, `->L4876` | | +| 4878 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4879`, `->L4881` | | +| 4879 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4881`, `->L4882` | | +| 4883 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4884`, `->L4885` | | +| 4943 | `if down is None or len(up.points) < 2:` | `->L4944` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 4997 | `if len(targets) != 1:` | `->L4998` | | +| 5007 | `if col is None:` | `->L5008` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 5048 | `if not 0 <= far < len(pts):` | `->L5049` | | +| 5051 | `if abs(dx) > COORD_TOLERANCE:` | `->L5045` | | +| 5053 | `if not votes:` | `->L5054` | | +| 5160 | `if rep_x[a] != rep_x[b]:` | `->L5162` | | +| 5190 | `if rp.curve_radii is None:` | `->L5191` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5193 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5194` | | +| 5217 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5167` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5247 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5249` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5302 | `elif right_ok:` | `->L5305` | | +| 5351 | `if s.bbox_w <= 0:` | `->L5352` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | ## `offsets.py` diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index a33e4424e..4fa544519 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -312,6 +312,7 @@ "convergences.py::if runway < curve_radius - COORD_TOLERANCE:::#2", "convergences.py::if same_line and first_direction is not second_direction:::#1", "convergences.py::if section is None:::#1", + "convergences.py::if shared_carrier and separation > COORD_TOLERANCE:::#1", "convergences.py::if source is not None and abs(source.x - column) > COORD_TOLERANCE:::#1", "convergences.py::if tail is None:::#2", "convergences.py::if tail is not None and _points_coincide(tail[0], landing.join_point):::#1", @@ -781,6 +782,7 @@ "normalize.py::if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:::#1", "normalize.py::if abs(overlap) > COORD_TOLERANCE:::#1", "normalize.py::if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:::#1", + "normalize.py::if abs(shift) <= COORD_TOLERANCE or any(::#1", "normalize.py::if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(up.x - descent.x) > radius:::#1", "normalize.py::if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:::#1", @@ -810,6 +812,7 @@ "normalize.py::if col is None:::#1", "normalize.py::if cross_below is not None and cross_above is not None:::#1", "normalize.py::if ctx.convergences is None:::#1", + "normalize.py::if ctx.convergences is None:::#2", "normalize.py::if ctx.exit_turns is None:::#1", "normalize.py::if ctx.exit_turns is None:::#2", "normalize.py::if ctx.validate_final_route_frames:::#1", diff --git a/tests/test_convergence_planner.py b/tests/test_convergence_planner.py index e635d7683..9731658f9 100644 --- a/tests/test_convergence_planner.py +++ b/tests/test_convergence_planner.py @@ -415,12 +415,12 @@ def test_seed_15_final_member_plan_owns_the_reconciled_row_gap_route() -> None: ) assert route.points == [ - (1612.0, 544.0), - (1542.0, 544.0), - (1542.0, 398.0), - (1282.0, 398.0), - (1282.0, 544.0), - (1246.0, 544.0), + (1612.0, 504.0), + (1562.0, 504.0), + (1562.0, 398.0), + (1266.0, 398.0), + (1266.0, 504.0), + (1246.0, 504.0), ] assert tuple(route.points) == member.points assert member.owned_segment_ranks == (1, 3) diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index 94742b367..11dddf4e6 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -307,7 +307,7 @@ def test_seed_15_settles_emitted_bypass_tail_without_column_growth() -> None: for requirement in observation.plan.boundary_clearance_requirements if requirement.description.endswith(" runway") } == {3} - assert route.points[-2][0] == 800.0 + assert route.points[-2][0] == 776.0 def test_seed_15_plan_channels_include_emitted_bypass_tail_lane() -> None: @@ -335,11 +335,11 @@ def test_seed_15_plan_channels_include_emitted_bypass_tail_lane() -> None: == ResolvedEdge("__junction_27", "__merge_11", "l0") ) - assert any( - channel.member_geometry_owned is False - and channel.coordinate == route.points[-3][0] - and (channel.y_lo, channel.y_hi) - == tuple(sorted((route.points[-3][1], route.points[-2][1]))) + # The landing member reaches its merge on a straight lane run, so the + # plan states no bypass-tail vertical for it and no channel may claim one. + assert route.points == [(806.0, 508.0), (770.0, 508.0)] + assert not any( + channel.member_geometry_owned and "l0" in channel.line_ids for channel in channels ) @@ -363,7 +363,7 @@ def test_seed_15_shared_opening_short_tail_is_a_fixed_member_channel() -> None: if channel.segment_rank == len(member.exit_shared_opening_points) ) assert (tail.gap_lo_col, tail.row) == (5, 2) - assert (tail.start, tail.end) == ((1550.0, 644.0), (1550.0, 504.0)) + assert (tail.start, tail.end) == ((1550.0, 604.0), (1550.0, 504.0)) def test_shared_source_convergences_fuse_one_opening_carrier() -> None: diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 770ab2927..5c5db8278 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -242,13 +242,13 @@ def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: (1600.5, 338.0), (1600.5, 186.0), (1748.0, 186.0), - (1748.0, 644.0), + (1748.0, 604.0), ) assert {plan.exit_shared_opening_points for plan in plans} == {opening} assert {plan.points[: len(opening)] for plan in plans} == {opening} assert {plan.edge.target: plan.points[len(opening) :] for plan in plans} == { - "s5__entry_right_16": ((1550.0, 644.0), (1550.0, 504.0), (1478.0, 504.0)), - "s6__entry_right_14": ((1286.0, 644.0), (1286.0, 540.0), (1246.0, 540.0)), + "s5__entry_right_16": ((1550.0, 604.0), (1550.0, 504.0), (1478.0, 504.0)), + "s6__entry_right_14": ((1270.0, 604.0), (1270.0, 500.0), (1246.0, 500.0)), } for plan in plans: assert plan.consumed_reservation_ids == () @@ -281,10 +281,10 @@ def test_seed_15_settles_member_clear_of_shared_opening_and_convergence() -> Non if landing.edge == ResolvedEdge("__junction_25", "__merge_9", "l0") ) - assert movable.gap_channels[0].start[0] == 1542.0 + assert movable.gap_channels[0].start[0] == 1562.0 assert fixed.gap_channels[-1].start[0] == 1550.0 assert landing.minimum_runway == 52.0 - assert landing.opening_turn_coordinate - landing.join_point[0] == 52.0 + assert landing.opening_turn_coordinate is None @pytest.mark.parametrize("mirror", (1.0, -1.0)) @@ -385,7 +385,7 @@ def crossings(observation) -> set[tuple[float, float]]: station_offsets=compute_station_offsets(graph), allow_convergence_clearance_requirements=True, ) - assert crossings(disabled) == {(1280.0, 338.0), (1600.5, 382.0)} + assert crossings(disabled) == {(1280.0, 338.0), (1600.5, 398.0)} def test_seed_15_shared_opening_is_line_name_independent() -> None: @@ -474,9 +474,9 @@ def test_seed_15_wraps_u_bypass_above_crossing_merge_trunk() -> None: (1488.0, 128.0), (1536.0, 128.0), (1536.0, 40.0), - (627.0, 40.0), - (627.0, 540.0), - (580.0, 540.0), + (614.0, 40.0), + (614.0, 500.0), + (580.0, 500.0), ) assert [(slot.gap_lo_col, slot.row, slot.direction) for slot in plan.gap_slots] == [ (1, 2, Direction.D), From 90b8681f1527c566091e53567be843d4f951bd50 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 06:41:58 +0100 Subject: [PATCH 148/158] test(routing): re-derive the trunk and entry-bundle locks from the settled geometry The separated seed_41 trunk rides the corridor six pixels further west, the seed_77 merge trunk enters its corridor one slot deeper, and the s9 entry allocation carries l3 on the deeper band after the crossing-minimal trunk ordering - all re-measured from observe_route_edges on renders that passed the corridor and pass-through guards. --- tests/test_fused_cotravelling_lines_invariant.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index a00f65d2e..d5f303f1d 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -372,7 +372,7 @@ def test_seed_77_merge_trunk_stays_in_its_inter_row_corridor() -> None: == ("__junction_42", "__merge_12", "l4") ) - assert trunk.points[2] == pytest.approx((2718.0, 348.0)) + assert trunk.points[2] == pytest.approx((2706.0, 356.0)) def test_seed_41_separated_trunk_lane_stays_out_of_the_section_boxes() -> None: @@ -391,7 +391,7 @@ def test_seed_41_separated_trunk_lane_stays_out_of_the_section_boxes() -> None: == ("__junction_32", "__merge_17", "l3") ) - assert trunk.points[2] == pytest.approx((712.0, 546.0)) + assert trunk.points[2] == pytest.approx((706.0, 546.0)) assert not routes_through_unrelated_sections(graph, routes=[trunk], offsets=offsets) @@ -411,7 +411,7 @@ def test_seed_77_settled_entry_bundle_keeps_allocation_lanes() -> None: == ("__junction_41", "s9__entry_right_25", "l3") ) - assert l1.points[-3][0] - l3.points[-3][0] == graph_offset_step(_graph) + assert l3.points[-3][0] - l1.points[-3][0] == graph_offset_step(_graph) def test_seed_77_turning_member_stays_off_straight_continuation_lane() -> None: From 53fe37523a100ae73ae6839ca835e1c4711a3955 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 07:20:13 +0100 Subject: [PATCH 149/158] fix(routing): stack frame-mates in their planned lane order Two trunk-band slots whose members share one planned exit turn are lanes of one frame the plan already nested, so the band packer may compress them onto the stack's pitch but not swap them. A swap seated the frame's reference on the band's content-side lane, and re-imposing the planned offsets on that anchor drew the top lane through clearance the corridor's reservation had spent. (cherry picked from commit 407fc28962b77785d7c5477cea765c54e5ae7c85) --- src/nf_metro/layout/routing/normalize.py | 30 +++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index c20fa3e2f..0b31e1bef 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -3729,7 +3729,35 @@ def _key(perm: list[list[_HTrunk]]) -> tuple[float, ...]: *(h_rank[id(sg)] for sg in perm), ) - best_ttb = min((list(p) for p in itertools.permutations(h_ttb)), key=_key) + # Two slots whose trunks share one planned exit turn are lanes of one + # frame the plan already nested, so the stack may pack them but not swap + # them: their incoming lane order is the plan's own. + slot_plans = { + id(sg): { + t.route.exit_turn_plan_id + for t in sg + if t.route.exit_turn_plan_id is not None + } + for sg in slot_groups + } + slot_min_y = {id(sg): min(t.y for t in sg) for sg in slot_groups} + + def keeps_planned_order(perm: tuple[list[_HTrunk], ...]) -> bool: + for first_rank, first_slot in enumerate(perm): + for second_slot in perm[first_rank + 1 :]: + if not slot_plans[id(first_slot)] & slot_plans[id(second_slot)]: + continue + if ( + slot_min_y[id(first_slot)] + > slot_min_y[id(second_slot)] + COORD_TOLERANCE + ): + return False + return True + + permutations = [ + list(p) for p in itertools.permutations(h_ttb) if keeps_planned_order(p) + ] or [list(p) for p in itertools.permutations(h_ttb)] + best_ttb = min(permutations, key=_key) order = list(reversed(best_ttb)) if dips else best_ttb return order, *_packed_track_map(order, span_of) From c83dc2c44bb198de78592bd758833764e9159242 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 07:20:17 +0100 Subject: [PATCH 150/158] test(routing): lock the reserved corridor bands over the seed_15 render A typed geometry warning from a rendered seed is a drawn corridor taking clearance a reservation spent; the render must emit none. Gate coverage follows the band packer's planned-order arms. (cherry picked from commit cdcf804f45bad92a578d318ced1945e39628404d) --- docs/dev/routing_gate_coverage.md | 152 +++++++++--------- .../data/routing_gate_coverage_baseline.json | 6 +- tests/test_plan_owned_channel_agreement.py | 20 +++ 3 files changed, 99 insertions(+), 79 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index daa160a34..b7a8bc6a7 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2415/3512** gates fully exercised (both/all arms hit by some fixture); **1097** gates have at least one un-exercised arm. +**2419/3516** gates fully exercised (both/all arms hit by some fixture); **1097** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -866,7 +866,7 @@ Gates with an un-exercised arm: ## `normalize.py` -428/600 gates fully exercised. +433/604 gates fully exercised. Gates with an un-exercised arm: @@ -971,79 +971,78 @@ Gates with an un-exercised arm: | 3562 | `if feats is None:` | `->L3563` | **defensive** -- Unused default-arg branch: all three callers of _band_order_crossings pass feats explicitly, so the feats-is-None compute-it arm is never taken. | | 3699 | `if (` | `->L3703` | | | 3711 | `if abs(first_x - second_x) <= COORD_TOLERANCE:` | `->L3712` | | -| 3759 | `if len(trunks) < 2:` | `->L3760`, `->L3761` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | -| 3763 | `for grp in groups:` | `->L3764`, `->L3782` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | -| 3764 | `if len({id(t.route) for t in grp}) < 2:` | `->L3765`, `->L3766` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | -| 3766 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3767`, `->L3768` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | -| 3768 | `for sign in (1, -1):` | `->L3763`, `->L3769` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | -| 3771 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3772`, `->L3773` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | -| 3780 | `if best < cur:` | `->L3768`, `->L3781` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | -| 3850 | `if (` | `->L3855` | | -| 3912 | `band is not None` | `->L3917` | | -| 3913 | `and band.boundary is None` | `->L3914` | | -| 3914 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3916`, `->L3917` | | -| 4010 | `if band is not None:` | `->L4015` | | -| 4034 | `elif up_ok:` | `->L4037` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | -| 4039 | `if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):` | `->L4040` | | -| 4080 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4089` | | -| 4083 | `if reconcile_owned_corridor:` | `->L4089` | | -| 4090 | `if cross_below is not None and cross_above is not None:` | `->L4098` | | -| 4091 | `if reconcile_owned_corridor:` | `->L4097` | | -| 4105 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4106` | | -| 4109 | `elif above_ok:` | `->L4112` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | -| 4112 | `if reconcile_owned_corridor:` | `->L4113`, `->L4116` | | -| 4202 | `if ctx.convergences is None:` | `->L4203` | | -| 4245 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4265` | | -| 4247 | `if target_y is None:` | `->L4248` | | -| 4250 | `if (` | `->L4261` | | -| 4269 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4271` | | -| 4282 | `if obstacle.route.line_id == route.line_id:` | `->L4283` | | -| 4284 | `if rank == trunk.idx:` | `->L4289` | | -| 4285 | `if rank < 2:` | `->L4286` | | -| 4289 | `if rank + 1 >= len(points):` | `->L4290`, `->L4291` | | -| 4292 | `if abs(far[1] - near[1]) > COORD_TOLERANCE:` | `->L4293` | | -| 4421 | `if band is None:` | `->L4422` | | -| 4427 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4431` | | -| 4452 | `and span[0] < crossed[1]` | `->L4453` | | -| 4453 | `and crossed[0] < span[1]` | `->L4444`, `->L4455` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | -| 4563 | `if i in relocated:` | `->L4564` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | -| 4577 | `if not primary and fixed_obstacles:` | `->L4578` | | -| 4583 | `not secondary_may_yield_at_shared_source` | `->L4584`, `->L4587` | | -| 4584 | `or not lane_sources & fixed_sources` | `->L4585`, `->L4587` | | -| 4585 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4587`, `->L4588` | | -| 4604 | `if any(` | `->L4608` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | -| 4685 | `if sg[0].sign_x != t.sign_x:` | `->L4686` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 4721 | `and base_in is not None` | `->L4735` | | -| 4722 | `and base_out is not None` | `->L4735` | | -| 4738 | `if rp.curve_radii is None:` | `->L4739` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | -| 4750 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4752` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | -| 4752 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4695` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | -| 4807 | `if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:` | `->L4809` | | -| 4817 | `if hi - lo <= 2 * COORD_TOLERANCE:` | `->L4818`, `->L4820` | | -| 4830 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4833`, `->L4834` | | -| 4834 | `if leg_is_plan_stated(mover):` | `->L4835`, `->L4836` | | -| 4837 | `for delta in (step, -step):` | `->L4804`, `->L4838` | | -| 4839 | `if all(` | `->L4837`, `->L4842` | | -| 4869 | `for upstream in routes:` | `->L-4852`, `->L4870` | | -| 4871 | `upstream.edge.target != mover.edge.source` | `->L4872`, `->L4875` | | -| 4872 | `or upstream.line_id != mover.line_id` | `->L4873`, `->L4875` | | -| 4873 | `or len(upstream.points) < 2` | `->L4875`, `->L4876` | | -| 4878 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4879`, `->L4881` | | -| 4879 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4881`, `->L4882` | | -| 4883 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4884`, `->L4885` | | -| 4943 | `if down is None or len(up.points) < 2:` | `->L4944` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | -| 4997 | `if len(targets) != 1:` | `->L4998` | | -| 5007 | `if col is None:` | `->L5008` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | -| 5048 | `if not 0 <= far < len(pts):` | `->L5049` | | -| 5051 | `if abs(dx) > COORD_TOLERANCE:` | `->L5045` | | -| 5053 | `if not votes:` | `->L5054` | | -| 5160 | `if rep_x[a] != rep_x[b]:` | `->L5162` | | -| 5190 | `if rp.curve_radii is None:` | `->L5191` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | -| 5193 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5194` | | -| 5217 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5167` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | -| 5247 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5249` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | -| 5302 | `elif right_ok:` | `->L5305` | | -| 5351 | `if s.bbox_w <= 0:` | `->L5352` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | +| 3787 | `if len(trunks) < 2:` | `->L3788`, `->L3789` | **defensive** -- Early-return in _suboptimal_trunk_bands, called only from the _guard_* validator (phases/guards.py) and a unit test, never on the production render path. The coverage sweep renders with validate=False, so neither arm registers. Defensive (exercised via the validate=True guard / test surface; cf. #728 validate-only precedent). | +| 3791 | `for grp in groups:` | `->L3792`, `->L3810` | **defensive** -- _suboptimal_trunk_bands diagnostic loop: validate-only, not reached by the render-path coverage sweep (see the len(trunks)<2 note). | +| 3792 | `if len({id(t.route) for t in grp}) < 2:` | `->L3793`, `->L3794` | **defensive** -- Single-route-group skip in _suboptimal_trunk_bands, validate-only: called from the _guard_* validator and a unit test, not the production render path the validate=False sweep exercises. Defensive. | +| 3794 | `if not any(not t.route.normalize_exempt for t in grp):` | `->L3795`, `->L3796` | **defensive** -- _suboptimal_trunk_bands diagnostic guard: validate-only, not on the render path. | +| 3796 | `for sign in (1, -1):` | `->L3791`, `->L3797` | **defensive** -- _suboptimal_trunk_bands direction loop: validate-only, not on the render path. | +| 3799 | `if len(slots) < 2 or len(slots) > _MAX_BAND_PERMUTE:` | `->L3800`, `->L3801` | **defensive** -- _suboptimal_trunk_bands slot-count guard: validate-only, not on the render path. | +| 3808 | `if best < cur:` | `->L3796`, `->L3809` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | +| 3878 | `if (` | `->L3883` | | +| 3940 | `band is not None` | `->L3945` | | +| 3941 | `and band.boundary is None` | `->L3942` | | +| 3942 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3944`, `->L3945` | | +| 4038 | `if band is not None:` | `->L4043` | | +| 4062 | `elif up_ok:` | `->L4065` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | +| 4108 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4117` | | +| 4111 | `if reconcile_owned_corridor:` | `->L4117` | | +| 4118 | `if cross_below is not None and cross_above is not None:` | `->L4126` | | +| 4119 | `if reconcile_owned_corridor:` | `->L4125` | | +| 4133 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4134` | | +| 4137 | `elif above_ok:` | `->L4140` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | +| 4140 | `if reconcile_owned_corridor:` | `->L4141`, `->L4144` | | +| 4230 | `if ctx.convergences is None:` | `->L4231` | | +| 4273 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4293` | | +| 4275 | `if target_y is None:` | `->L4276` | | +| 4278 | `if (` | `->L4289` | | +| 4297 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4299` | | +| 4310 | `if obstacle.route.line_id == route.line_id:` | `->L4311` | | +| 4312 | `if rank == trunk.idx:` | `->L4317` | | +| 4313 | `if rank < 2:` | `->L4314` | | +| 4317 | `if rank + 1 >= len(points):` | `->L4318`, `->L4319` | | +| 4320 | `if abs(far[1] - near[1]) > COORD_TOLERANCE:` | `->L4321` | | +| 4449 | `if band is None:` | `->L4450` | | +| 4455 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4459` | | +| 4480 | `and span[0] < crossed[1]` | `->L4481` | | +| 4481 | `and crossed[0] < span[1]` | `->L4472`, `->L4483` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | +| 4591 | `if i in relocated:` | `->L4592` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | +| 4605 | `if not primary and fixed_obstacles:` | `->L4606` | | +| 4611 | `not secondary_may_yield_at_shared_source` | `->L4612`, `->L4615` | | +| 4612 | `or not lane_sources & fixed_sources` | `->L4613`, `->L4615` | | +| 4613 | `or any(run.route.exit_turn_plan_id is not None for run in lane.runs)` | `->L4615`, `->L4616` | | +| 4632 | `if any(` | `->L4636` | **needs-review** -- Never re-band a fan traverse across a section it does not belong to: the re-band would draw the traverse through an unrelated box. The corpus reached the crossing arm only through merge_trunk_over_low_section's pre-fix geometry, where a group carrying a member-geometry-owned channel was skipped and its traverses kept coordinates that crossed a foreign section. With the group gated on the coordinates a plan resolves outright, no fixture crosses one, so the guard keeps a real hazard with no corpus witness. | +| 4713 | `if sg[0].sign_x != t.sign_x:` | `->L4714` | **defensive** -- Both callers of _coincident_trunk_slots pre-filter input to a single traversal direction (band = [t for t in grp if t.sign_x == sign]), so within the function sg[0].sign_x != t.sign_x is always False; the opposing-direction continue is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 4749 | `and base_in is not None` | `->L4763` | | +| 4750 | `and base_out is not None` | `->L4763` | | +| 4766 | `if rp.curve_radii is None:` | `->L4767` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_htrunk is a defensive guard. | +| 4778 | `if 0 <= k - 1 < len(rp.curve_radii):` | `->L4780` | **defensive** -- Bounds guard in _restack_htrunk: trunk index k >= 1 so k-1 >= 0 is always in range; the skip arm is defensive. | +| 4780 | `if k < len(rp.curve_radii) and k + 2 < len(pts):` | `->L-4723` | **defensive** -- Bounds guard in _restack_htrunk: for a real interior trunk k and k+2 are in range; the skip arm is defensive. | +| 4835 | `if abs(drawn_y(rp) - drawn_y(other)) > COORD_TOLERANCE:` | `->L4837` | | +| 4845 | `if hi - lo <= 2 * COORD_TOLERANCE:` | `->L4846`, `->L4848` | | +| 4858 | `if bool(mover.convergence_owned_segment_ranks) and not bool(` | `->L4861`, `->L4862` | | +| 4862 | `if leg_is_plan_stated(mover):` | `->L4863`, `->L4864` | | +| 4865 | `for delta in (step, -step):` | `->L4832`, `->L4866` | | +| 4867 | `if all(` | `->L4865`, `->L4870` | | +| 4897 | `for upstream in routes:` | `->L-4880`, `->L4898` | | +| 4899 | `upstream.edge.target != mover.edge.source` | `->L4900`, `->L4903` | | +| 4900 | `or upstream.line_id != mover.line_id` | `->L4901`, `->L4903` | | +| 4901 | `or len(upstream.points) < 2` | `->L4903`, `->L4904` | | +| 4906 | `abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE` | `->L4907`, `->L4909` | | +| 4907 | `or abs(drawn[-1][1] - start_drawn[1]) > COORD_TOLERANCE` | `->L4909`, `->L4910` | | +| 4911 | `if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:` | `->L4912`, `->L4913` | | +| 4971 | `if down is None or len(up.points) < 2:` | `->L4972` | **needs-review** -- Un-exercised on origin/main too; 897747b0 covered it on 13 fixtures and HEAD is back to main's [0,138] split, so this is a return to main's behaviour rather than a new gap. Reachable by construction (main's baseline lists it as an open gap already). No fixture authored -- the render corpus is frozen for a measurement against main. | +| 5025 | `if len(targets) != 1:` | `->L5026` | | +| 5035 | `if col is None:` | `->L5036` | **defensive** -- Defensive guard in _convergence_line_order: a peel-off riser channel always resolves to a source-section column, so the unresolved-column early return is never taken on the corpus. | +| 5076 | `if not 0 <= far < len(pts):` | `->L5077` | | +| 5079 | `if abs(dx) > COORD_TOLERANCE:` | `->L5073` | | +| 5081 | `if not votes:` | `->L5082` | | +| 5188 | `if rep_x[a] != rep_x[b]:` | `->L5190` | | +| 5218 | `if rp.curve_radii is None:` | `->L5219` | **defensive** -- curve_radii is always set for inter-section routes; the None arm in _restack_channel is a defensive guard. | +| 5221 | `if not 0 <= radius_idx < len(rp.curve_radii):` | `->L5222` | | +| 5245 | `if abs(ly - pts[1][1]) < COORD_TOLERANCE:` | `->L-5195` | **defensive** -- A re-stacked gap channel at points-index 1 always has a horizontal lead-in (L-shape and bypass routes open with a horizontal segment); routes opening non-horizontally are normalize_exempt and skipped by the materialization. The non-horizontal-lead return in _restack_channel is unreachable. Reclassified candidate-dead -> defensive (#762): corpus instrumentation across 128 fixtures confirms the un-exercised arm is never taken. | +| 5275 | `if anchor_section_id is not None and anchor_side is not None:` | `->L5277` | **defensive** -- _gap_channel_base falls back to the column gap when passed a null anchor. All six call sites (in _route_bypass) pass the bypass source/target section id, which is None only when that endpoint has no resolvable section (src_sec_id/tgt_sec_id in _route_bypass); the corpus has no bypass with a sectionless endpoint, so the null-anchor arm is never taken. Defensive guard for a sectionless bypass endpoint. | +| 5330 | `elif right_ok:` | `->L5333` | | +| 5379 | `if s.bbox_w <= 0:` | `->L5380` | **defensive** -- Degenerate-bbox guard in _v_segment_crosses_other_section: mirror of the _h_segment_penetrates_section guard; sections always have positive width. | ## `offsets.py` @@ -1173,7 +1172,7 @@ Gates with an un-exercised arm: ## `planning.py` -20/40 gates fully exercised. +19/40 gates fully exercised. Gates with an un-exercised arm: @@ -1193,6 +1192,7 @@ Gates with an un-exercised arm: | 229 | `or base is None` | `->L233` | | | 231 | `or i + 2 >= len(allocated_points)` | `->L233` | | | 241 | `if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:` | `->L242` | | +| 305 | `if _lands_on_entry_port_lane(` | `->L308` | | | 334 | `if settled is None or rank is None:` | `->L337` | | | 337 | `if plan.curve_radii is None or ctx.exit_turns is None:` | `->L338`, `->L341` | | | 342 | `if membership is None:` | `->L343`, `->L344` | | diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 4fa544519..752b553a8 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -761,8 +761,8 @@ "normalize.py::for upstream in routes:::#1", "normalize.py::go is not None::#1", "normalize.py::if (::#1", - "normalize.py::if (::#10", - "normalize.py::if (::#14", + "normalize.py::if (::#11", + "normalize.py::if (::#15", "normalize.py::if (::#9", "normalize.py::if (cross_below is not None and cross_above is not None) or not (::#1", "normalize.py::if 0 <= k - 1 < len(rp.curve_radii):::#1", @@ -837,7 +837,6 @@ "normalize.py::if mid + half > gap_right + COORD_TOLERANCE:::#1", "normalize.py::if mid - half < gap_left - COORD_TOLERANCE:::#1", "normalize.py::if movable_channels:::#1", - "normalize.py::if nested_only and not _target_leaves_grid_corridor(t, new_y, ctx):::#1", "normalize.py::if new_x <= max(sibling_xs) + ctx.curve_radius + COORD_TOLERANCE:::#1", "normalize.py::if not 0 <= a_idx < len(points) or not 0 <= b_idx < len(points):::#1", "normalize.py::if not 0 <= far < len(pts):::#1", @@ -1004,6 +1003,7 @@ "perp.py::if not feeders:::#1", "planning.py::elif abs(first[1] - second[1]) <= COORD_TOLERANCE:::#1", "planning.py::for index, point in enumerate(points):::#1", + "planning.py::if _lands_on_entry_port_lane(::#1", "planning.py::if abs(allocated_frame - execution_frame) <= COORD_TOLERANCE:::#1", "planning.py::if abs(implied - allocated.curve_radii[i]) > COORD_TOLERANCE:::#1", "planning.py::if abs(point[secondary_axis] - allocated_frame) > COORD_TOLERANCE:::#1", diff --git a/tests/test_plan_owned_channel_agreement.py b/tests/test_plan_owned_channel_agreement.py index 9d2e4338c..3a92b85e0 100644 --- a/tests/test_plan_owned_channel_agreement.py +++ b/tests/test_plan_owned_channel_agreement.py @@ -50,3 +50,23 @@ def test_trunk_relocation_keeps_formed_curves(seed_15_failure: str) -> None: and "'__junction_24'->'__merge_12'" in line ] assert starved == [] + + +def test_seed_15_render_emits_no_geometry_warnings() -> None: + """The corridor stack sits inside every reserved band it claims. + + A typed geometry warning here means a drawn corridor took clearance a + reservation spent -- the planned exit-turn frame overhanging its band's + content side is the class this locks closed. + """ + import warnings + + with warnings.catch_warnings(record=True) as caught: + warnings.simplefilter("always") + render_string(SEED_15.read_text()) + geometry = [ + str(item.message) + for item in caught + if type(item.message).__name__ == "PermissiveGuardWarning" + ] + assert geometry == [] From da256c32a64ff7af61537c8afc163ca0b3a5f3e9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 07:42:03 +0100 Subject: [PATCH 151/158] refactor(routing): read the fan lead-in direction once from the cleared axis --- .../layout/routing/inter_section_handlers.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/nf_metro/layout/routing/inter_section_handlers.py b/src/nf_metro/layout/routing/inter_section_handlers.py index f417e101a..2471c077e 100644 --- a/src/nf_metro/layout/routing/inter_section_handlers.py +++ b/src/nf_metro/layout/routing/inter_section_handlers.py @@ -4317,11 +4317,11 @@ def _l_shape_fan_source_turn( """Resolve the fixed launch and turn column of a junction-fan L-shape.""" sx, sy = src.x, src.y tx, ty = tgt.x, tgt.y - run_direction = horizontal_direction(tx - sx) turn_direction = vertical_direction(ty - sy) _rank, size = fan half_width = (size - 1) * ctx.offset_step / 2 - axis_x = sx + run_direction.sign * (ctx.curve_radius + half_width) + toward_target = 1.0 if tx > sx else -1.0 + axis_x = sx + toward_target * (ctx.curve_radius + half_width) axis_x = clear_channel_of_section_edge( ctx.graph, axis_x, @@ -4332,11 +4332,12 @@ def _l_shape_fan_source_turn( target_x=tx, ) # Clearing a blocked column can seat the turn on the far side of the source - # from the target, which reverses the direction the run leaves the source - # in. A lead-in measured from the target's side would then double back - # over the turn and hand the emitter a reversed segment to offset against. - if abs(axis_x - sx) > COORD_TOLERANCE: - run_direction = horizontal_direction(axis_x - sx) + # from the target, so the run direction reads from the cleared axis: a + # lead-in measured from the target's side would double back over the turn + # and hand the emitter a reversed segment to offset against. + run_direction = horizontal_direction( + axis_x - sx if abs(axis_x - sx) > COORD_TOLERANCE else tx - sx + ) lead_length = ctx.curve_radius + 2 * half_width launch_x = axis_x - run_direction.sign * lead_length launch_x = min(launch_x, sx) if run_direction is Direction.R else max(launch_x, sx) From a7c3216366dde0f8e9ed5f3dfa8b3e0031a4b38d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 07:58:30 +0100 Subject: [PATCH 152/158] fix(routing): descend a shared left-exit opening on the side it leaves by A left exit whose line splits toward two right entries a row below plans one corridor for both members. It reached that corridor around the far side of the section it had just left - out through the header band above, down the outer canvas margin, and back - so the stroke enclosed three sides of its own box before turning toward targets that were beside it all along. The detour bought nothing but the avoidance of a merge trunk lying across the way, which the map already draws as a bridged crossing. The corridor now drops straight down the column the exit port faces, keeping the barrier trunk only as the measure of how far down both members must part. tests/test_source_section_wrap_invariant.py sweeps the render corpus for the shape: a route whose destination lies on the side its exit port faces never reaches past the section's opposite edge. (cherry picked from commit 50c6a2556da8d0f8d4e14a3854677f91a2ffd30e) --- src/nf_metro/layout/routing/exit_turns.py | 43 +++---- tests/test_convergence_planner.py | 16 +-- tests/test_member_geometry.py | 49 +++++--- tests/test_section_header_placement.py | 4 +- tests/test_source_section_wrap_invariant.py | 121 +++++++++++++++++++ tests/test_split_fanout_descent_invariant.py | 2 +- 6 files changed, 189 insertions(+), 46 deletions(-) create mode 100644 tests/test_source_section_wrap_invariant.py diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index c7f4861ff..7c1a6b50e 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -63,7 +63,6 @@ RoutedPath, _vert_horiz_cross, apply_route_offsets, - header_corridor_y, horizontal_direction, iter_horizontal_trunks, segment_direction, @@ -2331,7 +2330,14 @@ def _shared_left_exit_opening( scaffold: RouteSemanticScaffold, member_edges: tuple[ResolvedEdge, ...], ) -> ExitSharedOpening | None: - """Plan the outer corridor for one left-exit line splitting below a trunk.""" + """Plan the common corridor for one left-exit line splitting below a trunk. + + Both members leave the port together, descend the column their exit side + faces, and part in the corridor clear of every trunk they must pass. The + crossing trunk sets how far down that corridor sits; it does not push the + descent off to the section's far side, because reaching around the box the + line just left reads worse than a bridged crossing. + """ if len(member_edges) != 2 or len({edge.line_id for edge in member_edges}) != 1: return None edges = tuple(_graph_edge(ctx.edge_by_key, edge) for edge in member_edges) @@ -2400,7 +2406,7 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: resolved_siblings = tuple(route for route in sibling_routes if route is not None) target_row = facts[0].tgt_row assert target_row is not None and facts[0].src_col is not None - barriers: list[tuple[RoutedPath, HTrunkSeg, float]] = [] + barriers: list[tuple[HTrunkSeg, float]] = [] for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): entry_port_id = ctx.merge.entry_port_for.get(merge_id) entry_port = ( @@ -2449,15 +2455,13 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE and all(crosses(route, trunk) for route in resolved_siblings) ): - barriers.append( - (trunk, horizontal, entry_section.bbox_y + entry_section.bbox_h) - ) + barriers.append((horizontal, entry_section.bbox_y + entry_section.bbox_h)) if len(barriers) == 2: return None if len(barriers) != 1: return None - trunk, barrier, barrier_section_bottom = barriers[0] - outer_x = max(x for x, _y in trunk.points) + ctx.curve_radius + barrier, barrier_section_bottom = barriers[0] + exit_x = source.x - ctx.curve_radius target_x = min(fact.tgt.x for fact in facts) crossing_trunk_bottom = barrier_section_bottom for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): @@ -2476,7 +2480,7 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: ) for _rank, horizontal in iter_horizontal_trunks(candidate): if ( - min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE + min(horizontal.xa, horizontal.xb) < exit_x - COORD_TOLERANCE and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE and horizontal.y > source.y + COORD_TOLERANCE ): @@ -2486,13 +2490,6 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: horizontal.before_y, horizontal.after_y, ) - top_y = header_corridor_y( - graph, - source_section.grid_row, - below=False, - base_radius=ctx.curve_radius, - default=source.y, - ) branch_y = ( max( barrier.y, @@ -2502,17 +2499,21 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: ) + 2 * ctx.curve_radius ) - if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y: + if branch_y <= source.y: + return None + if any( + fact.v_segment_crosses_other_section( + exit_x, source.y, branch_y, fact.endpoint_section_ids + ) + for fact in facts + ): return None - exit_x = source.x - ctx.curve_radius return ExitSharedOpening( tuple(scaffold.member_id_by_edge[edge] for edge in member_edges), ( (source.x, source.y), (exit_x, source.y), - (exit_x, top_y), - (outer_x, top_y), - (outer_x, branch_y), + (exit_x, branch_y), ), ) diff --git a/tests/test_convergence_planner.py b/tests/test_convergence_planner.py index 9731658f9..d3b62ea77 100644 --- a/tests/test_convergence_planner.py +++ b/tests/test_convergence_planner.py @@ -32,8 +32,9 @@ build_route_plan_query, ) from nf_metro.layout.route_reservations import ( + CanvasRegion, + CanvasSide, CorridorOrientation, - RowGapRegion, expected_convergence_foreign_references, ) from nf_metro.layout.routing import compute_station_offsets, observe_route_edges @@ -400,7 +401,7 @@ def test_seed_15_owned_lane_envelope_requests_boundary_three_runway() -> None: assert runway_boundaries == {3} -def test_seed_15_final_member_plan_owns_the_reconciled_row_gap_route() -> None: +def test_seed_15_final_member_plan_owns_its_reconciled_bypass_trunk() -> None: graph, offsets, observed = _observe( FROZEN / "seed_15.mmd", allow_clearance_requirements=True ) @@ -416,9 +417,9 @@ def test_seed_15_final_member_plan_owns_the_reconciled_row_gap_route() -> None: assert route.points == [ (1612.0, 504.0), - (1562.0, 504.0), - (1562.0, 398.0), - (1266.0, 398.0), + (1604.5, 504.0), + (1604.5, 608.0), + (1266.0, 608.0), (1266.0, 504.0), (1246.0, 504.0), ] @@ -426,7 +427,7 @@ def test_seed_15_final_member_plan_owns_the_reconciled_row_gap_route() -> None: assert member.owned_segment_ranks == (1, 3) assert tuple(channel.segment_rank for channel in member.gap_channels) == (1, 3) assert member.trunk_slot is not None - assert member.trunk_slot.gap_upper_row == 1 + assert member.trunk_slot.gap_upper_row is None assert not check_no_dogleg_crosses_exempt_trunk(graph, observed.routes, offsets) trunk_reservations = [ @@ -440,7 +441,8 @@ def test_seed_15_final_member_plan_owns_the_reconciled_row_gap_route() -> None: ) ] assert len(trunk_reservations) == 1 - assert trunk_reservations[0].region == RowGapRegion(0, 1) + assert trunk_reservations[0].region.side is CanvasSide.BOTTOM + assert isinstance(trunk_reservations[0].region, CanvasRegion) _graph, _offsets, repeated = _observe( FROZEN / "seed_15.mmd", allow_clearance_requirements=True diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 5c5db8278..818fd435b 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -240,9 +240,7 @@ def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: opening = ( (1610.5, 338.0), (1600.5, 338.0), - (1600.5, 186.0), - (1748.0, 186.0), - (1748.0, 604.0), + (1600.5, 604.0), ) assert {plan.exit_shared_opening_points for plan in plans} == {opening} assert {plan.points[: len(opening)] for plan in plans} == {opening} @@ -281,7 +279,7 @@ def test_seed_15_settles_member_clear_of_shared_opening_and_convergence() -> Non if landing.edge == ResolvedEdge("__junction_25", "__merge_9", "l0") ) - assert movable.gap_channels[0].start[0] == 1562.0 + assert movable.gap_channels[0].start[0] == 1604.5 assert fixed.gap_channels[-1].start[0] == 1550.0 assert landing.minimum_runway == 52.0 assert landing.opening_turn_coordinate is None @@ -342,28 +340,47 @@ def mirrored(plan, *, movable=False): ) movable = next(plan for plan in settled.plans if plan.edge.line_id == "l1") - assert movable.gap_channels[0].start[0] == mirror * 1542.0 + assert movable.gap_channels[0].start[0] == mirror * 1538.0 -def test_seed_15_shared_opening_prevents_both_historical_trunk_crossings( +def test_seed_15_shared_opening_gathers_both_siblings_on_one_descent( monkeypatch, ) -> None: + """One corridor carries both siblings down, crossing the trunk once. + + The corridor's job is to hold the pair together, not to dodge the merge + trunk lying across their way: each sibling left to itself picks its own + descent column, and a bridged crossing costs less than a detour around + the far side of the section they leave. + """ path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" - def crossings(observation) -> set[tuple[float, float]]: + def siblings(observation): + return [ + route + for route in observation.routes + if route.edge.source == "__junction_23" and route.line_id == "l2" + ] + + def descent_columns(observation) -> set[float]: + return { + next( + start[0] + for start, end in zip(route.points, route.points[1:]) + if start[0] == end[0] and end[1] > start[1] + ) + for route in siblings(observation) + } + + def trunk_crossings(observation) -> set[tuple[float, float]]: trunk = next( route for route in observation.routes if route.edge == Edge("__junction_20", "__merge_8", "l0") ) - siblings = [ - route - for route in observation.routes - if route.edge.source == "__junction_23" and route.line_id == "l2" - ] return { crossing - for sibling in siblings + for sibling in siblings(observation) for start_a, end_a in zip(sibling.points, sibling.points[1:]) for start_b, end_b in zip(trunk.points, trunk.points[1:]) if (crossing := _segments_properly_cross(start_a, end_a, start_b, end_b)) @@ -376,7 +393,9 @@ def crossings(observation) -> set[tuple[float, float]]: station_offsets=compute_station_offsets(graph), allow_convergence_clearance_requirements=True, ) - assert crossings(enabled) == set() + shared_column = descent_columns(enabled) + assert len(shared_column) == 1 + assert {x for x, _y in trunk_crossings(enabled)} == shared_column monkeypatch.setattr(exit_turns, "_shared_left_exit_opening", lambda *_: None) graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) @@ -385,7 +404,7 @@ def crossings(observation) -> set[tuple[float, float]]: station_offsets=compute_station_offsets(graph), allow_convergence_clearance_requirements=True, ) - assert crossings(disabled) == {(1280.0, 338.0), (1600.5, 398.0)} + assert len(descent_columns(disabled)) == 2 def test_seed_15_shared_opening_is_line_name_independent() -> None: diff --git a/tests/test_section_header_placement.py b/tests/test_section_header_placement.py index 1e6df72d9..159b637f7 100644 --- a/tests/test_section_header_placement.py +++ b/tests/test_section_header_placement.py @@ -148,9 +148,9 @@ def test_seed_15_header_stays_inside_its_right_canvas_routes() -> None: for item in route_plan.reservations if isinstance(item.region, CanvasRegion) and item.region.side is CanvasSide.RIGHT - and len(item.claims) == 7 + and len(item.claims) == 5 ) - assert len(reservation.claimant_member_ids) == 9 + assert len(reservation.claimant_member_ids) == 7 barriers = section_header._right_canvas_barriers( route_plan, [list(polyline) for polyline in render_plan.route_polylines] ) diff --git a/tests/test_source_section_wrap_invariant.py b/tests/test_source_section_wrap_invariant.py new file mode 100644 index 000000000..6673a69c1 --- /dev/null +++ b/tests/test_source_section_wrap_invariant.py @@ -0,0 +1,121 @@ +"""A route heading the way its exit port faces stays off the section's far side. + +An exit port states the side of its section a line leaves from. When the +route's destination also lies on that side, everything the route needs is +already ahead of it, so any run beyond the section's opposite edge is a +detour that wraps the box it just left: the stroke leaves, doubles back +across the whole section, and returns. Reaching around the far side is +reserved for a destination that actually sits there. +""" + +from __future__ import annotations + +import warnings +from pathlib import Path +from typing import Any + +import pytest + +from nf_metro.api import prepare_graph +from nf_metro.layout.constants import COORD_TOLERANCE +from nf_metro.layout.routing.core import observe_route_edges +from nf_metro.layout.routing.offsets import compute_station_offsets +from nf_metro.parser.model import PortSide + +ROOT = Path(__file__).parents[1] +CORPUS = sorted( + ( + *(ROOT / "examples").glob("*.mmd"), + *(ROOT / "examples" / "topologies").glob("*.mmd"), + *(ROOT / "tests" / "fixtures" / "hash_seed_determinism").glob("*.mmd"), + ), + key=lambda p: (p.parent.name, p.name), +) + + +def _observe(path: Path) -> tuple[Any, Any]: + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + offsets = compute_station_offsets(graph) + observation = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=True, + ) + return graph, observation + + +def _source_exit_port(graph: Any, edge: Any) -> Any: + """The exit port the route's source hangs off, through any junctions.""" + seen: set[str] = set() + frontier = [edge.source] + while frontier: + node = frontier.pop() + if node in seen: + continue + seen.add(node) + port = graph.ports.get(node) + if port is not None and not port.is_entry: + return port + frontier.extend(upstream.source for upstream in graph.edges_to(node)) + return None + + +def _wraps_source_section(graph: Any, observation: Any) -> list[str]: + found = [] + for route in observation.routes: + if not route.is_inter_section: + continue + port = _source_exit_port(graph, route.edge) + section = None if port is None else graph.sections.get(port.section_id) + target = graph.stations.get(route.edge.target) + if port is None or section is None or target is None: + continue + near, far, destination = { + PortSide.LEFT: ( + section.bbox_x, + section.bbox_x + section.bbox_w, + target.x, + ), + PortSide.RIGHT: ( + section.bbox_x + section.bbox_w, + section.bbox_x, + target.x, + ), + PortSide.TOP: ( + section.bbox_y, + section.bbox_y + section.bbox_h, + target.y, + ), + PortSide.BOTTOM: ( + section.bbox_y + section.bbox_h, + section.bbox_y, + target.y, + ), + }[port.side] + outward = 1.0 if near > far else -1.0 + if (destination - near) * outward < COORD_TOLERANCE: + continue + reach = min( + (point[0] if port.side in (PortSide.LEFT, PortSide.RIGHT) else point[1]) + * outward + for point in route.points + ) + if reach < far * outward - COORD_TOLERANCE: + found.append( + f"{route.edge.source}->{route.edge.target} [{route.line_id}]: " + f"leaves '{section.id}' on its {port.side.value} side towards " + f"{destination} yet reaches {reach * outward} past the " + f"opposite edge at {far}" + ) + return found + + +@pytest.mark.parametrize("path", CORPUS, ids=lambda p: p.stem) +def test_route_does_not_wrap_the_section_it_leaves(path: Path) -> None: + graph, observation = _observe(path) + wrapping = _wraps_source_section(graph, observation) + assert not wrapping, "routes wrapping their own source section:\n" + "\n".join( + wrapping + ) diff --git a/tests/test_split_fanout_descent_invariant.py b/tests/test_split_fanout_descent_invariant.py index 03e4f2d75..14df396b5 100644 --- a/tests/test_split_fanout_descent_invariant.py +++ b/tests/test_split_fanout_descent_invariant.py @@ -118,7 +118,7 @@ def test_opposite_opening_directions_share_one_exit_opening() -> None: source = graph.stations[plan.source_id] assert opening.points[0] == pytest.approx((source.x, source.y)) assert segment_direction(*opening.points[:2]) is Direction.L - assert segment_direction(*opening.points[1:3]) is Direction.U + assert segment_direction(*opening.points[1:3]) is Direction.D assert source.x - opening.points[1][0] >= plan.minimum_runway assert all( tuple(route.points[: len(opening.points)]) == opening.points From 71d1053cd528fdb1ac55e5f7c3cf29a510db9f6c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 08:16:44 +0100 Subject: [PATCH 153/158] test(routing): refresh gate coverage for the exit-opening descent --- docs/dev/routing_gate_coverage.md | 429 +++++++++--------- .../data/routing_gate_coverage_baseline.json | 19 +- 2 files changed, 225 insertions(+), 223 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index b7a8bc6a7..e69377077 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2419/3516** gates fully exercised (both/all arms hit by some fixture); **1097** gates have at least one un-exercised arm. +**2418/3516** gates fully exercised (both/all arms hit by some fixture); **1098** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -444,143 +444,144 @@ Gates with an un-exercised arm: ## `exit_turns.py` -205/336 gates fully exercised. +205/337 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 517 | `if not replacements:` | `->L518` | | -| 748 | `if key not in ctx.station_offsets and port_key not in ctx.station_offsets:` | `->L749` | | -| 761 | `if len({coordinate for _line, _offset, coordinate in values}) != len(values):` | `->L762` | | -| 834 | `if source_run_direction not in {Direction.R, Direction.L}:` | `->L835` | | -| 924 | `if source_run_direction not in run_axis:` | `->L925` | | -| 929 | `if abs(delta) <= COORD_TOLERANCE:` | `->L930` | | -| 933 | `if horizontal:` | `->L936` | | -| 937 | `if actual_run is not source_run_direction:` | `->L938` | | -| 968 | `if route is None:` | `->L969` | | -| 971 | `if len(points) < 3:` | `->L972` | | -| 976 | `if run_direction is None or turn_direction is None:` | `->L977` | | -| 1003 | `if off_column_decline is not None and source_run_direction not in {` | `->L1007` | | -| 1008 | `if family_id is RouteFamilyId.MERGE_ENTRY_STRAIGHT:` | `->L1009` | | -| 1103 | `if entry_geometry.seam.turn_direction is None:` | `->L1104` | | -| 1189 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1190` | | -| 1217 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1218` | **defensive** -- _plain_l_shape_turn_requirement's flat-hop guard, which both its callers exclude: _standard_l_shape_turn_requirement returns its own missing-source-turn for a flat delta before delegating, and the cell-mate gap drop only classifies when the target section sits one grid row below the source (_bypass_route_kind requires tgt_row == src_row + 1), which puts the two ports on different rows. The duplicated guard therefore never fires. | -| 1346 | `if kind is _BypassRoute.LEFT_ENTRY_FAMILY:` | `->L1347` | | -| 1350 | `if kind is _BypassRoute.RIGHT_ENTRY_CROSS_ROW:` | `->L1351` | | -| 1352 | `if kind is _BypassRoute.L_SHAPE:` | `->L1353` | | -| 1359 | `if kind is _BypassRoute.LEFT_EXIT_AROUND_BELOW:` | `->L1360` | | -| 1492 | `if primary_delta * run_direction.sign < 2 * MIN_STRAIGHT_EDGE + diagonal:` | `->L1493` | | -| 1519 | `if direction_axis(transition.run_direction) is DemandAxis.X:` | `->L1523` | | -| 1574 | `if len(candidates) != 1:` | `->L1575` | | -| 1581 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1582` | | -| 1609 | `if transition is None:` | `->L1610` | | -| 1646 | `target_crossing is None` | `->L1649` | | -| 1647 | `or abs(source_crossing - target_crossing) > COORD_TOLERANCE` | `->L1649` | | -| 1671 | `target_crossing is None` | `->L1674` | | -| 1672 | `or abs(geometry.cross_lo - target_crossing) > COORD_TOLERANCE` | `->L1674` | | -| 1684 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1685` | | -| 1710 | `if transition is None:` | `->L1711` | | -| 1744 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1745` | | -| 1803 | `if len(entry_group_ids) != 1:` | `->L1804` | | -| 1810 | `if family_id is None:` | `->L1811` | | -| 1839 | `requirement.run_direction is not None` | `->L1852` | | -| 1840 | `and requirement.turn_direction is not None` | `->L1852` | | -| 1841 | `and requirement.launch_coordinate is not None` | `->L1852` | | -| 1842 | `and requirement.minimum_runway is not None` | `->L1852` | | -| 1861 | `and requirement.turn_direction is not None` | `->L1868` | | -| 1873 | `and family_id is not RouteFamilyId.MERGE_ENTRY` | `->L1876` | | -| 1901 | `if any(len(runs) > 1 for runs in straight_runs_by_lane.values()):` | `->L1902` | **defensive** -- The opposed-source-run recogniser: a lane whose turn-less members disagree on the direction they leave the shared source. Every member of one exit group leaves through one exit port, whose side fixes the outward ray, and a collinear target on the other side of that port is a backward hop the engine rejects before routing. The arm names a classification that contradicts itself and declines the plan; no exit group produces it. | -| 2053 | `if any(` | `->L2064` | | -| 2078 | `if membership is not None and membership.axis is not None:` | `->L2079` | | -| 2156 | `if not _lane_arms_read_as_one_stroke(` | `->L2159` | **defensive** -- The reject protects a planner seed set where an unpinned cohort lands within one curve radius of a same-rank axis already claimed by a pinned cohort. Production topology planning pins or separates those cohorts before this check. test_free_lane_arm_overlapping_a_pinned_corner_uses_legacy constructs the incomplete seed set directly and covers the fallback reason. | -| 2273 | `if reason is not None:` | `->L2274` | | -| 2368 | `if source_exit_edge is None:` | `->L2369` | | -| 2372 | `if source_section is None:` | `->L2373` | | -| 2376 | `for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):` | `->L2390` | | -| 2398 | `if any(route is None for route in sibling_routes):` | `->L2399` | | -| 2413 | `entry_port is None` | `->L2419` | | -| 2414 | `or entry_section is None` | `->L2419` | | -| 2415 | `or entry_port.side is not PortSide.RIGHT` | `->L2419` | | -| 2417 | `or entry_section.grid_row != target_row` | `->L2419` | | -| 2428 | `if trunk_edge is None:` | `->L2429` | | -| 2445 | `if horizontal is None:` | `->L2446` | | -| 2447 | `if (` | `->L2404` | | -| 2455 | `if len(barriers) == 2:` | `->L2456` | | -| 2457 | `if len(barriers) != 1:` | `->L2458` | | -| 2479 | `min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE` | `->L2477` | | -| 2480 | `and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE` | `->L2477` | | -| 2481 | `and horizontal.y > source.y + COORD_TOLERANCE` | `->L2477` | | -| 2505 | `if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y:` | `->L2506` | | -| 2568 | `if not outbound_edges or missing_connectors:` | `->L2569` | | -| 2670 | `if final_classification.legacy_reason is not None:` | `->L2671` | | -| 2672 | `elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(` | `->L2675` | | -| 2945 | `if incumbent.id == plan.id:` | `->L2947` | | -| 3015 | `if owners and plan.id not in owners:` | `->L3016` | | -| 3016 | `for owner in owners:` | `->L3017`, `->L3018` | | -| 3031 | `and plan.id in conflicting_plan_ids` | `->L3033` | | -| 3049 | `and axis.fixed_anchor_offset is not None` | `->L3038` | | -| 3050 | `and abs(proposed - axis.fixed_anchor_offset) > COORD_TOLERANCE` | `->L3052` | | -| 3240 | `if abs(first_offset - second_offset) > COORD_TOLERANCE:` | `->L3242` | | -| 3242 | `for owner in (first_owner, second_owner):` | `->L3239`, `->L3243` | | -| 3243 | `if owner is not None:` | `->L3242`, `->L3244` | | -| 3250 | `if not additions:` | `->L3252` | | -| 3314 | `if assignment.planned_family_id is RouteFamilyId.BOTTOM_EXIT_JUNCTION:` | `->L3315` | | -| 3352 | `if route is None:` | `->L3353` | | -| 3358 | `if assignment.planned_family_id is not RouteFamilyId.TB_BOTTOM_EXIT:` | `->L3359` | | -| 3373 | `if route is None:` | `->L3374`, `->L3380` | | -| 3388 | `if geometry.bundle_offsets is None:` | `->L3389` | | -| 3481 | `if scaffold is None:` | `->L3482` | | -| 3489 | `if scaffold is None:` | `->L3490` | **defensive** -- The second None check protects the manual or incomplete graph fallback after rebuilding a missing retained scaffold. Parsed render-path graphs publish one canonical scaffold during fan planning, so the fixture corpus never reaches a rebuild that can return None. Direct planner tests retain the fallback for graph construction without topology. | -| 3528 | `if overridden_dispositions:` | `->L3529` | | -| 3530 | `for plan_id in overridden_dispositions:` | `->L3531`, `->L3542` | | -| 3586 | `if transition_key in transition_by_edge:` | `->L3587` | | -| 3610 | `if len(points) >= 3:` | `->L3617` | | -| 3613 | `segment_direction(before, start) is run_direction` | `->L3617` | | -| 3614 | `and segment_direction(start, end) is turn_direction` | `->L3617` | | -| 3658 | `assignment is None` | `->L3663` | | -| 3659 | `or membership.axis is None` | `->L3663` | | -| 3660 | `or assignment.run_direction is None` | `->L3663` | | -| 3661 | `or assignment.turn_direction is None` | `->L3663` | | -| 3709 | `if ctx.exit_turns is None:` | `->L3710` | | -| 3720 | `or route.fan_route_emitter is not None` | `->L3722` | | -| 3739 | `incoming is None` | `->L3743` | | -| 3740 | `or outgoing is None` | `->L3743` | | -| 3741 | `or direction_axis(incoming) is direction_axis(outgoing)` | `->L3743` | | -| 3766 | `if reference is None:` | `->L3767` | | -| 3785 | `if route.curve_radii is not None and rank < len(route.curve_radii):` | `->L3778` | | -| 3802 | `if ctx.exit_turns is None:` | `->L3803` | | -| 3813 | `if family_id is not assignment.planned_family_id:` | `->L3814` | | -| 3826 | `if (` | `->L3835` | | -| 3844 | `run is None` | `->L3849` | | -| 3845 | `or turn is None` | `->L3849` | | -| 3846 | `or assignment.launch_coordinate is None` | `->L3849` | | -| 3847 | `or assignment.minimum_runway is None` | `->L3849` | | -| 3853 | `if segment_rank is None:` | `->L3854` | | -| 3874 | `if planned_corner_offsets is None:` | `->L3875` | | -| 3941 | `if source_turn_changed and settled is None:` | `->L3942` | | -| 3969 | `if rank is None:` | `->L3970` | | -| 4036 | `if current.keys() != snapshot.geometry.keys():` | `->L4037` | | -| 4051 | `if current[key] != state:` | `->L4052` | | -| 4088 | `station_id not in graph.stations` | `->L4091` | | -| 4089 | `or lane.line_id not in graph.station_lines(station_id)` | `->L4091` | | -| 4097 | `if (station_id, lane.line_id) not in station_offsets or (` | `->L4104` | | -| 4112 | `if len(transition_routes) != 1:` | `->L4113` | | -| 4150 | `route.exit_lane_transition_plan_id != str(exit_turn_plan.id)` | `->L4155` | | -| 4151 | `or route.offset_regime is not OffsetRegime.BAKED` | `->L4155` | | -| 4152 | `or route.points != expected_route.points` | `->L4155` | | -| 4153 | `or route.curve_radii != expected_route.curve_radii` | `->L4155` | | -| 4171 | `if not _fixed_axis_matches_plan(` | `->L4176` | | -| 4182 | `if any(` | `->L4191` | | -| 4199 | `if len(member_routes) != 1:` | `->L4200` | | -| 4215 | `if opening is not None:` | `->L4216` | | -| 4216 | `if tuple(route.points[: len(opening.points)]) != opening.points:` | `->L4217`, `->L4220` | | -| 4221 | `if route.exit_turn_family_id != assignment.planned_family_id.value:` | `->L4222` | | -| 4229 | `if route.exit_turn_axis_id is not None:` | `->L4230` | | -| 4238 | `if (` | `->L4252` | | -| 4260 | `route.exit_turn_axis_id != str(assignment.axis_id)` | `->L4263` | | -| 4261 | `or route.exit_turn_segment_rank is None` | `->L4263` | | -| 4274 | `if (` | `->L4296` | | +| 516 | `if not replacements:` | `->L517` | | +| 747 | `if key not in ctx.station_offsets and port_key not in ctx.station_offsets:` | `->L748` | | +| 760 | `if len({coordinate for _line, _offset, coordinate in values}) != len(values):` | `->L761` | | +| 833 | `if source_run_direction not in {Direction.R, Direction.L}:` | `->L834` | | +| 923 | `if source_run_direction not in run_axis:` | `->L924` | | +| 928 | `if abs(delta) <= COORD_TOLERANCE:` | `->L929` | | +| 932 | `if horizontal:` | `->L935` | | +| 936 | `if actual_run is not source_run_direction:` | `->L937` | | +| 967 | `if route is None:` | `->L968` | | +| 970 | `if len(points) < 3:` | `->L971` | | +| 975 | `if run_direction is None or turn_direction is None:` | `->L976` | | +| 1002 | `if off_column_decline is not None and source_run_direction not in {` | `->L1006` | | +| 1007 | `if family_id is RouteFamilyId.MERGE_ENTRY_STRAIGHT:` | `->L1008` | | +| 1102 | `if entry_geometry.seam.turn_direction is None:` | `->L1103` | | +| 1188 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1189` | | +| 1216 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1217` | **defensive** -- _plain_l_shape_turn_requirement's flat-hop guard, which both its callers exclude: _standard_l_shape_turn_requirement returns its own missing-source-turn for a flat delta before delegating, and the cell-mate gap drop only classifies when the target section sits one grid row below the source (_bypass_route_kind requires tgt_row == src_row + 1), which puts the two ports on different rows. The duplicated guard therefore never fires. | +| 1345 | `if kind is _BypassRoute.LEFT_ENTRY_FAMILY:` | `->L1346` | | +| 1349 | `if kind is _BypassRoute.RIGHT_ENTRY_CROSS_ROW:` | `->L1350` | | +| 1351 | `if kind is _BypassRoute.L_SHAPE:` | `->L1352` | | +| 1358 | `if kind is _BypassRoute.LEFT_EXIT_AROUND_BELOW:` | `->L1359` | | +| 1491 | `if primary_delta * run_direction.sign < 2 * MIN_STRAIGHT_EDGE + diagonal:` | `->L1492` | | +| 1518 | `if direction_axis(transition.run_direction) is DemandAxis.X:` | `->L1522` | | +| 1573 | `if len(candidates) != 1:` | `->L1574` | | +| 1580 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1581` | | +| 1608 | `if transition is None:` | `->L1609` | | +| 1645 | `target_crossing is None` | `->L1648` | | +| 1646 | `or abs(source_crossing - target_crossing) > COORD_TOLERANCE` | `->L1648` | | +| 1670 | `target_crossing is None` | `->L1673` | | +| 1671 | `or abs(geometry.cross_lo - target_crossing) > COORD_TOLERANCE` | `->L1673` | | +| 1683 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1684` | | +| 1709 | `if transition is None:` | `->L1710` | | +| 1743 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1744` | | +| 1802 | `if len(entry_group_ids) != 1:` | `->L1803` | | +| 1809 | `if family_id is None:` | `->L1810` | | +| 1838 | `requirement.run_direction is not None` | `->L1851` | | +| 1839 | `and requirement.turn_direction is not None` | `->L1851` | | +| 1840 | `and requirement.launch_coordinate is not None` | `->L1851` | | +| 1841 | `and requirement.minimum_runway is not None` | `->L1851` | | +| 1860 | `and requirement.turn_direction is not None` | `->L1867` | | +| 1872 | `and family_id is not RouteFamilyId.MERGE_ENTRY` | `->L1875` | | +| 1900 | `if any(len(runs) > 1 for runs in straight_runs_by_lane.values()):` | `->L1901` | **defensive** -- The opposed-source-run recogniser: a lane whose turn-less members disagree on the direction they leave the shared source. Every member of one exit group leaves through one exit port, whose side fixes the outward ray, and a collinear target on the other side of that port is a backward hop the engine rejects before routing. The arm names a classification that contradicts itself and declines the plan; no exit group produces it. | +| 2052 | `if any(` | `->L2063` | | +| 2077 | `if membership is not None and membership.axis is not None:` | `->L2078` | | +| 2155 | `if not _lane_arms_read_as_one_stroke(` | `->L2158` | **defensive** -- The reject protects a planner seed set where an unpinned cohort lands within one curve radius of a same-rank axis already claimed by a pinned cohort. Production topology planning pins or separates those cohorts before this check. test_free_lane_arm_overlapping_a_pinned_corner_uses_legacy constructs the incomplete seed set directly and covers the fallback reason. | +| 2272 | `if reason is not None:` | `->L2273` | | +| 2374 | `if source_exit_edge is None:` | `->L2375` | | +| 2378 | `if source_section is None:` | `->L2379` | | +| 2382 | `for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):` | `->L2396` | | +| 2404 | `if any(route is None for route in sibling_routes):` | `->L2405` | | +| 2419 | `entry_port is None` | `->L2425` | | +| 2420 | `or entry_section is None` | `->L2425` | | +| 2421 | `or entry_port.side is not PortSide.RIGHT` | `->L2425` | | +| 2423 | `or entry_section.grid_row != target_row` | `->L2425` | | +| 2434 | `if trunk_edge is None:` | `->L2435` | | +| 2451 | `if horizontal is None:` | `->L2452` | | +| 2453 | `if (` | `->L2410` | | +| 2459 | `if len(barriers) == 2:` | `->L2460` | | +| 2461 | `if len(barriers) != 1:` | `->L2462` | | +| 2483 | `min(horizontal.xa, horizontal.xb) < exit_x - COORD_TOLERANCE` | `->L2481` | | +| 2484 | `and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE` | `->L2481` | | +| 2485 | `and horizontal.y > source.y + COORD_TOLERANCE` | `->L2481` | | +| 2502 | `if branch_y <= source.y:` | `->L2503` | | +| 2504 | `if any(` | `->L2510` | | +| 2569 | `if not outbound_edges or missing_connectors:` | `->L2570` | | +| 2671 | `if final_classification.legacy_reason is not None:` | `->L2672` | | +| 2673 | `elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(` | `->L2676` | | +| 2946 | `if incumbent.id == plan.id:` | `->L2948` | | +| 3016 | `if owners and plan.id not in owners:` | `->L3017` | | +| 3017 | `for owner in owners:` | `->L3018`, `->L3019` | | +| 3032 | `and plan.id in conflicting_plan_ids` | `->L3034` | | +| 3050 | `and axis.fixed_anchor_offset is not None` | `->L3039` | | +| 3051 | `and abs(proposed - axis.fixed_anchor_offset) > COORD_TOLERANCE` | `->L3053` | | +| 3241 | `if abs(first_offset - second_offset) > COORD_TOLERANCE:` | `->L3243` | | +| 3243 | `for owner in (first_owner, second_owner):` | `->L3240`, `->L3244` | | +| 3244 | `if owner is not None:` | `->L3243`, `->L3245` | | +| 3251 | `if not additions:` | `->L3253` | | +| 3315 | `if assignment.planned_family_id is RouteFamilyId.BOTTOM_EXIT_JUNCTION:` | `->L3316` | | +| 3353 | `if route is None:` | `->L3354` | | +| 3359 | `if assignment.planned_family_id is not RouteFamilyId.TB_BOTTOM_EXIT:` | `->L3360` | | +| 3374 | `if route is None:` | `->L3375`, `->L3381` | | +| 3389 | `if geometry.bundle_offsets is None:` | `->L3390` | | +| 3482 | `if scaffold is None:` | `->L3483` | | +| 3490 | `if scaffold is None:` | `->L3491` | **defensive** -- The second None check protects the manual or incomplete graph fallback after rebuilding a missing retained scaffold. Parsed render-path graphs publish one canonical scaffold during fan planning, so the fixture corpus never reaches a rebuild that can return None. Direct planner tests retain the fallback for graph construction without topology. | +| 3529 | `if overridden_dispositions:` | `->L3530` | | +| 3531 | `for plan_id in overridden_dispositions:` | `->L3532`, `->L3543` | | +| 3587 | `if transition_key in transition_by_edge:` | `->L3588` | | +| 3611 | `if len(points) >= 3:` | `->L3618` | | +| 3614 | `segment_direction(before, start) is run_direction` | `->L3618` | | +| 3615 | `and segment_direction(start, end) is turn_direction` | `->L3618` | | +| 3659 | `assignment is None` | `->L3664` | | +| 3660 | `or membership.axis is None` | `->L3664` | | +| 3661 | `or assignment.run_direction is None` | `->L3664` | | +| 3662 | `or assignment.turn_direction is None` | `->L3664` | | +| 3710 | `if ctx.exit_turns is None:` | `->L3711` | | +| 3721 | `or route.fan_route_emitter is not None` | `->L3723` | | +| 3740 | `incoming is None` | `->L3744` | | +| 3741 | `or outgoing is None` | `->L3744` | | +| 3742 | `or direction_axis(incoming) is direction_axis(outgoing)` | `->L3744` | | +| 3767 | `if reference is None:` | `->L3768` | | +| 3786 | `if route.curve_radii is not None and rank < len(route.curve_radii):` | `->L3779` | | +| 3803 | `if ctx.exit_turns is None:` | `->L3804` | | +| 3814 | `if family_id is not assignment.planned_family_id:` | `->L3815` | | +| 3827 | `if (` | `->L3836` | | +| 3845 | `run is None` | `->L3850` | | +| 3846 | `or turn is None` | `->L3850` | | +| 3847 | `or assignment.launch_coordinate is None` | `->L3850` | | +| 3848 | `or assignment.minimum_runway is None` | `->L3850` | | +| 3854 | `if segment_rank is None:` | `->L3855` | | +| 3875 | `if planned_corner_offsets is None:` | `->L3876` | | +| 3942 | `if source_turn_changed and settled is None:` | `->L3943` | | +| 3970 | `if rank is None:` | `->L3971` | | +| 4037 | `if current.keys() != snapshot.geometry.keys():` | `->L4038` | | +| 4052 | `if current[key] != state:` | `->L4053` | | +| 4089 | `station_id not in graph.stations` | `->L4092` | | +| 4090 | `or lane.line_id not in graph.station_lines(station_id)` | `->L4092` | | +| 4098 | `if (station_id, lane.line_id) not in station_offsets or (` | `->L4105` | | +| 4113 | `if len(transition_routes) != 1:` | `->L4114` | | +| 4151 | `route.exit_lane_transition_plan_id != str(exit_turn_plan.id)` | `->L4156` | | +| 4152 | `or route.offset_regime is not OffsetRegime.BAKED` | `->L4156` | | +| 4153 | `or route.points != expected_route.points` | `->L4156` | | +| 4154 | `or route.curve_radii != expected_route.curve_radii` | `->L4156` | | +| 4172 | `if not _fixed_axis_matches_plan(` | `->L4177` | | +| 4183 | `if any(` | `->L4192` | | +| 4200 | `if len(member_routes) != 1:` | `->L4201` | | +| 4216 | `if opening is not None:` | `->L4217` | | +| 4217 | `if tuple(route.points[: len(opening.points)]) != opening.points:` | `->L4218`, `->L4221` | | +| 4222 | `if route.exit_turn_family_id != assignment.planned_family_id.value:` | `->L4223` | | +| 4230 | `if route.exit_turn_axis_id is not None:` | `->L4231` | | +| 4239 | `if (` | `->L4253` | | +| 4261 | `route.exit_turn_axis_id != str(assignment.axis_id)` | `->L4264` | | +| 4262 | `or route.exit_turn_segment_rank is None` | `->L4264` | | +| 4275 | `if (` | `->L4297` | | ## `inter_section.py` @@ -597,7 +598,7 @@ Gates with an un-exercised arm: ## `inter_section_handlers.py` -209/369 gates fully exercised. +209/368 gates fully exercised. Gates with an un-exercised arm: @@ -694,75 +695,74 @@ Gates with an un-exercised arm: | 4089 | `if route is None:` | `->L4090` | **defensive** -- _declare_placed_channels accepts RoutedPath \| None to match _declare_trunk and _declare_channel, but all three call sites have already established the route (an assert on the left-entry corridor, a RuntimeError when a planned fan emitter omits a member, and a locally built U-bypass), so the None no-op is a helper contract nothing exercises. | | 4262 | `if ctx.exit_turns is None:` | `->L4263` | **needs-review** -- _perp_entry_turn_is_planned answers False for the pre-plan context the exit-turn planner probes emitters with; ctx.exit_turns is bound only for emission. That context does reach these emitters -- the same guard in _seat_bypass_descent takes its None arm on packed_cell_right_exit_left_entry_wrap -- but no corpus probe reaches the TOP/BOTTOM-entry L-shape records this predicate feeds. | | 4288 | `if not any(` | `->L4293` | | -| 4338 | `if abs(axis_x - sx) > COORD_TOLERANCE:` | `->L4340` | | -| 4360 | `while cur is not None and cur not in seen:` | `->L4376` | | -| 4369 | `if cur in graph.junctions:` | `->L4375` | | -| 4456 | `if (` | `->L4462` | | -| 4645 | `if geometry is None:` | `->L4646` | | -| 4744 | `if abs(tgt.x - src.x) <= ctx.curve_radius:` | `->L4745` | | -| 4757 | `if _h_segment_crosses_other_section(graph, src.x, final_x, src.y, exclude):` | `->L4758` | **defensive** -- Traverse-first clearance test in _top_entry_side_fan_traverse_clears (#1349). The below-side fan branch only reaches this gate when its junction also feeds an aligned straight drop; the corpus fan sits a clear row above its target, so the source-Y traverse never crosses another section and the fall-back-to-staircase arm is not exercised. Defensive. | -| 4885 | `if abs(tgt.x - src.x) > COORD_TOLERANCE or src.id not in ctx.graph.junctions:` | `->L4886` | | -| 4920 | `if feeder is not None:` | `->L4925` | | -| 5097 | `if len(points) < 3:` | `->L5098` | | -| 5149 | `if not section_ids:` | `->L5150` | | -| 5229 | `if mid_y is None:` | `->L5246` | | -| 5261 | `channel_y is None` | `->L5291` | | -| 5263 | `and src_sec is not None` | `->L5291` | **defensive** -- Inter-row exit mid-Y clearance bump (the n>1 multi-line branch). When more than one line shares the exit the source section always resolves, so the `src_sec is None` short-circuit past the clearance bump is never taken. | -| 5264 | `and tgt_sec is not None` | `->L5291` | **defensive** -- Companion to src_sec in the same n>1 mid-Y clearance branch: the target section always resolves there, so the `tgt_sec is None` short-circuit past the bump is never taken. | -| 5293 | `if exit_side is not None:` | `->L5295` | | -| 5295 | `elif abs(dx) > ctx.curve_radius:` | `->L5296`, `->L5298` | | -| 5299 | `if src.id in ctx.graph.junctions:` | `->L5300`, `->L5312` | **needs-review** -- Reachable only via a defective render (LR->TB TOP-entry routing); see #720. | -| 5300 | `for je in ctx.graph.edges_to(src.id):` | `->L5301`, `->L5312` | | -| 5302 | `if js.is_port:` | `->L5300`, `->L5303` | | -| 5303 | `if abs(js.x - src.x) <= COORD_TOLERANCE:` | `->L5304`, `->L5306` | | -| 5318 | `if exit_side is not None and not straight_drop:` | `->L5328` | | -| 5366 | `if not straight_drop:` | `->L5370` | **needs-review** -- A top-entry fan branch fed straight from directly above the junction (straight_drop) keeps its lead-in column at the source X rather than the shared fan pivot; the corpus's fan branches all carry horizontal travel, so the straight-drop arm is unexercised. | -| 5368 | `if lead is Direction.R:` | `->L5370` | **needs-review** -- A top-entry fan branch leading LEFT out of the junction skips the _v1_corner_x right-edge clearance bump; the corpus's fan branches all lead right, so the left-lead arm is unexercised. | -| 5395 | `if straight_drop:` | `->L5396` | | -| 5472 | `if ctx.exit_turns is None:` | `->L5473` | | -| 5557 | `if src_sec is None or tgt_sec is None or src_sec.grid_row >= tgt_sec.grid_row:` | `->L5560` | | -| 5727 | `if src_section and src_section.bbox_w > 0:` | `->L5728` | | -| 5748 | `if tgt_sec is None:` | `->L5749` | | -| 5819 | `if src_col is None:` | `->L5820` | | -| 6054 | `if src_sec is not None:` | `->L6085` | **defensive** -- Defensive guard in the fanned entry-wrap source-clearance lift: a fan-out junction always resolves to its source section, so the None arm is unreachable in practice. | -| 6091 | `if tgt_col is not None:` | `->L6096` | **defensive** -- tgt_col from _resolve_section_col on a valid LEFT entry port is always non-None (sections get grid_col>=0 after auto-layout). | -| 6093 | `if shared_vx is not None:` | `->L6096` | **defensive** -- _fan_left_entry_descent_x returns None only when col_left<=0; col_left_edge for the target's own column is always >0. | -| 6219 | `if entry_side is PortSide.LEFT:` | `->L6222` | | -| 6287 | `if entry_port is None:` | `->L6288` | **defensive** -- _route_around_section_below is always called with a non-None entry_port (both dispatch sites pass a checked station). | -| 6298 | `if trunk_src is None or trunk_src == edge.source:` | `->L6300` | **needs-review** -- Reachable only via a defective render (merge-junction tangle); see #721. | -| 6351 | `if col_left <= 0.0:` | `->L6352` | **defensive** -- col_left_edge's 0.0 default only fires for a column with no sections; the target's own column always holds its section. | -| 6388 | `if entry_port is None:` | `->L6389` | **defensive** -- Every caller of _corridor_is_viable passes a non-None entry_port. | -| 6395 | `if src_row is None or ep_row is None or src_col is None or ep_col is None:` | `->L6396` | **defensive** -- _resolve_section_colrow returns (None,None) only for a station with no section; valid entry ports always have a section with non-negative grid coords. | -| 6483 | `if fan is not None and corridor is not None and corridor.band_y is not None:` | `->L6487` | **needs-review** -- Corridor-feeder shared inter-row band gate: the corpus's corridor feeders belong to fans whose corridor carries a band_y, so the short-circuit past it (no corridor or bypass-only) is unexercised; it falls to the elif fan-is-not-None global-band branch. | -| 6487 | `elif fan is not None:` | `->L6491`, `->L6496` | **needs-review** -- Corridor-feeder fallback for a fan whose junction earned no corridor (its in-column gap below does not fit the bundle); the corpus's fans all earn a corridor, so this global-band branch is unexercised. | -| 6496 | `elif gap_bottom > gap_top:` | `->L6497`, `->L6501` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6506 | `if fan is None and gap_bottom > gap_top:` | `->L6507` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6520 | `if fan is not None and ep_col is not None:` | `->L6522` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6522 | `if vx is None:` | `->L6523` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | -| 6624 | `if ep_section and ep_section.bbox_w > 0:` | `->L6627` | **defensive** -- entry_port.section_id is always set and the section has bbox_w>0 after layout; the else arm never fires. | -| 6922 | `if claim.line_id != edge.line_id or claim.owner_source == edge.source:` | `->L6924` | | -| 6924 | `if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):` | `->L6925`, `->L6926` | | -| 6926 | `if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:` | `->L6921`, `->L6927` | | -| 7023 | `if (` | `->L6993` | | -| 7043 | `if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):` | `->L7044` | | -| 7176 | `if gap_bottom <= gap_top:` | `->L7177` | **defensive** -- The row-gap enforcer keeps stacked rows separated, so the inter-row band above a target row (row_bottom_edge(tgt_row-1) up to row_top_edge(tgt_row)) has positive height whenever a RIGHT entry is fed from a higher row; the degenerate-band arm guards an abutting-rows layout placement never produces. | -| 7180 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7181` | **defensive** -- Band-fit test in _right_entry_gap_above_is_clear (#889), reached only when the cross-row RIGHT-entry drop-in is not clear (the exotic blocked-descent case above). The corpus always takes the drop-in, so neither arm of the gap-above fallback is exercised. Defensive. | -| 7336 | `if gap_bottom <= gap_top:` | `->L7337` | | -| 7338 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7339` | | -| 7349 | `if f.v_segment_crosses_other_section(vx, gy, tgt.y):` | `->L7350` | | -| 7444 | `if source is None or source.bbox_w <= 0:` | `->L7445` | | -| 7449 | `if source.id not in members:` | `->L7450` | | -| 7455 | `if other.bbox_x <= source_right + COORD_TOLERANCE:` | `->L7456` | | -| 7457 | `if cellmate_left is None or other.bbox_x < cellmate_left:` | `->L7451` | | -| 7459 | `if cellmate_left is None:` | `->L7460` | | -| 7497 | `if band0_bottom <= band0_top or not _inter_row_band_fits(band0_top, band0_bottom):` | `->L7498` | | -| 7499 | `if band1_bottom <= band1_top or not _inter_row_band_fits(band1_top, band1_bottom):` | `->L7500` | | -| 7501 | `if band1_top <= band0_bottom + COORD_TOLERANCE:` | `->L7502` | | -| 7517 | `if f.v_segment_crosses_other_section(corner_x, band0_y, band1_y, exclude):` | `->L7518` | | -| 7574 | `if geom is None:` | `->L7575` | | -| 7577 | `if f.v_segment_crosses_other_section(geom.lead_x, src.y, geom.band0_y):` | `->L7578` | | -| 7579 | `if f.h_segment_crosses_other_section(geom.lead_x, geom.corner_x, geom.band0_y):` | `->L7580` | | -| 7581 | `if f.h_segment_crosses_other_section(geom.corner_x, geom.vx, geom.band1_y):` | `->L7582` | | +| 4361 | `while cur is not None and cur not in seen:` | `->L4377` | | +| 4370 | `if cur in graph.junctions:` | `->L4376` | | +| 4457 | `if (` | `->L4463` | | +| 4646 | `if geometry is None:` | `->L4647` | | +| 4745 | `if abs(tgt.x - src.x) <= ctx.curve_radius:` | `->L4746` | | +| 4758 | `if _h_segment_crosses_other_section(graph, src.x, final_x, src.y, exclude):` | `->L4759` | **defensive** -- Traverse-first clearance test in _top_entry_side_fan_traverse_clears (#1349). The below-side fan branch only reaches this gate when its junction also feeds an aligned straight drop; the corpus fan sits a clear row above its target, so the source-Y traverse never crosses another section and the fall-back-to-staircase arm is not exercised. Defensive. | +| 4886 | `if abs(tgt.x - src.x) > COORD_TOLERANCE or src.id not in ctx.graph.junctions:` | `->L4887` | | +| 4921 | `if feeder is not None:` | `->L4926` | | +| 5098 | `if len(points) < 3:` | `->L5099` | | +| 5150 | `if not section_ids:` | `->L5151` | | +| 5230 | `if mid_y is None:` | `->L5247` | | +| 5262 | `channel_y is None` | `->L5292` | | +| 5264 | `and src_sec is not None` | `->L5292` | **defensive** -- Inter-row exit mid-Y clearance bump (the n>1 multi-line branch). When more than one line shares the exit the source section always resolves, so the `src_sec is None` short-circuit past the clearance bump is never taken. | +| 5265 | `and tgt_sec is not None` | `->L5292` | **defensive** -- Companion to src_sec in the same n>1 mid-Y clearance branch: the target section always resolves there, so the `tgt_sec is None` short-circuit past the bump is never taken. | +| 5294 | `if exit_side is not None:` | `->L5296` | | +| 5296 | `elif abs(dx) > ctx.curve_radius:` | `->L5297`, `->L5299` | | +| 5300 | `if src.id in ctx.graph.junctions:` | `->L5301`, `->L5313` | **needs-review** -- Reachable only via a defective render (LR->TB TOP-entry routing); see #720. | +| 5301 | `for je in ctx.graph.edges_to(src.id):` | `->L5302`, `->L5313` | | +| 5303 | `if js.is_port:` | `->L5301`, `->L5304` | | +| 5304 | `if abs(js.x - src.x) <= COORD_TOLERANCE:` | `->L5305`, `->L5307` | | +| 5319 | `if exit_side is not None and not straight_drop:` | `->L5329` | | +| 5367 | `if not straight_drop:` | `->L5371` | **needs-review** -- A top-entry fan branch fed straight from directly above the junction (straight_drop) keeps its lead-in column at the source X rather than the shared fan pivot; the corpus's fan branches all carry horizontal travel, so the straight-drop arm is unexercised. | +| 5369 | `if lead is Direction.R:` | `->L5371` | **needs-review** -- A top-entry fan branch leading LEFT out of the junction skips the _v1_corner_x right-edge clearance bump; the corpus's fan branches all lead right, so the left-lead arm is unexercised. | +| 5396 | `if straight_drop:` | `->L5397` | | +| 5473 | `if ctx.exit_turns is None:` | `->L5474` | | +| 5558 | `if src_sec is None or tgt_sec is None or src_sec.grid_row >= tgt_sec.grid_row:` | `->L5561` | | +| 5728 | `if src_section and src_section.bbox_w > 0:` | `->L5729` | | +| 5749 | `if tgt_sec is None:` | `->L5750` | | +| 5820 | `if src_col is None:` | `->L5821` | | +| 6055 | `if src_sec is not None:` | `->L6086` | **defensive** -- Defensive guard in the fanned entry-wrap source-clearance lift: a fan-out junction always resolves to its source section, so the None arm is unreachable in practice. | +| 6092 | `if tgt_col is not None:` | `->L6097` | **defensive** -- tgt_col from _resolve_section_col on a valid LEFT entry port is always non-None (sections get grid_col>=0 after auto-layout). | +| 6094 | `if shared_vx is not None:` | `->L6097` | **defensive** -- _fan_left_entry_descent_x returns None only when col_left<=0; col_left_edge for the target's own column is always >0. | +| 6220 | `if entry_side is PortSide.LEFT:` | `->L6223` | | +| 6288 | `if entry_port is None:` | `->L6289` | **defensive** -- _route_around_section_below is always called with a non-None entry_port (both dispatch sites pass a checked station). | +| 6299 | `if trunk_src is None or trunk_src == edge.source:` | `->L6301` | **needs-review** -- Reachable only via a defective render (merge-junction tangle); see #721. | +| 6352 | `if col_left <= 0.0:` | `->L6353` | **defensive** -- col_left_edge's 0.0 default only fires for a column with no sections; the target's own column always holds its section. | +| 6389 | `if entry_port is None:` | `->L6390` | **defensive** -- Every caller of _corridor_is_viable passes a non-None entry_port. | +| 6396 | `if src_row is None or ep_row is None or src_col is None or ep_col is None:` | `->L6397` | **defensive** -- _resolve_section_colrow returns (None,None) only for a station with no section; valid entry ports always have a section with non-negative grid coords. | +| 6484 | `if fan is not None and corridor is not None and corridor.band_y is not None:` | `->L6488` | **needs-review** -- Corridor-feeder shared inter-row band gate: the corpus's corridor feeders belong to fans whose corridor carries a band_y, so the short-circuit past it (no corridor or bypass-only) is unexercised; it falls to the elif fan-is-not-None global-band branch. | +| 6488 | `elif fan is not None:` | `->L6492`, `->L6497` | **needs-review** -- Corridor-feeder fallback for a fan whose junction earned no corridor (its in-column gap below does not fit the bundle); the corpus's fans all earn a corridor, so this global-band branch is unexercised. | +| 6497 | `elif gap_bottom > gap_top:` | `->L6498`, `->L6502` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6507 | `if fan is None and gap_bottom > gap_top:` | `->L6508` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6521 | `if fan is not None and ep_col is not None:` | `->L6523` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6523 | `if vx is None:` | `->L6524` | **needs-review** -- Reachable only via a defective render (inter-row corridor on a <78px gap); see #722. | +| 6625 | `if ep_section and ep_section.bbox_w > 0:` | `->L6628` | **defensive** -- entry_port.section_id is always set and the section has bbox_w>0 after layout; the else arm never fires. | +| 6923 | `if claim.line_id != edge.line_id or claim.owner_source == edge.source:` | `->L6925` | | +| 6925 | `if not (corner_x - COORD_TOLERANCE <= claim.x <= gap_right + COORD_TOLERANCE):` | `->L6926`, `->L6927` | | +| 6927 | `if min(hi, claim.y_hi) - max(lo, claim.y_lo) > COORD_TOLERANCE:` | `->L6922`, `->L6928` | | +| 7024 | `if (` | `->L6994` | | +| 7044 | `if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):` | `->L7045` | | +| 7177 | `if gap_bottom <= gap_top:` | `->L7178` | **defensive** -- The row-gap enforcer keeps stacked rows separated, so the inter-row band above a target row (row_bottom_edge(tgt_row-1) up to row_top_edge(tgt_row)) has positive height whenever a RIGHT entry is fed from a higher row; the degenerate-band arm guards an abutting-rows layout placement never produces. | +| 7181 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7182` | **defensive** -- Band-fit test in _right_entry_gap_above_is_clear (#889), reached only when the cross-row RIGHT-entry drop-in is not clear (the exotic blocked-descent case above). The corpus always takes the drop-in, so neither arm of the gap-above fallback is exercised. Defensive. | +| 7337 | `if gap_bottom <= gap_top:` | `->L7338` | | +| 7339 | `if not _inter_row_band_fits(gap_top, gap_bottom):` | `->L7340` | | +| 7350 | `if f.v_segment_crosses_other_section(vx, gy, tgt.y):` | `->L7351` | | +| 7445 | `if source is None or source.bbox_w <= 0:` | `->L7446` | | +| 7450 | `if source.id not in members:` | `->L7451` | | +| 7456 | `if other.bbox_x <= source_right + COORD_TOLERANCE:` | `->L7457` | | +| 7458 | `if cellmate_left is None or other.bbox_x < cellmate_left:` | `->L7452` | | +| 7460 | `if cellmate_left is None:` | `->L7461` | | +| 7498 | `if band0_bottom <= band0_top or not _inter_row_band_fits(band0_top, band0_bottom):` | `->L7499` | | +| 7500 | `if band1_bottom <= band1_top or not _inter_row_band_fits(band1_top, band1_bottom):` | `->L7501` | | +| 7502 | `if band1_top <= band0_bottom + COORD_TOLERANCE:` | `->L7503` | | +| 7518 | `if f.v_segment_crosses_other_section(corner_x, band0_y, band1_y, exclude):` | `->L7519` | | +| 7575 | `if geom is None:` | `->L7576` | | +| 7578 | `if f.v_segment_crosses_other_section(geom.lead_x, src.y, geom.band0_y):` | `->L7579` | | +| 7580 | `if f.h_segment_crosses_other_section(geom.lead_x, geom.corner_x, geom.band0_y):` | `->L7581` | | +| 7582 | `if f.h_segment_crosses_other_section(geom.corner_x, geom.vx, geom.band1_y):` | `->L7583` | | ## `intra_handlers.py` @@ -801,14 +801,13 @@ Gates with an un-exercised arm: ## `member_geometry.py` -117/173 gates fully exercised. +116/173 gates fully exercised. Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 264 | `if (` | `->L272` | | -| 279 | `if (` | `->L285`, `->L286` | | +| 279 | `if (` | `->L286` | | | 313 | `for (` | `->L320`, `->L333` | | | 320 | `if (` | `->L324`, `->L325` | | | 331 | `if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:` | `->L313`, `->L332` | | @@ -834,6 +833,7 @@ Gates with an un-exercised arm: | 1043 | `if edge is None or family_id is None:` | `->L1044` | | | 1121 | `if channel is None:` | `->L1122` | | | 1124 | `if claim in channel_claims:` | `->L1125` | | +| 1145 | `if claim not in channel_claims:` | `->L1146` | | | 1196 | `if direction not in (Direction.U, Direction.D):` | `->L1197` | | | 1199 | `if target.section_id is None:` | `->L1200` | | | 1284 | `if route.exit_lane_transition_plan_id is not None:` | `->L1285` | | @@ -849,7 +849,8 @@ Gates with an un-exercised arm: | 1884 | `if 0 <= rank - 1 < len(radii):` | `->L1886` | | | 1886 | `if rank < len(radii):` | `->L1888` | | | 1925 | `elif abs(start[0] - end[0]) <= COORD_TOLERANCE:` | `->L1908` | | -| 1953 | `if all(` | `->L1949` | | +| 1951 | `if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:` | `->L1953` | | +| 1953 | `if all(` | `->L1949`, `->L1958` | | | 2032 | `if movable_run:` | `->L2033` | | | 2083 | `if context is not None:` | `->L2098` | **defensive** -- _convergence_context_route returns None only when ctx.edge_by_key has no entry for the key, and edge_by_key is built from every graph.edge while the key comes from scaffold.edge_order, which is derived from the same edges. Same never-taken lookup as the sibling `if edge is None` guard on the non-convergence path (0 of 141 fixtures). | | 2099 | `if key in ctx.skip_edges:` | `->L2100` | **candidate-dead** -- Subsumed by the convergence-edge check two lines above. Instrumenting all 348 fixtures: ctx.skip_edges holds exactly one merge-junction->entry-port hop, it is always present in scaffold.edge_order, and it is always also a convergence member edge, so the loop continues at the convergence arm and never tests skip_edges (0 of 141 fixtures). Proposed simplification: drop the two lines. Not applied here -- deletion is a deliberate separate pass, and a skip hop that is not convergence-owned is not ruled out by contract. | @@ -866,7 +867,7 @@ Gates with an un-exercised arm: ## `normalize.py` -433/604 gates fully exercised. +434/604 gates fully exercised. Gates with an un-exercised arm: @@ -980,8 +981,7 @@ Gates with an un-exercised arm: | 3808 | `if best < cur:` | `->L3796`, `->L3809` | **defensive** -- _suboptimal_trunk_bands crossing-comparison: validate-only, not on the render path. | | 3878 | `if (` | `->L3883` | | | 3940 | `band is not None` | `->L3945` | | -| 3941 | `and band.boundary is None` | `->L3942` | | -| 3942 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3944`, `->L3945` | | +| 3942 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3945` | | | 4038 | `if band is not None:` | `->L4043` | | | 4062 | `elif up_ok:` | `->L4065` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | | 4108 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4117` | | @@ -989,20 +989,20 @@ Gates with an un-exercised arm: | 4118 | `if cross_below is not None and cross_above is not None:` | `->L4126` | | | 4119 | `if reconcile_owned_corridor:` | `->L4125` | | | 4133 | `if below_ok and above_ok and (cross_below is None) != (cross_above is None):` | `->L4134` | | +| 4135 | `elif below_ok and (not above_ok or prefer_below):` | `->L4136` | | | 4137 | `elif above_ok:` | `->L4140` | **defensive** -- Distinct-line dogleg move-up/skip branch: unreachable because the below branch is always taken (t.y == hit.y, below_ok true); covers both the move-up and the gap-too-tight continue. | | 4140 | `if reconcile_owned_corridor:` | `->L4141`, `->L4144` | | +| 4211 | `if changed:` | `->L4212` | | | 4230 | `if ctx.convergences is None:` | `->L4231` | | -| 4273 | `for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):` | `->L4293` | | | 4275 | `if target_y is None:` | `->L4276` | | -| 4278 | `if (` | `->L4289` | | | 4297 | `or abs(corner[1] - after[1]) > COORD_TOLERANCE` | `->L4299` | | | 4310 | `if obstacle.route.line_id == route.line_id:` | `->L4311` | | | 4312 | `if rank == trunk.idx:` | `->L4317` | | | 4313 | `if rank < 2:` | `->L4314` | | | 4317 | `if rank + 1 >= len(points):` | `->L4318`, `->L4319` | | | 4320 | `if abs(far[1] - near[1]) > COORD_TOLERANCE:` | `->L4321` | | +| 4339 | `if _convergence_plan_names_column(route, before, corner, gap, ctx):` | `->L4340` | | | 4449 | `if band is None:` | `->L4450` | | -| 4455 | `if abs(shift) <= COORD_TOLERANCE or any(` | `->L4459` | | | 4480 | `and span[0] < crossed[1]` | `->L4481` | | | 4481 | `and crossed[0] < span[1]` | `->L4472`, `->L4483` | **defensive** -- Second half of the crossed-axis overlap test in _run_enters_section, reached only once the first half holds. No corpus separation target reaches it, so its short-circuit arm never fires. | | 4591 | `if i in relocated:` | `->L4592` | **defensive** -- Re-entry skip in the co-travelling separation worklist. A track is re-queued only while it is still un-relocated, so the second copy of a track queued twice before its first pop is the only way to reach the skip; across the corpus every re-queued track is popped before it moves, so the taken arm never fires. Defensive against a crowded stack whose neighbours re-queue one track twice, where taking it twice would break the one-move-per-track bound. | @@ -1242,7 +1242,7 @@ Gates with an un-exercised arm: ## `reserved_bands.py` -20/31 gates fully exercised. +19/31 gates fully exercised. Gates with an un-exercised arm: @@ -1251,6 +1251,7 @@ Gates with an un-exercised arm: | 63 | `if self.hi < self.lo - COORD_TOLERANCE:` | `->L64` | **defensive** -- The invariant the router relies on: a band handed to _center_inter_row_channel or centre_inter_column_channel always holds a channel, so the narrow-gap fallback cannot be reached for a claimed corridor. build_reserved_corridors filters an empty intersection out before constructing a band, so the raise guards direct construction only. | | 65 | `if self.allocation is not None and not math.isfinite(self.allocation):` | `->L66` | **defensive** -- Published allocations originate from finite observed route coordinates plus finite reservation translations. A non-finite value can only reach ReservedBand through malformed direct construction; the guard keeps invalid coordinates out of planner seating. | | 204 | `if boundary is None:` | `->L205` | **defensive** -- Optional-boundary convenience for callers carrying an unresolved grid index (_left_exit_wrap_over_top_y takes tgt_row: int \| None). Such a caller returns before it needs a band -- with no target row there is no gap above it to measure, so the wrap is rejected first -- leaving this arm a type-level accommodation no topology reaches. | +| 309 | `if lower > upper + COORD_TOLERANCE:` | `->L310` | | | 354 | `if seat is None:` | `->L355` | | | 411 | `if not isinstance(` | `->L414` | | | 420 | `if content_band is not None:` | `->L422` | | diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 752b553a8..9985ccd07 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -383,11 +383,13 @@ "exit_turns.py::if abs(turn_delta) <= COORD_TOLERANCE:::#2", "exit_turns.py::if actual_run is not source_run_direction:::#1", "exit_turns.py::if any(::#1", - "exit_turns.py::if any(::#4", + "exit_turns.py::if any(::#2", + "exit_turns.py::if any(::#5", "exit_turns.py::if any(len(runs) > 1 for runs in straight_runs_by_lane.values()):::#1", "exit_turns.py::if any(route is None for route in sibling_routes):::#1", "exit_turns.py::if assignment.planned_family_id is RouteFamilyId.BOTTOM_EXIT_JUNCTION:::#1", "exit_turns.py::if assignment.planned_family_id is not RouteFamilyId.TB_BOTTOM_EXIT:::#1", + "exit_turns.py::if branch_y <= source.y:::#1", "exit_turns.py::if ctx.exit_turns is None:::#1", "exit_turns.py::if ctx.exit_turns is None:::#2", "exit_turns.py::if current.keys() != snapshot.geometry.keys():::#1", @@ -427,7 +429,6 @@ "exit_turns.py::if not replacements:::#1", "exit_turns.py::if off_column_decline is not None and source_run_direction not in {::#1", "exit_turns.py::if opening is not None:::#1", - "exit_turns.py::if outer_x <= source.x + ctx.curve_radius or branch_y <= source.y:::#1", "exit_turns.py::if overridden_dispositions:::#1", "exit_turns.py::if owner is not None:::#1", "exit_turns.py::if owners and plan.id not in owners:::#1", @@ -457,7 +458,7 @@ "exit_turns.py::if trunk_edge is None:::#1", "exit_turns.py::if tuple(route.points[: len(opening.points)]) != opening.points:::#1", "exit_turns.py::incoming is None::#1", - "exit_turns.py::min(horizontal.xa, horizontal.xb) < outer_x - COORD_TOLERANCE::#1", + "exit_turns.py::min(horizontal.xa, horizontal.xb) < exit_x - COORD_TOLERANCE::#1", "exit_turns.py::or abs(geometry.cross_lo - target_crossing) > COORD_TOLERANCE::#1", "exit_turns.py::or abs(source_crossing - target_crossing) > COORD_TOLERANCE::#1", "exit_turns.py::or assignment.launch_coordinate is None::#1", @@ -518,7 +519,6 @@ "inter_section_handlers.py::if _leadout_self_meets_sibling_descent(ctx, edge, corner_x, f.sy, hy, gap_right):::#1", "inter_section_handlers.py::if _v_segment_crosses_other_section(graph, corner_x, src.y, ey, exclude):::#1", "inter_section_handlers.py::if _would_route_around_section_below(other, ctx):::#1", - "inter_section_handlers.py::if abs(axis_x - sx) > COORD_TOLERANCE:::#1", "inter_section_handlers.py::if abs(ep.y - f.sy) < ctx.curve_radius:::#1", "inter_section_handlers.py::if abs(js.x - src.x) <= COORD_TOLERANCE:::#1", "inter_section_handlers.py::if abs(start[0] - end[0]) > COORD_TOLERANCE:::#1", @@ -678,7 +678,6 @@ "member_geometry.py::before is None::#1", "member_geometry.py::elif abs(start[0] - end[0]) <= COORD_TOLERANCE:::#1", "member_geometry.py::for (::#1", - "member_geometry.py::if (::#2", "member_geometry.py::if (::#3", "member_geometry.py::if (::#4", "member_geometry.py::if (::#8", @@ -687,11 +686,13 @@ "member_geometry.py::if _planner_owns_channel(::#1", "member_geometry.py::if abs(actual_radius - expected_radius) > COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE:::#1", + "member_geometry.py::if abs(clamped - coordinate) <= COORD_TOLERANCE_FINE:::#1", "member_geometry.py::if actual != (channel.start, channel.end):::#1", "member_geometry.py::if all(::#1", "member_geometry.py::if allocated is None:::#1", "member_geometry.py::if channel is None:::#1", "member_geometry.py::if claim in channel_claims:::#1", + "member_geometry.py::if claim not in channel_claims:::#1", "member_geometry.py::if context is not None:::#1", "member_geometry.py::if convergence_owns_segment_boundary(route, segment_rank):::#1", "member_geometry.py::if coordinate is not None:::#1", @@ -733,7 +734,6 @@ "member_geometry.py::or after is None::#1", "normalize.py::abs(drawn[-1][0] - start_drawn[0]) > COORD_TOLERANCE::#1", "normalize.py::abs(p0[1] - p1[1]) > COORD_TOLERANCE::#1", - "normalize.py::and band.boundary is None::#1", "normalize.py::and band.hi >= band.lo - COORD_TOLERANCE::#1", "normalize.py::and base_in is not None::#1", "normalize.py::and base_out is not None::#1", @@ -744,12 +744,12 @@ "normalize.py::band is not None::#1", "normalize.py::dx is None::#1", "normalize.py::elif above_ok:::#1", + "normalize.py::elif below_ok and (not above_ok or prefer_below):::#1", "normalize.py::elif far_y < t.y - COORD_TOLERANCE:::#1", "normalize.py::elif right_ok:::#1", "normalize.py::elif up_ok:::#1", "normalize.py::for _ in range(max(1, len(buckets))):::#1", "normalize.py::for _step in range(64):::#1", - "normalize.py::for _upper, top, bottom in reversed(tuple(iter_inter_row_gaps(ctx.graph))):::#1", "normalize.py::for ch in downs:::#1", "normalize.py::for delta in (step, -step):::#1", "normalize.py::for descent in downs:::#1", @@ -762,11 +762,11 @@ "normalize.py::go is not None::#1", "normalize.py::if (::#1", "normalize.py::if (::#11", - "normalize.py::if (::#15", "normalize.py::if (::#9", "normalize.py::if (cross_below is not None and cross_above is not None) or not (::#1", "normalize.py::if 0 <= k - 1 < len(rp.curve_radii):::#1", "normalize.py::if None in convergence_plan_ids or len(convergence_plan_ids) != 1:::#1", + "normalize.py::if _convergence_plan_names_column(route, before, corner, gap, ctx):::#1", "normalize.py::if _planner_owns_channel(ch) and (::#2", "normalize.py::if _section_intrudes(::#1", "normalize.py::if _snap_reverses_adjacent_run(ch, ref_x):::#1", @@ -782,7 +782,6 @@ "normalize.py::if abs(old_run) > COORD_TOLERANCE and old_run * new_run < 0:::#1", "normalize.py::if abs(overlap) > COORD_TOLERANCE:::#1", "normalize.py::if abs(prior[1] - corner[1]) <= COORD_TOLERANCE:::#1", - "normalize.py::if abs(shift) <= COORD_TOLERANCE or any(::#1", "normalize.py::if abs(turn[1] - start[1]) > COORD_TOLERANCE or abs(dx) <= COORD_TOLERANCE:::#1", "normalize.py::if abs(up.x - descent.x) > radius:::#1", "normalize.py::if abs(up[-1][1] - up[-2][1]) <= COORD_TOLERANCE:::#1", @@ -806,6 +805,7 @@ "normalize.py::if bool(mover.convergence_owned_segment_ranks) and not bool(::#1", "normalize.py::if boundary_dogleg_stitch(rp, ch, target):::#1", "normalize.py::if ch.route.convergence_plan_id is not None:::#1", + "normalize.py::if changed:::#2", "normalize.py::if channel is None:::#1", "normalize.py::if channel.idx == 0:::#1", "normalize.py::if col in moved:::#1", @@ -1048,6 +1048,7 @@ "reserved_bands.py::if band is None:::#2", "reserved_bands.py::if boundary is None:::#1", "reserved_bands.py::if content_band is not None:::#1", + "reserved_bands.py::if lower > upper + COORD_TOLERANCE:::#1", "reserved_bands.py::if not isinstance(::#1", "reserved_bands.py::if realised is None:::#2", "reserved_bands.py::if seat is None:::#1", From b7966ff59aeb4f493f255f01b048680a6cf38d7d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 08:42:13 +0100 Subject: [PATCH 154/158] fix(routing): join a shared exit opening to the lane stack it descends into The opening measured its branch corridor as a full turn radius below every trunk it had to pass, so the pair landed in a band of its own beneath the whole bottom-corridor stack. That band deepens the corridor for every route sharing it and re-packs the columns feeding it: risers that had been seated outside an exempt trunk's reach were pushed inside it, and one of them then crossed the trunk it was cleared off instead of running parallel to it. The corridor the pair parts on now sits one lane pitch under the deepest trunk it passes, which is the pitch that stack is already packed on; the full radius is kept only against a section box, which is what needs the room. (cherry picked from commit 68c399c57f79bc7087dd4a7e274709d90c376389) --- src/nf_metro/layout/routing/exit_turns.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index 7c1a6b50e..ca17af268 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -11,6 +11,7 @@ from nf_metro.layout.constants import ( COORD_TOLERANCE, MIN_STRAIGHT_EDGE, + OFFSET_STEP, ) from nf_metro.layout.route_plan import ( CoordinateRegime, @@ -2337,6 +2338,13 @@ def _shared_left_exit_opening( crossing trunk sets how far down that corridor sits; it does not push the descent off to the section's far side, because reaching around the box the line just left reads worse than a bridged crossing. + + The pair joins the lane stack the trunks it passes already form, one + ``OFFSET_STEP`` under the deepest of them, rather than reserving a fresh + turn-radius band beneath the whole stack: a band of its own deepens the + corridor for everyone and re-packs the columns feeding it, which transposes + risers against the trunks they have to clear. Only a section box it must + clear buys the full radius. """ if len(member_edges) != 2 or len({edge.line_id for edge in member_edges}) != 1: return None @@ -2463,7 +2471,7 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: barrier, barrier_section_bottom = barriers[0] exit_x = source.x - ctx.curve_radius target_x = min(fact.tgt.x for fact in facts) - crossing_trunk_bottom = barrier_section_bottom + crossing_trunk_bottom = max(barrier.y, barrier.before_y, barrier.after_y) for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): trunk_edge = next( ( @@ -2490,14 +2498,9 @@ def crosses(first: RoutedPath, second: RoutedPath) -> bool: horizontal.before_y, horizontal.after_y, ) - branch_y = ( - max( - barrier.y, - barrier.before_y, - barrier.after_y, - crossing_trunk_bottom, - ) - + 2 * ctx.curve_radius + branch_y = max( + crossing_trunk_bottom + OFFSET_STEP, + barrier_section_bottom + 2 * ctx.curve_radius, ) if branch_y <= source.y: return None From 3dcf2b8e0d9b787646891dde6fa3f34c1c1c5b37 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sat, 15 Aug 2026 08:58:46 +0100 Subject: [PATCH 155/158] test(routing): re-derive the seed_15 exit-opening locks from its settled corridor The pair parts one lane pitch under the trunks it passes rather than a turn radius below them, so its branch corridor and the bypass sharing that gap both sit a band higher. (cherry picked from commit c905cc573676f00fb1002fe1d6ac7d6d7cda1235) --- docs/dev/routing_gate_coverage.md | 269 +++++++++--------- .../data/routing_gate_coverage_baseline.json | 1 - tests/test_convergence_planner.py | 4 +- tests/test_final_convergence_feasibility.py | 2 +- tests/test_member_geometry.py | 6 +- 5 files changed, 140 insertions(+), 142 deletions(-) diff --git a/docs/dev/routing_gate_coverage.md b/docs/dev/routing_gate_coverage.md index e69377077..5df0b3991 100644 --- a/docs/dev/routing_gate_coverage.md +++ b/docs/dev/routing_gate_coverage.md @@ -12,7 +12,7 @@ Auto-generated by `scripts/routing_gate_coverage.py` under CPython 3.11 with `PY Each row is a branch point (a *gate*) in a `layout/routing/` dispatch handler or post-pass. A gate has two or more arms; the cells list how many corpus fixtures exercise each arm. An arm reached by **0 fixtures** is an un-exercised gate arm: either no shipped topology takes that path (author a fixture, or confirm it is defensive/dead). -**2418/3516** gates fully exercised (both/all arms hit by some fixture); **1098** gates have at least one un-exercised arm. +**2419/3516** gates fully exercised (both/all arms hit by some fixture); **1097** gates have at least one un-exercised arm. Modules scoped to routing decision gates; `invariants.py` (the `validate=True` checker) and `__init__.py` are excluded. @@ -450,138 +450,138 @@ Gates with an un-exercised arm: | Line | Gate | Un-exercised arm(s) | Triage | | ---: | --- | --- | --- | -| 516 | `if not replacements:` | `->L517` | | -| 747 | `if key not in ctx.station_offsets and port_key not in ctx.station_offsets:` | `->L748` | | -| 760 | `if len({coordinate for _line, _offset, coordinate in values}) != len(values):` | `->L761` | | -| 833 | `if source_run_direction not in {Direction.R, Direction.L}:` | `->L834` | | -| 923 | `if source_run_direction not in run_axis:` | `->L924` | | -| 928 | `if abs(delta) <= COORD_TOLERANCE:` | `->L929` | | -| 932 | `if horizontal:` | `->L935` | | -| 936 | `if actual_run is not source_run_direction:` | `->L937` | | -| 967 | `if route is None:` | `->L968` | | -| 970 | `if len(points) < 3:` | `->L971` | | -| 975 | `if run_direction is None or turn_direction is None:` | `->L976` | | -| 1002 | `if off_column_decline is not None and source_run_direction not in {` | `->L1006` | | -| 1007 | `if family_id is RouteFamilyId.MERGE_ENTRY_STRAIGHT:` | `->L1008` | | -| 1102 | `if entry_geometry.seam.turn_direction is None:` | `->L1103` | | -| 1188 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1189` | | -| 1216 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1217` | **defensive** -- _plain_l_shape_turn_requirement's flat-hop guard, which both its callers exclude: _standard_l_shape_turn_requirement returns its own missing-source-turn for a flat delta before delegating, and the cell-mate gap drop only classifies when the target section sits one grid row below the source (_bypass_route_kind requires tgt_row == src_row + 1), which puts the two ports on different rows. The duplicated guard therefore never fires. | -| 1345 | `if kind is _BypassRoute.LEFT_ENTRY_FAMILY:` | `->L1346` | | -| 1349 | `if kind is _BypassRoute.RIGHT_ENTRY_CROSS_ROW:` | `->L1350` | | -| 1351 | `if kind is _BypassRoute.L_SHAPE:` | `->L1352` | | -| 1358 | `if kind is _BypassRoute.LEFT_EXIT_AROUND_BELOW:` | `->L1359` | | -| 1491 | `if primary_delta * run_direction.sign < 2 * MIN_STRAIGHT_EDGE + diagonal:` | `->L1492` | | -| 1518 | `if direction_axis(transition.run_direction) is DemandAxis.X:` | `->L1522` | | -| 1573 | `if len(candidates) != 1:` | `->L1574` | | -| 1580 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1581` | | -| 1608 | `if transition is None:` | `->L1609` | | -| 1645 | `target_crossing is None` | `->L1648` | | -| 1646 | `or abs(source_crossing - target_crossing) > COORD_TOLERANCE` | `->L1648` | | -| 1670 | `target_crossing is None` | `->L1673` | | -| 1671 | `or abs(geometry.cross_lo - target_crossing) > COORD_TOLERANCE` | `->L1673` | | -| 1683 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1684` | | -| 1709 | `if transition is None:` | `->L1710` | | -| 1743 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1744` | | -| 1802 | `if len(entry_group_ids) != 1:` | `->L1803` | | -| 1809 | `if family_id is None:` | `->L1810` | | -| 1838 | `requirement.run_direction is not None` | `->L1851` | | -| 1839 | `and requirement.turn_direction is not None` | `->L1851` | | -| 1840 | `and requirement.launch_coordinate is not None` | `->L1851` | | -| 1841 | `and requirement.minimum_runway is not None` | `->L1851` | | -| 1860 | `and requirement.turn_direction is not None` | `->L1867` | | -| 1872 | `and family_id is not RouteFamilyId.MERGE_ENTRY` | `->L1875` | | -| 1900 | `if any(len(runs) > 1 for runs in straight_runs_by_lane.values()):` | `->L1901` | **defensive** -- The opposed-source-run recogniser: a lane whose turn-less members disagree on the direction they leave the shared source. Every member of one exit group leaves through one exit port, whose side fixes the outward ray, and a collinear target on the other side of that port is a backward hop the engine rejects before routing. The arm names a classification that contradicts itself and declines the plan; no exit group produces it. | -| 2052 | `if any(` | `->L2063` | | -| 2077 | `if membership is not None and membership.axis is not None:` | `->L2078` | | -| 2155 | `if not _lane_arms_read_as_one_stroke(` | `->L2158` | **defensive** -- The reject protects a planner seed set where an unpinned cohort lands within one curve radius of a same-rank axis already claimed by a pinned cohort. Production topology planning pins or separates those cohorts before this check. test_free_lane_arm_overlapping_a_pinned_corner_uses_legacy constructs the incomplete seed set directly and covers the fallback reason. | -| 2272 | `if reason is not None:` | `->L2273` | | -| 2374 | `if source_exit_edge is None:` | `->L2375` | | -| 2378 | `if source_section is None:` | `->L2379` | | -| 2382 | `for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):` | `->L2396` | | -| 2404 | `if any(route is None for route in sibling_routes):` | `->L2405` | | -| 2419 | `entry_port is None` | `->L2425` | | -| 2420 | `or entry_section is None` | `->L2425` | | -| 2421 | `or entry_port.side is not PortSide.RIGHT` | `->L2425` | | -| 2423 | `or entry_section.grid_row != target_row` | `->L2425` | | -| 2434 | `if trunk_edge is None:` | `->L2435` | | -| 2451 | `if horizontal is None:` | `->L2452` | | -| 2453 | `if (` | `->L2410` | | -| 2459 | `if len(barriers) == 2:` | `->L2460` | | -| 2461 | `if len(barriers) != 1:` | `->L2462` | | -| 2483 | `min(horizontal.xa, horizontal.xb) < exit_x - COORD_TOLERANCE` | `->L2481` | | -| 2484 | `and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE` | `->L2481` | | -| 2485 | `and horizontal.y > source.y + COORD_TOLERANCE` | `->L2481` | | -| 2502 | `if branch_y <= source.y:` | `->L2503` | | -| 2504 | `if any(` | `->L2510` | | -| 2569 | `if not outbound_edges or missing_connectors:` | `->L2570` | | -| 2671 | `if final_classification.legacy_reason is not None:` | `->L2672` | | -| 2673 | `elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(` | `->L2676` | | -| 2946 | `if incumbent.id == plan.id:` | `->L2948` | | -| 3016 | `if owners and plan.id not in owners:` | `->L3017` | | -| 3017 | `for owner in owners:` | `->L3018`, `->L3019` | | -| 3032 | `and plan.id in conflicting_plan_ids` | `->L3034` | | -| 3050 | `and axis.fixed_anchor_offset is not None` | `->L3039` | | -| 3051 | `and abs(proposed - axis.fixed_anchor_offset) > COORD_TOLERANCE` | `->L3053` | | -| 3241 | `if abs(first_offset - second_offset) > COORD_TOLERANCE:` | `->L3243` | | -| 3243 | `for owner in (first_owner, second_owner):` | `->L3240`, `->L3244` | | -| 3244 | `if owner is not None:` | `->L3243`, `->L3245` | | -| 3251 | `if not additions:` | `->L3253` | | -| 3315 | `if assignment.planned_family_id is RouteFamilyId.BOTTOM_EXIT_JUNCTION:` | `->L3316` | | -| 3353 | `if route is None:` | `->L3354` | | -| 3359 | `if assignment.planned_family_id is not RouteFamilyId.TB_BOTTOM_EXIT:` | `->L3360` | | -| 3374 | `if route is None:` | `->L3375`, `->L3381` | | -| 3389 | `if geometry.bundle_offsets is None:` | `->L3390` | | -| 3482 | `if scaffold is None:` | `->L3483` | | -| 3490 | `if scaffold is None:` | `->L3491` | **defensive** -- The second None check protects the manual or incomplete graph fallback after rebuilding a missing retained scaffold. Parsed render-path graphs publish one canonical scaffold during fan planning, so the fixture corpus never reaches a rebuild that can return None. Direct planner tests retain the fallback for graph construction without topology. | -| 3529 | `if overridden_dispositions:` | `->L3530` | | -| 3531 | `for plan_id in overridden_dispositions:` | `->L3532`, `->L3543` | | -| 3587 | `if transition_key in transition_by_edge:` | `->L3588` | | -| 3611 | `if len(points) >= 3:` | `->L3618` | | -| 3614 | `segment_direction(before, start) is run_direction` | `->L3618` | | -| 3615 | `and segment_direction(start, end) is turn_direction` | `->L3618` | | -| 3659 | `assignment is None` | `->L3664` | | -| 3660 | `or membership.axis is None` | `->L3664` | | -| 3661 | `or assignment.run_direction is None` | `->L3664` | | -| 3662 | `or assignment.turn_direction is None` | `->L3664` | | -| 3710 | `if ctx.exit_turns is None:` | `->L3711` | | -| 3721 | `or route.fan_route_emitter is not None` | `->L3723` | | -| 3740 | `incoming is None` | `->L3744` | | -| 3741 | `or outgoing is None` | `->L3744` | | -| 3742 | `or direction_axis(incoming) is direction_axis(outgoing)` | `->L3744` | | -| 3767 | `if reference is None:` | `->L3768` | | -| 3786 | `if route.curve_radii is not None and rank < len(route.curve_radii):` | `->L3779` | | -| 3803 | `if ctx.exit_turns is None:` | `->L3804` | | -| 3814 | `if family_id is not assignment.planned_family_id:` | `->L3815` | | -| 3827 | `if (` | `->L3836` | | -| 3845 | `run is None` | `->L3850` | | -| 3846 | `or turn is None` | `->L3850` | | -| 3847 | `or assignment.launch_coordinate is None` | `->L3850` | | -| 3848 | `or assignment.minimum_runway is None` | `->L3850` | | -| 3854 | `if segment_rank is None:` | `->L3855` | | -| 3875 | `if planned_corner_offsets is None:` | `->L3876` | | -| 3942 | `if source_turn_changed and settled is None:` | `->L3943` | | -| 3970 | `if rank is None:` | `->L3971` | | -| 4037 | `if current.keys() != snapshot.geometry.keys():` | `->L4038` | | -| 4052 | `if current[key] != state:` | `->L4053` | | -| 4089 | `station_id not in graph.stations` | `->L4092` | | -| 4090 | `or lane.line_id not in graph.station_lines(station_id)` | `->L4092` | | -| 4098 | `if (station_id, lane.line_id) not in station_offsets or (` | `->L4105` | | -| 4113 | `if len(transition_routes) != 1:` | `->L4114` | | -| 4151 | `route.exit_lane_transition_plan_id != str(exit_turn_plan.id)` | `->L4156` | | -| 4152 | `or route.offset_regime is not OffsetRegime.BAKED` | `->L4156` | | -| 4153 | `or route.points != expected_route.points` | `->L4156` | | -| 4154 | `or route.curve_radii != expected_route.curve_radii` | `->L4156` | | -| 4172 | `if not _fixed_axis_matches_plan(` | `->L4177` | | -| 4183 | `if any(` | `->L4192` | | -| 4200 | `if len(member_routes) != 1:` | `->L4201` | | -| 4216 | `if opening is not None:` | `->L4217` | | -| 4217 | `if tuple(route.points[: len(opening.points)]) != opening.points:` | `->L4218`, `->L4221` | | -| 4222 | `if route.exit_turn_family_id != assignment.planned_family_id.value:` | `->L4223` | | -| 4230 | `if route.exit_turn_axis_id is not None:` | `->L4231` | | -| 4239 | `if (` | `->L4253` | | -| 4261 | `route.exit_turn_axis_id != str(assignment.axis_id)` | `->L4264` | | -| 4262 | `or route.exit_turn_segment_rank is None` | `->L4264` | | -| 4275 | `if (` | `->L4297` | | +| 517 | `if not replacements:` | `->L518` | | +| 748 | `if key not in ctx.station_offsets and port_key not in ctx.station_offsets:` | `->L749` | | +| 761 | `if len({coordinate for _line, _offset, coordinate in values}) != len(values):` | `->L762` | | +| 834 | `if source_run_direction not in {Direction.R, Direction.L}:` | `->L835` | | +| 924 | `if source_run_direction not in run_axis:` | `->L925` | | +| 929 | `if abs(delta) <= COORD_TOLERANCE:` | `->L930` | | +| 933 | `if horizontal:` | `->L936` | | +| 937 | `if actual_run is not source_run_direction:` | `->L938` | | +| 968 | `if route is None:` | `->L969` | | +| 971 | `if len(points) < 3:` | `->L972` | | +| 976 | `if run_direction is None or turn_direction is None:` | `->L977` | | +| 1003 | `if off_column_decline is not None and source_run_direction not in {` | `->L1007` | | +| 1008 | `if family_id is RouteFamilyId.MERGE_ENTRY_STRAIGHT:` | `->L1009` | | +| 1103 | `if entry_geometry.seam.turn_direction is None:` | `->L1104` | | +| 1189 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1190` | | +| 1217 | `if abs(turn_delta) <= COORD_TOLERANCE:` | `->L1218` | **defensive** -- _plain_l_shape_turn_requirement's flat-hop guard, which both its callers exclude: _standard_l_shape_turn_requirement returns its own missing-source-turn for a flat delta before delegating, and the cell-mate gap drop only classifies when the target section sits one grid row below the source (_bypass_route_kind requires tgt_row == src_row + 1), which puts the two ports on different rows. The duplicated guard therefore never fires. | +| 1346 | `if kind is _BypassRoute.LEFT_ENTRY_FAMILY:` | `->L1347` | | +| 1350 | `if kind is _BypassRoute.RIGHT_ENTRY_CROSS_ROW:` | `->L1351` | | +| 1352 | `if kind is _BypassRoute.L_SHAPE:` | `->L1353` | | +| 1359 | `if kind is _BypassRoute.LEFT_EXIT_AROUND_BELOW:` | `->L1360` | | +| 1492 | `if primary_delta * run_direction.sign < 2 * MIN_STRAIGHT_EDGE + diagonal:` | `->L1493` | | +| 1519 | `if direction_axis(transition.run_direction) is DemandAxis.X:` | `->L1523` | | +| 1574 | `if len(candidates) != 1:` | `->L1575` | | +| 1581 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1582` | | +| 1609 | `if transition is None:` | `->L1610` | | +| 1646 | `target_crossing is None` | `->L1649` | | +| 1647 | `or abs(source_crossing - target_crossing) > COORD_TOLERANCE` | `->L1649` | | +| 1671 | `target_crossing is None` | `->L1674` | | +| 1672 | `or abs(geometry.cross_lo - target_crossing) > COORD_TOLERANCE` | `->L1674` | | +| 1684 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1685` | | +| 1710 | `if transition is None:` | `->L1711` | | +| 1744 | `if direction_axis(run_direction) is DemandAxis.Y:` | `->L1745` | | +| 1803 | `if len(entry_group_ids) != 1:` | `->L1804` | | +| 1810 | `if family_id is None:` | `->L1811` | | +| 1839 | `requirement.run_direction is not None` | `->L1852` | | +| 1840 | `and requirement.turn_direction is not None` | `->L1852` | | +| 1841 | `and requirement.launch_coordinate is not None` | `->L1852` | | +| 1842 | `and requirement.minimum_runway is not None` | `->L1852` | | +| 1861 | `and requirement.turn_direction is not None` | `->L1868` | | +| 1873 | `and family_id is not RouteFamilyId.MERGE_ENTRY` | `->L1876` | | +| 1901 | `if any(len(runs) > 1 for runs in straight_runs_by_lane.values()):` | `->L1902` | **defensive** -- The opposed-source-run recogniser: a lane whose turn-less members disagree on the direction they leave the shared source. Every member of one exit group leaves through one exit port, whose side fixes the outward ray, and a collinear target on the other side of that port is a backward hop the engine rejects before routing. The arm names a classification that contradicts itself and declines the plan; no exit group produces it. | +| 2053 | `if any(` | `->L2064` | | +| 2078 | `if membership is not None and membership.axis is not None:` | `->L2079` | | +| 2156 | `if not _lane_arms_read_as_one_stroke(` | `->L2159` | **defensive** -- The reject protects a planner seed set where an unpinned cohort lands within one curve radius of a same-rank axis already claimed by a pinned cohort. Production topology planning pins or separates those cohorts before this check. test_free_lane_arm_overlapping_a_pinned_corner_uses_legacy constructs the incomplete seed set directly and covers the fallback reason. | +| 2273 | `if reason is not None:` | `->L2274` | | +| 2382 | `if source_exit_edge is None:` | `->L2383` | | +| 2386 | `if source_section is None:` | `->L2387` | | +| 2390 | `for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]):` | `->L2404` | | +| 2412 | `if any(route is None for route in sibling_routes):` | `->L2413` | | +| 2427 | `entry_port is None` | `->L2433` | | +| 2428 | `or entry_section is None` | `->L2433` | | +| 2429 | `or entry_port.side is not PortSide.RIGHT` | `->L2433` | | +| 2431 | `or entry_section.grid_row != target_row` | `->L2433` | | +| 2442 | `if trunk_edge is None:` | `->L2443` | | +| 2459 | `if horizontal is None:` | `->L2460` | | +| 2461 | `if (` | `->L2418` | | +| 2467 | `if len(barriers) == 2:` | `->L2468` | | +| 2469 | `if len(barriers) != 1:` | `->L2470` | | +| 2491 | `min(horizontal.xa, horizontal.xb) < exit_x - COORD_TOLERANCE` | `->L2489` | | +| 2492 | `and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE` | `->L2489` | | +| 2493 | `and horizontal.y > source.y + COORD_TOLERANCE` | `->L2489` | | +| 2505 | `if branch_y <= source.y:` | `->L2506` | | +| 2507 | `if any(` | `->L2513` | | +| 2572 | `if not outbound_edges or missing_connectors:` | `->L2573` | | +| 2674 | `if final_classification.legacy_reason is not None:` | `->L2675` | | +| 2676 | `elif tuple(seed.family_id for seed in final_classification.seeds) != tuple(` | `->L2679` | | +| 2949 | `if incumbent.id == plan.id:` | `->L2951` | | +| 3019 | `if owners and plan.id not in owners:` | `->L3020` | | +| 3020 | `for owner in owners:` | `->L3021`, `->L3022` | | +| 3035 | `and plan.id in conflicting_plan_ids` | `->L3037` | | +| 3053 | `and axis.fixed_anchor_offset is not None` | `->L3042` | | +| 3054 | `and abs(proposed - axis.fixed_anchor_offset) > COORD_TOLERANCE` | `->L3056` | | +| 3244 | `if abs(first_offset - second_offset) > COORD_TOLERANCE:` | `->L3246` | | +| 3246 | `for owner in (first_owner, second_owner):` | `->L3243`, `->L3247` | | +| 3247 | `if owner is not None:` | `->L3246`, `->L3248` | | +| 3254 | `if not additions:` | `->L3256` | | +| 3318 | `if assignment.planned_family_id is RouteFamilyId.BOTTOM_EXIT_JUNCTION:` | `->L3319` | | +| 3356 | `if route is None:` | `->L3357` | | +| 3362 | `if assignment.planned_family_id is not RouteFamilyId.TB_BOTTOM_EXIT:` | `->L3363` | | +| 3377 | `if route is None:` | `->L3378`, `->L3384` | | +| 3392 | `if geometry.bundle_offsets is None:` | `->L3393` | | +| 3485 | `if scaffold is None:` | `->L3486` | | +| 3493 | `if scaffold is None:` | `->L3494` | **defensive** -- The second None check protects the manual or incomplete graph fallback after rebuilding a missing retained scaffold. Parsed render-path graphs publish one canonical scaffold during fan planning, so the fixture corpus never reaches a rebuild that can return None. Direct planner tests retain the fallback for graph construction without topology. | +| 3532 | `if overridden_dispositions:` | `->L3533` | | +| 3534 | `for plan_id in overridden_dispositions:` | `->L3535`, `->L3546` | | +| 3590 | `if transition_key in transition_by_edge:` | `->L3591` | | +| 3614 | `if len(points) >= 3:` | `->L3621` | | +| 3617 | `segment_direction(before, start) is run_direction` | `->L3621` | | +| 3618 | `and segment_direction(start, end) is turn_direction` | `->L3621` | | +| 3662 | `assignment is None` | `->L3667` | | +| 3663 | `or membership.axis is None` | `->L3667` | | +| 3664 | `or assignment.run_direction is None` | `->L3667` | | +| 3665 | `or assignment.turn_direction is None` | `->L3667` | | +| 3713 | `if ctx.exit_turns is None:` | `->L3714` | | +| 3724 | `or route.fan_route_emitter is not None` | `->L3726` | | +| 3743 | `incoming is None` | `->L3747` | | +| 3744 | `or outgoing is None` | `->L3747` | | +| 3745 | `or direction_axis(incoming) is direction_axis(outgoing)` | `->L3747` | | +| 3770 | `if reference is None:` | `->L3771` | | +| 3789 | `if route.curve_radii is not None and rank < len(route.curve_radii):` | `->L3782` | | +| 3806 | `if ctx.exit_turns is None:` | `->L3807` | | +| 3817 | `if family_id is not assignment.planned_family_id:` | `->L3818` | | +| 3830 | `if (` | `->L3839` | | +| 3848 | `run is None` | `->L3853` | | +| 3849 | `or turn is None` | `->L3853` | | +| 3850 | `or assignment.launch_coordinate is None` | `->L3853` | | +| 3851 | `or assignment.minimum_runway is None` | `->L3853` | | +| 3857 | `if segment_rank is None:` | `->L3858` | | +| 3878 | `if planned_corner_offsets is None:` | `->L3879` | | +| 3945 | `if source_turn_changed and settled is None:` | `->L3946` | | +| 3973 | `if rank is None:` | `->L3974` | | +| 4040 | `if current.keys() != snapshot.geometry.keys():` | `->L4041` | | +| 4055 | `if current[key] != state:` | `->L4056` | | +| 4092 | `station_id not in graph.stations` | `->L4095` | | +| 4093 | `or lane.line_id not in graph.station_lines(station_id)` | `->L4095` | | +| 4101 | `if (station_id, lane.line_id) not in station_offsets or (` | `->L4108` | | +| 4116 | `if len(transition_routes) != 1:` | `->L4117` | | +| 4154 | `route.exit_lane_transition_plan_id != str(exit_turn_plan.id)` | `->L4159` | | +| 4155 | `or route.offset_regime is not OffsetRegime.BAKED` | `->L4159` | | +| 4156 | `or route.points != expected_route.points` | `->L4159` | | +| 4157 | `or route.curve_radii != expected_route.curve_radii` | `->L4159` | | +| 4175 | `if not _fixed_axis_matches_plan(` | `->L4180` | | +| 4186 | `if any(` | `->L4195` | | +| 4203 | `if len(member_routes) != 1:` | `->L4204` | | +| 4219 | `if opening is not None:` | `->L4220` | | +| 4220 | `if tuple(route.points[: len(opening.points)]) != opening.points:` | `->L4221`, `->L4224` | | +| 4225 | `if route.exit_turn_family_id != assignment.planned_family_id.value:` | `->L4226` | | +| 4233 | `if route.exit_turn_axis_id is not None:` | `->L4234` | | +| 4242 | `if (` | `->L4256` | | +| 4264 | `route.exit_turn_axis_id != str(assignment.axis_id)` | `->L4267` | | +| 4265 | `or route.exit_turn_segment_rank is None` | `->L4267` | | +| 4278 | `if (` | `->L4300` | | ## `inter_section.py` @@ -867,7 +867,7 @@ Gates with an un-exercised arm: ## `normalize.py` -434/604 gates fully exercised. +435/604 gates fully exercised. Gates with an un-exercised arm: @@ -982,7 +982,6 @@ Gates with an un-exercised arm: | 3878 | `if (` | `->L3883` | | | 3940 | `band is not None` | `->L3945` | | | 3942 | `and band.hi >= band.lo - COORD_TOLERANCE` | `->L3945` | | -| 4038 | `if band is not None:` | `->L4043` | | | 4062 | `elif up_ok:` | `->L4065` | **defensive** -- Same-line dogleg move-up / give-up fallback, reached only when both L1296 and L1298 are false. The true arm (->1301, move up because the lower gap is too tight) needs down_ok False and the else arm (->1303, leave fused) needs both rooms below min_sep; the reachable regime's inter-row band is auto-widened so both rooms stay >= min_sep=6 (observed 14/26), so neither is reached by a valid topology. | | 4108 | `if (cross_below is not None and cross_above is not None) or not (` | `->L4117` | | | 4111 | `if reconcile_owned_corridor:` | `->L4117` | | diff --git a/tests/data/routing_gate_coverage_baseline.json b/tests/data/routing_gate_coverage_baseline.json index 9985ccd07..1c0d34390 100644 --- a/tests/data/routing_gate_coverage_baseline.json +++ b/tests/data/routing_gate_coverage_baseline.json @@ -799,7 +799,6 @@ "normalize.py::if any(::#9", "normalize.py::if any(abs(channel.x - ref_x) > COORD_TOLERANCE for channel in planned[1:]):::#1", "normalize.py::if band is None:::#3", - "normalize.py::if band is not None:::#1", "normalize.py::if below_ok and above_ok and (cross_below is None) != (cross_above is None):::#1", "normalize.py::if best < cur:::#1", "normalize.py::if bool(mover.convergence_owned_segment_ranks) and not bool(::#1", diff --git a/tests/test_convergence_planner.py b/tests/test_convergence_planner.py index d3b62ea77..06243bf06 100644 --- a/tests/test_convergence_planner.py +++ b/tests/test_convergence_planner.py @@ -418,8 +418,8 @@ def test_seed_15_final_member_plan_owns_its_reconciled_bypass_trunk() -> None: assert route.points == [ (1612.0, 504.0), (1604.5, 504.0), - (1604.5, 608.0), - (1266.0, 608.0), + (1604.5, 592.0), + (1266.0, 592.0), (1266.0, 504.0), (1246.0, 504.0), ] diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index 11dddf4e6..6a3e1b992 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -363,7 +363,7 @@ def test_seed_15_shared_opening_short_tail_is_a_fixed_member_channel() -> None: if channel.segment_rank == len(member.exit_shared_opening_points) ) assert (tail.gap_lo_col, tail.row) == (5, 2) - assert (tail.start, tail.end) == ((1550.0, 604.0), (1550.0, 504.0)) + assert (tail.start, tail.end) == ((1550.0, 588.0), (1550.0, 504.0)) def test_shared_source_convergences_fuse_one_opening_carrier() -> None: diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index 818fd435b..d52f1ed3d 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -240,13 +240,13 @@ def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: opening = ( (1610.5, 338.0), (1600.5, 338.0), - (1600.5, 604.0), + (1600.5, 588.0), ) assert {plan.exit_shared_opening_points for plan in plans} == {opening} assert {plan.points[: len(opening)] for plan in plans} == {opening} assert {plan.edge.target: plan.points[len(opening) :] for plan in plans} == { - "s5__entry_right_16": ((1550.0, 604.0), (1550.0, 504.0), (1478.0, 504.0)), - "s6__entry_right_14": ((1270.0, 604.0), (1270.0, 500.0), (1246.0, 500.0)), + "s5__entry_right_16": ((1550.0, 588.0), (1550.0, 504.0), (1478.0, 504.0)), + "s6__entry_right_14": ((1270.0, 588.0), (1270.0, 500.0), (1246.0, 500.0)), } for plan in plans: assert plan.consumed_reservation_ids == () From 62d149e794ad7ebe0945fe20b6708c93632ce34c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Aug 2026 01:19:55 +0100 Subject: [PATCH 156/158] fix(routing): preserve frozen corridor lane order [skip ci] --- src/nf_metro/layout/routing/normalize.py | 122 ++++++++- src/nf_metro/layout/routing/reserved_bands.py | 68 +++-- ...test_fused_cotravelling_lines_invariant.py | 234 ++++++++++++++++++ tests/test_route_reservations.py | 83 +++++++ 4 files changed, 487 insertions(+), 20 deletions(-) diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 0b31e1bef..8a0d203e6 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -255,6 +255,59 @@ def _segment_claim_band( ) +def _segment_planned_order_coordinate( + ctx: _RoutingCtx, route: RoutedPath, idx: int +) -> float | None: + """The frozen claim coordinate used to compare lanes, never to place one.""" + return ctx.reserved_bands.planned_order_coordinate_for_segment( + route.edge.source, route.edge.target, route.line_id, idx + ) + + +def _frozen_order_coordinates( + ctx: _RoutingCtx, + groups: Sequence[Sequence[tuple[RoutedPath, int]]], + *, + require_single_common_source: bool, +) -> tuple[float, ...] | None: + """Return one complete, unambiguous frozen coordinate per compared group. + + Every member must publish a coordinate, every group must agree on one + coordinate, and the group coordinates must be distinct. Callers comparing + one emitted source cohort additionally require exactly one source shared by + every group. + """ + if len(groups) < 2 or any(not group for group in groups): + return None + if require_single_common_source: + source_sets = [{route.edge.source for route, _idx in group} for group in groups] + if len(set.intersection(*source_sets)) != 1: + return None + + frozen: list[float] = [] + for group in groups: + coordinates: list[float] = [] + for route, idx in group: + coordinate = _segment_planned_order_coordinate(ctx, route, idx) + if coordinate is None: + return None + coordinates.append(coordinate) + if any( + abs(coordinate - coordinates[0]) > COORD_TOLERANCE + for coordinate in coordinates[1:] + ): + return None + frozen.append(coordinates[0]) + + if any( + abs(first - second) <= COORD_TOLERANCE + for rank, first in enumerate(frozen) + for second in frozen[rank + 1 :] + ): + return None + return tuple(frozen) + + def _bundle_claim_band( ctx: _RoutingCtx, segments: Iterable[tuple[RoutedPath, int]] ) -> ReservedBand | None: @@ -3393,7 +3446,7 @@ def _stack_trunk_bands( can stack together; a single-direction caller passes bands that all share one dip. """ - planned = [_plan_trunk_band(b) for b in bands] + planned = [_plan_trunk_band(b, ctx) for b in bands] gap = BUNDLE_TO_BUNDLE_CLEARANCE total = sum((n - 1) * step for _o, _t, n in planned) + gap * (len(bands) - 1) top = min(t.y for b in bands for t in b) @@ -3647,6 +3700,7 @@ def _band_looseness( def _plan_trunk_band( band: list[_HTrunk], + ctx: _RoutingCtx, ) -> tuple[list[list[_HTrunk]], dict[int, int], int]: """Order one same-direction band into concentric slots and pack its tracks. @@ -3666,7 +3720,8 @@ def _plan_trunk_band( only appears elsewhere in X); among those the widest-reaching slot sorts OUTERMOST. A fully-overlapping bundle packs to one concentric stack whose looseness is zero for every order, so the width-only tie-break alone - decides it. + decides it. A fully claimed cohort from one source consumes the frozen + allocation order directly, before live crossing geometry can rank it. """ slot_groups = _coincident_trunk_slots(band) span_of: _SpanOf = {id(sg): _slot_span(sg) for sg in slot_groups} @@ -3678,7 +3733,7 @@ def _plan_trunk_band( min(t.y for t in sg), ), ) - if len(slot_groups) < 2 or len(slot_groups) > _MAX_BAND_PERMUTE: + if len(slot_groups) < 2: return heuristic, *_packed_track_map(heuristic, span_of) # `_restack_trunk_band` lays slot 0 at the channel-interior extreme: the @@ -3741,6 +3796,28 @@ def _key(perm: list[list[_HTrunk]]) -> tuple[float, ...]: for sg in slot_groups } slot_min_y = {id(sg): min(t.y for t in sg) for sg in slot_groups} + # One source shared by every slot defines the emission cohort whose lane + # order survives the corridor. No shared source or several shared sources + # leave the band with the global allocator. + frozen_coordinates = _frozen_order_coordinates( + ctx, + tuple( + tuple((trunk.route, trunk.idx) for trunk in slot) for slot in slot_groups + ), + require_single_common_source=True, + ) + if frozen_coordinates is not None: + coordinate_by_slot = dict(zip(map(id, slot_groups), frozen_coordinates)) + + def frozen_coordinate(slot: list[_HTrunk]) -> float: + return coordinate_by_slot[id(slot)] + + planned_ttb = sorted(slot_groups, key=frozen_coordinate) + order = list(reversed(planned_ttb)) if dips else planned_ttb + return order, *_packed_track_map(order, span_of) + + if len(slot_groups) > _MAX_BAND_PERMUTE: + return heuristic, *_packed_track_map(heuristic, span_of) def keeps_planned_order(perm: tuple[list[_HTrunk], ...]) -> bool: for first_rank, first_slot in enumerate(perm): @@ -4586,6 +4663,7 @@ def _separate_fused_cotravelling_runs( } pending = deque(i for i in _reseating_order(lanes) if i in movable_lane_ids) relocated: set[int] = set() + while pending: i = pending.popleft() if i in relocated: @@ -4642,6 +4720,44 @@ def feasible(target: float) -> bool: ): return False moved = replace(lane, coord=target) + # A mutable lane may not cross an immutable planned lane. The + # global allocator owns ordering between mutable peers. + for other in lanes: + if ( + other is lane + or other.axis != lane.axis + or other.sign != lane.sign + or other.line_id == lane.line_id + or not other.pinned + or not any( + spans_share_corridor(*run.span, *obstacle.span) + for run in lane.runs + for obstacle in other.runs + ) + ): + continue + frozen_order = _frozen_order_coordinates( + ctx, + ( + tuple((run.route, run.idx) for run in lane.runs), + tuple((run.route, run.idx) for run in other.runs), + ), + # A lane can carry a claim through a semantic source + # transition. Completeness and internal agreement are the + # ownership contract at this mutable/pinned boundary. + require_single_common_source=False, + ) + if frozen_order is None: + continue + frozen_coordinate, other_frozen = frozen_order + if ( + frozen_coordinate < other_frozen - COORD_TOLERANCE + and target >= other.coord - COORD_TOLERANCE + ) or ( + frozen_coordinate > other_frozen + COORD_TOLERANCE + and target <= other.coord + COORD_TOLERANCE + ): + return False return not any( moved.fuses_with(other, step) or ( diff --git a/src/nf_metro/layout/routing/reserved_bands.py b/src/nf_metro/layout/routing/reserved_bands.py index a20a02eeb..e9f4da088 100644 --- a/src/nf_metro/layout/routing/reserved_bands.py +++ b/src/nf_metro/layout/routing/reserved_bands.py @@ -233,7 +233,9 @@ class ReservedCorridors: intersection. ``row_bands_by_edge`` answers the same question before the segment rank exists -- a bypass trunk whose depth is computed ahead of the route that carries it -- and is decisive only where the edge's row claims - agree on one band. + agree on one band. ``planned_order_coordinates`` projects each claim's + observed allocation for relative-order comparisons. It does not place a + lane; the realised bands and declared-channel allocations retain that role. """ rows: ReservedBands = field(default_factory=ReservedBands) @@ -245,6 +247,9 @@ class ReservedCorridors: column_bands_by_edge: Mapping[EdgeKey, tuple[ReservedBand, ...]] = field( default_factory=dict ) + planned_order_coordinates: Mapping[ClaimSegmentKey, float] = field( + default_factory=dict + ) def for_segment( self, source: str, target: str, line_id: str, rank: int @@ -252,6 +257,12 @@ def for_segment( """The band the claim covering this emitted segment realises, if any.""" return self.per_claim.get((source, target, line_id, rank)) + def planned_order_coordinate_for_segment( + self, source: str, target: str, line_id: str, rank: int + ) -> float | None: + """Return the frozen allocation used only to compare lane order.""" + return self.planned_order_coordinates.get((source, target, line_id, rank)) + def claimed_row_band( self, source: str, target: str, line_id: str ) -> ReservedBand | None: @@ -478,11 +489,12 @@ def _axis_bands( @dataclass(frozen=True, slots=True) class _ClaimViews: - """Claim-keyed lookup tables over one plan's realised gap reservations.""" + """Claim-keyed clearance and order views over realised gap reservations.""" per_claim: dict[ClaimSegmentKey, ReservedBand] row_bands_by_edge: dict[EdgeKey, tuple[ReservedBand, ...]] column_bands_by_edge: dict[EdgeKey, tuple[ReservedBand, ...]] + planned_order_coordinates: dict[ClaimSegmentKey, float] def _claim_views( @@ -495,15 +507,17 @@ def _claim_views( Two claims naming one segment must both hold there, so a duplicate key keeps the intersection, and :func:`resolved_band` decides what an irreconcilable - pair publishes. A declared gap channel publishes its observed allocation - coordinate: gap materialisation chooses an exact lane, while the enclosing - clearance band permits many positions and cannot replay that choice. The - per-edge views retain each reservation's full clearance band for consumers - that place geometry without a segment claim. + pair publishes. Every claim publishes its projected allocation as a + relative-order key. A declared gap channel additionally publishes that + allocation as an exact coordinate: gap materialisation chooses an exact + lane, while an ordinary clearance band permits many positions. The per-edge + views retain each reservation's full clearance band for consumers that + place geometry without a segment claim. """ from nf_metro.layout.route_plan import DemandAxis from nf_metro.layout.route_reservations import ( ColumnGapRegion, + CorridorOrientation, RouteReservationLane, RowGapRegion, project_reservation_coordinate, @@ -568,6 +582,7 @@ def terminal_landing_band( spans: dict[ClaimSegmentKey, tuple[float, float]] = {} allocations: dict[ClaimSegmentKey, tuple[float, float]] = {} + planned_order_coordinates: dict[ClaimSegmentKey, float] = {} # Keyed by the band quantised to the comparison tolerance, so two # reservations describing one corridor alike collapse to a single band. row_by_edge: dict[EdgeKey, dict[tuple[int, int], tuple[float, float]]] = {} @@ -575,7 +590,11 @@ def terminal_landing_band( for reservation, lo, hi in measured: is_row = isinstance(reservation.region, RowGapRegion) is_column = isinstance(reservation.region, ColumnGapRegion) - allocation_axis = DemandAxis.Y if is_row else DemandAxis.X + allocation_axis = ( + DemandAxis.Y + if reservation.orientation is CorridorOrientation.HORIZONTAL + else DemandAxis.X + ) for claim in reservation.claims: claim_lo, claim_hi = terminal_landing_band(reservation, claim, lo, hi) edge = edge_by_member[claim.member_id] @@ -586,15 +605,14 @@ def terminal_landing_band( band_key = (round(lo / COORD_TOLERANCE), round(hi / COORD_TOLERANCE)) bands_by_edge = row_by_edge if is_row else column_by_edge bands_by_edge.setdefault(edge_key, {}).setdefault(band_key, (lo, hi)) + planned_order_coordinate = project_reservation_coordinate( + claim.allocation_coordinate, + allocation_axis, + claim.member_id, + translations, + ) allocation = ( - project_reservation_coordinate( - claim.allocation_coordinate, - allocation_axis, - claim.member_id, - translations, - ) - if claim.is_declared_gap_channel - else None + planned_order_coordinate if claim.is_declared_gap_channel else None ) for rank in range(claim.segment_rank, claim.segment_end_rank + 1): key = (*edge_key, rank) @@ -617,6 +635,16 @@ def terminal_landing_band( max(held_allocation[1], allocation), ) ) + held_order_coordinate = planned_order_coordinates.setdefault( + key, planned_order_coordinate + ) + if ( + abs(held_order_coordinate - planned_order_coordinate) + > COORD_TOLERANCE + ): + raise ValueError( + f"route segment {key!r} has conflicting planned lane order" + ) per_claim: dict[ClaimSegmentKey, ReservedBand] = {} for key, (lo, hi) in spans.items(): band = resolved_band(lo, hi) @@ -649,7 +677,12 @@ def terminal_landing_band( ) for edge_key, bands in column_by_edge.items() } - return _ClaimViews(per_claim, row_bands, column_bands) + return _ClaimViews( + per_claim, + row_bands, + column_bands, + planned_order_coordinates, + ) def build_reserved_corridors( @@ -685,4 +718,5 @@ def build_reserved_corridors( views.per_claim, views.row_bands_by_edge, views.column_bands_by_edge, + views.planned_order_coordinates, ) diff --git a/tests/test_fused_cotravelling_lines_invariant.py b/tests/test_fused_cotravelling_lines_invariant.py index d5f303f1d..a24ce7b74 100644 --- a/tests/test_fused_cotravelling_lines_invariant.py +++ b/tests/test_fused_cotravelling_lines_invariant.py @@ -37,6 +37,7 @@ import nf_metro.layout.routing.core as routing_core import nf_metro.layout.routing.invariants as invariants import nf_metro.layout.routing.member_geometry as member_geometry +import nf_metro.layout.routing.normalize as normalize from nf_metro.layout.constants import graph_offset_step from nf_metro.layout.engine import compute_layout from nf_metro.layout.phases._common import routes_through_unrelated_sections @@ -245,6 +246,18 @@ def _longest_horizontal_run( return max(horizontal, key=lambda item: item[0]) +def _production_routes(path: Path): + """Routes and drawn polylines from the final production render pass.""" + from nf_metro.api import prepare_graph, resolve_theme + from nf_metro.render.svg import build_observed_render_plan + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + observed = build_observed_render_plan(graph, resolve_theme(None, graph)) + return graph, tuple(zip(observed.plan.routes, observed.plan.route_polylines)) + + def _pair_identity( axis: str, first: tuple[str, float], second: tuple[str, float] ) -> tuple[str, str, str, float, float]: @@ -554,6 +567,227 @@ def test_plan_owned_distinct_lanes_minimize_crossings_independent_of_edge_order( assert not tuple(_routes_crossings(primary_points, secondary_points)) +@pytest.mark.parametrize( + ("path", "primary_source", "secondary_sources"), + ( + ( + EXAMPLE_TOPOLOGIES / "plan_owned_distinct_lane_separation.mmd", + "__junction_8", + ("secondary_near__exit_left_1", "secondary_far__exit_left_2"), + ), + ( + REGRESSIONS / "plan_owned_distinct_lane_separation_reordered.mmd", + "__junction_9", + ("secondary_near__exit_left_0", "secondary_far__exit_left_1"), + ), + ), + ids=("authored-order", "reordered-edges"), +) +def test_production_plan_owned_distinct_lanes_preserve_planned_order( + path: Path, + primary_source: str, + secondary_sources: tuple[str, str], +) -> None: + graph, routed = _production_routes(path) + primary = tuple( + points + for route, points in routed + if route.line_id == "primary" + and route.edge.source == primary_source + and route.edge.target in {"__merge_2", "__merge_3"} + ) + secondary = tuple( + points + for route, points in routed + if route.line_id == "secondary" and route.edge.source in secondary_sources + ) + assert len(primary) == len(secondary) == 2 + + step = graph_offset_step(graph) + for primary_points in primary: + primary_y = _longest_horizontal_run(primary_points)[1] + for secondary_points in secondary: + secondary_y = _longest_horizontal_run(secondary_points)[1] + assert primary_y - secondary_y == pytest.approx(step) + assert not tuple(_routes_crossings(primary_points, secondary_points)) + + +def test_production_longread_divergence_preserves_source_lane_order() -> None: + graph, routed = _production_routes(EXAMPLES / "longread_variant_calling.mmd") + trunks = { + route.line_id: points + for route, points in routed + if route.edge.source == "__junction_16" + and route.edge.target + in {"tr_calling__entry_right_9", "cnv_calling__entry_right_10"} + } + assert set(trunks) == {"bam", "other"} + + bam_y = _longest_horizontal_run(trunks["bam"])[1] + other_y = _longest_horizontal_run(trunks["other"])[1] + assert other_y - bam_y == pytest.approx(graph_offset_step(graph)) + assert not tuple(_routes_crossings(trunks["bam"], trunks["other"])) + + +def test_reserved_trunk_order_bypasses_live_crossing_rank( + monkeypatch: pytest.MonkeyPatch, +) -> None: + from nf_metro.api import prepare_graph + + path = EXAMPLES / "longread_variant_calling.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + offsets = compute_station_offsets(graph) + first = observe_route_edges( + graph, + station_offsets=offsets, + allow_convergence_clearance_requirements=True, + ) + live_rank = normalize._band_order_crossings + + def reject_target_live_rank(order, features=None): + members = { + (trunk.route.edge.source, trunk.route.edge.target, trunk.route.line_id) + for slot in order + for trunk in slot + } + target_members = { + ("__junction_16", "tr_calling__entry_right_9", "bam"), + ("__junction_16", "cnv_calling__entry_right_10", "other"), + } + if target_members <= members: + raise AssertionError("frozen trunk cohort consulted live crossing rank") + return live_rank(order, features) + + monkeypatch.setattr(normalize, "_band_order_crossings", reject_target_live_rank) + replay = routing_core.observe_route_edges_centred( + graph, + station_offsets=offsets, + reservations=first.plan, + ) + trunks = { + route.line_id: route + for route in replay.routes + if route.edge.source == "__junction_16" + and route.edge.target + in {"tr_calling__entry_right_9", "cnv_calling__entry_right_10"} + } + assert ( + _longest_horizontal_run(trunks["bam"].points)[1] + < (_longest_horizontal_run(trunks["other"].points)[1]) + ) + + +def test_frozen_order_rejects_partial_claim_coverage() -> None: + from types import SimpleNamespace + + from nf_metro.layout.routing.reserved_bands import ReservedCorridors + + def route(source: str, target: str, line_id: str) -> RoutedPath: + return RoutedPath( + edge=Edge(source=source, target=target, line_id=line_id), + line_id=line_id, + points=[(0.0, 0.0), (10.0, 0.0)], + ) + + first = route("hub", "first", "red") + unclaimed_fan_member = route("hub", "first-fan", "red") + second = route("hub", "second", "blue") + ctx = SimpleNamespace( + reserved_bands=ReservedCorridors( + planned_order_coordinates={ + ("hub", "first", "red", 1): 10.0, + ("hub", "second", "blue", 1): 14.0, + } + ) + ) + groups = ( + ((first, 1), (unclaimed_fan_member, 1)), + ((second, 1),), + ) + + assert ( + normalize._frozen_order_coordinates( + ctx, groups, require_single_common_source=True + ) + is None + ) + assert ( + normalize._frozen_order_coordinates( + ctx, groups, require_single_common_source=False + ) + is None + ) + + +def test_frozen_source_cohort_rejects_identical_multi_source_sets() -> None: + from types import SimpleNamespace + + from nf_metro.layout.routing.reserved_bands import ReservedCorridors + + def route(source: str, target: str, line_id: str) -> RoutedPath: + return RoutedPath( + edge=Edge(source=source, target=target, line_id=line_id), + line_id=line_id, + points=[(0.0, 0.0), (10.0, 0.0)], + ) + + first = (route("source-a", "red-a", "red"), route("source-b", "red-b", "red")) + second = ( + route("source-a", "blue-a", "blue"), + route("source-b", "blue-b", "blue"), + ) + claims = { + (member.edge.source, member.edge.target, member.line_id, 1): coordinate + for group, coordinate in ((first, 10.0), (second, 14.0)) + for member in group + } + ctx = SimpleNamespace( + reserved_bands=ReservedCorridors(planned_order_coordinates=claims) + ) + groups = tuple(tuple((member, 1) for member in group) for group in (first, second)) + + assert ( + normalize._frozen_order_coordinates( + ctx, groups, require_single_common_source=True + ) + is None + ) + assert normalize._frozen_order_coordinates( + ctx, groups, require_single_common_source=False + ) == (10.0, 14.0) + + +def test_reserved_plan_owned_lane_never_takes_reversed_live_candidate( + monkeypatch: pytest.MonkeyPatch, +) -> None: + reseat = normalize._reseat_lane + + def reject_reversed_candidate(lane, coordinate, *, projected=False): + if lane.line_id == "secondary" and coordinate > lane.coord: + raise AssertionError("frozen lane took the reversed live candidate") + return reseat(lane, coordinate, projected=projected) + + monkeypatch.setattr(normalize, "_reseat_lane", reject_reversed_candidate) + path = EXAMPLE_TOPOLOGIES / "plan_owned_distinct_lane_separation.mmd" + graph, routed = _production_routes(path) + trunks = { + route.line_id: _longest_horizontal_run(points)[1] + for route, points in routed + if ( + route.line_id == "primary" + and route.edge.source == "__junction_8" + and route.edge.target == "__merge_2" + ) + or ( + route.line_id == "secondary" + and route.edge.source == "secondary_near__exit_left_1" + ) + } + assert trunks["primary"] - trunks["secondary"] == pytest.approx( + graph_offset_step(graph) + ) + + def test_analytic_candidate_segments_match_the_plan_mover() -> None: """Analytic scoring prices exactly the geometry the selected move emits.""" from nf_metro.api import prepare_graph, resolve_theme diff --git a/tests/test_route_reservations.py b/tests/test_route_reservations.py index 3c9325ea1..cac068b03 100644 --- a/tests/test_route_reservations.py +++ b/tests/test_route_reservations.py @@ -730,6 +730,89 @@ def test_disjoint_bypass_descents_read_their_observed_gap_allocation() -> None: } +def test_non_gap_claims_publish_order_without_claiming_exact_placement() -> None: + graph, routes, plan = _observe(ROOT / "examples" / "longread_variant_calling.mmd") + corridors = build_reserved_corridors(graph, plan) + target_routes = tuple( + route + for route in routes + if route.edge.source == "__junction_16" + and route.edge.target + in {"tr_calling__entry_right_9", "cnv_calling__entry_right_10"} + ) + assert {route.line_id for route in target_routes} == {"bam", "other"} + + order_coordinates = { + route.line_id: corridors.planned_order_coordinate_for_segment( + route.edge.source, route.edge.target, route.line_id, 2 + ) + for route in target_routes + } + assert order_coordinates == {"bam": 266.0, "other": 270.0} + assert all( + corridors.for_segment( + route.edge.source, route.edge.target, route.line_id, 2 + ).allocation + is None + for route in target_routes + ) + + claimant_ids = tuple( + member.id + for member in plan.members + if member.edge.source == "__junction_16" + and member.edge.target + in {"tr_calling__entry_right_9", "cnv_calling__entry_right_10"} + ) + translated = build_reserved_corridors( + graph, + plan, + ( + ReservationCoordinateTranslation( + DemandAxis.Y, + 0.0, + 12.0, + fully_owned_member_ids=claimant_ids, + ), + ), + ) + assert { + route.line_id: translated.planned_order_coordinate_for_segment( + route.edge.source, route.edge.target, route.line_id, 2 + ) + for route in target_routes + } == {"bam": 278.0, "other": 282.0} + + +def test_conflicting_planned_order_claims_fail_before_emission() -> None: + graph, _routes, plan = _observe(ROOT / "examples" / "longread_variant_calling.mmd") + reservation = next( + item + for item in plan.reservations + if any( + member.edge.source == "__junction_16" + and member.edge.target == "tr_calling__entry_right_9" + and claim.member_id == member.id + and claim.segment_rank <= 2 <= claim.segment_end_rank + for claim in item.claims + for member in plan.members + ) + ) + duplicate = replace( + reservation, + claims=tuple( + replace(claim, allocation_coordinate=claim.allocation_coordinate + 8.0) + if claim.segment_rank <= 2 <= claim.segment_end_rank + else claim + for claim in reservation.claims + ), + ) + corrupted = replace(plan, reservations=(*plan.reservations, duplicate)) + + with pytest.raises(ValueError, match="conflicting planned lane order"): + build_reserved_corridors(graph, corrupted) + + def test_shared_plan_coordinate_follows_its_translated_claimant_atomically() -> None: translated = EmissionMemberId("translated") crossing = EmissionMemberId("crossing") From 76abd3fa15aa0563dbd726dbae852b111a5d27d4 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Aug 2026 09:53:19 +0100 Subject: [PATCH 157/158] feat(routing): add atomic corridor cohort allocator [skip ci] --- .../layout/routing/corridor_cohorts.py | 604 ++++++++++++++++++ tests/test_corridor_cohorts.py | 535 ++++++++++++++++ 2 files changed, 1139 insertions(+) create mode 100644 src/nf_metro/layout/routing/corridor_cohorts.py create mode 100644 tests/test_corridor_cohorts.py diff --git a/src/nf_metro/layout/routing/corridor_cohorts.py b/src/nf_metro/layout/routing/corridor_cohorts.py new file mode 100644 index 000000000..aca5bf4fe --- /dev/null +++ b/src/nf_metro/layout/routing/corridor_cohorts.py @@ -0,0 +1,604 @@ +"""Pure, deterministic allocation of rigid corridor-lane cohorts.""" + +from __future__ import annotations + +from dataclasses import dataclass +from enum import Enum +from fractions import Fraction +from math import isfinite + + +class CorridorAllocationStatus(Enum): + PLANNED = "planned" + COMPATIBILITY = "compatibility" + FAILURE = "failure" + + +class CorridorAllocationFailureReason(Enum): + CONTRADICTION = "contradiction" + INFEASIBLE = "infeasible" + INVALID = "invalid" + + +@dataclass(frozen=True) +class CorridorLane: + member_id: str + cohort_id: str + endpoint_owner_id: str + boundary_coordinate: float + planned_coordinate: float + span_start: float + span_end: float + semantic_rank: tuple[int, ...] + + +@dataclass(frozen=True) +class CorridorObstacle: + obstacle_id: str + order_coordinate: float + realised_coordinate: float + span_start: float + span_end: float + semantic_rank: tuple[int, ...] + + +@dataclass(frozen=True) +class CorridorEquality: + owner_id: str + left_member_id: str + right_member_id: str + delta: float + + +@dataclass(frozen=True) +class CorridorAllocationProblem: + """A complete preclosed endpoint, equality, and clearance component.""" + + lanes: tuple[CorridorLane, ...] + obstacles: tuple[CorridorObstacle, ...] = () + equalities: tuple[CorridorEquality, ...] = () + clearance: float = 4.0 + witnesses_complete: bool = True + axis_sign: int = 1 + + +@dataclass(frozen=True) +class CorridorAllocationResult: + status: CorridorAllocationStatus + allocations: tuple[tuple[str, float], ...] = () + reason: CorridorAllocationFailureReason | None = None + blocking_member_ids: tuple[str, ...] = () + blocking_obstacle_ids: tuple[str, ...] = () + blocking_equality_owner_ids: tuple[str, ...] = () + blocking_endpoint_owner_ids: tuple[str, ...] = () + + +def _q(value: float) -> Fraction: + return Fraction(str(value)) + + +def _overlaps(a_start: float, a_end: float, b_start: float, b_end: float) -> bool: + return max(a_start, b_start) < min(a_end, b_end) + + +def _lower_median(values: list[Fraction]) -> Fraction: + ordered = sorted(values) + return ordered[(len(ordered) - 1) // 2] + + +def _failure( + reason: CorridorAllocationFailureReason, + *, + members: tuple[str, ...] | list[str] | set[str] = (), + obstacles: tuple[str, ...] | list[str] | set[str] = (), + equality_owners: tuple[str, ...] | list[str] | set[str] = (), + endpoint_owners: tuple[str, ...] | list[str] | set[str] = (), +) -> CorridorAllocationResult: + return CorridorAllocationResult( + CorridorAllocationStatus.FAILURE, + reason=reason, + blocking_member_ids=tuple(sorted(set(members))), + blocking_obstacle_ids=tuple(sorted(set(obstacles))), + blocking_equality_owner_ids=tuple(sorted(set(equality_owners))), + blocking_endpoint_owner_ids=tuple(sorted(set(endpoint_owners))), + ) + + +class _WeightedUnionFind: + """Exact union-find with potentials relative to canonical member roots.""" + + def __init__(self, keys: list[tuple[tuple[int, ...], Fraction, Fraction]]) -> None: + self.parent = list(range(len(keys))) + self.weight = [Fraction(0)] * len(keys) + self.keys = keys + + def find(self, item: int) -> tuple[int, Fraction]: + parent = self.parent[item] + if parent == item: + return item, Fraction(0) + root, parent_weight = self.find(parent) + self.weight[item] += parent_weight + self.parent[item] = root + return root, self.weight[item] + + def union(self, left: int, right: int, delta: Fraction) -> bool: + """Require coordinate(right) - coordinate(left) == delta.""" + left_root, left_weight = self.find(left) + right_root, right_weight = self.find(right) + if left_root == right_root: + return right_weight - left_weight == delta + if self.keys[left_root] <= self.keys[right_root]: + self.parent[right_root] = left_root + self.weight[right_root] = delta + left_weight - right_weight + else: + self.parent[left_root] = right_root + self.weight[left_root] = right_weight - left_weight - delta + return True + + +def _invalid_problem( + problem: CorridorAllocationProblem, +) -> CorridorAllocationResult | None: + lanes = problem.lanes + member_ids = [lane.member_id for lane in lanes] + numeric = [problem.clearance] + for lane in lanes: + numeric.extend( + ( + lane.boundary_coordinate, + lane.planned_coordinate, + lane.span_start, + lane.span_end, + ) + ) + for obstacle in problem.obstacles: + numeric.extend( + ( + obstacle.order_coordinate, + obstacle.realised_coordinate, + obstacle.span_start, + obstacle.span_end, + ) + ) + numeric.extend(equality.delta for equality in problem.equalities) + invalid_members = { + lane.member_id + for lane in lanes + if not lane.member_id + or not lane.cohort_id + or not lane.endpoint_owner_id + or not lane.semantic_rank + } + duplicate_members = { + member_id for member_id in member_ids if member_ids.count(member_id) > 1 + } + invalid_obstacles = { + obstacle.obstacle_id + for obstacle in problem.obstacles + if not obstacle.obstacle_id or not obstacle.semantic_rank + } + cohort_endpoint_owners: dict[str, set[str]] = {} + for lane in lanes: + cohort_endpoint_owners.setdefault(lane.cohort_id, set()).add( + lane.endpoint_owner_id + ) + split_cohorts = { + cohort_id + for cohort_id, endpoint_owners in cohort_endpoint_owners.items() + if len(endpoint_owners) != 1 + } + split_members = { + lane.member_id for lane in lanes if lane.cohort_id in split_cohorts + } + split_endpoint_owners = { + lane.endpoint_owner_id for lane in lanes if lane.cohort_id in split_cohorts + } + by_id = set(member_ids) + invalid_equalities = { + equality.owner_id + for equality in problem.equalities + if not equality.owner_id + or equality.left_member_id not in by_id + or equality.right_member_id not in by_id + } + invalid_shape = ( + problem.clearance < 0 + or problem.axis_sign not in (-1, 1) + or not all(isfinite(value) for value in numeric) + or any(lane.span_start > lane.span_end for lane in lanes) + or any( + obstacle.span_start > obstacle.span_end for obstacle in problem.obstacles + ) + ) + if ( + invalid_members + or duplicate_members + or invalid_obstacles + or invalid_equalities + or split_cohorts + or invalid_shape + ): + return _failure( + CorridorAllocationFailureReason.INVALID, + members=invalid_members | duplicate_members | split_members, + obstacles=invalid_obstacles, + equality_owners=invalid_equalities, + endpoint_owners={ + lane.endpoint_owner_id + for lane in lanes + if lane.member_id in invalid_members | duplicate_members + } + | split_endpoint_owners, + ) + return None + + +def _equality_peer_owners( + equalities: tuple[CorridorEquality, ...], by_id: dict[str, int] +) -> dict[frozenset[int], set[str]]: + adjacency: dict[str, dict[int, set[int]]] = {} + for equality in equalities: + left = by_id[equality.left_member_id] + right = by_id[equality.right_member_id] + owner_graph = adjacency.setdefault(equality.owner_id, {}) + owner_graph.setdefault(left, set()).add(right) + owner_graph.setdefault(right, set()).add(left) + peers: dict[frozenset[int], set[str]] = {} + for owner, graph in adjacency.items(): + unseen = set(graph) + while unseen: + pending = [min(unseen)] + component: set[int] = set() + while pending: + member = pending.pop() + if member in component: + continue + component.add(member) + pending.extend(graph[member] - component) + unseen -= component + for left in component: + for right in component: + if left < right: + peers.setdefault(frozenset((left, right)), set()).add(owner) + return peers + + +def _contradiction_attribution( + lanes: tuple[CorridorLane, ...], + equalities: tuple[CorridorEquality, ...], + union_find: _WeightedUnionFind, + equality: CorridorEquality, +) -> CorridorAllocationResult: + left = next( + i for i, lane in enumerate(lanes) if lane.member_id == equality.left_member_id + ) + root, _ = union_find.find(left) + members = { + lane.member_id + for index, lane in enumerate(lanes) + if union_find.find(index)[0] == root + } + owners = { + item.owner_id + for item in equalities + if item.left_member_id in members and item.right_member_id in members + } + owners.add(equality.owner_id) + return _failure( + CorridorAllocationFailureReason.CONTRADICTION, + members=members, + equality_owners=owners, + endpoint_owners={ + lane.endpoint_owner_id for lane in lanes if lane.member_id in members + }, + ) + + +def solve_corridor_cohorts( # noqa: C901, PLR0915 + problem: CorridorAllocationProblem, +) -> CorridorAllocationResult: + """Return the unique canonical seating for a complete witness set.""" + if not problem.witnesses_complete: + return CorridorAllocationResult(CorridorAllocationStatus.COMPATIBILITY) + invalid = _invalid_problem(problem) + if invalid is not None: + return invalid + if not problem.lanes: + return CorridorAllocationResult(CorridorAllocationStatus.PLANNED) + + sign = problem.axis_sign + lanes = problem.lanes + by_id = {lane.member_id: index for index, lane in enumerate(lanes)} + canonical_member_keys = [ + ( + lane.semantic_rank, + sign * _q(lane.boundary_coordinate), + sign * _q(lane.planned_coordinate), + ) + for lane in lanes + ] + union_find = _WeightedUnionFind(canonical_member_keys) + + cohorts: dict[str, list[int]] = {} + for index, lane in enumerate(lanes): + cohorts.setdefault(lane.cohort_id, []).append(index) + for members in cohorts.values(): + anchor = min(members, key=lambda index: canonical_member_keys[index]) + anchor_boundary = sign * _q(lanes[anchor].boundary_coordinate) + for member in members: + delta = sign * _q(lanes[member].boundary_coordinate) - anchor_boundary + if not union_find.union(anchor, member, delta): + return _failure( + CorridorAllocationFailureReason.CONTRADICTION, + members={lanes[index].member_id for index in members}, + endpoint_owners={ + lanes[index].endpoint_owner_id for index in members + }, + ) + + processed_equalities: list[CorridorEquality] = [] + for equality in sorted( + problem.equalities, + key=lambda item: ( + item.owner_id, + item.left_member_id, + item.right_member_id, + item.delta, + ), + ): + left = by_id[equality.left_member_id] + right = by_id[equality.right_member_id] + if not union_find.union(left, right, sign * _q(equality.delta)): + return _contradiction_attribution( + lanes, + tuple((*processed_equalities, equality)), + union_find, + equality, + ) + processed_equalities.append(equality) + + roots: dict[int, list[int]] = {} + raw_potentials: dict[int, Fraction] = {} + for index in range(len(lanes)): + root, potential = union_find.find(index) + roots.setdefault(root, []).append(index) + raw_potentials[index] = potential + + # Rebase every component to its canonical semantic member. This removes + # union history and input order from preferred bases and fixed-side choices. + potentials: dict[int, Fraction] = {} + component_reference: dict[int, int] = {} + for root, members in roots.items(): + reference = min(members, key=lambda index: canonical_member_keys[index]) + component_reference[root] = reference + reference_potential = raw_potentials[reference] + for member in members: + potentials[member] = raw_potentials[member] - reference_potential + + preferred = { + root: _lower_median( + [ + sign * _q(lanes[index].planned_coordinate) - potentials[index] + for index in members + ] + ) + for root, members in roots.items() + } + root_key = { + root: ( + preferred[root], + lanes[component_reference[root]].semantic_rank, + tuple(sorted(lanes[index].semantic_rank for index in members)), + ) + for root, members in roots.items() + } + peer_owners = _equality_peer_owners(problem.equalities, by_id) + + lower: dict[int, Fraction | None] = {root: None for root in roots} + upper: dict[int, Fraction | None] = {root: None for root in roots} + bound_members: dict[int, set[str]] = {root: set() for root in roots} + bound_obstacles: dict[int, set[str]] = {root: set() for root in roots} + edges: dict[tuple[int, int], Fraction] = {} + edge_members: dict[tuple[int, int], set[str]] = {} + + for root, members in roots.items(): + for obstacle in problem.obstacles: + overlapping = [ + index + for index in members + if _overlaps( + lanes[index].span_start, + lanes[index].span_end, + obstacle.span_start, + obstacle.span_end, + ) + ] + if not overlapping: + continue + obstacle_order_coordinate = sign * _q(obstacle.order_coordinate) + component_order_key = ( + preferred[root], + lanes[component_reference[root]].semantic_rank, + ) + obstacle_order_key = ( + obstacle_order_coordinate, + obstacle.semantic_rank, + ) + if component_order_key == obstacle_order_key: + return _failure( + CorridorAllocationFailureReason.INVALID, + members={lanes[index].member_id for index in overlapping}, + obstacles=(obstacle.obstacle_id,), + endpoint_owners={ + lanes[index].endpoint_owner_id for index in overlapping + }, + ) + component_before = component_order_key < obstacle_order_key + obstacle_coordinate = sign * _q(obstacle.realised_coordinate) + if component_before: + candidate = min( + obstacle_coordinate - _q(problem.clearance) - potentials[index] + for index in overlapping + ) + current_upper = upper[root] + upper[root] = ( + candidate + if current_upper is None + else min(current_upper, candidate) + ) + else: + candidate = max( + obstacle_coordinate + _q(problem.clearance) - potentials[index] + for index in overlapping + ) + current_lower = lower[root] + lower[root] = ( + candidate + if current_lower is None + else max(current_lower, candidate) + ) + bound_members[root].update(lanes[index].member_id for index in overlapping) + bound_obstacles[root].add(obstacle.obstacle_id) + + for left_index, left_lane in enumerate(lanes): + left_root, _ = union_find.find(left_index) + for right_index in range(left_index + 1, len(lanes)): + right_lane = lanes[right_index] + if not _overlaps( + left_lane.span_start, + left_lane.span_end, + right_lane.span_start, + right_lane.span_end, + ): + continue + pair = frozenset((left_index, right_index)) + if pair in peer_owners: + continue + right_root, _ = union_find.find(right_index) + if left_root == right_root: + if abs(potentials[right_index] - potentials[left_index]) < _q( + problem.clearance + ): + return _failure( + CorridorAllocationFailureReason.INFEASIBLE, + members=(left_lane.member_id, right_lane.member_id), + endpoint_owners=( + left_lane.endpoint_owner_id, + right_lane.endpoint_owner_id, + ), + ) + continue + if root_key[left_root] == root_key[right_root]: + return _failure( + CorridorAllocationFailureReason.INVALID, + members=(left_lane.member_id, right_lane.member_id), + endpoint_owners=( + left_lane.endpoint_owner_id, + right_lane.endpoint_owner_id, + ), + ) + if root_key[left_root] <= root_key[right_root]: + before, after = left_root, right_root + separation = ( + _q(problem.clearance) + + potentials[left_index] + - potentials[right_index] + ) + else: + before, after = right_root, left_root + separation = ( + _q(problem.clearance) + + potentials[right_index] + - potentials[left_index] + ) + edge = (before, after) + edges[edge] = max(edges.get(edge, separation), separation) + edge_members.setdefault(edge, set()).update( + (left_lane.member_id, right_lane.member_id) + ) + + successors: dict[int, list[tuple[int, Fraction]]] = {root: [] for root in roots} + predecessors: dict[int, list[tuple[int, Fraction]]] = {root: [] for root in roots} + for (before, after), separation in edges.items(): + successors[before].append((after, separation)) + predecessors[after].append((before, separation)) + order = sorted(roots, key=lambda root: root_key[root]) + + for root in reversed(order): + for after, separation in successors[root]: + after_upper = upper[after] + if after_upper is None: + continue + candidate = after_upper - separation + root_upper = upper[root] + if root_upper is None or candidate < root_upper: + upper[root] = candidate + bound_members[root].update(bound_members[after]) + bound_members[root].update(edge_members[(root, after)]) + bound_obstacles[root].update(bound_obstacles[after]) + + coordinates: dict[int, Fraction] = {} + coordinate_members: dict[int, set[str]] = {root: set() for root in roots} + for root in order: + coordinate = preferred[root] + root_upper = upper[root] + if root_upper is not None: + coordinate = min(coordinate, root_upper) + root_lower = lower[root] + if root_lower is not None: + coordinate = max(coordinate, root_lower) + coordinate_members[root].update(bound_members[root]) + for before, separation in predecessors[root]: + candidate = coordinates[before] + separation + if candidate > coordinate: + coordinate = candidate + coordinate_members[root].update(coordinate_members[before]) + coordinate_members[root].update(edge_members[(before, root)]) + if root_upper is not None and coordinate > root_upper: + component_members = {lanes[index].member_id for index in roots[root]} + equality_owners = { + owner + for pair, owners in peer_owners.items() + if pair <= set(roots[root]) + for owner in owners + } + return _failure( + CorridorAllocationFailureReason.INFEASIBLE, + members=component_members + | bound_members[root] + | coordinate_members[root], + obstacles=bound_obstacles[root], + equality_owners=equality_owners, + endpoint_owners={ + lanes[index].endpoint_owner_id for index in roots[root] + }, + ) + coordinates[root] = coordinate + + allocations: list[tuple[str, float]] = [] + for index, lane in enumerate(lanes): + root, _ = union_find.find(index) + oriented_coordinate = coordinates[root] + potentials[index] + output_coordinate = float(sign * oriented_coordinate) + allocations.append( + ( + lane.member_id, + 0.0 if output_coordinate == 0 else output_coordinate, + ) + ) + return CorridorAllocationResult( + CorridorAllocationStatus.PLANNED, + tuple(sorted(allocations)), + ) + + +__all__ = [ + "CorridorAllocationFailureReason", + "CorridorAllocationProblem", + "CorridorAllocationResult", + "CorridorAllocationStatus", + "CorridorEquality", + "CorridorLane", + "CorridorObstacle", + "solve_corridor_cohorts", +] diff --git a/tests/test_corridor_cohorts.py b/tests/test_corridor_cohorts.py new file mode 100644 index 000000000..e8ebf25f8 --- /dev/null +++ b/tests/test_corridor_cohorts.py @@ -0,0 +1,535 @@ +"""Corridor cohorts allocate from realised geometry and frozen witnesses.""" + +from __future__ import annotations + +from dataclasses import replace +from itertools import permutations + +from nf_metro.layout.routing.corridor_cohorts import ( + CorridorAllocationFailureReason, + CorridorAllocationProblem, + CorridorAllocationStatus, + CorridorEquality, + CorridorLane, + CorridorObstacle, + solve_corridor_cohorts, +) + + +def _lane( + member_id: str, + corridor_owner_id: str, + endpoint_owner_id: str, + boundary_coordinate: float, + planned_coordinate: float, + *, + span: tuple[float, float], + line_rank: int, + root_rank: int = 0, +) -> CorridorLane: + return CorridorLane( + member_id=member_id, + cohort_id=corridor_owner_id, + endpoint_owner_id=endpoint_owner_id, + boundary_coordinate=boundary_coordinate, + planned_coordinate=planned_coordinate, + span_start=span[0], + span_end=span[1], + semantic_rank=(root_rank, line_rank), + ) + + +def _obstacle( + obstacle_id: str, + order_coordinate: float, + realised_coordinate: float, + *, + span: tuple[float, float], + semantic_rank: tuple[int, ...], +) -> CorridorObstacle: + return CorridorObstacle( + obstacle_id=obstacle_id, + order_coordinate=order_coordinate, + realised_coordinate=realised_coordinate, + span_start=span[0], + span_end=span[1], + semantic_rank=semantic_rank, + ) + + +def _allocations(problem: CorridorAllocationProblem) -> dict[str, float]: + result = solve_corridor_cohorts(problem) + assert result.status is CorridorAllocationStatus.PLANNED + assert result.reason is None + return dict(result.allocations) + + +def _seed77_problem( + lanes: tuple[CorridorLane, ...] | None = None, +) -> CorridorAllocationProblem: + if lanes is None: + lanes = ( + _lane( + "s9:l1", + "corridor:s9", + "endpoint:s9", + 478.0, + 558.0, + span=(5.0, 15.0), + line_rank=1, + root_rank=0, + ), + _lane( + "s9:l3", + "corridor:s9", + "endpoint:s9", + 482.0, + 554.0, + span=(5.0, 15.0), + line_rank=3, + root_rank=0, + ), + _lane( + "s17:l0", + "corridor:s17", + "endpoint:s17", + 478.0, + 550.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=1, + ), + _lane( + "s17:l3", + "corridor:s17", + "endpoint:s17", + 482.0, + 554.0, + span=(20.0, 30.0), + line_rank=3, + root_rank=1, + ), + ) + return CorridorAllocationProblem( + lanes=lanes, + obstacles=( + _obstacle( + "realised:s10", + 550.0, + 554.0, + span=(0.0, 10.0), + semantic_rank=(2, 0), + ), + ), + clearance=4.0, + ) + + +SEED77_EXPECTED = { + "s9:l1": 542.0, + "s9:l3": 546.0, + "s17:l0": 550.0, + "s17:l3": 554.0, +} + + +def test_seed77_shape_uses_boundary_offsets_and_realised_obstacle() -> None: + assert _allocations(_seed77_problem()) == SEED77_EXPECTED + + +def test_seed77_all_lane_permutations_have_identical_allocations() -> None: + lanes = _seed77_problem().lanes + + for order in permutations(lanes): + assert _allocations(_seed77_problem(order)) == SEED77_EXPECTED + + +def test_allocation_is_invariant_under_coordinate_translation() -> None: + offset = 80.0 + problem = _seed77_problem() + translated = replace( + problem, + lanes=tuple( + replace( + lane, + boundary_coordinate=lane.boundary_coordinate + offset, + planned_coordinate=lane.planned_coordinate + offset, + ) + for lane in problem.lanes + ), + obstacles=tuple( + replace( + obstacle, + order_coordinate=obstacle.order_coordinate + offset, + realised_coordinate=obstacle.realised_coordinate + offset, + ) + for obstacle in problem.obstacles + ), + ) + + assert _allocations(translated) == { + member_id: coordinate + offset + for member_id, coordinate in SEED77_EXPECTED.items() + } + + +def test_planned_coordinates_do_not_reorder_boundary_witnesses() -> None: + problem = CorridorAllocationProblem( + lanes=( + _lane( + "early", + "corridor:ordered", + "endpoint:ordered", + 10.0, + 104.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "late", + "corridor:ordered", + "endpoint:ordered", + 14.0, + 100.0, + span=(0.0, 10.0), + line_rank=1, + ), + ) + ) + + allocations = _allocations(problem) + + assert allocations["late"] - allocations["early"] == 4.0 + + +def test_same_line_label_does_not_join_distinct_corridor_owners() -> None: + problem = CorridorAllocationProblem( + lanes=( + _lane( + "left:l3", + "corridor:left", + "endpoint:left", + 10.0, + 100.0, + span=(0.0, 10.0), + line_rank=3, + root_rank=0, + ), + _lane( + "right:l3", + "corridor:right", + "endpoint:right", + 10.0, + 200.0, + span=(20.0, 30.0), + line_rank=3, + root_rank=1, + ), + ) + ) + + assert _allocations(problem) == {"left:l3": 100.0, "right:l3": 200.0} + + +def test_explicit_equalities_do_not_collide_with_their_own_members() -> None: + problem = CorridorAllocationProblem( + lanes=( + _lane( + "left", + "corridor:left", + "endpoint:left", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "right", + "corridor:right", + "endpoint:right", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=1, + ), + ), + equalities=(CorridorEquality("network:coincident", "left", "right", 0.0),), + ) + + assert _allocations(problem) == {"left": 10.0, "right": 10.0} + + +def test_cohort_chooses_one_obstacle_side_for_every_lane() -> None: + problem = CorridorAllocationProblem( + lanes=( + _lane( + "low", + "corridor:paired", + "endpoint:paired", + 0.0, + 8.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "high", + "corridor:paired", + "endpoint:paired", + 4.0, + 12.0, + span=(0.0, 10.0), + line_rank=1, + ), + ), + obstacles=( + _obstacle( + "obstacle:middle", + 10.0, + 10.0, + span=(0.0, 10.0), + semantic_rank=(1, 0), + ), + ), + clearance=4.0, + ) + + assert _allocations(problem) == {"low": 2.0, "high": 6.0} + + +def test_realised_obstacle_motion_cannot_flip_its_planned_order_side() -> None: + lane = _lane( + "lane", + "corridor:lane", + "endpoint:lane", + 20.0, + 20.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=1, + ) + before = _obstacle( + "obstacle", + 20.0, + 18.0, + span=(0.0, 10.0), + semantic_rank=(0, 0), + ) + after = replace(before, realised_coordinate=22.0) + + before_allocation = _allocations( + CorridorAllocationProblem(lanes=(lane,), obstacles=(before,)) + ) + after_allocation = _allocations( + CorridorAllocationProblem(lanes=(lane,), obstacles=(after,)) + ) + + assert before_allocation == {"lane": 22.0} + assert after_allocation == {"lane": 26.0} + + +def test_one_cohort_cannot_span_distinct_endpoint_owners() -> None: + problem = CorridorAllocationProblem( + lanes=( + _lane( + "a", + "corridor:shared", + "endpoint:a", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "b", + "corridor:shared", + "endpoint:b", + 14.0, + 14.0, + span=(20.0, 30.0), + line_rank=1, + ), + ) + ) + + result = solve_corridor_cohorts(problem) + + assert result.status is CorridorAllocationStatus.FAILURE + assert result.reason is CorridorAllocationFailureReason.INVALID + assert result.allocations == () + assert result.blocking_member_ids == ("a", "b") + assert result.blocking_endpoint_owner_ids == ("endpoint:a", "endpoint:b") + + +def test_empty_lane_or_obstacle_semantic_rank_is_invalid() -> None: + rankless_lane = CorridorLane( + member_id="rankless", + cohort_id="corridor:rankless", + endpoint_owner_id="endpoint:rankless", + boundary_coordinate=10.0, + planned_coordinate=10.0, + span_start=0.0, + span_end=10.0, + semantic_rank=(), + ) + lane_result = solve_corridor_cohorts( + CorridorAllocationProblem(lanes=(rankless_lane,)) + ) + + assert lane_result.status is CorridorAllocationStatus.FAILURE + assert lane_result.reason is CorridorAllocationFailureReason.INVALID + assert lane_result.blocking_member_ids == ("rankless",) + + ranked_lane = replace(rankless_lane, semantic_rank=(0, 0)) + rankless_obstacle = _obstacle( + "rankless-obstacle", + 10.0, + 10.0, + span=(0.0, 10.0), + semantic_rank=(), + ) + obstacle_result = solve_corridor_cohorts( + CorridorAllocationProblem(lanes=(ranked_lane,), obstacles=(rankless_obstacle,)) + ) + + assert obstacle_result.status is CorridorAllocationStatus.FAILURE + assert obstacle_result.reason is CorridorAllocationFailureReason.INVALID + assert obstacle_result.blocking_obstacle_ids == ("rankless-obstacle",) + + +def test_spans_touching_at_one_endpoint_do_not_overlap() -> None: + problem = CorridorAllocationProblem( + lanes=( + _lane( + "before", + "corridor:before", + "endpoint:before", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "after", + "corridor:after", + "endpoint:after", + 10.0, + 10.0, + span=(10.0, 20.0), + line_rank=1, + ), + ) + ) + + assert _allocations(problem) == {"before": 10.0, "after": 10.0} + + +def test_exact_obstacle_tie_is_equivariant_under_axis_reflection() -> None: + lane = _lane( + "lane", + "corridor:lane", + "endpoint:lane", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=1, + ) + obstacle = _obstacle( + "obstacle", + 10.0, + 10.0, + span=(0.0, 10.0), + semantic_rank=(0, 0), + ) + forward = _allocations( + CorridorAllocationProblem(lanes=(lane,), obstacles=(obstacle,), axis_sign=1) + ) + reflected_lane = CorridorLane( + member_id=lane.member_id, + cohort_id=lane.cohort_id, + endpoint_owner_id=lane.endpoint_owner_id, + boundary_coordinate=-lane.boundary_coordinate, + planned_coordinate=-lane.planned_coordinate, + span_start=lane.span_start, + span_end=lane.span_end, + semantic_rank=lane.semantic_rank, + ) + reflected_obstacle = _obstacle( + obstacle.obstacle_id, + -obstacle.order_coordinate, + -obstacle.realised_coordinate, + span=(obstacle.span_start, obstacle.span_end), + semantic_rank=obstacle.semantic_rank, + ) + + reflected = _allocations( + CorridorAllocationProblem( + lanes=(reflected_lane,), obstacles=(reflected_obstacle,), axis_sign=-1 + ) + ) + + assert reflected == { + member_id: -coordinate for member_id, coordinate in forward.items() + } + + +def test_incomplete_witnesses_return_whole_problem_to_compatibility() -> None: + problem = CorridorAllocationProblem( + lanes=( + _lane( + "known", + "corridor:partial", + "endpoint:partial", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=1, + ), + ), + witnesses_complete=False, + ) + + result = solve_corridor_cohorts(problem) + + assert result.status is CorridorAllocationStatus.COMPATIBILITY + assert result.reason is None + assert result.allocations == () + + +def test_contradictory_equalities_are_attributed_without_mutating_input() -> None: + lanes = ( + _lane( + "a", + "corridor:a", + "endpoint:a", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=1, + ), + _lane( + "b", + "corridor:b", + "endpoint:b", + 14.0, + 14.0, + span=(0.0, 10.0), + line_rank=2, + ), + ) + equalities = ( + CorridorEquality("network:ab", "a", "b", 2.0), + CorridorEquality("network:ab", "a", "b", 4.0), + ) + problem = CorridorAllocationProblem(lanes=lanes, equalities=equalities) + before = (problem.lanes, problem.obstacles, problem.equalities) + + result = solve_corridor_cohorts(problem) + + assert result.status is CorridorAllocationStatus.FAILURE + assert result.reason is CorridorAllocationFailureReason.CONTRADICTION + assert result.allocations == () + assert result.blocking_member_ids == ("a", "b") + assert result.blocking_obstacle_ids == () + assert result.blocking_equality_owner_ids == ("network:ab",) + assert (problem.lanes, problem.obstacles, problem.equalities) == before From 3f11f1758f16341ace6b1409eff53a36a36ec715 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Aug 2026 18:01:03 +0100 Subject: [PATCH 158/158] wip(routing): preserve corridor planning research checkpoint [skip ci] --- src/nf_metro/api.py | 30 +- src/nf_metro/cli.py | 4 - src/nf_metro/layout/CONTRACT.md | 26 +- src/nf_metro/layout/engine.py | 8 + src/nf_metro/layout/envelope_settlement.py | 2 + src/nf_metro/layout/phases/guards.py | 21 +- src/nf_metro/layout/route_plan.py | 34 +- src/nf_metro/layout/route_reservations.py | 34 +- src/nf_metro/layout/routing/common.py | 27 +- src/nf_metro/layout/routing/convergences.py | 226 ++ src/nf_metro/layout/routing/core.py | 3 + .../routing/corridor_cohort_integration.py | 3140 +++++++++++++++++ .../layout/routing/corridor_cohorts.py | 880 ++++- src/nf_metro/layout/routing/exit_turns.py | 210 +- .../layout/routing/member_geometry.py | 863 +++-- src/nf_metro/layout/routing/normalize.py | 1 + src/nf_metro/layout/routing/perp.py | 37 + src/nf_metro/layout/routing/planning.py | 110 +- src/nf_metro/layout/routing/reserved_bands.py | 39 +- src/nf_metro/layout/settlement_demand.py | 8 + src/nf_metro/render/svg.py | 360 +- src/nf_metro/themes/__init__.py | 36 + tests/test_cli.py | 21 + tests/test_convergence_corridor_grants.py | 172 + tests/test_corridor_cohort_integration.py | 1587 +++++++++ tests/test_corridor_cohorts.py | 2180 +++++++++++- tests/test_deferred_final_guards.py | 144 + tests/test_final_convergence_feasibility.py | 22 - tests/test_member_geometry.py | 334 +- tests/test_phase_state_registry.py | 4 +- tests/test_plan_owned_channel_agreement.py | 209 +- tests/test_route_reservations.py | 60 + tests/test_seam_lane_agreement.py | 77 +- tests/test_split_fanout_descent_invariant.py | 36 +- 34 files changed, 9857 insertions(+), 1088 deletions(-) create mode 100644 src/nf_metro/layout/routing/corridor_cohort_integration.py create mode 100644 tests/test_convergence_corridor_grants.py create mode 100644 tests/test_corridor_cohort_integration.py diff --git a/src/nf_metro/api.py b/src/nf_metro/api.py index a179bfed9..0f31e15f1 100644 --- a/src/nf_metro/api.py +++ b/src/nf_metro/api.py @@ -44,10 +44,7 @@ metrics_face_context, metrics_face_for_portability, ) -from nf_metro.themes import DEFAULT_MODE, THEME_MODES, THEMES - -# `style: dark` predates theme names; alias it onto the nfcore brand. -_STYLE_THEME_ALIASES = {"dark": "nfcore"} +from nf_metro.themes import resolve_theme @dataclass @@ -103,31 +100,6 @@ def apply_layout_overrides(graph: MetroGraph, opts: Mapping[str, object]) -> Non graph.layout_provenance.record_caller_line_order(value) -def resolve_theme( - theme: str | None, graph: MetroGraph, mode: str | None = None -) -> Theme: - """Resolve a concrete theme from independent brand and mode axes. - - Brand comes from the explicit ``theme`` name (``--theme``) or the - ``%%metro style:`` directive (``dark`` aliases to ``nfcore``). Mode comes - from the explicit ``mode`` argument (``--mode``), then the ``%%metro mode:`` - directive, then ``DEFAULT_MODE``. No brand carries its own mode: a known - brand always resolves through its light/dark family for the chosen mode. - """ - if theme is not None: - brand = theme - else: - name = graph.style.strip().lower() - brand = _STYLE_THEME_ALIASES.get(name, name) - - resolved_mode = (mode or graph.mode).strip().lower() or DEFAULT_MODE - family = THEME_MODES.get(brand) - if family and resolved_mode in family: - return family[resolved_mode] - - return THEMES.get(brand, THEMES["nfcore"]) - - @dataclass(frozen=True) class RenderResult: """Rendered content and the immutable plan used to create it.""" diff --git a/src/nf_metro/cli.py b/src/nf_metro/cli.py index 80260b809..ff30cb47f 100644 --- a/src/nf_metro/cli.py +++ b/src/nf_metro/cli.py @@ -759,10 +759,6 @@ def validate(input_file: Path, with_layout: bool, strict: bool) -> None: if with_layout: try: compute_layout(graph, validate=True) - if graph._final_route_guards_deferred: - from nf_metro.render.svg import build_render_plan - - build_render_plan(graph, resolve_theme(None, graph)) except (ValueError, FoldThresholdError, PhaseInvariantError) as e: issues.append(ValidationIssue(ERROR, str(e))) diff --git a/src/nf_metro/layout/CONTRACT.md b/src/nf_metro/layout/CONTRACT.md index d0517dd05..6925eb10d 100644 --- a/src/nf_metro/layout/CONTRACT.md +++ b/src/nf_metro/layout/CONTRACT.md @@ -194,6 +194,13 @@ frames armed on every fixture. That count is a function of how many systems make ownership claims, so a tree that plans more systems shows more mid-pass disagreement without its geometry being worse; it is not a quality metric. +If the final observation requires render-time envelope settlement, its +route-dependent guards defer within the layout engine. Before a successful +`compute_layout(validate=True)` returns, the engine builds the settled render +plan and runs those guards against the geometry that would be drawn. This is a +property of the validated layout API, not an extra obligation placed on CLI or +embedding callers. + ## Anchor invariant The **anchors** of a section are its port stations: synthetic points on the @@ -1584,15 +1591,26 @@ They are design evidence, not part of this specification. interchange idiom rather than the declared section gap, and widening one of their boundaries to that gap turns a flat inter-row run into a staircase -- a decision change, which `_assert_settlement_decisions_frozen` refuses. +- **Clearance grants form a fixed prerequisite DAG, not a retry loop.** Render + discovery can publish `GENERAL` convergence requirements. Those are settled + first because their translation can change carrier orientation, making any + corridor-cohort ledger captured beforehand invalid. One re-observation then + builds corridor-cohort intent from the settled convergence geometry. It can + publish at most one `CORRIDOR_COHORT_APERTURE` requirement set, which is + settled once before the final strict replay and freeze. Each transition is + validated against its own requirement kind; neither stage iterates or accepts + requirements owned by the other. - **The two demands can cover either axis.** The reservation ledger is settled on both: `_settle_axis` runs once per axis and every row-gap and column-gap claim is measured. Generic box-growth clearance remains row-only because `measure_row_gap_clearance` represents `push_lower_rows_after_bbox_grow`. Column demands are route-published and narrowly scoped: a - `BoundaryClearanceRequirement` grants runway only for a provisional - `NO_APPROACH_SETTLEMENT_ROOM` convergence, while a drawn-corridor demand pays - positive-side containment measured from the strict post-grant route. Label - wrapping does not independently create a column demand. + A `GENERAL` `BoundaryClearanceRequirement` grants runway only for a + provisional `NO_APPROACH_SETTLEMENT_ROOM` convergence. A + `CORRIDOR_COHORT_APERTURE` requirement grants only the typed, solver-measured + deficit of an otherwise atomic cohort allocation. A drawn-corridor demand + pays positive-side containment measured from the strict post-grant route. + Label wrapping does not independently create a column demand. - **Precondition**: `compute_layout` has finished, routing has published the reservation ledger, render-time label wrapping has taken its bbox growth, and the header-collision reconcile has run. Local station geometry, section bbox diff --git a/src/nf_metro/layout/engine.py b/src/nf_metro/layout/engine.py index d0ea9cf37..475c5a04b 100644 --- a/src/nf_metro/layout/engine.py +++ b/src/nf_metro/layout/engine.py @@ -503,6 +503,7 @@ def compute_layout( require_resolved_edge_endpoints(graph) require_resolved_port_sections(graph) + graph._final_route_guards_deferred = False if x_spacing is None: x_spacing = graph.x_spacing @@ -571,6 +572,13 @@ def _layout_pass(validate_pass: bool) -> None: elif validate and graph._after_final_deferred: _run_after_final_checkpoint(graph, section_y_gap, section_y_padding) + if validate and graph._final_route_guards_deferred: + from nf_metro.render.svg import build_render_plan + from nf_metro.themes import resolve_theme + + build_render_plan(graph, resolve_theme(None, graph)) + graph._final_route_guards_deferred = False + def _compute_layout_scaled( graph: MetroGraph, diff --git a/src/nf_metro/layout/envelope_settlement.py b/src/nf_metro/layout/envelope_settlement.py index 8464c7fe7..07f805946 100644 --- a/src/nf_metro/layout/envelope_settlement.py +++ b/src/nf_metro/layout/envelope_settlement.py @@ -116,6 +116,7 @@ from nf_metro.layout.settlement_demand import ( BoundaryClearanceDemand, BoundaryClearanceRequirement, + BoundaryClearanceRequirementKind, ClearanceMeasurement, SettlementAxis, ) @@ -126,6 +127,7 @@ "ROW_AXIS", "BoundaryClearanceDemand", "BoundaryClearanceRequirement", + "BoundaryClearanceRequirementKind", "ClearanceMeasurement", "DrawnCorridorClearanceRequirement", "EnvelopeSettlement", diff --git a/src/nf_metro/layout/phases/guards.py b/src/nf_metro/layout/phases/guards.py index d449689d0..670b04527 100644 --- a/src/nf_metro/layout/phases/guards.py +++ b/src/nf_metro/layout/phases/guards.py @@ -6158,10 +6158,11 @@ def _ensure_pass_c_inputs( failure leaves ``routes`` as ``None`` (it surfaces elsewhere); guards that need routes are then skipped. - A final layout checkpoint can precede render-time envelope settlement. If - its observation requests boundary clearance, the route-dependent guards - defer to the render chokepoint, which receives the settled routes. Guards - without a route dependency continue to inspect the final layout state. + A final layout checkpoint precedes completion of the route-plan DAG. + Symbolic reservations and boundary-clearance requests are consumed by the + following settled-plan stage, so route-dependent guards defer to its + chokepoint at the end of ``compute_layout``. Guards without a route + dependency continue to inspect the final layout state. """ from nf_metro.layout.routing import compute_station_offsets, observe_route_edges from nf_metro.layout.routing.core import route_edges_for_placement_guards @@ -6176,7 +6177,10 @@ def _ensure_pass_c_inputs( station_offsets=offsets, allow_convergence_clearance_requirements=True, ) - deferred = bool(observation.plan.boundary_clearance_requirements) + deferred = bool( + observation.plan.boundary_clearance_requirements + or observation.plan.reservations + ) graph._final_route_guards_deferred = deferred routes = None if deferred else observation.routes else: @@ -6184,10 +6188,9 @@ def _ensure_pass_c_inputs( except Exception: # noqa: BLE001 - routing failure surfaces elsewhere routes = None if validate_final_geometry: - # A caller that validates without rendering follows the - # deferral flag to a render-plan build, where the routing - # failure resurfaces instead of being swallowed as a run - # with every route guard skipped. + # The layout engine follows this deferral with a settled-plan + # build, where the routing failure resurfaces instead of being + # swallowed as a run with every route guard skipped. graph._final_route_guards_deferred = True return offsets, routes diff --git a/src/nf_metro/layout/route_plan.py b/src/nf_metro/layout/route_plan.py index f80d63f8e..e163cde4b 100644 --- a/src/nf_metro/layout/route_plan.py +++ b/src/nf_metro/layout/route_plan.py @@ -66,6 +66,9 @@ ) from nf_metro.layout.routing.common import RoutedPath from nf_metro.layout.routing.context import _EdgeKey, _RoutingCtx + from nf_metro.layout.routing.corridor_cohort_integration import ( + CorridorCohortLedger, + ) from nf_metro.layout.routing.system_emission import RouteSystemEmissionExecution from nf_metro.layout.settlement_demand import BoundaryClearanceRequirement @@ -202,6 +205,7 @@ class RouteMemberGeometryPlan: fan_route_emitter: str | None = None exit_shared_opening_points: tuple[tuple[float, float], ...] = () consumed_reservation_ids: tuple[str, ...] = () + corridor_cohort_owned_segment_ranks: tuple[int, ...] = () coordinate_regime: CoordinateRegime = CoordinateRegime.LAYOUT_CANVAS owns_complete_path: bool = False @@ -236,6 +240,13 @@ def __post_init__(self) -> None: for channel in self.gap_channels ): raise ValueError("member geometry plan channel exceeds its path segments") + if len(set(self.corridor_cohort_owned_segment_ranks)) != len( + self.corridor_cohort_owned_segment_ranks + ) or any( + rank < 0 or rank >= len(self.points) - 1 + for rank in self.corridor_cohort_owned_segment_ranks + ): + raise ValueError("member geometry plan has invalid corridor cohort ranks") if any( any( abs(actual - expected) > COORD_TOLERANCE @@ -259,8 +270,12 @@ def owned_segment_ranks(self) -> tuple[int, ...]: return tuple(range(len(self.points) - 1)) opening_ranks = range(max(0, len(self.exit_shared_opening_points) - 1)) return tuple( - dict.fromkeys( - (*opening_ranks, *(item.segment_rank for item in self.gap_channels)) + sorted( + { + *opening_ranks, + *(item.segment_rank for item in self.gap_channels), + *self.corridor_cohort_owned_segment_ranks, + } ) ) @@ -2383,6 +2398,7 @@ class RoutePlan: settlement re-route replays the frozen decision instead of re-deriving one from moved geometry.""" boundary_clearance_requirements: tuple[BoundaryClearanceRequirement, ...] = () + corridor_cohort_ledger: CorridorCohortLedger | None = None @dataclass(slots=True) @@ -2634,6 +2650,7 @@ class RoutePlanObserver: boundary_clearance_requirements: tuple[BoundaryClearanceRequirement, ...] = () member_geometry_plans: tuple[RouteMemberGeometryPlan, ...] = () exit_turn_dispositions: tuple[tuple[ExitTurnPlanId, str | None], ...] = () + corridor_cohort_ledger: CorridorCohortLedger | None = None _family_by_edge: dict[_EdgeKey, RouteFamilyId] = field(default_factory=dict) _merge_skips: dict[_EdgeKey, _EdgeKey | None] = field(default_factory=dict) @@ -2684,6 +2701,7 @@ def build_route_plan_observer( boundary_clearance_requirements: tuple[BoundaryClearanceRequirement, ...] = (), member_geometry_plans: tuple[RouteMemberGeometryPlan, ...] = (), exit_turn_dispositions: tuple[tuple[ExitTurnPlanId, str | None], ...] = (), + corridor_cohort_ledger: CorridorCohortLedger | None = None, ) -> RoutePlanObserver: """Create one transient observer after settled routing context construction.""" return RoutePlanObserver( @@ -2702,6 +2720,7 @@ def build_route_plan_observer( boundary_clearance_requirements=boundary_clearance_requirements, member_geometry_plans=member_geometry_plans, exit_turn_dispositions=exit_turn_dispositions, + corridor_cohort_ledger=corridor_cohort_ledger, ) @@ -3474,6 +3493,7 @@ def _build_route_plan( + observer.convergence_diagnostics ), boundary_clearance_requirements=observer.boundary_clearance_requirements, + corridor_cohort_ledger=observer.corridor_cohort_ledger, ) from nf_metro.layout.route_reservations import attach_route_reservations @@ -4749,6 +4769,14 @@ def _validate_member_geometry_records( bindings: Mapping[EmissionMemberId, list[EmissionBinding]], ) -> None: """Cross-check immutable member templates against canonical membership.""" + finalized_cohorts = ( + plan.corridor_cohort_ledger is not None + and plan.corridor_cohort_ledger.finalized_owned_segments is not None + ) + if not finalized_cohorts and any( + item.corridor_cohort_owned_segment_ranks for item in plan.member_geometry_plans + ): + raise ValueError("unfinalized corridor cohorts publish owned segments") records = {item.id: item for item in plan.member_geometry_plans} if len(records) != len(plan.member_geometry_plans): raise ValueError("route plan contains duplicate member geometry plan ids") @@ -5106,6 +5134,8 @@ def _json_value(value: object) -> object: return value.value if isinstance(value, tuple): return [_json_value(item) for item in value] + if isinstance(value, frozenset): + return [_json_value(item) for item in sorted(value, key=repr)] if isinstance(value, (str, int, float, bool, type(None))): return value raise TypeError(f"route plan contains unsupported {type(value).__name__}") diff --git a/src/nf_metro/layout/route_reservations.py b/src/nf_metro/layout/route_reservations.py index c1171bf96..fa7839038 100644 --- a/src/nf_metro/layout/route_reservations.py +++ b/src/nf_metro/layout/route_reservations.py @@ -65,7 +65,7 @@ ) from nf_metro.layout.routing.common import Direction, RoutedPath, apply_route_offsets from nf_metro.layout.routing.families import RouteFamilyId -from nf_metro.parser.model import MetroGraph, Section +from nf_metro.parser.model import MetroGraph, PortSide, Section from nf_metro.parser.provenance import ( ConnectorEndpointRole, GridCell, @@ -166,6 +166,38 @@ class CanvasRegion: CorridorRegion: TypeAlias = RowGapRegion | ColumnGapRegion | CanvasRegion +def claim_is_destination_boundary_carrier( + graph: MetroGraph, + target_station_id: str, + region: CorridorRegion, +) -> bool: + """Whether *region* is the grid boundary feeding a target entry port.""" + port = graph.ports.get(target_station_id) + if port is None or not port.is_entry: + return False + section = graph.sections.get(port.section_id) + if section is None or section.grid_col < 0 or section.grid_row < 0: + return False + if isinstance(region, CanvasRegion): + return False + if port.side is PortSide.LEFT: + return ( + isinstance(region, ColumnGapRegion) + and region.right_column == section.grid_col + ) + if port.side is PortSide.RIGHT: + return ( + isinstance(region, ColumnGapRegion) + and region.left_column == section.grid_col + section.grid_col_span - 1 + ) + if port.side is PortSide.TOP: + return isinstance(region, RowGapRegion) and region.lower_row == section.grid_row + return ( + isinstance(region, RowGapRegion) + and region.upper_row == section.grid_row + section.grid_row_span - 1 + ) + + class CanvasRect(NamedTuple): """Axis-aligned final-render bounds.""" diff --git a/src/nf_metro/layout/routing/common.py b/src/nf_metro/layout/routing/common.py index 8eef3de3f..02088198e 100644 --- a/src/nf_metro/layout/routing/common.py +++ b/src/nf_metro/layout/routing/common.py @@ -7,7 +7,7 @@ from collections.abc import Iterable, Iterator, Mapping, Sequence from dataclasses import dataclass, field from enum import Enum -from typing import NamedTuple +from typing import AbstractSet, NamedTuple from nf_metro.layout.constants import ( BUNDLE_TO_BUNDLE_CLEARANCE, @@ -2468,12 +2468,19 @@ def route_system_owns_segment_boundary(route: RoutedPath, rank: int) -> bool: ) or member_plan_owns_segment_boundary(route, rank) -def planner_owns_segment(route: RoutedPath, rank: int) -> bool: +def planner_owns_segment( + route: RoutedPath, + rank: int, + *, + relinquished_exit_turn_plan_ids: AbstractSet[str] = frozenset(), +) -> bool: """Whether a pre-routing plan fixes the coordinate of one route segment. - A convergence-owned segment boundary, a fan emission and a planned exit turn - are all resolved against a plan the closing validators check the geometry - against, so their coordinate is not a normalisation pass's to choose. + A convergence- or member-owned boundary, shared opening, compact lane + transition, fan, and planned exit turn are all resolved against a plan the + closing validators check the geometry against, so their coordinate is not + another allocation or normalisation pass's to choose. Exit-turn ownership + includes both segments adjoining its corner. Stated once because the passes that move a coordinate and the guards that refuse the result both have to agree on which coordinates are theirs: a pass @@ -2481,12 +2488,16 @@ def planner_owns_segment(route: RoutedPath, rank: int) -> bool: refuses, and a narrower one would leave a defect neither reports. """ return ( - convergence_owns_segment_boundary(route, rank) + member_plan_owns_segment_boundary(route, rank) + or route.exit_lane_transition_plan_id is not None + or route.fan_plan_id is not None or route.fan_route_emitter is not None - or member_plan_owns_segment_boundary(route, rank) + or convergence_owns_segment_boundary(route, rank) or rank < len(route.exit_shared_opening_points) or ( - route.exit_turn_axis_id is not None and route.exit_turn_segment_rank == rank + route.exit_turn_segment_rank is not None + and route.exit_turn_plan_id not in relinquished_exit_turn_plan_ids + and abs(route.exit_turn_segment_rank - rank) <= 1 ) ) diff --git a/src/nf_metro/layout/routing/convergences.py b/src/nf_metro/layout/routing/convergences.py index 7bb229a3e..8ca13569d 100644 --- a/src/nf_metro/layout/routing/convergences.py +++ b/src/nf_metro/layout/routing/convergences.py @@ -66,6 +66,7 @@ reservation_decision_refs, turn_handedness, ) +from nf_metro.layout.route_reservations import ColumnGapRegion, RowGapRegion from nf_metro.layout.routing.centrelines import gather_member_edges from nf_metro.layout.routing.common import ( Direction, @@ -89,6 +90,15 @@ _resolve_section_colrow, _RoutingCtx, ) +from nf_metro.layout.routing.corridor_cohort_integration import ( + CorridorCohortTarget, + CorridorScalarGrant, + CorridorScalarOwnerKind, + CorridorScalarRequest, + CorridorScalarVariable, +) +from nf_metro.layout.routing.corridor_cohorts import CorridorCoordinateDomain +from nf_metro.layout.routing.families import RouteFamilyId from nf_metro.layout.routing.member_geometry import ( MemberGeometryExecution, PreliminaryGapChannelClaim, @@ -6866,6 +6876,222 @@ def _settle_convergence_geometry( return _reconcile_landing_handedness(settled, ctx) +def _convergence_corridor_target( + plan: ConvergencePlan, + ctx: _RoutingCtx, +) -> tuple[CorridorCohortTarget, CorridorScalarVariable] | None: + """Expose one plan-owned central trunk as one scalar corridor variable.""" + axis = plan.trunk_axis + if axis is None or plan.primary_trunk_member_id is None: + return None + ownership = next( + ( + item + for item in plan.endpoint_ownership + if item.member_id == plan.primary_trunk_member_id + ), + None, + ) + if ownership is None: + return None + edge_key = ( + ownership.edge.source, + ownership.edge.target, + ownership.edge.line_id, + ) + edge = ctx.edge_by_key.get(edge_key) + if edge is None: + return None + central = _trunk_segments(axis)[0] + route = RoutedPath( + edge, + edge.line_id, + [central[0], central[1]], + is_inter_section=True, + ) + owner_id = str(plan.id) + variable_id = f"convergence-trunk|{owner_id}" + member_id = f"{variable_id}|footprint" + target_edge_key = ( + f"{variable_id}|source", + f"{variable_id}|target", + f"{variable_id}|line", + ) + target = CorridorCohortTarget( + member_id, + owner_id, + target_edge_key, + RouteFamilyId.MERGE_TRUNK, + ownership.connector_ids, + route, + True, + ) + variable = CorridorScalarVariable( + variable_id=variable_id, + owner_kind=CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + owner_id=owner_id, + member_id=member_id, + edge_key=target_edge_key, + connector_ids=ownership.connector_ids, + segment_rank=0, + axis=1 if axis.axis is DemandAxis.X else 0, + coordinate=axis.coordinate, + ) + return target, variable + + +def _convergence_corridor_preference( + plan: ConvergencePlan, + graph: MetroGraph, + ctx: _RoutingCtx, +) -> tuple[float, CorridorCoordinateDomain]: + """Read one trunk's preferred coordinate and complete feasible domain.""" + axis = plan.trunk_axis + assert axis is not None + coordinate_axis = 1 if axis.axis is DemandAxis.X else 0 + band = corridor_clearance_band( + graph, + axis=coordinate_axis, + section_ids=tuple(_plan_section_ids(plan, graph)), + coordinate=axis.coordinate, + run_start=axis.extent_start, + run_end=axis.extent_end, + ) + variable_id = f"convergence-trunk|{plan.id}" + if band is None: + return axis.coordinate, CorridorCoordinateDomain(variable_id) + minimum_coordinate = band.lo if math.isfinite(band.lo) else None + maximum_coordinate = band.hi if math.isfinite(band.hi) else None + preferred_coordinate = axis.coordinate + if minimum_coordinate is not None: + preferred_coordinate = max(preferred_coordinate, minimum_coordinate) + if maximum_coordinate is not None: + preferred_coordinate = min(preferred_coordinate, maximum_coordinate) + return ( + preferred_coordinate, + CorridorCoordinateDomain( + variable_id, + minimum_coordinate=minimum_coordinate, + maximum_coordinate=maximum_coordinate, + ), + ) + + +def _convergence_corridor_region( + plan: ConvergencePlan, + graph: MetroGraph, +) -> RowGapRegion | ColumnGapRegion | None: + """Name the adjacent layout boundary containing a planned trunk.""" + axis = plan.trunk_axis + assert axis is not None + if axis.axis is DemandAxis.X: + upper_row = inter_row_gap_upper_row(graph, axis.coordinate) + return None if upper_row is None else RowGapRegion(upper_row, upper_row + 1) + gap = gap_lo_for_x( + graph, + axis.coordinate, + axis.extent_start, + axis.extent_end, + ) + return None if gap is None else ColumnGapRegion(gap[0], gap[0] + 1) + + +def convergence_corridor_requests( + plans: tuple[ConvergencePlan, ...], + graph: MetroGraph, + ctx: _RoutingCtx, +) -> tuple[tuple[CorridorCohortTarget, ...], tuple[CorridorScalarRequest, ...]]: + """Publish typed trunk inputs for the canonical corridor cohort compiler.""" + targets: list[CorridorCohortTarget] = [] + requests: list[CorridorScalarRequest] = [] + for plan in plans: + exposed = _convergence_corridor_target(plan, ctx) + if exposed is None: + continue + target, variable = exposed + preferred_coordinate, domain = _convergence_corridor_preference( + plan, + graph, + ctx, + ) + targets.append(target) + requests.append( + CorridorScalarRequest( + variable, + preferred_coordinate, + domain, + region=_convergence_corridor_region(plan, graph), + ) + ) + return tuple(targets), tuple(requests) + + +def apply_convergence_corridor_grants( + execution: ConvergencePlanExecution, + requests: tuple[CorridorScalarRequest, ...], + grants: tuple[CorridorScalarGrant, ...], +) -> ConvergencePlanExecution: + """Consume complete typed scalar grants without making geometry decisions.""" + requests_by_id = {item.variable.variable_id: item for item in requests} + grants_by_id = {item.variable_id: item for item in grants} + if len(requests_by_id) != len(requests) or len(grants_by_id) != len(grants): + raise ConvergenceInvariantError( + "convergence corridor request or grant identity is ambiguous" + ) + if requests_by_id.keys() != grants_by_id.keys(): + raise ConvergenceInvariantError( + "convergence corridor grant set does not complete its request set" + ) + plans_by_id = {str(plan.id): plan for plan in execution.plans} + replacements: dict[ConvergencePlanId, ConvergencePlan] = {} + for variable_id in sorted(requests_by_id): + request = requests_by_id[variable_id] + variable = request.variable + grant = grants_by_id[variable_id] + if ( + variable.owner_kind is not CorridorScalarOwnerKind.CONVERGENCE_TRUNK + or grant.owner_kind is not CorridorScalarOwnerKind.CONVERGENCE_TRUNK + or grant.owner_id != variable.owner_id + ): + raise ConvergenceInvariantError( + f"corridor grant {variable_id} has the wrong semantic owner" + ) + plan = plans_by_id.get(variable.owner_id) + if ( + plan is None + or plan.trunk_axis is None + or abs(plan.trunk_axis.coordinate - variable.coordinate) > COORD_TOLERANCE + ): + raise ConvergenceInvariantError( + f"corridor grant {variable_id} does not match its source plan" + ) + moved = _move_trunk_axis( + plan, + grant.coordinate, + preserve_lane_offsets=True, + ) + if ( + moved.trunk_axis is None + or abs(moved.trunk_axis.coordinate - grant.coordinate) > COORD_TOLERANCE + ): + raise ConvergenceInvariantError( + f"corridor grant {variable_id} was not consumed atomically" + ) + replacements[plan.id] = moved + if not replacements: + return execution + plans = tuple(replacements.get(plan.id, plan) for plan in execution.plans) + return replace( + execution, + plans=plans, + query=_query( + plans, + execution.query._edge_order, + execution.clearance_requirements, + ), + ) + + def _settle_eligible( execution: ConvergencePlanExecution, exit_turn_plans: tuple[ExitTurnPlan, ...], diff --git a/src/nf_metro/layout/routing/core.py b/src/nf_metro/layout/routing/core.py index 7ccce13b5..5270ad8e2 100644 --- a/src/nf_metro/layout/routing/core.py +++ b/src/nf_metro/layout/routing/core.py @@ -327,6 +327,7 @@ def _route_edges( # noqa: C901 allow_convergence_clearance_requirements=( allow_convergence_clearance_requirements ), + prior_plan=reservations, ) execution = planning.exit_turns member_geometry = planning.member_geometry @@ -362,9 +363,11 @@ def _route_edges( # noqa: C901 convergence_diagnostics=convergence_execution.diagnostics, boundary_clearance_requirements=( convergence_execution.clearance_requirements + + member_geometry.clearance_requirements ), member_geometry_plans=published_member_geometry, exit_turn_dispositions=planning.exit_turn_dispositions, + corridor_cohort_ledger=planning.corridor_cohort_ledger, ) # Route into the context's own list so handlers can read the routes settled # so far (a wrap clearing an already-placed sibling channel); it grows as diff --git a/src/nf_metro/layout/routing/corridor_cohort_integration.py b/src/nf_metro/layout/routing/corridor_cohort_integration.py new file mode 100644 index 000000000..5d32fdcb4 --- /dev/null +++ b/src/nf_metro/layout/routing/corridor_cohort_integration.py @@ -0,0 +1,3140 @@ +"""Compile semantic corridor cohorts against one current route snapshot.""" + +from __future__ import annotations + +from collections import Counter, defaultdict +from collections.abc import Mapping, Sequence +from dataclasses import dataclass, replace +from enum import Enum +from math import isclose, isfinite + +from nf_metro.layout.constants import COORD_TOLERANCE, CURVE_RADIUS, graph_offset_step +from nf_metro.layout.geometry import cotravelling_lane_clearance +from nf_metro.layout.route_plan import ( + BindingKind, + EmissionBinding, + EmissionMember, + RoutePlan, + RouteSemanticScaffold, +) +from nf_metro.layout.route_reservations import ( + CorridorOrientation, + CorridorRegion, + RouteReservation, + _reservation_content_id, + claim_is_destination_boundary_carrier, +) +from nf_metro.layout.routing.common import ( + Direction, + RoutedPath, + convergence_owns_segment_boundary, + planner_owns_segment, + right_normal_axis_sign, + segment_direction, +) +from nf_metro.layout.routing.corners import concentric_corner_radius_at +from nf_metro.layout.routing.corridor_cohorts import ( + CorridorAllocationFailureReason, + CorridorAllocationProblem, + CorridorAllocationResult, + CorridorAllocationStatus, + CorridorClearanceShortfall, + CorridorCoordinateDomain, + CorridorDirectedSeparation, + CorridorEquality, + CorridorFixedEquality, + CorridorForbiddenInterval, + CorridorLane, + CorridorObstacle, + CorridorSeparation, + solve_corridor_cohorts, +) +from nf_metro.layout.routing.families import RouteFamilyId +from nf_metro.parser.model import MetroGraph, PortSide +from nf_metro.parser.route_topology import ConnectorId + +CorridorCohortSegmentKey = tuple[str, tuple[str, str, str], int] +CorridorFootprintSegmentKey = tuple[str, tuple[str, str, str], int] +_PORT_LEAD_DIRECTION = { + PortSide.LEFT: Direction.R, + PortSide.RIGHT: Direction.L, + PortSide.TOP: Direction.D, + PortSide.BOTTOM: Direction.U, +} + + +class CorridorCohortClaimRole(str, Enum): + MOVABLE = "movable" + EQUALITY = "equality" + FIXED = "fixed" + + +class CorridorScalarOwnerKind(str, Enum): + MEMBER_CARRIER = "member-carrier" + CONVERGENCE_TRUNK = "convergence-trunk" + + +class CorridorCrossingDisposition(str, Enum): + FIXED_DOGLEG = "fixed-dogleg" + LEGAL_CROSSING = "legal-crossing" + + +@dataclass(frozen=True, slots=True) +class CorridorScalarVariable: + variable_id: str + owner_kind: CorridorScalarOwnerKind + owner_id: str + member_id: str + edge_key: tuple[str, str, str] + connector_ids: tuple[ConnectorId, ...] + segment_rank: int + axis: int + coordinate: float + + +@dataclass(frozen=True, slots=True) +class CorridorScalarControlledPoint: + member_id: str + edge_key: tuple[str, str, str] + connector_ids: tuple[ConnectorId, ...] + point_rank: int + axis: int + source_offset: float + role_id: str + + +@dataclass(frozen=True, slots=True) +class CorridorScalarDirectedRunway: + owner_id: str + member_id: str + edge_key: tuple[str, str, str] + controlled_role_id: str + axis: int + direction_sign: int + minimum_distance: float + anchor_role_id: str | None = None + anchor_coordinate: float | None = None + + def __post_init__(self) -> None: + if (self.anchor_role_id is None) == (self.anchor_coordinate is None): + raise ValueError("runway anchor must be exactly controlled or fixed") + + +@dataclass(frozen=True, slots=True) +class CorridorScalarControlRecipe: + owner_id: str + source_coordinate: float + controlled_points: tuple[CorridorScalarControlledPoint, ...] + directed_runways: tuple[CorridorScalarDirectedRunway, ...] = () + + +@dataclass(frozen=True, slots=True) +class CorridorScalarRequest: + variable: CorridorScalarVariable + preferred_coordinate: float + domain: CorridorCoordinateDomain + region: CorridorRegion | None = None + control_recipe: CorridorScalarControlRecipe | None = None + + +@dataclass(frozen=True, slots=True) +class CorridorScalarGrant: + variable_id: str + owner_kind: CorridorScalarOwnerKind + owner_id: str + coordinate: float + coordinate_delta: float = 0.0 + control_recipe: CorridorScalarControlRecipe | None = None + + +@dataclass(frozen=True, slots=True) +class CorridorFootprintWitness: + footprint_id: str + owner_id: str + member_id: str + edge_key: tuple[str, str, str] + connector_ids: tuple[ConnectorId, ...] + segment_rank: int + axis: int + coordinate: float + longitudinal_start: float + longitudinal_end: float + direction: Direction + line_id: str + network_id: str | None + regions: tuple[CorridorRegion, ...] + semantic_rank: tuple[int, ...] + crossing_disposition: CorridorCrossingDisposition + coordinate_variable_id: str | None = None + start_variable_id: str | None = None + end_variable_id: str | None = None + coordinate_variable_offset: float = 0.0 + start_variable_offset: float = 0.0 + end_variable_offset: float = 0.0 + + +@dataclass(frozen=True, slots=True) +class CorridorCohortObstacleProvenance: + obstacle_id: str + member_id: str + edge_key: tuple[str, str, str] + segment_rank: int + connector_ids: tuple[ConnectorId, ...] + + +@dataclass(frozen=True, slots=True) +class CorridorCohortFailure: + component_id: str + result_rank: int + reason: CorridorAllocationFailureReason + blocking_member_ids: tuple[str, ...] + blocking_obstacle_ids: tuple[str, ...] + blocking_equality_owner_ids: tuple[str, ...] + blocking_endpoint_owner_ids: tuple[str, ...] + clearance_shortfall: CorridorClearanceShortfall | None = None + blocking_obstacles: tuple[CorridorCohortObstacleProvenance, ...] = () + + +class CorridorCohortCompilationError(RuntimeError): + """The semantic ledger cannot be compiled against the current population.""" + + def __init__( + self, + message: str, + failures: tuple[CorridorCohortFailure, ...] = (), + ) -> None: + super().__init__(message) + self.failures = failures + + +@dataclass(frozen=True, slots=True) +class CorridorCohortLedgerClaim: + claim_id: str + reservation_id: str + reservation_rank: int + claim_rank: int + region: CorridorRegion + orientation: CorridorOrientation + direction: Direction + lane_rank: int | None + member_id: str + member_geometry_plan_id: str | None + edge_key: tuple[str, str, str] | None + family_id: RouteFamilyId | None + connector_ids: tuple[ConnectorId, ...] + segment_rank: int + path_rank: int + endpoint_cohort_id: str | None + endpoint_network_rank: int | None + destination_boundary_carrier: bool + destination_boundary_axis_sign: int | None + network_id: str | None + reservation_complete: bool + + +@dataclass(frozen=True, slots=True) +class CorridorCohortLedger: + claims: tuple[CorridorCohortLedgerClaim, ...] + endpoint_members: tuple[tuple[str, frozenset[str]], ...] + eligible_member_ids: frozenset[str] + ambiguous_endpoint_cohort_ids: frozenset[str] + offset_step: float + curve_radius: float = CURVE_RADIUS + finalized_owned_segments: frozenset[CorridorCohortSegmentKey] | None = None + + +@dataclass(frozen=True, slots=True) +class CorridorCohortTarget: + member_id: str + member_geometry_plan_id: str + edge_key: tuple[str, str, str] + family_id: RouteFamilyId + connector_ids: tuple[ConnectorId, ...] + route: RoutedPath + mutable: bool + endpoint_lane_axis: int | None = None + endpoint_lane_coordinate: float | None = None + network_id: str | None = None + legal_crossing_segment_ranks: frozenset[int] = frozenset() + + +def build_corridor_footprint_witnesses( + targets: Sequence[CorridorCohortTarget], + variables: Sequence[CorridorScalarVariable] = (), + regions_by_segment: Mapping[CorridorFootprintSegmentKey, tuple[CorridorRegion, ...]] + | None = None, + controlled_points: Mapping[ + tuple[str, tuple[str, str, str], int, int], tuple[str, float] + ] + | None = None, +) -> tuple[CorridorFootprintWitness, ...]: + """Describe current orthogonal route footprints without choosing geometry.""" + target_keys = [(target.member_id, target.edge_key) for target in targets] + if len(target_keys) != len(set(target_keys)): + raise CorridorCohortCompilationError( + "corridor footprint population has ambiguous target identities" + ) + variables_by_segment: dict[CorridorFootprintSegmentKey, CorridorScalarVariable] = {} + for variable in variables: + key = variable.member_id, variable.edge_key, variable.segment_rank + if key in variables_by_segment: + raise CorridorCohortCompilationError( + f"corridor footprint segment {key} has multiple scalar owners" + ) + if variable.axis not in (0, 1) or not isfinite(variable.coordinate): + raise CorridorCohortCompilationError( + f"corridor scalar variable {variable.variable_id} has no finite axis" + ) + variables_by_segment[key] = variable + + target_rank = {key: rank for rank, key in enumerate(sorted(target_keys))} + regions_by_segment = regions_by_segment or {} + controlled_points = controlled_points or {} + witnesses: list[CorridorFootprintWitness] = [] + for target in targets: + points = target.route.points + for segment_rank, (start, end) in enumerate(zip(points, points[1:])): + if isclose(start[0], end[0], abs_tol=COORD_TOLERANCE): + axis = 0 + elif isclose(start[1], end[1], abs_tol=COORD_TOLERANCE): + axis = 1 + else: + continue + direction = segment_direction(start, end) + if direction is None: + continue + key = target.member_id, target.edge_key, segment_rank + coordinate_variable = variables_by_segment.get(key) + coordinate_variable_offset = 0.0 + start_variable = variables_by_segment.get( + (target.member_id, target.edge_key, segment_rank - 1) + ) + start_variable_offset = 0.0 + end_variable = variables_by_segment.get( + (target.member_id, target.edge_key, segment_rank + 1) + ) + end_variable_offset = 0.0 + explicit_coordinate_controls = tuple( + controlled_points.get( + (target.member_id, target.edge_key, point_rank, axis) + ) + for point_rank in (segment_rank, segment_rank + 1) + ) + if any(item is not None for item in explicit_coordinate_controls): + if ( + any(item is None for item in explicit_coordinate_controls) + or explicit_coordinate_controls[0] + != explicit_coordinate_controls[1] + ): + raise CorridorCohortCompilationError( + f"corridor footprint segment {key} has partial affine " + "coordinate control" + ) + coordinate_control = explicit_coordinate_controls[0] + if coordinate_control is None: + raise CorridorCohortCompilationError( + f"corridor footprint segment {key} has no affine " + "coordinate control" + ) + variable_id, coordinate_variable_offset = coordinate_control + coordinate_variable = next( + item for item in variables if item.variable_id == variable_id + ) + explicit_start = controlled_points.get( + (target.member_id, target.edge_key, segment_rank, 1 - axis) + ) + if explicit_start is not None: + variable_id, start_variable_offset = explicit_start + start_variable = next( + item for item in variables if item.variable_id == variable_id + ) + explicit_end = controlled_points.get( + (target.member_id, target.edge_key, segment_rank + 1, 1 - axis) + ) + if explicit_end is not None: + variable_id, end_variable_offset = explicit_end + end_variable = next( + item for item in variables if item.variable_id == variable_id + ) + for endpoint_variable in (start_variable, end_variable): + if endpoint_variable is not None and endpoint_variable.axis != 1 - axis: + raise CorridorCohortCompilationError( + f"corridor footprint segment {key} has a non-perpendicular " + "endpoint controller" + ) + if coordinate_variable is not None and coordinate_variable.axis != axis: + raise CorridorCohortCompilationError( + f"corridor footprint segment {key} disagrees with its scalar axis" + ) + witnesses.append( + CorridorFootprintWitness( + footprint_id=( + f"corridor-footprint|{target.member_id}|{target.edge_key}|" + f"segment:{segment_rank}" + ), + owner_id=target.member_geometry_plan_id, + member_id=target.member_id, + edge_key=target.edge_key, + connector_ids=target.connector_ids, + segment_rank=segment_rank, + axis=axis, + coordinate=start[axis], + longitudinal_start=min(start[1 - axis], end[1 - axis]), + longitudinal_end=max(start[1 - axis], end[1 - axis]), + direction=direction, + line_id=target.route.line_id, + network_id=target.network_id, + regions=tuple(regions_by_segment.get(key, ())), + semantic_rank=( + target_rank[(target.member_id, target.edge_key)], + segment_rank, + ), + crossing_disposition=( + CorridorCrossingDisposition.LEGAL_CROSSING + if segment_rank in target.legal_crossing_segment_ranks + else CorridorCrossingDisposition.FIXED_DOGLEG + ), + coordinate_variable_id=( + None + if coordinate_variable is None + else coordinate_variable.variable_id + ), + start_variable_id=( + None if start_variable is None else start_variable.variable_id + ), + end_variable_id=( + None if end_variable is None else end_variable.variable_id + ), + coordinate_variable_offset=coordinate_variable_offset, + start_variable_offset=start_variable_offset, + end_variable_offset=end_variable_offset, + ) + ) + return tuple( + sorted(witnesses, key=lambda item: (item.semantic_rank, item.footprint_id)) + ) + + +@dataclass(frozen=True, slots=True) +class CorridorCohortAllocation: + claim_id: str + member_id: str + member_geometry_plan_id: str + edge_key: tuple[str, str, str] + family_id: RouteFamilyId + connector_ids: tuple[ConnectorId, ...] + segment_rank: int + axis: int + longitudinal_start: float + longitudinal_end: float + coordinate: float + + +@dataclass(frozen=True, slots=True) +class CorridorCohortLanding: + member_id: str + member_geometry_plan_id: str + edge_key: tuple[str, str, str] + connector_ids: tuple[ConnectorId, ...] + segment_rank: int + axis: int + coordinate: float + + +@dataclass(frozen=True, slots=True) +class CorridorCohortComponentPlan: + component_id: str + endpoint_cohort_ids: tuple[str, ...] + claim_roles: tuple[tuple[str, CorridorCohortClaimRole], ...] + problems: tuple[CorridorAllocationProblem, ...] + results: tuple[CorridorAllocationResult, ...] + status: CorridorAllocationStatus + allocations: tuple[CorridorCohortAllocation, ...] = () + protected_segments: tuple[tuple[str, int], ...] = () + + +@dataclass(frozen=True, slots=True) +class CorridorCohortPlan: + components: tuple[CorridorCohortComponentPlan, ...] + allocations: tuple[CorridorCohortAllocation, ...] + protected_segments: tuple[tuple[str, int], ...] + landings: tuple[CorridorCohortLanding, ...] = () + scalar_grants: tuple[CorridorScalarGrant, ...] = () + + +@dataclass(frozen=True, slots=True) +class _BoundClaim: + ledger: CorridorCohortLedgerClaim + target: CorridorCohortTarget + longitudinal_start: float + longitudinal_end: float + coordinate: float + landing_coordinate: float | None + + @property + def claim_id(self) -> str: + return self.ledger.claim_id + + @property + def axis(self) -> int: + return int(self.ledger.orientation is CorridorOrientation.HORIZONTAL) + + +@dataclass(frozen=True, slots=True) +class _FootprintTerm: + variable_id: str | None + coordinate: float | None + witness_id: str + + def __post_init__(self) -> None: + if (self.variable_id is None) == (self.coordinate is None): + raise ValueError("footprint term must be exactly variable or fixed") + + +@dataclass(frozen=True, slots=True) +class _FootprintOrder: + owner_id: str + lower: _FootprintTerm + upper: _FootprintTerm + distance: float + participant_variable_ids: tuple[str, ...] + witness_ids: tuple[str, ...] + regions: tuple[CorridorRegion, ...] + + +@dataclass(frozen=True, slots=True) +class _FootprintContact: + owner_id: str + participant_variable_ids: tuple[str, ...] + witness_ids: tuple[str, ...] + network_id: str + connector_ids: tuple[ConnectorId, ...] + regions: tuple[CorridorRegion, ...] + + +@dataclass(frozen=True, slots=True) +class _MemberFootprintModel: + variables: tuple[CorridorScalarVariable, ...] + witnesses: tuple[CorridorFootprintWitness, ...] + claim_ids_by_variable: Mapping[str, tuple[str, ...]] + orders: tuple[_FootprintOrder, ...] + contacts: tuple[_FootprintContact, ...] + forbidden_intervals: tuple[CorridorForbiddenInterval, ...] + + +@dataclass(frozen=True, slots=True) +class _AtomicComponentSpec: + physical_ranks: tuple[int, ...] + scalar_variable_ids: tuple[str, ...] + + +class _UnionFind: + def __init__(self, size: int) -> None: + self.parents = list(range(size)) + + def find(self, item: int) -> int: + if self.parents[item] != item: + self.parents[item] = self.find(self.parents[item]) + return self.parents[item] + + def union(self, left: int, right: int) -> None: + left, right = self.find(left), self.find(right) + if left != right: + self.parents[max(left, right)] = min(left, right) + + +def _destination_claim_axis_sign( + side: PortSide, + direction: Direction, +) -> int: + return right_normal_axis_sign(direction) // right_normal_axis_sign( + _PORT_LEAD_DIRECTION[side] + ) + + +def _network_id( + connector_ids: tuple[ConnectorId, ...], scaffold: RouteSemanticScaffold +) -> str | None: + ids = { + str(scaffold.query.connector(connector_id).network_id) + for connector_id in connector_ids + } + return next(iter(ids)) if len(ids) == 1 else None + + +def _endpoint_members( + graph: MetroGraph, + scaffold: RouteSemanticScaffold, + prior_plan: RoutePlan, +) -> tuple[dict[str, str], dict[str, frozenset[str]], frozenset[str]]: + by_target: defaultdict[str, list[EmissionMember]] = defaultdict(list) + for member in prior_plan.members: + by_target[member.target.station_id].append(member) + memberships: defaultdict[str, list[str]] = defaultdict(list) + expected: dict[str, frozenset[str]] = {} + for group in scaffold.resolution.endpoint_groups: + port = graph.ports.get(group.port_id) + members = by_target.get(group.port_id, ()) + connectors = tuple( + str(connector_id) + for member in members + for connector_id in member.connector_ids + ) + if ( + port is None + or not port.is_entry + or len(group.connector_ids) < 2 + or Counter(connectors) != Counter(str(item) for item in group.connector_ids) + ): + continue + cohort_id = f"endpoint-cohort|{group.id}" + expected[cohort_id] = frozenset(str(member.id) for member in members) + for member in members: + memberships[str(member.id)].append(cohort_id) + ambiguous = frozenset( + cohort_id + for cohort_ids in memberships.values() + if len(cohort_ids) != 1 + for cohort_id in cohort_ids + ) + return ( + { + member_id: cohort_ids[0] + for member_id, cohort_ids in memberships.items() + if len(cohort_ids) == 1 + }, + expected, + ambiguous, + ) + + +def _lane_rank(reservation: RouteReservation, claim_rank: int) -> int | None: + matches = tuple( + rank + for rank, lane in enumerate(reservation.lanes) + if claim_rank in lane.claim_indices + ) + return matches[0] if len(matches) == 1 else None + + +def _resolved_claimants( + reservation: RouteReservation, prior_plan: RoutePlan +) -> tuple[frozenset[str], dict[str, str]] | None: + content_id = _reservation_content_id( + reservation.system_id, + reservation.kind, + reservation.direction, + reservation.region, + reservation.measurement_scope, + reservation.span, + reservation.claimant_member_ids, + reservation.claims, + ) + if content_id != reservation.id or len(set(reservation.claimant_member_ids)) != len( + reservation.claimant_member_ids + ): + return None + bindings: defaultdict[str, list[EmissionBinding]] = defaultdict(list) + for binding in prior_plan.bindings: + bindings[str(binding.member_id)].append(binding) + resolved: set[str] = set() + resolved_by_claimant: dict[str, str] = {} + for member_id in reservation.claimant_member_ids: + candidates = bindings[str(member_id)] + if len(candidates) != 1: + return None + binding = candidates[0] + resolved_member_id = str(binding.covering_member_id or binding.member_id) + resolved.add(resolved_member_id) + resolved_by_claimant[str(member_id)] = resolved_member_id + return frozenset(resolved), resolved_by_claimant + + +def build_corridor_cohort_ledger( + graph: MetroGraph, + scaffold: RouteSemanticScaffold, + prior_plan: RoutePlan, + *, + station_offsets: Mapping[tuple[str, str], float], + curve_radius: float = CURVE_RADIUS, +) -> CorridorCohortLedger: + """Freeze coordinate-free cohort intent from one prior semantic ledger.""" + del station_offsets + endpoint_by_member, expected, ambiguous = _endpoint_members( + graph, scaffold, prior_plan + ) + members = {str(member.id): member for member in prior_plan.members} + edges = { + str(member.id): ( + member.source.station_id, + member.target.station_id, + member.line_id, + ) + for member in prior_plan.members + } + member_geometry_plan_ids: defaultdict[ + tuple[str, tuple[str, str, str]], list[str] + ] = defaultdict(list) + for plan in prior_plan.member_geometry_plans: + member_geometry_plan_ids[ + ( + str(plan.member_id), + (plan.edge.source, plan.edge.target, plan.edge.line_id), + ) + ].append(str(plan.id)) + geometry_plan_id_by_member = { + member_id: plan_ids[0] + for (member_id, edge_key), plan_ids in member_geometry_plan_ids.items() + if len(plan_ids) == 1 and edges.get(member_id) == edge_key + } + resolved_by_reservation = { + reservation.id: _resolved_claimants(reservation, prior_plan) + for reservation in prior_plan.reservations + } + bindings_by_member: defaultdict[str, list[EmissionBinding]] = defaultdict(list) + for binding in prior_plan.bindings: + bindings_by_member[str(binding.member_id)].append(binding) + + def emitted_path_rank(member_id: str) -> int | None: + seen: set[str] = set() + while member_id not in seen: + seen.add(member_id) + candidates = bindings_by_member.get(member_id, ()) + if len(candidates) != 1: + return None + binding = candidates[0] + if binding.kind is BindingKind.EMITTED: + return binding.path_rank + if binding.covering_member_id is None: + return None + member_id = str(binding.covering_member_id) + return None + + path_rank_by_member = { + member_id: path_rank + for member_id in endpoint_by_member + if (path_rank := emitted_path_rank(member_id)) is not None + } + + endpoint_ranks: dict[str, int] = {} + ambiguous_path_rank_cohorts: set[str] = set() + by_cohort: defaultdict[str, list[str]] = defaultdict(list) + for member_id, cohort_id in endpoint_by_member.items(): + by_cohort[cohort_id].append(member_id) + for cohort_id, member_ids in by_cohort.items(): + by_network: defaultdict[str, list[str]] = defaultdict(list) + for member_id in member_ids: + member = members[member_id] + network_id = _network_id(member.connector_ids, scaffold) + by_network[network_id or f"member|{member_id}"].append(member_id) + if any( + any(member_id not in path_rank_by_member for member_id in network) + for network in by_network.values() + ): + ambiguous_path_rank_cohorts.add(cohort_id) + continue + first_path_rank_by_network = { + network_id: min( + path_rank_by_member[member_id] + for member_id in network_members + if member_id in path_rank_by_member + ) + for network_id, network_members in by_network.items() + } + if len(set(first_path_rank_by_network.values())) != len( + first_path_rank_by_network + ): + ambiguous_path_rank_cohorts.add(cohort_id) + continue + ordered_networks = sorted( + by_network, + key=lambda network_id: ( + first_path_rank_by_network[network_id], + network_id, + ), + ) + for rank, network_id in enumerate(ordered_networks): + for member_id in by_network[network_id]: + endpoint_ranks[member_id] = rank + eligible_members = frozenset( + member_id + for resolved in resolved_by_reservation.values() + if resolved is not None + for member_id in resolved[0] + ) + claim_semantics: list[tuple[str, str, object, int, int, str | None, bool]] = [] + for reservation in prior_plan.reservations: + resolved = resolved_by_reservation[reservation.id] + resolved_by_claimant = {} if resolved is None else resolved[1] + for claim_rank, claim in enumerate(reservation.claims): + member_id = resolved_by_claimant.get( + str(claim.member_id), str(claim.member_id) + ) + semantic_member = members.get(member_id) + target_station_id = ( + None if semantic_member is None else semantic_member.target.station_id + ) + claim_semantics.append( + ( + f"{reservation.id}|claim:{claim_rank}", + member_id, + claim.path_id, + claim.segment_rank, + claim.segment_end_rank, + target_station_id, + target_station_id is not None + and claim_is_destination_boundary_carrier( + graph, target_station_id, reservation.region + ), + ) + ) + carrier_claim_ids = { + claim_id + for ( + claim_id, + _member_id, + _path_id, + _start, + _end, + _target, + carrier, + ) in claim_semantics + if carrier + } + destination_claim_ids = set(carrier_claim_ids) + destination_claim_ids.update( + candidate_id + for ( + boundary_id, + boundary_member_id, + boundary_path_id, + boundary_start, + _boundary_end, + _boundary_target, + boundary_carrier, + ) in claim_semantics + if boundary_carrier + for ( + candidate_id, + candidate_member_id, + candidate_path_id, + _candidate_start, + candidate_end, + _candidate_target, + _candidate_carrier, + ) in claim_semantics + if candidate_id != boundary_id + and candidate_member_id == boundary_member_id + and candidate_path_id == boundary_path_id + and candidate_end + 1 == boundary_start + ) + claims: list[CorridorCohortLedgerClaim] = [] + for reservation_rank, reservation in enumerate(prior_plan.reservations): + resolved = resolved_by_reservation[reservation.id] + resolved_member_ids = frozenset() if resolved is None else resolved[0] + resolved_by_claimant = {} if resolved is None else resolved[1] + reservation_member_ids = { + resolved_by_claimant.get(str(claim.member_id), str(claim.member_id)) + for claim in reservation.claims + } + reservation_identity_complete = all( + member_id in members + and member_id in edges + and members[member_id].family_id is not None + and bool(members[member_id].connector_ids) + for member_id in reservation_member_ids + ) + reservation_complete = ( + resolved is not None + and resolved_member_ids == reservation_member_ids + and reservation_identity_complete + ) + for claim_rank, claim in enumerate(reservation.claims): + claim_id = f"{reservation.id}|claim:{claim_rank}" + observed_member_id = str(claim.member_id) + member_id = resolved_by_claimant.get( + observed_member_id, + observed_member_id, + ) + current_member = members.get(member_id) + destination_claim = claim_id in destination_claim_ids + claims.append( + CorridorCohortLedgerClaim( + claim_id=claim_id, + reservation_id=str(reservation.id), + reservation_rank=reservation_rank, + claim_rank=claim_rank, + region=reservation.region, + orientation=reservation.orientation, + direction=reservation.direction, + lane_rank=_lane_rank(reservation, claim_rank), + member_id=member_id, + member_geometry_plan_id=geometry_plan_id_by_member.get(member_id), + edge_key=edges.get(member_id), + family_id=None + if current_member is None + else current_member.family_id, + connector_ids=( + () if current_member is None else current_member.connector_ids + ), + segment_rank=claim.segment_rank, + path_rank=claim.path_rank, + endpoint_cohort_id=( + endpoint_by_member.get(member_id) if destination_claim else None + ), + endpoint_network_rank=( + endpoint_ranks.get(member_id) if destination_claim else None + ), + destination_boundary_carrier=claim_id in carrier_claim_ids, + destination_boundary_axis_sign=( + _destination_claim_axis_sign( + graph.ports[current_member.target.station_id].side, + reservation.direction, + ) + if destination_claim and current_member is not None + else None + ), + network_id=( + None + if current_member is None + else _network_id(current_member.connector_ids, scaffold) + ), + reservation_complete=( + reservation_complete + and claim.segment_rank == claim.segment_end_rank + ), + ) + ) + return CorridorCohortLedger( + claims=tuple(claims), + endpoint_members=tuple(sorted(expected.items())), + eligible_member_ids=eligible_members, + ambiguous_endpoint_cohort_ids=ambiguous + | frozenset(ambiguous_path_rank_cohorts), + offset_step=graph_offset_step(graph), + curve_radius=curve_radius, + finalized_owned_segments=None, + ) + + +def _landing_frame( + identity: tuple[str, tuple[str, str, str]], + target: CorridorCohortTarget | None, + coordinate: float | None = None, +) -> tuple[int, int, float]: + if ( + target is None + or not target.mutable + or target.endpoint_lane_axis not in (0, 1) + or (coordinate is None and target.endpoint_lane_coordinate is None) + or len(target.route.points) < 2 + ): + raise CorridorCohortCompilationError( + f"corridor endpoint landing {identity} has no current port frame" + ) + segment_rank = len(target.route.points) - 2 + start, end = target.route.points[segment_rank:] + axis = target.endpoint_lane_axis + if ( + abs(start[axis] - end[axis]) > COORD_TOLERANCE + or abs(start[1 - axis] - end[1 - axis]) <= COORD_TOLERANCE + ): + raise CorridorCohortCompilationError( + f"corridor endpoint landing {identity} changed lead shape" + ) + landing_coordinate = ( + target.endpoint_lane_coordinate if coordinate is None else coordinate + ) + if landing_coordinate is None or not isfinite(landing_coordinate): + raise CorridorCohortCompilationError( + f"corridor endpoint landing {identity} has no finite port slot" + ) + return segment_rank, axis, landing_coordinate + + +def _endpoint_order_signs( + ledger: CorridorCohortLedger, + targets: Sequence[CorridorCohortTarget], +) -> dict[str, int]: + """Orient endpoint ranks from complete fixed predecessor reservations.""" + targets_by_key: defaultdict[ + tuple[str, tuple[str, str, str]], list[CorridorCohortTarget] + ] = defaultdict(list) + for target in targets: + targets_by_key[(target.member_id, target.edge_key)].append(target) + claims_by_key: defaultdict[ + tuple[str, tuple[str, str, str]], list[CorridorCohortLedgerClaim] + ] = defaultdict(list) + for claim in ledger.claims: + if claim.edge_key is not None: + claims_by_key[(claim.member_id, claim.edge_key)].append(claim) + + witness_lanes: defaultdict[tuple[str, str], defaultdict[int, set[int]]] = ( + defaultdict(lambda: defaultdict(set)) + ) + for claim in ledger.claims: + if ( + claim.endpoint_cohort_id is None + or claim.endpoint_network_rank is None + or claim.edge_key is None + or claim.member_id not in ledger.eligible_member_ids + or claim.endpoint_cohort_id in ledger.ambiguous_endpoint_cohort_ids + ): + continue + identity = claim.member_id, claim.edge_key + target_matches = targets_by_key.get(identity, ()) + if len(target_matches) != 1: + continue + predecessors = tuple( + predecessor + for predecessor in claims_by_key[identity] + if predecessor.segment_rank + 1 == claim.segment_rank + and predecessor.endpoint_cohort_id is None + and predecessor.lane_rank is not None + and predecessor.reservation_complete + and planner_owns_segment( + target_matches[0].route, + predecessor.segment_rank, + ) + ) + for predecessor in predecessors: + endpoint_network_rank = claim.endpoint_network_rank + lane_rank = predecessor.lane_rank + if endpoint_network_rank is None or lane_rank is None: + raise CorridorCohortCompilationError( + f"corridor endpoint cohort {claim.endpoint_cohort_id} has an " + "incomplete fixed predecessor witness" + ) + witness_lanes[(claim.endpoint_cohort_id, predecessor.reservation_id)][ + endpoint_network_rank + ].add(lane_rank) + + signs_by_cohort: defaultdict[str, set[int]] = defaultdict(set) + for (cohort_id, _reservation_id), lanes_by_rank in witness_lanes.items(): + if len(lanes_by_rank) < 2: + continue + if any(len(lanes) != 1 for lanes in lanes_by_rank.values()): + raise CorridorCohortCompilationError( + f"corridor endpoint cohort {cohort_id} has an ambiguous fixed " + "predecessor order witness" + ) + ordered_lanes = [ + next(iter(lanes_by_rank[rank])) for rank in sorted(lanes_by_rank) + ] + increasing = all( + left < right for left, right in zip(ordered_lanes, ordered_lanes[1:]) + ) + decreasing = all( + left > right for left, right in zip(ordered_lanes, ordered_lanes[1:]) + ) + if not (increasing or decreasing): + raise CorridorCohortCompilationError( + f"corridor endpoint cohort {cohort_id} has a non-monotone fixed " + "predecessor order witness" + ) + signs_by_cohort[cohort_id].add(1 if increasing else -1) + + if conflicting := { + cohort_id for cohort_id, signs in signs_by_cohort.items() if len(signs) != 1 + }: + raise CorridorCohortCompilationError( + "corridor endpoint cohorts have conflicting fixed predecessor order " + f"witnesses: {','.join(sorted(conflicting))}" + ) + return { + cohort_id: next(iter(signs)) for cohort_id, signs in signs_by_cohort.items() + } + + +def _cohort_landing_coordinates( + ledger: CorridorCohortLedger, + targets: Sequence[CorridorCohortTarget], + endpoint_order_signs: Mapping[str, int], +) -> dict[tuple[str, tuple[str, str, str]], float]: + """Bind frozen endpoint-network ranks to current absolute port slots.""" + expected_by_cohort = dict(ledger.endpoint_members) + ranks_by_member: defaultdict[str, set[tuple[str, int]]] = defaultdict(set) + for claim in ledger.claims: + if ( + claim.endpoint_cohort_id is not None + and claim.endpoint_network_rank is not None + ): + ranks_by_member[claim.member_id].add( + (claim.endpoint_cohort_id, claim.endpoint_network_rank) + ) + targets_by_member: defaultdict[str, list[CorridorCohortTarget]] = defaultdict(list) + for target in targets: + targets_by_member[target.member_id].append(target) + + coordinates: dict[tuple[str, tuple[str, str, str]], float] = {} + for cohort_id, expected_members in expected_by_cohort.items(): + if cohort_id in ledger.ambiguous_endpoint_cohort_ids: + continue + eligible_members = expected_members.intersection( + ledger.eligible_member_ids, + ( + member_id + for member_id, member_ranks in ranks_by_member.items() + if any( + candidate_cohort == cohort_id + for candidate_cohort, _rank in member_ranks + ) + ), + ) + if not eligible_members: + continue + member_targets: dict[str, CorridorCohortTarget] = {} + rank_by_member: dict[str, int] = {} + complete = True + for member_id in eligible_members: + member_ranks = { + rank + for candidate_cohort, rank in ranks_by_member.get(member_id, ()) + if candidate_cohort == cohort_id + } + candidates = targets_by_member.get(member_id, ()) + if len(member_ranks) != 1 or len(candidates) != 1: + complete = False + break + target = candidates[0] + if ( + target.endpoint_lane_axis not in (0, 1) + or target.endpoint_lane_coordinate is None + or not isfinite(target.endpoint_lane_coordinate) + ): + complete = False + break + rank_by_member[member_id] = next(iter(member_ranks)) + member_targets[member_id] = target + if not complete: + raise CorridorCohortCompilationError( + f"corridor endpoint cohort {cohort_id} has an incomplete eligible frame" + ) + + ranks = sorted(set(rank_by_member.values())) + axes = {target.endpoint_lane_axis for target in member_targets.values()} + if len(axes) != 1: + raise CorridorCohortCompilationError( + f"corridor endpoint cohort {cohort_id} has mixed port axes" + ) + slots_by_rank: defaultdict[int, list[float]] = defaultdict(list) + for member_id, target in member_targets.items(): + assert target.endpoint_lane_coordinate is not None + slots_by_rank[rank_by_member[member_id]].append( + target.endpoint_lane_coordinate + ) + representative_slots: list[float] = [] + for rank in ranks: + network_slots = slots_by_rank[rank] + if any( + not isclose(item, network_slots[0], abs_tol=COORD_TOLERANCE) + for item in network_slots[1:] + ): + raise CorridorCohortCompilationError( + f"corridor endpoint cohort {cohort_id} has split network slots" + ) + representative_slots.append(network_slots[0]) + ordered_slots = sorted( + representative_slots, + reverse=endpoint_order_signs.get(cohort_id, 1) < 0, + ) + if any( + isclose(left, right, abs_tol=COORD_TOLERANCE) + for left, right in zip(ordered_slots, ordered_slots[1:]) + ): + raise CorridorCohortCompilationError( + f"corridor endpoint cohort {cohort_id} has tied port slots" + ) + if len(ordered_slots) != len(ranks): + raise CorridorCohortCompilationError( + f"corridor endpoint cohort {cohort_id} has incomplete port slots" + ) + slot_by_rank = dict(zip(ranks, ordered_slots)) + for member_id, target in member_targets.items(): + coordinates[(member_id, target.edge_key)] = slot_by_rank[ + rank_by_member[member_id] + ] + return coordinates + + +def _bind_claim( + claim: CorridorCohortLedgerClaim, + target: CorridorCohortTarget, + landing_coordinate: float | None, +) -> _BoundClaim: + edge_key = ( + target.route.edge.source, + target.route.edge.target, + target.route.line_id, + ) + if ( + claim.edge_key is None + or claim.family_id is None + or target.member_id != claim.member_id + or ( + claim.member_geometry_plan_id is not None + and target.member_geometry_plan_id != claim.member_geometry_plan_id + ) + or target.edge_key != claim.edge_key + or edge_key != claim.edge_key + or target.family_id is not claim.family_id + or target.connector_ids != claim.connector_ids + or not claim.connector_ids + or claim.segment_rank + 1 >= len(target.route.points) + ): + raise CorridorCohortCompilationError( + f"corridor claim {claim.claim_id} does not match its current route " + f"(expected plan {claim.member_geometry_plan_id}, observed plan " + f"{target.member_geometry_plan_id})" + ) + start, end = target.route.points[claim.segment_rank : claim.segment_rank + 2] + axis = int(claim.orientation is CorridorOrientation.HORIZONTAL) + longitudinal_axis = 1 - axis + direction = segment_direction(start, end) + if ( + abs(start[axis] - end[axis]) > COORD_TOLERANCE + or direction is not claim.direction + ): + raise CorridorCohortCompilationError( + f"corridor claim {claim.claim_id} changed segment orientation" + ) + longitudinal_coordinates = start[longitudinal_axis], end[longitudinal_axis] + if ( + claim.endpoint_cohort_id is not None + and target.mutable + and claim.segment_rank == len(target.route.points) - 3 + ): + _landing_rank, landing_axis, landing_coordinate = _landing_frame( + (target.member_id, target.edge_key), target, landing_coordinate + ) + if landing_axis != longitudinal_axis: + raise CorridorCohortCompilationError( + f"corridor claim {claim.claim_id} has no perpendicular endpoint lead" + ) + prospective_end = list(end) + prospective_end[landing_axis] = landing_coordinate + if segment_direction(start, (prospective_end[0], prospective_end[1])) is not ( + claim.direction + ): + raise CorridorCohortCompilationError( + f"corridor claim {claim.claim_id} reverses at its endpoint landing" + ) + longitudinal_coordinates = ( + start[longitudinal_axis], + landing_coordinate, + ) + longitudinal_start, longitudinal_end = sorted(longitudinal_coordinates) + if longitudinal_end - longitudinal_start <= COORD_TOLERANCE: + raise CorridorCohortCompilationError( + f"corridor claim {claim.claim_id} has no current longitudinal span" + ) + return _BoundClaim( + claim, + target, + longitudinal_start, + longitudinal_end, + start[axis], + landing_coordinate, + ) + + +def _bind_ledger( + ledger: CorridorCohortLedger, + targets: Sequence[CorridorCohortTarget], + endpoint_order_signs: Mapping[str, int], +) -> tuple[_BoundClaim, ...]: + landing_coordinates = _cohort_landing_coordinates( + ledger, targets, endpoint_order_signs + ) + by_key: defaultdict[ + tuple[str, tuple[str, str, str]], list[CorridorCohortTarget] + ] = defaultdict(list) + for target in targets: + by_key[(target.member_id, target.edge_key)].append(target) + if any(len(items) != 1 for items in by_key.values()): + raise CorridorCohortCompilationError( + "current corridor population has ambiguous route bindings" + ) + bound: list[_BoundClaim] = [] + for claim in ledger.claims: + if claim.edge_key is None or claim.family_id is None: + continue + matches = by_key.get((claim.member_id, claim.edge_key), ()) + if len(matches) != 1: + if claim.reservation_complete: + raise CorridorCohortCompilationError( + f"corridor claim {claim.claim_id} has no current route binding" + ) + continue + try: + bound.append( + _bind_claim( + claim, + matches[0], + landing_coordinates.get((claim.member_id, claim.edge_key)), + ) + ) + except CorridorCohortCompilationError: + if claim.reservation_complete: + raise + return tuple(bound) + + +def _overlap(left: _BoundClaim, right: _BoundClaim) -> bool: + return max(left.longitudinal_start, right.longitudinal_start) < min( + left.longitudinal_end, right.longitudinal_end + ) + + +def _physical_components( + claims: tuple[_BoundClaim, ...], + footprint_model: _MemberFootprintModel, +) -> tuple[tuple[int, ...], ...]: + union = _UnionFind(len(claims)) + buckets: defaultdict[tuple[CorridorRegion, CorridorOrientation], list[int]] = ( + defaultdict(list) + ) + for rank, claim in enumerate(claims): + buckets[(claim.ledger.region, claim.ledger.orientation)].append(rank) + for ranks in buckets.values(): + for offset, left in enumerate(ranks): + for right in ranks[offset + 1 :]: + if _overlap(claims[left], claims[right]): + union.union(left, right) + rank_by_claim_id = {claim.claim_id: rank for rank, claim in enumerate(claims)} + relations: tuple[_FootprintOrder | _FootprintContact, ...] = ( + *footprint_model.orders, + *footprint_model.contacts, + ) + for relation in relations: + relation_claim_ids = tuple( + claim_id + for variable_id in relation.participant_variable_ids + for claim_id in footprint_model.claim_ids_by_variable[variable_id] + if claim_id in rank_by_claim_id + ) + for claim_id in relation_claim_ids[1:]: + union.union( + rank_by_claim_id[relation_claim_ids[0]], rank_by_claim_id[claim_id] + ) + grouped: defaultdict[int, list[int]] = defaultdict(list) + for rank in range(len(claims)): + grouped[union.find(rank)].append(rank) + return tuple(tuple(ranks) for _, ranks in sorted(grouped.items())) + + +def _atomic_components( + claims: tuple[_BoundClaim, ...], + physical: tuple[tuple[int, ...], ...], + footprint_model: _MemberFootprintModel, +) -> tuple[_AtomicComponentSpec, ...]: + relations: tuple[_FootprintOrder | _FootprintContact, ...] = ( + *footprint_model.orders, + *footprint_model.contacts, + ) + related_claim_ids = { + claim_id + for relation in relations + for variable_id in relation.participant_variable_ids + for claim_id in footprint_model.claim_ids_by_variable[variable_id] + } + touched_physical = [ + rank + for rank, members in enumerate(physical) + if any( + claims[item].ledger.endpoint_cohort_id + or claims[item].claim_id in related_claim_ids + for item in members + ) + ] + scalar_variables = tuple( + variable + for variable in footprint_model.variables + if not footprint_model.claim_ids_by_variable[variable.variable_id] + ) + scalar_node = { + variable.variable_id: len(physical) + rank + for rank, variable in enumerate(scalar_variables) + } + union = _UnionFind(len(physical) + len(scalar_variables)) + by_cohort: defaultdict[str, list[int]] = defaultdict(list) + for physical_rank in touched_physical: + for claim_rank in physical[physical_rank]: + cohort_id = claims[claim_rank].ledger.endpoint_cohort_id + if cohort_id is not None: + by_cohort[cohort_id].append(physical_rank) + for ranks in by_cohort.values(): + for rank in ranks[1:]: + union.union(ranks[0], rank) + physical_by_claim_id = { + claims[claim_rank].claim_id: physical_rank + for physical_rank, members in enumerate(physical) + for claim_rank in members + } + + def relation_nodes(variable_id: str) -> tuple[int, ...]: + claim_ids = footprint_model.claim_ids_by_variable[variable_id] + if claim_ids: + return tuple( + sorted({physical_by_claim_id[claim_id] for claim_id in claim_ids}) + ) + return (scalar_node[variable_id],) + + for relation in relations: + relation_ranks = tuple( + rank + for variable_id in relation.participant_variable_ids + for rank in relation_nodes(variable_id) + ) + if relation_ranks: + for rank in relation_ranks[1:]: + union.union(relation_ranks[0], rank) + scalar_by_axis: defaultdict[int, list[int]] = defaultdict(list) + for variable in scalar_variables: + scalar_by_axis[variable.axis].append(scalar_node[variable.variable_id]) + for ranks in scalar_by_axis.values(): + for rank in ranks[1:]: + union.union(ranks[0], rank) + grouped_physical: defaultdict[int, list[int]] = defaultdict(list) + grouped_scalar: defaultdict[int, list[str]] = defaultdict(list) + for rank in touched_physical: + grouped_physical[union.find(rank)].append(rank) + for variable in scalar_variables: + grouped_scalar[union.find(scalar_node[variable.variable_id])].append( + variable.variable_id + ) + roots = sorted(set(grouped_physical) | set(grouped_scalar)) + return tuple( + _AtomicComponentSpec( + tuple(grouped_physical[root]), tuple(sorted(grouped_scalar[root])) + ) + for root in roots + ) + + +def _same_lane(left: _BoundClaim, right: _BoundClaim) -> bool: + return ( + left.ledger.lane_rank is not None + and left.ledger.reservation_id == right.ledger.reservation_id + and left.ledger.lane_rank == right.ledger.lane_rank + and _overlap(left, right) + ) + + +def _same_semantic_fixed_lane(left: _BoundClaim, right: _BoundClaim) -> bool: + left_terminal = ( + left.longitudinal_end + if left.ledger.direction in (Direction.R, Direction.D) + else left.longitudinal_start + ) + right_terminal = ( + right.longitudinal_end + if right.ledger.direction in (Direction.R, Direction.D) + else right.longitudinal_start + ) + return ( + left.ledger.network_id is not None + and left.ledger.network_id == right.ledger.network_id + and left.ledger.direction is right.ledger.direction + and left.ledger.lane_rank is not None + and left.ledger.lane_rank == right.ledger.lane_rank + and _overlap(left, right) + and ( + left.ledger.reservation_id == right.ledger.reservation_id + or isclose(left_terminal, right_terminal, abs_tol=COORD_TOLERANCE) + ) + ) + + +def _relinquished_exit_turns(claim: _BoundClaim) -> frozenset[str]: + route = claim.target.route + if ( + claim.ledger.endpoint_cohort_id is None + or claim.ledger.destination_boundary_axis_sign is None + or not claim.ledger.reservation_complete + or not claim.target.mutable + or route.exit_turn_plan_id is None + or route.exit_turn_segment_rank is None + or claim.ledger.segment_rank == route.exit_turn_segment_rank + or abs(claim.ledger.segment_rank - route.exit_turn_segment_rank) != 1 + ): + return frozenset() + return frozenset((route.exit_turn_plan_id,)) + + +def _directly_movable( + claim: _BoundClaim, + finalized_owned_segments: frozenset[CorridorCohortSegmentKey] | None, +) -> bool: + key = ( + claim.ledger.member_id, + claim.target.edge_key, + claim.ledger.segment_rank, + ) + if finalized_owned_segments is not None: + return key in finalized_owned_segments + return ( + claim.target.mutable + and claim.ledger.reservation_complete + and not planner_owns_segment( + claim.target.route, + claim.ledger.segment_rank, + relinquished_exit_turn_plan_ids=_relinquished_exit_turns(claim), + ) + ) + + +def _validate_control_recipe( + request: CorridorScalarRequest, + targets: Sequence[CorridorCohortTarget], +) -> None: + recipe = request.control_recipe + if recipe is None: + return + if ( + recipe.owner_id != request.variable.owner_id + or not isfinite(recipe.source_coordinate) + or not isclose( + recipe.source_coordinate, + request.variable.coordinate, + abs_tol=COORD_TOLERANCE, + ) + ): + raise CorridorCohortCompilationError( + f"corridor scalar request {request.variable.variable_id} has an " + "invalid control source" + ) + targets_by_identity = { + (target.member_id, target.edge_key): target for target in targets + } + role_ids: set[str] = set() + point_keys: set[tuple[str, tuple[str, str, str], int, int]] = set() + for point in recipe.controlled_points: + target = targets_by_identity.get((point.member_id, point.edge_key)) + point_key = ( + point.member_id, + point.edge_key, + point.point_rank, + point.axis, + ) + if ( + target is None + or target.connector_ids != point.connector_ids + or point.axis not in (0, 1) + or not 0 <= point.point_rank < len(target.route.points) + or not isfinite(point.source_offset) + or not isclose( + target.route.points[point.point_rank][point.axis], + recipe.source_coordinate + point.source_offset, + abs_tol=COORD_TOLERANCE, + ) + or point.role_id in role_ids + or point_key in point_keys + ): + raise CorridorCohortCompilationError( + f"corridor scalar request {request.variable.variable_id} has an " + "invalid controlled point" + ) + role_ids.add(point.role_id) + point_keys.add(point_key) + for runway in recipe.directed_runways: + if ( + runway.controlled_role_id not in role_ids + or ( + runway.anchor_role_id is not None + and runway.anchor_role_id not in role_ids + ) + or runway.axis not in (0, 1) + or runway.direction_sign not in (-1, 1) + or not isfinite(runway.minimum_distance) + or runway.minimum_distance < 0 + ): + raise CorridorCohortCompilationError( + f"corridor scalar request {request.variable.variable_id} has an " + "invalid directed runway" + ) + + +def _member_footprint_model( + claims: tuple[_BoundClaim, ...], + targets: Sequence[CorridorCohortTarget], + scalar_requests: Sequence[CorridorScalarRequest], + finalized_owned_segments: frozenset[CorridorCohortSegmentKey] | None, + offset_step: float, + curve_radius: float, +) -> _MemberFootprintModel: + by_segment: defaultdict[CorridorFootprintSegmentKey, list[_BoundClaim]] = ( + defaultdict(list) + ) + regions_by_segment: defaultdict[ + CorridorFootprintSegmentKey, set[CorridorRegion] + ] = defaultdict(set) + for claim in claims: + key = claim.ledger.member_id, claim.target.edge_key, claim.ledger.segment_rank + regions_by_segment[key].add(claim.ledger.region) + if _directly_movable(claim, finalized_owned_segments): + by_segment[key].append(claim) + + variables: list[CorridorScalarVariable] = [] + claim_ids_by_variable: dict[str, tuple[str, ...]] = {} + for key in sorted(by_segment): + segment_claims = tuple(by_segment[key]) + reference = segment_claims[0] + if any( + item.axis != reference.axis + or not isclose( + item.coordinate, + reference.coordinate, + abs_tol=COORD_TOLERANCE, + ) + or item.target.member_geometry_plan_id + != reference.target.member_geometry_plan_id + for item in segment_claims[1:] + ): + raise CorridorCohortCompilationError( + f"corridor member carrier {key} has conflicting scalar claims" + ) + variable_id = f"member-carrier|{key[0]}|{key[1]}|segment:{key[2]}" + variables.append( + CorridorScalarVariable( + variable_id, + CorridorScalarOwnerKind.MEMBER_CARRIER, + reference.target.member_geometry_plan_id, + reference.ledger.member_id, + reference.target.edge_key, + reference.target.connector_ids, + reference.ledger.segment_rank, + reference.axis, + reference.coordinate, + ) + ) + claim_ids_by_variable[variable_id] = tuple( + sorted(item.claim_id for item in segment_claims) + ) + + request_variables = tuple(request.variable for request in scalar_requests) + variable_ids = [item.variable_id for item in (*variables, *request_variables)] + if len(variable_ids) != len(set(variable_ids)): + raise CorridorCohortCompilationError( + "corridor scalar population has ambiguous variable identities" + ) + for request in scalar_requests: + bounds = ( + request.domain.minimum_coordinate, + request.domain.maximum_coordinate, + ) + if ( + request.domain.member_id != request.variable.variable_id + or not isfinite(request.preferred_coordinate) + or any(bound is not None and not isfinite(bound) for bound in bounds) + ): + raise CorridorCohortCompilationError( + f"corridor scalar request {request.variable.variable_id} has an " + "invalid preference or domain" + ) + _validate_control_recipe(request, targets) + claim_ids_by_variable[request.variable.variable_id] = () + + variables.extend(request_variables) + controlled_points = { + (point.member_id, point.edge_key, point.point_rank, point.axis): ( + request.variable.variable_id, + point.source_offset, + ) + for request in scalar_requests + if request.control_recipe is not None + for point in request.control_recipe.controlled_points + } + witnesses = build_corridor_footprint_witnesses( + targets, + variables, + { + key: tuple(sorted(regions, key=repr)) + for key, regions in regions_by_segment.items() + }, + controlled_points, + ) + variables_by_id = {item.variable_id: item for item in variables} + claims_by_id = {item.claim_id: item for item in claims} + endpoint_cohorts_by_variable = { + variable_id: frozenset( + claims_by_id[claim_id].ledger.endpoint_cohort_id + for claim_id in claim_ids + if claims_by_id[claim_id].ledger.endpoint_cohort_id is not None + ) + for variable_id, claim_ids in claim_ids_by_variable.items() + } + carrier_by_variable = { + item.coordinate_variable_id: item + for item in witnesses + if item.coordinate_variable_id is not None + } + orders: dict[str, _FootprintOrder] = {} + contacts: dict[str, _FootprintContact] = {} + for lead in witnesses: + endpoint_variables = tuple( + item + for item in (lead.start_variable_id, lead.end_variable_id) + if item is not None + ) + if lead.coordinate_variable_id is not None or len(endpoint_variables) != 1: + continue + controller_id = endpoint_variables[0] + controller = variables_by_id[controller_id] + controller_carrier = carrier_by_variable.get(controller_id) + if controller_carrier is None: + raise CorridorCohortCompilationError( + f"corridor controlled footprint {lead.footprint_id} has no carrier" + ) + if controller.axis != 1 - lead.axis: + raise CorridorCohortCompilationError( + f"corridor controlled footprint {lead.footprint_id} has mixed axes" + ) + if isclose( + controller.coordinate, + lead.longitudinal_start, + abs_tol=COORD_TOLERANCE, + ): + fixed_endpoint = lead.longitudinal_end + elif isclose( + controller.coordinate, + lead.longitudinal_end, + abs_tol=COORD_TOLERANCE, + ): + fixed_endpoint = lead.longitudinal_start + else: + raise CorridorCohortCompilationError( + f"corridor controlled footprint {lead.footprint_id} lost its owner" + ) + variable_term = _FootprintTerm( + controller_id, None, controller_carrier.footprint_id + ) + fixed_term = _FootprintTerm(None, fixed_endpoint, lead.footprint_id) + if fixed_endpoint > controller.coordinate: + lower, upper = variable_term, fixed_term + else: + lower, upper = fixed_term, variable_term + endpoint_owner_id = f"member-footprint-endpoint-order|{lead.footprint_id}" + orders[endpoint_owner_id] = _FootprintOrder( + endpoint_owner_id, + lower, + upper, + COORD_TOLERANCE, + (controller_id,), + tuple(sorted((lead.footprint_id, controller_carrier.footprint_id))), + tuple(sorted({*lead.regions, *controller_carrier.regions}, key=repr)), + ) + if endpoint_cohorts_by_variable.get(controller_id): + continue + for candidate_id, carrier in carrier_by_variable.items(): + if candidate_id == controller_id: + continue + candidate = variables_by_id[candidate_id] + if ( + candidate.axis != controller.axis + or not endpoint_cohorts_by_variable.get(candidate_id) + or candidate.edge_key[2] == lead.line_id + or candidate.member_id == lead.member_id + or candidate.owner_kind is not CorridorScalarOwnerKind.MEMBER_CARRIER + or controller.owner_kind is not CorridorScalarOwnerKind.MEMBER_CARRIER + or carrier.direction is not controller_carrier.direction + ): + continue + if not ( + carrier.longitudinal_start + COORD_TOLERANCE + < lead.coordinate + < carrier.longitudinal_end - COORD_TOLERANCE + ): + continue + lead_lo, lead_hi = sorted((controller.coordinate, fixed_endpoint)) + if not ( + lead_lo - offset_step <= candidate.coordinate <= lead_hi + offset_step + ): + continue + if fixed_endpoint > controller.coordinate: + lower_id, upper_id = candidate_id, controller_id + else: + lower_id, upper_id = controller_id, candidate_id + owner_id = ( + f"member-footprint-order|{lead.footprint_id}|{carrier.footprint_id}" + ) + orders[owner_id] = _FootprintOrder( + owner_id, + _FootprintTerm( + lower_id, None, carrier_by_variable[lower_id].footprint_id + ), + _FootprintTerm( + upper_id, None, carrier_by_variable[upper_id].footprint_id + ), + offset_step, + tuple(sorted((lower_id, upper_id))), + tuple(sorted((lead.footprint_id, carrier.footprint_id))), + tuple(sorted({*lead.regions, *carrier.regions}, key=repr)), + ) + fixed = tuple( + witness + for witness in witnesses + if witness.coordinate_variable_id is None + and witness.start_variable_id is None + and witness.end_variable_id is None + ) + contact_pairs: set[tuple[str, str]] = set() + for variable_id, carrier in carrier_by_variable.items(): + variable = variables_by_id[variable_id] + for witness in fixed: + if ( + witness.edge_key != variable.edge_key + or witness.connector_ids != variable.connector_ids + or witness.segment_rank != variable.segment_rank + or witness.axis != variable.axis + or not isclose( + witness.coordinate, + variable.coordinate, + abs_tol=COORD_TOLERANCE, + ) + ): + continue + owner_id = ( + f"member-footprint-contact|{carrier.footprint_id}|" + f"{witness.footprint_id}" + ) + contacts[owner_id] = _FootprintContact( + owner_id, + (variable_id,), + tuple(sorted((carrier.footprint_id, witness.footprint_id))), + carrier.network_id or witness.network_id or "", + variable.connector_ids, + tuple(sorted({*carrier.regions, *witness.regions}, key=repr)), + ) + contact_pairs.add((variable_id, witness.footprint_id)) + intervals: dict[tuple[str, str], CorridorForbiddenInterval] = {} + for variable_id, variable_witness in carrier_by_variable.items(): + variable = variables_by_id[variable_id] + for perpendicular in fixed: + if ( + (variable_id, perpendicular.footprint_id) in contact_pairs + or perpendicular.axis == variable.axis + or perpendicular.crossing_disposition + is CorridorCrossingDisposition.LEGAL_CROSSING + or not ( + perpendicular.longitudinal_start + COORD_TOLERANCE + < variable.coordinate + < perpendicular.longitudinal_end - COORD_TOLERANCE + ) + or not ( + variable_witness.longitudinal_start + COORD_TOLERANCE + < perpendicular.coordinate + < variable_witness.longitudinal_end - COORD_TOLERANCE + ) + ): + continue + parallel = next( + ( + witness + for witness in fixed + if witness.member_id == perpendicular.member_id + and witness.edge_key == perpendicular.edge_key + and witness.axis == variable.axis + and abs(witness.segment_rank - perpendicular.segment_rank) == 1 + and _footprints_overlap(witness, variable_witness) + ), + None, + ) + if parallel is None: + continue + clearance = cotravelling_lane_clearance( + same_line=parallel.line_id == variable_witness.line_id, + counter_running=parallel.direction is not variable_witness.direction, + curve_radius=curve_radius, + ) + if clearance <= COORD_TOLERANCE or ( + abs(parallel.coordinate - variable.coordinate) + > clearance + COORD_TOLERANCE + ): + continue + interval = CorridorForbiddenInterval( + variable_id, + perpendicular.footprint_id, + perpendicular.longitudinal_start - clearance, + perpendicular.longitudinal_end + clearance, + perpendicular.semantic_rank, + ) + intervals[(interval.member_id, interval.obstacle_id)] = interval + + return _MemberFootprintModel( + tuple(variables), + witnesses, + claim_ids_by_variable, + tuple(orders[key] for key in sorted(orders)), + tuple(contacts[key] for key in sorted(contacts)), + tuple(intervals[key] for key in sorted(intervals)), + ) + + +def _roles( + claims: tuple[_BoundClaim, ...], + finalized_owned_segments: frozenset[CorridorCohortSegmentKey] | None, +) -> dict[str, CorridorCohortClaimRole]: + if finalized_owned_segments is not None: + for item in claims: + key = ( + item.ledger.member_id, + item.target.edge_key, + item.ledger.segment_rank, + ) + if key not in finalized_owned_segments: + continue + route = item.target.route + if ( + not item.target.mutable + or convergence_owns_segment_boundary(route, item.ledger.segment_rank) + or route.fan_route_emitter is not None + or item.ledger.segment_rank < len(route.exit_shared_opening_points) + or ( + route.exit_turn_axis_id is not None + and route.exit_turn_segment_rank == item.ledger.segment_rank + ) + ): + raise CorridorCohortCompilationError( + f"finalized corridor claim {item.claim_id} conflicts with " + "another geometry owner" + ) + return { + item.claim_id: ( + CorridorCohortClaimRole.MOVABLE + if ( + item.ledger.member_id, + item.target.edge_key, + item.ledger.segment_rank, + ) + in finalized_owned_segments + else CorridorCohortClaimRole.FIXED + ) + for item in claims + } + terminal_fixed = { + item.claim_id + for item in claims + if not item.target.mutable + or planner_owns_segment( + item.target.route, + item.ledger.segment_rank, + relinquished_exit_turn_plan_ids=_relinquished_exit_turns(item), + ) + } + roles = { + item.claim_id: ( + CorridorCohortClaimRole.MOVABLE + if item.ledger.reservation_complete and item.claim_id not in terminal_fixed + else CorridorCohortClaimRole.FIXED + ) + for item in claims + } + changed = True + while changed: + changed = False + for follower in claims: + if roles[follower.claim_id] != CorridorCohortClaimRole.FIXED: + continue + if follower.claim_id in terminal_fixed: + continue + if follower.ledger.network_id is None: + continue + if any( + roles[leader.claim_id] != CorridorCohortClaimRole.FIXED + and leader.ledger.network_id == follower.ledger.network_id + and _same_lane(leader, follower) + for leader in claims + ): + roles[follower.claim_id] = CorridorCohortClaimRole.EQUALITY + changed = True + return roles + + +def _direction_owner(owner_id: str, direction: Direction) -> str: + return f"{owner_id}|direction:{direction.value}" + + +def _lane( + claim: _BoundClaim, + cohort_first_path_rank: int, + local_boundary_rank: int | None, + direction: Direction, + offset_step: float, +) -> CorridorLane: + base_cohort_id = claim.ledger.endpoint_cohort_id or f"equality|{claim.claim_id}" + base_owner_id = ( + claim.ledger.endpoint_cohort_id + or f"reservation-lane|{claim.ledger.reservation_id}|{claim.ledger.lane_rank}" + ) + boundary_rank = ( + local_boundary_rank + if local_boundary_rank is not None + else claim.ledger.path_rank + ) + boundary_axis_sign = claim.ledger.destination_boundary_axis_sign + return CorridorLane( + claim.claim_id, + _direction_owner(base_cohort_id, direction), + _direction_owner(base_owner_id, direction), + boundary_rank * offset_step * boundary_axis_sign + if claim.ledger.endpoint_cohort_id is not None + and boundary_axis_sign is not None + else claim.coordinate, + claim.coordinate, + claim.longitudinal_start, + claim.longitudinal_end, + ( + boundary_rank, + cohort_first_path_rank, + claim.ledger.path_rank, + claim.ledger.reservation_rank, + claim.ledger.claim_rank, + ), + ) + + +def _obstacle(claim: _BoundClaim) -> CorridorObstacle: + return CorridorObstacle( + claim.claim_id, + claim.coordinate, + claim.coordinate, + claim.longitudinal_start, + claim.longitudinal_end, + ( + claim.ledger.path_rank, + claim.ledger.reservation_rank, + claim.ledger.claim_rank, + ), + ) + + +def _problem( + claims: tuple[_BoundClaim, ...], + roles: dict[str, CorridorCohortClaimRole], + complete: bool, + offset_step: float, + curve_radius: float, + endpoint_order_signs: Mapping[str, int], + footprint_model: _MemberFootprintModel, +) -> CorridorAllocationProblem: + movable = tuple( + item for item in claims if roles[item.claim_id] != CorridorCohortClaimRole.FIXED + ) + cohort_first_path_rank: dict[tuple[Direction, str], int] = {} + for item in movable: + cohort_id = item.ledger.endpoint_cohort_id or f"equality|{item.claim_id}" + cohort_key = item.ledger.direction, cohort_id + cohort_first_path_rank[cohort_key] = min( + item.ledger.path_rank, + cohort_first_path_rank.get(cohort_key, item.ledger.path_rank), + ) + local_boundary_ranks: dict[tuple[str, int], int] = {} + for cohort_id in { + item.ledger.endpoint_cohort_id + for item in movable + if item.ledger.endpoint_cohort_id is not None + }: + ranks = sorted( + { + item.ledger.endpoint_network_rank + for item in movable + if item.ledger.endpoint_cohort_id == cohort_id + and item.ledger.endpoint_network_rank is not None + }, + reverse=endpoint_order_signs.get(cohort_id, 1) < 0, + ) + local_boundary_ranks.update( + { + (cohort_id, boundary_rank): local_rank + for local_rank, boundary_rank in enumerate(ranks) + } + ) + equalities = tuple( + CorridorEquality( + _direction_owner( + f"reservation-lane|{left.ledger.reservation_id}|{left.ledger.lane_rank}", + left.ledger.direction, + ), + left.claim_id, + right.claim_id, + 0.0, + ) + for rank, left in enumerate(movable) + for right in movable[rank + 1 :] + if _same_lane(left, right) + and left.ledger.direction is right.ledger.direction + and left.ledger.network_id is not None + and left.ledger.network_id == right.ledger.network_id + ) + fixed_equalities = list( + CorridorFixedEquality( + _direction_owner( + f"network-lane|{movable_claim.ledger.network_id}|" + f"{movable_claim.ledger.lane_rank}", + movable_claim.ledger.direction, + ), + movable_claim.claim_id, + fixed_claim.claim_id, + ) + for movable_claim in movable + for fixed_claim in claims + if roles[fixed_claim.claim_id] == CorridorCohortClaimRole.FIXED + and _same_semantic_fixed_lane(movable_claim, fixed_claim) + ) + contact_obstacles: dict[str, CorridorObstacle] = {} + witnesses_by_id = { + witness.footprint_id: witness for witness in footprint_model.witnesses + } + for contact in footprint_model.contacts: + fixed_witnesses = tuple( + witnesses_by_id[witness_id] + for witness_id in contact.witness_ids + if witnesses_by_id[witness_id].coordinate_variable_id is None + and witnesses_by_id[witness_id].start_variable_id is None + and witnesses_by_id[witness_id].end_variable_id is None + ) + if len(fixed_witnesses) != 1: + continue + witness = fixed_witnesses[0] + contact_obstacles[contact.owner_id] = CorridorObstacle( + contact.owner_id, + witness.coordinate, + witness.coordinate, + witness.longitudinal_start, + witness.longitudinal_end, + witness.semantic_rank, + ) + fixed_equalities.extend( + CorridorFixedEquality(contact.owner_id, claim_id, contact.owner_id) + for variable_id in contact.participant_variable_ids + for claim_id in footprint_model.claim_ids_by_variable[variable_id] + if claim_id in {item.claim_id for item in movable} + ) + separations = tuple( + CorridorSeparation( + left.claim_id, + right.claim_id, + cotravelling_lane_clearance( + same_line=left.target.route.line_id == right.target.route.line_id, + counter_running=left.ledger.direction is not right.ledger.direction, + curve_radius=curve_radius, + ), + ) + for rank, left in enumerate(claims) + for right in claims[rank + 1 :] + if _overlap(left, right) + and ( + roles[left.claim_id] != CorridorCohortClaimRole.FIXED + or roles[right.claim_id] != CorridorCohortClaimRole.FIXED + ) + ) + movable_ids = {item.claim_id for item in movable} + directed_separations: list[CorridorDirectedSeparation] = [ + CorridorDirectedSeparation( + f"{order.owner_id}|{lower_id}|{upper_id}", + lower_id, + upper_id, + order.distance, + ) + for order in footprint_model.orders + if order.lower.variable_id is not None and order.upper.variable_id is not None + for lower_id in footprint_model.claim_ids_by_variable[order.lower.variable_id] + for upper_id in footprint_model.claim_ids_by_variable[order.upper.variable_id] + if lower_id in movable_ids and upper_id in movable_ids + ] + relation_domains: list[CorridorCoordinateDomain] = [] + for order in footprint_model.orders: + if order.lower.variable_id is None and order.upper.variable_id is not None: + assert order.lower.coordinate is not None + relation_domains.extend( + CorridorCoordinateDomain( + claim_id, + minimum_coordinate=order.lower.coordinate + order.distance, + obstacle_ids=(order.owner_id,), + ) + for claim_id in footprint_model.claim_ids_by_variable[ + order.upper.variable_id + ] + if claim_id in movable_ids + ) + elif order.lower.variable_id is not None and order.upper.variable_id is None: + assert order.upper.coordinate is not None + relation_domains.extend( + CorridorCoordinateDomain( + claim_id, + maximum_coordinate=order.upper.coordinate - order.distance, + obstacle_ids=(order.owner_id,), + ) + for claim_id in footprint_model.claim_ids_by_variable[ + order.lower.variable_id + ] + if claim_id in movable_ids + ) + elif order.lower.variable_id is None and order.upper.variable_id is None: + assert order.lower.coordinate is not None + assert order.upper.coordinate is not None + if order.lower.coordinate + order.distance > order.upper.coordinate: + raise CorridorCohortCompilationError( + f"fixed footprint order {order.owner_id} is infeasible" + ) + forbidden_intervals = tuple( + replace(interval, member_id=claim_id) + for interval in footprint_model.forbidden_intervals + for claim_id in footprint_model.claim_ids_by_variable[interval.member_id] + if claim_id in movable_ids + ) + return CorridorAllocationProblem( + tuple( + _lane( + item, + cohort_first_path_rank[ + ( + item.ledger.direction, + item.ledger.endpoint_cohort_id or f"equality|{item.claim_id}", + ) + ], + ( + local_boundary_ranks[ + ( + item.ledger.endpoint_cohort_id, + item.ledger.endpoint_network_rank, + ) + ] + if item.ledger.endpoint_cohort_id is not None + and item.ledger.endpoint_network_rank is not None + else None + ), + item.ledger.direction, + offset_step, + ) + for item in movable + ), + ( + *( + _obstacle(item) + for item in claims + if roles[item.claim_id] == CorridorCohortClaimRole.FIXED + ), + *contact_obstacles.values(), + ), + equalities, + separations, + tuple(relation_domains), + fixed_equalities=tuple(fixed_equalities), + directed_separations=tuple(directed_separations), + forbidden_intervals=forbidden_intervals, + witnesses_complete=complete, + axis_sign=( + 1 if movable[0].ledger.orientation is CorridorOrientation.HORIZONTAL else -1 + ), + coordinate_axis=movable[0].axis, + ) + + +def _component_complete( + claims: tuple[_BoundClaim, ...], + endpoint_ids: tuple[str, ...], + ledger: CorridorCohortLedger, +) -> bool: + expected = dict(ledger.endpoint_members) + eligible_by_endpoint: defaultdict[str, set[str]] = defaultdict(set) + for claim in ledger.claims: + if ( + claim.endpoint_cohort_id is not None + and claim.endpoint_network_rank is not None + and claim.member_id in ledger.eligible_member_ids + ): + eligible_by_endpoint[claim.endpoint_cohort_id].add(claim.member_id) + observed: defaultdict[str, set[str]] = defaultdict(set) + for item in claims: + if item.ledger.endpoint_cohort_id is not None: + observed[item.ledger.endpoint_cohort_id].add(item.ledger.member_id) + return ( + not ledger.ambiguous_endpoint_cohort_ids.intersection(endpoint_ids) + and all( + observed[item] == expected[item].intersection(eligible_by_endpoint[item]) + for item in endpoint_ids + ) + and all(item.ledger.reservation_complete for item in claims) + and len({(item.ledger.member_id, item.ledger.segment_rank) for item in claims}) + == len(claims) + ) + + +def _footprints_overlap( + left: CorridorFootprintWitness, + right: CorridorFootprintWitness, +) -> bool: + return max(left.longitudinal_start, right.longitudinal_start) < min( + left.longitudinal_end, right.longitudinal_end + ) + + +def _scalar_component_plan( + rank: int, + axis: int, + requests: tuple[CorridorScalarRequest, ...], + footprint_model: _MemberFootprintModel, + offset_step: float, + curve_radius: float, +) -> tuple[CorridorCohortComponentPlan, dict[str, str]]: + request_by_id = {request.variable.variable_id: request for request in requests} + witness_by_id: defaultdict[str, list[CorridorFootprintWitness]] = defaultdict(list) + for witness in footprint_model.witnesses: + if witness.coordinate_variable_id is not None: + witness_by_id[witness.coordinate_variable_id].append(witness) + variable_witnesses: dict[str, CorridorFootprintWitness] = {} + for variable_id in request_by_id: + matches = witness_by_id.get(variable_id, ()) + if len(matches) != 1: + raise CorridorCohortCompilationError( + f"corridor scalar request {variable_id} has no unique footprint" + ) + variable_witnesses[variable_id] = matches[0] + + axis_requests = tuple( + sorted( + (request for request in requests if request.variable.axis == axis), + key=lambda item: item.variable.variable_id, + ) + ) + intervals = { + (interval.member_id, interval.obstacle_id): interval + for interval in footprint_model.forbidden_intervals + if interval.member_id in request_by_id + } + + scalar_domains: list[CorridorCoordinateDomain] = [] + boundary_obstacle_sources: dict[str, str] = {} + intervals_by_member: defaultdict[str, list[CorridorForbiddenInterval]] = ( + defaultdict(list) + ) + for interval in intervals.values(): + intervals_by_member[interval.member_id].append(interval) + for request in axis_requests: + domain = request.domain + minimum_obstacles: list[str] = [] + maximum_obstacles: list[str] = [] + for interval in intervals_by_member[domain.member_id]: + minimum_deficit = ( + None + if domain.minimum_coordinate is None + or interval.minimum_coordinate >= domain.minimum_coordinate + else domain.minimum_coordinate - interval.minimum_coordinate + ) + maximum_deficit = ( + None + if domain.maximum_coordinate is None + or interval.maximum_coordinate <= domain.maximum_coordinate + else interval.maximum_coordinate - domain.maximum_coordinate + ) + if minimum_deficit is not None and ( + maximum_deficit is None or minimum_deficit < maximum_deficit + ): + obstacle_id = ( + f"scalar-boundary|{domain.member_id}|minimum|{interval.obstacle_id}" + ) + minimum_obstacles.append(obstacle_id) + boundary_obstacle_sources[obstacle_id] = interval.obstacle_id + elif maximum_deficit is not None and ( + minimum_deficit is None or maximum_deficit < minimum_deficit + ): + obstacle_id = ( + f"scalar-boundary|{domain.member_id}|maximum|{interval.obstacle_id}" + ) + maximum_obstacles.append(obstacle_id) + boundary_obstacle_sources[obstacle_id] = interval.obstacle_id + if domain.minimum_coordinate is not None: + scalar_domains.append( + CorridorCoordinateDomain( + domain.member_id, + minimum_coordinate=domain.minimum_coordinate, + obstacle_ids=tuple(sorted(minimum_obstacles)), + ) + ) + if domain.maximum_coordinate is not None: + scalar_domains.append( + CorridorCoordinateDomain( + domain.member_id, + maximum_coordinate=domain.maximum_coordinate, + obstacle_ids=tuple(sorted(maximum_obstacles)), + ) + ) + if domain.minimum_coordinate is None and domain.maximum_coordinate is None: + scalar_domains.append(domain) + + separations = tuple( + CorridorSeparation( + left.variable.variable_id, + right.variable.variable_id, + cotravelling_lane_clearance( + same_line=( + variable_witnesses[left.variable.variable_id].line_id + == variable_witnesses[right.variable.variable_id].line_id + ), + counter_running=( + variable_witnesses[left.variable.variable_id].direction + is not variable_witnesses[right.variable.variable_id].direction + ), + curve_radius=curve_radius, + ), + ) + for item_rank, left in enumerate(axis_requests) + for right in axis_requests[item_rank + 1 :] + if _footprints_overlap( + variable_witnesses[left.variable.variable_id], + variable_witnesses[right.variable.variable_id], + ) + ) + problem = CorridorAllocationProblem( + lanes=tuple( + CorridorLane( + request.variable.variable_id, + request.variable.variable_id, + request.variable.owner_id, + request.variable.coordinate, + request.preferred_coordinate, + variable_witnesses[request.variable.variable_id].longitudinal_start, + variable_witnesses[request.variable.variable_id].longitudinal_end, + (request_rank,), + ) + for request_rank, request in enumerate(axis_requests) + ), + separations=separations, + domains=tuple(scalar_domains), + forbidden_intervals=tuple(intervals[key] for key in sorted(intervals)), + clearance=offset_step, + witnesses_complete=True, + coordinate_axis=axis, + ) + result = solve_corridor_cohorts(problem) + status = result.status + return ( + CorridorCohortComponentPlan( + f"corridor-component|{rank}", + (), + tuple( + (request.variable.variable_id, CorridorCohortClaimRole.MOVABLE) + for request in axis_requests + ), + (problem,), + (result,), + status, + ), + boundary_obstacle_sources, + ) + + +def _planned_allocations_are_atomic_and_clear( + claims: tuple[_BoundClaim, ...], + physical_claims: tuple[tuple[_BoundClaim, ...], ...], + roles: dict[str, CorridorCohortClaimRole], + problems: tuple[CorridorAllocationProblem, ...], + results: tuple[CorridorAllocationResult, ...], +) -> bool: + allocated = tuple( + claim_id for result in results for claim_id, _coordinate in result.allocations + ) + expected = { + item.claim_id + for item in claims + if roles[item.claim_id] != CorridorCohortClaimRole.FIXED + } + if len(allocated) != len(set(allocated)) or set(allocated) != expected: + return False + coordinates = { + claim_id: coordinate + for result in results + for claim_id, coordinate in result.allocations + } + clearance_by_pair = { + frozenset((separation.left_member_id, separation.right_member_id)): ( + separation.distance + ) + for problem in problems + for separation in problem.separations + } + default_clearance = problems[0].clearance + for group in physical_claims: + movable = tuple( + item + for item in group + if roles[item.claim_id] != CorridorCohortClaimRole.FIXED + ) + for rank, left in enumerate(movable): + for right in movable[rank + 1 :]: + if left.ledger.direction is right.ledger.direction or not _overlap( + left, right + ): + continue + if abs( + coordinates[left.claim_id] - coordinates[right.claim_id] + ) + COORD_TOLERANCE < clearance_by_pair.get( + frozenset((left.claim_id, right.claim_id)), + default_clearance, + ): + return False + return True + + +def _allocation(claim: _BoundClaim, coordinate: float) -> CorridorCohortAllocation: + assert claim.ledger.member_geometry_plan_id is not None + return CorridorCohortAllocation( + claim.claim_id, + claim.ledger.member_id, + claim.ledger.member_geometry_plan_id, + claim.target.edge_key, + claim.target.family_id, + claim.target.connector_ids, + claim.ledger.segment_rank, + claim.axis, + claim.longitudinal_start, + claim.longitudinal_end, + coordinate, + ) + + +def _landing_from_claim(claim: _BoundClaim) -> CorridorCohortLanding: + identity = claim.ledger.member_id, claim.target.edge_key + segment_rank, axis, coordinate = _landing_frame( + identity, + claim.target, + claim.landing_coordinate, + ) + target = claim.target + return CorridorCohortLanding( + target.member_id, + target.member_geometry_plan_id, + target.edge_key, + target.connector_ids, + segment_rank, + axis, + coordinate, + ) + + +def _planned_landings( + claims: tuple[_BoundClaim, ...], + allocations: tuple[CorridorCohortAllocation, ...], +) -> tuple[CorridorCohortLanding, ...]: + allocated_identities = {(item.member_id, item.edge_key) for item in allocations} + landing_claims = { + (item.ledger.member_id, item.target.edge_key): item + for item in claims + if item.ledger.endpoint_cohort_id is not None + and item.landing_coordinate is not None + } + landings: list[CorridorCohortLanding] = [] + for identity in sorted(allocated_identities.intersection(landing_claims)): + claim = landing_claims[identity] + landings.append(_landing_from_claim(claim)) + return tuple(landings) + + +def _component_plan( + rank: int, + spec: _AtomicComponentSpec, + physical: tuple[tuple[int, ...], ...], + claims: tuple[_BoundClaim, ...], + ledger: CorridorCohortLedger, + endpoint_order_signs: Mapping[str, int], + footprint_model: _MemberFootprintModel, +) -> CorridorCohortComponentPlan: + physical_ranks = spec.physical_ranks + component_claims = tuple( + claims[item] for group in physical_ranks for item in physical[group] + ) + endpoint_ids = tuple( + sorted( + { + item.ledger.endpoint_cohort_id + for item in component_claims + if item.ledger.endpoint_cohort_id + } + ) + ) + roles = _roles(component_claims, ledger.finalized_owned_segments) + complete = _component_complete(component_claims, endpoint_ids, ledger) + physical_claims = tuple( + tuple(claims[item] for item in physical[group]) for group in physical_ranks + ) + problems = tuple( + _problem( + group, + roles, + complete, + ledger.offset_step, + ledger.curve_radius, + endpoint_order_signs, + footprint_model, + ) + for group in physical_claims + if any(roles[item.claim_id] != CorridorCohortClaimRole.FIXED for item in group) + ) + results = tuple(solve_corridor_cohorts(problem) for problem in problems) + status = ( + CorridorAllocationStatus.PLANNED + if results + and all(item.status is CorridorAllocationStatus.PLANNED for item in results) + else CorridorAllocationStatus.FAILURE + if any(item.status is CorridorAllocationStatus.FAILURE for item in results) + else CorridorAllocationStatus.COMPATIBILITY + ) + if status is CorridorAllocationStatus.PLANNED and not ( + _planned_allocations_are_atomic_and_clear( + component_claims, + physical_claims, + roles, + problems, + results, + ) + ): + status = CorridorAllocationStatus.FAILURE + allocations: tuple[CorridorCohortAllocation, ...] = () + protected: tuple[tuple[str, int], ...] = () + if status is CorridorAllocationStatus.PLANNED: + by_claim = {item.claim_id: item for item in component_claims} + allocations = tuple( + _allocation(by_claim[claim_id], coordinate) + for result in results + for claim_id, coordinate in result.allocations + ) + protected = tuple( + sorted({(item.member_id, item.segment_rank) for item in allocations}) + ) + return CorridorCohortComponentPlan( + f"corridor-component|{rank}", + endpoint_ids, + tuple((item.claim_id, roles[item.claim_id]) for item in component_claims), + problems, + results, + status, + allocations, + protected, + ) + + +@dataclass(slots=True) +class _RoutePatch: + route: RoutedPath + points: list[tuple[float, float]] + radii: list[float] | None + owned: tuple[int, ...] + + +def _corner_input(route: RoutedPath, radius_rank: int) -> tuple[float, float] | None: + candidates = ( + ( + route.concentric_corner_offsets_by_segment.get(radius_rank, (None, None))[ + 1 + ], + route.concentric_corner_bases_by_segment.get(radius_rank, (None, None))[1], + ), + ( + route.concentric_corner_offsets_by_segment.get( + radius_rank + 1, (None, None) + )[0], + route.concentric_corner_bases_by_segment.get(radius_rank + 1, (None, None))[ + 0 + ], + ), + ) + complete = tuple( + (offset, base) + for offset, base in candidates + if offset is not None and base is not None + ) + if any((offset is None) != (base is None) for offset, base in candidates) or ( + complete + and any( + not isclose(offset, complete[0][0], abs_tol=COORD_TOLERANCE) + or not isclose(base, complete[0][1], abs_tol=COORD_TOLERANCE) + for offset, base in complete[1:] + ) + ): + return None + return complete[0] if complete else None + + +def _has_corner_input(route: RoutedPath, radius_rank: int) -> bool: + candidates = ( + ( + route.concentric_corner_offsets_by_segment.get(radius_rank, (None, None))[ + 1 + ], + route.concentric_corner_bases_by_segment.get(radius_rank, (None, None))[1], + ), + ( + route.concentric_corner_offsets_by_segment.get( + radius_rank + 1, (None, None) + )[0], + route.concentric_corner_bases_by_segment.get(radius_rank + 1, (None, None))[ + 0 + ], + ), + ) + return any(offset is not None or base is not None for offset, base in candidates) + + +def _prepare_patches( + allocations: tuple[CorridorCohortAllocation, ...], + landings: tuple[CorridorCohortLanding, ...], + targets: Sequence[CorridorCohortTarget], +) -> tuple[_RoutePatch, ...] | None: + targets_by_key = {(target.member_id, target.edge_key): target for target in targets} + changes: defaultdict[ + tuple[str, tuple[str, str, str]], list[CorridorCohortAllocation] + ] = defaultdict(list) + for allocation in allocations: + changes[(allocation.member_id, allocation.edge_key)].append(allocation) + landings_by_key: defaultdict[ + tuple[str, tuple[str, str, str]], list[CorridorCohortLanding] + ] = defaultdict(list) + for landing in landings: + landings_by_key[(landing.member_id, landing.edge_key)].append(landing) + patches: list[_RoutePatch] = [] + for key in dict.fromkeys((*changes, *landings_by_key)): + member_changes = changes[key] + member_landings = landings_by_key[key] + target = targets_by_key.get(key) + if target is None or not target.mutable: + return None + route = target.route + for change in member_changes: + if ( + target.member_geometry_plan_id != change.member_geometry_plan_id + or target.family_id is not change.family_id + or target.connector_ids != change.connector_ids + or change.segment_rank + 1 >= len(route.points) + ): + return None + for change in member_changes: + start, end = route.points[change.segment_rank : change.segment_rank + 2] + if abs(start[change.axis] - end[change.axis]) > COORD_TOLERANCE: + return None + for landing in member_landings: + if ( + target.member_geometry_plan_id != landing.member_geometry_plan_id + or target.connector_ids != landing.connector_ids + or landing.segment_rank != len(route.points) - 2 + or landing.axis not in (0, 1) + or not isfinite(landing.coordinate) + ): + return None + start, end = route.points[landing.segment_rank :] + if ( + abs(start[landing.axis] - end[landing.axis]) > COORD_TOLERANCE + or abs(start[1 - landing.axis] - end[1 - landing.axis]) + <= COORD_TOLERANCE + ): + return None + points = list(route.points) + coordinates: dict[tuple[int, int], float] = {} + affected_corners: set[int] = set() + for change in member_changes: + segment_key = change.segment_rank, change.axis + if segment_key in coordinates and not isclose( + coordinates[segment_key], change.coordinate, abs_tol=COORD_TOLERANCE + ): + return None + coordinates[segment_key] = change.coordinate + for landing in member_landings: + segment_key = landing.segment_rank, landing.axis + if segment_key in coordinates and not isclose( + coordinates[segment_key], + landing.coordinate, + abs_tol=COORD_TOLERANCE, + ): + return None + coordinates[segment_key] = landing.coordinate + for (segment_rank, axis), coordinate in coordinates.items(): + start, end = points[segment_rank : segment_rank + 2] + if abs(start[axis] - end[axis]) > COORD_TOLERANCE: + return None + for point_rank in (segment_rank, segment_rank + 1): + point = list(points[point_rank]) + point[axis] = coordinate + points[point_rank] = point[0], point[1] + affected_corners.update((segment_rank - 1, segment_rank)) + opening = route.exit_shared_opening_points + if opening and tuple(points[: len(opening)]) != opening: + return None + radii = None if route.curve_radii is None else list(route.curve_radii) + if radii is not None: + for radius_rank in affected_corners: + if not 0 <= radius_rank < len(radii): + continue + if not _has_corner_input(route, radius_rank): + continue + if radius_rank + 2 >= len(points): + return None + corner_input = _corner_input(route, radius_rank) + if corner_input is None: + return None + radii[radius_rank] = concentric_corner_radius_at( + points[radius_rank], + points[radius_rank + 1], + points[radius_rank + 2], + *corner_input, + ) + owned = tuple( + sorted( + { + *route.route_system_owned_segment_ranks, + *(item.segment_rank for item in member_changes), + *(item.segment_rank for item in member_landings), + } + ) + ) + patches.append(_RoutePatch(route, points, radii, owned)) + return tuple(patches) + + +def _commit_patches(patches: tuple[_RoutePatch, ...]) -> None: + for patch in patches: + patch.route.points[:] = patch.points + patch.route.curve_radii = patch.radii + patch.route.route_system_owned_segment_ranks = patch.owned + + +def _finalize_allocation_geometry( + allocations: tuple[CorridorCohortAllocation, ...], + patches: tuple[_RoutePatch, ...], + targets: Sequence[CorridorCohortTarget], +) -> tuple[CorridorCohortAllocation, ...] | None: + targets_by_key = {(target.member_id, target.edge_key): target for target in targets} + points_by_route = {id(patch.route): patch.points for patch in patches} + finalized: list[CorridorCohortAllocation] = [] + for allocation in allocations: + target = targets_by_key.get((allocation.member_id, allocation.edge_key)) + if target is None: + return None + points = points_by_route.get(id(target.route)) + if points is None or allocation.segment_rank + 1 >= len(points): + return None + start, end = points[allocation.segment_rank : allocation.segment_rank + 2] + if not ( + isclose( + start[allocation.axis], + allocation.coordinate, + abs_tol=COORD_TOLERANCE, + ) + and isclose( + end[allocation.axis], + allocation.coordinate, + abs_tol=COORD_TOLERANCE, + ) + ): + return None + longitudinal_start, longitudinal_end = sorted( + (start[1 - allocation.axis], end[1 - allocation.axis]) + ) + finalized.append( + replace( + allocation, + longitudinal_start=longitudinal_start, + longitudinal_end=longitudinal_end, + ) + ) + return tuple(finalized) + + +def compile_corridor_cohort_plan( + ledger: CorridorCohortLedger, + targets: Sequence[CorridorCohortTarget], + *, + scalar_requests: Sequence[CorridorScalarRequest] = (), +) -> CorridorCohortPlan: + """Solve and atomically publish cohorts from one current route snapshot.""" + endpoint_order_signs = _endpoint_order_signs(ledger, targets) + claims = _bind_ledger(ledger, targets, endpoint_order_signs) + footprint_model = _member_footprint_model( + claims, + targets, + scalar_requests, + ledger.finalized_owned_segments, + ledger.offset_step, + ledger.curve_radius, + ) + obstacle_provenance: dict[str, CorridorCohortObstacleProvenance] = {} + obstacle_provenance.update( + { + witness.footprint_id: CorridorCohortObstacleProvenance( + witness.footprint_id, + witness.member_id, + witness.edge_key, + witness.segment_rank, + witness.connector_ids, + ) + for witness in footprint_model.witnesses + if witness.coordinate_variable_id is None + and witness.start_variable_id is None + and witness.end_variable_id is None + and witness.crossing_disposition is CorridorCrossingDisposition.FIXED_DOGLEG + } + ) + witnesses_by_id = { + witness.footprint_id: witness for witness in footprint_model.witnesses + } + for order in footprint_model.orders: + fixed_term = next( + (term for term in (order.lower, order.upper) if term.variable_id is None), + None, + ) + if fixed_term is None: + continue + witness = witnesses_by_id[fixed_term.witness_id] + obstacle_provenance[order.owner_id] = CorridorCohortObstacleProvenance( + order.owner_id, + witness.member_id, + witness.edge_key, + witness.segment_rank, + witness.connector_ids, + ) + physical = _physical_components(claims, footprint_model) + logical = _atomic_components(claims, physical, footprint_model) + components = [ + _component_plan( + rank, + spec, + physical, + claims, + ledger, + endpoint_order_signs, + footprint_model, + ) + for rank, spec in enumerate(logical) + if spec.physical_ranks + ] + for axis in (0, 1): + if any(request.variable.axis == axis for request in scalar_requests): + component, boundary_obstacle_sources = _scalar_component_plan( + len(components), + axis, + tuple(scalar_requests), + footprint_model, + ledger.offset_step, + ledger.curve_radius, + ) + components.append(component) + obstacle_provenance.update( + { + obstacle_id: replace( + obstacle_provenance[source_id], + obstacle_id=obstacle_id, + ) + for obstacle_id, source_id in boundary_obstacle_sources.items() + } + ) + represented = { + cohort_id + for component in components + for cohort_id in component.endpoint_cohort_ids + } + for cohort_id in sorted(set(dict(ledger.endpoint_members)) - represented): + components.append( + CorridorCohortComponentPlan( + f"corridor-component|{len(components)}", + (cohort_id,), + (), + (), + (), + CorridorAllocationStatus.COMPATIBILITY, + ) + ) + + def resolved_shortfall( + result: CorridorAllocationResult, + ) -> tuple[ + CorridorClearanceShortfall | None, + tuple[CorridorCohortObstacleProvenance, ...], + ]: + shortfall = result.clearance_shortfall + if shortfall is None: + return None, () + obstacle_ids = shortfall.blocking_obstacle_ids + if any(obstacle_id not in obstacle_provenance for obstacle_id in obstacle_ids): + return None, () + return shortfall, tuple( + obstacle_provenance[obstacle_id] for obstacle_id in obstacle_ids + ) + + failure_records: list[CorridorCohortFailure] = [] + for component in components: + if component.status is not CorridorAllocationStatus.FAILURE: + continue + component_failures = [] + for result_rank, result in enumerate(component.results): + if ( + result.status is not CorridorAllocationStatus.FAILURE + or result.reason is None + ): + continue + shortfall, blocking_obstacles = resolved_shortfall(result) + component_failures.append( + CorridorCohortFailure( + component.component_id, + result_rank, + result.reason, + result.blocking_member_ids, + result.blocking_obstacle_ids, + result.blocking_equality_owner_ids, + result.blocking_endpoint_owner_ids, + shortfall, + blocking_obstacles, + ) + ) + failure_records.extend(component_failures) + if not component_failures: + failure_records.append( + CorridorCohortFailure( + component.component_id, + -1, + CorridorAllocationFailureReason.INVALID, + tuple(claim_id for claim_id, _role in component.claim_roles), + (), + (), + (), + ) + ) + failures = tuple(failure_records) + if failures: + summary = "; ".join( + f"{failure.component_id}/result:{failure.result_rank} " + f"{failure.reason.value} " + f"members={','.join(failure.blocking_member_ids) or '-'} " + f"obstacles={','.join(failure.blocking_obstacle_ids) or '-'} " + f"equalities={','.join(failure.blocking_equality_owner_ids) or '-'}" + for failure in failures + ) + raise CorridorCohortCompilationError( + f"corridor cohort allocation failed: {summary}", failures + ) + allocations = tuple( + allocation + for component in components + if component.status is CorridorAllocationStatus.PLANNED + for allocation in component.allocations + ) + requests_by_id = { + request.variable.variable_id: request for request in scalar_requests + } + + def scalar_grant(variable_id: str, coordinate: float) -> CorridorScalarGrant: + request = requests_by_id[variable_id] + recipe = request.control_recipe + source_coordinate = ( + request.variable.coordinate if recipe is None else recipe.source_coordinate + ) + return CorridorScalarGrant( + variable_id, + request.variable.owner_kind, + request.variable.owner_id, + coordinate, + coordinate - source_coordinate, + recipe, + ) + + scalar_grants = tuple( + scalar_grant(variable_id, coordinate) + for component in components + for result in component.results + for variable_id, coordinate in result.allocations + if variable_id in requests_by_id + ) + if len(scalar_grants) != len(scalar_requests): + raise CorridorCohortCompilationError( + "corridor scalar publication does not realize its complete grant" + ) + landings = _planned_landings(claims, allocations) + if ledger.finalized_owned_segments is not None: + allocation_keys = { + (item.member_id, item.edge_key, item.segment_rank) for item in allocations + } + allocation_keys.update( + (item.member_id, item.edge_key, item.segment_rank) for item in landings + ) + if allocation_keys != ledger.finalized_owned_segments: + missing = ledger.finalized_owned_segments - allocation_keys + added = allocation_keys - ledger.finalized_owned_segments + raise CorridorCohortCompilationError( + "finalized corridor cohort realization changed ownership: " + f"missing={sorted(missing)}, added={sorted(added)}" + ) + protected = tuple( + sorted( + { + *( + item + for component in components + for item in component.protected_segments + ), + *((item.member_id, item.segment_rank) for item in landings), + } + ) + ) + patches = _prepare_patches(allocations, landings, targets) + if patches is None: + raise CorridorCohortCompilationError( + "corridor cohort publication does not match its source snapshot" + ) + finalized_allocations = _finalize_allocation_geometry( + allocations, + patches, + targets, + ) + if finalized_allocations is None: + raise CorridorCohortCompilationError( + "corridor cohort publication does not realize its complete grant" + ) + finalized_by_claim = { + allocation.claim_id: allocation for allocation in finalized_allocations + } + components = [ + replace( + component, + allocations=tuple( + finalized_by_claim[allocation.claim_id] + for allocation in component.allocations + ), + ) + for component in components + ] + plan = CorridorCohortPlan( + tuple(components), + finalized_allocations, + protected, + landings, + tuple(sorted(scalar_grants, key=lambda item: item.variable_id)), + ) + _commit_patches(patches) + return plan + + +__all__ = [ + "CorridorCohortAllocation", + "CorridorCohortClaimRole", + "CorridorCohortCompilationError", + "CorridorCohortFailure", + "CorridorCohortComponentPlan", + "CorridorCohortLedger", + "CorridorCohortLedgerClaim", + "CorridorCohortLanding", + "CorridorCohortObstacleProvenance", + "CorridorCohortPlan", + "CorridorCohortTarget", + "CorridorCrossingDisposition", + "CorridorFootprintSegmentKey", + "CorridorFootprintWitness", + "CorridorScalarOwnerKind", + "CorridorScalarControlledPoint", + "CorridorScalarControlRecipe", + "CorridorScalarDirectedRunway", + "CorridorScalarGrant", + "CorridorScalarRequest", + "CorridorScalarVariable", + "build_corridor_cohort_ledger", + "build_corridor_footprint_witnesses", + "compile_corridor_cohort_plan", +] diff --git a/src/nf_metro/layout/routing/corridor_cohorts.py b/src/nf_metro/layout/routing/corridor_cohorts.py index aca5bf4fe..3d090690e 100644 --- a/src/nf_metro/layout/routing/corridor_cohorts.py +++ b/src/nf_metro/layout/routing/corridor_cohorts.py @@ -2,11 +2,31 @@ from __future__ import annotations +from collections import defaultdict from dataclasses import dataclass from enum import Enum from fractions import Fraction from math import isfinite +_ObstacleInterval = tuple[ + Fraction, + Fraction, + set[str], + tuple[tuple[int, ...], ...], +] + + +class _NoCoordinateInsideBounds(Exception): + def __init__( + self, + root: int, + obstacle_ids: set[str] | None = None, + deficit: Fraction | None = None, + ) -> None: + self.root = root + self.obstacle_ids = obstacle_ids or set() + self.deficit = deficit + class CorridorAllocationStatus(Enum): PLANNED = "planned" @@ -50,6 +70,59 @@ class CorridorEquality: delta: float +@dataclass(frozen=True) +class CorridorFixedEquality: + owner_id: str + member_id: str + obstacle_id: str + delta: float = 0.0 + + +@dataclass(frozen=True) +class CorridorSeparation: + left_member_id: str + right_member_id: str + distance: float + + +@dataclass(frozen=True) +class CorridorDirectedSeparation: + """Require one raw coordinate to remain above another by a fixed distance.""" + + owner_id: str + lower_member_id: str + upper_member_id: str + distance: float + + +@dataclass(frozen=True) +class CorridorCoordinateDomain: + member_id: str + minimum_coordinate: float | None = None + maximum_coordinate: float | None = None + obstacle_ids: tuple[str, ...] = () + + +@dataclass(frozen=True) +class CorridorForbiddenInterval: + """A named open interval unavailable to one member coordinate.""" + + member_id: str + obstacle_id: str + minimum_coordinate: float + maximum_coordinate: float + semantic_rank: tuple[int, ...] + + +@dataclass(frozen=True) +class CorridorClearanceShortfall: + claim_ids: tuple[str, ...] + blocking_obstacle_ids: tuple[str, ...] + deficit: float + axis: int + required_shift_sign: int + + @dataclass(frozen=True) class CorridorAllocationProblem: """A complete preclosed endpoint, equality, and clearance component.""" @@ -57,9 +130,15 @@ class CorridorAllocationProblem: lanes: tuple[CorridorLane, ...] obstacles: tuple[CorridorObstacle, ...] = () equalities: tuple[CorridorEquality, ...] = () + separations: tuple[CorridorSeparation, ...] = () + domains: tuple[CorridorCoordinateDomain, ...] = () + fixed_equalities: tuple[CorridorFixedEquality, ...] = () + directed_separations: tuple[CorridorDirectedSeparation, ...] = () + forbidden_intervals: tuple[CorridorForbiddenInterval, ...] = () clearance: float = 4.0 witnesses_complete: bool = True axis_sign: int = 1 + coordinate_axis: int = 0 @dataclass(frozen=True) @@ -70,7 +149,9 @@ class CorridorAllocationResult: blocking_member_ids: tuple[str, ...] = () blocking_obstacle_ids: tuple[str, ...] = () blocking_equality_owner_ids: tuple[str, ...] = () + blocking_order_owner_ids: tuple[str, ...] = () blocking_endpoint_owner_ids: tuple[str, ...] = () + clearance_shortfall: CorridorClearanceShortfall | None = None def _q(value: float) -> Fraction: @@ -92,7 +173,9 @@ def _failure( members: tuple[str, ...] | list[str] | set[str] = (), obstacles: tuple[str, ...] | list[str] | set[str] = (), equality_owners: tuple[str, ...] | list[str] | set[str] = (), + order_owners: tuple[str, ...] | list[str] | set[str] = (), endpoint_owners: tuple[str, ...] | list[str] | set[str] = (), + clearance_shortfall: CorridorClearanceShortfall | None = None, ) -> CorridorAllocationResult: return CorridorAllocationResult( CorridorAllocationStatus.FAILURE, @@ -100,7 +183,9 @@ def _failure( blocking_member_ids=tuple(sorted(set(members))), blocking_obstacle_ids=tuple(sorted(set(obstacles))), blocking_equality_owner_ids=tuple(sorted(set(equality_owners))), + blocking_order_owner_ids=tuple(sorted(set(order_owners))), blocking_endpoint_owner_ids=tuple(sorted(set(endpoint_owners))), + clearance_shortfall=clearance_shortfall, ) @@ -161,6 +246,20 @@ def _invalid_problem( ) ) numeric.extend(equality.delta for equality in problem.equalities) + numeric.extend(equality.delta for equality in problem.fixed_equalities) + numeric.extend(separation.distance for separation in problem.separations) + numeric.extend(separation.distance for separation in problem.directed_separations) + numeric.extend( + coordinate + for domain in problem.domains + for coordinate in (domain.minimum_coordinate, domain.maximum_coordinate) + if coordinate is not None + ) + numeric.extend( + coordinate + for interval in problem.forbidden_intervals + for coordinate in (interval.minimum_coordinate, interval.maximum_coordinate) + ) invalid_members = { lane.member_id for lane in lanes @@ -193,7 +292,14 @@ def _invalid_problem( split_endpoint_owners = { lane.endpoint_owner_id for lane in lanes if lane.cohort_id in split_cohorts } + obstacle_ids = [obstacle.obstacle_id for obstacle in problem.obstacles] + duplicate_obstacles = { + obstacle_id + for obstacle_id in obstacle_ids + if obstacle_ids.count(obstacle_id) > 1 + } by_id = set(member_ids) + all_ids = by_id | set(obstacle_ids) invalid_equalities = { equality.owner_id for equality in problem.equalities @@ -201,9 +307,79 @@ def _invalid_problem( or equality.left_member_id not in by_id or equality.right_member_id not in by_id } + fixed_equality_pairs = [ + (equality.member_id, equality.obstacle_id) + for equality in problem.fixed_equalities + ] + invalid_fixed_equalities = { + equality.owner_id + for equality in problem.fixed_equalities + if not equality.owner_id + or equality.member_id not in by_id + or equality.obstacle_id not in set(obstacle_ids) + or fixed_equality_pairs.count((equality.member_id, equality.obstacle_id)) > 1 + } + separation_pairs = [ + frozenset((separation.left_member_id, separation.right_member_id)) + for separation in problem.separations + ] + invalid_separations = { + member_id + for separation, pair in zip(problem.separations, separation_pairs, strict=True) + if ( + len(pair) != 2 + or not pair.issubset(all_ids) + or not pair.intersection(by_id) + or separation.distance < 0 + or separation_pairs.count(pair) > 1 + ) + for member_id in pair + } + invalid_directed_separations = { + separation.owner_id + for separation in problem.directed_separations + if not separation.owner_id + or separation.lower_member_id not in by_id + or separation.upper_member_id not in by_id + or separation.lower_member_id == separation.upper_member_id + or separation.distance < 0 + } + invalid_directed_members = { + member_id + for separation in problem.directed_separations + if separation.owner_id in invalid_directed_separations + for member_id in (separation.lower_member_id, separation.upper_member_id) + if member_id in by_id + } + invalid_domains = { + domain.member_id + for domain in problem.domains + if domain.member_id not in by_id + or ( + domain.minimum_coordinate is not None + and domain.maximum_coordinate is not None + and domain.minimum_coordinate > domain.maximum_coordinate + ) + } + invalid_forbidden_intervals = { + interval.obstacle_id + for interval in problem.forbidden_intervals + if not interval.obstacle_id + or interval.member_id not in by_id + or interval.obstacle_id in by_id + or interval.minimum_coordinate >= interval.maximum_coordinate + or not interval.semantic_rank + } + invalid_forbidden_members = { + interval.member_id + for interval in problem.forbidden_intervals + if interval.member_id not in by_id + or interval.obstacle_id in invalid_forbidden_intervals + } invalid_shape = ( problem.clearance < 0 or problem.axis_sign not in (-1, 1) + or problem.coordinate_axis not in (0, 1) or not all(isfinite(value) for value in numeric) or any(lane.span_start > lane.span_end for lane in lanes) or any( @@ -214,15 +390,38 @@ def _invalid_problem( invalid_members or duplicate_members or invalid_obstacles + or duplicate_obstacles or invalid_equalities + or invalid_fixed_equalities + or invalid_separations + or invalid_directed_separations + or invalid_domains + or invalid_forbidden_intervals + or by_id.intersection(obstacle_ids) or split_cohorts or invalid_shape ): return _failure( CorridorAllocationFailureReason.INVALID, - members=invalid_members | duplicate_members | split_members, - obstacles=invalid_obstacles, - equality_owners=invalid_equalities, + members=( + invalid_members + | duplicate_members + | split_members + | invalid_separations.intersection(by_id) + | invalid_directed_members + | invalid_domains.intersection(by_id) + | invalid_forbidden_members.intersection(by_id) + | by_id.intersection(obstacle_ids) + ), + obstacles=( + invalid_obstacles + | duplicate_obstacles + | invalid_separations.intersection(obstacle_ids) + | invalid_forbidden_intervals + | by_id.intersection(obstacle_ids) + ), + equality_owners=invalid_equalities | invalid_fixed_equalities, + order_owners=invalid_directed_separations, endpoint_owners={ lane.endpoint_owner_id for lane in lanes @@ -294,6 +493,51 @@ def _contradiction_attribution( ) +def _ordered_roots_or_cycle( + roots: set[int], + edges: dict[tuple[int, int], Fraction], + root_key: dict[int, tuple[tuple[int, ...], tuple[tuple[int, ...], ...], Fraction]], +) -> tuple[tuple[int, ...], frozenset[int]]: + successors: dict[int, set[int]] = {root: set() for root in roots} + indegree = {root: 0 for root in roots} + for before, after in edges: + if after not in successors[before]: + successors[before].add(after) + indegree[after] += 1 + ready = sorted( + (root for root, count in indegree.items() if count == 0), + key=root_key.__getitem__, + ) + ordered: list[int] = [] + while ready: + root = ready.pop(0) + ordered.append(root) + for after in sorted(successors[root], key=root_key.__getitem__): + indegree[after] -= 1 + if indegree[after] == 0: + ready.append(after) + ready.sort(key=root_key.__getitem__) + if len(ordered) == len(roots): + return tuple(ordered), frozenset() + + unresolved = set(roots) - set(ordered) + + def reaches_self(start: int) -> bool: + pending = list(successors[start]) + visited: set[int] = set() + while pending: + current = pending.pop() + if current == start: + return True + if current in visited or current not in unresolved: + continue + visited.add(current) + pending.extend(successors[current]) + return False + + return (), frozenset(root for root in unresolved if reaches_self(root)) + + def solve_corridor_cohorts( # noqa: C901, PLR0915 problem: CorridorAllocationProblem, ) -> CorridorAllocationResult: @@ -318,6 +562,17 @@ def solve_corridor_cohorts( # noqa: C901, PLR0915 for lane in lanes ] union_find = _WeightedUnionFind(canonical_member_keys) + clearance_by_pair = { + frozenset((separation.left_member_id, separation.right_member_id)): _q( + separation.distance + ) + for separation in problem.separations + } + + def required_clearance(left_id: str, right_id: str) -> Fraction: + return clearance_by_pair.get( + frozenset((left_id, right_id)), _q(problem.clearance) + ) cohorts: dict[str, list[int]] = {} for index, lane in enumerate(lanes): @@ -386,79 +641,274 @@ def solve_corridor_cohorts( # noqa: C901, PLR0915 } root_key = { root: ( - preferred[root], lanes[component_reference[root]].semantic_rank, tuple(sorted(lanes[index].semantic_rank for index in members)), + preferred[root], ) for root, members in roots.items() } peer_owners = _equality_peer_owners(problem.equalities, by_id) - lower: dict[int, Fraction | None] = {root: None for root in roots} - upper: dict[int, Fraction | None] = {root: None for root in roots} - bound_members: dict[int, set[str]] = {root: set() for root in roots} - bound_obstacles: dict[int, set[str]] = {root: set() for root in roots} + domain_floor: dict[int, Fraction] = {} + domain_floor_obstacles: dict[int, set[str]] = {} + domain_ceiling: dict[int, Fraction] = {} + domain_ceiling_obstacles: dict[int, set[str]] = {} + domain_obstacles: dict[int, set[str]] = {} + obstacle_shift_signs: defaultdict[str, set[int]] = defaultdict(set) + + def tighten_floor(root: int, value: Fraction, obstacle_ids: set[str]) -> None: + current = domain_floor.get(root) + if current is None or value > current: + domain_floor[root] = value + domain_floor_obstacles[root] = set(obstacle_ids) + elif value == current: + domain_floor_obstacles.setdefault(root, set()).update(obstacle_ids) + + def tighten_ceiling(root: int, value: Fraction, obstacle_ids: set[str]) -> None: + current = domain_ceiling.get(root) + if current is None or value < current: + domain_ceiling[root] = value + domain_ceiling_obstacles[root] = set(obstacle_ids) + elif value == current: + domain_ceiling_obstacles.setdefault(root, set()).update(obstacle_ids) + + for domain in problem.domains: + index = by_id[domain.member_id] + root, _ = union_find.find(index) + obstacle_ids = set(domain.obstacle_ids) + minimum = ( + None + if domain.minimum_coordinate is None + else sign * _q(domain.minimum_coordinate) - potentials[index] + ) + maximum = ( + None + if domain.maximum_coordinate is None + else sign * _q(domain.maximum_coordinate) - potentials[index] + ) + if sign < 0: + minimum, maximum = maximum, minimum + if minimum is not None: + tighten_floor(root, minimum, obstacle_ids) + if maximum is not None: + tighten_ceiling(root, maximum, obstacle_ids) + domain_obstacles.setdefault(root, set()).update(obstacle_ids) + if obstacle_ids: + if domain.minimum_coordinate is not None: + for obstacle_id in obstacle_ids: + obstacle_shift_signs[obstacle_id].add(-1) + if domain.maximum_coordinate is not None: + for obstacle_id in obstacle_ids: + obstacle_shift_signs[obstacle_id].add(1) + + obstacles_by_id = {obstacle.obstacle_id: obstacle for obstacle in problem.obstacles} + fixed_peer_members: defaultdict[str, set[int]] = defaultdict(set) + fixed_root_values: defaultdict[int, list[tuple[Fraction, str, str]]] = defaultdict( + list + ) + fixed_root_owners: defaultdict[int, set[str]] = defaultdict(set) + for fixed_equality in problem.fixed_equalities: + index = by_id[fixed_equality.member_id] + root, _ = union_find.find(index) + obstacle = obstacles_by_id[fixed_equality.obstacle_id] + value = ( + sign * (_q(obstacle.realised_coordinate) + _q(fixed_equality.delta)) + - potentials[index] + ) + fixed_root_values[root].append( + (value, fixed_equality.owner_id, fixed_equality.obstacle_id) + ) + fixed_root_owners[root].add(fixed_equality.owner_id) + fixed_peer_members[fixed_equality.obstacle_id].add(index) + + for root, values in fixed_root_values.items(): + fixed_coordinates = {value for value, _owner, _obstacle in values} + if len(fixed_coordinates) != 1: + return _failure( + CorridorAllocationFailureReason.INFEASIBLE, + members={lanes[index].member_id for index in roots[root]}, + obstacles={obstacle for _value, _owner, obstacle in values}, + equality_owners={owner for _value, owner, _obstacle in values}, + endpoint_owners={ + lanes[index].endpoint_owner_id for index in roots[root] + }, + ) + coordinate = next(iter(fixed_coordinates)) + tighten_floor(root, coordinate, set()) + tighten_ceiling(root, coordinate, set()) + + def clearance_shortfall( + root: int, + deficit: Fraction | None, + obstacle_ids: set[str], + ) -> CorridorClearanceShortfall | None: + boundary_obstacle_ids = { + obstacle_id + for obstacle_id in obstacle_ids + if obstacle_id in obstacle_shift_signs + } + signs = { + shift_sign + for obstacle_id in boundary_obstacle_ids + for shift_sign in obstacle_shift_signs[obstacle_id] + } + if ( + deficit is None + or deficit <= 0 + or not boundary_obstacle_ids + or len(signs) != 1 + ): + return None + return CorridorClearanceShortfall( + tuple(sorted(lanes[index].member_id for index in roots[root])), + tuple(sorted(boundary_obstacle_ids)), + float(deficit), + problem.coordinate_axis, + next(iter(signs)), + ) + + conflicting_domain_roots = { + root + for root in roots + if root in domain_floor + and root in domain_ceiling + and domain_floor[root] > domain_ceiling[root] + } + if conflicting_domain_roots: + shortfall_root = min(conflicting_domain_roots) + return _failure( + CorridorAllocationFailureReason.INFEASIBLE, + members={ + lanes[index].member_id + for root in conflicting_domain_roots + for index in roots[root] + }, + obstacles={ + obstacle_id + for root in conflicting_domain_roots + for obstacle_id in domain_obstacles.get(root, ()) + }, + equality_owners={ + owner + for root in conflicting_domain_roots + for owner in fixed_root_owners.get(root, ()) + }, + clearance_shortfall=( + clearance_shortfall( + shortfall_root, + domain_floor[shortfall_root] - domain_ceiling[shortfall_root], + domain_floor_obstacles.get(shortfall_root, set()) + | domain_ceiling_obstacles.get(shortfall_root, set()), + ) + if len(conflicting_domain_roots) == 1 + else None + ), + ) + + exclusion_intervals_by_root: dict[int, tuple[_ObstacleInterval, ...]] = {} edges: dict[tuple[int, int], Fraction] = {} - edge_members: dict[tuple[int, int], set[str]] = {} + edge_order_owners: defaultdict[tuple[int, int], set[str]] = defaultdict(set) + + for directed_separation in sorted( + problem.directed_separations, + key=lambda item: ( + item.owner_id, + item.lower_member_id, + item.upper_member_id, + item.distance, + ), + ): + lower_index = by_id[directed_separation.lower_member_id] + upper_index = by_id[directed_separation.upper_member_id] + lower_root, _ = union_find.find(lower_index) + upper_root, _ = union_find.find(upper_index) + required = _q(directed_separation.distance) + if lower_root == upper_root: + raw_delta = sign * (potentials[upper_index] - potentials[lower_index]) + if raw_delta < required: + return _failure( + CorridorAllocationFailureReason.INFEASIBLE, + members={lanes[index].member_id for index in roots[lower_root]}, + equality_owners=fixed_root_owners.get(lower_root, set()), + order_owners=(directed_separation.owner_id,), + endpoint_owners={ + lanes[index].endpoint_owner_id for index in roots[lower_root] + }, + ) + continue + if sign > 0: + before, after = lower_root, upper_root + root_distance = required + potentials[lower_index] - potentials[upper_index] + else: + before, after = upper_root, lower_root + root_distance = required + potentials[upper_index] - potentials[lower_index] + edge = before, after + edges[edge] = max(edges.get(edge, root_distance), root_distance) + edge_order_owners[edge].add(directed_separation.owner_id) + + forbidden_by_root: defaultdict[int, list[_ObstacleInterval]] = defaultdict(list) + for interval in problem.forbidden_intervals: + index = by_id[interval.member_id] + root, _ = union_find.find(index) + if sign > 0: + before_bound = _q(interval.minimum_coordinate) - potentials[index] + after_bound = _q(interval.maximum_coordinate) - potentials[index] + else: + before_bound = -_q(interval.maximum_coordinate) - potentials[index] + after_bound = -_q(interval.minimum_coordinate) - potentials[index] + forbidden_by_root[root].append( + ( + before_bound, + after_bound, + {interval.obstacle_id}, + (interval.semantic_rank,), + ) + ) for root, members in roots.items(): + exclusion_intervals = list(forbidden_by_root.get(root, ())) for obstacle in problem.obstacles: - overlapping = [ - index - for index in members - if _overlaps( - lanes[index].span_start, - lanes[index].span_end, + obstacle_coordinate = sign * _q(obstacle.realised_coordinate) + for index in members: + lane = lanes[index] + if index in fixed_peer_members[obstacle.obstacle_id] or not _overlaps( + lane.span_start, + lane.span_end, obstacle.span_start, obstacle.span_end, + ): + continue + clearance = required_clearance(lane.member_id, obstacle.obstacle_id) + exclusion_intervals.append( + ( + obstacle_coordinate - clearance - potentials[index], + obstacle_coordinate + clearance - potentials[index], + {obstacle.obstacle_id}, + (obstacle.semantic_rank,), + ) ) - ] - if not overlapping: + + merged_intervals: list[_ObstacleInterval] = [] + for obstacle_interval in sorted( + exclusion_intervals, key=lambda item: (item[0], item[1]) + ): + if not merged_intervals or obstacle_interval[0] >= merged_intervals[-1][1]: + merged_intervals.append(obstacle_interval) continue - obstacle_order_coordinate = sign * _q(obstacle.order_coordinate) - component_order_key = ( - preferred[root], - lanes[component_reference[root]].semantic_rank, - ) - obstacle_order_key = ( - obstacle_order_coordinate, - obstacle.semantic_rank, + ( + before_bound, + after_bound, + obstacle_ids, + obstacle_ranks, + ) = merged_intervals[-1] + merged_intervals[-1] = ( + before_bound, + max(after_bound, obstacle_interval[1]), + obstacle_ids | obstacle_interval[2], + tuple(sorted((*obstacle_ranks, *obstacle_interval[3]))), ) - if component_order_key == obstacle_order_key: - return _failure( - CorridorAllocationFailureReason.INVALID, - members={lanes[index].member_id for index in overlapping}, - obstacles=(obstacle.obstacle_id,), - endpoint_owners={ - lanes[index].endpoint_owner_id for index in overlapping - }, - ) - component_before = component_order_key < obstacle_order_key - obstacle_coordinate = sign * _q(obstacle.realised_coordinate) - if component_before: - candidate = min( - obstacle_coordinate - _q(problem.clearance) - potentials[index] - for index in overlapping - ) - current_upper = upper[root] - upper[root] = ( - candidate - if current_upper is None - else min(current_upper, candidate) - ) - else: - candidate = max( - obstacle_coordinate + _q(problem.clearance) - potentials[index] - for index in overlapping - ) - current_lower = lower[root] - lower[root] = ( - candidate - if current_lower is None - else max(current_lower, candidate) - ) - bound_members[root].update(lanes[index].member_id for index in overlapping) - bound_obstacles[root].add(obstacle.obstacle_id) + + exclusion_intervals_by_root[root] = tuple(merged_intervals) for left_index, left_lane in enumerate(lanes): left_root, _ = union_find.find(left_index) @@ -476,12 +926,16 @@ def solve_corridor_cohorts( # noqa: C901, PLR0915 continue right_root, _ = union_find.find(right_index) if left_root == right_root: - if abs(potentials[right_index] - potentials[left_index]) < _q( - problem.clearance - ): + if abs( + potentials[right_index] - potentials[left_index] + ) < required_clearance(left_lane.member_id, right_lane.member_id): return _failure( CorridorAllocationFailureReason.INFEASIBLE, members=(left_lane.member_id, right_lane.member_id), + equality_owners=( + fixed_root_owners.get(left_root, set()) + | fixed_root_owners.get(right_root, set()) + ), endpoint_owners=( left_lane.endpoint_owner_id, right_lane.endpoint_owner_id, @@ -497,83 +951,271 @@ def solve_corridor_cohorts( # noqa: C901, PLR0915 right_lane.endpoint_owner_id, ), ) - if root_key[left_root] <= root_key[right_root]: + directed_edge = ( + (left_root, right_root) + if (left_root, right_root) in edge_order_owners + else (right_root, left_root) + if (right_root, left_root) in edge_order_owners + else None + ) + if directed_edge == (left_root, right_root) or ( + directed_edge is None and root_key[left_root] <= root_key[right_root] + ): before, after = left_root, right_root - separation = ( - _q(problem.clearance) + lane_separation = ( + required_clearance(left_lane.member_id, right_lane.member_id) + potentials[left_index] - potentials[right_index] ) else: before, after = right_root, left_root - separation = ( - _q(problem.clearance) + lane_separation = ( + required_clearance(left_lane.member_id, right_lane.member_id) + potentials[right_index] - potentials[left_index] ) edge = (before, after) - edges[edge] = max(edges.get(edge, separation), separation) - edge_members.setdefault(edge, set()).update( - (left_lane.member_id, right_lane.member_id) - ) + edges[edge] = max(edges.get(edge, lane_separation), lane_separation) + + order, cyclic_roots = _ordered_roots_or_cycle(set(roots), edges, root_key) + if cyclic_roots: + return _failure( + CorridorAllocationFailureReason.INFEASIBLE, + members={ + lanes[index].member_id for root in cyclic_roots for index in roots[root] + }, + equality_owners={ + owner + for root in cyclic_roots + for owner in fixed_root_owners.get(root, set()) + }, + order_owners={ + owner + for (before, after), owners in edge_order_owners.items() + if before in cyclic_roots and after in cyclic_roots + for owner in owners + }, + endpoint_owners={ + lanes[index].endpoint_owner_id + for root in cyclic_roots + for index in roots[root] + }, + ) successors: dict[int, list[tuple[int, Fraction]]] = {root: [] for root in roots} predecessors: dict[int, list[tuple[int, Fraction]]] = {root: [] for root in roots} - for (before, after), separation in edges.items(): - successors[before].append((after, separation)) - predecessors[after].append((before, separation)) - order = sorted(roots, key=lambda root: root_key[root]) - - for root in reversed(order): - for after, separation in successors[root]: - after_upper = upper[after] - if after_upper is None: + for (before, after), edge_distance in edges.items(): + successors[before].append((after, edge_distance)) + predecessors[after].append((before, edge_distance)) + + def closest_allowed( + root: int, + floor: Fraction | None = None, + ceiling: Fraction | None = None, + floor_obstacle_ids: set[str] | None = None, + ceiling_obstacle_ids: set[str] | None = None, + ) -> Fraction: + if floor is not None and ceiling is not None and floor > ceiling: + raise _NoCoordinateInsideBounds( + root, + (floor_obstacle_ids or set()) | (ceiling_obstacle_ids or set()), + floor - ceiling, + ) + coordinate = preferred[root] + if floor is not None: + coordinate = max(coordinate, floor) + if ceiling is not None: + coordinate = min(coordinate, ceiling) + component_semantic_key = ( + lanes[component_reference[root]].semantic_rank, + tuple(sorted(lanes[index].member_id for index in roots[root])), + ) + for ( + before_bound, + after_bound, + obstacle_ids, + obstacle_ranks, + ) in exclusion_intervals_by_root[root]: + if not before_bound < coordinate < after_bound: + continue + before_feasible = floor is None or floor <= before_bound + after_feasible = ceiling is None or after_bound <= ceiling + if before_feasible and after_feasible: + before_distance = abs(preferred[root] - before_bound) + after_distance = abs(after_bound - preferred[root]) + choose_before = before_distance < after_distance or ( + before_distance == after_distance + and component_semantic_key + < (min(obstacle_ranks), tuple(sorted(obstacle_ids))) + ) + if choose_before: + coordinate = before_bound + break + elif before_feasible: + coordinate = before_bound + break + if after_feasible: + coordinate = after_bound continue - candidate = after_upper - separation - root_upper = upper[root] - if root_upper is None or candidate < root_upper: - upper[root] = candidate - bound_members[root].update(bound_members[after]) - bound_members[root].update(edge_members[(root, after)]) - bound_obstacles[root].update(bound_obstacles[after]) + deficit_candidates = ( + ( + None if floor is None else floor - before_bound, + floor_obstacle_ids or set(), + ), + ( + None if ceiling is None else after_bound - ceiling, + ceiling_obstacle_ids or set(), + ), + ) + deficits = tuple( + (deficit, bound_obstacle_ids) + for deficit, bound_obstacle_ids in deficit_candidates + if deficit is not None and deficit > 0 + ) + deficit = min((item for item, _ids in deficits), default=None) + boundary_obstacles = { + obstacle_id + for item, bound_obstacle_ids in deficits + if item == deficit + for obstacle_id in bound_obstacle_ids + } + raise _NoCoordinateInsideBounds( + root, + obstacle_ids | boundary_obstacles, + deficit, + ) + return coordinate + + try: + latest: dict[int, Fraction] = {} + latest_ceiling_obstacles: dict[int, set[str]] = {} + for root in roots: + coordinate = closest_allowed( + root, + floor=domain_floor.get(root), + ceiling=domain_ceiling.get(root), + floor_obstacle_ids=domain_floor_obstacles.get(root), + ceiling_obstacle_ids=domain_ceiling_obstacles.get(root), + ) + latest[root] = coordinate + latest_ceiling_obstacles[root] = ( + set(domain_ceiling_obstacles.get(root, set())) + if coordinate == domain_ceiling.get(root) + else set() + ) + for root in reversed(order): + ceiling_candidates = [ + ( + latest[after] - separation, + latest_ceiling_obstacles[after], + ) + for after, separation in successors[root] + ] + if root in domain_ceiling: + ceiling_candidates.append( + (domain_ceiling[root], domain_ceiling_obstacles.get(root, set())) + ) + ceiling_candidates.append((latest[root], latest_ceiling_obstacles[root])) + ceiling = min(value for value, _obstacles in ceiling_candidates) + ceiling_obstacles = { + obstacle_id + for value, obstacle_ids in ceiling_candidates + if value == ceiling + for obstacle_id in obstacle_ids + } + coordinate = closest_allowed( + root, + floor=domain_floor.get(root), + ceiling=ceiling, + floor_obstacle_ids=domain_floor_obstacles.get(root), + ceiling_obstacle_ids=ceiling_obstacles, + ) + latest[root] = coordinate + latest_ceiling_obstacles[root] = ( + ceiling_obstacles if coordinate == ceiling else set() + ) + except _NoCoordinateInsideBounds as error: + blockers = error.obstacle_ids + return _failure( + CorridorAllocationFailureReason.INFEASIBLE, + members={lanes[index].member_id for index in roots[error.root]}, + obstacles=blockers, + equality_owners=fixed_root_owners.get(error.root, set()), + endpoint_owners={ + lanes[index].endpoint_owner_id for index in roots[error.root] + }, + clearance_shortfall=clearance_shortfall( + error.root, + error.deficit, + blockers, + ), + ) coordinates: dict[int, Fraction] = {} - coordinate_members: dict[int, set[str]] = {root: set() for root in roots} + coordinate_floor_obstacles: dict[int, set[str]] = {} for root in order: - coordinate = preferred[root] - root_upper = upper[root] - if root_upper is not None: - coordinate = min(coordinate, root_upper) - root_lower = lower[root] - if root_lower is not None: - coordinate = max(coordinate, root_lower) - coordinate_members[root].update(bound_members[root]) - for before, separation in predecessors[root]: - candidate = coordinates[before] + separation - if candidate > coordinate: - coordinate = candidate - coordinate_members[root].update(coordinate_members[before]) - coordinate_members[root].update(edge_members[(before, root)]) - if root_upper is not None and coordinate > root_upper: - component_members = {lanes[index].member_id for index in roots[root]} - equality_owners = { - owner - for pair, owners in peer_owners.items() - if pair <= set(roots[root]) - for owner in owners - } + floor_candidates = [ + ( + coordinates[before] + separation, + coordinate_floor_obstacles[before], + ) + for before, separation in predecessors[root] + ] + if root in domain_floor: + floor_candidates.append( + (domain_floor[root], domain_floor_obstacles.get(root, set())) + ) + floor = max((value for value, _obstacles in floor_candidates), default=None) + floor_obstacles = { + obstacle_id + for value, obstacle_ids in floor_candidates + if value == floor + for obstacle_id in obstacle_ids + } + if floor is not None and floor > latest[root]: + blockers = floor_obstacles | latest_ceiling_obstacles[root] return _failure( CorridorAllocationFailureReason.INFEASIBLE, - members=component_members - | bound_members[root] - | coordinate_members[root], - obstacles=bound_obstacles[root], - equality_owners=equality_owners, + members={lanes[index].member_id for index in roots[root]}, + obstacles=blockers, + equality_owners=fixed_root_owners.get(root, set()), endpoint_owners={ lanes[index].endpoint_owner_id for index in roots[root] }, + clearance_shortfall=clearance_shortfall( + root, + floor - latest[root], + blockers, + ), + ) + try: + coordinate = closest_allowed( + root, + floor=floor, + ceiling=latest[root], + floor_obstacle_ids=floor_obstacles, + ceiling_obstacle_ids=latest_ceiling_obstacles[root], + ) + except _NoCoordinateInsideBounds as error: + blockers = error.obstacle_ids + return _failure( + CorridorAllocationFailureReason.INFEASIBLE, + members={lanes[index].member_id for index in roots[error.root]}, + obstacles=blockers, + equality_owners=fixed_root_owners.get(error.root, set()), + endpoint_owners={ + lanes[index].endpoint_owner_id for index in roots[error.root] + }, + clearance_shortfall=clearance_shortfall( + error.root, + error.deficit, + blockers, + ), ) coordinates[root] = coordinate + coordinate_floor_obstacles[root] = ( + floor_obstacles if coordinate == floor else set() + ) allocations: list[tuple[str, float]] = [] for index, lane in enumerate(lanes): @@ -597,8 +1239,14 @@ def solve_corridor_cohorts( # noqa: C901, PLR0915 "CorridorAllocationProblem", "CorridorAllocationResult", "CorridorAllocationStatus", + "CorridorClearanceShortfall", + "CorridorCoordinateDomain", + "CorridorDirectedSeparation", "CorridorEquality", + "CorridorFixedEquality", + "CorridorForbiddenInterval", "CorridorLane", "CorridorObstacle", + "CorridorSeparation", "solve_corridor_cohorts", ] diff --git a/src/nf_metro/layout/routing/exit_turns.py b/src/nf_metro/layout/routing/exit_turns.py index ca17af268..7175ab1b2 100644 --- a/src/nf_metro/layout/routing/exit_turns.py +++ b/src/nf_metro/layout/routing/exit_turns.py @@ -11,7 +11,6 @@ from nf_metro.layout.constants import ( COORD_TOLERANCE, MIN_STRAIGHT_EDGE, - OFFSET_STEP, ) from nf_metro.layout.route_plan import ( CoordinateRegime, @@ -59,13 +58,10 @@ ) from nf_metro.layout.routing.common import ( Direction, - HTrunkSeg, OffsetRegime, RoutedPath, - _vert_horiz_cross, apply_route_offsets, horizontal_direction, - iter_horizontal_trunks, segment_direction, vertical_direction, ) @@ -104,9 +100,6 @@ _PerpExitGeometry, _right_entry_over_top_geometry, _right_entry_wrap_geometry, - _route_merge_trunk, - _route_right_entry_cross_row, - _route_u_bypass_family, _SourceSeam, _tb_bottom_exit_geometry, _wrap_fan_geometry, @@ -2325,202 +2318,6 @@ def _fan_stated_offsets( } -def _shared_left_exit_opening( - graph: MetroGraph, - ctx: _RoutingCtx, - scaffold: RouteSemanticScaffold, - member_edges: tuple[ResolvedEdge, ...], -) -> ExitSharedOpening | None: - """Plan the common corridor for one left-exit line splitting below a trunk. - - Both members leave the port together, descend the column their exit side - faces, and part in the corridor clear of every trunk they must pass. The - crossing trunk sets how far down that corridor sits; it does not push the - descent off to the section's far side, because reaching around the box the - line just left reads worse than a bridged crossing. - - The pair joins the lane stack the trunks it passes already form, one - ``OFFSET_STEP`` under the deepest of them, rather than reserving a fresh - turn-radius band beneath the whole stack: a band of its own deepens the - corridor for everyone and re-packs the columns feeding it, which transposes - risers against the trunks they have to clear. Only a section box it must - clear buys the full radius. - """ - if len(member_edges) != 2 or len({edge.line_id for edge in member_edges}) != 1: - return None - edges = tuple(_graph_edge(ctx.edge_by_key, edge) for edge in member_edges) - facts = tuple( - _build_inter_facts(edge, *graph.edge_endpoints(edge), ctx) for edge in edges - ) - if not all( - fact.is_left_exit - and fact.entry_side is PortSide.RIGHT - and fact.src_row is not None - and fact.tgt_row is not None - and fact.tgt_row > fact.src_row - for fact in facts - ): - return None - families = tuple( - classify_inter_section_family(edge, *graph.edge_endpoints(edge), ctx) - for edge in edges - ) - if set(families) != { - RouteFamilyId.RIGHT_ENTRY_CROSS_ROW_WRAP, - RouteFamilyId.BYPASS_FAMILY, - }: - return None - source = facts[0].src - source_exit_edge = next( - ( - edge - for edge in graph.edges_to(source.id) - if edge.source in graph.ports and not graph.ports[edge.source].is_entry - ), - None, - ) - if source_exit_edge is None: - return None - source_exit = graph.ports[source_exit_edge.source] - source_section = graph.section_for_port(source_exit) - if source_section is None: - return None - - def crosses(first: RoutedPath, second: RoutedPath) -> bool: - for (ax0, ay0), (ax1, ay1) in zip(first.points, first.points[1:]): - for (bx0, by0), (bx1, by1) in zip(second.points, second.points[1:]): - if ( - ax0 == ax1 - and by0 == by1 - and _vert_horiz_cross(ax0, ay0, ay1, by0, bx0, bx1) - ): - return True - if ( - bx0 == bx1 - and ay0 == ay1 - and _vert_horiz_cross(bx0, by0, by1, ay0, ax0, ax1) - ): - return True - return False - - sibling_routes = tuple( - _route_right_entry_cross_row(fact) - if family is RouteFamilyId.RIGHT_ENTRY_CROSS_ROW_WRAP - else _route_u_bypass_family(fact) - for fact, family in zip(facts, families, strict=True) - ) - if any(route is None for route in sibling_routes): - return None - resolved_siblings = tuple(route for route in sibling_routes if route is not None) - target_row = facts[0].tgt_row - assert target_row is not None and facts[0].src_col is not None - barriers: list[tuple[HTrunkSeg, float]] = [] - for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): - entry_port_id = ctx.merge.entry_port_for.get(merge_id) - entry_port = ( - graph.ports.get(entry_port_id) if entry_port_id is not None else None - ) - entry_section = ( - graph.section_for_port(entry_port) if entry_port is not None else None - ) - if ( - entry_port is None - or entry_section is None - or entry_port.side is not PortSide.RIGHT - or entry_section.grid_col != facts[0].src_col - or entry_section.grid_row != target_row - ): - continue - trunk_edge = next( - ( - edge - for edge in graph.edges_from(trunk_source_id) - if edge.target == merge_id and edge.line_id != member_edges[0].line_id - ), - None, - ) - if trunk_edge is None: - continue - trunk_source, trunk_target = graph.edge_endpoints(trunk_edge) - trunk = _route_merge_trunk( - _build_inter_facts(trunk_edge, trunk_source, trunk_target, ctx) - ) - horizontal = next( - ( - segment - for _rank, segment in iter_horizontal_trunks(trunk) - if segment.xa + COORD_TOLERANCE - < source.x - < segment.xb - COORD_TOLERANCE - and segment.after_y > segment.y - ), - None, - ) - if horizontal is None: - continue - if ( - horizontal.xb > source.x + ctx.curve_radius - and horizontal.after_y > entry_section.bbox_y + COORD_TOLERANCE - and all(crosses(route, trunk) for route in resolved_siblings) - ): - barriers.append((horizontal, entry_section.bbox_y + entry_section.bbox_h)) - if len(barriers) == 2: - return None - if len(barriers) != 1: - return None - barrier, barrier_section_bottom = barriers[0] - exit_x = source.x - ctx.curve_radius - target_x = min(fact.tgt.x for fact in facts) - crossing_trunk_bottom = max(barrier.y, barrier.before_y, barrier.after_y) - for merge_id, trunk_source_id in ctx.merge.trunk_source.items(): - trunk_edge = next( - ( - edge - for edge in graph.edges_from(trunk_source_id) - if edge.target == merge_id and edge.line_id != member_edges[0].line_id - ), - None, - ) - if trunk_edge is None: - continue - candidate = _route_merge_trunk( - _build_inter_facts(trunk_edge, *graph.edge_endpoints(trunk_edge), ctx) - ) - for _rank, horizontal in iter_horizontal_trunks(candidate): - if ( - min(horizontal.xa, horizontal.xb) < exit_x - COORD_TOLERANCE - and target_x < max(horizontal.xa, horizontal.xb) - COORD_TOLERANCE - and horizontal.y > source.y + COORD_TOLERANCE - ): - crossing_trunk_bottom = max( - crossing_trunk_bottom, - horizontal.y, - horizontal.before_y, - horizontal.after_y, - ) - branch_y = max( - crossing_trunk_bottom + OFFSET_STEP, - barrier_section_bottom + 2 * ctx.curve_radius, - ) - if branch_y <= source.y: - return None - if any( - fact.v_segment_crosses_other_section( - exit_x, source.y, branch_y, fact.endpoint_section_ids - ) - for fact in facts - ): - return None - return ExitSharedOpening( - tuple(scaffold.member_id_by_edge[edge] for edge in member_edges), - ( - (source.x, source.y), - (exit_x, source.y), - (exit_x, branch_y), - ), - ) - - def _build_group_plan( graph: MetroGraph, ctx: _RoutingCtx, @@ -2679,12 +2476,7 @@ def _build_group_plan( reason = "family-changed-after-lane-compaction" else: seeds = final_classification.seeds - shared_opening_reason = "unsupported-subshape:left-exit-right-entry-step" - shared_opening = ( - _shared_left_exit_opening(graph, ctx, scaffold, outbound_edges) - if reason in {None, shared_opening_reason} - else None - ) + shared_opening = None axis_plan = _AxisPlan((), MappingProxyType({}), ctx.curve_radius, None) if reason is None and shared_opening is None: assert run_direction is not None diff --git a/src/nf_metro/layout/routing/member_geometry.py b/src/nf_metro/layout/routing/member_geometry.py index 289470d8b..db1014f61 100644 --- a/src/nf_metro/layout/routing/member_geometry.py +++ b/src/nf_metro/layout/routing/member_geometry.py @@ -6,8 +6,9 @@ from collections import defaultdict from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence from dataclasses import dataclass, field, replace +from math import isclose from types import MappingProxyType -from typing import TYPE_CHECKING, TypeVar +from typing import TYPE_CHECKING, NoReturn, TypeVar from nf_metro.layout.constants import ( COORD_TOLERANCE, @@ -31,21 +32,36 @@ RouteSemanticScaffold, RouteSystemId, ) +from nf_metro.layout.route_reservations import ColumnGapRegion, RowGapRegion from nf_metro.layout.routing import normalize from nf_metro.layout.routing.centrelines import route_along from nf_metro.layout.routing.common import ( Direction, GapSlot, + OffsetRegime, RoutedPath, centre_inter_column_channel, column_gap_edges, - convergence_owns_segment_boundary, gap_lo_for_x, iter_vertical_segments, + member_plan_owns_segment_boundary, + planner_owns_segment, segment_direction, ) -from nf_metro.layout.routing.context import SettledExitTurn, _RoutingCtx +from nf_metro.layout.routing.context import ( + SettledExitTurn, + _RoutingCtx, +) from nf_metro.layout.routing.corners import concentric_corner_radius_at +from nf_metro.layout.routing.corridor_cohort_integration import ( + CorridorCohortAllocation, + CorridorCohortCompilationError, + CorridorCohortLedger, + CorridorCohortPlan, + CorridorCohortTarget, + CorridorScalarRequest, + compile_corridor_cohort_plan, +) from nf_metro.layout.routing.families import BYPASS_ROUTE_FAMILIES, RouteFamilyId from nf_metro.layout.routing.inter_section_handlers import ( _build_inter_facts, @@ -77,13 +93,19 @@ _VChannel, ) from nf_metro.layout.routing.orientation import direction_axis, lateral_order_sign +from nf_metro.layout.routing.perp import entry_port_crossing_coord from nf_metro.layout.routing.reserved_bands import ( ReservedBand, bundle_travel, corridor_clearance_band, resolved_band, ) -from nf_metro.parser.model import Edge, MetroGraph +from nf_metro.layout.settlement_demand import ( + BoundaryClearanceRequirement, + BoundaryClearanceRequirementKind, + SettlementAxis, +) +from nf_metro.parser.model import Edge, MetroGraph, PortSide, Section from nf_metro.parser.route_topology import ( ConnectorId, EndpointGroupId, @@ -176,6 +198,8 @@ class MemberGeometryExecution: default_factory=lambda: MappingProxyType({}) ) reconciled_member_ids: frozenset[EmissionMemberId] = frozenset() + corridor_cohorts: CorridorCohortPlan | None = None + clearance_requirements: tuple[BoundaryClearanceRequirement, ...] = () def plan_for_edge( self, edge: Edge | ResolvedEdge @@ -203,266 +227,509 @@ def empty_member_geometry_execution() -> MemberGeometryExecution: return MemberGeometryExecution((), MappingProxyType({}), MappingProxyType({})) -def settle_shared_opening_trunk_conflicts( - execution: MemberGeometryExecution, - convergence_plans: Sequence[ConvergencePlan], - graph: MetroGraph, +def _corridor_cohort_target( + candidate: _MemberCandidate, + scaffold: RouteSemanticScaffold, + ctx: _RoutingCtx, *, - curve_radius: float, -) -> MemberGeometryExecution: - """Move a member flank clear of a settled shared-opening trunk endpoint.""" - convergence_member_ids = frozenset( - member_id for plan in convergence_plans for member_id in plan.member_ids - ) - fixed_claims = tuple( - ( - plan, - channel, - plan.points[channel.segment_rank - 1], - plan.points[channel.segment_rank], - ) - for plan in execution.plans - if plan.exit_shared_opening_points and plan.trunk_slot is not None - for channel in plan.gap_channels - if channel.segment_rank == len(plan.exit_shared_opening_points) - and channel.segment_rank > 0 - and abs( - plan.points[channel.segment_rank - 1][1] - - plan.points[channel.segment_rank][1] - ) - <= COORD_TOLERANCE - ) - from nf_metro.layout.routing import convergences - - lookup = convergences.gap_lookup_geometry(graph) - convergence_channels = tuple( - channel - for convergence in convergence_plans - if convergence.owns_geometry - for channel in convergences._plan_gap_channels(convergence, graph, lookup) + mutable: bool, +) -> CorridorCohortTarget: + route = candidate.route + resolved = ResolvedEdge(route.edge.source, route.edge.target, route.line_id) + port = ctx.graph.ports.get(resolved.target) + station = ctx.graph.stations.get(resolved.target) + endpoint_lane_axis: int | None = None + endpoint_lane_coordinate: float | None = None + if port is not None and port.is_entry and station is not None: + endpoint_lane_axis = int(port.side in (PortSide.LEFT, PortSide.RIGHT)) + endpoint_lane_coordinate = entry_port_crossing_coord(ctx, port, route.line_id) + if route.offset_regime is OffsetRegime.DEFERRED and endpoint_lane_axis == 1: + endpoint_lane_coordinate -= (ctx.station_offsets or {}).get( + (resolved.target, route.line_id), + 0.0, + ) + network_ids = { + str(scaffold.query.connector(connector_id).network_id) + for connector_id in candidate.connector_ids + } + return CorridorCohortTarget( + str(scaffold.member_id_by_edge[resolved]), + str(_member_geometry_plan_id(scaffold, candidate)), + (resolved.source, resolved.target, resolved.line_id), + candidate.family_id, + candidate.connector_ids, + route, + mutable, + endpoint_lane_axis, + endpoint_lane_coordinate, + next(iter(network_ids)) if len(network_ids) == 1 else None, + legal_crossing_segment_ranks=frozenset(route.convergence_owned_segment_ranks), ) - plans: list[RouteMemberGeometryPlan] = [] - changed = False - reconciled_member_ids: set[EmissionMemberId] = set() - for plan in execution.plans: - if ( - plan.member_id in convergence_member_ids - or plan.exit_shared_opening_points - or plan.exit_turn_plan_id is not None - or plan.fan_plan_id is not None - ): - plans.append(plan) - continue - points = list(plan.points) - moved_ranks: set[int] = set() - for channel in plan.gap_channels: - rank = channel.segment_rank - movable_x = points[rank][0] - y_lo, y_hi = sorted((points[rank][1], points[rank + 1][1])) - for fixed_plan, fixed_channel, interior, endpoint in fixed_claims: - if ( - fixed_plan.edge.line_id == plan.edge.line_id - or (fixed_channel.gap_lo_col, fixed_channel.row) - != (channel.gap_lo_col, channel.row) - or fixed_channel.direction is channel.direction - or not y_lo + COORD_TOLERANCE < endpoint[1] < y_hi - COORD_TOLERANCE - ): - continue - interior_delta = interior[0] - endpoint[0] - movable_delta = movable_x - endpoint[0] - clearance = cotravelling_lane_clearance( - same_line=False, - counter_running=True, - curve_radius=curve_radius, - ) - if ( - interior_delta * movable_delta >= 0 - and abs(movable_delta) > abs(interior_delta) + COORD_TOLERANCE - or interior_delta * movable_delta < 0 - and abs(movable_delta) >= clearance - COORD_TOLERANCE_FINE - ): - continue - flank_sign = -1.0 if interior_delta > 0 else 1.0 - candidate_x = endpoint[0] + flank_sign * clearance - obstacles = [ - ( - obstacle.coordinate, - obstacle.y_lo, - obstacle.y_hi, - obstacle.down, - plan.edge.line_id in obstacle.line_ids, - ) - for obstacle in convergence_channels - if obstacle.gap == (channel.gap_lo_col, channel.row) - ] - obstacles.extend( - ( - obstacle.start[0], - min(obstacle.start[1], obstacle.end[1]), - max(obstacle.start[1], obstacle.end[1]), - obstacle.direction is Direction.D, - other.edge.line_id == plan.edge.line_id, - ) - for other in execution.plans - if other.member_id != plan.member_id - for obstacle in other.gap_channels - if (obstacle.gap_lo_col, obstacle.row) - == (channel.gap_lo_col, channel.row) - ) - for ( - obstacle_x, - obstacle_lo, - obstacle_hi, - obstacle_down, - same_line, - ) in sorted(obstacles, key=lambda item: flank_sign * item[0]): - if ( - min(y_hi, obstacle_hi) - max(y_lo, obstacle_lo) - <= MIN_CORRIDOR_Y_OVERLAP - ): - continue - required = cotravelling_lane_clearance( - same_line=same_line, - counter_running=(channel.direction is Direction.D) - is not obstacle_down, - curve_radius=curve_radius, - ) - if abs(candidate_x - obstacle_x) < required - COORD_TOLERANCE_FINE: - candidate_x = obstacle_x + flank_sign * required - before = points[rank - 1] if rank > 0 else None - after = points[rank + 2] if rank + 2 < len(points) else None - if ( - before is None - or after is None - or abs(before[0] - candidate_x) < curve_radius - COORD_TOLERANCE - or abs(after[0] - candidate_x) < curve_radius - COORD_TOLERANCE - ): + +def _corridor_cohort_targets( + candidates: Sequence[_MemberCandidate], + context_candidates: Sequence[_MemberCandidate], + scaffold: RouteSemanticScaffold, + ctx: _RoutingCtx, +) -> tuple[CorridorCohortTarget, ...]: + selected: dict[tuple[str, tuple[str, str, str]], CorridorCohortTarget] = {} + + def add(population: Sequence[_MemberCandidate], *, mutable: bool) -> None: + seen: dict[tuple[str, tuple[str, str, str]], CorridorCohortTarget] = {} + for candidate in population: + target = _corridor_cohort_target( + candidate, + scaffold, + ctx, + mutable=mutable, + ) + key = target.member_id, target.edge_key + existing = seen.get(key) + if existing is not None: + if existing.route is target.route: continue - points[rank] = (candidate_x, points[rank][1]) - points[rank + 1] = (candidate_x, points[rank + 1][1]) - moved_ranks.add(rank) - movable_x = candidate_x - break - terminal_obstacles = [ - ( - obstacle.coordinate, - obstacle.y_lo, - obstacle.y_hi, - obstacle.down, - ) - for obstacle in convergence_channels - if obstacle.gap == (channel.gap_lo_col, channel.row) - and plan.edge.line_id not in obstacle.line_ids - ] - terminal_obstacles.extend( - ( - obstacle.start[0], - min(obstacle.start[1], obstacle.end[1]), - max(obstacle.start[1], obstacle.end[1]), - obstacle.direction is Direction.D, + raise RuntimeError( + "corridor cohort target identity is ambiguous in one population" ) - for other in execution.plans - if other.member_id != plan.member_id - and other.edge.line_id != plan.edge.line_id - for obstacle in other.gap_channels - if (obstacle.gap_lo_col, obstacle.row) - == (channel.gap_lo_col, channel.row) + seen[key] = target + if mutable or key not in selected: + selected[key] = target + + add(candidates, mutable=True) + add(context_candidates, mutable=False) + return tuple(selected.values()) + + +def _corridor_boundary_sections( + graph: MetroGraph, + region: ColumnGapRegion | RowGapRegion, + claim_sections: tuple[Section, ...], + blocker_sections: tuple[Section, ...], + required_shift_sign: int, +) -> tuple[tuple[Section, ...], tuple[Section, ...]]: + if isinstance(region, ColumnGapRegion): + start_attr = "grid_col" + span_attr = "grid_col_span" + cross_start_attr = "grid_row" + cross_span_attr = "grid_row_span" + negative_index = region.left_column + positive_index = region.right_column + axis_name = "column" + else: + start_attr = "grid_row" + span_attr = "grid_row_span" + cross_start_attr = "grid_col" + cross_span_attr = "grid_col_span" + negative_index = region.upper_row + positive_index = region.lower_row + axis_name = "row" + + def start(section: Section) -> int: + return int(getattr(section, start_attr)) + + def span(section: Section) -> int: + return int(getattr(section, span_attr)) + + def cross_start(section: Section) -> int: + return int(getattr(section, cross_start_attr)) + + def cross_span(section: Section) -> int: + return int(getattr(section, cross_span_attr)) + + def overlaps(left: Section, right: Section) -> bool: + return cross_start(left) < cross_start(right) + cross_span( + right + ) and cross_start(right) < cross_start(left) + cross_span(left) + + if required_shift_sign > 0: + negative_sections = claim_sections + if any( + start(section) + span(section) - 1 != negative_index + for section in negative_sections + ): + raise ValueError( + f"clearance target does not face the negative {axis_name} side" ) - relevant = tuple( - ( - obstacle_x, - obstacle_down, - cotravelling_lane_clearance( - same_line=False, - counter_running=(channel.direction is Direction.D) - is not obstacle_down, - curve_radius=curve_radius, - ), - ) - for ( - obstacle_x, - obstacle_lo, - obstacle_hi, - obstacle_down, - ) in terminal_obstacles - if min(y_hi, obstacle_hi) - max(y_lo, obstacle_lo) - > MIN_CORRIDOR_Y_OVERLAP + if any(start(section) < positive_index for section in blocker_sections): + raise ValueError( + f"active blocker is not carried by the positive {axis_name} side" ) - if not any( - abs(movable_x - obstacle_x) < clearance - COORD_TOLERANCE_FINE - for obstacle_x, _obstacle_down, clearance in relevant - ): - continue - gap_left, gap_right = column_gap_edges( + positive_sections = tuple( + section + for section in graph.sections.values() + if start(section) == positive_index + and any(overlaps(section, negative) for negative in negative_sections) + ) + else: + positive_sections = claim_sections + if any(start(section) != positive_index for section in positive_sections): + raise ValueError( + f"clearance target does not face the positive {axis_name} side" + ) + if any( + start(section) + span(section) - 1 > negative_index + for section in blocker_sections + ): + raise ValueError( + f"active blocker is not held by the negative {axis_name} side" + ) + negative_sections = tuple( + section + for section in graph.sections.values() + if start(section) + span(section) - 1 == negative_index + and any(overlaps(section, positive) for positive in positive_sections) + ) + if not negative_sections or not positive_sections: + raise ValueError("clearance boundary has no facing section pair") + return negative_sections, positive_sections + + +def _corridor_cohort_aperture_requirements( + graph: MetroGraph, + scaffold: RouteSemanticScaffold, + ledger: CorridorCohortLedger, + targets: Sequence[CorridorCohortTarget], + scalar_requests: Sequence[CorridorScalarRequest], + error: CorridorCohortCompilationError, +) -> tuple[BoundaryClearanceRequirement, ...]: + claims_by_id = {claim.claim_id: claim for claim in ledger.claims} + scalar_requests_by_id = { + request.variable.variable_id: request for request in scalar_requests + } + targets_by_key = {(target.member_id, target.edge_key): target for target in targets} + requirements: dict[ + tuple[SettlementAxis, int, tuple[str, ...], tuple[str, ...]], + BoundaryClearanceRequirement, + ] = {} + + def refuse(reason: str) -> NoReturn: + raise CorridorCohortCompilationError( + f"{error}; corridor aperture handoff refused: {reason}", + error.failures, + ) from error + + for failure in error.failures: + shortfall = failure.clearance_shortfall + if shortfall is None: + refuse("allocation failure has no typed clearance shortfall") + if shortfall.required_shift_sign not in (-1, 1): + refuse("clearance shortfall has no directed boundary side") + claims = tuple( + claims_by_id[claim_id] + for claim_id in shortfall.claim_ids + if claim_id in claims_by_id + ) + scalar_claims = tuple( + scalar_requests_by_id[claim_id] + for claim_id in shortfall.claim_ids + if claim_id in scalar_requests_by_id + ) + if len(claims) + len(scalar_claims) != len(shortfall.claim_ids): + refuse("clearance shortfall names an unknown claim") + regions = {claim.region for claim in claims} + for request in scalar_claims: + request_region = request.region + if request_region is None: + refuse("clearance claims do not name one corridor region") + regions.add(request_region) + if not shortfall.claim_ids or len(regions) != 1: + refuse("clearance claims do not name one corridor region") + region = next(iter(regions)) + if isinstance(region, ColumnGapRegion): + axis = SettlementAxis.COLUMN + boundary = region.right_column + expected_axis = 0 + elif isinstance(region, RowGapRegion): + axis = SettlementAxis.ROW + boundary = region.lower_row + expected_axis = 1 + else: + refuse("clearance claim is not on an adjacent grid boundary") + if shortfall.axis != expected_axis: + refuse("solver axis and corridor boundary disagree") + + claim_target_section_ids = { + scaffold.query.connector(connector_id).target_section + for connector_ids in ( + *(claim.connector_ids for claim in claims), + *(request.variable.connector_ids for request in scalar_claims), + ) + for connector_id in connector_ids + } + if not claim_target_section_ids: + refuse("clearance claim has no authored target section") + claim_sections = tuple( + graph.sections[section_id] + for section_id in sorted(claim_target_section_ids) + ) + typed_obstacles = { + item.obstacle_id: item for item in failure.blocking_obstacles + } + if set(typed_obstacles) != set(shortfall.blocking_obstacle_ids): + refuse("active blockers lack exact typed provenance") + blocker_source_sections: set[str] = set() + for obstacle in typed_obstacles.values(): + target = targets_by_key.get((obstacle.member_id, obstacle.edge_key)) + if target is None or target.connector_ids != obstacle.connector_ids: + refuse("active blocker does not match its current route target") + blocker_source_sections.update( + scaffold.query.connector(connector_id).source_section + for connector_id in obstacle.connector_ids + ) + if not blocker_source_sections: + refuse("active blocker has no authored source section") + blocker_sections = tuple( + graph.sections[section_id] for section_id in sorted(blocker_source_sections) + ) + try: + negative_sections, positive_sections = _corridor_boundary_sections( graph, - channel.gap_lo_col, - channel.gap_lo_col + 1, - row=channel.row, + region, + claim_sections, + blocker_sections, + shortfall.required_shift_sign, ) - candidates = sorted( - { - obstacle_x + sign * clearance - for obstacle_x, _obstacle_down, clearance in relevant - for sign in (-1.0, 1.0) - }, - key=lambda candidate: (abs(candidate - movable_x), candidate), + except ValueError as mapping_error: + refuse(str(mapping_error)) + if isinstance(region, ColumnGapRegion): + negative_edge = max( + section.bbox_x + section.bbox_w for section in negative_sections ) - before = points[rank - 1] if rank > 0 else None - after = points[rank + 2] if rank + 2 < len(points) else None - settled_x = next( - ( - candidate - for candidate in candidates - if gap_left + EDGE_TO_BUNDLE_CLEARANCE - COORD_TOLERANCE - <= candidate - <= gap_right - EDGE_TO_BUNDLE_CLEARANCE + COORD_TOLERANCE - and before is not None - and after is not None - and abs(before[0] - candidate) >= curve_radius - COORD_TOLERANCE - and abs(after[0] - candidate) >= curve_radius - COORD_TOLERANCE - and all( - abs(candidate - obstacle_x) >= clearance - COORD_TOLERANCE_FINE - for obstacle_x, _obstacle_down, clearance in relevant - ) - ), - None, + positive_edge = min(section.bbox_x for section in positive_sections) + else: + negative_edge = max( + section.bbox_y + section.bbox_h for section in negative_sections ) - if settled_x is None: - continue - points[rank] = (settled_x, points[rank][1]) - points[rank + 1] = (settled_x, points[rank + 1][1]) - moved_ranks.add(rank) - if not moved_ranks: - plans.append(plan) + positive_edge = min(section.bbox_y for section in positive_sections) + negative_ids = tuple(sorted(section.id for section in negative_sections)) + positive_ids = tuple(sorted(section.id for section in positive_sections)) + required = max(0.0, positive_edge - negative_edge) + shortfall.deficit + requirement = BoundaryClearanceRequirement( + axis, + boundary, + f"{failure.component_id}|result:{failure.result_rank}", + required, + negative_ids, + positive_ids, + f"corridor cohort aperture at {axis.value} boundary {boundary}", + BoundaryClearanceRequirementKind.CORRIDOR_COHORT_APERTURE, + ) + key = axis, boundary, negative_ids, positive_ids + held = requirements.get(key) + if held is None or requirement.required > held.required: + requirements[key] = requirement + if not requirements: + refuse("allocation failure produced no boundary requirement") + return tuple( + requirements[key] + for key in sorted( + requirements, + key=lambda item: (item[0].value, item[1], item[2], item[3]), + ) + ) + + +def _compile_corridor_cohorts( + ledger: CorridorCohortLedger | None, + candidates: Sequence[_MemberCandidate], + context_candidates: Sequence[_MemberCandidate], + scaffold: RouteSemanticScaffold, + ctx: _RoutingCtx, + *, + allow_clearance_requirements: bool, + additional_targets: Sequence[CorridorCohortTarget] = (), + scalar_requests: Sequence[CorridorScalarRequest] = (), +) -> tuple[ + CorridorCohortPlan | None, + dict[ResolvedEdge, tuple[int, ...]], + tuple[BoundaryClearanceRequirement, ...], +]: + if ledger is None: + return None, {}, () + member_targets = _corridor_cohort_targets( + candidates, + context_candidates, + scaffold, + ctx, + ) + targets = (*member_targets, *additional_targets) + try: + cohort_plan = compile_corridor_cohort_plan( + ledger, + targets, + scalar_requests=scalar_requests, + ) + except CorridorCohortCompilationError as error: + if not allow_clearance_requirements: + raise + return ( + None, + {}, + _corridor_cohort_aperture_requirements( + ctx.graph, + scaffold, + ledger, + targets, + scalar_requests, + error, + ), + ) + targets_by_key = {(target.member_id, target.edge_key): target for target in targets} + ranks_by_edge: defaultdict[ResolvedEdge, list[int]] = defaultdict(list) + for allocation in cohort_plan.allocations: + target = targets_by_key.get((allocation.member_id, allocation.edge_key)) + if target is None or not target.mutable: + raise RuntimeError( + "corridor cohort allocation has no mutable current target" + ) + edge = ResolvedEdge(*allocation.edge_key) + ranks_by_edge[edge].append(allocation.segment_rank) + for landing in cohort_plan.landings: + target = targets_by_key.get((landing.member_id, landing.edge_key)) + if target is None or not target.mutable: + raise RuntimeError("corridor cohort landing has no mutable current target") + ranks_by_edge[ResolvedEdge(*landing.edge_key)].append(landing.segment_rank) + return ( + cohort_plan, + {edge: tuple(sorted(set(ranks))) for edge, ranks in ranks_by_edge.items()}, + (), + ) + + +def _finalize_corridor_cohorts( + execution: MemberGeometryExecution, + ledger: CorridorCohortLedger | None, + ctx: _RoutingCtx, + scaffold: RouteSemanticScaffold, + family_by_edge: Mapping[ResolvedEdge, RouteFamilyId], + convergence_plans: Sequence[ConvergencePlan], + *, + allow_clearance_requirements: bool, + corridor_targets: Sequence[CorridorCohortTarget] = (), + scalar_requests: Sequence[CorridorScalarRequest] = (), +) -> MemberGeometryExecution: + if ledger is None: + return execution + plan_identities = [ + ( + str(plan.member_id), + (plan.edge.source, plan.edge.target, plan.edge.line_id), + ) + for plan in execution.plans + ] + if len(set(plan_identities)) != len(plan_identities): + raise RuntimeError("corridor cohort member plans have ambiguous identities") + + def mutable_candidate(plan: RouteMemberGeometryPlan) -> _MemberCandidate: + route = fresh_member_route( + plan, + ctx.edge_by_key[(plan.edge.source, plan.edge.target, plan.edge.line_id)], + ) + route.route_system_owned_segment_ranks = ( + plan.owned_segment_ranks if plan.owns_complete_path else () + ) + return _MemberCandidate( + route, + plan.family_id, + plan.system_id, + semantic_route_id( + "member-channel-carrier", plan.edge.source, plan.edge.target + ), + plan.connector_ids, + ) + + candidates = tuple(mutable_candidate(plan) for plan in execution.plans) + candidate_edges = {plan.edge for plan in execution.plans} + convergence_edges = { + edge + for plan in convergence_plans + if plan.disposition is ConvergenceDisposition.PLANNED + for edge in plan.resolved_member_edges + if edge not in candidate_edges + } + context_candidates: list[_MemberCandidate] = [] + for edge in scaffold.edge_order: + if edge not in convergence_edges: continue - changed = True - reconciled_member_ids.add(plan.member_id) - plans.append( - replace( - plan, - points=tuple(points), - gap_channels=tuple( - replace( - channel, - start=points[channel.segment_rank], - end=points[channel.segment_rank + 1], - ) - if channel.segment_rank in moved_ranks - else channel - for channel in plan.gap_channels - ), + family_id = family_by_edge.get(edge) + route = _convergence_context_route( + ctx, + (edge.source, edge.target, edge.line_id), + family_id, + ) + if route is None or family_id is None: + continue + context_candidates.append( + _MemberCandidate( + route, + family_id, + scaffold.system_for_edge(edge), + semantic_route_id("member-channel-carrier", edge.source, edge.target), + tuple(scaffold.connector_ids_for_edge(edge)), ) ) - if not changed: + cohort_plan, ranks_by_edge, clearance_requirements = _compile_corridor_cohorts( + ledger, + candidates, + tuple(context_candidates), + scaffold, + ctx, + allow_clearance_requirements=allow_clearance_requirements, + additional_targets=corridor_targets, + scalar_requests=scalar_requests, + ) + if clearance_requirements: + return replace( + execution, + clearance_requirements=( + execution.clearance_requirements + clearance_requirements + ), + ) + if cohort_plan is None: return execution - frozen_plans = tuple(plans) + routes_by_edge = { + ResolvedEdge( + candidate.route.edge.source, + candidate.route.edge.target, + candidate.route.line_id, + ): candidate.route + for candidate in candidates + } + + def finalized_plan(plan: RouteMemberGeometryPlan) -> RouteMemberGeometryPlan: + route = routes_by_edge[plan.edge] + curve_radii = None if route.curve_radii is None else tuple(route.curve_radii) + return replace( + plan, + points=tuple(route.points), + curve_radii=curve_radii, + gap_channels=tuple( + replace( + channel, + start=route.points[channel.segment_rank], + end=route.points[channel.segment_rank + 1], + ) + for channel in plan.gap_channels + ), + concentric_corner_offsets_by_segment=tuple( + sorted(route.concentric_corner_offsets_by_segment.items()) + ), + concentric_corner_bases_by_segment=tuple( + sorted(route.concentric_corner_bases_by_segment.items()) + ), + corridor_cohort_owned_segment_ranks=ranks_by_edge.get(plan.edge, ()), + ) + + plans = tuple(finalized_plan(plan) for plan in execution.plans) return MemberGeometryExecution( - frozen_plans, + plans, execution.failure_reasons, - MappingProxyType({plan.edge: plan for plan in frozen_plans}), + MappingProxyType({plan.edge: plan for plan in plans}), execution.settled_exit_turns, - execution.reconciled_member_ids | reconciled_member_ids, + execution.reconciled_member_ids, + cohort_plan, + execution.clearance_requirements, ) @@ -1100,6 +1367,21 @@ def _complete_concentric_corner_description( return offsets, bases +def _member_geometry_plan_id( + scaffold: RouteSemanticScaffold, candidate: _MemberCandidate +) -> RouteMemberGeometryPlanId: + route = candidate.route + resolved = ResolvedEdge(route.edge.source, route.edge.target, route.line_id) + return RouteMemberGeometryPlanId( + semantic_route_id( + "route-member-geometry", + candidate.system_id, + scaffold.member_id_by_edge[resolved], + candidate.family_id.value, + ) + ) + + def _freeze_plan( scaffold: RouteSemanticScaffold, candidate: _MemberCandidate, @@ -1107,6 +1389,7 @@ def _freeze_plan( reservation_ids_by_member: Mapping[EmissionMemberId, tuple[str, ...]], *, owns_complete_path: bool = False, + corridor_cohort_owned_segment_ranks: tuple[int, ...] = (), ) -> RouteMemberGeometryPlan: route = candidate.route family_id = candidate.family_id @@ -1144,11 +1427,7 @@ def _freeze_plan( ) if claim not in channel_claims: channels.append(shared_opening_tail) - plan_id = RouteMemberGeometryPlanId( - semantic_route_id( - "route-member-geometry", system_id, member_id, family_id.value - ) - ) + plan_id = _member_geometry_plan_id(scaffold, candidate) corner_offsets, corner_bases = _complete_concentric_corner_description(route) return RouteMemberGeometryPlan( plan_id, @@ -1180,6 +1459,7 @@ def _freeze_plan( getattr(route, "exit_shared_opening_points", ()) ), consumed_reservation_ids=reservation_ids_by_member.get(member_id, ()), + corridor_cohort_owned_segment_ranks=corridor_cohort_owned_segment_ranks, owns_complete_path=owns_complete_path, ) @@ -1276,24 +1556,6 @@ def _index_materialized_channels( ) -def _planner_owns_channel( - route: RoutedPath, - segment_rank: int, - movable_exit_plan_ids: frozenset[ExitTurnPlanId] = frozenset(), -) -> bool: - if route.exit_lane_transition_plan_id is not None: - return True - if route.fan_plan_id is not None or route.fan_route_emitter is not None: - return True - if convergence_owns_segment_boundary(route, segment_rank): - return True - return ( - route.exit_turn_segment_rank is not None - and route.exit_turn_plan_id not in movable_exit_plan_ids - and abs(route.exit_turn_segment_rank - segment_rank) <= 1 - ) - - def _channel_bounds(item: _MaterializedChannel, ctx: _RoutingCtx) -> _ChannelBounds: route = item.candidate.route left, right = column_gap_edges( @@ -1445,8 +1707,10 @@ def _align_packed_cell_handoffs( carrier_channels, key=lambda item: abs(item.channel.x - descent_x), ) - if _planner_owns_channel( - route, handoff_channel.channel.idx, movable_exit_plan_ids + if planner_owns_segment( + route, + handoff_channel.channel.idx, + relinquished_exit_turn_plan_ids=movable_exit_plan_ids, ): if not ctx.validate_final_route_frames: continue @@ -1496,8 +1760,10 @@ def _align_same_line_channels( for item in materialized: route = item.candidate.route channel = item.channel - if item.key in seated or _planner_owns_channel( - route, channel.idx, movable_exit_plan_ids + if item.key in seated or planner_owns_segment( + route, + channel.idx, + relinquished_exit_turn_plan_ids=movable_exit_plan_ids, ): continue matching = tuple( @@ -1760,8 +2026,10 @@ def _channel_bundles( ] = defaultdict(list) seen: set[tuple[RouteSystemId, ResolvedEdge, int]] = set() for item in materialized: - if item.key in seen or _planner_owns_channel( - item.candidate.route, item.channel.idx, movable_exit_plan_ids + if item.key in seen or planner_owns_segment( + item.candidate.route, + item.channel.idx, + relinquished_exit_turn_plan_ids=movable_exit_plan_ids, ): continue seen.add(item.key) @@ -1856,8 +2124,10 @@ def _allocate_member_gap_channels( *( _claim_for_materialized_channel(item) for item in materialized - if _planner_owns_channel( - item.candidate.route, item.channel.idx, movable_exit_plan_ids + if planner_owns_segment( + item.candidate.route, + item.channel.idx, + relinquished_exit_turn_plan_ids=movable_exit_plan_ids, ) ), ] @@ -1910,6 +2180,8 @@ def _seat_claimed_segments_before_freeze( continue if rank < len(route.exit_shared_opening_points): continue + if member_plan_owns_segment_boundary(route, rank): + continue if route.exit_lane_transition_plan_id is not None or ( route.exit_turn_segment_rank is not None and abs(route.exit_turn_segment_rank - rank) <= 1 @@ -2430,12 +2702,49 @@ def validate_member_geometry_emission( routes: list[RoutedPath], execution: MemberGeometryExecution ) -> None: """Require every emitted member to retain its owned channel geometry.""" + cohort_allocations: defaultdict[str, list[CorridorCohortAllocation]] = defaultdict( + list + ) + if execution.corridor_cohorts is not None: + for allocation in execution.corridor_cohorts.allocations: + cohort_allocations[allocation.member_geometry_plan_id].append(allocation) for route in routes: plan = execution.plan_for_edge(route.edge) if plan is None: continue if tuple(route.route_system_owned_segment_ranks) != plan.owned_segment_ranks: raise RuntimeError(f"member geometry plan {plan.id} lost channel ownership") + for rank in plan.corridor_cohort_owned_segment_ranks: + actual = tuple(route.points[rank : rank + 2]) + expected = tuple(plan.points[rank : rank + 2]) + if actual != expected: + raise RuntimeError( + f"member geometry plan {plan.id} changed corridor cohort segment" + ) + for allocation in cohort_allocations[str(plan.id)]: + if allocation.edge_key != ( + plan.edge.source, + plan.edge.target, + plan.edge.line_id, + ): + raise RuntimeError( + f"member geometry plan {plan.id} changed corridor cohort identity" + ) + start, end = plan.points[ + allocation.segment_rank : allocation.segment_rank + 2 + ] + if not all( + isclose( + point[allocation.axis], + allocation.coordinate, + abs_tol=COORD_TOLERANCE, + ) + for point in (start, end) + ): + raise RuntimeError( + f"member geometry plan {plan.id} changed planned corridor " + "coordinate" + ) for channel in plan.gap_channels: actual = tuple( route.points[channel.segment_rank : channel.segment_rank + 2] diff --git a/src/nf_metro/layout/routing/normalize.py b/src/nf_metro/layout/routing/normalize.py index 8a0d203e6..10bae580c 100644 --- a/src/nf_metro/layout/routing/normalize.py +++ b/src/nf_metro/layout/routing/normalize.py @@ -4659,6 +4659,7 @@ def _separate_fused_cotravelling_runs( eligible_route_ids is None or all(id(run.route) in eligible_route_ids for run in lane.runs) ) + and not lane.pinned and not any((id(run.route), run.idx) in fixed_segment_keys for run in lane.runs) } pending = deque(i for i in _reseating_order(lanes) if i in movable_lane_ids) diff --git a/src/nf_metro/layout/routing/perp.py b/src/nf_metro/layout/routing/perp.py index e20072a5f..44de3440a 100644 --- a/src/nf_metro/layout/routing/perp.py +++ b/src/nf_metro/layout/routing/perp.py @@ -41,9 +41,11 @@ _max_offset_at, _perpendicular_port_lane_offset, _RoutingCtx, + port_lane_coord, ) from nf_metro.layout.routing.corners import reversed_offset from nf_metro.parser.model import ( + Port, PortSide, ) @@ -152,6 +154,41 @@ def _perp_entry_crossing_x( return port_x - max_index * ctx.offset_step +def entry_port_crossing_coord( + ctx: _RoutingCtx, + port: Port, + line_id: str, +) -> float: + """Absolute coordinate where *line_id* crosses an entry-port boundary. + + LEFT/RIGHT ports expose their Y lane through the section lane frame. + TOP/BOTTOM ports use the same perpendicular crossing calculation as the + route builders, including approach fans and feeder bundle-index channels. + The result is in drawable coordinates; callers patching a deferred route + must convert its Y coordinate back to stored-route space. + """ + if not port.is_entry: + raise ValueError(f"port {port.id!r} is not a section entry port") + station = ctx.graph.stations[port.id] + if port.side in (PortSide.LEFT, PortSide.RIGHT): + return port_lane_coord( + ctx.graph, + station, + line_id, + ctx.station_offsets or {}, + ctx.positive_fan, + ) + crossing = _perp_entry_crossing_x(ctx, port.id, line_id, station.x) + if crossing is not None: + return crossing + return station.x + _perpendicular_port_lane_offset( + ctx, + port.id, + line_id, + port.section_id, + ) + + def _aligned_horizontal_drop_entry(ctx: _RoutingCtx, exit_port_id: str) -> str | None: """The TOP/BOTTOM entry port a perp exit drops straight into, if aligned. diff --git a/src/nf_metro/layout/routing/planning.py b/src/nf_metro/layout/routing/planning.py index d02f17be1..4bdfadd34 100644 --- a/src/nf_metro/layout/routing/planning.py +++ b/src/nf_metro/layout/routing/planning.py @@ -11,6 +11,7 @@ EmissionMemberId, ExitTurnPlanId, RouteMemberGeometryPlan, + RoutePlan, RouteSystemDisposition, RouteSystemId, ) @@ -19,7 +20,9 @@ from nf_metro.layout.routing.convergences import ( ConvergencePlanExecution, HandlerGapChannel, + apply_convergence_corridor_grants, build_convergence_plan_execution, + convergence_corridor_requests, empty_convergence_plan_execution, handler_gap_channels, overlaying_lane_obstacles, @@ -28,6 +31,11 @@ settle_global_convergence_execution, settle_preliminary_convergence_execution, ) +from nf_metro.layout.routing.corridor_cohort_integration import ( + CorridorCohortLedger, + CorridorCohortPlan, + build_corridor_cohort_ledger, +) from nf_metro.layout.routing.exit_turns import ExitTurnExecution from nf_metro.layout.routing.families import RouteFamilyId from nf_metro.layout.routing.inter_section_handlers import ( @@ -35,9 +43,9 @@ ) from nf_metro.layout.routing.member_geometry import ( MemberGeometryExecution, + _finalize_corridor_cohorts, build_member_geometry_execution, empty_member_geometry_execution, - settle_shared_opening_trunk_conflicts, ) from nf_metro.layout.routing.system_emission import ( RouteSystemEmissionExecution, @@ -45,6 +53,7 @@ build_route_system_emission_execution, classify_route_system_dispositions, ) +from nf_metro.layout.settlement_demand import BoundaryClearanceRequirementKind from nf_metro.parser.model import MetroGraph from nf_metro.parser.route_topology import ResolvedEdge @@ -65,6 +74,8 @@ class RoutePlanningExecution: reach a different verdict on a plan sitting near a tolerance boundary. Replay reads the verdict from here, which is why it is captured before the published record is narrowed to planned systems.""" + corridor_cohorts: CorridorCohortPlan | None = None + corridor_cohort_ledger: CorridorCohortLedger | None = None def _publish_member_exit_axes( @@ -270,6 +281,7 @@ def _with_settled_exit_turns( from nf_metro.layout.routing.normalize import _reseat_concentric_flanking allocated_by_edge = {plan.edge: plan for plan in allocation.plans} + reconciled_targets = { ctx.merge.entry_port_for.get(plan.edge.target, plan.edge.target) for plan in execution.plans @@ -415,6 +427,8 @@ def _with_settled_exit_turns( MappingProxyType({plan.edge: plan for plan in frozen_plans}), allocation.settled_exit_turns, execution.reconciled_member_ids | allocation.reconciled_member_ids, + execution.corridor_cohorts, + execution.clearance_requirements, ) @@ -437,6 +451,7 @@ def prepare_route_system_planning( include_convergence_resources: bool, reservation_ids_by_member: Mapping[EmissionMemberId, tuple[str, ...]] | None = None, allow_convergence_clearance_requirements: bool = False, + prior_plan: RoutePlan | None = None, ) -> RoutePlanningExecution: """Run the canonical planning phases without emitting production paths. @@ -469,6 +484,28 @@ def prepare_route_system_planning( ), ) + pending_general_clearance = prior_plan is not None and any( + requirement.kind is BoundaryClearanceRequirementKind.GENERAL + for requirement in prior_plan.boundary_clearance_requirements + ) + corridor_cohort_ledger = ( + None + if prior_plan is None or pending_general_clearance + else prior_plan.corridor_cohort_ledger + ) + if ( + prior_plan is not None + and not pending_general_clearance + and corridor_cohort_ledger is None + ): + corridor_cohort_ledger = build_corridor_cohort_ledger( + graph, + scaffold, + prior_plan, + station_offsets=station_offsets or {}, + curve_radius=ctx.curve_radius, + ) + def prepare_member_geometry( exit_turns: ExitTurnExecution, pending_plan_ids: frozenset[ExitTurnPlanId], @@ -562,7 +599,10 @@ def seat_members( ]: if pending_plan_ids: _, _, _, allocation_geometry = prepare_member_geometry( - allocation_exit_turns, pending_plan_ids, frozenset(), lane_obstacles + allocation_exit_turns, + pending_plan_ids, + frozenset(), + lane_obstacles, ) ctx.settled_exit_turns = allocation_geometry.settled_exit_turns _restore_initial_station_offsets( @@ -596,7 +636,10 @@ def seat_members( else: exit_turns = provisional_exit_turns family_by_edge, convergences, planned_ids, members = prepare_member_geometry( - exit_turns, pending_plan_ids, frozenset(), lane_obstacles + exit_turns, + pending_plan_ids, + frozenset(), + lane_obstacles, ) return exit_turns, family_by_edge, convergences, planned_ids, members @@ -613,7 +656,7 @@ def seat_members( lane_obstacles = overlaying_lane_obstacles( convergences.plans, graph, handler_gap_channels(member_geometry, graph) ) - if lane_obstacles: + if lane_obstacles or corridor_cohort_ledger is not None: _restore_initial_station_offsets(ctx, station_offsets, initial_station_offsets) ( exit_turns, @@ -636,12 +679,63 @@ def seat_members( include_resources=False, allow_clearance_requirements=allow_convergence_clearance_requirements, ) - member_geometry = settle_shared_opening_trunk_conflicts( + ctx.convergences = convergences.query + corridor_targets, scalar_requests = ( + convergence_corridor_requests(convergences.plans, graph, ctx) + if corridor_cohort_ledger is not None + else ((), ()) + ) + member_geometry = _finalize_corridor_cohorts( member_geometry, + corridor_cohort_ledger, + ctx, + scaffold, + family_by_edge, convergences.plans, - graph, - curve_radius=ctx.curve_radius, + allow_clearance_requirements=allow_convergence_clearance_requirements, + corridor_targets=corridor_targets, + scalar_requests=scalar_requests, ) + if scalar_requests and not member_geometry.clearance_requirements: + corridor_plan = member_geometry.corridor_cohorts + if corridor_plan is None: + raise RuntimeError( + "corridor cohort compiler omitted eligible convergence requests" + ) + convergences = apply_convergence_corridor_grants( + convergences, + scalar_requests, + corridor_plan.scalar_grants, + ) + ctx.convergences = convergences.query + if ( + corridor_cohort_ledger is not None + and corridor_cohort_ledger.finalized_owned_segments is None + and not member_geometry.clearance_requirements + ): + allocations = ( + () + if member_geometry.corridor_cohorts is None + else member_geometry.corridor_cohorts.allocations + ) + landings = ( + () + if member_geometry.corridor_cohorts is None + else member_geometry.corridor_cohorts.landings + ) + corridor_cohort_ledger = replace( + corridor_cohort_ledger, + finalized_owned_segments=( + frozenset( + (item.member_id, item.edge_key, item.segment_rank) + for item in allocations + ) + | frozenset( + (item.member_id, item.edge_key, item.segment_rank) + for item in landings + ) + ), + ) exit_turns = _publish_member_exit_axes(exit_turns, member_geometry) ctx.exit_turns = exit_turns.query ctx.convergences = convergences.query @@ -685,4 +779,6 @@ def seat_members( route_systems, planned_system_ids, exit_turn_dispositions, + member_geometry.corridor_cohorts, + corridor_cohort_ledger, ) diff --git a/src/nf_metro/layout/routing/reserved_bands.py b/src/nf_metro/layout/routing/reserved_bands.py index e9f4da088..c83f75237 100644 --- a/src/nf_metro/layout/routing/reserved_bands.py +++ b/src/nf_metro/layout/routing/reserved_bands.py @@ -32,6 +32,7 @@ from typing import TYPE_CHECKING, TypeAlias from nf_metro.layout.constants import COORD_TOLERANCE +from nf_metro.parser.model import PortSide if TYPE_CHECKING: from nf_metro.layout.route_plan import RoutePlan @@ -520,6 +521,7 @@ def _claim_views( CorridorOrientation, RouteReservationLane, RowGapRegion, + claim_is_destination_boundary_carrier, project_reservation_coordinate, realise_reservation, ) @@ -534,23 +536,23 @@ def terminal_landing_band( hi: float, ) -> tuple[float, float]: record = geometry_by_member.get(claim.member_id) - if ( - not isinstance(reservation.region, ColumnGapRegion) - or record is None - or claim.segment_end_rank != len(record.points) - 3 + if record is None or not claim_is_destination_boundary_carrier( + graph, + record.edge.target, + reservation.region, ): return lo, hi - target = graph.stations.get(record.edge.target) - if target is None or not target.is_port or target.section_id is None: - return lo, hi - start, end = record.points[claim.segment_end_rank : claim.segment_end_rank + 2] - final_start, final_end = record.points[-2:] - if start[0] != end[0] or final_start[1] != final_end[1]: + port = graph.ports[record.edge.target] + allocation_axis = int(reservation.orientation is CorridorOrientation.HORIZONTAL) + start = record.points[claim.segment_rank] + end = record.points[claim.segment_end_rank + 1] + coordinate = start[allocation_axis] + if abs(coordinate - end[allocation_axis]) > COORD_TOLERANCE: return lo, hi if ( - lo <= start[0] <= hi - or start[0] < lo - COORD_TOLERANCE - or start[0] > hi + COORD_TOLERANCE + lo <= coordinate <= hi + or coordinate < lo - COORD_TOLERANCE + or coordinate > hi + COORD_TOLERANCE ): return lo, hi try: @@ -558,7 +560,7 @@ def terminal_landing_band( reservation, claimant_member_ids=(claim.member_id,), claims=(claim,), - landing_section_ids=(target.section_id,), + landing_section_ids=(port.section_id,), lanes=(RouteReservationLane((0,)),), lane_count=1, bundle_width=0.0, @@ -575,9 +577,14 @@ def terminal_landing_band( return lo, hi if realised is None: return lo, hi + if port.side in (PortSide.RIGHT, PortSide.BOTTOM): + return ( + min(lo, realised.region_start + realised.negative_side_clearance), + max(hi, coordinate), + ) return ( - min(lo, realised.region_start + realised.negative_side_clearance), - max(hi, start[0]), + min(lo, coordinate), + max(hi, realised.region_end - realised.positive_side_clearance), ) spans: dict[ClaimSegmentKey, tuple[float, float]] = {} diff --git a/src/nf_metro/layout/settlement_demand.py b/src/nf_metro/layout/settlement_demand.py index 2c872b453..bfa11275a 100644 --- a/src/nf_metro/layout/settlement_demand.py +++ b/src/nf_metro/layout/settlement_demand.py @@ -23,6 +23,13 @@ class SettlementAxis(Enum): COLUMN = "column" +class BoundaryClearanceRequirementKind(Enum): + """The planner contract that owns a stable boundary requirement.""" + + GENERAL = "general" + CORRIDOR_COHORT_APERTURE = "corridor-cohort-aperture" + + @dataclass(frozen=True, slots=True) class BoundaryClearanceDemand: """Clearance one grid boundary owes between the boxes facing across it. @@ -69,6 +76,7 @@ class BoundaryClearanceRequirement: negative_section_ids: tuple[str, ...] positive_section_ids: tuple[str, ...] description: str + kind: BoundaryClearanceRequirementKind = BoundaryClearanceRequirementKind.GENERAL def __post_init__(self) -> None: if self.boundary < 1: diff --git a/src/nf_metro/render/svg.py b/src/nf_metro/render/svg.py index a679c4b4a..cdb5e5a60 100644 --- a/src/nf_metro/render/svg.py +++ b/src/nf_metro/render/svg.py @@ -31,6 +31,7 @@ graph_offset_step, ) from nf_metro.layout.envelope_settlement import ( + BoundaryClearanceRequirementKind, EnvelopeSettlement, attach_reroute_ledger_delta, attach_settlement_diagnostics, @@ -1110,6 +1111,7 @@ def _plan_decision_fingerprint(plan: RoutePlan) -> tuple[object, ...]: plan.fan_plans, tuple(_convergence_decision(item) for item in plan.convergence_plans), tuple(_member_geometry_decision(item) for item in plan.member_geometry_plans), + plan.corridor_cohort_ledger, plan.bindings, plan.provenance, ) @@ -1142,6 +1144,199 @@ def _assert_settlement_decisions_frozen( ) +def _assert_clearance_grant_transition( + provisional_routes: list[RoutedPath], + provisional_plan: RoutePlan, + realised_routes: list[RoutedPath], + realised_plan: RoutePlan, +) -> None: + """Validate the single provisional-to-final corridor aperture grant.""" + cohort_requirements = tuple( + requirement + for requirement in provisional_plan.boundary_clearance_requirements + if requirement.kind is BoundaryClearanceRequirementKind.CORRIDOR_COHORT_APERTURE + ) + if not cohort_requirements or realised_plan.boundary_clearance_requirements: + raise LayoutInvariantError( + "corridor aperture settlement did not consume its typed requirement" + ) + provisional_ledger = provisional_plan.corridor_cohort_ledger + realised_ledger = realised_plan.corridor_cohort_ledger + if ( + provisional_ledger is None + or realised_ledger is None + or provisional_ledger.finalized_owned_segments is not None + or realised_ledger.finalized_owned_segments is None + or replace(realised_ledger, finalized_owned_segments=None) != provisional_ledger + ): + raise LayoutInvariantError( + "corridor aperture settlement changed its semantic cohort ledger" + ) + final_keys = realised_ledger.finalized_owned_segments + expected_by_member_edge: dict[tuple[str, tuple[str, str, str]], set[int]] = {} + for member_id, edge_key, segment_rank in final_keys: + expected_by_member_edge.setdefault((member_id, edge_key), set()).add( + segment_rank + ) + + if len(provisional_routes) != len(realised_routes): + raise LayoutInvariantError( + "corridor aperture settlement changed the emitted route population" + ) + normalized_routes: list[RoutedPath] = [] + for provisional, realised in zip(provisional_routes, realised_routes, strict=True): + identity = ( + str(realised.emission_member_id), + (realised.edge.source, realised.edge.target, realised.line_id), + ) + expected_owned = tuple( + sorted( + { + *provisional.route_system_owned_segment_ranks, + *expected_by_member_edge.get(identity, ()), + } + ) + ) + if realised.route_system_owned_segment_ranks != expected_owned: + raise LayoutInvariantError( + "corridor aperture settlement published unexpected route ownership" + ) + normalized_routes.append( + replace( + realised, + route_system_owned_segment_ranks=( + provisional.route_system_owned_segment_ranks + ), + ) + ) + if _route_decision_fingerprint(normalized_routes) != _route_decision_fingerprint( + provisional_routes + ): + raise LayoutInvariantError( + "corridor aperture settlement changed route topology or other ownership" + ) + + if len(provisional_plan.member_geometry_plans) != len( + realised_plan.member_geometry_plans + ): + raise LayoutInvariantError( + "corridor aperture settlement changed member-plan population" + ) + normalized_member_plans: list[RouteMemberGeometryPlan] = [] + published_keys: set[tuple[str, tuple[str, str, str], int]] = set() + for provisional_member_plan, realised_member_plan in zip( + provisional_plan.member_geometry_plans, + realised_plan.member_geometry_plans, + strict=True, + ): + edge_key = ( + realised_member_plan.edge.source, + realised_member_plan.edge.target, + realised_member_plan.edge.line_id, + ) + identity = str(realised_member_plan.member_id), edge_key + expected_ranks = tuple(sorted(expected_by_member_edge.get(identity, ()))) + if provisional_member_plan.corridor_cohort_owned_segment_ranks or ( + realised_member_plan.corridor_cohort_owned_segment_ranks != expected_ranks + ): + raise LayoutInvariantError( + "corridor aperture settlement published unexpected member ownership" + ) + published_keys.update( + (identity[0], identity[1], rank) for rank in expected_ranks + ) + normalized_member_plans.append( + replace( + realised_member_plan, + corridor_cohort_owned_segment_ranks=(), + ) + ) + if published_keys != final_keys: + raise LayoutInvariantError( + "corridor aperture settlement did not publish every finalized cohort key" + ) + normalized_plan = replace( + realised_plan, + member_geometry_plans=tuple(normalized_member_plans), + corridor_cohort_ledger=replace( + realised_ledger, + finalized_owned_segments=None, + ), + ) + if _plan_decision_fingerprint(normalized_plan) != _plan_decision_fingerprint( + provisional_plan + ): + raise LayoutInvariantError( + "corridor aperture settlement changed other planning decisions" + ) + + +def _assert_convergence_clearance_grant_transition( + provisional_routes: list[RoutedPath], + provisional_plan: RoutePlan, + realised_routes: list[RoutedPath], + realised_plan: RoutePlan, +) -> None: + """Validate the prerequisite grant from provisional convergence geometry.""" + requirements = tuple( + requirement + for requirement in provisional_plan.boundary_clearance_requirements + if requirement.kind is BoundaryClearanceRequirementKind.GENERAL + ) + if ( + not requirements + or len(requirements) != len(provisional_plan.boundary_clearance_requirements) + or realised_plan.boundary_clearance_requirements + ): + raise LayoutInvariantError( + "convergence settlement did not consume its typed requirements" + ) + if _plan_decision_fingerprint(realised_plan) != _plan_decision_fingerprint( + provisional_plan + ): + raise LayoutInvariantError( + "convergence clearance settlement changed semantic planning decisions" + ) + if len(provisional_routes) != len(realised_routes): + raise LayoutInvariantError( + "convergence clearance settlement changed the emitted route population" + ) + owner_ids = {requirement.owner_id for requirement in requirements} + normalized_routes: list[RoutedPath] = [] + for provisional, realised in zip(provisional_routes, realised_routes, strict=True): + convergence_changed = ( + _route_segment_signature(realised.points) + != _route_segment_signature(provisional.points) + or realised.convergence_owned_segment_ranks + != provisional.convergence_owned_segment_ranks + ) + if convergence_changed and ( + realised.route_system_id not in owner_ids + or realised.convergence_plan_id is None + or realised.convergence_member_id is None + ): + raise LayoutInvariantError( + "convergence clearance settlement changed unrelated route geometry" + ) + normalized_routes.append( + replace( + realised, + points=provisional.points, + convergence_owned_segment_ranks=( + provisional.convergence_owned_segment_ranks + ), + ) + if convergence_changed + else realised + ) + if _route_decision_fingerprint(normalized_routes) != _route_decision_fingerprint( + provisional_routes + ): + raise LayoutInvariantError( + "convergence clearance settlement changed other route decisions" + ) + + def _attach_published_reservation_attribution( routes: list[RoutedPath], plan: RoutePlan ) -> None: @@ -1349,16 +1544,13 @@ def _settle_render_geometry( the reserved band back rather than deriving one from the row edges the translation just moved. - Each settlement consumes frozen demand rather than iterating toward a - fixpoint over successive ledgers. One bounded final grant is permitted for - strict geometry: a fresh observation may publish convergence clearance or - reveal that its drawn corridor overruns a frozen edge, and that measured - demand is settled before one consuming re-route. The plan published here - is the frozen final ledger projected through the translations, and the - closing guard measures that; where the re-routed ledger's gap demand differs, - :func:`attach_reroute_ledger_delta` records the difference as a non-blocking - diagnostic, so a demand this stage cannot chase is named rather than - invisible. + Each planning settlement consumes frozen demand rather than iterating toward + a fixpoint over successive ledgers. General convergence clearance is a + prerequisite for observing corridor-cohort intent. That intent may publish + one typed aperture requirement, whose grant finalizes the same cohort ledger + in the translated coordinate frame. The resulting plan is frozen before + label and header reconciliation, so later geometry passes may project it but + cannot select new lanes or repair routing decisions. Rail-mode sections run a separate layout pipeline whose per-line centrelines are anchored during ``compute_layout`` and cannot be re-derived from a @@ -1477,49 +1669,107 @@ def _reconcile_carried_ports( (:func:`hold_port_anchored_edges`). """ if carried_ports: + frozen_routes = routes + frozen_plan = route_plan station_offsets, routes, route_plan = _resettle( - allow_clearance_requirements=bool( - route_plan.boundary_clearance_requirements - ) + frozen_plan, ) labels = _place(station_offsets, routes) - assert_render_curve_invariants(graph, routes, station_offsets) + _assert_settlement_decisions_frozen( + frozen_routes, + frozen_plan, + routes, + route_plan, + ) return station_offsets, routes, route_plan, labels reanchor_junctions(graph) station_offsets = compute_station_offsets(graph, offset_step=offset_step) - routes, route_plan = _route(station_offsets, allow_clearance_requirements=True) - deferred_final_route_guards = graph._validate_active and bool( - route_plan.boundary_clearance_requirements + routes, discovery_plan = _route( + station_offsets, + allow_clearance_requirements=True, + ) + deferred_final_route_guards = graph._validate_active and ( + graph._final_route_guards_deferred + or bool(discovery_plan.boundary_clearance_requirements) ) applied_settlements: list[EnvelopeSettlement] = [] - if route_plan.boundary_clearance_requirements: - requested_plan = route_plan - preclearance_settlement = settle_route_envelopes( + general_requirements = tuple( + requirement + for requirement in discovery_plan.boundary_clearance_requirements + if requirement.kind is BoundaryClearanceRequirementKind.GENERAL + ) + if len(general_requirements) != len(discovery_plan.boundary_clearance_requirements): + raise LayoutInvariantError( + "discovery planning published a corridor requirement before cohort intent" + ) + if general_requirements: + convergence_settlement = settle_route_envelopes( graph, - requested_plan, + discovery_plan, clearance=lambda live_graph: measure_boundary_clearance_requirements( - live_graph, requested_plan.boundary_clearance_requirements + live_graph, general_requirements ), ) - applied_settlements.append(preclearance_settlement) - station_offsets, routes, route_plan = _resettle() + applied_settlements.append(convergence_settlement) + provisional_routes = routes + station_offsets, routes, route_plan = _resettle( + discovery_plan, + convergence_settlement.coordinate_translations, + ) if route_plan.boundary_clearance_requirements: raise LayoutInvariantError( - "envelope settlement did not satisfy convergence boundary " - "clearance requirements" - ) - corridor_settlement = settle_route_envelopes(graph, route_plan) - applied_settlements.append(corridor_settlement) - if corridor_settlement.translations: - station_offsets, routes, route_plan = _resettle( - route_plan, - corridor_settlement.coordinate_translations, + "convergence clearance grant did not consume its requirements" ) + _assert_convergence_clearance_grant_transition( + provisional_routes, + discovery_plan, + routes, + route_plan, + ) + else: + route_plan = discovery_plan + + station_offsets, routes, route_plan = _resettle( + route_plan, + allow_clearance_requirements=True, + ) + deferred_final_route_guards = deferred_final_route_guards or ( + graph._validate_active and bool(route_plan.boundary_clearance_requirements) + ) + aperture_requirements = tuple( + requirement + for requirement in route_plan.boundary_clearance_requirements + if requirement.kind is BoundaryClearanceRequirementKind.CORRIDOR_COHORT_APERTURE + ) + if len(aperture_requirements) != len(route_plan.boundary_clearance_requirements): + raise LayoutInvariantError( + "cohort planning republished a convergence clearance requirement" + ) + if aperture_requirements: + provisional_routes = routes + provisional_plan = route_plan + cohort_settlement = settle_route_envelopes( + graph, + provisional_plan, + clearance=lambda live_graph: measure_boundary_clearance_requirements( + live_graph, aperture_requirements + ), + ) + applied_settlements.append(cohort_settlement) + station_offsets, routes, route_plan = _resettle( + provisional_plan, + cohort_settlement.coordinate_translations, + ) + _assert_clearance_grant_transition( + provisional_routes, + provisional_plan, + routes, + route_plan, + ) effective_strict = (graph.strict or bool(graph._fold_compressed_sections)) and not ( graph.permissive ) - assert_render_curve_invariants(graph, routes, station_offsets) labels = _place(station_offsets, routes) station_offsets, routes, route_plan, labels = _reconcile_carried_ports( @@ -1527,19 +1777,26 @@ def _reconcile_carried_ports( ) _reserve_group_band_space(graph, theme, station_offsets, labels) if render_header_collision(graph) and not graph.has_rail_sections: - station_offsets, routes, route_plan = _resettle( - allow_clearance_requirements=bool( - route_plan.boundary_clearance_requirements - ) + frozen_routes = routes + frozen_plan = route_plan + station_offsets, routes, route_plan = _resettle(frozen_plan) + _assert_settlement_decisions_frozen( + frozen_routes, + frozen_plan, + routes, + route_plan, ) labels = _place(station_offsets, routes) - assert_render_curve_invariants(graph, routes, station_offsets) station_offsets, routes, route_plan, labels = _reconcile_carried_ports( station_offsets, routes, route_plan, labels ) frozen_routes = routes frozen_plan = route_plan + if frozen_plan.boundary_clearance_requirements: + raise LayoutInvariantError( + "canonical planning froze unconsumed boundary clearance requirements" + ) # A rail layout pitches its rows to the interchange idiom rather than to # ``section_y_gap``, and holds runs between them collinear; widening one of @@ -1568,18 +1825,15 @@ def _measure_clearance( frozen_routes, settlement.coordinate_translations, ): - pending_clearance = bool(frozen_plan.boundary_clearance_requirements) station_offsets, routes, routed_plan = _resettle( frozen_plan, settlement.coordinate_translations, ) - if pending_clearance and routed_plan.boundary_clearance_requirements: + if routed_plan.boundary_clearance_requirements: raise LayoutInvariantError( - "envelope settlement did not satisfy convergence boundary " - "clearance requirements" + "settled canonical planning republished a clearance requirement" ) labels = _place(station_offsets, routes) - assert_render_curve_invariants(graph, routes, station_offsets) granted_routes = routes granted_plan = routed_plan granted_polylines = [ @@ -1588,7 +1842,7 @@ def _measure_clearance( containment_requirements = drawn_corridor_clearance_requirements( graph, granted_plan, granted_polylines ) - if pending_clearance or containment_requirements: + if containment_requirements: settlement = settle_route_envelopes( graph, granted_plan, @@ -1601,7 +1855,6 @@ def _measure_clearance( granted_plan, settlement.coordinate_translations ) labels = _place(station_offsets, routes) - assert_render_curve_invariants(graph, routes, station_offsets) _assert_settlement_decisions_frozen( granted_routes, granted_plan, routes, consumed_plan ) @@ -1624,7 +1877,7 @@ def _measure_clearance( # across the very step whose contract is coordinate translation only. # The routed observation exists to draw and to prove the decisions # frozen. - if not pending_clearance and not containment_requirements: + if not containment_requirements: route_plan = attach_reroute_ledger_delta( adopt_route_reservation_ledger( frozen_plan, @@ -1638,14 +1891,10 @@ def _measure_clearance( # frozen pass, which never saw the re-route's own diagnostics; carry # forward the one class that names a decision the re-route was itself # forced to discard (_adopt_prior_dispositions). - adopted_dispositions = ( - () - if pending_clearance - else tuple( - item - for item in routed_plan.diagnostics - if item.code == "exit-turn-disposition-adopted" - ) + adopted_dispositions = tuple( + item + for item in routed_plan.diagnostics + if item.code == "exit-turn-disposition-adopted" ) if adopted_dispositions: route_plan = replace( @@ -1661,6 +1910,7 @@ def _measure_clearance( for applied_settlement in applied_settlements: route_plan = attach_settlement_diagnostics(route_plan, applied_settlement) route_polylines = [apply_route_offsets(route, station_offsets) for route in routes] + assert_render_curve_invariants(graph, routes, station_offsets) assert_reservations_are_settled( graph, route_plan, diff --git a/src/nf_metro/themes/__init__.py b/src/nf_metro/themes/__init__.py index c16ae0c64..3d0657993 100644 --- a/src/nf_metro/themes/__init__.py +++ b/src/nf_metro/themes/__init__.py @@ -7,6 +7,10 @@ both palettes from a single render. """ +from __future__ import annotations + +from typing import TYPE_CHECKING + from nf_metro.render.style import Theme from nf_metro.themes.light import LIGHT_THEME from nf_metro.themes.nfcore import ( @@ -20,6 +24,12 @@ SEQERA_THEME, ) +if TYPE_CHECKING: + from nf_metro.parser.model import MetroGraph + +# ``style: dark`` predates theme names; alias it onto the nfcore brand. +_STYLE_THEME_ALIASES = {"dark": "nfcore"} + # Mode used when a single concrete palette must be baked and none was chosen # (e.g. PNG raster). Applies equally to every brand - no brand is intrinsically # light or dark. SVG output carries both palettes and adapts at view time, so @@ -47,6 +57,31 @@ } +def resolve_theme( + theme: str | None, graph: MetroGraph, mode: str | None = None +) -> Theme: + """Resolve a concrete theme from independent brand and mode axes. + + Brand comes from the explicit ``theme`` name (``--theme``) or the + ``%%metro style:`` directive (``dark`` aliases to ``nfcore``). Mode comes + from the explicit ``mode`` argument (``--mode``), then the ``%%metro mode:`` + directive, then ``DEFAULT_MODE``. No brand carries its own mode: a known + brand always resolves through its light/dark family for the chosen mode. + """ + if theme is not None: + brand = theme + else: + name = graph.style.strip().lower() + brand = _STYLE_THEME_ALIASES.get(name, name) + + resolved_mode = (mode or graph.mode).strip().lower() or DEFAULT_MODE + family = THEME_MODES.get(brand) + if family and resolved_mode in family: + return family[resolved_mode] + + return THEMES.get(brand, THEMES["nfcore"]) + + def mode_pair(theme: Theme) -> tuple[Theme, Theme] | None: """Return ``(light_theme, dark_theme)`` for *theme*'s brand family. @@ -63,6 +98,7 @@ def mode_pair(theme: Theme) -> tuple[Theme, Theme] | None: "THEMES", "THEME_MODES", "DEFAULT_MODE", + "resolve_theme", "mode_pair", "LIGHT_THEME", "NFCORE_THEME", diff --git a/tests/test_cli.py b/tests/test_cli.py index f308ec435..88fb4492f 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,5 +1,6 @@ """Tests for the CLI entry points.""" +import importlib from pathlib import Path import pytest @@ -92,6 +93,26 @@ def test_validate_with_layout_passes_clean_file(): assert "Valid:" in result.output +def test_validate_with_layout_delegates_complete_validation_to_engine( + monkeypatch, +) -> None: + cli_module = importlib.import_module("nf_metro.cli") + + def validated_layout(graph, *, validate) -> None: + assert validate is True + graph._final_route_guards_deferred = True + + def reject_render(*_args, **_kwargs) -> None: + raise AssertionError("the CLI repeated the engine's route validation") + + monkeypatch.setattr(cli_module, "compute_layout", validated_layout) + monkeypatch.setattr("nf_metro.render.svg.build_render_plan", reject_render) + + result = CliRunner().invoke(cli, ["validate", "--with-layout", str(RNASEQ_MMD)]) + + assert result.exit_code == 0, result.output + + def _td_graph(tmp_path: Path) -> Path: """A semantically valid diagram whose non-LR primary direction warns.""" mmd = tmp_path / "td.mmd" diff --git a/tests/test_convergence_corridor_grants.py b/tests/test_convergence_corridor_grants.py new file mode 100644 index 000000000..e87d1af95 --- /dev/null +++ b/tests/test_convergence_corridor_grants.py @@ -0,0 +1,172 @@ +"""Convergence consumes the cohort compiler's complete grant exactly once.""" + +from dataclasses import replace +from pathlib import Path + +import pytest + +from nf_metro.api import prepare_graph +from nf_metro.layout.constants import CURVE_RADIUS, DIAGONAL_RUN, OFFSET_STEP +from nf_metro.layout.routing import convergences +from nf_metro.layout.routing.context import _build_routing_context +from nf_metro.layout.routing.convergences import ( + ConvergenceInvariantError, + ConvergencePlanExecution, + apply_convergence_corridor_grants, + convergence_corridor_requests, +) +from nf_metro.layout.routing.core import observe_route_edges +from nf_metro.layout.routing.corridor_cohort_integration import ( + CorridorScalarGrant, + CorridorScalarOwnerKind, +) +from nf_metro.layout.routing.offsets import compute_station_offsets + +ROOT = Path(__file__).parents[1] + + +def _corridor_fixture(): + path = ROOT / "examples" / "topologies" / "fan_in_merge.mmd" + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + station_offsets = compute_station_offsets(graph) + observation = observe_route_edges(graph, station_offsets=station_offsets) + ctx = _build_routing_context( + graph, + DIAGONAL_RUN, + CURVE_RADIUS, + station_offsets, + ) + plans = observation.plan.convergence_plans + edge_order = tuple(member.edge for member in observation.plan.members) + execution = ConvergencePlanExecution( + plans, + (), + (), + (), + convergences._query(plans, edge_order), + ) + targets, requests = convergence_corridor_requests(plans, graph, ctx) + assert len(requests) >= 2 + return execution, targets, requests + + +def _shifted_grants(requests): + grants = [] + for rank, request in enumerate(requests): + coordinate_delta = OFFSET_STEP * (rank + 1) + grants.append( + CorridorScalarGrant( + variable_id=request.variable.variable_id, + owner_kind=CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + owner_id=request.variable.owner_id, + coordinate=request.variable.coordinate + coordinate_delta, + coordinate_delta=coordinate_delta, + control_recipe=request.control_recipe, + ) + ) + return tuple(grants) + + +def test_convergence_consumes_one_complete_grant_set_atomically() -> None: + execution, _targets, requests = _corridor_fixture() + grants = _shifted_grants(requests) + original_coordinates = { + str(plan.id): plan.trunk_axis.coordinate + for plan in execution.plans + if plan.trunk_axis is not None + } + + granted = apply_convergence_corridor_grants( + execution, + tuple(reversed(requests)), + tuple(reversed(grants)), + ) + + granted_coordinates = { + str(plan.id): plan.trunk_axis.coordinate + for plan in granted.plans + if plan.trunk_axis is not None + } + assert granted_coordinates == {grant.owner_id: grant.coordinate for grant in grants} + assert granted.query.plans == granted.plans + assert { + str(plan.id): plan.trunk_axis.coordinate + for plan in execution.plans + if plan.trunk_axis is not None + } == original_coordinates + + +def test_convergence_refuses_partial_or_extra_grant_sets() -> None: + execution, _targets, requests = _corridor_fixture() + grants = _shifted_grants(requests) + + with pytest.raises( + ConvergenceInvariantError, + match="does not complete its request set", + ): + apply_convergence_corridor_grants(execution, requests, grants[:-1]) + + extra = replace( + grants[0], + variable_id=f"{grants[0].variable_id}|extra", + ) + with pytest.raises( + ConvergenceInvariantError, + match="does not complete its request set", + ): + apply_convergence_corridor_grants( + execution, + requests, + (*grants, extra), + ) + + +def test_convergence_grant_is_not_a_repeatable_repair_pass() -> None: + execution, _targets, requests = _corridor_fixture() + grants = _shifted_grants(requests) + granted = apply_convergence_corridor_grants(execution, requests, grants) + + with pytest.raises( + ConvergenceInvariantError, + match="does not match its source plan", + ): + apply_convergence_corridor_grants(granted, requests, grants) + + +def test_convergence_refuses_a_grant_from_another_geometry_owner() -> None: + execution, _targets, requests = _corridor_fixture() + grants = _shifted_grants(requests) + mismatched = replace( + grants[0], + owner_kind=CorridorScalarOwnerKind.MEMBER_CARRIER, + ) + + with pytest.raises( + ConvergenceInvariantError, + match="wrong semantic owner", + ): + apply_convergence_corridor_grants( + execution, + requests, + (mismatched, *grants[1:]), + ) + + +def test_adapter_exposes_every_planned_trunk_without_replacing_members() -> None: + execution, targets, requests = _corridor_fixture() + eligible = { + str(plan.id): plan + for plan in execution.plans + if plan.owns_geometry and plan.trunk_axis is not None + } + + assert {request.variable.owner_id for request in requests} == set(eligible) + assert len(targets) == len(requests) == len(eligible) + assert len({target.member_id for target in targets}) == len(targets) + for target, request in zip(targets, requests, strict=True): + plan = eligible[request.variable.owner_id] + assert target.mutable + assert target.member_id == request.variable.member_id + assert target.member_id != plan.primary_trunk_member_id + assert request.variable.coordinate == plan.trunk_axis.coordinate + assert request.domain.member_id == request.variable.variable_id diff --git a/tests/test_corridor_cohort_integration.py b/tests/test_corridor_cohort_integration.py new file mode 100644 index 000000000..6e4702de0 --- /dev/null +++ b/tests/test_corridor_cohort_integration.py @@ -0,0 +1,1587 @@ +"""Planning-seam coverage for canonical destination-corridor cohorts.""" + +from __future__ import annotations + +import copy +import inspect +import warnings +from dataclasses import replace +from pathlib import Path +from types import MappingProxyType + +import pytest + +import nf_metro.layout.routing.core as routing_core +import nf_metro.layout.routing.corridor_cohort_integration as cohort_integration +import nf_metro.layout.routing.member_geometry as member_geometry_routing +import nf_metro.layout.routing.planning as routing_planning +import nf_metro.render.svg as render_svg_module +from nf_metro.api import prepare_graph, resolve_theme +from nf_metro.layout.constants import COORD_TOLERANCE, CURVE_RADIUS +from nf_metro.layout.geometry import cotravelling_lane_clearance +from nf_metro.layout.route_reservations import ( + CorridorOrientation, + RouteReservationId, + RouteReservationLane, +) +from nf_metro.layout.routing.common import Direction, right_normal_axis_sign +from nf_metro.layout.routing.context import port_arrival_order, port_lane_coord +from nf_metro.layout.routing.corridor_cohort_integration import ( + CorridorCohortClaimRole, + CorridorCohortCompilationError, + CorridorCohortLedgerClaim, + build_corridor_cohort_ledger, + compile_corridor_cohort_plan, +) +from nf_metro.layout.routing.corridor_cohorts import CorridorAllocationStatus +from nf_metro.layout.routing.member_geometry import ( + fresh_member_route, + validate_member_geometry_emission, +) +from nf_metro.render.plan import freeze_render_value +from nf_metro.render.svg import build_observed_render_plan + +REPO_ROOT = Path(__file__).resolve().parent.parent +SEED77 = REPO_ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_77.mmd" +SEED15 = REPO_ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" +OPPOSING_BYPASS = REPO_ROOT / "examples" / "topologies" / "opposing_bypass_corridor.mmd" + +S9_L1 = ("__junction_39", "s9__entry_right_25", "l1") +S9_L3 = ("__junction_41", "s9__entry_right_25", "l3") +S17_L0 = ("__junction_39", "s17__entry_right_26", "l0") +S17_L3 = ("__junction_43", "s17__entry_right_26", "l3") +S10_L0 = ("__junction_41", "s10__entry_right_29", "l0") +S16_L2 = ("__junction_35", "s16__entry_right_18", "l2") +S16_L1 = ("s15__exit_left_13", "s16__entry_right_18", "l1") +TARGET_KEYS = frozenset((S9_L1, S9_L3, S17_L0, S17_L3)) +SEED15_LANDING = ("__junction_22", "s5__entry_right_16", "l0") +SEED15_FIXED_LEAD = ("__junction_24", "__merge_12", "l2") + + +def _edge_key(plan): + return plan.edge.source, plan.edge.target, plan.edge.line_id + + +def _graph_edge(graph, edge_key): + return next( + edge + for edge in graph.edges + if (edge.source, edge.target, edge.line_id) == edge_key + ) + + +def _capture_settled_seed77( + monkeypatch: pytest.MonkeyPatch, *, capture_compilation: bool | str = False +): + captures = [] + compilation_calls = [] + active_prior_plans = [] + original_route_edges = routing_core._route_edges + original_planning = routing_core.prepare_route_system_planning + original_compile = member_geometry_routing.compile_corridor_cohort_plan + + if capture_compilation: + + def capture_compile(ledger, targets, *, scalar_requests=()): + source_targets = copy.deepcopy(tuple(targets)) + plan = original_compile(ledger, targets, scalar_requests=scalar_requests) + realized_targets = copy.deepcopy(tuple(targets)) + compilation_calls.append((ledger, source_targets, plan, realized_targets)) + return plan + + monkeypatch.setattr( + member_geometry_routing, + "compile_corridor_cohort_plan", + capture_compile, + ) + + def capture_route_call(*args, **kwargs): + active_prior_plans.append(kwargs.get("reservations")) + try: + return original_route_edges(*args, **kwargs) + finally: + active_prior_plans.pop() + + def capture_planning(graph, ctx, **kwargs): + planning = original_planning(graph, ctx, **kwargs) + if active_prior_plans and active_prior_plans[-1] is not None: + captures.append((planning, active_prior_plans[-1], ctx.reserved_bands, ctx)) + return planning + + monkeypatch.setattr(routing_core, "_route_edges", capture_route_call) + monkeypatch.setattr(routing_core, "prepare_route_system_planning", capture_planning) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + graph = prepare_graph(SEED77.read_text(), source_dir=str(SEED77.parent)) + observed = build_observed_render_plan(graph, resolve_theme(None, graph)) + + granting = tuple( + capture + for capture in captures + if capture[0].corridor_cohorts is not None + and capture[0].corridor_cohorts.allocations + ) + assert granting + planning, prior_plan, reserved_corridors, ctx = granting[0] + result = graph, planning, prior_plan, reserved_corridors, ctx + if capture_compilation: + granting_calls = tuple( + call + for call in compilation_calls + if call[0].finalized_owned_segments is None and call[2].allocations + ) + assert granting_calls + if capture_compilation == "all": + return ( + *result, + granting_calls[0][:3], + observed.route_plan, + compilation_calls, + ) + return (*result, granting_calls[0][:3]) + return result + + +def _cohort_plan(graph, planning, prior_plan, reserved_corridors): + del graph, prior_plan, reserved_corridors + plan = planning.corridor_cohorts + assert plan is not None + return plan + + +def _edge_by_member_id(prior_plan): + return { + str(member.id): ( + member.source.station_id, + member.target.station_id, + member.line_id, + ) + for member in prior_plan.members + } + + +def _claim_edge_by_id(prior_plan): + edge_by_member = _edge_by_member_id(prior_plan) + return { + f"{reservation.id}|claim:{claim_rank}": edge_by_member[str(claim.member_id)] + for reservation in prior_plan.reservations + for claim_rank, claim in enumerate(reservation.claims) + } + + +def _target_components(plan, prior_plan): + edge_by_claim = _claim_edge_by_id(prior_plan) + return tuple( + component + for component in plan.components + if TARGET_KEYS + & { + edge_by_claim[claim_id] + for claim_id, _role in component.claim_roles + if claim_id in edge_by_claim + } + ) + + +def _shared_seed77_reservation(prior_plan): + edge_by_member = _edge_by_member_id(prior_plan) + expected = TARGET_KEYS | {S10_L0} + return next( + reservation + for reservation in prior_plan.reservations + if {edge_by_member[str(claim.member_id)] for claim in reservation.claims} + == expected + ) + + +def _without_s10_witness(prior_plan, reserved_corridors): + edge_by_member = _edge_by_member_id(prior_plan) + shared = _shared_seed77_reservation(prior_plan) + kept_ranks = tuple( + rank + for rank, claim in enumerate(shared.claims) + if edge_by_member[str(claim.member_id)] != S10_L0 + ) + old_to_new = {old: new for new, old in enumerate(kept_ranks)} + claims = tuple(shared.claims[rank] for rank in kept_ranks) + lanes = tuple( + RouteReservationLane( + tuple(old_to_new[rank] for rank in lane.claim_indices if rank in old_to_new) + ) + for lane in shared.lanes + if any(rank in old_to_new for rank in lane.claim_indices) + ) + incomplete = replace( + shared, + claimant_member_ids=tuple(claim.member_id for claim in claims), + claims=claims, + lanes=lanes, + lane_count=len(lanes), + ) + prior_plan = replace( + prior_plan, + reservations=tuple( + incomplete if item.id == shared.id else item + for item in prior_plan.reservations + ), + ) + reserved_corridors = replace( + reserved_corridors, + planned_order_coordinates=MappingProxyType( + { + key: value + for key, value in reserved_corridors.planned_order_coordinates.items() + if key != (*S10_L0, 2) + } + ), + ) + return prior_plan, reserved_corridors + + +def _with_ambiguous_shared_reservation(prior_plan): + shared = _shared_seed77_reservation(prior_plan) + s10_member_id = next( + member_id + for member_id, edge in _edge_by_member_id(prior_plan).items() + if edge == S10_L0 + ) + conflicting = replace( + shared, + id=RouteReservationId(f"{shared.id}:ambiguous"), + claims=tuple( + replace(claim, allocation_coordinate=claim.allocation_coordinate + 4.0) + if str(claim.member_id) == s10_member_id + else claim + for claim in shared.claims + ), + ) + return replace( + prior_plan, + reservations=(*prior_plan.reservations, conflicting), + ) + + +def _target_by_identity(targets): + return {(target.member_id, target.edge_key): target for target in targets} + + +def _allocation_key(allocation): + return ( + allocation.member_id, + allocation.edge_key, + allocation.segment_rank, + allocation.axis, + ) + + +def _assert_opposite_direction_allocations_clear(ledger, plan) -> None: + direction_by_claim = {claim.claim_id: claim.direction for claim in ledger.claims} + allocations = plan.allocations + for rank, left in enumerate(allocations): + for right in allocations[rank + 1 :]: + if ( + left.axis != right.axis + or direction_by_claim[left.claim_id] + is direction_by_claim[right.claim_id] + or max(left.longitudinal_start, right.longitudinal_start) + >= min(left.longitudinal_end, right.longitudinal_end) + ): + continue + required = cotravelling_lane_clearance( + same_line=left.edge_key[2] == right.edge_key[2], + counter_running=True, + curve_radius=CURVE_RADIUS, + ) + assert abs(left.coordinate - right.coordinate) >= required + + +def _assert_allocation_segment(plan, allocation) -> None: + start, end = plan.points[allocation.segment_rank : allocation.segment_rank + 2] + assert (start[allocation.axis], end[allocation.axis]) == pytest.approx( + (allocation.coordinate, allocation.coordinate) + ) + assert sorted((start[1 - allocation.axis], end[1 - allocation.axis])) == ( + pytest.approx((allocation.longitudinal_start, allocation.longitudinal_end)) + ) + + +def test_seed77_closes_one_snapshot_into_complete_atomic_components( + monkeypatch: pytest.MonkeyPatch, +) -> None: + ( + graph, + planning, + prior_plan, + reserved_corridors, + _ctx, + (ledger, source_targets, compiled_plan), + _published_plan, + compilation_calls, + ) = _capture_settled_seed77(monkeypatch, capture_compilation="all") + plan = _cohort_plan(graph, planning, prior_plan, reserved_corridors) + + assert compiled_plan is plan + assert planning.member_geometry.corridor_cohorts is plan + assert len(ledger.claims) == 59 + classified_claim_ids = { + claim_id + for component in plan.components + for claim_id, _role in component.claim_roles + } + assert sum(len(component.claim_roles) for component in plan.components) == 44 + assert len(classified_claim_ids) == 44 + assert sum(len(component.problems) for component in plan.components) == 9 + assert len(plan.allocations) == 25 + assert len({allocation.claim_id for allocation in plan.allocations}) == 25 + assert len(plan.protected_segments) == len(set(plan.protected_segments)) + assert all( + component.allocations == () and component.protected_segments == () + for component in plan.components + if component.status is not CorridorAllocationStatus.PLANNED + ) + physical_claim_ids = tuple( + claim_id + for component in plan.components + for problem in component.problems + for claim_id in ( + *(lane.member_id for lane in problem.lanes), + *(obstacle.obstacle_id for obstacle in problem.obstacles), + ) + ) + roles_by_claim_id = { + claim_id: role + for component in plan.components + for claim_id, role in component.claim_roles + } + assert set(physical_claim_ids) == classified_claim_ids + assert set(roles_by_claim_id) == classified_claim_ids + assert all( + len(component.problems) == len(component.results) + for component in plan.components + ) + source_by_identity = _target_by_identity(compilation_calls[0][3]) + for allocation in plan.allocations: + route = source_by_identity[(allocation.member_id, allocation.edge_key)].route + start, end = route.points[allocation.segment_rank : allocation.segment_rank + 2] + longitudinal = sorted((start[1 - allocation.axis], end[1 - allocation.axis])) + assert longitudinal == pytest.approx( + (allocation.longitudinal_start, allocation.longitudinal_end) + ) + + target = { + allocation.edge_key: allocation.coordinate + for allocation in plan.allocations + if allocation.edge_key in TARGET_KEYS + and allocation.segment_rank == 3 + and allocation.axis == 0 + } + assert set(target) == TARGET_KEYS + assert target[S9_L1] > target[S9_L3] + assert target[S17_L0] > target[S17_L3] + assert all( + component.status is CorridorAllocationStatus.PLANNED + for component in _target_components(plan, prior_plan) + ) + + +def test_no_solver_owner_contains_opposite_running_claims( + monkeypatch: pytest.MonkeyPatch, +) -> None: + graph, planning, prior_plan, reserved_corridors, ctx = _capture_settled_seed77( + monkeypatch + ) + plan = _cohort_plan(graph, planning, prior_plan, reserved_corridors) + scaffold = planning.exit_turns.scaffold + assert scaffold is not None + ledger = build_corridor_cohort_ledger( + graph, + scaffold, + prior_plan, + station_offsets=ctx.station_offsets or {}, + ) + direction_by_claim = {claim.claim_id: claim.direction for claim in ledger.claims} + + for component in plan.components: + for problem in component.problems: + directions_by_cohort = {} + for lane in problem.lanes: + directions_by_cohort.setdefault(lane.cohort_id, set()).add( + direction_by_claim[lane.member_id] + ) + assert all( + len(directions) == 1 for directions in directions_by_cohort.values() + ) + + directions_by_equality_owner = {} + for equality in problem.equalities: + directions_by_equality_owner.setdefault( + equality.owner_id, set() + ).update( + ( + direction_by_claim[equality.left_member_id], + direction_by_claim[equality.right_member_id], + ) + ) + assert all( + len(directions) == 1 + for directions in directions_by_equality_owner.values() + ) + + +def test_direction_views_preserve_cross_view_clearance( + monkeypatch: pytest.MonkeyPatch, +) -> None: + graph, planning, prior_plan, reserved_corridors, ctx = _capture_settled_seed77( + monkeypatch + ) + plan = _cohort_plan(graph, planning, prior_plan, reserved_corridors) + scaffold = planning.exit_turns.scaffold + assert scaffold is not None + ledger = build_corridor_cohort_ledger( + graph, + scaffold, + prior_plan, + station_offsets=ctx.station_offsets or {}, + ) + direction_by_claim = {claim.claim_id: claim.direction for claim in ledger.claims} + final_coordinates = { + allocation.claim_id: allocation.coordinate for allocation in plan.allocations + } + opposite_overlaps = {} + for component in plan.components: + for problem in component.problems: + for lane in problem.lanes: + for obstacle in problem.obstacles: + if direction_by_claim[lane.member_id] is direction_by_claim[ + obstacle.obstacle_id + ] or max(lane.span_start, obstacle.span_start) >= min( + lane.span_end, obstacle.span_end + ): + continue + pair = frozenset((lane.member_id, obstacle.obstacle_id)) + opposite_overlaps[pair] = abs( + final_coordinates[lane.member_id] + - final_coordinates.get( + obstacle.obstacle_id, + obstacle.realised_coordinate, + ) + ) + + assert len(final_coordinates) == len(plan.allocations) == 25 + assert opposite_overlaps + assert min(opposite_overlaps.values()) >= 4.0 + assert all( + direction_by_claim[equality.left_member_id] + is direction_by_claim[equality.right_member_id] + for component in plan.components + for problem in component.problems + for equality in problem.equalities + ) + _assert_opposite_direction_allocations_clear(ledger, plan) + + +def test_destination_endpoint_rank_controls_vertical_peel_order( + monkeypatch: pytest.MonkeyPatch, +) -> None: + ( + graph, + _planning, + _prior_plan, + _reserved_corridors, + ctx, + (ledger, _source_targets, plan), + ) = _capture_settled_seed77(monkeypatch, capture_compilation=True) + claims = {claim.claim_id: claim for claim in ledger.claims} + vertical_allocations = { + allocation.edge_key: allocation + for allocation in plan.allocations + if allocation.segment_rank == 3 + and allocation.axis == 0 + and allocation.edge_key in {S16_L2, S16_L1, S9_L1, S9_L3, S17_L0, S17_L3} + } + + assert set(vertical_allocations) == { + S16_L2, + S16_L1, + S9_L1, + S9_L3, + S17_L0, + S17_L3, + } + for port_id, edge_keys, lead_direction in ( + ("s16__entry_right_18", (S16_L2, S16_L1), Direction.L), + ("s9__entry_right_25", (S9_L1, S9_L3), Direction.L), + ("s17__entry_right_26", (S17_L0, S17_L3), Direction.L), + ): + port = graph.stations[port_id] + canonical_order = port_arrival_order( + graph, + port, + ctx.station_offsets, + ) + ordered_edges = sorted( + edge_keys, + key=lambda edge_key: ( + claims[vertical_allocations[edge_key].claim_id].endpoint_network_rank + ), + ) + assert [edge_key[2] for edge_key in ordered_edges] == [ + line_id + for line_id in canonical_order + if line_id in {key[2] for key in edge_keys} + ] + left, right = ordered_edges + port_delta = port_lane_coord( + graph, + port, + right[2], + ctx.station_offsets, + ) - port_lane_coord( + graph, + port, + left[2], + ctx.station_offsets, + ) + carrier_direction = claims[vertical_allocations[left].claim_id].direction + carrier_delta = ( + vertical_allocations[right].coordinate + - vertical_allocations[left].coordinate + ) + turn_sign = right_normal_axis_sign(carrier_direction) / right_normal_axis_sign( + lead_direction + ) + assert port_delta > 0 + assert carrier_delta * turn_sign > 0 + + allocation_claim_ids = {allocation.claim_id for allocation in plan.allocations} + roles = { + claim_id: role + for component in plan.components + for claim_id, role in component.claim_roles + } + destination_edges = { + S16_L2, + S16_L1, + S9_L1, + S9_L3, + S17_L0, + S17_L3, + } + carrier_claims = tuple( + claim + for claim in ledger.claims + if claim.edge_key in destination_edges and claim.destination_boundary_carrier + ) + source_claims = tuple( + claim + for claim in ledger.claims + if claim.edge_key in destination_edges and claim.segment_rank == 1 + ) + assert {(claim.edge_key, claim.segment_rank) for claim in carrier_claims} == { + (edge_key, 3) for edge_key in destination_edges + } + assert source_claims + assert all(not claim.destination_boundary_carrier for claim in source_claims) + assert all(claim.claim_id not in allocation_claim_ids for claim in source_claims) + assert all( + roles[claim.claim_id] is CorridorCohortClaimRole.FIXED + if claim.claim_id in roles + else claim.endpoint_cohort_id is None + for claim in source_claims + ) + + +@pytest.mark.parametrize("evidence", ("missing", "ambiguous")) +def test_incomplete_target_evidence_is_atomic_compatibility_without_ownership( + monkeypatch: pytest.MonkeyPatch, + evidence: str, +) -> None: + ( + graph, + planning, + prior_plan, + reserved_corridors, + ctx, + (_ledger, source_targets, _compiled_plan), + ) = _capture_settled_seed77(monkeypatch, capture_compilation=True) + if evidence == "missing": + prior_plan, reserved_corridors = _without_s10_witness( + prior_plan, reserved_corridors + ) + else: + prior_plan = _with_ambiguous_shared_reservation(prior_plan) + scaffold = planning.exit_turns.scaffold + assert scaffold is not None + + ledger = build_corridor_cohort_ledger( + graph, + scaffold, + prior_plan, + station_offsets=ctx.station_offsets or {}, + ) + plan = compile_corridor_cohort_plan(ledger, copy.deepcopy(source_targets)) + components = _target_components(plan, prior_plan) + + assert components + assert all( + component.status is CorridorAllocationStatus.COMPATIBILITY + for component in components + ) + assert all(component.allocations == () for component in components) + assert all(component.protected_segments == () for component in components) + target_members = { + member_id + for member_id, edge in _edge_by_member_id(prior_plan).items() + if edge in TARGET_KEYS + } + assert not target_members & { + member_id for member_id, _rank in plan.protected_segments + } + + +def test_ownerless_endpoint_cohort_is_explicit_compatibility( + monkeypatch: pytest.MonkeyPatch, +) -> None: + graph, planning, prior_plan, reserved_corridors, _ctx = _capture_settled_seed77( + monkeypatch + ) + plan = _cohort_plan(graph, planning, prior_plan, reserved_corridors) + + ownerless = tuple( + component + for component in plan.components + if component.endpoint_cohort_ids + and not component.claim_roles + and not component.problems + ) + assert ownerless + assert all( + component.status is CorridorAllocationStatus.COMPATIBILITY + and component.allocations == () + and component.protected_segments == () + for component in ownerless + ) + + +def test_finalized_endpoint_landings_use_the_canonical_current_frame( + monkeypatch: pytest.MonkeyPatch, +) -> None: + ( + _graph, + _planning, + _prior_plan, + _reserved_corridors, + _ctx, + (_ledger, _source_targets, _compiled_plan), + published_plan, + compilation_calls, + ) = _capture_settled_seed77(monkeypatch, capture_compilation="all") + published_by_edge = { + _edge_key(plan): plan for plan in published_plan.member_geometry_plans + } + _final_ledger, final_source_targets, final_plan, _realized_targets = ( + compilation_calls[-1] + ) + final_targets = _target_by_identity(final_source_targets) + landing_edges = {landing.edge_key for landing in final_plan.landings} + + assert {edge[1] for edge in landing_edges} >= { + "s9__entry_right_25", + "s16__entry_right_18", + "s19__entry_right_24", + } + assert landing_edges <= set(published_by_edge) + for landing in final_plan.landings: + target = final_targets[(landing.member_id, landing.edge_key)] + assert target.endpoint_lane_axis == landing.axis + assert target.endpoint_lane_coordinate == pytest.approx(landing.coordinate) + plan = published_by_edge[landing.edge_key] + assert plan.points[-1][landing.axis] == pytest.approx(landing.coordinate) + assert plan.points[-2][landing.axis] == pytest.approx(landing.coordinate) + + +def test_fixed_endpoint_landing_is_planned_clear_of_an_unclaimed_fixed_lead( + monkeypatch: pytest.MonkeyPatch, +) -> None: + compilations = [] + original_compile = member_geometry_routing.compile_corridor_cohort_plan + + def capture_compile(ledger, targets, *, scalar_requests=()): + plan = original_compile(ledger, targets, scalar_requests=scalar_requests) + compilations.append((ledger, plan, copy.deepcopy(tuple(targets)))) + return plan + + monkeypatch.setattr( + member_geometry_routing, + "compile_corridor_cohort_plan", + capture_compile, + ) + graph = prepare_graph(SEED15.read_text(), source_dir=str(SEED15.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + observed = build_observed_render_plan(graph, resolve_theme(None, graph)) + + route_plan = observed.route_plan + assert route_plan is not None + fresh_compilations = tuple( + capture + for capture in compilations + if capture[0].finalized_owned_segments is None + ) + assert len(fresh_compilations) == 1 + _ledger, cohort_plan, realized_targets = fresh_compilations[0] + carrier = next( + allocation + for allocation in cohort_plan.allocations + if allocation.edge_key == SEED15_LANDING + and allocation.segment_rank == 3 + and allocation.axis == 0 + ) + landing = next( + item + for item in cohort_plan.landings + if item.edge_key == SEED15_LANDING and item.segment_rank == 4 and item.axis == 1 + ) + published = next( + item + for item in route_plan.member_geometry_plans + if _edge_key(item) == SEED15_LANDING + ) + fixed_target = next( + target for target in realized_targets if target.edge_key == SEED15_FIXED_LEAD + ) + fixed = fixed_target.route + landing_segment = published.points[landing.segment_rank : landing.segment_rank + 2] + fixed_lead = tuple(fixed.points[:2]) + + assert published.points[carrier.segment_rank][carrier.axis] == pytest.approx( + carrier.coordinate + ) + assert published.points[carrier.segment_rank + 1][carrier.axis] == pytest.approx( + carrier.coordinate + ) + assert landing_segment[0][landing.axis] == pytest.approx(landing.coordinate) + assert landing_segment[1][landing.axis] == pytest.approx(landing.coordinate) + assert fixed_lead[0][1] == pytest.approx(fixed_lead[1][1]) + assert landing_segment[0][1] == pytest.approx(landing_segment[1][1]) + assert landing_segment[0][1] == pytest.approx(fixed_lead[0][1]) + landing_span = sorted(point[0] for point in landing_segment) + fixed_span = sorted(point[0] for point in fixed_lead) + assert landing_span[1] + COORD_TOLERANCE <= fixed_span[0] + + +def _capture_seed15_fresh_compilation(monkeypatch: pytest.MonkeyPatch): + captures = [] + original_compile = member_geometry_routing.compile_corridor_cohort_plan + + def capture_compile(ledger, targets, *, scalar_requests=()): + source_targets = copy.deepcopy(tuple(targets)) + plan = original_compile(ledger, targets, scalar_requests=scalar_requests) + if ledger.finalized_owned_segments is None: + captures.append((ledger, source_targets, plan)) + return plan + + monkeypatch.setattr( + member_geometry_routing, + "compile_corridor_cohort_plan", + capture_compile, + ) + monkeypatch.setattr( + render_svg_module, + "assert_render_curve_invariants", + lambda *_args, **_kwargs: None, + ) + monkeypatch.setattr( + render_svg_module, + "assert_render_layout_invariants", + lambda *_args, **_kwargs: None, + ) + monkeypatch.setattr( + render_svg_module, + "assert_reservations_are_settled", + lambda *_args, **_kwargs: None, + ) + graph = prepare_graph(SEED15.read_text(), source_dir=str(SEED15.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + build_observed_render_plan(graph, resolve_theme(None, graph)) + assert len(captures) == 1 + return captures[0] + + +def test_fixed_predecessor_order_witness_orients_the_endpoint_cohort( + monkeypatch: pytest.MonkeyPatch, +) -> None: + ledger, source_targets, _plan = _capture_seed15_fresh_compilation(monkeypatch) + target_source = "s8__exit_left_8" + target_name = "s10__entry_right_19" + + def snapshot(candidate_ledger, candidate_targets): + plan = compile_corridor_cohort_plan(candidate_ledger, candidate_targets) + allocations = tuple( + sorted( + ( + item.edge_key[2], + item.segment_rank, + item.axis, + item.coordinate, + ) + for item in plan.allocations + if item.edge_key[:2] == (target_source, target_name) + ) + ) + landings = tuple( + sorted( + (item.edge_key[2], item.segment_rank, item.axis, item.coordinate) + for item in plan.landings + if item.edge_key[:2] == (target_source, target_name) + ) + ) + return allocations, landings + + variants = ( + snapshot(ledger, copy.deepcopy(source_targets)), + snapshot( + replace(ledger, claims=tuple(reversed(ledger.claims))), + copy.deepcopy(source_targets), + ), + snapshot(ledger, copy.deepcopy(tuple(reversed(source_targets)))), + ) + assert all(candidate == variants[0] for candidate in variants[1:]) + allocations, landings = variants[0] + carrier_y = { + line_id: coordinate + for line_id, segment_rank, axis, coordinate in allocations + if segment_rank == 2 and axis == 1 + } + landing_y = { + line_id: coordinate + for line_id, _segment_rank, axis, coordinate in landings + if axis == 1 + } + targets_by_edge = {target.edge_key: target for target in source_targets} + incoming_x = { + line_id: targets_by_edge[(target_source, target_name, line_id)].route.points[1][ + 0 + ] + for line_id in ("l0", "l1") + } + + assert incoming_x["l0"] > incoming_x["l1"] + assert carrier_y["l0"] > carrier_y["l1"] + assert landing_y["l0"] > landing_y["l1"] + + +def test_conflicting_fixed_predecessor_order_witnesses_fail_closed( + monkeypatch: pytest.MonkeyPatch, +) -> None: + ledger, source_targets, _plan = _capture_seed15_fresh_compilation(monkeypatch) + predecessor_claims = tuple( + claim + for claim in ledger.claims + if claim.edge_key is not None + and claim.edge_key[:2] == ("s8__exit_left_8", "s10__entry_right_19") + and claim.segment_rank == 1 + and claim.endpoint_cohort_id is None + ) + assert {claim.edge_key[2] for claim in predecessor_claims} == {"l0", "l1"} + conflicting_claims = tuple( + replace( + claim, + claim_id=f"{claim.claim_id}|conflicting-witness", + reservation_id="conflicting-fixed-predecessor-order", + reservation_rank=len(ledger.claims), + lane_rank=0 if claim.edge_key[2] == "l0" else 1, + ) + for claim in predecessor_claims + ) + conflicting_ledger = replace( + ledger, + claims=ledger.claims + conflicting_claims, + ) + + with pytest.raises( + CorridorCohortCompilationError, + match="conflicting fixed predecessor order witnesses", + ): + compile_corridor_cohort_plan( + conflicting_ledger, + copy.deepcopy(source_targets), + ) + + +def test_curve_guard_observes_the_mandatory_canonical_replay( + monkeypatch: pytest.MonkeyPatch, +) -> None: + events = [] + top_crossings: dict[str, set[float]] = {} + original_compile = member_geometry_routing.compile_corridor_cohort_plan + original_guard = render_svg_module.assert_render_curve_invariants + + def capture_compile(ledger, targets, *, scalar_requests=()): + for target in targets: + if target.edge_key[1] != "orf_calling__entry_top_9": + continue + assert target.endpoint_lane_axis == 0 + assert target.endpoint_lane_coordinate is not None + top_crossings.setdefault(target.edge_key[2], set()).add( + target.endpoint_lane_coordinate + ) + plan = original_compile(ledger, targets, scalar_requests=scalar_requests) + events.append( + "fresh-compile" + if ledger.finalized_owned_segments is None + else "replay-compile" + ) + return plan + + def capture_guard(graph, routes, station_offsets): + events.append("curve-guard") + return original_guard(graph, routes, station_offsets) + + monkeypatch.setattr( + member_geometry_routing, + "compile_corridor_cohort_plan", + capture_compile, + ) + monkeypatch.setattr( + render_svg_module, + "assert_render_curve_invariants", + capture_guard, + ) + graph = prepare_graph( + OPPOSING_BYPASS.read_text(), source_dir=str(OPPOSING_BYPASS.parent) + ) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + build_observed_render_plan(graph, resolve_theme(None, graph)) + + first_guard = events.index("curve-guard") + assert "fresh-compile" in events[:first_guard] + assert "replay-compile" in events[:first_guard] + assert top_crossings == {"ribo": {692.0}, "rnaseq": {696.0}} + + +def test_aperture_grant_has_one_ordered_planning_transition( + monkeypatch: pytest.MonkeyPatch, +) -> None: + events: list[str] = [] + original_compile = member_geometry_routing.compile_corridor_cohort_plan + original_settle = render_svg_module.settle_route_envelopes + original_transition = render_svg_module._assert_clearance_grant_transition + original_guard = render_svg_module.assert_render_curve_invariants + + def capture_compile(ledger, targets, *, scalar_requests=()): + plan = original_compile(ledger, targets, scalar_requests=scalar_requests) + events.append( + "cohort-intent" + if ledger.finalized_owned_segments is None + else "cohort-final" + ) + return plan + + def capture_settle(graph, plan, *args, **kwargs): + kinds = {item.kind for item in plan.boundary_clearance_requirements} + if render_svg_module.BoundaryClearanceRequirementKind.GENERAL in kinds: + events.append("general-grant") + if ( + render_svg_module.BoundaryClearanceRequirementKind.CORRIDOR_COHORT_APERTURE + in kinds + ): + events.append("aperture-grant") + return original_settle(graph, plan, *args, **kwargs) + + def capture_transition(*args, **kwargs): + original_transition(*args, **kwargs) + events.append("aperture-transition") + + def capture_guard(*args, **kwargs): + original_guard(*args, **kwargs) + events.append("final-curve-guard") + + monkeypatch.setattr( + member_geometry_routing, + "compile_corridor_cohort_plan", + capture_compile, + ) + monkeypatch.setattr(render_svg_module, "settle_route_envelopes", capture_settle) + monkeypatch.setattr( + render_svg_module, + "_assert_clearance_grant_transition", + capture_transition, + ) + monkeypatch.setattr( + render_svg_module, + "assert_render_curve_invariants", + capture_guard, + ) + + graph = prepare_graph(SEED77.read_text(), source_dir=str(SEED77.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + build_observed_render_plan(graph, resolve_theme(None, graph)) + + assert events.count("general-grant") <= 1 + assert events.count("aperture-grant") == 1 + assert events.count("aperture-transition") == 1 + assert events.count("final-curve-guard") == 1 + intent = events.index("cohort-intent") + grant = events.index("aperture-grant") + final = events.index("cohort-final", grant) + transition = events.index("aperture-transition") + guard = events.index("final-curve-guard") + assert intent < grant < final < transition < guard + assert "cohort-intent" not in events[transition + 1 :] + + +def test_canonical_cohort_render_is_geometry_idempotent() -> None: + def geometry(graph): + return { + **{ + f"section:{key}": ( + section.bbox_x, + section.bbox_y, + section.bbox_w, + section.bbox_h, + ) + for key, section in graph.sections.items() + }, + **{ + f"station:{key}": (station.x, station.y) + for key, station in graph.stations.items() + }, + **{f"port:{key}": (port.x, port.y) for key, port in graph.ports.items()}, + } + + graph = prepare_graph(SEED77.read_text(), source_dir=str(SEED77.parent)) + theme = resolve_theme(None, graph) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + once = render_svg_module._settled_render_graph(graph, theme) + twice = render_svg_module._settled_render_graph(once, theme) + + assert geometry(twice) == geometry(once) + + +@pytest.mark.parametrize("mismatch", ("missing", "identity", "geometry")) +def test_compilation_is_typed_exact_and_rejects_the_whole_plan_atomically( + monkeypatch: pytest.MonkeyPatch, + mismatch: str, +) -> None: + ( + _graph, + _planning, + _prior_plan, + _reserved_corridors, + _ctx, + (ledger, source_targets, _compiled_plan), + ) = _capture_settled_seed77(monkeypatch, capture_compilation=True) + targets = copy.deepcopy(source_targets) + plan = compile_corridor_cohort_plan(ledger, targets) + + routes_by_identity = { + (target.member_id, target.edge_key): target.route for target in targets + } + for allocation in plan.allocations: + route = routes_by_identity[(allocation.member_id, allocation.edge_key)] + assert route.points[allocation.segment_rank][allocation.axis] == ( + allocation.coordinate + ) + assert route.points[allocation.segment_rank + 1][allocation.axis] == ( + allocation.coordinate + ) + assert allocation.segment_rank in route.route_system_owned_segment_ranks + + rejected_targets = list(copy.deepcopy(source_targets)) + claim = next( + item for item in ledger.claims if item.claim_id == plan.allocations[0].claim_id + ) + target_rank = next( + rank + for rank, target in enumerate(rejected_targets) + if target.member_id == claim.member_id and target.edge_key == claim.edge_key + ) + if mismatch == "missing": + del rejected_targets[target_rank] + elif mismatch == "identity": + target = rejected_targets[target_rank] + rejected_targets[target_rank] = replace( + target, + member_geometry_plan_id=f"{target.member_geometry_plan_id}:wrong", + ) + else: + target = rejected_targets[target_rank] + axis = int(claim.orientation is CorridorOrientation.HORIZONTAL) + longitudinal_axis = 1 - axis + start = target.route.points[claim.segment_rank] + end = list(target.route.points[claim.segment_rank + 1]) + end[longitudinal_axis] = start[longitudinal_axis] + target.route.points[claim.segment_rank + 1] = end[0], end[1] + before = freeze_render_value(tuple(target.route for target in rejected_targets)) + + with pytest.raises(CorridorCohortCompilationError): + compile_corridor_cohort_plan(ledger, rejected_targets) + + assert freeze_render_value(tuple(target.route for target in rejected_targets)) == ( + before + ) + + +def test_coordinate_free_ledger_compiles_against_a_translated_current_snapshot( + monkeypatch: pytest.MonkeyPatch, +) -> None: + ( + _graph, + _planning, + _prior_plan, + _reserved_corridors, + _ctx, + (ledger, source_targets, _compiled_plan), + ) = _capture_settled_seed77(monkeypatch, capture_compilation=True) + forbidden = {"longitudinal_start", "longitudinal_end", "allocation_coordinate"} + assert forbidden.isdisjoint(CorridorCohortLedgerClaim.__dataclass_fields__) + + baseline = compile_corridor_cohort_plan(ledger, copy.deepcopy(source_targets)) + shifted_targets = copy.deepcopy(source_targets) + dx, dy = 37.0, 53.0 + translated_targets = [] + for target in shifted_targets: + route = target.route + route.points[:] = [(x + dx, y + dy) for x, y in route.points] + route.exit_shared_opening_points = tuple( + (x + dx, y + dy) for x, y in route.exit_shared_opening_points + ) + lane_shift = dx if target.endpoint_lane_axis == 0 else dy + translated_targets.append( + replace( + target, + endpoint_lane_coordinate=( + None + if target.endpoint_lane_coordinate is None + else target.endpoint_lane_coordinate + lane_shift + ), + ) + ) + shifted_targets = tuple(translated_targets) + shifted = compile_corridor_cohort_plan(ledger, shifted_targets) + + baseline_by_claim = {item.claim_id: item for item in baseline.allocations} + shifted_by_claim = {item.claim_id: item for item in shifted.allocations} + assert set(shifted_by_claim) == set(baseline_by_claim) + for claim_id, original in baseline_by_claim.items(): + translated = shifted_by_claim[claim_id] + lateral_shift = dx if original.axis == 0 else dy + longitudinal_shift = dy if original.axis == 0 else dx + assert translated.coordinate == pytest.approx( + original.coordinate + lateral_shift + ) + assert translated.longitudinal_start == pytest.approx( + original.longitudinal_start + longitudinal_shift + ) + assert translated.longitudinal_end == pytest.approx( + original.longitudinal_end + longitudinal_shift + ) + + +def test_endpoint_network_ranks_and_landings_ignore_input_permutations( + monkeypatch: pytest.MonkeyPatch, +) -> None: + ( + graph, + planning, + prior_plan, + _reserved_corridors, + ctx, + (ledger, source_targets, _compiled_plan), + ) = _capture_settled_seed77(monkeypatch, capture_compilation=True) + scaffold = planning.exit_turns.scaffold + assert scaffold is not None + reversed_ledger = build_corridor_cohort_ledger( + graph, + scaffold, + replace(prior_plan, reservations=tuple(reversed(prior_plan.reservations))), + station_offsets=ctx.station_offsets or {}, + ) + + def endpoint_ranks(candidate_ledger): + return { + claim.member_id: claim.endpoint_network_rank + for claim in candidate_ledger.claims + if claim.endpoint_cohort_id is not None + } + + forbidden = {"longitudinal_start", "longitudinal_end", "allocation_coordinate"} + assert forbidden.isdisjoint(CorridorCohortLedgerClaim.__dataclass_fields__) + assert endpoint_ranks(reversed_ledger) == endpoint_ranks(ledger) + + variants = ( + compile_corridor_cohort_plan(ledger, copy.deepcopy(source_targets)), + compile_corridor_cohort_plan( + reversed_ledger, + copy.deepcopy(source_targets), + ), + compile_corridor_cohort_plan( + ledger, + copy.deepcopy(tuple(reversed(source_targets))), + ), + compile_corridor_cohort_plan( + reversed_ledger, + copy.deepcopy(tuple(reversed(source_targets))), + ), + ) + landing_maps = [ + { + _allocation_key(landing): ( + landing.coordinate, + landing.longitudinal_start, + landing.longitudinal_end, + ) + for landing in variant.landings + } + for variant in variants + ] + assert all(candidate == landing_maps[0] for candidate in landing_maps[1:]) + + +def test_finalized_ledger_realizes_exact_keys_in_the_current_coordinate_frame( + monkeypatch: pytest.MonkeyPatch, +) -> None: + ( + _graph, + _planning, + _prior_plan, + _reserved_corridors, + _ctx, + (ledger, source_targets, _compiled_plan), + ) = _capture_settled_seed77(monkeypatch, capture_compilation=True) + targets = copy.deepcopy(source_targets) + granted = compile_corridor_cohort_plan(ledger, targets) + finalized = replace( + ledger, + finalized_owned_segments=frozenset( + (item.member_id, item.edge_key, item.segment_rank) + for item in (*granted.allocations, *granted.landings) + ), + ) + dx, dy = 37.0, 53.0 + translated_targets = [] + for target in targets: + route = target.route + route.points[:] = [(x + dx, y + dy) for x, y in route.points] + route.exit_shared_opening_points = tuple( + (x + dx, y + dy) for x, y in route.exit_shared_opening_points + ) + lane_shift = dx if target.endpoint_lane_axis == 0 else dy + translated_targets.append( + replace( + target, + endpoint_lane_coordinate=( + None + if target.endpoint_lane_coordinate is None + else target.endpoint_lane_coordinate + lane_shift + ), + ) + ) + targets = tuple(translated_targets) + solve_calls = [] + original_solve = cohort_integration.solve_corridor_cohorts + + def observe_solve(problem): + solve_calls.append(problem) + return original_solve(problem) + + monkeypatch.setattr(cohort_integration, "solve_corridor_cohorts", observe_solve) + replay = compile_corridor_cohort_plan(finalized, targets) + + assert solve_calls + assert {_allocation_key(item) for item in replay.allocations} == { + _allocation_key(item) for item in granted.allocations + } + assert {_allocation_key(item) for item in replay.landings} == { + _allocation_key(item) for item in granted.landings + } + granted_by_key = {_allocation_key(item): item for item in granted.allocations} + for item in replay.allocations: + original = granted_by_key[_allocation_key(item)] + lateral_shift = dx if item.axis == 0 else dy + longitudinal_shift = dy if item.axis == 0 else dx + assert item.coordinate == pytest.approx(original.coordinate + lateral_shift) + assert item.longitudinal_start == pytest.approx( + original.longitudinal_start + longitudinal_shift + ) + assert item.longitudinal_end == pytest.approx( + original.longitudinal_end + longitudinal_shift + ) + granted_landings = {_allocation_key(item): item for item in granted.landings} + for item in replay.landings: + original = granted_landings[_allocation_key(item)] + lane_shift = dx if item.axis == 0 else dy + assert item.coordinate == pytest.approx(original.coordinate + lane_shift) + _assert_opposite_direction_allocations_clear(finalized, replay) + + +def test_wireup_rebuilds_all_references_and_bypasses_legacy_rank_mutations( + monkeypatch: pytest.MonkeyPatch, +) -> None: + pass_observations = [] + merge_observations = [] + events = [] + route_identity_by_id = {} + route_refs = [] + + original_compile = member_geometry_routing.compile_corridor_cohort_plan + + def observe_compile(ledger, targets, *, scalar_requests=()): + route_refs.extend(target.route for target in targets) + route_identity_by_id.update( + (id(target.route), target.edge_key) for target in targets + ) + events.append( + ( + "compile", + "fresh" if ledger.finalized_owned_segments is None else "replay", + frozenset(id(target.route) for target in targets), + ) + ) + return original_compile(ledger, targets, scalar_requests=scalar_requests) + + monkeypatch.setattr( + member_geometry_routing, + "compile_corridor_cohort_plan", + observe_compile, + ) + + def install_spy(name): + original = getattr(member_geometry_routing, name) + + def spy(routes, *args, **kwargs): + route_refs.extend(routes) + route_identity_by_id.update( + ( + id(route), + (route.edge.source, route.edge.target, route.line_id), + ) + for route in routes + ) + events.append(("pass", name, frozenset(id(route) for route in routes))) + before = { + (id(route), rank): tuple(route.points[rank : rank + 2]) + for route in routes + for rank in route.route_system_owned_segment_ranks + if rank + 1 < len(route.points) + } + result = original(routes, *args, **kwargs) + routes_by_id = {id(route): route for route in routes} + after = { + key: tuple(routes_by_id[key[0]].points[key[1] : key[1] + 2]) + for key in before + } + if before: + pass_observations.append((name, before, after)) + return result + + monkeypatch.setattr(member_geometry_routing, name, spy) + + original_merge = routing_planning._with_settled_exit_turns + + def capture_merge(execution, allocation, ctx): + merged = original_merge(execution, allocation, ctx) + if execution.corridor_cohorts is not None: + merge_observations.append((execution, merged)) + return merged + + monkeypatch.setattr(routing_planning, "_with_settled_exit_turns", capture_merge) + install_spy("_materialize_trunk_slots") + install_spy("_hold_runs_in_corridor_clearance") + install_spy("_separate_fused_cotravelling_runs") + install_spy("_separate_declared_opposing_gap_bundles") + install_spy("_dogleg_off_exempt_trunks") + ( + graph, + planning, + prior_plan, + reserved_corridors, + _ctx, + (initial_ledger, _source_targets, compiled_plan), + published_plan, + compilation_calls, + ) = _capture_settled_seed77(monkeypatch, capture_compilation="all") + plan = _cohort_plan(graph, planning, prior_plan, reserved_corridors) + granting_compilation_rank = next( + rank + for rank, call in enumerate(compilation_calls) + if call[0].finalized_owned_segments is None and call[2].allocations + ) + granted_keys = {_allocation_key(item) for item in plan.allocations} + granted_landing_keys = {_allocation_key(item) for item in plan.landings} + persisted_ledger = published_plan.corridor_cohort_ledger + + assert compiled_plan is plan + assert persisted_ledger is not None + assert persisted_ledger.finalized_owned_segments is not None + assert persisted_ledger.claims == initial_ledger.claims + assert persisted_ledger.endpoint_members == initial_ledger.endpoint_members + assert persisted_ledger.finalized_owned_segments == frozenset( + (item.member_id, item.edge_key, item.segment_rank) + for item in (*plan.allocations, *plan.landings) + ) + assert granted_keys + assert granted_landing_keys + assert granting_compilation_rank == 0 + assert ( + sum(call[0].finalized_owned_segments is None for call in compilation_calls) == 1 + ) + assert ( + sum( + call[0].finalized_owned_segments is None and bool(call[2].allocations) + for call in compilation_calls + ) + == 1 + ) + assert all( + call[0].finalized_owned_segments is not None + for call in compilation_calls[granting_compilation_rank + 1 :] + ) + assert all( + call[0] == persisted_ledger + for call in compilation_calls[granting_compilation_rank + 1 :] + ) + compile_events = tuple(event for event in events if event[0] == "compile") + assert sum(event[1] == "fresh" for event in compile_events) == 1 + post_compile_legacy_routes = tuple( + ( + _phase, + _later_name, + tuple( + sorted( + route_identity_by_id[route_id] + for route_id in compiled_route_ids.intersection(pass_route_ids) + ) + ), + ) + for event_rank, (_kind, _phase, compiled_route_ids) in enumerate(events) + if _kind == "compile" + for later_kind, _later_name, pass_route_ids in events[event_rank + 1 :] + if later_kind == "pass" + if compiled_route_ids.intersection(pass_route_ids) + ) + assert not post_compile_legacy_routes, post_compile_legacy_routes[0] + for _ledger, replay_targets, replay_plan, realized_targets in compilation_calls[ + granting_compilation_rank + 1 : + ]: + assert {_allocation_key(item) for item in replay_plan.allocations} == ( + granted_keys + ) + assert {_allocation_key(item) for item in replay_plan.landings} == ( + granted_landing_keys + ) + replay_by_identity = _target_by_identity(replay_targets) + realized_by_identity = _target_by_identity(realized_targets) + problem_spans = { + lane.member_id: (lane.span_start, lane.span_end) + for component in replay_plan.components + for problem in component.problems + for lane in problem.lanes + } + for item in replay_plan.allocations: + route = replay_by_identity[(item.member_id, item.edge_key)].route + start, end = route.points[item.segment_rank : item.segment_rank + 2] + assert sorted((start[1 - item.axis], end[1 - item.axis])) == ( + pytest.approx(problem_spans[item.claim_id]) + ) + _assert_allocation_segment( + realized_by_identity[(item.member_id, item.edge_key)].route, + item, + ) + _assert_opposite_direction_allocations_clear(_ledger, replay_plan) + assert planning.corridor_cohorts is plan + assert planning.member_geometry.corridor_cohorts is plan + assert not pass_observations + assert {event[1] for event in events if event[0] == "pass"} == { + "_materialize_trunk_slots", + "_hold_runs_in_corridor_clearance", + "_separate_fused_cotravelling_runs", + "_separate_declared_opposing_gap_bundles", + "_dogleg_off_exempt_trunks", + } + assert not merge_observations + assert route_refs + planned_by_edge = {_edge_key(item): item for item in planning.member_geometry.plans} + for allocation in plan.allocations: + member_plan = planned_by_edge[allocation.edge_key] + assert allocation.segment_rank in ( + member_plan.corridor_cohort_owned_segment_ranks + ) + _assert_allocation_segment(member_plan, allocation) + + by_edge = {_edge_key(item): item for item in planning.member_geometry.plans} + target_plans = tuple(by_edge[key] for key in TARGET_KEYS) + assert all(3 in item.corridor_cohort_owned_segment_ranks for item in target_plans) + assert ( + not {item.member_id for item in target_plans} + & planning.member_geometry.reconciled_member_ids + ) + + assert planning.route_systems is not None + for system in planning.route_systems.systems: + for member in system.members: + if member.geometry_plan is None: + continue + canonical = planning.member_geometry.plan_for_edge(member.edge) + assert member.geometry_plan is canonical + assert str(canonical.id) in system.plan_ids + + routes = [ + fresh_member_route( + member_plan, + _graph_edge(graph, _edge_key(member_plan)), + ) + for member_plan in planning.member_geometry.plans + ] + validate_member_geometry_emission(routes, planning.member_geometry) + target_coordinates = { + allocation.edge_key: allocation.coordinate + for allocation in plan.allocations + if allocation.edge_key in TARGET_KEYS + and allocation.segment_rank == 3 + and allocation.axis == 0 + } + assert set(target_coordinates) == TARGET_KEYS + assert all( + by_edge[key].points[3][0] == target_coordinates[key] for key in TARGET_KEYS + ) + published_by_edge = { + _edge_key(item): item for item in published_plan.member_geometry_plans + } + member_geometry_source = inspect.getsource(member_geometry_routing) + assert "settle_shared_opening_trunk_conflicts" not in member_geometry_source + assert "_plan_gap_channels" not in member_geometry_source + assert all( + 3 in published_by_edge[key].corridor_cohort_owned_segment_ranks + for key in TARGET_KEYS + ) + matching_compilations = tuple( + call + for call in compilation_calls + if {target.edge_key: tuple(target.route.points) for target in call[3]}.items() + >= { + edge_key: member_plan.points + for edge_key, member_plan in published_by_edge.items() + }.items() + ) + assert len(matching_compilations) == 1 + published_compilation = matching_compilations[0] + assert published_compilation[0].finalized_owned_segments is not None + replay_targets = { + target.edge_key: target.route for target in published_compilation[3] + } + assert all( + published_by_edge[key].points[2:4] == tuple(replay_targets[key].points[2:4]) + for key in TARGET_KEYS + ) + for allocation in published_compilation[2].allocations: + member_plan = published_by_edge[allocation.edge_key] + assert allocation.segment_rank in ( + member_plan.corridor_cohort_owned_segment_ranks + ) + _assert_allocation_segment(member_plan, allocation) diff --git a/tests/test_corridor_cohorts.py b/tests/test_corridor_cohorts.py index e8ebf25f8..ff778b093 100644 --- a/tests/test_corridor_cohorts.py +++ b/tests/test_corridor_cohorts.py @@ -2,18 +2,48 @@ from __future__ import annotations -from dataclasses import replace +import copy +from dataclasses import fields, replace from itertools import permutations +from types import SimpleNamespace +import pytest + +from nf_metro.layout.route_reservations import ( + ColumnGapRegion, + CorridorOrientation, + RowGapRegion, +) +from nf_metro.layout.routing.common import Direction +from nf_metro.layout.routing.corridor_cohort_integration import ( + CorridorCohortClaimRole, + CorridorCohortCompilationError, + CorridorCohortLedger, + CorridorCohortLedgerClaim, + CorridorCohortTarget, + CorridorScalarOwnerKind, + CorridorScalarRequest, + CorridorScalarVariable, + _destination_claim_axis_sign, + build_corridor_footprint_witnesses, + compile_corridor_cohort_plan, +) from nf_metro.layout.routing.corridor_cohorts import ( CorridorAllocationFailureReason, CorridorAllocationProblem, CorridorAllocationStatus, + CorridorCoordinateDomain, + CorridorDirectedSeparation, CorridorEquality, + CorridorFixedEquality, + CorridorForbiddenInterval, CorridorLane, CorridorObstacle, + CorridorSeparation, solve_corridor_cohorts, ) +from nf_metro.layout.routing.families import RouteFamilyId +from nf_metro.parser.model import PortSide def _lane( @@ -173,6 +203,65 @@ def test_allocation_is_invariant_under_coordinate_translation() -> None: } +def test_fixed_equalities_pin_a_complete_rigid_bundle() -> None: + lanes = tuple( + _lane( + f"lane:{rank}", + "corridor", + "endpoint", + -4.0 * rank, + 12.0 - 4.0 * rank, + span=(0.0, 10.0), + line_rank=rank, + ) + for rank in range(3) + ) + obstacles = tuple( + _obstacle( + f"fixed:{rank}", + 12.0 - 4.0 * rank, + 12.0 - 4.0 * rank, + span=(0.0, 10.0), + semantic_rank=(rank,), + ) + for rank in range(3) + ) + problem = CorridorAllocationProblem( + lanes=lanes, + obstacles=obstacles, + separations=tuple( + CorridorSeparation( + lane.member_id, + obstacle.obstacle_id, + ( + 0.0 + if lane.member_id.split(":")[-1] + == obstacle.obstacle_id.split(":")[-1] + else 4.0 + ), + ) + for lane in lanes + for obstacle in obstacles + ), + fixed_equalities=tuple( + CorridorFixedEquality( + f"reservation-lane:{rank}", + f"lane:{rank}", + f"fixed:{rank}", + ) + for rank in range(3) + ), + ) + + expected = { + "lane:0": 12.0, + "lane:1": 8.0, + "lane:2": 4.0, + } + assert _allocations(replace(problem, fixed_equalities=())) == expected + assert _allocations(problem) == expected + + def test_planned_coordinates_do_not_reorder_boundary_witnesses() -> None: problem = CorridorAllocationProblem( lanes=( @@ -202,6 +291,277 @@ def test_planned_coordinates_do_not_reorder_boundary_witnesses() -> None: assert allocations["late"] - allocations["early"] == 4.0 +def test_directed_separation_can_reverse_default_semantic_order() -> None: + lanes = ( + _lane( + "semantic-first", + "corridor:first", + "endpoint:first", + 0.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "semantic-second", + "corridor:second", + "endpoint:second", + 0.0, + 20.0, + span=(0.0, 10.0), + line_rank=1, + ), + ) + problem = CorridorAllocationProblem( + lanes, + directed_separations=( + CorridorDirectedSeparation( + "controlled-lead-order", + "semantic-second", + "semantic-first", + 4.0, + ), + ), + ) + + allocations = _allocations(problem) + + assert allocations["semantic-first"] - allocations["semantic-second"] == 4.0 + + +def test_directed_separation_is_invariant_under_input_permutations() -> None: + lanes = ( + _lane( + "a", + "corridor:a", + "endpoint:a", + 0.0, + 30.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "b", + "corridor:b", + "endpoint:b", + 0.0, + 20.0, + span=(10.0, 20.0), + line_rank=1, + ), + _lane( + "c", + "corridor:c", + "endpoint:c", + 0.0, + 10.0, + span=(20.0, 30.0), + line_rank=2, + ), + ) + separations = ( + CorridorDirectedSeparation("order:ba", "b", "a", 4.0), + CorridorDirectedSeparation("order:cb", "c", "b", 4.0), + ) + expected = None + for lane_order in permutations(lanes): + for separation_order in permutations(separations): + allocations = _allocations( + CorridorAllocationProblem( + lane_order, + directed_separations=separation_order, + ) + ) + expected = allocations if expected is None else expected + assert allocations == expected + + +def test_directed_separation_cycle_fails_with_owner_provenance() -> None: + lanes = tuple( + _lane( + member_id, + f"corridor:{member_id}", + f"endpoint:{member_id}", + 0.0, + coordinate, + span=(rank * 10.0, (rank + 1) * 10.0), + line_rank=rank, + ) + for rank, (member_id, coordinate) in enumerate( + (("a", 0.0), ("b", 10.0), ("c", 20.0)) + ) + ) + problem = CorridorAllocationProblem( + lanes, + directed_separations=( + CorridorDirectedSeparation("order:ab", "a", "b", 4.0), + CorridorDirectedSeparation("order:bc", "b", "c", 4.0), + CorridorDirectedSeparation("order:ca", "c", "a", 4.0), + ), + ) + + result = solve_corridor_cohorts(problem) + + assert result.status is CorridorAllocationStatus.FAILURE + assert result.reason is CorridorAllocationFailureReason.INFEASIBLE + assert result.allocations == () + assert result.blocking_member_ids == ("a", "b", "c") + assert result.blocking_order_owner_ids == ("order:ab", "order:bc", "order:ca") + assert result.blocking_endpoint_owner_ids == ( + "endpoint:a", + "endpoint:b", + "endpoint:c", + ) + + +def test_forbidden_coordinate_interval_chooses_one_deterministic_side() -> None: + lane = _lane( + "movable", + "corridor:movable", + "endpoint:movable", + 0.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=1, + ) + problem = CorridorAllocationProblem( + (lane,), + forbidden_intervals=( + CorridorForbiddenInterval( + "movable", + "fixed-perpendicular-footprint", + 8.0, + 12.0, + (0, 0), + ), + ), + ) + + assert _allocations(problem) == {"movable": 12.0} + + +def test_forbidden_coordinate_interval_is_equivariant_under_axis_reflection() -> None: + lane = _lane( + "movable", + "corridor:movable", + "endpoint:movable", + 0.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=1, + ) + interval = CorridorForbiddenInterval( + "movable", + "fixed-perpendicular-footprint", + 8.0, + 12.0, + (0, 0), + ) + reflected_lane = replace( + lane, + boundary_coordinate=-lane.boundary_coordinate, + planned_coordinate=-lane.planned_coordinate, + ) + reflected_interval = replace( + interval, + minimum_coordinate=-interval.maximum_coordinate, + maximum_coordinate=-interval.minimum_coordinate, + ) + + original = _allocations( + CorridorAllocationProblem((lane,), forbidden_intervals=(interval,)) + ) + reflected = _allocations( + CorridorAllocationProblem( + (reflected_lane,), + forbidden_intervals=(reflected_interval,), + axis_sign=-1, + ) + ) + + assert reflected == { + member_id: -coordinate for member_id, coordinate in original.items() + } + + +def test_infeasible_forbidden_interval_reports_its_named_obstacle() -> None: + lane = _lane( + "movable", + "corridor:movable", + "endpoint:movable", + 0.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ) + problem = CorridorAllocationProblem( + (lane,), + domains=( + CorridorCoordinateDomain( + "movable", + minimum_coordinate=9.0, + maximum_coordinate=11.0, + ), + ), + forbidden_intervals=( + CorridorForbiddenInterval( + "movable", + "fixed-perpendicular-footprint", + 8.0, + 12.0, + (0, 0), + ), + ), + ) + + result = solve_corridor_cohorts(problem) + + assert result.status is CorridorAllocationStatus.FAILURE + assert result.reason is CorridorAllocationFailureReason.INFEASIBLE + assert result.blocking_member_ids == ("movable",) + assert result.blocking_obstacle_ids == ("fixed-perpendicular-footprint",) + + +def test_opposite_running_members_are_not_implicitly_bundled_by_ordering() -> None: + problem = CorridorAllocationProblem( + ( + _lane( + "right-running", + "corridor:direction:R", + "endpoint:right-running", + 0.0, + 0.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "left-running", + "corridor:direction:L", + "endpoint:left-running", + 0.0, + 10.0, + span=(10.0, 20.0), + line_rank=1, + ), + ), + directed_separations=( + CorridorDirectedSeparation( + "counter-running-order", + "right-running", + "left-running", + 4.0, + ), + ), + ) + + allocations = _allocations(problem) + + assert allocations["left-running"] - allocations["right-running"] >= 4.0 + assert allocations["left-running"] != allocations["right-running"] + + def test_same_line_label_does_not_join_distinct_corridor_owners() -> None: problem = CorridorAllocationProblem( lanes=( @@ -296,7 +656,7 @@ def test_cohort_chooses_one_obstacle_side_for_every_lane() -> None: assert _allocations(problem) == {"low": 2.0, "high": 6.0} -def test_realised_obstacle_motion_cannot_flip_its_planned_order_side() -> None: +def test_realised_obstacle_coordinate_is_the_final_clearance_constraint() -> None: lane = _lane( "lane", "corridor:lane", @@ -324,7 +684,7 @@ def test_realised_obstacle_motion_cannot_flip_its_planned_order_side() -> None: ) assert before_allocation == {"lane": 22.0} - assert after_allocation == {"lane": 26.0} + assert after_allocation == {"lane": 18.0} def test_one_cohort_cannot_span_distinct_endpoint_owners() -> None: @@ -473,63 +833,1793 @@ def test_exact_obstacle_tie_is_equivariant_under_axis_reflection() -> None: } -def test_incomplete_witnesses_return_whole_problem_to_compatibility() -> None: - problem = CorridorAllocationProblem( - lanes=( - _lane( - "known", - "corridor:partial", - "endpoint:partial", - 10.0, - 10.0, - span=(0.0, 10.0), - line_rank=1, - ), - ), - witnesses_complete=False, +def test_fixed_obstacle_side_is_chosen_by_semantic_order() -> None: + lane = _lane( + "lane", + "corridor:lane", + "endpoint:lane", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=0, + ) + obstacle = _obstacle( + "obstacle", + 10.0, + 10.0, + span=(0.0, 10.0), + semantic_rank=(1, 0), ) - result = solve_corridor_cohorts(problem) + assert _allocations( + CorridorAllocationProblem(lanes=(lane,), obstacles=(obstacle,)) + ) == {"lane": 6.0} - assert result.status is CorridorAllocationStatus.COMPATIBILITY - assert result.reason is None - assert result.allocations == () +def test_exact_clearance_boundary_preserves_preferred_coordinate() -> None: + lane = _lane( + "lane", + "corridor:lane", + "endpoint:lane", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ) + obstacle = _obstacle( + "obstacle", + 14.0, + 14.0, + span=(0.0, 10.0), + semantic_rank=(1, 0), + ) + + assert _allocations( + CorridorAllocationProblem(lanes=(lane,), obstacles=(obstacle,)) + ) == {"lane": 10.0} -def test_contradictory_equalities_are_attributed_without_mutating_input() -> None: + +def test_root_dag_resolves_obstacle_sides_as_one_plan() -> None: lanes = ( _lane( - "a", - "corridor:a", - "endpoint:a", + "early", + "corridor:early", + "endpoint:early", + 0.0, 10.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=0, + ), + _lane( + "middle", + "corridor:middle", + "endpoint:middle", + 0.0, + 10.0, + span=(5.0, 15.0), + line_rank=0, + root_rank=1, + ), + _lane( + "late", + "corridor:late", + "endpoint:late", + 0.0, 10.0, + span=(10.0, 20.0), + line_rank=0, + root_rank=2, + ), + ) + obstacle = _obstacle( + "fixed", + 14.0, + 14.0, + span=(0.0, 20.0), + semantic_rank=(3, 0), + ) + + problem = CorridorAllocationProblem(lanes=lanes, obstacles=(obstacle,)) + + assert _allocations(problem) == {"early": 2.0, "middle": 6.0, "late": 10.0} + for order in permutations(lanes): + assert _allocations(replace(problem, lanes=order)) == { + "early": 2.0, + "middle": 6.0, + "late": 10.0, + } + + +def test_pair_separation_is_permutation_and_reflection_invariant() -> None: + lanes = ( + _lane( + "early", + "corridor:early", + "endpoint:early", + 0.0, + 0.0, span=(0.0, 10.0), - line_rank=1, + line_rank=0, + root_rank=0, ), _lane( - "b", - "corridor:b", - "endpoint:b", - 14.0, - 14.0, + "late", + "corridor:late", + "endpoint:late", + 4.0, + 4.0, span=(0.0, 10.0), - line_rank=2, + line_rank=0, + root_rank=1, ), ) - equalities = ( - CorridorEquality("network:ab", "a", "b", 2.0), - CorridorEquality("network:ab", "a", "b", 4.0), + separation = CorridorSeparation("early", "late", 12.0) + expected = {"early": -8.0, "late": 4.0} + + for order in permutations(lanes): + assert ( + _allocations( + CorridorAllocationProblem( + lanes=order, + separations=(separation,), + ) + ) + == expected + ) + + exact = tuple( + replace(lane, planned_coordinate=expected[lane.member_id]) for lane in lanes + ) + assert ( + _allocations(CorridorAllocationProblem(lanes=exact, separations=(separation,))) + == expected ) - problem = CorridorAllocationProblem(lanes=lanes, equalities=equalities) - before = (problem.lanes, problem.obstacles, problem.equalities) - result = solve_corridor_cohorts(problem) + reflected = tuple( + replace( + lane, + boundary_coordinate=-lane.boundary_coordinate, + planned_coordinate=-lane.planned_coordinate, + ) + for lane in lanes + ) + assert _allocations( + CorridorAllocationProblem( + lanes=reflected, + separations=(separation,), + axis_sign=-1, + ) + ) == {member_id: -coordinate for member_id, coordinate in expected.items()} - assert result.status is CorridorAllocationStatus.FAILURE - assert result.reason is CorridorAllocationFailureReason.CONTRADICTION - assert result.allocations == () - assert result.blocking_member_ids == ("a", "b") - assert result.blocking_obstacle_ids == () - assert result.blocking_equality_owner_ids == ("network:ab",) - assert (problem.lanes, problem.obstacles, problem.equalities) == before + +def test_pair_separation_controls_fixed_obstacle_clearance() -> None: + lane = _lane( + "lane", + "corridor:lane", + "endpoint:lane", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=0, + ) + obstacle = _obstacle( + "obstacle", + 14.0, + 14.0, + span=(0.0, 10.0), + semantic_rank=(1, 0), + ) + separation = CorridorSeparation("lane", "obstacle", 12.0) + + assert _allocations( + CorridorAllocationProblem( + lanes=(lane,), + obstacles=(obstacle,), + separations=(separation,), + ) + ) == {"lane": 2.0} + assert _allocations( + CorridorAllocationProblem( + lanes=(replace(lane, planned_coordinate=2.0),), + obstacles=(obstacle,), + separations=(separation,), + ) + ) == {"lane": 2.0} + + +def test_zero_pair_separation_allows_same_track_coordinates() -> None: + lanes = ( + _lane( + "first", + "corridor:first", + "endpoint:first", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=0, + ), + _lane( + "second", + "corridor:second", + "endpoint:second", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + root_rank=1, + ), + ) + + assert _allocations( + CorridorAllocationProblem( + lanes=lanes, + separations=(CorridorSeparation("first", "second", 0.0),), + ) + ) == {"first": 10.0, "second": 10.0} + + +def test_incomplete_witnesses_return_whole_problem_to_compatibility() -> None: + problem = CorridorAllocationProblem( + lanes=( + _lane( + "known", + "corridor:partial", + "endpoint:partial", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=1, + ), + ), + witnesses_complete=False, + ) + + result = solve_corridor_cohorts(problem) + + assert result.status is CorridorAllocationStatus.COMPATIBILITY + assert result.reason is None + assert result.allocations == () + + +def test_coordinate_domains_constrain_the_joint_solve_and_attribute_conflicts() -> None: + lane = _lane( + "movable", + "cohort", + "endpoint", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ) + bounded = solve_corridor_cohorts( + CorridorAllocationProblem( + (lane,), + domains=(CorridorCoordinateDomain("movable", maximum_coordinate=8.0),), + ) + ) + + assert bounded.status is CorridorAllocationStatus.PLANNED + assert bounded.allocations == (("movable", 8.0),) + + conflicting = solve_corridor_cohorts( + CorridorAllocationProblem( + (lane,), + domains=( + CorridorCoordinateDomain( + "movable", + minimum_coordinate=9.0, + obstacle_ids=("left-lead",), + ), + CorridorCoordinateDomain( + "movable", + maximum_coordinate=8.0, + obstacle_ids=("right-lead",), + ), + ), + ) + ) + + assert conflicting.status is CorridorAllocationStatus.FAILURE + assert conflicting.reason is CorridorAllocationFailureReason.INFEASIBLE + assert conflicting.blocking_member_ids == ("movable",) + assert conflicting.blocking_obstacle_ids == ("left-lead", "right-lead") + + +def test_coordinate_domains_report_order_propagation_conflicts() -> None: + lanes = ( + _lane( + "before", + "corridor:before", + "endpoint:before", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ), + _lane( + "after", + "corridor:after", + "endpoint:after", + 5.0, + 5.0, + span=(0.0, 10.0), + line_rank=1, + ), + ) + + domains = ( + CorridorCoordinateDomain("before", minimum_coordinate=10.0), + CorridorCoordinateDomain( + "after", + maximum_coordinate=5.0, + obstacle_ids=("positive-side-blocker",), + ), + CorridorCoordinateDomain( + "after", + maximum_coordinate=100.0, + obstacle_ids=("inactive-blocker",), + ), + ) + results = tuple( + solve_corridor_cohorts( + CorridorAllocationProblem( + ordered_lanes, + domains=domains, + coordinate_axis=1, + ) + ) + for ordered_lanes in (lanes, tuple(reversed(lanes))) + ) + + assert results[0] == results[1] + result = results[0] + assert result.status is CorridorAllocationStatus.FAILURE + assert result.reason is CorridorAllocationFailureReason.INFEASIBLE + assert result.allocations == () + assert result.clearance_shortfall is not None + assert result.clearance_shortfall.claim_ids == ("before",) + assert result.clearance_shortfall.blocking_obstacle_ids == ( + "positive-side-blocker", + ) + assert result.clearance_shortfall.deficit == 9.0 + assert result.clearance_shortfall.axis == 1 + assert result.clearance_shortfall.required_shift_sign == 1 + + +def test_non_boundary_domain_conflict_has_no_clearance_shortfall() -> None: + lane = _lane( + "movable", + "cohort", + "endpoint", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=0, + ) + + result = solve_corridor_cohorts( + CorridorAllocationProblem( + (lane,), + domains=( + CorridorCoordinateDomain("movable", minimum_coordinate=10.0), + CorridorCoordinateDomain("movable", maximum_coordinate=5.0), + ), + ) + ) + + assert result.status is CorridorAllocationStatus.FAILURE + assert result.reason is CorridorAllocationFailureReason.INFEASIBLE + assert result.clearance_shortfall is None + + +def test_contradictory_equalities_are_attributed_without_mutating_input() -> None: + lanes = ( + _lane( + "a", + "corridor:a", + "endpoint:a", + 10.0, + 10.0, + span=(0.0, 10.0), + line_rank=1, + ), + _lane( + "b", + "corridor:b", + "endpoint:b", + 14.0, + 14.0, + span=(0.0, 10.0), + line_rank=2, + ), + ) + equalities = ( + CorridorEquality("network:ab", "a", "b", 2.0), + CorridorEquality("network:ab", "a", "b", 4.0), + ) + problem = CorridorAllocationProblem(lanes=lanes, equalities=equalities) + before = (problem.lanes, problem.obstacles, problem.equalities) + + result = solve_corridor_cohorts(problem) + + assert result.status is CorridorAllocationStatus.FAILURE + assert result.reason is CorridorAllocationFailureReason.CONTRADICTION + assert result.allocations == () + assert result.blocking_member_ids == ("a", "b") + assert result.blocking_obstacle_ids == () + assert result.blocking_equality_owner_ids == ("network:ab",) + assert (problem.lanes, problem.obstacles, problem.equalities) == before + + +def _ledger_claim( + member_id: str, + *, + claim_rank: int, + coordinate_rank: int, + endpoint_cohort_id: str | None, + direction: Direction = Direction.R, + reservation_id: str | None = None, + lane_rank: int = 0, + network_id: str | None = None, + complete: bool = True, + line_id: str = "line", + orientation: CorridorOrientation = CorridorOrientation.HORIZONTAL, + destination_boundary_carrier: bool | None = None, + destination_boundary_axis_sign: int | None = None, +) -> CorridorCohortLedgerClaim: + edge_key = (f"{member_id}:source", f"{member_id}:target", line_id) + return CorridorCohortLedgerClaim( + claim_id=f"claim:{claim_rank}", + reservation_id=reservation_id or f"reservation:{claim_rank}", + reservation_rank=claim_rank, + claim_rank=0, + region=( + RowGapRegion(0, 1) + if orientation is CorridorOrientation.HORIZONTAL + else ColumnGapRegion(0, 1) + ), + orientation=orientation, + direction=direction, + lane_rank=lane_rank, + member_id=member_id, + member_geometry_plan_id=f"plan:{member_id}", + edge_key=edge_key, + family_id=RouteFamilyId.SAME_Y_STRAIGHT, + connector_ids=(f"connector:{member_id}",), + segment_rank=0, + path_rank=claim_rank, + endpoint_cohort_id=endpoint_cohort_id, + endpoint_network_rank=( + coordinate_rank if endpoint_cohort_id is not None else None + ), + destination_boundary_carrier=( + endpoint_cohort_id is not None + if destination_boundary_carrier is None + else destination_boundary_carrier + ), + destination_boundary_axis_sign=( + 1 + if endpoint_cohort_id is not None and destination_boundary_axis_sign is None + else destination_boundary_axis_sign + ), + network_id=network_id, + reservation_complete=complete, + ) + + +def _target( + claim: CorridorCohortLedgerClaim, + coordinate: float, + *, + mutable: bool, +) -> CorridorCohortTarget: + assert claim.edge_key is not None + assert claim.family_id is not None + if claim.orientation is CorridorOrientation.HORIZONTAL: + start, end = ( + ((0.0, coordinate), (10.0, coordinate)) + if claim.direction is Direction.R + else ((10.0, coordinate), (0.0, coordinate)) + ) + lead_start, lead_end = ( + ((10.0, coordinate + 10.0), (20.0, coordinate + 10.0)) + if claim.direction is Direction.R + else ((0.0, coordinate + 10.0), (-10.0, coordinate + 10.0)) + ) + endpoint_lane_axis = 1 + else: + start, end = ( + ((coordinate, 0.0), (coordinate, 10.0)) + if claim.direction is Direction.D + else ((coordinate, 10.0), (coordinate, 0.0)) + ) + lead_start, lead_end = ( + ((coordinate + 10.0, 10.0), (coordinate + 10.0, 20.0)) + if claim.direction is Direction.D + else ((coordinate + 10.0, 0.0), (coordinate + 10.0, -10.0)) + ) + endpoint_lane_axis = 0 + endpoint = claim.endpoint_cohort_id is not None + route = SimpleNamespace( + edge=SimpleNamespace( + source=claim.edge_key[0], + target=claim.edge_key[1], + ), + line_id=claim.edge_key[2], + points=[start, end, lead_start, lead_end] if endpoint else [start, end], + curve_radii=None, + exit_shared_opening_points=(), + route_system_owned_segment_ranks=(), + convergence_owned_segment_ranks=(), + fan_route_emitter=None, + fan_plan_id=None, + exit_turn_axis_id=None, + exit_turn_plan_id=None, + exit_turn_segment_rank=None, + exit_lane_transition_plan_id=None, + concentric_corner_offsets_by_segment={}, + concentric_corner_bases_by_segment={}, + ) + return CorridorCohortTarget( + claim.member_id, + f"plan:{claim.member_id}", + claim.edge_key, + claim.family_id, + claim.connector_ids, + route, + mutable, + endpoint_lane_axis if endpoint else None, + ( + lead_start[endpoint_lane_axis] + (claim.endpoint_network_rank or 0) * 4.0 + if endpoint + else None + ), + claim.network_id, + ) + + +def _ledger( + claims: tuple[CorridorCohortLedgerClaim, ...], +) -> CorridorCohortLedger: + endpoint_members: dict[str, set[str]] = {} + for claim in claims: + if claim.endpoint_cohort_id is not None: + endpoint_members.setdefault(claim.endpoint_cohort_id, set()).add( + claim.member_id + ) + return CorridorCohortLedger( + claims, + tuple( + (cohort_id, frozenset(member_ids)) + for cohort_id, member_ids in sorted(endpoint_members.items()) + ), + frozenset(claim.member_id for claim in claims), + frozenset(), + 4.0, + ) + + +def _footprint_target( + member_id: str, + line_id: str, + points: list[tuple[float, float]], + *, + legal_crossing_segment_ranks: frozenset[int] = frozenset(), +) -> CorridorCohortTarget: + edge_key = (f"{member_id}:source", f"{member_id}:target", line_id) + return CorridorCohortTarget( + member_id, + f"plan:{member_id}", + edge_key, + RouteFamilyId.MERGE_TRUNK, + (f"connector:{member_id}",), + SimpleNamespace( + edge=SimpleNamespace(source=edge_key[0], target=edge_key[1]), + line_id=line_id, + points=points, + ), + False, + legal_crossing_segment_ranks=legal_crossing_segment_ranks, + ) + + +def test_footprint_witnesses_publish_typed_scalar_ownership_deterministically() -> None: + target = _footprint_target( + "scalar", + "trunk", + [(0.0, 4.0), (10.0, 4.0), (10.0, 20.0)], + ) + variable = CorridorScalarVariable( + "variable:scalar", + CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + "convergence:scalar", + target.member_id, + target.edge_key, + target.connector_ids, + 1, + 0, + 10.0, + ) + + witnesses = build_corridor_footprint_witnesses((target,), (variable,)) + + assert tuple(item.segment_rank for item in witnesses) == (0, 1) + assert witnesses[0].end_variable_id == variable.variable_id + assert witnesses[1].coordinate_variable_id == variable.variable_id + assert witnesses[1].owner_id == target.member_geometry_plan_id + + +def test_scalar_request_compiles_fixed_dogleg_from_one_snapshot() -> None: + scalar = _footprint_target( + "scalar", + "trunk", + [(0.0, 5.0), (20.0, 5.0)], + ) + fixed = _footprint_target( + "fixed", + "branch", + [(10.0, -10.0), (10.0, 9.0), (20.0, 9.0)], + ) + variable = CorridorScalarVariable( + "variable:scalar", + CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + "convergence:scalar", + scalar.member_id, + scalar.edge_key, + scalar.connector_ids, + 0, + 1, + 5.0, + ) + request = CorridorScalarRequest( + variable, + 5.0, + CorridorCoordinateDomain(variable.variable_id, -100.0, 100.0), + ) + + plan = compile_corridor_cohort_plan( + _ledger(()), + (fixed, scalar), + scalar_requests=(request,), + ) + + assert len(plan.scalar_grants) == 1 + problem = next( + problem + for component in plan.components + for problem in component.problems + if problem.lanes[0].member_id == variable.variable_id + ) + assert len(problem.forbidden_intervals) == 1 + forbidden = problem.forbidden_intervals[0] + assert not ( + forbidden.minimum_coordinate + < plan.scalar_grants[0].coordinate + < forbidden.maximum_coordinate + ) + + +def test_legal_perpendicular_crossing_emits_no_forbidden_interval() -> None: + scalar = _footprint_target( + "scalar", + "trunk", + [(0.0, 5.0), (20.0, 5.0)], + ) + crossing = _footprint_target( + "crossing", + "branch", + [(10.0, -10.0), (10.0, 10.0), (20.0, 10.0)], + legal_crossing_segment_ranks=frozenset((0,)), + ) + variable = CorridorScalarVariable( + "variable:scalar", + CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + "convergence:scalar", + scalar.member_id, + scalar.edge_key, + scalar.connector_ids, + 0, + 1, + 5.0, + ) + request = CorridorScalarRequest( + variable, + 5.0, + CorridorCoordinateDomain(variable.variable_id, -100.0, 100.0), + ) + + plan = compile_corridor_cohort_plan( + _ledger(()), + (crossing, scalar), + scalar_requests=(request,), + ) + + assert plan.scalar_grants[0].coordinate == 5.0 + assert all( + not problem.forbidden_intervals + for component in plan.components + for problem in component.problems + ) + + +def test_far_fixed_dogleg_is_a_crossing_not_a_clearance_obstacle() -> None: + scalar = _footprint_target( + "scalar", + "trunk", + [(0.0, 5.0), (20.0, 5.0)], + ) + fixed = _footprint_target( + "fixed", + "branch", + [(10.0, -10.0), (10.0, 30.0), (20.0, 30.0)], + ) + variable = CorridorScalarVariable( + "variable:scalar", + CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + "convergence:scalar", + scalar.member_id, + scalar.edge_key, + scalar.connector_ids, + 0, + 1, + 5.0, + ) + request = CorridorScalarRequest( + variable, + 5.0, + CorridorCoordinateDomain(variable.variable_id, -100.0, 100.0), + ) + + plan = compile_corridor_cohort_plan( + _ledger(()), + (fixed, scalar), + scalar_requests=(request,), + ) + + assert plan.scalar_grants[0].coordinate == 5.0 + assert all( + not problem.forbidden_intervals + for component in plan.components + for problem in component.problems + ) + + +def test_fixed_dogleg_one_step_beyond_domain_has_typed_shortfall() -> None: + scalar = _footprint_target( + "scalar", + "trunk", + [(0.0, 5.0), (20.0, 5.0)], + ) + fixed = _footprint_target( + "fixed", + "branch", + [(10.0, -10.0), (10.0, 9.0), (20.0, 9.0)], + ) + variable = CorridorScalarVariable( + "variable:scalar", + CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + "convergence:scalar", + scalar.member_id, + scalar.edge_key, + scalar.connector_ids, + 0, + 1, + 5.0, + ) + request = CorridorScalarRequest( + variable, + 5.0, + CorridorCoordinateDomain(variable.variable_id, 0.0, 9.0), + ) + + with pytest.raises(CorridorCohortCompilationError) as raised: + compile_corridor_cohort_plan( + _ledger(()), + (fixed, scalar), + scalar_requests=(request,), + ) + + (failure,) = raised.value.failures + assert failure.clearance_shortfall is not None + assert failure.clearance_shortfall.deficit == 4.0 + assert failure.clearance_shortfall.required_shift_sign == 1 + assert failure.clearance_shortfall.claim_ids == (variable.variable_id,) + assert tuple(item.edge_key for item in failure.blocking_obstacles) == ( + fixed.edge_key, + ) + + +def test_scalar_compilation_is_request_and_target_permutation_invariant() -> None: + first = _footprint_target( + "scalar-a", + "first", + [(0.0, 5.0), (20.0, 5.0)], + ) + second = _footprint_target( + "scalar-b", + "second", + [(0.0, 9.0), (20.0, 9.0)], + ) + fixed = _footprint_target( + "fixed", + "branch", + [(10.0, -10.0), (10.0, 2.0), (20.0, 2.0)], + ) + + def request(target: CorridorCohortTarget, coordinate: float): + variable = CorridorScalarVariable( + f"variable:{target.member_id}", + CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + f"convergence:{target.member_id}", + target.member_id, + target.edge_key, + target.connector_ids, + 0, + 1, + coordinate, + ) + return CorridorScalarRequest( + variable, + coordinate, + CorridorCoordinateDomain(variable.variable_id, -100.0, 100.0), + ) + + requests = (request(first, 5.0), request(second, 9.0)) + expected = compile_corridor_cohort_plan( + _ledger(()), + (fixed, first, second), + scalar_requests=requests, + ) + + observed = compile_corridor_cohort_plan( + _ledger(()), + (second, first, fixed), + scalar_requests=tuple(reversed(requests)), + ) + + assert observed == expected + + +def test_nonintersecting_scalar_footprint_keeps_its_preference() -> None: + scalar = _footprint_target( + "scalar", + "trunk", + [(0.0, 5.0), (20.0, 5.0)], + ) + fixed = _footprint_target( + "fixed", + "branch", + [(30.0, -10.0), (30.0, 10.0), (40.0, 10.0)], + ) + variable = CorridorScalarVariable( + "variable:scalar", + CorridorScalarOwnerKind.CONVERGENCE_TRUNK, + "convergence:scalar", + scalar.member_id, + scalar.edge_key, + scalar.connector_ids, + 0, + 1, + 5.0, + ) + request = CorridorScalarRequest( + variable, + 5.0, + CorridorCoordinateDomain(variable.variable_id, -100.0, 100.0), + ) + + plan = compile_corridor_cohort_plan( + _ledger(()), + (fixed, scalar), + scalar_requests=(request,), + ) + + assert plan.scalar_grants[0].coordinate == 5.0 + assert all( + not problem.forbidden_intervals + for component in plan.components + for problem in component.problems + ) + + +def test_semantic_ledger_claims_store_no_observed_geometry() -> None: + field_names = {field.name for field in fields(CorridorCohortLedgerClaim)} + + assert "coordinate" not in field_names + assert "longitudinal_start" not in field_names + assert "longitudinal_end" not in field_names + + +def test_compiler_derives_current_obstacle_geometry_and_never_patches_fixed() -> None: + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + line_id="other", + ) + movable_target = _target(movable, 10.0, mutable=True) + fixed_target = _target(fixed, 12.0, mutable=False) + movable_target.route.curve_radii = [10.0] + fixed_before = tuple(fixed_target.route.points) + + plan = compile_corridor_cohort_plan( + _ledger((movable, fixed)), (movable_target, fixed_target) + ) + + assert plan.allocations[0].coordinate == 8.0 + assert movable_target.route.points[:2] == [(0.0, 8.0), (10.0, 8.0)] + assert movable_target.route.curve_radii == [10.0] + assert tuple(fixed_target.route.points) == fixed_before + + +def test_partial_concentric_corner_evidence_fails_before_mutation() -> None: + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + ) + movable_target = _target(movable, 10.0, mutable=True) + movable_target.route.curve_radii = [10.0] + movable_target.route.concentric_corner_offsets_by_segment = {0: (None, 2.0)} + fixed_target = _target(fixed, 12.0, mutable=False) + before = tuple(movable_target.route.points) + + with pytest.raises(CorridorCohortCompilationError, match="source snapshot"): + compile_corridor_cohort_plan( + _ledger((movable, fixed)), (movable_target, fixed_target) + ) + + assert tuple(movable_target.route.points) == before + + +def test_finalized_missing_landing_fails_before_publication() -> None: + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + line_id="other", + ) + movable_target = _target(movable, 10.0, mutable=True) + fixed_target = _target(fixed, 12.0, mutable=False) + movable_target.route.points[:] = [(0.0, 10.0), (10.0, 10.0), (10.0, 20.0)] + movable_target = replace( + movable_target, + endpoint_lane_axis=0, + endpoint_lane_coordinate=10.0, + ) + before = tuple(movable_target.route.points) + ledger = replace( + _ledger((movable, fixed)), + finalized_owned_segments=frozenset( + { + (movable.member_id, movable.edge_key, 0), + (movable.member_id, movable.edge_key, 2), + } + ), + ) + + with pytest.raises( + CorridorCohortCompilationError, + match="realization changed ownership", + ): + compile_corridor_cohort_plan(ledger, (movable_target, fixed_target)) + + assert tuple(movable_target.route.points) == before + assert movable_target.route.route_system_owned_segment_ranks == () + + +def test_published_allocation_span_uses_complete_atomic_patch() -> None: + movable = replace( + _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + direction=Direction.D, + orientation=CorridorOrientation.VERTICAL, + ), + segment_rank=1, + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + direction=Direction.D, + line_id="other", + orientation=CorridorOrientation.VERTICAL, + ) + movable_target = _target(movable, 10.0, mutable=True) + movable_target.route.points[:] = [ + (0.0, 10.0), + (10.0, 10.0), + (10.0, 20.0), + (20.0, 20.0), + ] + movable_target = replace( + movable_target, + endpoint_lane_axis=1, + endpoint_lane_coordinate=24.0, + ) + fixed_target = _target(fixed, 12.0, mutable=False) + fixed_target.route.points[:] = [(12.0, 21.0), (12.0, 23.0)] + + plan = compile_corridor_cohort_plan( + _ledger((movable, fixed)), + (movable_target, fixed_target), + ) + + allocation = plan.allocations[0] + assert allocation.coordinate == 8.0 + assert (allocation.longitudinal_start, allocation.longitudinal_end) == ( + 10.0, + 24.0, + ) + assert movable_target.route.points[1:3] == [(8.0, 10.0), (8.0, 24.0)] + + +def test_semantic_incompleteness_is_compatibility_but_binding_loss_is_failure() -> None: + incomplete = _ledger_claim( + "incomplete", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + complete=False, + ) + incomplete_target = _target(incomplete, 10.0, mutable=True) + + plan = compile_corridor_cohort_plan(_ledger((incomplete,)), (incomplete_target,)) + + assert plan.allocations == () + assert plan.components[0].status is CorridorAllocationStatus.COMPATIBILITY + + complete = replace(incomplete, reservation_complete=True) + with pytest.raises( + CorridorCohortCompilationError, match="incomplete eligible frame" + ): + compile_corridor_cohort_plan(_ledger((complete,)), ()) + + +def test_stale_member_geometry_plan_identity_fails_before_mutation() -> None: + claim = _ledger_claim( + "member", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + ) + target = _target(claim, 10.0, mutable=True) + target = replace(target, member_geometry_plan_id="plan:stale") + before = tuple(target.route.points) + + with pytest.raises(CorridorCohortCompilationError, match="current route"): + compile_corridor_cohort_plan(_ledger((claim,)), (target,)) + + assert tuple(target.route.points) == before + + +def test_immutable_continuation_is_fixed_instead_of_promoted_to_equality() -> None: + leader = _ledger_claim( + "leader", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + reservation_id="reservation:movable", + network_id="network", + ) + follower = _ledger_claim( + "follower", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + reservation_id="reservation:fixed", + network_id="network", + ) + + plan = compile_corridor_cohort_plan( + _ledger((leader, follower)), + ( + _target(leader, 10.0, mutable=True), + _target(follower, 10.0, mutable=False), + ), + ) + + assert dict(plan.components[0].claim_roles)[follower.claim_id] is ( + CorridorCohortClaimRole.FIXED + ) + assert all( + follower.claim_id not in (equality.left_member_id, equality.right_member_id) + for problem in plan.components[0].problems + for equality in problem.equalities + ) + + +def test_same_network_lane_matches_its_fixed_continuation() -> None: + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + reservation_id="reservation:movable", + network_id="network", + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + reservation_id="reservation:fixed", + network_id="network", + ) + + plan = compile_corridor_cohort_plan( + _ledger((movable, fixed)), + ( + _target(movable, 10.0, mutable=True), + _target(fixed, 12.0, mutable=False), + ), + ) + + problem = plan.components[0].problems[0] + assert len(problem.fixed_equalities) == 1 + assert problem.fixed_equalities[0].member_id == movable.claim_id + assert problem.fixed_equalities[0].obstacle_id == fixed.claim_id + assert plan.allocations[0].coordinate == 12.0 + + +def test_opposite_running_peer_is_not_a_fixed_equality() -> None: + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + reservation_id="reservation:shared", + network_id="network", + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + reservation_id="reservation:shared", + network_id="network", + direction=Direction.L, + ) + + plan = compile_corridor_cohort_plan( + _ledger((movable, fixed)), + ( + _target(movable, 10.0, mutable=True), + _target(fixed, 12.0, mutable=False), + ), + ) + + assert all(not problem.fixed_equalities for problem in plan.components[0].problems) + + +def test_coordinate_proximity_without_a_shared_network_is_not_a_fixed_equality() -> ( + None +): + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + reservation_id="reservation:movable", + network_id="network:movable", + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + reservation_id="reservation:fixed", + network_id="network:fixed", + ) + + plan = compile_corridor_cohort_plan( + _ledger((movable, fixed)), + ( + _target(movable, 10.0, mutable=True), + _target(fixed, 10.0, mutable=False), + ), + ) + + assert all(not problem.fixed_equalities for problem in plan.components[0].problems) + + +def test_overlapping_same_lane_without_a_shared_terminal_is_not_a_fixed_equality() -> ( + None +): + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + reservation_id="reservation:movable", + network_id="network", + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + reservation_id="reservation:fixed", + network_id="network", + ) + movable_target = _target(movable, 10.0, mutable=True) + fixed_target = _target(fixed, 10.0, mutable=False) + fixed_target.route.points[:] = [(5.0, 10.0), (15.0, 10.0)] + + plan = compile_corridor_cohort_plan( + _ledger((movable, fixed)), + (movable_target, fixed_target), + ) + + assert all(not problem.fixed_equalities for problem in plan.components[0].problems) + + +def test_same_reservation_lane_matches_a_fixed_branch() -> None: + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + reservation_id="reservation:shared", + network_id="network", + ) + fixed = _ledger_claim( + "fixed", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + reservation_id="reservation:shared", + network_id="network", + ) + movable_target = _target(movable, 10.0, mutable=True) + fixed_target = _target(fixed, 12.0, mutable=False) + fixed_target.route.points[:] = [(5.0, 12.0), (15.0, 12.0)] + + plan = compile_corridor_cohort_plan( + _ledger((movable, fixed)), + (movable_target, fixed_target), + ) + + problem = plan.components[0].problems[0] + assert len(problem.fixed_equalities) == 1 + assert plan.allocations[0].coordinate == 12.0 + + +def test_existing_semantic_segment_owner_has_terminal_fixed_precedence() -> None: + claim = _ledger_claim( + "owned", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + ) + target = _target(claim, 10.0, mutable=True) + target.route.convergence_owned_segment_ranks = (0,) + + plan = compile_corridor_cohort_plan(_ledger((claim,)), (target,)) + + assert plan.allocations == () + assert plan.components[0].claim_roles == ( + (claim.claim_id, CorridorCohortClaimRole.FIXED), + ) + + +def test_complete_non_endpoint_claim_is_movable_beside_terminal_fixed_claim() -> None: + movable = _ledger_claim( + "regular", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id=None, + ) + terminal_fixed = _ledger_claim( + "terminal", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + line_id="other", + ) + movable_target = _target(movable, 10.0, mutable=True) + terminal_target = _target(terminal_fixed, 10.0, mutable=True) + terminal_target.route.exit_turn_plan_id = "exit-turn" + terminal_target.route.exit_turn_segment_rank = 0 + + plan = compile_corridor_cohort_plan( + _ledger((movable, terminal_fixed)), + (movable_target, terminal_target), + ) + + assert dict(plan.components[0].claim_roles) == { + movable.claim_id: CorridorCohortClaimRole.MOVABLE, + terminal_fixed.claim_id: CorridorCohortClaimRole.FIXED, + } + assert [item.member_id for item in plan.allocations] == [movable.member_id] + assert movable_target.route.route_system_owned_segment_ranks == (0,) + assert terminal_target.route.route_system_owned_segment_ranks == () + + +def test_opposite_running_non_endpoint_claims_are_never_bundled() -> None: + rightward = _ledger_claim( + "rightward", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id=None, + direction=Direction.R, + ) + leftward = _ledger_claim( + "leftward", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + direction=Direction.L, + line_id="other", + ) + terminal_fixed = _ledger_claim( + "terminal", + claim_rank=2, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + line_id="anchor", + ) + rightward_target = _target(rightward, 10.0, mutable=True) + leftward_target = _target(leftward, 10.0, mutable=True) + terminal_target = _target(terminal_fixed, 30.0, mutable=True) + terminal_target.route.exit_turn_plan_id = "exit-turn" + terminal_target.route.exit_turn_segment_rank = 0 + + plan = compile_corridor_cohort_plan( + _ledger((rightward, leftward, terminal_fixed)), + (rightward_target, leftward_target, terminal_target), + ) + + problem = plan.components[0].problems[0] + assert len(problem.lanes) == 2 + assert len({lane.cohort_id for lane in problem.lanes}) == 2 + assert problem.equalities == () + assert any( + {separation.left_member_id, separation.right_member_id} + == {rightward.claim_id, leftward.claim_id} + for separation in problem.separations + ) + assert rightward_target.route.route_system_owned_segment_ranks == (0,) + assert leftward_target.route.route_system_owned_segment_ranks == (0,) + + +def test_endpoint_cohort_takes_only_the_exit_turn_continuation_flank() -> None: + claim = _ledger_claim( + "endpoint", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + ) + adjacent = _target(claim, 10.0, mutable=True) + adjacent.route.exit_turn_plan_id = "exit-turn" + adjacent.route.exit_turn_segment_rank = 1 + + adjacent_plan = compile_corridor_cohort_plan(_ledger((claim,)), (adjacent,)) + + assert adjacent_plan.allocations + assert adjacent_plan.components[0].claim_roles == ( + (claim.claim_id, CorridorCohortClaimRole.MOVABLE), + ) + + exact = _target(claim, 10.0, mutable=True) + exact.route.exit_turn_plan_id = "exit-turn" + exact.route.exit_turn_segment_rank = 0 + + exact_plan = compile_corridor_cohort_plan(_ledger((claim,)), (exact,)) + + assert exact_plan.allocations == () + assert exact_plan.components[0].claim_roles == ( + (claim.claim_id, CorridorCohortClaimRole.FIXED), + ) + + incomplete_claim = replace(claim, reservation_complete=False) + incomplete = _target(incomplete_claim, 10.0, mutable=True) + incomplete.route.exit_turn_plan_id = "exit-turn" + incomplete.route.exit_turn_segment_rank = 1 + + incomplete_plan = compile_corridor_cohort_plan( + _ledger((incomplete_claim,)), + (incomplete,), + ) + + assert incomplete_plan.allocations == () + assert incomplete_plan.components[0].claim_roles == ( + (claim.claim_id, CorridorCohortClaimRole.FIXED), + ) + + +@pytest.mark.parametrize( + ("side", "direction", "expected"), + ( + (PortSide.LEFT, Direction.R, 1), + (PortSide.LEFT, Direction.L, -1), + (PortSide.LEFT, Direction.U, 1), + (PortSide.LEFT, Direction.D, -1), + (PortSide.RIGHT, Direction.R, -1), + (PortSide.RIGHT, Direction.L, 1), + (PortSide.RIGHT, Direction.U, -1), + (PortSide.RIGHT, Direction.D, 1), + (PortSide.TOP, Direction.R, -1), + (PortSide.TOP, Direction.L, 1), + (PortSide.TOP, Direction.U, -1), + (PortSide.TOP, Direction.D, 1), + (PortSide.BOTTOM, Direction.R, 1), + (PortSide.BOTTOM, Direction.L, -1), + (PortSide.BOTTOM, Direction.U, 1), + (PortSide.BOTTOM, Direction.D, -1), + ), +) +def test_destination_claim_axis_sign_rotates_the_port_arrival_frame( + side: PortSide, + direction: Direction, + expected: int, +) -> None: + assert _destination_claim_axis_sign(side, direction) == expected + + +@pytest.mark.parametrize( + ("axis_sign", "orientation", "carrier"), + ( + (1, CorridorOrientation.HORIZONTAL, True), + (1, CorridorOrientation.VERTICAL, True), + (1, CorridorOrientation.HORIZONTAL, False), + (-1, CorridorOrientation.HORIZONTAL, False), + (1, CorridorOrientation.VERTICAL, False), + (-1, CorridorOrientation.VERTICAL, False), + ), +) +def test_endpoint_boundary_delta_uses_frozen_semantic_frame( + axis_sign: int, + orientation: CorridorOrientation, + carrier: bool, +) -> None: + direction = ( + Direction.R if orientation is CorridorOrientation.HORIZONTAL else Direction.D + ) + rank_zero = _ledger_claim( + "rank-zero", + claim_rank=10, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + direction=direction, + line_id="first", + orientation=orientation, + destination_boundary_carrier=carrier, + destination_boundary_axis_sign=axis_sign, + ) + rank_one = _ledger_claim( + "rank-one", + claim_rank=0, + coordinate_rank=1, + endpoint_cohort_id="endpoint", + direction=direction, + line_id="second", + orientation=orientation, + destination_boundary_carrier=carrier, + destination_boundary_axis_sign=axis_sign, + ) + + for order in permutations((rank_zero, rank_one)): + targets = tuple(_target(claim, 10.0, mutable=True) for claim in reversed(order)) + plan = compile_corridor_cohort_plan(_ledger(order), targets) + allocations = {item.claim_id: item.coordinate for item in plan.allocations} + assert allocations[rank_one.claim_id] - allocations[ + rank_zero.claim_id + ] == pytest.approx(axis_sign * 4.0) + + +def test_physical_cohort_compresses_absent_endpoint_network_ranks() -> None: + rank_zero = _ledger_claim( + "rank-zero", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + line_id="first", + ) + rank_two = _ledger_claim( + "rank-two", + claim_rank=1, + coordinate_rank=2, + endpoint_cohort_id="endpoint", + line_id="second", + ) + + plan = compile_corridor_cohort_plan( + _ledger((rank_zero, rank_two)), + (_target(rank_zero, 10.0, mutable=True), _target(rank_two, 10.0, mutable=True)), + ) + allocations = {item.claim_id: item.coordinate for item in plan.allocations} + + assert allocations[rank_two.claim_id] - allocations[ + rank_zero.claim_id + ] == pytest.approx(4.0) + + +def test_endpoint_slots_bind_only_the_current_eligible_members() -> None: + rank_zero = _ledger_claim( + "rank-zero", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + line_id="first", + ) + absent = _ledger_claim( + "absent", + claim_rank=1, + coordinate_rank=1, + endpoint_cohort_id="endpoint", + complete=False, + line_id="absent", + ) + rank_two = _ledger_claim( + "rank-two", + claim_rank=2, + coordinate_rank=2, + endpoint_cohort_id="endpoint", + line_id="second", + ) + rank_zero_target = replace( + _target(rank_zero, 10.0, mutable=True), + endpoint_lane_coordinate=30.0, + ) + rank_two_target = replace( + _target(rank_two, 10.0, mutable=True), + endpoint_lane_coordinate=10.0, + ) + expected = { + rank_zero.edge_key: 10.0, + rank_two.edge_key: 30.0, + } + + for claim_order in permutations((rank_zero, absent, rank_two)): + ledger = replace( + _ledger(claim_order), + eligible_member_ids=frozenset((rank_zero.member_id, rank_two.member_id)), + ) + for target_order in ( + (rank_zero_target, rank_two_target), + (rank_two_target, rank_zero_target), + ): + targets = tuple(copy.deepcopy(target) for target in target_order) + plan = compile_corridor_cohort_plan( + ledger, + targets, + ) + assert { + item.edge_key: item.coordinate for item in plan.landings + } == expected + + +def test_endpoint_slots_ignore_members_eligible_only_in_other_corridors() -> None: + rank_zero = _ledger_claim( + "rank-zero", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + line_id="first", + ) + rank_two = _ledger_claim( + "rank-two", + claim_rank=1, + coordinate_rank=2, + endpoint_cohort_id="endpoint", + line_id="second", + ) + unrelated = _ledger_claim( + "unrelated", + claim_rank=2, + coordinate_rank=1, + endpoint_cohort_id=None, + line_id="other", + ) + ledger = replace( + _ledger((rank_zero, rank_two, unrelated)), + endpoint_members=( + ( + "endpoint", + frozenset( + (rank_zero.member_id, unrelated.member_id, rank_two.member_id) + ), + ), + ), + ) + rank_zero_target = replace( + _target(rank_zero, 10.0, mutable=True), + endpoint_lane_coordinate=30.0, + ) + rank_two_target = replace( + _target(rank_two, 10.0, mutable=True), + endpoint_lane_coordinate=10.0, + ) + + plan = compile_corridor_cohort_plan( + ledger, + ( + _target(unrelated, 100.0, mutable=True), + rank_two_target, + rank_zero_target, + ), + ) + + assert {item.edge_key: item.coordinate for item in plan.landings} == { + rank_zero.edge_key: 10.0, + rank_two.edge_key: 30.0, + } + + +def test_endpoint_slots_fail_closed_when_a_claimed_member_has_no_target() -> None: + rank_zero = _ledger_claim( + "rank-zero", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + line_id="first", + ) + missing = _ledger_claim( + "missing", + claim_rank=1, + coordinate_rank=1, + endpoint_cohort_id="endpoint", + line_id="second", + ) + + with pytest.raises( + CorridorCohortCompilationError, + match="incomplete eligible frame", + ): + compile_corridor_cohort_plan( + _ledger((rank_zero, missing)), + (_target(rank_zero, 10.0, mutable=True),), + ) + + +def _landing_obstacle_case( + *, obstacle_target_id: str, obstacle_network_id: str +) -> tuple[ + CorridorCohortLedger, + CorridorCohortTarget, + CorridorCohortTarget, +]: + movable = _ledger_claim( + "movable", + claim_rank=0, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + direction=Direction.U, + network_id="shared-network", + orientation=CorridorOrientation.VERTICAL, + ) + movable = replace( + movable, + edge_key=(movable.edge_key[0], "shared-target", movable.edge_key[2]), + ) + movable_target = _target(movable, 10.0, mutable=True) + movable_target.route.points = [(10.0, 20.0), (10.0, 10.0), (0.0, 10.0)] + movable_target = replace( + movable_target, + endpoint_lane_axis=1, + endpoint_lane_coordinate=10.0, + ) + + obstacle = _ledger_claim( + "obstacle", + claim_rank=1, + coordinate_rank=0, + endpoint_cohort_id=None, + direction=Direction.L, + line_id="other", + network_id=obstacle_network_id, + ) + obstacle = replace( + obstacle, + edge_key=(obstacle.edge_key[0], obstacle_target_id, obstacle.edge_key[2]), + ) + obstacle_target = _target(obstacle, 10.0, mutable=False) + obstacle_target.route.points = [(20.0, 10.0), (0.0, 10.0)] + return _ledger((movable,)), movable_target, obstacle_target + + +def test_same_endpoint_network_has_no_snapshot_landing_constraint() -> None: + ledger, movable, obstacle = _landing_obstacle_case( + obstacle_target_id="shared-target", + obstacle_network_id="shared-network", + ) + + plan = compile_corridor_cohort_plan(ledger, (obstacle, movable)) + + assert plan.allocations[0].coordinate == pytest.approx(10.0) + assert all( + obstacle_id.startswith("member-footprint-endpoint-order|") + for component in plan.components + for problem in component.problems + for domain in problem.domains + for obstacle_id in domain.obstacle_ids + ) + + +def test_unrelated_route_has_no_snapshot_landing_constraint() -> None: + ledger, movable, obstacle = _landing_obstacle_case( + obstacle_target_id="other-target", + obstacle_network_id="other-network", + ) + + plan = compile_corridor_cohort_plan(ledger, (obstacle, movable)) + + assert plan.allocations[0].coordinate == pytest.approx(10.0) + assert all( + obstacle_id.startswith("member-footprint-endpoint-order|") + for component in plan.components + for problem in component.problems + for domain in problem.domains + for obstacle_id in domain.obstacle_ids + ) + + +def test_same_line_counter_running_lanes_have_distinct_owners_and_clearance() -> None: + right = _ledger_claim( + "right", + claim_rank=10, + coordinate_rank=0, + endpoint_cohort_id="endpoint", + direction=Direction.R, + network_id="shared-network", + ) + left = _ledger_claim( + "left", + claim_rank=0, + coordinate_rank=1, + endpoint_cohort_id="endpoint", + direction=Direction.L, + network_id="shared-network", + ) + plan = compile_corridor_cohort_plan( + _ledger((right, left)), + (_target(right, 10.0, mutable=True), _target(left, 12.0, mutable=True)), + ) + + assert len(plan.components[0].problems) == 1 + cohort_owners = { + lane.cohort_id + for problem in plan.components[0].problems + for lane in problem.lanes + } + allocations = {item.claim_id: item.coordinate for item in plan.allocations} + assert len(cohort_owners) == 2 + assert plan.components[0].problems[0].separations == ( + CorridorSeparation(right.claim_id, left.claim_id, 11.0), + ) + assert abs(allocations[right.claim_id] - allocations[left.claim_id]) >= 11.0 + assert allocations[right.claim_id] < allocations[left.claim_id] + assert all( + role is CorridorCohortClaimRole.MOVABLE + for _claim_id, role in plan.components[0].claim_roles + ) diff --git a/tests/test_deferred_final_guards.py b/tests/test_deferred_final_guards.py index d2b6c5368..5c287afd5 100644 --- a/tests/test_deferred_final_guards.py +++ b/tests/test_deferred_final_guards.py @@ -14,6 +14,7 @@ from __future__ import annotations from pathlib import Path +from types import SimpleNamespace import pytest @@ -76,3 +77,146 @@ def spy(graph, phase, **kwargs): f"{fixture}: 'after final' checkpoint #{i} validated a pre-final " f"layout state the renderer never draws: {drift}" ) + + +def _deferred_route_guard_harness(monkeypatch, *, render_plan) -> object: + graph = parse_metro_mermaid( + "%%metro line: x | X | #ff0000\ngraph LR\n a[A] -->|x| b[B]\n" + ) + + def defer_route_guards(graph, **_kwargs) -> None: + graph._final_route_guards_deferred = True + + monkeypatch.setattr(engine, "_compute_layout_scaled", defer_route_guards) + monkeypatch.setattr( + "nf_metro.layout.geometric_bypass.apply_geometric_bypass", + lambda _graph, _layout_pass: False, + ) + monkeypatch.setattr("nf_metro.render.svg.build_render_plan", render_plan) + return graph + + +def test_validated_layout_runs_deferred_route_guards_at_settled_chokepoint( + monkeypatch, +) -> None: + calls: list[object] = [] + + def capture(graph, theme) -> None: + calls.append((graph, theme)) + + graph = _deferred_route_guard_harness(monkeypatch, render_plan=capture) + + engine.compute_layout(graph, validate=True) + + assert calls and calls[0][0] is graph + assert graph._final_route_guards_deferred is False + + +def test_unvalidated_layout_does_not_run_deferred_route_guards(monkeypatch) -> None: + def reject(*_args, **_kwargs) -> None: + raise AssertionError("unvalidated layout entered route validation") + + graph = _deferred_route_guard_harness(monkeypatch, render_plan=reject) + + engine.compute_layout(graph, validate=False) + + +def test_deferred_route_guard_failure_propagates_from_validated_layout( + monkeypatch, +) -> None: + failure = RuntimeError("settled route validation failed") + + def reject(*_args, **_kwargs) -> None: + raise failure + + graph = _deferred_route_guard_harness(monkeypatch, render_plan=reject) + + with pytest.raises(RuntimeError, match="settled route validation failed") as raised: + engine.compute_layout(graph, validate=True) + + assert raised.value is failure + + +def test_discovery_reservations_defer_route_guards_without_clearance( + monkeypatch, +) -> None: + import nf_metro.layout.routing as routing + from nf_metro.layout.phases import guards + + graph = parse_metro_mermaid( + "%%metro line: x | X | #ff0000\ngraph LR\n a[A] -->|x| b[B]\n" + ) + discovery_routes = [object()] + discovery = SimpleNamespace( + routes=discovery_routes, + plan=SimpleNamespace( + boundary_clearance_requirements=(), + reservations=(object(),), + ), + ) + monkeypatch.setattr( + routing, "observe_route_edges", lambda *_args, **_kwargs: discovery + ) + + _offsets, routes = guards._ensure_pass_c_inputs( + graph, + {}, + None, + validate_final_geometry=True, + ) + + assert routes is None + assert graph._final_route_guards_deferred is True + + +def test_discovery_without_settlement_intent_validates_routes_immediately( + monkeypatch, +) -> None: + import nf_metro.layout.routing as routing + from nf_metro.layout.phases import guards + + graph = parse_metro_mermaid( + "%%metro line: x | X | #ff0000\ngraph LR\n a[A] -->|x| b[B]\n" + ) + discovery_routes = [object()] + discovery = SimpleNamespace( + routes=discovery_routes, + plan=SimpleNamespace(boundary_clearance_requirements=(), reservations=()), + ) + monkeypatch.setattr( + routing, "observe_route_edges", lambda *_args, **_kwargs: discovery + ) + + _offsets, routes = guards._ensure_pass_c_inputs( + graph, + {}, + None, + validate_final_geometry=True, + ) + + assert routes is discovery_routes + assert graph._final_route_guards_deferred is False + + +def test_render_consumes_discovery_deferral_at_final_route_guard( + monkeypatch, +) -> None: + from nf_metro.render import svg as render_svg + from nf_metro.themes import resolve_theme + + graph = parse_metro_mermaid( + "%%metro line: x | X | #ff0000\ngraph LR\n a[A] -->|x| b[B]\n" + ) + engine.compute_layout(graph, validate=False) + graph._validate_active = True + graph._final_route_guards_deferred = True + + def reject(*_args, **kwargs) -> None: + assert kwargs["include_deferred_final"] is True + assert kwargs["strict"] is True + raise RuntimeError("post-cohort route guard failed") + + monkeypatch.setattr(render_svg, "assert_render_layout_invariants", reject) + + with pytest.raises(RuntimeError, match="post-cohort route guard failed"): + render_svg._settled_render_graph(graph, resolve_theme(None, graph)) diff --git a/tests/test_final_convergence_feasibility.py b/tests/test_final_convergence_feasibility.py index 6a3e1b992..203acd559 100644 --- a/tests/test_final_convergence_feasibility.py +++ b/tests/test_final_convergence_feasibility.py @@ -344,28 +344,6 @@ def test_seed_15_plan_channels_include_emitted_bypass_tail_lane() -> None: ) -def test_seed_15_shared_opening_short_tail_is_a_fixed_member_channel() -> None: - path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" - graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - observation = observe_route_edges( - graph, - station_offsets=compute_station_offsets(graph), - allow_convergence_clearance_requirements=True, - ) - member = next( - plan - for plan in observation.plan.member_geometry_plans - if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") - ) - tail = next( - channel - for channel in member.gap_channels - if channel.segment_rank == len(member.exit_shared_opening_points) - ) - assert (tail.gap_lo_col, tail.row) == (5, 2) - assert (tail.start, tail.end) == ((1550.0, 588.0), (1550.0, 504.0)) - - def test_shared_source_convergences_fuse_one_opening_carrier() -> None: path = ROOT / "examples" / "topologies" / "merge_around_below_leftmost.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) diff --git a/tests/test_member_geometry.py b/tests/test_member_geometry.py index d52f1ed3d..e9e9d4436 100644 --- a/tests/test_member_geometry.py +++ b/tests/test_member_geometry.py @@ -44,7 +44,6 @@ concentric_corner_radius_at, ) from nf_metro.layout.routing.families import RouteFamilyId -from nf_metro.layout.routing.invariants import _segments_properly_cross from nf_metro.layout.routing.normalize import _VChannel from nf_metro.layout.routing.offsets import compute_station_offsets from nf_metro.layout.routing.planning import _allocation_eligible_system_ids @@ -53,6 +52,11 @@ ReservedCorridors, build_reserved_corridors, ) +from nf_metro.layout.settlement_demand import ( + BoundaryClearanceRequirement, + BoundaryClearanceRequirementKind, + SettlementAxis, +) from nf_metro.parser.model import Edge from nf_metro.parser.route_topology import ConnectorId, ResolvedEdge from nf_metro.render.svg import build_observed_render_plan @@ -215,7 +219,7 @@ def _assert_channels_equal_emission(observation, plan) -> None: ) -def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: +def test_seed_15_routes_split_siblings_as_independent_members() -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) observation = observe_route_edges( @@ -236,226 +240,24 @@ def test_seed_15_freezes_single_line_left_exit_opening_atomically() -> None: ) assert exit_plan.disposition is ExitTurnDisposition.LEGACY assert exit_plan.legacy_reason == "unsupported-subshape:left-exit-right-entry-step" - assert len(exit_plan.shared_openings) == 1 - opening = ( - (1610.5, 338.0), - (1600.5, 338.0), - (1600.5, 588.0), - ) - assert {plan.exit_shared_opening_points for plan in plans} == {opening} - assert {plan.points[: len(opening)] for plan in plans} == {opening} - assert {plan.edge.target: plan.points[len(opening) :] for plan in plans} == { - "s5__entry_right_16": ((1550.0, 588.0), (1550.0, 504.0), (1478.0, 504.0)), - "s6__entry_right_14": ((1270.0, 588.0), (1270.0, 500.0), (1246.0, 500.0)), + assert exit_plan.shared_openings == () + assert {plan.exit_shared_opening_points for plan in plans} == {()} + descent_columns = { + next( + start[0] + for start, end in zip(plan.points, plan.points[1:]) + if start[0] == end[0] and end[1] > start[1] + ) + for plan in plans } + assert len(descent_columns) == 2 for plan in plans: assert plan.consumed_reservation_ids == () assert plan.gap_channels _assert_channels_equal_emission(observation, plan) -def test_seed_15_settles_member_clear_of_shared_opening_and_convergence() -> None: - path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" - graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - observation = observe_route_edges( - graph, - station_offsets=compute_station_offsets(graph), - allow_convergence_clearance_requirements=True, - ) - movable = next( - plan - for plan in observation.plan.member_geometry_plans - if plan.edge == ResolvedEdge("__junction_24", "s6__entry_right_14", "l1") - ) - fixed = next( - plan - for plan in observation.plan.member_geometry_plans - if plan.edge == ResolvedEdge("__junction_23", "s5__entry_right_16", "l2") - ) - landing = next( - landing - for plan in observation.plan.convergence_plans - for landing in plan.landings - if landing.edge == ResolvedEdge("__junction_25", "__merge_9", "l0") - ) - - assert movable.gap_channels[0].start[0] == 1604.5 - assert fixed.gap_channels[-1].start[0] == 1550.0 - assert landing.minimum_runway == 52.0 - assert landing.opening_turn_coordinate is None - - -@pytest.mark.parametrize("mirror", (1.0, -1.0)) -def test_shared_opening_settlement_supports_both_target_flanks(mirror) -> None: - path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" - graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - observation = observe_route_edges( - graph, - station_offsets=compute_station_offsets(graph), - allow_convergence_clearance_requirements=True, - ) - selected = tuple( - plan - for plan in observation.plan.member_geometry_plans - if plan.edge - in { - ResolvedEdge("__junction_23", "s5__entry_right_16", "l2"), - ResolvedEdge("__junction_24", "s6__entry_right_14", "l1"), - } - ) - - def mirrored(plan, *, movable=False): - points = tuple((mirror * x, y) for x, y in plan.points) - if movable: - points = tuple( - (mirror * 1542.0, y) if rank in {1, 2} else point - for rank, (point, (_x, y)) in enumerate(zip(points, plan.points)) - ) - return replace( - plan, - points=points, - exit_shared_opening_points=tuple( - (mirror * x, y) for x, y in plan.exit_shared_opening_points - ), - gap_channels=tuple( - replace( - channel, - start=points[channel.segment_rank], - end=points[channel.segment_rank + 1], - ) - for channel in plan.gap_channels - ), - ) - - plans = tuple( - mirrored(plan, movable=plan.edge.line_id == "l1") for plan in selected - ) - execution = member_geometry.MemberGeometryExecution( - plans, - MappingProxyType({}), - MappingProxyType({plan.edge: plan for plan in plans}), - ) - settled = member_geometry.settle_shared_opening_trunk_conflicts( - execution, (), graph, curve_radius=CURVE_RADIUS - ) - movable = next(plan for plan in settled.plans if plan.edge.line_id == "l1") - - assert movable.gap_channels[0].start[0] == mirror * 1538.0 - - -def test_seed_15_shared_opening_gathers_both_siblings_on_one_descent( - monkeypatch, -) -> None: - """One corridor carries both siblings down, crossing the trunk once. - - The corridor's job is to hold the pair together, not to dodge the merge - trunk lying across their way: each sibling left to itself picks its own - descent column, and a bridged crossing costs less than a detour around - the far side of the section they leave. - """ - path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" - - def siblings(observation): - return [ - route - for route in observation.routes - if route.edge.source == "__junction_23" and route.line_id == "l2" - ] - - def descent_columns(observation) -> set[float]: - return { - next( - start[0] - for start, end in zip(route.points, route.points[1:]) - if start[0] == end[0] and end[1] > start[1] - ) - for route in siblings(observation) - } - - def trunk_crossings(observation) -> set[tuple[float, float]]: - trunk = next( - route - for route in observation.routes - if route.edge == Edge("__junction_20", "__merge_8", "l0") - ) - return { - crossing - for sibling in siblings(observation) - for start_a, end_a in zip(sibling.points, sibling.points[1:]) - for start_b, end_b in zip(trunk.points, trunk.points[1:]) - if (crossing := _segments_properly_cross(start_a, end_a, start_b, end_b)) - is not None - } - - graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - enabled = observe_route_edges( - graph, - station_offsets=compute_station_offsets(graph), - allow_convergence_clearance_requirements=True, - ) - shared_column = descent_columns(enabled) - assert len(shared_column) == 1 - assert {x for x, _y in trunk_crossings(enabled)} == shared_column - - monkeypatch.setattr(exit_turns, "_shared_left_exit_opening", lambda *_: None) - graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - disabled = observe_route_edges( - graph, - station_offsets=compute_station_offsets(graph), - allow_convergence_clearance_requirements=True, - ) - assert len(descent_columns(disabled)) == 2 - - -def test_seed_15_shared_opening_is_line_name_independent() -> None: - path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" - source = ( - path.read_text() - .replace("l0", "main") - .replace("l1", "l0") - .replace("l2", "branch") - ) - graph = prepare_graph(source, source_dir=str(path.parent)) - observation = observe_route_edges( - graph, - station_offsets=compute_station_offsets(graph), - allow_convergence_clearance_requirements=True, - ) - plan = next( - plan - for plan in observation.plan.exit_turn_plans - if plan.source_id == "__junction_23" - ) - assert plan.disposition is ExitTurnDisposition.LEGACY - assert plan.legacy_reason == "unsupported-subshape:left-exit-right-entry-step" - assert len(plan.shared_openings) == 1 - - -def test_seed_15_shared_opening_skips_turn_axis_planning(monkeypatch) -> None: - path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" - original = exit_turns._plan_turn_axes - - def reject_shared_group(*args, **kwargs): - if args[3] == "__junction_23": - pytest.fail("shared opening reached turn-axis planning") - return original(*args, **kwargs) - - monkeypatch.setattr(exit_turns, "_plan_turn_axes", reject_shared_group) - graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) - observation = observe_route_edges( - graph, - station_offsets=compute_station_offsets(graph), - allow_convergence_clearance_requirements=True, - ) - plan = next( - plan - for plan in observation.plan.exit_turn_plans - if plan.source_id == "__junction_23" - ) - assert len(plan.shared_openings) == 1 - - -def test_shared_opening_does_not_erase_lane_ownership_failure(monkeypatch) -> None: +def test_lane_ownership_failure_remains_legacy(monkeypatch) -> None: path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" original = exit_turns._classify_assignment_seeds @@ -1050,6 +852,40 @@ def test_one_segment_can_own_distinct_gap_row_claims() -> None: ) +def test_corridor_cohort_ranks_are_frozen_into_member_ownership() -> None: + plan = RouteMemberGeometryPlan( + RouteMemberGeometryPlanId("plan"), + RouteSystemId("system"), + EmissionMemberId("member"), + ResolvedEdge("source", "target", "line"), + ("connector",), + RouteFamilyId.BYPASS_FAMILY, + ((0.0, 0.0), (50.0, 0.0), (50.0, 100.0)), + None, + OffsetRegime.BAKED, + False, + (), + None, + (), + corridor_cohort_owned_segment_ranks=(0,), + ) + route = member_geometry.fresh_member_route(plan, Edge("source", "target", "line")) + execution = member_geometry.MemberGeometryExecution( + (plan,), MappingProxyType({}), MappingProxyType({plan.edge: plan}) + ) + + assert plan.owned_segment_ranks == (0,) + assert route.route_system_owned_segment_ranks == (0,) + route.points[0] = (-1.0, 0.0) + with pytest.raises(RuntimeError, match="changed corridor cohort segment"): + member_geometry.validate_member_geometry_emission([route], execution) + + with pytest.raises(ValueError, match="invalid corridor cohort ranks"): + replace(plan, corridor_cohort_owned_segment_ranks=(0, 0)) + with pytest.raises(ValueError, match="invalid corridor cohort ranks"): + replace(plan, corridor_cohort_owned_segment_ranks=(2,)) + + def test_reservation_reroute_keeps_identity_and_reuses_settled_template() -> None: graph, first = _observe(ROOT / "examples" / "genomeassembly.mmd") routes, _moves, second_plan = _route_edges( @@ -1061,6 +897,9 @@ def test_reservation_reroute_keeps_identity_and_reuses_settled_template() -> Non reservations=first.plan, ) assert second_plan is not None + assert first.plan.corridor_cohort_ledger is None + assert second_plan.corridor_cohort_ledger is not None + assert second_plan.corridor_cohort_ledger.finalized_owned_segments is not None exit_axes = { str(axis.id): axis for exit_plan in second_plan.exit_turn_plans @@ -1110,6 +949,71 @@ def test_reservation_reroute_keeps_identity_and_reuses_settled_template() -> Non ) == (channel.start, channel.end) +def test_corridor_grant_extends_fixed_source_leg_without_moving_its_axis() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_77.mmd" + graph, first = _observe(path) + routes, _moves, second_plan = _route_edges( + graph, + DIAGONAL_RUN, + CURVE_RADIUS, + compute_station_offsets(graph), + observe_plan=True, + reservations=first.plan, + ) + assert second_plan is not None + edge = ResolvedEdge("__junction_39", "s9__entry_right_25", "l1") + before = next( + route + for route in first.routes + if ResolvedEdge(route.edge.source, route.edge.target, route.line_id) == edge + ) + after = next( + route + for route in routes + if ResolvedEdge(route.edge.source, route.edge.target, route.line_id) == edge + ) + plan = next(item for item in second_plan.member_geometry_plans if item.edge == edge) + + assert before.points[1][0] == before.points[2][0] + assert after.points[1][0] == after.points[2][0] == before.points[1][0] + assert after.points[1][1] == before.points[1][1] + assert after.points[2][1] != before.points[2][1] + assert 1 not in plan.corridor_cohort_owned_segment_ranks + assert {2, 3, 4}.issubset(plan.corridor_cohort_owned_segment_ranks) + + +def test_seed_77_shortfall_requests_one_atomic_corridor_aperture() -> None: + path = ROOT / "tests" / "fixtures" / "hash_seed_determinism" / "seed_77.mmd" + graph, first = _observe(path) + _routes, _moves, provisional_plan = _route_edges( + graph, + DIAGONAL_RUN, + CURVE_RADIUS, + compute_station_offsets(graph), + observe_plan=True, + reservations=first.plan, + allow_convergence_clearance_requirements=True, + ) + + assert provisional_plan is not None + (requirement,) = provisional_plan.boundary_clearance_requirements + assert isinstance(requirement, BoundaryClearanceRequirement) + assert requirement.axis is SettlementAxis.COLUMN + assert requirement.boundary == 3 + assert requirement.required == 80.0 + assert requirement.negative_section_ids == ("s16",) + assert requirement.positive_section_ids == ("s17",) + assert requirement.kind is ( + BoundaryClearanceRequirementKind.CORRIDOR_COHORT_APERTURE + ) + assert provisional_plan.corridor_cohort_ledger is not None + assert provisional_plan.corridor_cohort_ledger.finalized_owned_segments is None + assert all( + not plan.corridor_cohort_owned_segment_ranks + for plan in provisional_plan.member_geometry_plans + ) + + def test_reservation_reroute_reseats_port_peeloff_after_reconciliation() -> None: path = ROOT / "examples" / "topologies" / "convergence_stacked_sink.mmd" graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) diff --git a/tests/test_phase_state_registry.py b/tests/test_phase_state_registry.py index c958ab8da..0dc269c83 100644 --- a/tests/test_phase_state_registry.py +++ b/tests/test_phase_state_registry.py @@ -47,8 +47,8 @@ # - _phase_snapshots_enabled: a per-run coordinate-snapshot flag stashed to # avoid signature churn (#363), pure observation. # - _final_route_guards_deferred: records that the final validate checkpoint -# deferred its route guards to settlement, read by callers that validate -# without rendering; no positioning pass consumes it. +# deferred its route guards to settlement at the end of compute_layout; no +# positioning pass consumes it. _BOOKKEEPING_ALLOWLIST = { "_stages_completed", "_validate_active", diff --git a/tests/test_plan_owned_channel_agreement.py b/tests/test_plan_owned_channel_agreement.py index 3a92b85e0..dc93c71e4 100644 --- a/tests/test_plan_owned_channel_agreement.py +++ b/tests/test_plan_owned_channel_agreement.py @@ -1,66 +1,191 @@ -"""A member channel seated on its convergence claim stays on the plan's column. - -The seed_15 fixture drives one junction opening (``__junction_24``, line l1) -whose column is named by both a convergence-plan gap channel and the member -route that draws the stroke. Whether or not the render completes, its failure -text must never report the defect classes that column disagreement produces: - -- the closing feasibility validator's ``ambiguous same-line member channel`` - (plan and member naming different columns for one carrier), -- a ``collinear overlay`` of the two entry tails sharing one lane in the - gap between columns 5 and 6, and -- sub-radius jogs from a trunk relocated onto a lane it cannot reach with - formed curves. -""" +"""Planner-owned geometry has one freeze rule and one final realization.""" +import warnings from pathlib import Path +from types import SimpleNamespace import pytest -from nf_metro.api import render_string +import nf_metro.layout.routing.corridor_cohort_integration as cohort_integration +import nf_metro.layout.routing.invariants as routing_invariants +import nf_metro.layout.routing.member_geometry as member_geometry +import nf_metro.layout.routing.normalize as normalize +from nf_metro.api import prepare_graph, render_string, resolve_theme +from nf_metro.layout.constants import CURVE_RADIUS, OFFSET_STEP +from nf_metro.layout.routing.common import RoutedPath, planner_owns_segment +from nf_metro.parser.model import Edge +from nf_metro.parser.route_topology import ResolvedEdge +from nf_metro.render.svg import build_observed_render_plan SEED_15 = Path(__file__).parent / "fixtures" / "hash_seed_determinism" / "seed_15.mmd" +def _route(**attributes) -> RoutedPath: + route = RoutedPath( + Edge("source", "target", "line"), + "line", + [ + (0.0, 0.0), + (10.0, 0.0), + (10.0, 10.0), + (20.0, 10.0), + (20.0, 20.0), + (30.0, 20.0), + ], + ) + for name, value in attributes.items(): + setattr(route, name, value) + return route + + +@pytest.mark.parametrize( + ("attributes", "owned_ranks"), + ( + pytest.param({}, frozenset(), id="unplanned"), + pytest.param( + {"route_system_owned_segment_ranks": (2,)}, + frozenset({1, 2, 3}), + id="member-boundary", + ), + pytest.param( + {"convergence_owned_segment_ranks": (2,)}, + frozenset({1, 2, 3}), + id="convergence-boundary", + ), + pytest.param( + {"exit_shared_opening_points": ((0.0, 0.0), (10.0, 0.0))}, + frozenset({0, 1}), + id="shared-opening", + ), + pytest.param( + {"fan_plan_id": "fan-plan"}, + frozenset(range(5)), + id="fan-plan", + ), + pytest.param( + {"fan_route_emitter": "fan-emitter"}, + frozenset(range(5)), + id="fan-emitter", + ), + pytest.param( + {"exit_lane_transition_plan_id": "transition-plan"}, + frozenset(range(5)), + id="lane-transition", + ), + pytest.param( + { + "exit_turn_plan_id": "exit-plan", + "exit_turn_axis_id": "exit-axis", + "exit_turn_segment_rank": 2, + }, + frozenset({1, 2, 3}), + id="exit-turn-boundary", + ), + ), +) +def test_every_consumer_reads_the_canonical_ownership_matrix( + attributes: dict[str, object], owned_ranks: frozenset[int] +) -> None: + route = _route(**attributes) + observed = frozenset( + rank + for rank in range(len(route.points) - 1) + if planner_owns_segment(route, rank) + ) + + assert observed == owned_ranks + assert all( + normalize._planner_owns_channel(SimpleNamespace(route=route, idx=rank)) + == (rank in owned_ranks) + for rank in range(len(route.points) - 1) + ) + assert member_geometry.planner_owns_segment is planner_owns_segment + assert cohort_integration.planner_owns_segment is planner_owns_segment + assert routing_invariants.planner_owns_segment is planner_owns_segment + + +def test_allocation_can_explicitly_relinquish_one_pending_exit_turn() -> None: + route = _route( + exit_turn_plan_id="pending-exit", + exit_turn_axis_id="pending-axis", + exit_turn_segment_rank=2, + ) + + assert {rank for rank in range(5) if planner_owns_segment(route, rank)} == {1, 2, 3} + assert not any( + planner_owns_segment( + route, + rank, + relinquished_exit_turn_plan_ids=frozenset({"pending-exit"}), + ) + for rank in range(5) + ) + + @pytest.fixture(scope="module") -def seed_15_failure() -> str: - try: - render_string(SEED_15.read_text()) - except Exception as error: - return str(error) - return "" +def seed_15_production(): + graph = prepare_graph(SEED_15.read_text(), source_dir=str(SEED_15.parent)) + return build_observed_render_plan(graph, resolve_theme(None, graph)) + + +def _render_route(observed, edge: ResolvedEdge): + return next( + (route, points) + for route, points in zip( + observed.plan.routes, observed.plan.route_polylines, strict=True + ) + if (route.edge.source, route.edge.target, route.line_id) + == (edge.source, edge.target, edge.line_id) + ) -def test_no_ambiguous_same_line_member_channel(seed_15_failure: str) -> None: - assert "ambiguous same-line member channel" not in seed_15_failure +def test_seed_15_member_plan_and_final_route_publish_one_channel( + seed_15_production, +) -> None: + edge = ResolvedEdge("__junction_24", "s6__entry_right_14", "l1") + member = next( + plan + for plan in seed_15_production.route_plan.member_geometry_plans + if plan.edge == edge + ) + route, _points = _render_route(seed_15_production, edge) + + assert tuple(route.points) == member.points + assert member.owned_segment_ranks + assert all( + tuple(route.points[channel.segment_rank : channel.segment_rank + 2]) + == (channel.start, channel.end) + for channel in member.gap_channels + ) -def test_entry_tails_keep_their_own_columns(seed_15_failure: str) -> None: - assert ( - "line 'l2' (__junction_23->s5__entry_right_16) and line 'l1'" - not in seed_15_failure +def test_seed_15_entry_tails_keep_distinct_planned_columns( + seed_15_production, +) -> None: + l0, _ = _render_route( + seed_15_production, + ResolvedEdge("__junction_22", "s5__entry_right_16", "l0"), + ) + l2, _ = _render_route( + seed_15_production, + ResolvedEdge("__junction_23", "s5__entry_right_16", "l2"), ) + assert abs(l0.points[-2][0] - l2.points[-2][0]) == pytest.approx(OFFSET_STEP) -def test_trunk_relocation_keeps_formed_curves(seed_15_failure: str) -> None: - starved = [ - line - for line in seed_15_failure.splitlines() - if "starved below a formed curve" in line - and "'__junction_24'->'__merge_12'" in line - ] - assert starved == [] +def test_seed_15_relocated_trunk_keeps_formed_corners(seed_15_production) -> None: + route, _ = _render_route( + seed_15_production, + ResolvedEdge("__junction_24", "__merge_12", "l2"), + ) -def test_seed_15_render_emits_no_geometry_warnings() -> None: - """The corridor stack sits inside every reserved band it claims. + assert route.curve_radii + assert min(route.curve_radii) >= CURVE_RADIUS - A typed geometry warning here means a drawn corridor took clearance a - reservation spent -- the planned exit-turn frame overhanging its band's - content side is the class this locks closed. - """ - import warnings +def test_seed_15_render_emits_no_geometry_warnings() -> None: + """The corridor stack sits inside every reserved band it claims.""" with warnings.catch_warnings(record=True) as caught: warnings.simplefilter("always") render_string(SEED_15.read_text()) diff --git a/tests/test_route_reservations.py b/tests/test_route_reservations.py index cac068b03..623f9c23e 100644 --- a/tests/test_route_reservations.py +++ b/tests/test_route_reservations.py @@ -39,6 +39,7 @@ CorridorOrientation, ReservationCoordinateTranslation, RowGapRegion, + claim_is_destination_boundary_carrier, realise_reservation, ) from nf_metro.layout.routing import ( @@ -52,6 +53,7 @@ build_reserved_corridors, seat_bundle_in_claimed_bands, ) +from nf_metro.parser.model import MetroGraph, Port, PortSide, Section from nf_metro.render.manifest import read_manifest from nf_metro.render.plan import freeze_render_value from nf_metro.render.svg import ( @@ -79,6 +81,64 @@ ) ) + (ROOT / "tests" / "fixtures" / "regressions" / "stacked_collector_fanin.mmd",) + +@pytest.mark.parametrize( + ("side", "adjacent", "reflected"), + ( + (PortSide.LEFT, ColumnGapRegion(3, 4), ColumnGapRegion(5, 6)), + (PortSide.RIGHT, ColumnGapRegion(5, 6), ColumnGapRegion(3, 4)), + (PortSide.TOP, RowGapRegion(4, 5), RowGapRegion(7, 8)), + (PortSide.BOTTOM, RowGapRegion(7, 8), RowGapRegion(4, 5)), + ), +) +def test_destination_boundary_carrier_follows_port_side_and_section_span( + side: PortSide, + adjacent: ColumnGapRegion | RowGapRegion, + reflected: ColumnGapRegion | RowGapRegion, +) -> None: + section = Section( + "target", + "Target", + grid_col=4, + grid_row=5, + grid_col_span=2, + grid_row_span=3, + ) + port = Port("entry", section.id, side, is_entry=True) + graph = MetroGraph( + sections={section.id: section}, + ports={port.id: port}, + ) + + assert claim_is_destination_boundary_carrier(graph, port.id, adjacent) + assert not claim_is_destination_boundary_carrier(graph, port.id, reflected) + assert not claim_is_destination_boundary_carrier( + graph, + port.id, + CanvasRegion(CanvasSide.LEFT), + ) + + +def test_destination_boundary_carrier_requires_a_resolved_entry_port() -> None: + section = Section("target", "Target", grid_col=4, grid_row=5) + exit_port = Port("exit", section.id, PortSide.RIGHT, is_entry=False) + graph = MetroGraph( + sections={section.id: section}, + ports={exit_port.id: exit_port}, + ) + + assert not claim_is_destination_boundary_carrier( + graph, + exit_port.id, + ColumnGapRegion(4, 5), + ) + assert not claim_is_destination_boundary_carrier( + graph, + "missing", + ColumnGapRegion(4, 5), + ) + + EXPECTED_RESERVATION_CLAIMS = { "inter_row_wrap_clearance.mmd": ( (21, 1), diff --git a/tests/test_seam_lane_agreement.py b/tests/test_seam_lane_agreement.py index e227bdfd8..d3f7bbe7d 100644 --- a/tests/test_seam_lane_agreement.py +++ b/tests/test_seam_lane_agreement.py @@ -16,19 +16,23 @@ from __future__ import annotations +import copy import warnings from pathlib import Path from typing import Any import pytest +import nf_metro.layout.routing.core as routing_core import nf_metro.layout.routing.offsets as routing_offsets -from nf_metro.api import prepare_graph +from nf_metro.api import prepare_graph, resolve_theme from nf_metro.layout.constants import COORD_TOLERANCE from nf_metro.layout.routing.common import apply_route_offsets +from nf_metro.layout.routing.context import port_lane_coord from nf_metro.layout.routing.core import observe_route_edges from nf_metro.layout.routing.offsets import compute_station_offsets from nf_metro.parser.model import PortSide +from nf_metro.render.svg import build_observed_render_plan ROOT = Path(__file__).parents[1] FROZEN = ROOT / "tests" / "fixtures" / "hash_seed_determinism" @@ -42,9 +46,7 @@ ) _STUB_SLOPE_XFAILS: dict[str, str] = {} -_APPROACH_LANE_XFAILS = { - "seed_77": "the two U-detour feeders land on s9__entry_right_25 transposed", -} +_APPROACH_LANE_XFAILS: dict[str, str] = {} def _corpus_params(xfails: dict[str, str]) -> list[Any]: @@ -102,13 +104,68 @@ def test_level_seam_stubs_draw_level(path: Path) -> None: @pytest.mark.parametrize("path", _corpus_params(_APPROACH_LANE_XFAILS)) -def test_seam_approach_lands_on_the_port_lane(path: Path) -> None: +def test_seam_approach_lands_on_the_port_lane( + path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: """An approach ends on the lane its line rides inside the section. An approach that lands anywhere else leaves the drawn line broken at the port: the bundle re-orders across the seam and each mismatched line jumps lanes over zero width. """ + if path.stem == "seed_77": + captures = [] + original = routing_core._route_edges + + def capture(*args: Any, **kwargs: Any) -> Any: + result = original(*args, **kwargs) + routes, _moves, plan = result + if ( + plan is not None + and plan.corridor_cohort_ledger is not None + and plan.corridor_cohort_ledger.finalized_owned_segments is not None + ): + graph_copy, routes_copy = copy.deepcopy((args[0], routes)) + captures.append((graph_copy, dict(args[3] or {}), routes_copy, plan)) + return result + + monkeypatch.setattr(routing_core, "_route_edges", capture) + graph = prepare_graph(path.read_text(), source_dir=str(path.parent)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + build_observed_render_plan(graph, resolve_theme(None, graph)) + assert captures + final_graph, offsets, routes, plan = captures[-1] + assert plan.corridor_cohort_ledger is not None + endpoint_edges = { + claim.edge_key + for claim in plan.corridor_cohort_ledger.claims + if claim.endpoint_cohort_id is not None and claim.edge_key is not None + } + misplaced = [] + for route in routes: + edge_key = route.edge.source, route.edge.target, route.line_id + if edge_key not in endpoint_edges: + continue + port = final_graph.ports.get(route.edge.target) + if port is None or not port.is_entry: + continue + lane_coordinate = port_lane_coord( + final_graph, + final_graph.stations[route.edge.target], + route.line_id, + offsets, + ) + axis = int(port.side in (PortSide.LEFT, PortSide.RIGHT)) + endpoint = apply_route_offsets(route, offsets)[-1][axis] + if abs(endpoint - lane_coordinate) > COORD_TOLERANCE: + misplaced.append( + f"{route.edge.source}->{route.edge.target} [{route.line_id}]: " + f"ends {endpoint}, port lane {lane_coordinate}" + ) + assert not misplaced, "approaches off the port's lane:\n" + "\n".join(misplaced) + return + graph, offsets, observation = _observe(path) misplaced = [] for route in observation.routes: @@ -132,6 +189,16 @@ def test_seam_approach_lands_on_the_port_lane(path: Path) -> None: assert not misplaced, "approaches off the port's lane:\n" + "\n".join(misplaced) +def test_seed77_discovery_observer_does_not_publish_corridor_ownership() -> None: + _graph, _offsets, observation = _observe(FROZEN / "seed_77.mmd") + assert observation.plan is not None + assert observation.plan.corridor_cohort_ledger is None + assert all( + not plan.corridor_cohort_owned_segment_ranks + for plan in observation.plan.member_geometry_plans + ) + + @pytest.mark.parametrize( "name", ("seed_15.mmd", "seed_41.mmd", "seed_72.mmd", "seed_77.mmd") ) diff --git a/tests/test_split_fanout_descent_invariant.py b/tests/test_split_fanout_descent_invariant.py index 14df396b5..a48f63cfb 100644 --- a/tests/test_split_fanout_descent_invariant.py +++ b/tests/test_split_fanout_descent_invariant.py @@ -86,7 +86,7 @@ def no_fuse(routes, ctx, *, settle_frozen_arcs: bool = False) -> None: assert violations, "expected a split fan-out descent with the fuse pass off" -def test_opposite_opening_directions_share_one_exit_opening() -> None: +def test_opposite_opening_directions_are_not_bundled() -> None: graph = parse_metro_mermaid((FROZEN / "seed_15.mmd").read_text()) compute_layout(graph) @@ -96,34 +96,30 @@ def test_opposite_opening_directions_share_one_exit_opening() -> None: allow_convergence_clearance_requirements=True, ) - plans = tuple( - plan for plan in observation.plan.exit_turn_plans if plan.shared_openings + plan = next( + plan + for plan in observation.plan.exit_turn_plans + if plan.source_id == "__junction_23" ) - assert len(plans) == 1 - plan = plans[0] assert plan.disposition is ExitTurnDisposition.LEGACY - assert len(plan.shared_openings) == 1 - - opening = plan.shared_openings[0] + assert plan.shared_openings == () outbound = tuple( route for route in observation.routes - if route.exit_turn_plan_id == plan.id and route.edge.source == plan.source_id + if route.edge.source == plan.source_id and route.line_id == "l2" ) assert len(outbound) == 2 assert {route.line_id for route in outbound} == {"l2"} - assert {route.emission_member_id for route in outbound} == set(opening.member_ids) - assert len(opening.member_ids) == 2 - - source = graph.stations[plan.source_id] - assert opening.points[0] == pytest.approx((source.x, source.y)) - assert segment_direction(*opening.points[:2]) is Direction.L - assert segment_direction(*opening.points[1:3]) is Direction.D - assert source.x - opening.points[1][0] >= plan.minimum_runway - assert all( - tuple(route.points[: len(opening.points)]) == opening.points + assert len({route.emission_member_id for route in outbound}) == 2 + descent_columns = { + next( + start[0] + for start, end in zip(route.points, route.points[1:]) + if segment_direction(start, end) is Direction.D + ) for route in outbound - ) + } + assert len(descent_columns) == 2 def _opening_descents(routes) -> list[tuple[str, str, float]]:

      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 Y3~Ki}EnRnq^d5bi&bR4X4t)QA06Kt^Z2$lO diff --git a/review_pngs/seed_77_after.svg b/review_pngs/seed_77_after.svg deleted file mode 100644 index aad340775..000000000 --- a/review_pngs/seed_77_after.svg +++ /dev/null @@ -1,496 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":132.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":18.0,"x":3132.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -8 - - - -9 - - - -10 - - - -4 - - - -11 - - - -12 - - - -13 - - - -14 - - - -5 - - - -15 - - - -16 - - - -6 - - - -7 - - - -17 - - - -18 - - - -19 - - - -20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N1.0 - -N5.0 - -N3.0 - -N10.0 - -N6.0 - -N12.0 - -N14.0 - -N15.0 - -N16.0 - -N2.0 - -N8.0 - -N17.0 - -N18.0 - -N0.0 - -N7.0 - -N13.0 - -N4.0 - -N9.0 - -N11.0 - -N19.0 - -N1.1 - -N5.1 - -N3.1 - -N10.1 - -N6.1 - -N12.1 - -N14.1 - -N15.1 - -N16.1 - -N2.1 - -N8.1 - -N17.1 - -N18.1 - -N0.1 - -N7.1 - -N13.1 - -N12.2 - -N6.2 - -N15.2 - -N5.2 - -N10.2 - -N0.2 - -N17.2 - -N18.2 - -N12.3 - -N6.3 - -N15.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_77_before.png b/review_pngs/seed_77_before.png deleted file mode 100644 index bb7e3c4e25105facf0b608a6e032bbc078db918c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327321 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 IcjE8=3+^D?x&QzG diff --git a/review_pngs/seed_41_after.svg b/review_pngs/seed_41_after.svg deleted file mode 100644 index 0392ffbd2..000000000 --- a/review_pngs/seed_41_after.svg +++ /dev/null @@ -1,401 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":22.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":698.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -6 - - - -4 - - - -8 - - - -10 - - - -11 - - - -7 - - - -9 - - - -12 - - - -13 - - - -14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N0.0 - -N1.0 - -N3.0 - -N5.0 - -N9.0 - -N4.0 - -N12.0 - -N13.0 - -N2.0 - -N7.0 - -N10.0 - -N11.0 - -N6.0 - -N8.0 - -N0.1 - -N1.1 - -N9.1 - -N3.1 - -N5.1 - -N4.1 - -N12.1 - -N13.1 - -N2.1 - -N7.1 - -N10.1 - -N11.1 - -N9.2 - -N4.2 - -N5.2 - -N2.2 - -N3.2 - -N12.2 - -N2.3 - -N9.3 - -N5.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_41_before.png b/review_pngs/seed_41_before.png deleted file mode 100644 index c7046ca8cba9c74719cb6030e418a15754bfaf65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303067 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%0DI36Uo7e9z`adR_;N>lP(MFKb-2b4uc-633` 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 Y3~Ki}EnRnq^d5bi&bR4X4t)QA06Kt^Z2$lO literal 0 HcmV?d00001 diff --git a/review_pngs/seed_77_after.svg b/review_pngs/seed_77_after.svg new file mode 100644 index 000000000..aad340775 --- /dev/null +++ b/review_pngs/seed_77_after.svg @@ -0,0 +1,496 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":132.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":18.0,"x":3132.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +8 + + + +9 + + + +10 + + + +4 + + + +11 + + + +12 + + + +13 + + + +14 + + + +5 + + + +15 + + + +16 + + + +6 + + + +7 + + + +17 + + + +18 + + + +19 + + + +20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N1.0 + +N5.0 + +N3.0 + +N10.0 + +N6.0 + +N12.0 + +N14.0 + +N15.0 + +N16.0 + +N2.0 + +N8.0 + +N17.0 + +N18.0 + +N0.0 + +N7.0 + +N13.0 + +N4.0 + +N9.0 + +N11.0 + +N19.0 + +N1.1 + +N5.1 + +N3.1 + +N10.1 + +N6.1 + +N12.1 + +N14.1 + +N15.1 + +N16.1 + +N2.1 + +N8.1 + +N17.1 + +N18.1 + +N0.1 + +N7.1 + +N13.1 + +N12.2 + +N6.2 + +N15.2 + +N5.2 + +N10.2 + +N0.2 + +N17.2 + +N18.2 + +N12.3 + +N6.3 + +N15.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_77_before.png b/review_pngs/seed_77_before.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7e3c4e25105facf0b608a6e032bbc078db918c GIT binary patch literal 327321 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 IcjE8=3+^D?x&QzG literal 0 HcmV?d00001 diff --git a/review_pngs/seed_41_after.svg b/review_pngs/seed_41_after.svg new file mode 100644 index 000000000..0392ffbd2 --- /dev/null +++ b/review_pngs/seed_41_after.svg @@ -0,0 +1,401 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":22.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":698.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +5 + + + +6 + + + +4 + + + +8 + + + +10 + + + +11 + + + +7 + + + +9 + + + +12 + + + +13 + + + +14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N0.0 + +N1.0 + +N3.0 + +N5.0 + +N9.0 + +N4.0 + +N12.0 + +N13.0 + +N2.0 + +N7.0 + +N10.0 + +N11.0 + +N6.0 + +N8.0 + +N0.1 + +N1.1 + +N9.1 + +N3.1 + +N5.1 + +N4.1 + +N12.1 + +N13.1 + +N2.1 + +N7.1 + +N10.1 + +N11.1 + +N9.2 + +N4.2 + +N5.2 + +N2.2 + +N3.2 + +N12.2 + +N2.3 + +N9.3 + +N5.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_41_before.png b/review_pngs/seed_41_before.png new file mode 100644 index 0000000000000000000000000000000000000000..c7046ca8cba9c74719cb6030e418a15754bfaf65 GIT binary patch literal 303067 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%0DI36Uo7e9z`adR_;N>lP(MFKb-2b4uc-633` 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 Y3~Ki}EnRnq^d5bi&bR4X4t)QA06Kt^Z2$lO diff --git a/review_pngs/seed_77_after.svg b/review_pngs/seed_77_after.svg deleted file mode 100644 index aad340775..000000000 --- a/review_pngs/seed_77_after.svg +++ /dev/null @@ -1,496 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":132.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":18.0,"x":3132.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -8 - - - -9 - - - -10 - - - -4 - - - -11 - - - -12 - - - -13 - - - -14 - - - -5 - - - -15 - - - -16 - - - -6 - - - -7 - - - -17 - - - -18 - - - -19 - - - -20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N1.0 - -N5.0 - -N3.0 - -N10.0 - -N6.0 - -N12.0 - -N14.0 - -N15.0 - -N16.0 - -N2.0 - -N8.0 - -N17.0 - -N18.0 - -N0.0 - -N7.0 - -N13.0 - -N4.0 - -N9.0 - -N11.0 - -N19.0 - -N1.1 - -N5.1 - -N3.1 - -N10.1 - -N6.1 - -N12.1 - -N14.1 - -N15.1 - -N16.1 - -N2.1 - -N8.1 - -N17.1 - -N18.1 - -N0.1 - -N7.1 - -N13.1 - -N12.2 - -N6.2 - -N15.2 - -N5.2 - -N10.2 - -N0.2 - -N17.2 - -N18.2 - -N12.3 - -N6.3 - -N15.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_77_before.png b/review_pngs/seed_77_before.png deleted file mode 100644 index bb7e3c4e25105facf0b608a6e032bbc078db918c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327321 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 IcjE8=3+^D?x&QzG diff --git a/review_pngs/seed_41_after.svg b/review_pngs/seed_41_after.svg deleted file mode 100644 index 0392ffbd2..000000000 --- a/review_pngs/seed_41_after.svg +++ /dev/null @@ -1,401 +0,0 @@ - - - - -{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":1058,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l0"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1516.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1576.0,"y":122.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1846.0,"y":124.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1906.0,"y":124.0},{"groups":["l0","l4"],"h":14.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1726.0,"y":428.0},{"groups":["l4"],"h":10.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1786.0,"y":430.0},{"groups":["l2","l4"],"h":14.0,"id":"n2_2","label":"N2.2","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1846.0,"y":396.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n2_3","label":"N2.3","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":1925.7,"y":352.0},{"groups":["l0","l1"],"h":14.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2084.5,"y":122.0},{"groups":["l1","l3"],"h":14.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2144.5,"y":126.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n3_2","label":"N3.2","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2227.5,"y":168.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2204.5,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n4_1","label":"N4.1","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2144.5,"y":704.0},{"groups":["l0","l1","l2"],"h":22.0,"id":"n4_2","label":"N4.2","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2084.5,"y":698.0},{"groups":["l0","l1","l4"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":26.0,"x":2076.5,"y":386.0},{"groups":["l1","l2"],"h":10.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2078.5,"y":426.0},{"groups":["l2","l3"],"h":10.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":14.0,"x":2134.5,"y":466.0},{"groups":["l1","l3"],"h":10.0,"id":"n5_3","label":"N5.3","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":18.0,"x":2196.5,"y":506.0},{"groups":["l0","l1","l3"],"h":22.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":1906.0,"y":698.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1576.0,"y":700.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":1516.0,"y":696.0},{"groups":["l0","l2","l4"],"h":18.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":1366.0,"y":696.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1209.0,"y":734.0},{"groups":["l0","l1"],"h":14.0,"id":"n9_1","label":"N9.1","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1126.0,"y":694.0},{"groups":["l0","l2"],"h":14.0,"id":"n9_2","label":"N9.2","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1066.0,"y":694.0},{"groups":["l1","l2"],"h":14.0,"id":"n9_3","label":"N9.3","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":983.0,"y":774.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":856.0,"y":700.0},{"groups":["l0","l2","l3","l4"],"h":34.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":796.0,"y":704.0},{"groups":["l2","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":640.0,"y":696.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_1","label":"N11.1","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":580.0,"y":696.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":416.0,"y":700.0},{"groups":["l2","l3"],"h":22.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":356.0,"y":698.0},{"groups":["l2"],"h":10.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":296.0,"y":692.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":140.0,"y":698.0},{"groups":["l3"],"h":10.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":80.0,"y":700.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"}],"title":"Candidate recovery fuzz","version":"1.0","width":2358} - -Candidate recovery fuzz - - -1 - - - -2 - - - -3 - - - -5 - - - -6 - - - -4 - - - -8 - - - -10 - - - -11 - - - -7 - - - -9 - - - -12 - - - -13 - - - -14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -N0.0 - -N1.0 - -N3.0 - -N5.0 - -N9.0 - -N4.0 - -N12.0 - -N13.0 - -N2.0 - -N7.0 - -N10.0 - -N11.0 - -N6.0 - -N8.0 - -N0.1 - -N1.1 - -N9.1 - -N3.1 - -N5.1 - -N4.1 - -N12.1 - -N13.1 - -N2.1 - -N7.1 - -N10.1 - -N11.1 - -N9.2 - -N4.2 - -N5.2 - -N2.2 - -N3.2 - -N12.2 - -N2.3 - -N9.3 - -N5.3 - - -Line 1 - -Line 2 - -Line 3 - -Line 4 - -Line 5 -created with nf-metro v1.1.0+dev - diff --git a/review_pngs/seed_41_before.png b/review_pngs/seed_41_before.png deleted file mode 100644 index c7046ca8cba9c74719cb6030e418a15754bfaf65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303067 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%0DI36Uo7e9z`adR_;N>lP(MFKb-2b4uc-633` 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 Y3~Ki}EnRnq^d5bi&bR4X4t)QA06Kt^Z2$lO literal 0 HcmV?d00001 diff --git a/review_pngs/seed_77_after.svg b/review_pngs/seed_77_after.svg new file mode 100644 index 000000000..aad340775 --- /dev/null +++ b/review_pngs/seed_77_after.svg @@ -0,0 +1,496 @@ + + + + +{"groups":[{"color":"#3779b1","id":"l0","label":"Line 1"},{"color":"#6ef362","id":"l1","label":"Line 2"},{"color":"#a66d13","id":"l2","label":"Line 3"},{"color":"#dde6c4","id":"l3","label":"Line 4"},{"color":"#156075","id":"l4","label":"Line 5"}],"height":835,"match":{"flags":"i","target":"fqProcessName","type":"regex"},"nodes":[{"groups":["l4"],"h":10.0,"id":"n0_0","label":"N0.0","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1562.0,"y":120.0},{"groups":["l1","l4"],"h":22.0,"id":"n0_1","label":"N0.1","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1622.0,"y":126.0},{"groups":["l0","l1","l2","l4"],"h":22.0,"id":"n0_2","label":"N0.2","patterns":[],"r":5.0,"region":"s0","rx":5.0,"w":10.0,"x":1682.0,"y":126.0},{"groups":["l0","l4"],"h":18.0,"id":"n1_0","label":"N1.0","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1832.0,"y":124.0},{"groups":["l0","l1","l4"],"h":18.0,"id":"n1_1","label":"N1.1","patterns":[],"r":5.0,"region":"s1","rx":5.0,"w":10.0,"x":1892.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_0","label":"N2.0","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2048.0,"y":124.0},{"groups":["l0","l1","l3","l4"],"h":18.0,"id":"n2_1","label":"N2.1","patterns":[],"r":5.0,"region":"s2","rx":5.0,"w":10.0,"x":2108.0,"y":124.0},{"groups":["l1"],"h":10.0,"id":"n3_0","label":"N3.0","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2856.0,"y":477.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n3_1","label":"N3.1","patterns":[],"r":5.0,"region":"s3","rx":5.0,"w":10.0,"x":2796.0,"y":481.0},{"groups":["l0","l1"],"h":14.0,"id":"n4_0","label":"N4.0","patterns":[],"r":5.0,"region":"s4","rx":5.0,"w":10.0,"x":2636.0,"y":479.0},{"groups":["l0"],"h":10.0,"id":"n5_0","label":"N5.0","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3136.0,"y":477.0},{"groups":["l0","l3"],"h":14.0,"id":"n5_1","label":"N5.1","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":3076.0,"y":479.0},{"groups":["l3","l4"],"h":14.0,"id":"n5_2","label":"N5.2","patterns":[],"r":5.0,"region":"s5","rx":5.0,"w":10.0,"x":2993.0,"y":523.0},{"groups":["l2","l4"],"h":18.0,"id":"n6_0","label":"N6.0","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2276.0,"y":132.0},{"groups":["l2","l3"],"h":14.0,"id":"n6_1","label":"N6.1","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2336.0,"y":130.0},{"groups":["l3"],"h":10.0,"id":"n6_2","label":"N6.2","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2396.0,"y":132.0},{"groups":["l3","l4"],"h":14.0,"id":"n6_3","label":"N6.3","patterns":[],"r":5.0,"region":"s6","rx":5.0,"w":10.0,"x":2456.0,"y":134.0},{"groups":["l4"],"h":10.0,"id":"n7_0","label":"N7.0","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2456.0,"y":485.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n7_1","label":"N7.1","patterns":[],"r":5.0,"region":"s7","rx":5.0,"w":10.0,"x":2396.0,"y":481.0},{"groups":["l0","l1","l2","l3"],"h":22.0,"id":"n8_0","label":"N8.0","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2108.0,"y":483.0},{"groups":["l3"],"h":10.0,"id":"n8_1","label":"N8.1","patterns":[],"r":5.0,"region":"s8","rx":5.0,"w":10.0,"x":2048.0,"y":489.0},{"groups":["l1","l3"],"h":14.0,"id":"n9_0","label":"N9.0","patterns":[],"r":5.0,"region":"s9","rx":5.0,"w":10.0,"x":1892.0,"y":479.0},{"groups":["l0","l1"],"h":14.0,"id":"n10_0","label":"N10.0","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1682.0,"y":479.0},{"groups":["l1","l3"],"h":14.0,"id":"n10_1","label":"N10.1","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1622.0,"y":483.0},{"groups":["l0","l3"],"h":14.0,"id":"n10_2","label":"N10.2","patterns":[],"r":5.0,"region":"s10","rx":5.0,"w":10.0,"x":1539.0,"y":519.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n11_0","label":"N11.0","patterns":[],"r":5.0,"region":"s11","rx":5.0,"w":10.0,"x":2636.0,"y":132.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_0","label":"N12.0","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1412.0,"y":559.0},{"groups":["l2"],"h":10.0,"id":"n12_1","label":"N12.1","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1352.0,"y":561.0},{"groups":["l0","l2"],"h":14.0,"id":"n12_2","label":"N12.2","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1292.0,"y":519.0},{"groups":["l0","l3"],"h":14.0,"id":"n12_3","label":"N12.3","patterns":[],"r":5.0,"region":"s12","rx":5.0,"w":10.0,"x":1212.3,"y":479.0},{"groups":["l0","l4"],"h":18.0,"id":"n13_0","label":"N13.0","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1082.0,"y":481.0},{"groups":["l0","l3","l4"],"h":18.0,"id":"n13_1","label":"N13.1","patterns":[],"r":5.0,"region":"s13","rx":5.0,"w":10.0,"x":1022.0,"y":481.0},{"groups":["l2","l3"],"h":14.0,"id":"n14_0","label":"N14.0","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2796.0,"y":126.0},{"groups":["l0","l2"],"h":14.0,"id":"n14_1","label":"N14.1","patterns":[],"r":5.0,"region":"s14","rx":5.0,"w":10.0,"x":2856.0,"y":122.0},{"groups":["l0","l2"],"h":10.0,"id":"n15_0","label":"N15.0","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":18.0,"x":3132.0,"y":160.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_1","label":"N15.1","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":200.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_2","label":"N15.2","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":240.0},{"groups":["l1","l2"],"h":10.0,"id":"n15_3","label":"N15.3","patterns":[],"r":5.0,"region":"s15","rx":5.0,"w":14.0,"x":3130.0,"y":280.0},{"groups":["l1","l2","l4"],"h":18.0,"id":"n16_0","label":"N16.0","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":590.0,"y":477.0},{"groups":["l2"],"h":10.0,"id":"n16_1","label":"N16.1","patterns":[],"r":5.0,"region":"s16","rx":5.0,"w":10.0,"x":530.0,"y":481.0},{"groups":["l0","l3"],"h":14.0,"id":"n17_0","label":"N17.0","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":866.0,"y":479.0},{"groups":["l3","l4"],"h":18.0,"id":"n17_1","label":"N17.1","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":806.0,"y":485.0},{"groups":["l2","l4"],"h":14.0,"id":"n17_2","label":"N17.2","patterns":[],"r":5.0,"region":"s17","rx":5.0,"w":10.0,"x":746.0,"y":523.0},{"groups":["l0","l3","l4"],"h":22.0,"id":"n18_0","label":"N18.0","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":380.0,"y":483.0},{"groups":["l3","l4"],"h":18.0,"id":"n18_1","label":"N18.1","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":320.0,"y":485.0},{"groups":["l0","l1","l3","l4"],"h":22.0,"id":"n18_2","label":"N18.2","patterns":[],"r":5.0,"region":"s18","rx":5.0,"w":10.0,"x":237.0,"y":523.0},{"groups":["l0","l1","l2","l3","l4"],"h":26.0,"id":"n19_0","label":"N19.0","patterns":[],"r":5.0,"region":"s19","rx":5.0,"w":10.0,"x":110.0,"y":485.0}],"regions":[{"id":"s0","label":"Section 0"},{"id":"s1","label":"Section 1"},{"id":"s2","label":"Section 2"},{"id":"s3","label":"Section 3"},{"id":"s4","label":"Section 4"},{"id":"s5","label":"Section 5"},{"id":"s6","label":"Section 6"},{"id":"s7","label":"Section 7"},{"id":"s8","label":"Section 8"},{"id":"s9","label":"Section 9"},{"id":"s10","label":"Section 10"},{"id":"s11","label":"Section 11"},{"id":"s12","label":"Section 12"},{"id":"s13","label":"Section 13"},{"id":"s14","label":"Section 14"},{"id":"s15","label":"Section 15"},{"id":"s16","label":"Section 16"},{"id":"s17","label":"Section 17"},{"id":"s18","label":"Section 18"},{"id":"s19","label":"Section 19"}],"title":"Candidate recovery fuzz","version":"1.0","width":3266} + +Candidate recovery fuzz + + +1 + + + +2 + + + +3 + + + +8 + + + +9 + + + +10 + + + +4 + + + +11 + + + +12 + + + +13 + + + +14 + + + +5 + + + +15 + + + +16 + + + +6 + + + +7 + + + +17 + + + +18 + + + +19 + + + +20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N1.0 + +N5.0 + +N3.0 + +N10.0 + +N6.0 + +N12.0 + +N14.0 + +N15.0 + +N16.0 + +N2.0 + +N8.0 + +N17.0 + +N18.0 + +N0.0 + +N7.0 + +N13.0 + +N4.0 + +N9.0 + +N11.0 + +N19.0 + +N1.1 + +N5.1 + +N3.1 + +N10.1 + +N6.1 + +N12.1 + +N14.1 + +N15.1 + +N16.1 + +N2.1 + +N8.1 + +N17.1 + +N18.1 + +N0.1 + +N7.1 + +N13.1 + +N12.2 + +N6.2 + +N15.2 + +N5.2 + +N10.2 + +N0.2 + +N17.2 + +N18.2 + +N12.3 + +N6.3 + +N15.3 + + +Line 1 + +Line 2 + +Line 3 + +Line 4 + +Line 5 +created with nf-metro v1.1.0+dev + diff --git a/review_pngs/seed_77_before.png b/review_pngs/seed_77_before.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7e3c4e25105facf0b608a6e032bbc078db918c GIT binary patch literal 327321 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