Fwiw..
My Lathe:
CSMIO-IP-S, step/dir brushless servos on spindle (C) x, z. ENC, MPG, extra io, ..
Afaik, there are no intrisic limits.
The HW / plugins track at 4 Mhz.
I use 10.000 count servos - these are ok for industrial stuff today (HAAS is 10.000 counts from 2012 or so, 2000 count before that), but not exceptional for industry today, 3000 rpm max = 500 kHz.
My opinion, with no more than lots of experience with cslabs (cnc, interfaces etc) , is that the CSMIO will thread at 4 Mhz just as well as at any other speed.
It is just my opinion, take from it what you will.
I have never seen any sw/hw limits re_speed from Cslabs products.
IE, it it works at all, at 300 rpm, it most likely will also work at 4 Mhz just as well.
Imho.
The plugin does the work, the hw does the lifting.
Check the resolution of the encoder.
A 10.000 count encoder, at 3000 rpm / min = 50 revs / sec.
50 rev x 10.000 = 500 kHz.
So, 12.000 rpm = 2 Mhz, 50% of the hw clock rate/capacity of the CSMIO-IP-S.
If using a 10.000 count encoder.
I have any nr of stuff to do/make/build at this time, and while threading is the prime thing for me, for now, I am engaged in other critical work, like upgrading the x axis to a much better ballscrew.
I can confirm that the spindle tracks perfectly at all speeds based on encoder readouts from the cslabs plugin, and led readouts from the servo drives, and never has visible errors like crashes, jams, failures, disconnections, etc.
Obviously, the servo has lag, but the lag never varies, since the servos are absurdly overpowered for threading purposes.
I see about 1-2 encoder count error variations, so if the lag is say 500 counts, it may oscillate 498-499-500.
This is less than 1 micron real world error for me, between 498-500, at 0.2 microns step size.
This from the led at the servo drive, so absolutely "true".
I have left the machine powered on for days, multiple times, with no issues.
There can be windows/machx issues due to power-saving stuff, though, if left unattended.
I never get crashes (very rare mach3 freezes may happen due to windows issues, on dormant machines), and never get unexpected movement.
Your encoder is probably not very high resolution.
It looks like a 1980s machine, so the encoder is likely 500-2000 counts.
Thus, you would be good to go.
You can check with cslabs.
They are very good, respond well, know what they are doing.