The patch looks great--can't wait to see it!
I turned the text file you uploaded into a patch and got the same block when I opened it. Then I removed the extra space from the text file and when I re-opened it, the block was gone. So I'm pretty sure that it's the space that's causing the problem. Where the space came from I do not know.
I'm sure you know this, but you can dictate an abstraction's send and receive channels through creation arguments. So [send $1-$2] will be [send $0-s1] if the abstraction's creation arguments are "$0 s1" and [send $0-s2] if the creation arguments are "$0 s2"
You can also determine messages using [list $1 $2 $3...] and [list trim]. This gets a bit harder if the messages are of different length, but it can still work. If you'll allow for externals, [iemguts/canvasargs] allows you to do this much more dynamically.
Finally, as an extra special trick, you can use creation arguments in the name of a sub-abstraction to allow for as much divergent behaviour between two instances of an abstraction as you want. See this example: sub-abstraction.zip . This might not be what you need here, but it can be really useful!