# Contrôler SoVisu+ sans lancer la pile
> **En bref :**
> Ce contrôle lit la version attendue et les commandes de SoVisu+ (SoVisuPlus), l'espace des chercheurs, sans rien installer. Statut : **Confirmé** pour la lecture ; l'installation reste **Non exécutée**.

**Résultat :** code `0`, le 22 octobre 2026, relancé le 30 octobre 2026. SoVisu+ exige Node 24.19.0 exactement ; le poste d'audit avait une autre version (22.23.2, puis 24.22.1) : la lecture vaut, pas l'installation. Deux commandes amont écrivent dans une base ou la vident.

## Pourquoi ce contrôle

SoVisu+ est l'outil par lequel passeront les corrections des chercheurs ([contribution des chercheurs](/01-cadrage-saclay/02-scenarios/02-partie-2-contribution-chercheurs)). Ce contrôle répond à **« que faut-il pour l'installer, et quelles commandes sont dangereuses ? »**. Ce qu'un chercheur peut y corriger aujourd'hui est tenu dans [sécurité, droits et données personnelles](/03-crisalid/03-fonctionnement-transversal/securite-droits-donnees-personnelles).

## Avant de commencer

- Node et la copie `SoVisuPlus` dans `official-crisalid`.
- **À ne pas faire :** charger un fichier d'environnement, lancer l'initialisation ou les tests d'intégration contre une base existante.

## Étapes

### Étape 1 — Lire la version attendue et les commandes

**Pourquoi :** connaître le runtime et les commandes disponibles sans rien installer.

```bash
cd official-crisalid/SoVisuPlus
node --input-type=module <<'NODE'
import fs from 'node:fs';
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
console.log(JSON.stringify({
  attendu: pkg.engines.node, nvm: fs.readFileSync('.nvmrc', 'utf8').trim(),
  observe: process.versions.node,
  scripts: ['dev', 'dev:listener', 'test', 'test:integration', 'lint', 'type-check']
    .map(k => [k, pkg.scripts[k]]) }, null, 2));
NODE
```

### Étape 2 — Repérer les commandes qui écrivent

**Pourquoi :** savoir lesquelles écrivent ou vident une base, avant d'en lancer une.

Commandes lues dans le dépôt, **non exécutées** :

| Commande | Effet |
| --- | --- |
| `npm run dev` | Lance le site web seul |
| `npm run dev:listener` | Écoute le bus et les mises à jour HAL ; **écrit en base** |
| `npm run test:integration` | Aligne de force le schéma de la base de test puis **vide ses tables** : base jetable uniquement |
| `npm test`, `npm run lint`, `npm run type-check` | Vérifications ; résultat sur cette révision non établi |

Le script d'initialisation Docker applique aussi des migrations avant de démarrer.

## Ce que le contrôle établit

La version attendue, les commandes disponibles et celles qui écrivent ou vident une base. Rien sur le fonctionnement de l'application.

## Limites

- Ni l'application ni ses tests n'ont été lancés.
- Installation à préparer : base PostgreSQL jetable, Keycloak, bus et Apollo ; guide amont dans le dépôt `SoVisuPlus` (`docs/installation.md`).
- Les échanges avec IKG sont couverts par les contrôles [textes](./verifier-contrat-textes) et [fusion](./verifier-fusion-corrections).

## Et ensuite

Contrôle suivant : [Apollo : schéma et accès](./verifier-contrat-apollo).

Révision lue : `SoVisuPlus` `8e571657`.
