Once I wired up:
stateMachine.CharacterController.enabled = false;
stateMachine.transform.position = _closestPoint - (stateMachine.LedgeDetector.transform.position - stateMachine.transform.position);
stateMachine.CharacterController.enabled = true;
Then the player has a great distance to the roof, but is about a foot above the edge of the roof now. If I remove it, then the hands are lined up, but have a space between the roof and the hands. Is that because my collider transforms are weird?