You can do 2 other possible things:
In the lower priority hat rules do something explicit like
[:not [Hat (= ?type :bucket-hat)]]
In the :straw-hat rule.
But I don’t like it much.
Better likely to state your weather situations and then “block” summer hat rule based on conditions it isn’t appropriate for - like it raining. Similar to what was suggested above.
And lastly, not always great but you could insert “hat options” instead in each rule. Then do a final accumulator rule that selects from the options the best choice in priority order.