I can understand that changing the basket items might invalidate a basket and therefore require it to be re-initialized, but it is very annoying that just by viewing the cart and then returning to checkout, your shipment assignments are lost. I see this whenever I start working with shipping to multiple destinations.
The basket is reset whenever Basket.Package() is called. Since this is part of the CommerceBuilder API, the only way to work around this behavior would be to track down all two dozen or so Basket.Package() calls and evaluate each one individually as to if and when it should be called.
Can someone at AC please explain why the system acts this way?