for assumptions check this doc page or the cycling flagencoders in the sourcecode as nils mentioned already.
The guys that came up with these are cycling enthusiasts themselves so they have a pretty good understanding on how fast you can go on what surface/waytype. But basically this is just roughly mapping logical values to the ways where no speed information is given.
By no means should you regard this as the exact speed with which you can travel on the different waytypes!
It is a classification to help returning reasonable times/distances.
Best regards