An apocalypse-free first-order low-rank optimization algorithm with at most one rank reduction attempt per iteration