In order to fix some of the issues seen with the OFFLINE state seen recently, I had to move some things around on the graph and make a few protected states.
Previously, the OFFLINE state would Misalign MC2 and turn off the inputs to the IMC servo board. Over the weekend this was found to not be enough because there were still drive signals being sent to MC2 and caused it to trip.
Now when OFFLINE is requested, it will also run through similar logic to the DOWN state along with what it did previously. This will ensure no drive signals are being sent to MC2 while it is misaligned and keep it in a safe state.
If a SEI platform is not in its nominal state the node checker will bring it into the MOVE_TO_OFFLINE state that will execute the code mentioned above and arrive at OFFLINE, but if it is requested it will go through DOWN then to MISALIGNING and then arrive at OFFLINE (The "brute force method" as Jamie described). This round-a-bout way of doing things needed to be done to allow the DOWN state to remain as a GOTO state.
I tested this by bringing IMC_LOCK from LOCKED to OFFLINE, back to LOCKED, then I took HAM3 to DAMPED which brought IMC_LOCK to OFFLINE successfully!