# Native road control markings ## Goal Give Nantaizi's native-road provider inspectable, source-traceable crosswalk and vehicle stop-line geometry, so intersection control markings do not depend on the osm2streets render output. ## Confirmed Facts - Native road output already owns road surfaces, sidewalks, lane separators, repeated direction arrows, and explicit junction-turn arrows. - Nantaizi's OSM input contains explicit marked crossings, including zebra and traffic-signal crossings. The existing osm2streets output currently has 48 crosswalk-stripe polygons and 8 stop-line polygons. - `build-osm2streets-qgis.js:1067` derives these markings from crossing nodes plus osm2streets driving lanes. Native must not read that rendered geometry; it can reuse only the tested geometry rules after adapting them to native directed lanes and junction plans. - Existing Blender materials already provide `crosswalks` and `vehicle_stop_lines`; native may map into them without changing the legacy osm2streets layer registry. ## Requirements - R1: Native compilation uses explicit marked OSM crossing nodes only, and emits crosswalk-stripe polygons plus approach stop lines only where safe native directed-road placement exists. - R2: Each generated feature preserves crossing node, OSM road, native road or lane, direction, placement method, and relevant junction provenance. - R3: The Road Workbench independently toggles, selects, and describes native crosswalks and stop lines in Chinese. - R4: Native Blender and Cesium builds consume both layers with the existing control-marking materials; no `package/` publication is part of validation. - R5: Missing compatible road context, ambiguous geometry, and unsupported crossing inputs are diagnostics; the compiler must not invent a crossing. ## Acceptance Criteria - [ ] Nantaizi native output contains valid `crosswalks.geojson` and `vehicle_stop_lines.geojson` features with source-traceable properties, without reading osm2streets rendered layers. - [ ] A Workbench user can toggle and select either marking type and see the crossing node, associated road/direction, and placement evidence. - [ ] Native Blender/Cesium output contains both marking types using existing materials, after `blender,cesium,preview --road-provider native` and without publishing `package/`. - [ ] Tests cover a marked crossing, an unmarked crossing skip, a missing or ambiguous native-road placement skip, and output-layer contract checks. ## Out Of Scope - Hand-placed control-marking overrides, traffic-signal state-machine changes, freehand polygon editing, processing another region, and importing osm2streets-rendered crosswalk geometry. ## Key Decision The first version is explicit-OSM-only. This is feasible for Nantaizi and keeps control markings evidence-backed; missing data remains a diagnostic for OSM improvement rather than a silent geometric guess.