I fixed the bug I mentioned. While walking around the playground now (in the newest development version), I don't notice any unexpected significant slowing on walls or getting stuck.
Note that the speed of the character will slow down if it is trying to walk
into a wall (partially or fully). It doesn't try to redirect the motion tangential to the wall to stay at max speed. Instead, it just removes the penetrating component of the velocity. The remaining tangential velocity is left untouched since the character has zero friction with the environment and no linear damping.
There are three remaining behavior issues, though. They aren't bugs, just earlier design choices which can occasionally cause hiccups with the character. Usually the hiccups are completely unnoticeable.
1) A contact with a normal opposing the character's motion can survive small offsets in the persistent manifold. This can occasionally make it difficult to walk on very tiny things that have a surface that can generate a normal against the character's motion. This is the most noticeable issue since it can halt your motion. Objects which are tall enough to warrant a step do not suffer this problem because the step-up process eliminates the old contact. This particular problem may be best solved by tuning a margin in the stepper.
2) Convex-mesh collisions use 4 contact points to avoid redundancies. When a convex-mesh collision:
-Has contacts with very different normals,
-Is colliding with many triangles,
-Has a small-area contact manifold,
the contact reducer may choose to rapidly change the involved contacts as they seem to all be about the same quality. This can cause a slight jitter while ramming yourself into a wall. It's usually very hard to see unless you have the contact display on. It's much less severe than #1.
3) With a similar base cause as #1, contacts in persistent manifolds can survive outside the involved shapes' geometry. This is most apparent when walking past the edge of a wall and there still exist contacts for ~.1 units too long. This can make going past obstacles occasionally less smooth than it could be. This is typically nearly impossible to notice in practice without having the contact display on.
My primary focus now is to find a good solution to problem #1. It may take the form of a fundamental change to persistent manifolds, or I may just retune something if it works well enough. I do have some ideas that could address the core behaviors in persistent manifolds, but their current versions are a little too expensive. I'll keep thinking