The ETA table was fixed at compile time, but real durations are a property of this phone and the network it stands in - ICMPv6 answers in milliseconds where IPv6 works and waits out its timeout where it does not. Estimates now prefer an EMA (70/30) of what this device actually measured, seeded by the old constants on first run. VPN detection had two lies in it, both found on hardware: a disconnected tunnel lingers in allNetworks while tearing down, so 'VPN active' is now judged from the ACTIVE network only; and any bind failure counted as 'per-network blocked', so a network dying mid-run flipped a healthy run to INCONCLUSIVE - now only a genuine EPERM refusal counts. Banner and finding split three ways (VPN + blocked / blocked only / VPN only) so the app never names a VPN the user just turned off. App version 0.2.3. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>