Definition · Drift, skew, and the uncertainty windowDrift is the rate at which a clock departs from true time, quoted in parts per million. Between corrections at interval I, a clock accumulates an error of up to ε = drift × I. Two clocks may be out in opposite directions, so the uncertainty window within which their readings cannot be compared is 2ε.
Time synchronisation does not make clocks equal. It corrects them periodically, which bounds the error and restarts the accumulation; between corrections the drift resumes at the same rate. A cluster running a time daemon has clocks within a window, not clocks that agree, and the size of that window is a design input rather than a detail.
drift 200 ppm, corrected every 30 s
200 ppm = 200 µs per second
ε = 200 µs/s × 30 s = 6000 µs = 6 ms one clock, worst case
2ε = 12 000 µs = 12 ms two clocks, against each other
the same clock, corrected more often
every 1 s ε = 200 µs 2ε = 400 µs
every 10 s ε = 2000 µs 2ε = 4000 µs
every 600 s ε = 120 ms 2ε = 240 ms
The window is linear in both inputs, which makes the two levers obvious and their prices very different. Halving the drift means better oscillators in every machine; halving the interval means twice the synchronisation traffic and is nearly free. That asymmetry is why tight-clock systems synchronise aggressively rather than buying exotic hardware, up to the point where the network round trip becomes the floor on the error.
The order the window cannot decide
event X on node 1, event Y on node 2, truly 5 ms apart
true separation 5 000 µs
comparison window 12 000 µs
window ÷ separation 12/5 = 2.4×
the timestamps can report X first, Y first, or the same instant,
and every one of those readings is consistent with the true order
This is why a timestamp comparison is not an ordering primitive. It answers instantly and it answers wrongly whenever the answer was close, which is exactly the case anyone bothers to ask about — two events far apart in time are rarely in dispute. The failure is silent, it is data-dependent, and it disappears on a single machine, which is where the code was tested.
Example · What the commit-wait costsHold each commit for 2ε = 12 ms before making it visible and the window is guaranteed to have closed, so any commit a reader can see really did happen before anything it observes afterwards. The price is 12 ms added to every dependent commit: a chain of commits that must each be visible before the next begins is capped near 1000/12 ≈ 83 a second, however fast the hardware is. Halve the sync interval and that cap doubles, which is the direct reason such systems care about how often their clocks are corrected.
Two honest positions follow and they are both defensible. Either carry the uncertainty explicitly — a timestamp is an interval, not a point, and you wait when the intervals overlap — or do not use physical clocks for ordering at all and use the counters of the previous two lessons, which cost messages instead of milliseconds. What is not defensible is comparing two raw timestamps from two machines and treating the result as an order.