I recently encountered a CAM that generated incorrect G2/G3 without swapping g17/18 and misplacing IJK. When loading this code into Uccnc I did not get the 'arc radius tolerance error' error.
I made test codes and found that the error is only detected for R arcs, but for IJK arcs there is no check for arc accuracy, the cnc is doing the wrong g-code, doing spiral interpolation with a big difference between r1 and r2.
I looked in the documentation and it also says that the check is done for R arcs.
Is there any reason why you wouldn't check abs(r2-r1)<=arc radius tolerance for IJK?
I have also looked at how other industrial controllers handle this:
Fanuc has a strict check for all arcs (parameter #2410, error PS191 Over tolerance of radius), Sinumerik, Mazak, Mitsubishi, HNC, LinuxCNC have a similar strict check for arcs.
I also looked at how others do spiral interpolation - many cnc use a separate g-code for this, e.g. g2.1/g3.1 XYZ IJK P or INVCW/INVCCW in the case of Sinumerik - so it is described in the same way as a g2 arc, but without the radius difference check.
If you haven't thought of this, I thought you could fix the ijk radius check - to avoid damaging machines with wrong g-code, and add g2.1/g3.1 without the check, as it seems the spiral interpolation works correctly.