7c45c21f8ce43144eef2b808e3566ba9d76ef6e7
Handles for the two control-marking kinds, completing what step 1 made solvable. They drag along the approach tangent and reuse the whole existing chain — hit test, projection, clamp, ghost, debounce, arbitration, preview, save, undo — without changes to any of it. That reuse is the point of having modelled edits as kind + anchor + axis + value. Ownership: design.md gives junction reserve interiors to JunctionTools, but that rule is about junction *shape* — width, cutback, corner. Placement of the zebra and the stop line is offered nowhere else, so the main map takes it. A segment selection therefore returns its cross-section handles plus the control markings at its ends, and shape kinds stay out so the two editors never offer the same edit. The test that asserted "road kinds only" now states this rule instead. The default placements move to the solver, which owns the editable bounds and is the module a test keeps free of fs/path; native-road.js imports them rather than the reverse, so the IO-free property survives. Deliberately not done: the handle-target generalisation this task's PRD listed as step 2. These kinds persist exactly like the existing junction constraints, so there is no second write target to abstract over yet. Building the discriminator now would be designing for one hypothetical case; the signal pose work will provide the real second case. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Road Compiler
Compiles a native-road-package/v1 RoadCompilerInput JSON file into native-road GeoJSON, diagnostics, traffic-signal runtime assets, and a deterministic completion marker.
npx road-compiler --input /absolute/path/road-compiler.input.json
The compiler does not read host area configuration. The caller owns configuration normalization and creates the input JSON. Successful compilation writes exactly one NATIVE_ROAD_COMPILE_DONE JSON marker to stdout.
Run npm test after npm ci to validate the package and its two self-contained area fixtures without the host repository. The migrated baselines remain upgrade corpus; the host repository owns the strict path-normalized parity gate.
Description
Languages
JavaScript
98.9%
HTML
1.1%