When an ARAnchor is created, it is passed a transform with a real-world position and orientation where it should be located. Then that ARAnchor gets an SCNNode which uses that transform as an origin, and as the ARAnchor's connection to the real-world is adjusted, the SCNNode's location is also adjusted. What happens if the SCNNode's transform is set to a new value, something like SCNMatrix4(hitTestResult.worldTransform)? Is the connection to the ARAnchor lost and is the SCNNode just floating around in SceneKit space with no direct connection to the real world?
Does changing the transform of an ARAnchor's SCNNode break the AR?
Ok going by this line from the documentation, I think the answer is yes:
Adding an anchor to the session helps ARKit to optimize world-tracking accuracy in the area around that anchor, so that virtual objects appear to stay in place relative to the real world. If a virtual object moves, remove the corresponding anchor from the old position and add one at the new position.