I think that's right, looping an output into an input works like this: Let \$$f : X \otimes Y \nrightarrow Z \otimes Y\$$. Tensoring and composing with cap, cup, and identity profunctors allows you to feed the \$$Y\$$ output into the \$$Y\$$ input, and get a new profunctor via the composition rule. So if \$$f^\star : X \nrightarrow Y\$$ is that profunctor, then it's definition is

$f^\star(x,z) = \begin{cases} f((x,y),(z,y')) & \mathrm{if} \ y \le y' \ \text{for any} \ y,y' \in Y \\\ \mathrm{false} & \mathrm{otherwise} \end{cases}$

So basically, unless \$$f\$$ requires less \$$Y\$$ than it produces, you don't get a non-trivial profunctor \$$f^\star:X \nrightarrow Z\$$. For any pair \$$(x,z)\$$, \$$f^\star\$$ would return false. If \$$f\$$ does require less \$$Y\$$ then it produces, then it reduces to asking whether you can get \$$x\$$ given \$$z\$$, so you can simply forget about \$$Y\$$ inputs and outputs.