"""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 "