Contrôles déjà exécutés

Contrôler IKG sans lancer les services

En bref : Ce contrôle lit la configuration d'IKG et ses valeurs par défaut, sans démarrer l'application. Statut : Confirmé pour la lecture ; l'installation reste Non exécutée.

Résultat : code 0, cinq fichiers lus, le 22 octobre 2026, relancé le 30 octobre 2026 avec le même résultat. Par défaut, le bus de messages et le moteur de recherche (Elasticsearch) sont activés ; le calcul d'embeddings et la classification thématique (Taxi) sont désactivés. Ce ne sont pas les valeurs effectives d'une instance.

Pourquoi ce contrôle

IKG est le cœur de CRISalid : c'est lui qui écrit le graphe. Le démarrer n'est pas anodin : il écrit dans Neo4j, importe une taxonomie et se connecte au bus. Ce contrôle répond à « comment IKG est-il configuré par défaut ? » sans rien déclencher.

Avant de commencer

  • Python 3.11 ou plus récent (pour tomllib) et la copie crisalid-ikg dans official-crisalid.
  • À ne pas faire : importer app.main, charger un .env ou lancer la suite de tests amont, qui vide le graphe.

Étapes

Étape 1 — Lire la configuration sans importer l'application

Pourquoi : connaître les valeurs par défaut sans déclencher les écritures d'un démarrage.

TerminalBash
cd official-crisalid/crisalid-ikg python3 - <<'PY' import ast, json, tomllib from pathlib import Path files = ['app/main.py', 'app/crisalid_ikg.py', 'app/config.py', 'app/settings/app_settings.py', 'tests/conftest.py'] trees = {f: ast.parse(Path(f).read_text(encoding='utf-8')) for f in files} cls = next(n for n in trees['app/settings/app_settings.py'].body if isinstance(n, ast.ClassDef) and n.name == 'AppSettings') wanted = {'amqp_enabled', 'es_enabled', 'embedding_enabled', 'taxi_enabled'} defaults = {n.target.id: ast.literal_eval(n.value) for n in cls.body if isinstance(n, ast.AnnAssign) and getattr(n.target, 'id', None) in wanted} python = tomllib.loads(Path('pyproject.toml').read_text())['tool']['poetry']['dependencies']['python'] print(json.dumps({'fichiers': len(trees), 'python': python, 'defauts': defaults})) PY

Étape 2 — Lire le résultat

Pourquoi : une valeur par défaut n'est pas une valeur déployée.

Résultat obtenu : Python déclaré ^3.10 ; amqp_enabled et es_enabled à true ; embedding_enabled et taxi_enabled à false. La configuration d'une instance réelle passe par ses variables d'environnement ; ce qu'on observe sur l'instance de la DiBISO est décrit dans ce que montre l'instance.

Ce que le contrôle établit

Les valeurs par défaut du code, et le fait qu'elles se lisent sans démarrer l'application. Il ne dit rien de l'ingestion, ni des écritures au démarrage.

Limites

  • Ni FastAPI ni la suite de tests amont ne sont lancés.
  • Le démarrage d'IKG écrit des contraintes et index dans Neo4j et supprime le dossier de taxonomie importé : n'y pointer aucun original.
  • La suite de tests amont vide le graphe avant et après chaque test : uniquement sur un graphe jetable.
  • Pour démarrer IKG dans une pile isolée : préparer les données et la pile.

Et ensuite

Contrôle suivant : Moissonneur et adaptateurs.

Révision lue : crisalid-ikg ebdaae75.

Last modified on