Couvre : agendas vides, ADDED/REMOVED/MODIFIED, tolérance ±15 min (bord inclusif), normalisation NFKC des matières, matching multi-candidats par plus petit id, comparaison ordre-insensible des enseignants/salles, statut != NORMAL, REMOVED par existence (pas par sélection), ordre déterministe et idempotence. Couverture de sync/diff.py : 92%. Co-authored-by: opencode/test-engineer <test-engineer@agents.invalid>