Thanks for the screenshots. Looks like your Rules have been configured correctly.
I suspect that it's a timing issue. Your 2 data layer pushes are occurring one after the other immediately. But during the "Shipping" push, the browser is still processing the "Checkout" push. As a result, it seems that the "Shipping" push is not being triggered.
From what I can see in your data layer contents, you're sending the same product information both times. So no one can really tell if it is the "Checkout" or "Shipping" push that's actually being tracked, we can only assume that the "Checkout" one is being tracked since it comes first. To verify, can you modify the productName for the "Shipping" push to be something different? Then we can see which data layer push gets tracked: the "Checkout" productName or the "Shipping" productName.