# Combined-world ambient route union, r346

## Change

When the viewer uses `world=combined`, ambient traffic now loads routes from all eight authored region route files. Each route is identified as `(region, numeric route key)`. The region is carried through spawn/driver state, route probes, nearby-route diagnostics, and journey continuation state so reused numeric IDs cannot alias each other.

The eight-region city is a render/road-support union. This change does not create new links between route graphs. Transition records continue to be matched using the route nodes from that route's own region, with the existing endpoint reciprocity and geometry checks. Player start selection, density polygons, and optional route/transition overlays stay selected-region scoped.

## Filtered runtime route counts

Counts below apply the viewer's existing `waypoint_count >= 4` and 3D route length `>= 30` world-unit filters to `freeroam-traffic-routes.json`:

| Region | Routes |
| --- | ---: |
| L4RA | 832 |
| L4RB | 99 |
| L4RC | 54 |
| L4RD | 26 |
| L4RF | 33 |
| L4RG | 44 |
| L4RH | 0 |
| L4RR | 0 |
| **Total** | **1,088** |

The empty RH/RR route files remain represented in the active-region diagnostics. The traffic budget still caps rendered ambient cars at seven; all route records are candidates, not simultaneously spawned vehicles.

## ID and geometry audit

Numeric route keys are reused across region source files, so numeric IDs alone are not safe route identities. An earlier same-key audit compared 403 cross-region key matches; the minimum mean nearest route-point distance was about 37 m, with no exact same-road match. This implementation therefore namespaces every runtime key instead of merging same-ID entries.

To check for duplicate geometry with different IDs, an offline audit sampled source route polylines at up to 5 m spacing. It compared cross-region samples in a spatial grid, accepting point matches within 0.8 m only when route tangents were parallel or antiparallel with absolute dot product at least 0.98. No route pair had more than 50% of both routes covered by such matches. This strict mutual-coverage rule detects copied routes while ignoring a shared junction or short common road segment. It does not prove that no shorter partial overlap exists.

## Live packaged capture

Chrome loaded `dist/webgl-city/?world=combined&region=L4RB&debug&radius=220` from the local HTTP server. Runtime diagnostics reported all eight active route regions, the counts above, an L4RB start on route 101, three rendered ambient cars, and no page error. The image is `webgl-city/review/images/combined-l4rb-route-union.png`; its packaged copy is under `dist/webgl-city/review/images/`.

The combined mesh manifest, first compressed mesh chunk, route JSON, and node JSON returned HTTP 200. The scene reached its ready state and all 229 nearby textures uploaded with the WebGL context intact. The capture verifies that L4RB remains drivable while the combined runtime accepts region-namespaced route records. It is not a validation of retail traffic speeds, lane decisions, right-of-way, or intersection behavior.
