I don't think it is necessarily a bug in KoL.
Here is an item I extracted from a kmail:
Notice that it has a "rel" string and an item descid. We can extract the item id accurately using either of them.
<table class="item" style="float: none" rel="id=5899&s=0&q=0&d=0&g=0&t=1&n=1&m=0&p=0&u=u"><tr><td><img src="https://s3.amazonaws.com/images.kingdomofloathing.com/itemimages/analjar_full.gif" alt="jar of psychoses (The Captain of the Gourd)" title="jar of psychoses (The Captain of the Gourd)" class=hand onClick='descitem(710562556)' ></td><td valign=center class=effect>You acquire an item: <b>jar of psychoses (The Captain of the Gourd)</b></td></tr></table>
The issue is that ResultProcessor.processResults creates a list of items using those relstrings, which precisely identify the item by itemid, and then ResultProcessor.processItem looks through the response text picking up each item and matching it against the item from the preprocessed list. It "matches" by comparing item name.
Not sure why that is necessary.
If it doesn't match, it falls back to trying to process the item by looking up the item name - which is the TCRS name, in this case - which results in the message you saw.
I wonder what would happen if we simply didn't check the item name and assumed that we are always processing the items from the list in the same order they came in from the parsed results.