In this set-up, the collision normals are not exactly Vector2.Up (0,-1) but are (-0.0000002,1) which means there's a *tiny* drift to the left. This kind of floating-point imprecision is expected. The change in X is also tiny (approx 0.00001) per sim-step which is why it's hard to see it actually moving.
The problem here is that these tiny inaccuracies/forces are supressed via linear/angular drag and/or the body sleeping.
In this project, all the drag is zero and sleeping is turned-off.
Turn on body sleeping to stop this happening.