# Vérifier la fusion et les corrections
> **En bref :**
> Ce contrôle vérifie, sans aucun service, comment IKG recalcule une publication fusionnée et rejoue les corrections, et ce que font les commandes de défusion. Statut : **Confirmé** (exécution locale).

**Résultat :** code `0`, 10 tests sur 10, relancé le 30 octobre 2026. Les corrections ne sont rejouées que sur l'identifiant de la publication restante : elles ne suivent pas une fusion. La défusion n'existe pas : la commande qui porte ce nom dans IKG appelle la fusion, et le bouton de SoVisu+ ne fait rien.

## Pourquoi ce contrôle

Une même publication arrive souvent de plusieurs sources ; CRISalid les fusionne. Pour la vitrine et pour la contribution des chercheurs, la question est : **une correction survit-elle à la fusion, et peut-on revenir en arrière ?** Les conséquences sont tenues dans [provenance, qualité et fusion](/03-crisalid/01-donnees/provenance-qualite-fusion).

## Avant de commencer

- Python 3, bibliothèque standard seulement.
- Les copies `crisalid-ikg` et `SoVisuPlus` dans `official-crisalid`.
- **À ne pas faire :** appeler une route de défusion sur une instance réelle, ou charger les jeux de tests amont qui réinitialisent le graphe.

## Étapes

### Étape 1 — Lancer le contrôle

**Pourquoi :** reproduire l'orchestration de la fusion sans toucher à aucun graphe.

```bash
python3 scripts/check-crisalid-merge-contract.py
```

### Étape 2 — Savoir ce qui est réellement testé

**Pourquoi :** seules les méthodes étudiées sont exécutées.

- **Sept tests d'orchestration** : choix de la publication restante (la plus fournie, pas la première demandée), égalité, recalcul après fusion, identifiant utilisé pour rejouer les corrections, publication sans notice, filtrage des corrections, reprise après erreur. Les méthodes sont extraites du code sans modification ; accès au graphe et calculs annexes sont remplacés par des doubles de test.
- **Trois lectures de source** : la requête des corrections cible l'identifiant exact, sans suivre les fusions ; la commande de défusion d'IKG appelle le service de fusion ; le gestionnaire du bouton de SoVisu+ est vide.

### Étape 3 — Lire le rapport

**Pourquoi :** le code `0` confirme aussi les lacunes attendues.

Le rapport indique `tests_run: 10`, les révisions et le périmètre.

## Ce que le contrôle établit

Les deux comportements ci-dessus, sur le code lu. Si le code amont évolue, une assertion peut échouer : relire alors la page qui fait foi plutôt que maintenir le test.

## Limites

- Ce n'est pas un test d'intégration : aucune correction n'est réellement migrée entre deux publications.
- La perte effective de corrections sur des données réelles n'est pas mesurée.
- Qui peut déclencher ces commandes : [sécurité, droits et données personnelles](/03-crisalid/03-fonctionnement-transversal/securite-droits-donnees-personnelles).

## Et ensuite

Contrôle suivant : [Textes et langues](./verifier-contrat-textes).

Révision lue : `crisalid-ikg` `ebdaae75`, `SoVisuPlus` `8e571657`.
