I don’t like the idea of upping the tolerance more than once. It rarely helps, and it can take a long time for nothing. In most cases, when a boolean fails at a loose tolerance but works at a tighter one, it is because to surfaces are nearly tangent or overlapping, but not quite. At the loose tolerance, the overlap or tangent code gets called, and since the surfaces aren’t really overlapping or tangent something fails. At the tighter tolerance, the intersector finds transverse intersections and the boolean succeeds. Since the surfaces were nearly overlapping or tangent, most likely the user thinks that they really are, and the boolean result, while successful, is not all that desirable.
Your case is different, and I think I can make it work because the intersection is right along an edge, but since the surface is so narrow, intersection events are found along other edges as well as the correct one. I should be able to detect that this is the case and only use the correct intersection. There is already code to handle the case. It probably just needs to be adjusted.
I agree that there should be a way for the user to know which objects cause the problem. That’s on my list, and I started looking into it a while back. It’s fairly high priority, but there are other things I have to take care of first.