jsonb_to_recordset declared hash16k as text; against the char(32) column the join cast the column, so Postgres scanned all of file_hashes for every call (4 s, 20 calls a minute: 44% of the database's time). Declared char(32), the join walks file_hashes_hash_size_release_idx: 24 ms for 300 pairs. LOG.md (138). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>