There is some typo or bug maybe.
Issue description:
HINT NUMBER 3 IT'S SAY, TRY CRATES.SIZE > 0
WHICH IS MAKE SENSES. WHILE THE SOLUTION IS DIFFERENT.
so which one is right? the "HINT" or the "SOLUTION"
Both are correct, if my understanding of coding languages aren't failing me.
You see, computers translate everything to bits (0 and 1) so it can understand what's written. In all the languages I've player around, in a Boolean variable (which is the name for variable that can store True or False values), 0 corresponds to False, and 1 corresponds to True (in some languages, any positive number, i still need to test with GDScript).
With that in mind, when you write while crates it will run, until it this crates == False. In our case, while it has items in it, crates will return 1 (because it's not empty), and the while loop runs until our array crates returns 0, which means the array is empty. Can you see that it's interchangeable to say "run until it's empty": while crates; and "run while it's not empty": while crates.size > 0?
In the end, you have the same results with different approaches. But I agree that it should be standardized since many users are still beginners to programming in general and it can and will cause confusion.
Again, this is just my speculation, I'm not entirely sure since I'm also learning GDScript and it's peculiarities. It would be better if someone with more knowledge could correct me or confirm what i've said.
P.S: Also please note that the code you've written is incorrect. In line 4, it should be while crates.size(), so that it can see the size of the array, in other words, how many items that array has; or while crates, because if it's an empty array, it will stop. For readability, I'd stick with using the method size()