The custom palette taxonomy (#46) pins display strings to fixed TLK
ids in tlk/custom.tlk.yml. registerInlineAtID demanded those ids be
free, but .tlk_state.json is a gitignored, per-machine cache: on any
machine built before #46, a ref could have dynamically grabbed a
now-pinned id (e.g. feat:yuanti/alternate_form.feat holding 2689),
failing the build with "TLK id N is already reserved by ...".
Make the pin authoritative over the cache: a stale cached owner on a
pinned id is evicted and reallocated a fresh id when next made active.
Only two pins fighting over one id in custom.tlk.yml is now an error.
This self-heals on the next build without deleting the state file.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>