I’m going to suggest it is the order in which you have defined the conditions or the order of items in the list to begin with. The first two conditions/guards (when clauses) lead to a situation where item 2 > item 3 and item 3 > item 1 but the comparison between item 1 and item 2 gives item 1 > item 2 based on the last condition/guard clause. This leads to ambiguity that seems to be resolved based on the order of items in the list.
You can see this if you alter the order of the original list and apply the same sort. You get a different sorted order.


















