Files
osmWorkflow/.trellis/tasks/08-18-native-only-pipeline-replacement/design.md

2.3 KiB

Design

Provider Boundary

build-area.js will resolve a native provider by default. Native stages consume only OSM, native road overrides, and native-road/ outputs. Legacy intermediates, reimport, and osm2streets Blender input remain behind explicit legacy selection and keep their existing output contract.

Native Data Flow

OSM + native-road-overrides.json
  -> compile-native-roads.js
  -> native-road/layers/*.geojson + compiled.json + traffic-signals.json
  -> Blender generate_scene.py --native-road --traffic-signals
  -> .blend
  -> Cesium/package GLB + manifest + runtime/traffic-signals.json
  -> preview HTML + optional native vehicle route

The native compiler is the sole authority for road geometry, lane semantics, intersection surfaces, stop lines, and signal runtime. No native stage reads geojsonDir or legacy assembly files.

Preview Route

Add a native route adapter that derives route segments from compiled.json model roads/endpoints and native lane/connector geometry. If the native route cannot be built for a valid area, preview remains usable without vehicles and records a warning; missing legacy osm2streets lane polygons is never a hard failure on the native path.

Package Runtime

The package stage will copy the native-road signal runtime into its staging runtime directory and declare it in the package manifest. Preview receives the package-relative runtime URI. Legacy signal runtime publication remains conditional on the legacy provider.

Configuration And Compatibility

roadProvider defaults to native; native stages are the default stage set. QGIS config fields and legacy stage aliases remain accepted for explicit migration/debug commands, but native manifests and docs do not claim them as inputs.

The Workbench may continue to read an existing geojsonDir only for an explicitly labeled reference layer and comparison counters. Those reads are optional, isolated from native compile state, and must never become required inputs for /api/state, native editing, package publication, or preview.

Rollback

The original QGIS/osm2streets branch baseline is tagged qgis-original-baseline-20260818 on main. Reverting the native-only work can therefore use the tag or switch to main; no destructive cleanup of legacy scripts is required.