In this picture, you can see that the code is using
if A[j] > curNum: A[j+1] = A[j] , and then changing the number to 11, when in reality the code should do something different, am I crazy?

In this picture, you can see that the code is using
if A[j] > curNum: A[j+1] = A[j] , and then changing the number to 11, when in reality the code should do something different, am I crazy?

In python, negative indexes in list mean that you count from the end instead of from the beginning. For example, -1 is the last item, and -2 is the second last item.
What happened there is, j is -1, so when the program executes the line,
A[j+1] = A[j]
it is doing
A[0] = A[-1]
since it wraps around when the index is negative, it grabs the last item in the list, which is 11, and hence
A[0] = 11
at line 10 after else there is no need write A[j+1] = curNum because A[k+1] = curNum line is assigning the value at desired position. And you will get a description about negative indices from here.
And Please Have a look about insertion sort algorithm from Wikipedia link. here I just copy paste the algorithm.
function insertionSortR(array A, int n)
if n>0
insertionSortR(A,n-1)
x ← A[n]
j ← n-1
while j >= 0 and A[j] > x
A[j+1] ← A[j]
j ← j-1
end while
A[j+1] ← x
end if
end function
And the implementation of insertion sort is like that
def insertionSortR(A):
for i in range(1,len(A)):
temp = A[j]
j = i
while j > 0 and temp < A[j-1]:
A[j] = A[j-1]
j=j-1
A[j] = temp
return A
for more implementation and discussion, take a look here