It looks like this is a bug with our textile parser. It parses the text multiple times. On the first pass, it escapes < to <, and on the second pass, it escapes the ampersand to form &#60;.
We use this package for our textile parsing, but you can see it has not been updated in some time. It looks like this repository may be the new home for the project, although there have only been a handful of commits over the last 2 years.
Here is the output from my python shell using the latest version: