We have a problem in every calibration type that shows up the first time that someone resets their chains.
Every calibration routine has a correction that changes the chain length based on actual measurements (correction for chain stretch and sag, either implicitly or explicitly), which means that when the chains are extended to 1651mm post calibration, there is not a sprocket tooth exactly at the 12 oclock position (it’s usually close, but never exact), so when you reset the chains, putting a tooth at that 12 oclock position, you are introducing an error in the chain lengths.
I think the root cause for this is that the firmware is just tracking the chain lengths, and so the stretch/sag correction factors change this.
I think the fix is going to be to have the firmware track encoder steps and translate those to position (with the correction factor), so that when we reset the chains to a known position, we may say “1651mm”, but what we really mean is “260 links of chain”
Another possible approach would be to manually drive the sled to a known point (0,0 is good) and tell the system that you are there (pointy bit to crosshairs on the spoilboard, or a hole drilled at 0,0 that you drive until you can cleanly insert a bit there, something like that). The drawback to this approach is that as the spoilboard gets damaged from use, you may destroy the homing mark.