draftDraft
Origin, destination, stops, vehicle profile, and constraints are incomplete or editable.
Move from route intent through preview, guidance, reroute, arrival, and cleanup while surviving process, sensor, and network interruption.
A state is not a UI label. It determines which actor may act, what evidence exists, what may be retried, and how recovery proceeds.
draftOrigin, destination, stops, vehicle profile, and constraints are incomplete or editable.
previewAlternatives and trade-offs are visible but guidance and sensor use have not started.
navigatingGuidance owns an active route and consumes position, progress, traffic, and user commands.
reroutingThe active route is temporarily superseded by a recalculation caused by deviation, traffic, or destination change.
arrivedArrival policy passed and the application is waiting for confirmation or final trip actions.
endedterminalSensors, audio, observers, foreground services, and SDK session resources are released.
Commands express intent. The aggregate validates current state and invariants, commits one new version, and emits a fact in the same transaction.
calculate_routeNavigation applicationdraftpreviewroute.calculatedHash normalized intent and constraints for request deduplication and caching.
start_guidanceDriverpreviewnavigation.startedPersist a session command ID before starting foreground resources.
request_rerouteNavigation applicationnavigatingreroutingreroute.requestedCoalesce equivalent deviations while one calculation is outstanding.
accept_rerouteMappls navigation SDKreroutingroute.updatedApply only a response matching the latest route-intent version.
confirm_arrivalNavigation applicationnavigatingnavigation.arrivedArrival policy version and stop ID form the stable key.
end_sessionDriverpreviewnavigatingreroutingarrivednavigation.endedCleanup must tolerate repeated calls and partial startup.
Keep provider responses, business identity, state, events, and side-effect delivery distinct so each can be reconciled safely.
Portable origin, stops, profile, constraints, and version.
intentIdversionwaypointsprofileconstraintsMinimal recoverable progress without persisting unsafe SDK internals.
sessionIdintentVersionrouteIdlegIndexlastPositionTimePrivacy-bounded operational and quality evidence.
sessionIdeventTypeoccurredAtrouteVersionqualityOnly one guidance session owns foreground navigation resources at a time.
Every route result is applied only to the intent version that requested it.
The last valid route remains available while a reroute is pending.
Arrival requires an explicit distance, speed, dwell, and stop policy.
End releases every observer, sensor, audio, and service resource exactly once in effect.
Recovery changes durable truth only through the same rules as normal operation. A timeout is an unknown outcome, not evidence that nothing happened.
A persisted active checkpoint exists without a live runtime owner.
Recreate resources, validate destination intent, recalculate if stale, and ask before resuming guidance.
Accuracy, age, speed consistency, or map-matching confidence crosses policy.
Surface degraded positioning, use supported dead-reckoning inputs, and avoid false reroutes.
Response intent version is older than the active intent.
Discard it and keep the latest calculation; never apply by arrival order alone.
Online route, traffic, or search dependency fails while local guidance remains active.
Keep last valid guidance, expose freshness, and use entitled offline capability when available.
Measure state age, event health, retries, reconciliation, and sensitive-data access alongside latency and error rate.
Only explicitly indexed evidence is linked. Empty sections are not backfilled with invented endpoints or package names.
8 labs · 5 hostile scenariosmappls-android-sdkmappls-ios-sdkmappls-react-native-sdkmapmyindia-maps-vectorSDK-androidmapmyindia-maps-vectorSDK-iOS8 verified tests