Actually not sure why order objects are getting passed around here, but appears that ALL calculable objects hit all compute methods.

As to when a shipment may not have a location, I suspect with digital content, that would be the case. Not my case here.

This is relevant to issues I have raised in the past where it seems we are passing just about anything to these shipment calculators. spree_active_shipping sees, Order objects, Shipment objects and Package objects. Not sure if perhaps an order object is getting passed for every stock location and I am seeing this because not every location has every variant.

I think it deserves more investigation by someone who understands a bit more about what is going on.

Here is a previous comment I offered: https://github.com/spree/spree_active_shipping/pull/80#issuecomment-19878617