haversineMeters
Great-circle (haversine) distance in metres.
Deliberately byte-for-byte the same formula, the same earth radius and the same order of operations as the consuming app's own haversineMeters. That is not copy-paste laziness — an algorithm extracted into this module has to produce bit-identical distances to the implementation it replaces, or the regression test that guards the extraction fails for a reason that has nothing to do with the algorithm. Floating-point addition is not associative, so "an equivalent formula" is not good enough here.
If this ever needs to change, change it in both places in the same commit, and expect the accuracy fixtures to need re-baselining.