As a status update: 10 ** -1 is now a Rat: $ perl6-m -e 'say (10 ** -1).WHAT' (Rat)
9.0 ** -1 is also a Rat, and there is no type check error: $ perl6-m -e 'say (9.0 ** -1).WHAT' (Rat) $ perl6-m -e 'say (9.0 ** -1)' 0.111111 9 ** 0.5 is a Num: $ perl6-m -e 'say (9 ** 0.5).WHAT' (Num)
