Why do my physics objects rotate randomly sometimes when reparented

Here’s a video of it:

The axes are physics objects with a trigger collider on the blade. When the trigger hits the target, the axe switches to kinematic (to disable movement) and becomes a child of the target.

As you can see, sometimes the axe just works like it’s meant to, but other times the axe rotates to some random angle.

Here’s the code for the axe if you’re curious:

    void OnTriggerEnter(Collider col)
    {
        print(GetComponent<Rigidbody>().velocity.magnitude);
        if (/*col.gameObject.tag == "Target" &&*/ GetComponent<Rigidbody>().velocity.magnitude > minimumStickSpeed)
        {
            transform.parent = null;
            transform.parent = col.gameObject.transform;
            transform.GetComponent<Rigidbody>().isKinematic = true;//.constraints = RigidbodyConstraints.FreezeAll;
        }
    }

There is no script on the target.

Any ideas on how to stop the errant rotating?

You could freeze the rotation on the x axis as long as they didn’t hit anything, as it seems you want them to only spin forward.
OnCollisionEnter you could set the angularVelocity to 0, making sure the axe does not spin anymore.

good practice rule:
Do the GetComponent in Awake and save a reference instead of doing that 3 times in OnCollisionEnter. Does not really matter here, but with more objects that might start to get your performance down at some point…