When there are no running goroutines and all active ones are durably blocked, synctest proceeds to either wake a goroutine waiting on synctest.Wait() or continue executing the root goroutine. Once the root finds the next event, it sets the synthetic time to that moment ( sg.now = next ), then parks itself and waits for the test scheduler to resume the goroutine that should now run. Remember that synctest is primarily designed to test the timing and correctness of synchronization logic, not to simulate real-world timing behavior exactly.