I would suggest stats::glm() should set "converged" to FALSE in the return value in a few more situations.
I would suggest stats::glm() should set "converged" to FALSE in the return value in a few more situations. I believe the current returned converged == TRUE can be needlessly misleading when the algorithm has clearly failed (and the algo even issued a warning, but the returned structure claims all is well).
In particular there are pathological inputs which cause the residual deviance to exceed the null deviance (even with intercept present, and no offset). I know we can't catch all cases, and for non-intercept ( ~ 0 +) situations this residual check may not apply.
Below is an input showing the effect on current R running on a 10.15.6 Mac (R from CRAN, no change to BLAS or such).
#>  "R version 4.0.2 (2020-06-22)"