The issue turned out to be my implementation of planes was not applying local translations to the ray, and basically the plane transform was being ignored. (It became quite clear after rendering the image and seeing the plane bisect the sphere).
More details are listed in the old book forum - Chapter 11 Test #4 and #5 | The Ray Tracer Challenge