Hi Hayley,
To keep this answer simple, let's assume that both stores are normal, write-back cached memory stores and that A and B are in different 64-byte cache lines.
Remember that the order of visibility is not necessarily the same as the order of persistence. In your example, you never take steps to make A persistent. I agree that B will become globally-visible after A. Even without the first SFENCE instruction that's true because of Total Store Ordering (TSO). But the store to A may or may not be sitting in the cache after the CLWB+SFENCE that flushes B. The only way to ensure the order of persistence is the same as the store order would be to insert a CLWB A after storing to A in your example.
Thanks,
-andy