Skip to content

Epic P4: Junctions & Signals #253

Description

@JArmandoAnaya

Pillar P4 of the Road to Parity roadmap · Milestone P4 — Junctions & Signals · P4 discovery.

Status (2026-07-21): restructured by the 2026-07 realignment — the remaining scope is cut into three behavior areas in this order: junction control (p4-s3/s4) → junction interior surface control (p4-s5) → maneuvers + signalization + signs (p4-s6…s9). 9/9 sprints done — all P4 sprints merged. p4-s7 (#228) shipped its own single-part rm:signalmount linkage (signal odr_id → object odr_ids, already list-shaped) rather than waiting on p6-s9 (assemblies, #323); when #323 lands it swaps a model id for an assembly id with no schema change.
Explicit deliverable — DONE: the stopline entity was designed once (P4 discovery §3) and landed in p4-s3 (#318): records sparse on Junction keyed by RoadEnd, one pure junction_stoplines() query shared by the mesher, the writer, the editor and the bindings, and rm:stopline persistence per ADR-0008 (materialized signalLines object = Layer 0, userData = Layer 1). The P3 crosswalk companion migrated onto it; p4-s6 maneuver termination reuses it. The #318 GUI hand-check (drag/flip/save/reload/third-party viewer) is still pending the maintainer — recorded as GW-5 step 5b.
Every new non-ASAM carrier in this pillar (rm:stopline, locked-state/span extensions, span records, rm:maneuver, rm:phases) follows ADR-0008.
Follow-ups: #311 (pre-existing write_xodr segfault on a junction with a dangling arm road) RESOLVED 2026-07-20 in PR #330 — p4-s4 is no longer gated, #313 (USD compliance wrapper migration; CI pins usd-core<26.8 meanwhile).
GW-3 steps 6–11 are implementable — the hand-run gates this epic together with GW-4.
Update (2026-07-23, field triage batch 2 — #397): the pillar was sprint-complete; it reopens for one release-blocking item — bug #402 (junction-floor sidewalk band segmentation: jagged seams + zero-band collapse; not a #385 regression, lands before #356). Gates v0.1.0 per the batch-2 decision. GW-3/GW-4 hand-run status is unaffected until it lands.
Update (2026-07-25): #402 landed (PR #441, main 408266a). The pillar's remaining open item is #356 (curved-approach corner solver, still DEFERRED pending a field repro), plus the GW-3/GW-4 hand-runs — so this epic stays open.

Update (2026-07-27): two changes. #356's deferral premise is gone — it reproduces in the headless harness (PR #445, main dd593d7; the missing ingredient was the sidewalk profile, no field file needed), so the solver redesign is unblocked. And #440 (junction floors + ground surfaces are untextured — no UVs; split out of #360) is homed here per maintainer decision, release-blocking under the amended gate rule (PR #458: follow-ups of gated issues inherit blocking status).

Update (2026-08-02): #356 is fixed (PR #559, main d41052f) — the solver redesign the 2026-07-22 findings called for, verified headlessly rather than visually as that comment predicted would be necessary. The pillar's remaining open items are #440, #480, #534, #537 and the GW-3/GW-4 hand-runs, so this epic stays open.

Scope

Corner tool (done: control-vertex/extent reshape, radius, materials); junction control: stopline entity + per-road default stoplines, locked/custom junctions (manual create, convert auto↔locked, add/remove roads, merge, parallel-road s-span and single-road junctions, corner re-derivation); junction interior surface control: per-span visualization, Include Samples, Sort Index; maneuvers + signalization + signs: maneuver roads with Lock Geometry and Turn Type; Signal tool with auto-signalize templates and <controller> export; Signal Phase Editor in the 2D Editor pane; Sign tool with editable text.

Feeds

GW-3, GW-4.

Sprints

Follow-ups

2026-07-31 (roadmap review): filed #534/#537 — junction-side xodr fidelity findings in modeled scopes (the preservation sweep #453 will not repair them).

Supersedes

(none)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    epicMilestone/phase epic — tracks a group of issuespillar:P4Road to Parity pillar P4

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions