Enchanted refined resources are top-level items carrying their own
@enchantmentlevel, and their tradeable/market id is <name>@<n>
(e.g. T4_LEATHER_LEVEL3@3). The parser stored them — and referenced
them in enchanted recipes — as just T4_LEATHER_LEVEL3, so those inputs
never matched AODP price rows and enchanted-item costs were wrong.
Apply canonicalId(name, enchantLevel) to both item ids and craftresource
references.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>