Tool offsets are critical to the eventual application of the tool changer to the RailCore chassis. G31 is for PROBE offset - which is fine if you have only one tool, but if you have multiple tools, it's insufficient for configuration.
That's what got me testing it. While testing it, it became clear that the tool offset is MUCH more user friendly. You'll note that bmveee had the same issue prior to switching to the G10 tool offset process, and the issue in the other post that you mention occurred with G31 and G10 tool offset as well.
If G10 doesn't function properly, it's still broken, even if you can work around it with G31. I don't think that's related to this issue, though, but there's certainly something strange going on. The M500 wasn't saving the tool offset like it's supposed to. Specifically, in my gcode console I can issue:
G10 L1 P0
and get:
G10 L1 P0
Tool 0 offsets: X0.00 Y0.00 Z1.70, active/standby temperature(s): 0.0/0.0
This is mirrored in my config-override.g:
; config-override.g file generated in response to M500 at 2019-06-27 16:10
; This is a system-generated file - do not edit
; Heater model parameters
M307 H0 A90.0 C700.0 D10.0 S1.00 V0.0 B0
M307 H1 A618.9 C194.1 D4.1 S1.00 V24.3 B0
M307 H2 A340.0 C140.0 D5.5 S1.00 V0.0 B0
M307 H5 A340.0 C140.0 D5.5 S1.00 V0.0 B0
M307 H6 A340.0 C140.0 D5.5 S1.00 V0.0 B0
M307 H7 A340.0 C140.0 D5.5 S1.00 V0.0 B0
; Probed tool offsets
G10 P0 Z1.70
G10 L2 P1 X0.00 Y0.00 Z0.00
G10 L2 P2 X0.00 Y0.00 Z0.00
G10 L2 P3 X0.00 Y0.00 Z0.00
G10 L2 P4 X0.00 Y0.00 Z0.00
G10 L2 P5 X0.00 Y0.00 Z0.00
G10 L2 P6 X0.00 Y0.00 Z0.00
G10 L2 P7 X0.00 Y0.00 Z0.00
G10 L2 P8 X0.00 Y0.00 Z0.00
G10 L2 P9 X0.00 Y0.00 Z0.00
while troubleshooting with bmveee or duetal (I think that's mspal from our discord ) I noted that M500 never wrote their tool offset to the config-override.g. This is unexpected behavior, and is sufficient in and of itself to result in unpredictable behavior. That's when I recommended they post in the duet forums.
Specifically, I had one of them put M501 at the end of their config.g (This should load config override). Then issue:
G10 L1 P0 Znnn.n (insert number here)
then
M500
and the entry does not appear in config-override.g as it should. This is clearly a problem, but I can't seem to figure out why. Mine works as expected.