Thanks! PEBKAC did seem more likely.
I think that prusa-slicer has induced me to miss messages about not being a manifold, by auto-healing what OpenSCAD does. Prusa-slicer reads and correctly (that is, as I would intend…) slices this model. I guess I thought that OpenSCAD had gotten better at unioning objects with adjacent surfaces in recent versions, and didn’t realize that prusa-slicer was just making it work.
I have attempted and failed to resolve the problem in meshlab using many of the “cleaning and repairing” options, such as with “snap mismatched borders” and so far no success. This is easily attributable to lack of practice and lack of understanding of the many capabilities of meshlab!
I admit that I can’t see the problems when I look in wire mode. I expect it to be wire soup; it’s made up of lots of segments that are trapezoidal in two projections. I expect that you are able to see the difference between “wire soup that indicates hidden surfaces” and “wire soup that is integral to the complexity of the object” but I can’t.
I’m trying to think of alternative ways to render this in OpenSCAD. I can’t just continue each of the segments to overlap because each segment will introduce a tiny vertical artifact, and I don’t think I can define it as a single complex polyhedron because I don’t think OpenSCAD handles self-intersecting polyhedra well. (Because I’m approximating a smoothly-varying curve with small segments, it seems obvious that this is an example that would be naturally represented by NURBS rather than a triangle mesh. But that would rather severely constrain the set of tools that I could use to create and process it. )
Anyway, back to the mental drawing board on this model! I appreciate the analysis!