Route emission inventory
Route emission covers every production stage that can create, move, suppress, validate, or observe routed geometry.
The boundary is _route_edges.
Section placement and reservation settlement happen before it, and SVG drawing reads its final RoutedPath values afterwards.
One classification per member
Section titled “One classification per member”Every inter-section member is classified once during planning. Planning then does one of two things:
- a convergence plan owns the member geometry
- 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. The planned family classification is therefore the single inter-section dispatch surface.
TB-section, entry-runway, and intra-section handlers remain for local edges. They are not an alternative inter-section routing system.
System execution
Section titled “System execution”| Stage | Ownership | Contract |
|---|---|---|
build_exit_turn_execution | Planner | States source-turn axes and seams, or records a diagnostic verdict for the system owner. |
classify_inter_section_family | Classifier | Selects one stable family ID for each inter-section member. |
build_convergence_plan_execution | Planner | Plans supported convergence trunks, landings, continuations, and coverage. |
classify_route_system_dispositions | System owner | Chooses 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_execution | Member planner | Builds classified members in canonical order, settles their shared channels, and freezes production paths. |
settle_global_convergence_execution | Global allocator | Reconciles planned convergence lanes against immutable member channels. |
build_route_system_emission_execution | System owner | Verifies that every emitted or explicitly covered member has exactly one geometry decision. Production rejects any remaining compatibility disposition. |
_route_edges system loop | Emitter | Copies 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.
Post-emission normalization therefore cannot recreate the former compatibility route by moving the copied path.
Emitters
Section titled “Emitters”| Emitter | Members | Contract |
|---|---|---|
route_rail_edges | Rail mode | Dedicated rail geometry owner, attributed to the same canonical systems and members. |
fresh_member_route | Planned inter-section members | Copies a frozen member-geometry plan. It performs no classification or geometric construction. |
_route_inter_section | Inter-section planning only | Builds the already-classified family template. A planned family that declines is an error, not a fall-through. |
_route_tb_section | Local TB/BT members | Handles local section geometry after no inter-section family applies. |
_route_entry_runway | Local entry runways | Builds compressed local runway geometry. |
_route_intra_section | Other local members | Final local-edge emitter. |
Settlement
Section titled “Settlement”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 all settle 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. Perpendicular channels therefore remain free to settle. That keeps ownership narrow and avoids freezing an entire route 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.
Compatibility records
Section titled “Compatibility records”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 its named planner owns every diagnostic reason.
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.
Validation and observation
Section titled “Validation and observation”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.
Inter-section dispatch documents the family table, and routing gate coverage publishes the gate-arm coverage.