onForeground

Called by the UI on lifecycle resume. Per spec: fire one immediate poll, then resume the 5 s cadence. If polling has already been permanently stopped (terminal failure), this is a no-op.