It seems that Solver Geometry Node lacks of a stop condition, like it's present in the Feedback Loop block.
After a lot of trial and error I managed to implement it for the Sop Solver, but I wonder if there is any simpler and more efficient method to do it.
1- when condition is met, cache the solved geometry in user data
2- switch to a Null Node, so that the Solver now just passes a blank geometry
3- downstream after the Sop Solver a Python Sop load back the cached geometry.
Step 2 is what makes my method slightly less efficient than the stop condition of the feedback loop:
the Solver would pass a Null geometry for the remaining steps, which is very fast but STILL takes some time.
So it doesn't really stop the solver, it makes it spin empty.
I've attached an example file