Just noticed that this is ordering by time and then by subop. Unfortunately, that means if the OSD storing this changes and the clock goes back in time, we will skip updates that happen in the intervening time.
Simply using subop_version first should fix this issue, and I believe it is necessary. (Do we just have the time in there for funsies?)