A new error message has been rolled out, but it requires some explanation.
If Attachments are not properly positioned now, you will see an error like the following:
Attachment (LeftWristRigAttachment) in LeftHand is placed at position [0.719, 0.701, 0.771] that is outside the valid range. The closest valid position is [0.505, 0.531, 0.604]. (the attachment must be within the oriented bounding box - Position: [0.319, 0.279, 0.243], Orientation: [18.852, -25.628, -56.037], Size: [0.803, 0.893, 0.851]
Each attachment must be within a bounding area relative to the parent MeshPart’s geometry. To see that bounding area, you need the three sets of variables from the message above:
Position: [0.319, 0.279, 0.243]
Orientation: [18.852, -25.628, -56.037]
Size: [0.803, 0.893, 0.851]
First, make a copy of your body part that has the Attachment child that is not correctly positioned. In the case of the above error message, that body part would be the LeftHand. Rename your copy to LeftHand_COPY, remove any Motor6D children it has, set it’s CFrame.Position to [0,0,0], and it’s CFrame.Orientation to [0,0,0].
Now, add a new Part below game.Workspace, and name it BoundsArea. Set BoundsArea’s CFrame.Position to the position specified above. Set BoundsArea’s CFrame.Orientation to the Orientation specified above. Finally, set BoundsArea’s Size to the Size specified above. BoundsArea now shows you the area that the LeftWristRigAttachment can be in for this LeftHand (If you change the Color and Transparency of BoundsArea you will make it easier to see alongside LeftWristRigAttachment).
It will look something like the following:

Alternatively, using Lua code, you can position the BoundsArea at your existing body part. Use the following Lua code:
local function debugAttachmentPosition(Position: Vector3, Orientation: Vector3, Size: Vector3, bodyPartMeshPart: MeshPart)
local boundsArea = Instance.new("Part")
boundsArea.Name = "BoundsArea"
boundsArea.Size = Size
local localSpaceCFrame =
CFrame.fromOrientation(math.rad(Orientation.X), math.rad(Orientation.Y), math.rad(Orientation.Z)) + Position
boundsArea.CFrame = bodyPartMeshPart.CFrame * localSpaceCFrame
boundsArea.Transparency = 0.5
boundsArea.Color = Color3.fromRGB(255, 0, 0)
boundsArea.Shape = Enum.PartType.Block
boundsArea.Anchored = true
boundsArea.CanCollide = false
boundsArea.Parent = game.Workspace
end
And you would call the above code, like:
local Orientation = Vector3.new(18.852, -25.628, -56.037) --Orientation from error message
local Position = Vector3.new(0.319, 0.279, 0.243) --Position from error message
local Size = Vector3.new(0.803, 0.893, 0.851) --Size from error message
local bodyPartMeshPart = game.Workspace.Model.LeftHand --this the body part you are trying to upload
debugAttachmentPosition(Position, Orientation, Size, bodyPartMeshPart)
And this will show the BoundsArea on your model:
