"""Tests Sprint 77 — A.I.4 chantier 3 : taxonomie comparative. Couvre : 1. ``compare_taxonomies`` : - Proportions correctement normalisées (somme = 1) - Deltas signés (b - a) - Catégorisation par récupérabilité - Cas dégénéré : deux comptes vides → None - Classes apparaissant chez un seul moteur - Totaux par récupérabilité 2. Rendu HTML : - Diagramme miroir SVG bien formé - Tableau récupérabilité présent - "" si data None - "" si classes vides 3. Anti-injection : noms moteurs avec ``", {"case_error": 5}, "Pero", {"lacuna": 5}, ) html = build_taxonomy_comparison_html(data) assert "