Files
StarPilot/openpilot/starpilot/speed_limits/MAP_SOURCE.md
T

2.3 KiB

Map source boundary (disabled)

map_source.py decodes v2 mapdOut events and checks source ordering, boot-time freshness, and structural consistency. V1 remains decodable but cannot produce a candidate because it treated Python GPS Event MONOTONIC timestamps as BOOTTIME. It is not subscribed from plannerd and does not create a valid or absent SLC observation. A matched road can therefore be inspected in isolated tests without becoming a cruise ceiling, accepted-history fallback, or geographic identity claim.

The boundary keeps the GPS observation time separate from computation and output times. V2 converts a Python GPS Event's MONOTONIC timestamp to BOOTTIME only after a post-start/resume fence and clock-pair check; an offset step invalidates queued fixes and advances source generation. External fixes expire after 500 ms, internal fixes after 2 s; computation and output expire after 250 ms. These are transport/input deadlines, not proof that the selected road is correct. Linux callers must provide CLOCK_BOOTTIME nanoseconds, matching cereal and mapd output; Apple uses monotonic as the host fallback. The current plannerd live time.monotonic_ns() is not interchangeable with boot time after Linux suspend, so no runtime subscription is wired here.

matchedNoLimit means a geographically matched sample with no posted numeric limit. It is not malformed and is never turned into SLC ABSENT by this disabled boundary. Old pre-v1 records, unknown versions, conflicting status/limit fields, stale evidence, and reordering cannot authorize a map candidate. Source-generation changes clear held evidence. A source change without a generation change, generation regression, boot-clock regression, or excessive restarts fails closed until an explicit tracker reset; late packets from retired producer sessions cannot restore a limit. No state is persisted.

wayId, way-selection type, and distance from center do not establish correct-road confidence. The provider can choose a parallel road, ramp, junction branch or wrong direction despite a fresh GPS fix and loaded tile. Real map provenance, tile integrity/freshness, matched-road alternatives, direction and segment applicability, route faults, and restart recovery need separate evidence before this boundary can ever yield a VALID or ABSENT map observation. Bare wayId is not a durable geographic identity.