Polishing is a final step that we do to try to get a very high quality solution. It works by guessing the active constraints when the algorithm converges.
However, for some problems like yours, it is not easy to identify which constraints are active because several constraints combinations give almost the same value of the objective function.
When polishing fails, the returned solution has lower accuracy, but it is still optimal up to the precision specified by eps values.
Increasing the accuracy (making eps smaller), increases the chances of making polishing work. Using the parameters
settings->eps_abs = 1.0e-8;
settings->eps_rel = 1.0e-8;
settings->max_iter = 20000;
makes polishing work for that problem and you get residuals in the order of 1e-16 precision. Keep in mind that OSQP is not supposed to return extremely high accuracy solutions in general.
Hope it helps!