Timeline with two lanes: the state write "paused = false" reaches the game-loop coroutine on its next 16 ms tick, before the next frame recomposes and relaunches LaunchedEffect(paused); in that window the loop fires expired deadlines. The fix box gates the loop on pausedAt as well and parks it on snapshotFlow.
Android

A paused Compose game loop resumes one tick before LaunchedEffect(paused) — and fires every deadline the pause skipped

Coroutine loops reading MutableState directly wake before the un-pause LaunchedEffect shifts absolute deadlines. Gate loops on the bookkeeping state.