Files
osmWorkflow/.trellis/tasks/archive/2026-08/08-17-native-road-control-markings/prd.md

2.9 KiB

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.