First of all, you don’t need a union with recurse down (._; >;); when you are using out geom , which already attaches coords to the way . It’s only required if you want the point features, eg =traffic_signals , =crossing , =stop_position .
You need to explain what’s meant by “missing”. What are you comparing to as the reference? Please remember many lanes=2 and surface= aren’t tagged yet. What location are you looking at? Need to know the situation to come up with defaults and assumptions. Another more advanced complication is dual-1-lane divided roads, or wrongly split ones.