Bvecs reader wasn't rewinding the file position between reads. Off by some bytes, garbage dimensions coming out. Vectors that should've been 128D were reading as 131D or 119D depending on where the cursor landed. fvecs and ivecs had the same bug -- copy-paste inheritance at its finest.
These binary formats don't forgive. No headers, no delimiters, no checksums. Each record is just a 4-byte dimension count followed by that many values. Wrong offset by one byte and everything downstream is silently garbage. You don't get an error, you get wrong answers. Spent way too long staring at hex dumps before I spotted it.
