# Signed corridor candidates in the traffic preview, r367

`retailRouteLaneOffset()` previously rejected every corridor adjustment whose
computed offset was negative. This contradicted the extracted `0x34121`
waypoint representation: the corridor adjustment bytes are signed, and the
retail corridor term scales the selected signed byte by
`max(widthA,widthB) / 256 / 128` (`traffic-lane-action.md`, source corridor
sample construction r145). A route-side candidate could therefore be lost
before the preview checked its pavement and road texture.

The preview now considers available direct selectors 2–5 on either side,
ordered by smallest absolute displacement. It still applies a candidate only
when the source road triangles support it and either it leaves the median or
reduces the sampled source paint score. The raw center sample and road texture
remain authoritative for this fallback; it does not synthesize lane markings.

A packaged Chrome debug probe at L4RA route 400, distance 0, accepted the source
candidate `-5.740 m`; the shifted center is supported by the exported road
triangles. Further negative candidates also occur along this route. The previous
positive-only filter always returned zero at those samples.
The reviewed packaged driving capture at route 400 loaded with no page errors
and showed five ambient vehicles on the road, but those currently rendered
poses had zero lane offset. That capture verifies the surrounding scene still
loads; it does not visually demonstrate the changed candidate, which depends
on the route phase selected at spawn. The capture is [`513-r367-signed-corridor-route400.png`](../webgl-city/review/images/513-r367-signed-corridor-route400.png).

This is still a lane-hint preview, not the retail driver's lane choice. The
route's available selector bytes do not provide the ambient actor's active
FuturePoint subtype, phase/cursor, candidate weights, or selector state. The
next exact evidence is one class-2 XP actor captured through
`0x0041d530` with its candidate records and selected phase/cursor, the subtype
used to resolve the queue, and the resulting FuturePoint XYZ queue; the same
actor's pose should then be recorded at `0x00416120` / `0x00408820`. Until that
snapshot is available, the preview cannot claim which side retail traffic
selects.
