I would theoretically Need zero ms Lost in 12hour if that's not too much to ask on a budget.
That's too much to ask on any budget, because there can't be zero, really.
A deviation of +/-1 ms per 12 hours is about +/-25 ppb. This already takes you into the TCXO area. And on top of that you will need a clock reference that other clocks will synchronize with.
It doesn't sound like an easy task. One idea would be to have a GPSDO receiver whose 1 pps output would be fed into a computer (an SBC will do) running an NTP server using that 1 pps signal as a disciplining reference (e.g.
https://gpsd.gitlab.io/gpsd/gpsd-time-service-howto.html), and then have all of your branch devices run their own ntp servers synchronizing to the central one. Synchronization, however, is the tricky part, as network may be slow and/or unstable. It may not give the required short-term accuracy.
Another way, I think, a more feasible one, would be to run NTP servers on all the devices
and distribute the 1 pps signal from the GPSDO to all of them. That should keep them in sync as far as the wall clock setting goes and provide the required stability (even with regular crystals I think), both short and long term. One problem here is how to distribute the 1 pps signal. Radio? What latency and jitter will it have? That would definitely need testing.
Yet another problem is how do you validate your setup, once everything is ticking? How do you tell that two clocks e.g. one kilometer apart from each other are actually in good sync? Send a pulse over a wire or radio and make both record their current timestamps, then compare them? That might work, as long as it doesn't take too long for the signal to get from source to destination (1 ms per 300 km in air, ~200 km in copper).
Then you also need to care about your trigger hardware and software latency. Whatever it is, it must have a consistent delay between the trigger signal and the moment of acquiring the current timestamp. That's a big deal on its own, independent of the time sync problem.