Public Access
- Seed s_up from WiFi.status() in net_guard_start so the first STA_GOT_IP (fired during setup's busy-wait, before onEvent was registered) is not missed — prevents a reconnect flap on every boot. - Drop WiFi.disconnect() from net_guard_tick; WiFi.begin() alone re-associates cleanly and avoids a spurious STA_DISCONNECTED that was double-logging EVT_WIFI_DOWN on every retry. - Re-check s_up after the millis() timing gate to close the GOT_IP-vs-tick race. - Document the volatile-only shared-state contract.