to keep the starting edge stationary, the size of the part needs to increase 2x what the position increases by. Might help to visualize it as a radius vs diameter – the radius needs to increase 1:1 of the part’s increase in position.
an example with tweens:
local part = Instance.new("Part")
part.Parent = workspace
part.Anchored = true
part.Size = Vector3.new(1,1,1)
part.Position = Vector3.new(0,4,0)
game:GetService("TweenService"):Create(part, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, -1, true), {Size = Vector3.new(1,3,1), Position = Vector3.new(0,5,0)}):Play()
notice to move one stud up, the size on that axis must increase 2 studs