I’ve been trying to do this for the last 3 hours, and it seems like no matter what, a part having roll will screw with how it orients itself. If it can’t right itself,
BodyGyro just really doesn’t like parts that are upside-down it seems.
AlignOrientation would work, if it actually bothered to align itself with a constantly-updated orientation. It instead aligns itself when it feels like it.
AngularVelocity would also work, except that even if it has a correct goal velocity it just ignores it.
Torque behaves even worse than AngularVelocity.