What the caller starts the Android app with. A snapshot restores the stored
device and user and sends the warm launch; without one the app starts as a
fresh install and sends the pre-login launch. A checkpoint is accepted in
the same place as snapshot and the launch takes the snapshot out of it
itself (owner decision, 2026-10-22), and the checkpoint's screen and trail
are not restored — a launch starts on the screen the app shows first. The
call signatures are disjoint so the result type follows the input (see
AndroidAppLaunchSimulation): { seed?, snapshot?: undefined } is the
login screen alone; { checkpoint } picks its result by the checkpoint's
screen (CheckpointFirstScreen); { snapshot } is the honest union
AndroidAppLaunchFirstScreen, because a snapshot type does not say whether
the process it was exported from held a session; and a value that may hold
either form (this union) is that union too. { seed, snapshot: undefined }
is the fresh install: an absent saved session is not a snapshot to decode.
What the caller starts the Android app with. A snapshot restores the stored device and user and sends the warm launch; without one the app starts as a fresh install and sends the pre-login launch. A
checkpointis accepted in the same place assnapshotand the launch takes the snapshot out of it itself (owner decision, 2026-10-22), and the checkpoint's screen and trail are not restored — a launch starts on the screen the app shows first. The call signatures are disjoint so the result type follows the input (see AndroidAppLaunchSimulation):{ seed?, snapshot?: undefined }is the login screen alone;{ checkpoint }picks its result by the checkpoint's screen (CheckpointFirstScreen);{ snapshot }is the honest unionAndroidAppLaunchFirstScreen, because a snapshot type does not say whether the process it was exported from held a session; and a value that may hold either form (this union) is that union too.{ seed, snapshot: undefined }is the fresh install: an absent saved session is not a snapshot to decode.