Power and skill grants read every sub-array as (u32 key, int32 value) (sb.exe 0x6D7640). Skill keys were already hashed; attr and power keys now are too, and the values plus attribute/skill/resource amounts and power action arguments are read signed. Shared pair read/write and key hashing moved into helpers; load_json no longer mutates its input. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>