I think if you convert the rectangle to bezier and use this path expression, you won’t need the position or size expressions:
radius = 20;
p = content("Rectangle 1").transform.position;
L = thisComp.layer("more info");
r = L.sourceRectAtTime(time,false);
ul = fromComp(L.toComp([r.left,r.top]))-p;
ur = fromComp(L.toComp([r.left+r.width,r.top]))-p;
lr = fromComp(L.toComp([r.left+r.width,r.top+r.height]))-p;
ll = fromComp(L.toComp([r.left,r.top+r.height]))-p;
ur1 = [ur[0]-radius,ur[1]];
ur2 = [ur[0],ur[1]+radius];
t = radius*0.5525;
it = [[0,0],[-t,0],[0,-t],[0,0],[0,0]];
ot = [[0,0],[t,0],[0,t],[0,0],[0,0]];
createPath([ul,ur1,ur2,lr,ll],it,ot,true)