# Tutoriels CRISalid : par où commencer

import { Mermaid } from "../../../src/components/Mermaid";

> **En bref :**
> **Les tutoriels ne servent pas au POC de novembre**, qui part d'un [extrait fourni par la DiBISO](/01-cadrage-saclay/02-scenarios/03-extrait-et-comparatif-du-poc). Ils servent à refaire la chaîne CRISalid sur un environnement isolé et à vérifier des affirmations de code.
> Deux familles : un **parcours** en quatre étapes, non exécuté de bout en bout, et **huit contrôles** exécutés sans lancer la pile, tous revenus avec le code `0`. Cette page fait foi pour leurs résultats.

## Pourquoi des tutoriels dans un audit

L'audit cherche à **reproduire** ce qu'affirme la documentation de CRISalid. Les tutoriels en gardent la trace : refaire la chaîne sur un environnement jetable, sans toucher à l'instance de la DiBISO ([ce qu'elle montre](/03-crisalid/06-instance-saclay/00-ce-que-linstance-demontre)), et vérifier une affirmation précise sur une brique.

**Où trouver les scripts.** Les commandes `scripts/…` se lancent depuis le **dépôt de l'audit**, remis à la DiBISO sur demande. Il attend à côté de lui un dossier `official-crisalid` avec les copies des dépôts CRISalid aux révisions lues ; chaque script accepte `--sources <dossier>`.

## Lequel lire

| Votre question | Lisez |
| --- | --- |
| Comment les données vont-elles de l'annuaire au graphe, puis à l'API ? | Le **parcours**, dans l'ordre, à partir de [Préparer les données et la pile](./01-parcours/preparer-donnees-et-pile) |
| Une brique fait-elle ce que dit sa documentation ? | Le **contrôle** de la brique, ci-dessous |
| Quel extrait alimente le POC de la vitrine ? | [Extrait et comparatif du POC](/01-cadrage-saclay/02-scenarios/03-extrait-et-comparatif-du-poc) : la spécification de l'extrait y fait foi |
| Qu'est-ce qu'une unité, et pourquoi tant sont vides ? | [Qu'est-ce qu'une unité ?](/03-crisalid/00-reperes/quest-ce-quune-unite), avant tout tutoriel |

## Le parcours, en quatre étapes

<Mermaid
  title="Le parcours"
  caption="Chaque étape suppose la précédente. Procédures écrites d'après le code, non exécutées de bout en bout."
  chart={`flowchart TB
    T1["Préparer<br/>les données et la pile"]
    T2["Charger<br/>structures et personnes"]
    T3["Moissonner<br/>les publications"]
    T4["Vérifier<br/>le graphe et l'API"]
    T1 --> T2 --> T3 --> T4`}
/>

1. [Préparer les données et la pile](./01-parcours/preparer-donnees-et-pile) : corriger les jeux de démonstration, démarrer un socle minimal.
2. [Charger structures et personnes](./01-parcours/charger-structures-et-personnes) : les structures d'abord, sinon les rattachements sont perdus.
3. [Moissonner les publications](./01-parcours/enrichir-les-publications) : à partir des identifiants des personnes chargées.
4. [Vérifier le graphe et l'API](./01-parcours/verifier-le-graphe-et-api) : avec la correspondance entre les noms du code et ceux de l'instance.

Statut : **Non exécuté** de bout en bout ; fichiers, files et labels vérifiés dans le code.

## Les huit contrôles et leurs résultats

Dans l'ordre où la donnée traverse la suite. Tous **Confirmé** : exécution locale sur le code, sans service ni donnée réelle. « Relancé » : exécuté de nouveau le 30 octobre 2026, même résultat.

| Contrôle | Résultat |
| --- | --- |
| [Directory Bridge : entrées CSV](./02-preuves/preparer-directory-bridge) | Code 0, 12 tests sur 12 (22 oct.). Le lecteur CSV laisse de côté sept colonnes, dont emails, HDR et dates de rattachement ; une absence dans le lot vaut suppression |
| [Champs transmis Bridge → IKG](./02-preuves/verifier-contrat-bridge-ikg) | Code 0, 9 tests sur 9 (22 oct.). Emails, HDR et types d'appartenance ignorés par IKG ; un ResearcherID fait rejeter la personne |
| [IKG sans lancer les services](./02-preuves/preparer-ikg) | Code 0, 5 fichiers lus (relancé). Bus et moteur de recherche activés par défaut ; embeddings et classification thématique désactivés |
| [Moissonneur et adaptateurs](./02-preuves/preparer-harvester) | Code 0, 7 tests sur 7 (relancé). Cinq sources déclarées, dont Scopus ; pas de Web of Science |
| [Fusion et corrections](./02-preuves/verifier-fusion-corrections) | Code 0, 10 tests sur 10 (relancé). Les corrections ne suivent pas une fusion ; la défusion n'existe pas |
| [Textes et langues](./02-preuves/verifier-contrat-textes) | Code 0, 26 tests sur 26 (22 oct.). Limites de longueur différentes d'un côté à l'autre, écritures partielles, un état ancien rejoué écrase un état récent |
| [SoVisu+ sans la pile](./02-preuves/preparer-sovisuplus) | Code 0 (relancé). Version de Node non conforme sur le poste d'audit ; deux commandes amont écrivent ou vident une base |
| [Apollo : schéma et accès](./02-preuves/verifier-contrat-apollo) | Code 0, 10 contrôles sur 10 (22 oct.). La clé unique ouvre aussi les écritures |

Un code `0` signifie que le comportement décrit, **défauts compris**, est reproduit ; il ne valide jamais une chaîne complète.

## Ce que les tutoriels ne prouvent pas

- **Rien n'a été exécuté sur des données de Paris-Saclay** : les contrôles portent sur le code et les jeux de démonstration des dépôts.
- **Ils ne disent rien de la complétude du référentiel** : c'est l'instance qui la mesure ([données observées](/03-crisalid/06-instance-saclay/01-donnees-observees)).

L'échelle de preuve est définie dans [Sources et preuves](/03-crisalid/00-reperes/sources-et-preuves).
