I'm also getting a bit of hit and miss whether it detects the tilt or not and decided to test a bit...
I've noticed following things:
* Often, if the gesture starts from the end position (looking at the watch), tilt "out" and without delay tilt back "in", no detection. I have to let the watch stay still in the "out"/"away" position for a second or so. (That is, "shaking" it rapidly won't work well, probably for a good reason.)
* The gesture seems to be most sensitive to rotation around wrist axis (not the raising of hand), but does in some cases react to rotation from elbow (hand up), or to even hand down (from elbow), too. More below.
* The gesture is detected really well if it is rotation of the wrist so that the rotation is towards user's face, and reaches watch face upwards or somewhat more towards user's face. This in upright position (i.e. "upwards" for the watch is really up in the world/gravity).
* If the rotation does not reach the "face up" (or slightly more) orientation, getting almost 0% detection. Because of this, the gesture does not work e.g. when lying on back and hand points up (and watch face points horizontally).
* The gesture is detect somewhat well if it is rotation from elbow (hand up or hand down) if it reaches the watch face up end orientation or a bit towards user's face. This seems to require larger rotation than the wrist flick.
* If the gesture reaches above conditions for wake up, but continues immediately with non-wake up movement (e.g. rotating back away from the user), the wake up does not happen.
The most significant part of all that is the "watch face needs to end up pointing (world's) up or little bit tilted towards user's face". This means that if the user (or his head) itself is not in the upright position (i.e. user is not standing or sitting), the watch will not detect the tilt as reaching "face upwards" and thus will not wake up.
Make the detection independent of the particular orientation of the watch in the gravity. That is, this gesture should be detected if:
* The tilt/rotating gesture is over certain (somewhat small) angle within certain amount of time on the "wrist" axis (relative to watch coordinates, "pitch" axis if I remember Google's documentation right) (no matter what it is in relation gravity),
* It is a bit larger rotation on "roll" axis, optionally combined with typical acceleration on z-axis especially in the latter part of the motion, corresponding raising hand from elbow,
* Or the combination of both.
It would be nice if the wake up would be faster, too, but I guess that latency comes from the algorithm continuing to monitor movement(s) _after_ the detection has been done, trying to filter out some "false positive" detections, i.e. just in case the user continues the movement in a way that indicates it wasn't a wake up motion after all. For example, if one starts from orientation of watch face pointing slightly away from upright, and tilts decently inwards (to wake up, works normally well), but immediately continues by tilting it back away, the wake up doesn't happen (perhaps as expected; user's can't see the face well afterwards anyway).
For this, I'd suggest something for which a bigger change might be needed: let the wake up be detected immediately (and let the watch face brighten up etc. etc.), but if the gesture detection notices that it wasn't a wake up after all, then send another event (or however the wakeup/sleep system works) on the line of "oops, get back to sleep quickly" so the display (and apps) would just briefly pop up but get back to previous state immediately.