- garde-fou anti-desactivation de masse : fetchRemote leve sur un payload
non-list (2xx inattendu) et la commande abandonne sans ecriture si aucune
ligne exploitable, au lieu de soft-delete tout le referentiel
- verrou consultatif pg_try_advisory_lock pour serialiser les runs (anti-overlap)
- deduplication par SIRET dans le mapper (rows_upserted = transporteurs distincts)
- upsert par paquets (INSERT groupe) au lieu d'un aller-retour par ligne
- migration des tables qualimat deplacee vers le namespace modulaire Transport
(+ enregistrement du path dans doctrine_migrations.yaml)
- tests : deduplication + abandon sur source vide