The Complications API is kind of a mess right now... help?

I've found so many discrepancies between documentation & reality.  The system is a really great idea, but the documentation for each complication is really unhelpful.  And the return format for some of this data is pretty tough to work with. 

Does anyone have more authoritative info for what's going on with this API?

Example 1: COMPLICATION_TYPE_CURRENT_WEATHER

Documentation says "Value is a String with the current weather"

I expected to receive a string value, like "Sunny" or "Cloudy", but instead the value being returned is a Lang.Number.  I'm assuming this is the condition number, like we get from the weather API?  See output from debugger attached:  (Can't attach image due to forum error, "The selected file is not allowed due to file quota restrictions.", so please see link here:)

Example 2: COMPLICATION_TYPE_TRAINING_STATUS

Documentation says "Value is a String representing your training status", but there's no list of what those strings could be.  I'd love to be able to show icons for each of these statuses or just have some idea about what they are, but there's no easy way to get all the valid values.  I did find the list of training statuses in an article here, but immediately I got a string that didn't match -- instead of "No Status" (from the article) I got "No Result."  Also, how would one even going about simulating all the possible training statuses if we can't get a list?

Example 3: COMPLICATION_TYPE_RECOVERY_TIME

Documentation says: "Value is a Number of seconds remaining in your recovery time" (Emphasis added)

Ha! The comedy.  The simulator is giving me complication.unit = "h" (for hours, I assume?).  And when I load this up on the watch, I'm getting minutes!  That's 3 different kinds of units up in the air.