UPDATE 3
Okay… I feel very stupid but hopefully this can help someone else in a similar position.
I thought that shape_set_data(RID, Variant) would take a Dictionary such as dictionary["radius"] = value
. That is not the case. For a sphere, it just takes a float for the radius value. It doesn’t seem to have any default radius when you create a sphere (I thought the default would be 0.5).
Once you properly set the radius, it will detect static AND rigid bodies.
// grab the singleton for the physics server
server = PhysicsServer3D::get_singleton();
// create the shape
RID shape_rid = server->sphere_shape_create();
// now properly initialize the shape
float radius = 0.5f;
server->shape_set_data(shape_rid, radius);
It is worth noting that the body_test_motion results give some more/different information, so it is still valuable.