You are right that this is less of a v2 -> v3 issue, as changing .real to .elt resulted in the same error. Here is rho, I and Ip printed.
I =
(2|id=35|n=1,Site,S=1/2) <Out>
1: 1 QN({"Sz",1})
2: 1 QN({"Sz",-1})
Ip =
(2|id=35|n=1,Site,S=1/2)' <Out>
1: 1 QN({"Sz",1})
2: 1 QN({"Sz",-1})
rho =
ITensor ord=2:
(2|id=212|n=1,Site,S=1/2)' <In>
1: 1 QN({"Sz",1})
2: 1 QN({"Sz",-1})
(2|id=212|n=1,Site,S=1/2) <Out>
1: 1 QN({"Sz",1})
2: 1 QN({"Sz",-1})
{norm=1.41 (QDense Real)}
I'm not sure that I'm interpreting the output properly, but it seems to me that rho has I and Ip as indices... Is this not the case? I see small differences like the "id" and <In> versus <out>. but I'm unsure if that's detrimental.