is_solved_and_feasible does what it says it does: did the solver run successfully and find a feasible solution?
You can see the implementation here:
I should remove has_values from the documentation. It is misleading. It doesn’t confirm that there is a feasible primal solution, only that the primal status is not NO_SOLUTION. The result might be an INFEASIBLE_POINT, or a NEARLY_FEASIBLE_POINT… neither are probably what you are expecting.