the modification order of an atomic
Even in the wildest weakly-ordered, relaxed-everything world, the memory model hands you ONE rock-solid guarantee for free: every single atomic object has a single, total modification order — a definitive sequence of all the values ever written to it, that every thread agrees on. Picture a logbook attached to that one variable in which every write is stamped in one unarguable order; no two threads ever disagree about that book's contents.
What this buys you, even with memory_order_relaxed: a thread reading the same atomic repeatedly can never see its values go BACKWARDS in that order (no time-travel for a single location), and all read-modify-write operations on it slot cleanly into the order so no two CASes can both 'win' the same step. This per-object total order is the relaxed-level skeleton beneath everything; it is also exactly the coherence guarantee, viewed from the language side. What it does NOT give you is any ordering between DIFFERENT atomics — that is the job of happens-before, fences, and stronger orderings.
It also frames one deep, mostly-theoretical worry: out-of-thin-air (OOTA) values. The bare relaxed rules, taken to their logical extreme, seem to permit a value to appear that was justified only by a circular self-fulfilling chain of speculative reads and writes — a number no real program ever computed, conjured 'out of thin air'. In practice no sane compiler or CPU produces OOTA values, and the standards forbid them in principle, but a fully satisfying formal rule has been elusive. For working programmers the takeaway is simpler: lean on the modification-order guarantee you DO have, and do not invent inter-variable ordering that relaxed never promised.
atomic_int v; threads do relaxed stores 1, then 2, then 3. No thread reading v can ever see the sequence ...,3,...,2,... — once it has read 3 it will never again read 1 or 2; the per-v order is fixed and monotonic for every reader.
Even relaxed atomics never let a single location's values run backwards — that is the modification-order guarantee.
Modification order is PER atomic object — it orders writes to ONE location and says nothing about ordering across different atomics; out-of-thin-air values are forbidden in spirit but remain a known rough edge in the formal model, not something real hardware produces.