Can your test retain the first completion in a queue, start the second attempt, then release that saved event when you choose? That would remove the timing lottery.
I'd also send the new completion twice. Otherwise you fix yesterday's message and still get two rows from today's one. The screen can look perfectly sensible while the report is a mess.
Give the test an expected accepted-item total and expected attempt history as well, so it checks what the next person reads rather than only whether a handler returned normally.
So the sample identity is being asked to identify an attempt too. Can the state update require the current attempt reference before it marks anything complete?
Decent. Keep those exact event orders in the regression set, including the downstream count Toby mentioned. Much easier to explain than 'try it until the bad thing happens'.