Runs an effect of the screen interpreter — a screen's action or edge, a
feed's page, a step of the start (a background request of the launch burst,
the first screen's entry, a restore) — so that a challenge the server raises
over it is a detour, not the end (owner, 2026-10-27).
The effect runs. When it fails with the challenge (IgCheckpointError) and a
detour is installed (CurrentOtherwiseDispatch), the detour
walks the challenge — the caller's branch for each screen it shows, screen by
screen, until it closes — and then the same effect runs again, whole: the
effect's own transition was rolled back when it failed, so it starts from the
screen it started from, and the requests it had sent before the one that was
refused are sent again with it. The repeated effect is the one that failed,
not only the request inside it (owner, 2026-10-27: «не тот же прерванный
запрос, а тот же эффект… когда челленж закрылся, мы повторяем тот эффект,
который упал с этим челленджем»), so a multi-step action — a login's token
fetch, then its send_login_request — sends its earlier requests a second
time. If that second run is interrupted again, the detour refuses (the typed
refusal of the platform, never a loop). Every other failure is the effect's
own and passes through untouched.
Nothing changes without an installed detour, inside a detour (it is absent
there), or inside an enter burst: an enter cannot open a screen over itself,
so its failure rolls the enter back and the effect that started it — an
edge, an action, the launch's first screen — is the one run again.
One interruption is answered at a time, and only when no frame is being
entered anywhere in the process, so the challenge comes over the screen in
front: two background requests of one launch window interrupted together are
answered one after the other, each by its own walk of the challenge.
The answer runs inside the process's screen turn (withScreenTurn). An
interruption met inside the turn — the request of a running action, a request
nested in it (SearchInput.change's background request), a request of the
launch's own window — is answered under that same hold, never by taking the
turn again. One met outside it — a request of the process's background
fibers, the launch's tail — takes the turn alone (aloneInTheScreenTurn):
it is answered over the screen in front once no action of the caller runs, and
no action of the caller starts while the walk runs, so otherwise never runs
beside a running action of main and main's action never runs beside it.
The effect's type is unchanged: the detour never fails into its channel.
Runs an effect of the screen interpreter — a screen's action or edge, a feed's page, a step of the start (a background request of the launch burst, the first screen's entry, a restore) — so that a challenge the server raises over it is a detour, not the end (owner, 2026-10-27).
The effect runs. When it fails with the challenge (
IgCheckpointError) and a detour is installed (CurrentOtherwiseDispatch), the detour walks the challenge — the caller's branch for each screen it shows, screen by screen, until it closes — and then the same effect runs again, whole: the effect's own transition was rolled back when it failed, so it starts from the screen it started from, and the requests it had sent before the one that was refused are sent again with it. The repeated effect is the one that failed, not only the request inside it (owner, 2026-10-27: «не тот же прерванный запрос, а тот же эффект… когда челленж закрылся, мы повторяем тот эффект, который упал с этим челленджем»), so a multi-step action — a login's token fetch, then itssend_login_request— sends its earlier requests a second time. If that second run is interrupted again, the detour refuses (the typed refusal of the platform, never a loop). Every other failure is the effect's own and passes through untouched.Nothing changes without an installed detour, inside a detour (it is absent there), or inside an enter burst: an enter cannot open a screen over itself, so its failure rolls the enter back and the effect that started it — an edge, an action, the launch's first screen — is the one run again.
One interruption is answered at a time, and only when no frame is being entered anywhere in the process, so the challenge comes over the screen in front: two background requests of one launch window interrupted together are answered one after the other, each by its own walk of the challenge.
The answer runs inside the process's screen turn (
withScreenTurn). An interruption met inside the turn — the request of a running action, a request nested in it (SearchInput.change's background request), a request of the launch's own window — is answered under that same hold, never by taking the turn again. One met outside it — a request of the process's background fibers, the launch's tail — takes the turn alone (aloneInTheScreenTurn): it is answered over the screen in front once no action of the caller runs, and no action of the caller starts while the walk runs, sootherwisenever runs beside a running action ofmainandmain's action never runs beside it.The effect's type is unchanged: the detour never fails into its channel.