Note that for all values of X and Y, (WrappedCliqueBot X Y) == (CliqueBot CliqueBot Y), and there’s no possible code you could add to CliqueBot that would break this identity. Now I just realized that the very fact that WrappedCliqueBot doesn’t depend on its “self” argument, provides a way to distinguish it from the unmodified CliqueBot using only blackbox queries, so in that sense it’s not quite functionally identical. Otoh, if you consider it unfair to discriminate against agents just because they use old-fashioned quine-type self-reference rather than exploiting the convenience of a “self” argument, then this transformation is fair.
I had in mind an automated wrapper generator for the “passed own sourcecode” version of the contest:
Note that for all values of X and Y, (WrappedCliqueBot X Y) == (CliqueBot CliqueBot Y), and there’s no possible code you could add to CliqueBot that would break this identity. Now I just realized that the very fact that WrappedCliqueBot doesn’t depend on its “self” argument, provides a way to distinguish it from the unmodified CliqueBot using only blackbox queries, so in that sense it’s not quite functionally identical. Otoh, if you consider it unfair to discriminate against agents just because they use old-fashioned quine-type self-reference rather than exploiting the convenience of a “self” argument, then this transformation is fair.