Simultaneous local camera rotation and rotation of its offset vector has strange results

I’m trying to rotate a third person camera in its local space as I rotate its offset vector from the player; the idea is to circle the player while always looking at the player. For some reason, when I reach rotations corresponding to being directly over the character’s head ( decreasing to world space -90 degrees pitch in the default orientation where forward is parallel to the X axis and right is parallel to the Y axis) the offset vector seems to move backwards, world space pitch starts increasing again, and we get a weird somersault behavior that loses sight of the character. In the linked vid, you can see the offset vector X value steadily increasing as expected as we approach the top of the character’s head, and then suddenly it starts decreasing at world space pitch -90 degrees and world space pitch starts increasing (I’d love to log the local space rotation, but the only local space API seems to be AddLocalRotation). Here’s the code:

FRotator CamYaw(0.f, ThirdPersonCameraComponent->GetRelativeRotation().Yaw, 0.f);
// The camera starts behind the character, and both camera and character's starting right vector is the Y axis.  
// Since the character cannot pitch or roll, we can just consider the Y axis to be our rotation axis, 
// provided we rotate it in the XY plane to stay in sync with the camera's Yaw.
FVector SpinningMayaVector = CamYaw.RotateVector(FVector(0.f, 1.f, 0.f));

// Value is an axis input value from the mouse indicating how many degrees we should rotate
UE_LOG(LogTemp, Warning, TEXT("LookUp; before rotation over spinningmayavector %s by %f degrees, our offset vector says %s"), *SpinningMayaVector.ToString(), -Value, *ThirdPersonCameraComponent->GetRelativeLocation().ToString());
// The new offset vector will be the current relative location vector rotated around the SpinningMayaVector (our character axis adjusted for camera Yaw, defined above)
FVector OffsetVector = ThirdPersonCameraComponent->GetRelativeLocation().RotateAngleAxis(-Value, SpinningMayaVector);
ThirdPersonCameraComponent->SetRelativeLocation(OffsetVector);
UE_LOG(LogTemp, Warning, TEXT("LookUp; after rotation over spinningmayavector %s by %f degrees, our offset vector says %s"), *SpinningMayaVector.ToString(), -Value, *OffsetVector.ToString());

// update cam facing; starts on character so should continue looking at her as long as the offset vector rotates along with the cam itself 
FRotator CamPitch(Value, 0.f, 0.f);
UE_LOG(LogTemp, Warning, TEXT("LookUp; prior to 3PP cam local rot, its world rotation is %s and its location relative to Maya is %s"), *ThirdPersonCameraComponent->GetComponentRotation().ToString(), *ThirdPersonCameraComponent->GetRelativeLocation().ToString());
ThirdPersonCameraComponent->AddLocalRotation(CamPitch);
UE_LOG(LogTemp, Warning, TEXT("LookUp; after 3PP cam local rot, its world rotation is %s and its location relative to Maya is %s"), *ThirdPersonCameraComponent->GetComponentRotation().ToString(), *ThirdPersonCameraComponent->GetRelativeLocation().ToString());			

Without the cam local rotation, the offset vector rotation works as expected. How could the cam local rotation be influencing the offset vector?

Here’s a video of the issue in action: vlc-record-2022-11-04-21h45m30s-2022-11-04 21-42-36.mkv-.mp4 - Google Drive