This documentation here:
http://unity3d.com/support/documentation/ScriptReference/ControllerColliderHit-normal.html claims we can get “The normal of the surface we collided with in world space”.
That is NOT the case! The normal we get seems to be the inverted normal of the point we hit on the curvature of the character collider capsule, rather than the surface normal of the object we collided with.

Example we walked (left to right) over the peak/edge of a large rotated cube. the Debug.DrawRay function drew those red lines for us.
Once the character controller approached the peak the “surface normal” starts bending upwards and than bends downwards again on the other side. That is not what the surface normals of a cube look like. the result it should give us i photoshoped into the right screenshot in green.

If you need further proof /visualization on how the "output"normals change based on which part of the round character collider bottom hits it than have a look at screenshot2.jpg that shows us slowly walking off an edge. Also note how much more narrow the normal angel falloff is compared to the first screenshot further suggesting that this has nothing to do with the surface normals of the standard unity cube primitive
We could see practical application for both kinds of normal output so we are not arguing for removing the current one (that might break many other unity games that depend on it) but we desperately need the “real” functionality that works like the documentation claims it does.
Do you know how I can get the real normal of what I am colliding with without resorting to raycasting every frame? I already have a solution that uses a raycast (basically inverts the normal that I am provided and raycasts in that direction and then gets the correct one).