Ivory 14 20 acu182180 azure user data update support

I'd swap this back. This is a bit confusing as to why it works. If I just happened upon this code I'd think this was a bug and there may be cases where it doesn't work as expected so it feels risky in that sense.

I think we need something more explicit. For example, in the self.record_state function, maybe we can do a from_state = pending if (from_state == decommissioning/decommissed && state == booting) else from_state = last_recorded_state statement?