DeviceEnvelope
data class DeviceEnvelope(val accuracyCeilingM: Double = 50.0, val stationaryAccuracyCeilingM: Double = 25.0, val minDisplacementMultiplier: Double = 1.0, val abnormalThresholdMultiplier: Double = 1.0, val gpsIntervalMultiplier: Double = 1.0)
Device-derived scaling, computed once at the platform edge and handed in.
A budget phone with a poor GPS chipset needs looser gates than a flagship, but the algorithm must not be the thing that knows about ActivityManager.MemoryInfo. Multipliers keep the device story on the platform side of the seam where it belongs.