Swept all 33 dat paks plus hidden/DefTables.pak: 7,750 IDXD objects, 190,782 records, 1,271,462 (name -> tag) pairs, 0 failures, 0 parse failures. The key rule is stronger than first written: a record's key is tag_hash of its own inline name, 190,782/190,782 -- no roster needed (roster-based recovery only reaches ~30% of records). Verified independently here on UnitGroup_S02, 112/112. The modulus is uniquely pinned, not just consistent: gcd of poly256(name) - (tag & 0xFFFFFF) over all pairs is exactly 0x00FFFFDF, prime. Case-sensitivity is load-bearing, not incidental: the disc has 17 name pairs differing only in case (UNIT/Unit, TYPE/Type, STAGE/Stage, ...); name_hash collides on all 17, tag_hash separates all 17. Records the limit too: IXUD, the wide-string sibling, uses a DIFFERENT low-24 hash (0/19,808) though it keeps the same top-byte checksum (19,808/19,808). Its offsets are counted in 16-bit chars (STR + 2*strsize == filesize) -- newly decoded, all 534 parse. Its low bits are provably not a modular polynomial (gcd = 1; exhaustive Barrett search over M in [2^20,2^25) finds nothing; fixed-position deltas are non-constant), so it is lossy and needs the XEX.