During a run on i03, the robot load reported success but failed to load the pin, although the collection did subseqently fail for another reason.
Go to https://ispyb.diamond.ac.uk/dc/visit/in44255-4 page 14
11:25:09 Robot load C3_plateS6_F4_1, except there was an error (omega not at zero) so the same pin remains
The robot reported
[Sat Feb 28 11:25:22 2026]Program error #9: Sample Position not ready
So 1.5.16 does have changes to the robot load code. When doing the robot load, we trigger the robot, then if beamline-disabled (ROBOT_OP_16_BITS.B8) reports enabled (0) first we wait for it to become 1, otherwise we wait for it to become 0. Each time we wait we check for the first of whichever
- beamline_disabled to reach the desired value
error_code to not be 0
I think this could be a source of a race condition - if error code reports after beamline disabled then we cancel the error code checking task and don't check the final value. This is possible if for whatever reason the wait_for_value doesn't get scheduled soon enough and if the robot updates both values at nearly the same time.
There is a second chance at a save if the problem leads to a timeout, in which case we do check the error code at the end, but if it didn't timeout and the race condition occurred because the error was detected before the timeout then we won't spot this.
Whilst the code is different, the changes have been only minor and I think the same basic bug exists in 1.5.9
I think it would be possible to hotfix this relatively easily if you would like
During a run on i03, the robot load reported success but failed to load the pin, although the collection did subseqently fail for another reason.