I was considering rigging something where a 10MHz OCXO output is counted locally, and this counter is read by a PIC which also receives the 1PPS.
You maybe got the idea from that great (but recently departed) genius, philosopher, and humanitarian dannyf:
https://www.eevblog.com/forum/projects/toyo-tco-919-%27high-stability%27-crystal-oscillators/
Not only 1/20th cost of alternate units but more capabilities.
I hadn't seen that! I think he's making it a bit hard on himself though, by taking the XO output and dividing it down to a 1PPS signal, which is then compared to a reference 1PPS input. Instead, feed the OCXO to a counter, which can be internal to a PIC, or external, and use the reference 1PPS signal to read the counter delta from the previous second. If it's <10M the OCXO is running slow, if it's >10M it's running fast. Adjust the PWM output based on e/Tc, where e is the count offset (visavi 10M) and Tc the desired convergence time. Keep a running average to detect when e is evenly distributed around 10M within that window; at that point it's locked. Sum e and e^2 to produce a windowed error bound and std dev, and display on the front panel. Obviously with an 8- or 10-bit PWM output a trimmer needs to be set to bring it to ballpark to begin with, and the PWM control should only adjust within a few degrees, as it's going to lack precision otherwise. Anyway, that's what I had in mind...
My suspicion is the phase noise (windowed average of |e| while in lock) is going to dominate at some point. This method can only discipline it to the 1PPS signal, it can't fix phase noise... But it at least allows
measuring it, which is a good start...