Character does not move up and down slopes at the same speed.
Most games have it such that the net trajectory in the x/z plane is unaffected by slopes, the slope just adjusts the y position. This is how it works in quake and all source games, as well as pretty much every engine. A good test is to aim the center of your screen at the top corner of a slope, then let go of your mouse and move forward. If you stray from your original position on the slope, that means the slope affected your x/z movement.
I've also been dealing with the same issue in my entirely different attempt, but have not found a perfect solution so far.
In order to keep the player stuck to the ground, the y component of the movement vector is slightly lowered (angling the vector into the floor). When walking straight up a slope the downward force is negated by forward motion. When walking sideways the downward force pulls to the side. I don't know that this can be totally solved without a custom integrator. Without the extra downward force the player will not properly register contact with the ground and constantly flips in and out of the fall state. There might be a way around this by using a separate hitbox for ground detection, but the offending code cant be removed without a major rewrite. I've tweaked the numbers so its a little less noticeable in the latest commit.