Two rows (Néerlandais id=5, néerlandais id=3) collided when lowercased, violating the UNIQUE constraint on languages.name. Added DELETE to keep the lowest-ID row per LOWER(name) group before the UPDATE SET name = LOWER(name).
- add AP aliases for: - Design & politique du multiple → DPM, - Pratiques artistiques & complexité scientifique → PACS, - Narraion Speculative typo → NS - Fix: OUI/NON CSV artefacts in contact_interne — clean DB, guard in findOrCreateAuthor and CSV import - Cleaned 141 authors.email = 'NON' rows → NULL in dev DB - findOrCreateAuthor: treat OUI/NON as null (CSV boolean artefact in email column) - CSV import: sanitize contact column — OUI/NON → empty string before passing to findOrCreateAuthor