micropython.exe -m examples.google_photos, run from lib/, prints its startup lines (engine=sim start_page=list, WinDisplay: initialized.) and then returns with rc=0 after 1–2 s. It does the same on main before and after #141, so it isn't that fix. Under -m, Linux micropython, circuitpython, Linux CPython and Windows CPython all stay up, and the example kit's micropython.exe cell passes because the kit launches differently.
The likely place to look is the launcher's _block_if_batch(). It returns early when _hostloop.batch() is false or _hostloop.ambient() is true, so on micropython.exe neither keep-alive path runs and nothing holds the process open. Found 2026-09-23 while fixing the Windows CPython freeze.
micropython.exe -m examples.google_photos, run fromlib/, prints its startup lines (engine=sim start_page=list,WinDisplay: initialized.) and then returns with rc=0 after 1–2 s. It does the same on main before and after #141, so it isn't that fix. Under-m, Linux micropython, circuitpython, Linux CPython and Windows CPython all stay up, and the example kit's micropython.exe cell passes because the kit launches differently.The likely place to look is the launcher's
_block_if_batch(). It returns early when_hostloop.batch()is false or_hostloop.ambient()is true, so on micropython.exe neither keep-alive path runs and nothing holds the process open. Found 2026-09-23 while fixing the Windows CPython freeze.