WiFi.ready only checks to see if the TI part has reported that it got a DHCP address.
There is a call in SPARK_WLAN_Loop() after the DHCP address is set that fills out SSID and local IP, gateway IP, subnet mask, and MAC address from information provided by the TI WiFi part.
If you are not calling SPARK_WLAN_Loop() in your own while loop, this will not happen until you go around loop().
If you are calling SPARK_WLAN_Loop() either directly or by going around loop(), it asks the TI part for this info after a delay of 100ms, so in the 800ms case, it looks to me like it takes 8 call attempts to get the data from the TI part.
I don’t think the Spark guys wanted to block waiting for this data but you certainly can.
The first part of the doc for WiFi.ready() is correct–just when the DHCP address is set, but the second part is not right: you should wait for local IP and friends to get filled in before starting a connection.