The surface normals point into the upper volume rather than out. Use Dir to see the normal directions and the Flip option to flip the normals. After the normals are flipped BooleanUnion should work as expected.
Rhino sets the normal direction as out of closed volumes. However the upper volume is not a closed volume. There are several holes which appear to be connected with fillets. Also there are naked edges which can be seen using ShowEdges.
Your best bet would be to do whatever you did on the opposite side and not create the triangular opening.
In the alternative, you need to draw a curve to create a planar opening at the top and use planarsrf.
For the triangular opening, you might get away with edgesrf or networksrf. However, you’d be better of making that a four-sided opening if you can before filling it.