Folks, I somehow found out what was missing! I needed
gmsh.model.occ.synchronize()
after the last fragment operation.