State, ownership and lifecycle
Session states are Unconfigured, Ready, Active, Suspended, Stopped and Shutdown. Configure enters Ready; Start enters Active; Stop and Reset revoke work. Reset returns to configured readiness and clears SDK root alignment. Shutdown is idempotent and terminal.
A component owns its session; a world subsystem registers sessions and roots, enforces a single camera binding and closes sessions before world teardown. Weak UObject references plus session/attempt/origin/section/token generations reject old callbacks. Cancel does not wait on game-thread publication; Drain waits only for worker work.
Commands and public delegates run on the game thread. Read state snapshots in delegates and schedule later commands; recursive mutation is rejected. Child Actor content remains under its authored map root; cameras/session owners must remain outside it.
Backgrounding suspends capture and requests a bounded analytics flush. There is no delivery guarantee after OS suspension/kill. Resume is explicit; borrowed mode never stops a host AR session. NotifyOriginChanged clears SDK alignment without changing the host’s tracking origin.
Navigation preserves destination intent during explicit transition relocalization, re-fetches from the section actually detected and rejects stale route responses. StopNavigation cancels the journey. Credential replacement cancels routes so data is not mixed across credentials.