Install a PWA whose start_url is served with a long cache lifetime. The page reloads itself to a newer document. Close the app, open it again: you get the old document back, straight from the cache, no network. Android only. Confirmed on a Pixel 6a; desktop is fine.
Closing an Android app (swipe-off-recents, force-stop) is a SIGKILL, not a clean shutdown. Both HTTP cache backends still hold parts of the freshly written entry in memory at that point (SimpleCache keeps headers in memory until the entry closes; the SQL backend keeps headers and body in a write buffer that only its destructor persists). The kill throws all of that away and the stale entry survives on disk.
One CL: when Android reports the app as stopped, flush pending cache writes and checkpoint every open entry to disk without closing it. No fsync, nothing blocks. Verified with deterministic crash unit tests on both backends and on device: the cache files are md5-identical before and after force-stop, and the relaunch shows the fresh document with zero network requests.
python3 repro_server.py --port 8000 --reload-delay 4000
adb reverse tcp:8000 tcp:8000 # or any public HTTPS tunnel
# stock Chrome: install the PWA, open it (red V1 flashes, then green V2),
# swipe it away, reopen -> red V1 flashes again = the bug
# fixed build below -> green V2 immediately, zero requests