select only faces (elements) on the front Zplane view thought python

Hello,

I have the result of a clip (crinkle on), that looks like the following:

this is the view in the Z+ (set view direction to Z+) I would like to select only the faces i can ‘see’ from this view, but programatically.
the best or more nearest workflow i could find for this was:

extract surface so i only keep the quad elements.

generate normal surfaces (with consistency and flip normals ON)

use a threshold over the normal surfaces of Z direction with a lower bound of 0 and upper of 10000
this selects almost all the desired faces, but it selects some other faces and also some do not:

outside of using something like connectivity filter (which for some reason does not work as I expected…image after) and extract the region with highest surface area.

how could I improve this workflow? i would like at least to remove the floating faces….

okey, the connectivity i succesfully applied, by using a clean to grid filter before, it looks like one of the filter was duplicating points.

Nevertheless, the issue of having some holes, as some of the normals are Z neg but really small, exists, if anyone has a better solution to ‘get this faces’ would be appreciated.