This is more specifically a bug, in that the H basis fare should book into H, but sometimes ends up in S. If you booked an H fare with CX, it would always book into H (unlike other fares, like some AA M basis fares to Asia that actually book into L).
I think that the AA engine will put you in S if there are S seats available, and if not it'll put you into your rightful H inventory.