Skip to content

Route emission inventory

This inventory names every production stage that can create, move, suppress, validate or observe routed geometry. Its boundary is _route_edges. Section placement and reservation settlement happen before it, and SVG drawing reads its final RoutedPath values afterwards.

Every inter-section member is classified once during planning. Planning then does one of two things:

  • a convergence plan owns the member geometry; or
  • a member-geometry plan builds and freezes the classified family’s complete production path.

Production emission consumes that decision. It does not run an ordered handler chain, retry another family or reconstruct a legacy route. There is therefore one inter-section dispatch surface: the planned family classification.

TB-section, entry-runway and intra-section handlers remain for local edges. They are not an alternative inter-section routing system.

StageOwnershipContract
build_exit_turn_executionPlannerStates source-turn axes and seams, or records a diagnostic verdict for the system owner.
classify_inter_section_familyClassifierSelects one stable family ID for each inter-section member.
build_convergence_plan_executionPlannerPlans supported convergence trunks, landings, continuations, and coverage.
classify_route_system_dispositionsSystem ownerChooses the geometry owner. A complete convergence plan wins; otherwise complete member geometry owns the system. Subordinate declined verdicts are recorded as superseded diagnostics.
build_member_geometry_executionMember plannerBuilds classified members in canonical order, settles their shared channels, and freezes production paths.
settle_global_convergence_executionGlobal allocatorReconciles planned convergence lanes against immutable member channels.
build_route_system_emission_executionSystem ownerVerifies that every emitted or explicitly covered member has exactly one geometry decision. Production rejects any remaining compatibility disposition.
_route_edges system loopEmitterCopies member plans or consumes convergence plans once, in canonical system and member order.

RouteMemberGeometryPlan.owns_complete_path marks systems whose subordinate exit, fan, or convergence planner could not own the shared frame. The member planner settles that frame before freezing it, so post-emission normalization cannot recreate the former compatibility route by moving the copied path.

EmitterMembersContract
route_rail_edgesRail modeDedicated rail geometry owner, attributed to the same canonical systems and members.
fresh_member_routePlanned inter-section membersCopies a frozen member-geometry plan. It performs no classification or geometric construction.
_route_inter_sectionInter-section planning onlyBuilds the already-classified family template. A planned family that declines is an error, not a fall-through.
_route_tb_sectionLocal TB/BT membersHandles local section geometry after no inter-section family applies.
_route_entry_runwayLocal entry runwaysBuilds compressed local runway geometry.
_route_intra_sectionOther local membersFinal local-edge emitter.

Shared channel settlement runs while member paths are mutable. Gap slots, trunk slots, opposing flows, peel-off risers, same-line coincidence, fan traverses, convergent descents, destination-tail bundles and corridor-clearance bands are all resolved before the owning plan freezes them.

Destination-tail settlement returns the exact horizontal segment identities it owns. Corridor holding treats only those segments as fixed, so perpendicular channels remain free to settle. That keeps ownership narrow and avoids freezing an entire route just because one tail band is planned.

The post-emission pass chain remains for local edges and unowned coordinates. Its ownership predicates prevent it from moving a frozen convergence or member path. The old compatibility-only wrap repair, merge-feeder landing and covered-hop deletion machinery has been removed.

Planner reason registries remain as diagnostics and as a fail-closed boundary for hand-built or unsupported inputs. They do not select a production emitter. On the routable corpus, every system reaches emission as PLANNED, and every diagnostic reason is owned by its named planner.

RouteSystem.superseded_verdicts explains cases where a child planner declined a local ownership claim but the system’s actual geometry owner still planned the complete path. An unregistered reason, a missing member template or a production compatibility disposition aborts routing.

The closing checks require:

  • one emitted or explicitly covered binding per canonical member;
  • one geometry owner per emitted member;
  • immutable planned coordinates at every owned segment;
  • exact route-system, member, plan and reservation attribution;
  • valid fan, exit-turn, convergence and curve geometry.

Observation uses the same planning and emission path as ordinary routing. It adds RoutePlan records and bindings, but it cannot select another family or change the rendered geometry.

The family table is documented in inter-section dispatch, and gate-arm coverage is published in routing gate coverage.