This is a good example of why crossing=*
is so bad. There’s 3233 features (Overpass Turbo) with crossing=unmarked
+ crossing:markings=zebra
which is nonsense.
If we tag the objectively observable features on the ground, any region can work out what it means for them based on the combination of:
crossing:markings=*
crossing:signals=*
(ideally extended with =shared|dedicated
(proposed))
crossing:signed=*
(proposed)