Files
osmWorkflow/.trellis/tasks/archive/2026-08/08-17-native-road-marking-semantics/design.md

1.2 KiB

Design

The compiler owns marking semantics. center-line-style remains segment scoped because a bidirectional road segment shares one centre-line decision. edge-line-style is scoped to { roadId, side }, since a directional carriageway has independently editable left and right outside edges.

double: true is valid only with yellow solid centre lines. Generation emits two 0.32m-separated parallel polygons for each normal solid mark, preserving junction cutback and crosswalk/stop-line clearance. This keeps the existing solid line implementation and avoids a separate geometry pipeline.

Road edge lines use the existing road-edge offset geometry. A solid style is one continuous buffered offset line; a dashed style uses deterministic 2m marks at 4m spacing. Both carry effective_style, source IDs, side, and native provenance.

The Workbench uses one marking form with an explicit selected target type. Only a centre-line target exposes the double-yellow option; lane separators and edge lines retain the ordinary colour/pattern choices. Staged changes pass through the existing save and regenerate flow, so browser, compiler and Blender read the same persisted override.