X_CATALOG_CARRIER_UNSCANNED
Means
the carried-key rule found no key the framework hands to t() through a constant or a property
Typical cause
scripts/catalog-keys.ts derives its carriers from the framework's own dynamic t() calls (t(row.reason), ui.t(UI_KEYS.close)), so a renamed t() or a moved corpus leaves it nothing to check — and a rule with no input reads exactly like a tree with no missing key
Fix
bun run scripts/catalog-keys.ts --json — then edit DYNAMIC_CALL in scripts/catalog-keys.ts to match how the framework calls t()