labfy-investigation/docs/DOCUMENTATION_AUDIT_V10.md
grayTerminal-sh 8fcd6b0e0d docs/ update
2026-07-24 14:40:11 +02:00

18 KiB
Raw Blame History

Audit de la documentation — état V10

Projet : Labfy Investigation
Date : 2026-07-24
Branche examinée : main
Commit de référence : 613d2096bc5eeb2c1c4f60ae701292e19a2abe66
Schéma SQLite courant : V10
Tickets ouverts au moment de laudit : #107 et #42

Conclusion générale

La documentation doit être remise à niveau.

Le README.md a déjà reçu plusieurs ajouts récents et reste globalement utile. En revanche, les documents de référence situés dans docs/ décrivent encore en grande partie larchitecture du premier socle ou de la V1 SQLite.

Le problème principal nest pas labsence de documentation, mais le mélange entre :

  • larchitecture historique ;
  • larchitecture cible ;
  • les fonctionnalités déjà implémentées ;
  • les tickets encore ouverts ;
  • le schéma SQLite réellement courant.

Ce mélange a déjà provoqué une mauvaise interprétation par un agent local, qui a présenté la V1 et le ticket #023 comme létat actuel du dépôt.

Ordre de confiance à documenter

Toute analyse du projet doit respecter cet ordre :

  1. code présent sur main ;
  2. tests automatisés ;
  3. migrations et scripts SQL ;
  4. commits ;
  5. tickets Forgejo fermés ;
  6. tickets Forgejo ouverts ;
  7. documentation générale ;
  8. documents historiques et anciennes roadmaps.

Un ticket ouvert décrit un chantier, pas une fonctionnalité terminée.

Un audit versionné décrit la version quil nomme, pas automatiquement la version courante.


Matrice des documents

Document État Priorité Action
README.md Partiellement à jour Haute Corriger létat courant et les commandes
CHANGELOG.md Incomplet Haute Documenter V10 et le pivot EML préparatoire
docs/ARCHITECTURE.md Obsolète Critique Réécrire larchitecture actuelle
docs/DEVELOPMENT.md Partiellement faux Critique Aligner sur Makefile et couches réelles
docs/CONVENTIONS.md Obsolète par endroits Haute Aligner langue, SQL, suppression et Git
docs/ROADMAP.md Très obsolète Critique Remplacer par une roadmap vivante
docs/BACKLOG.md Vide Haute Supprimer ou rediriger vers Forgejo
docs/DEPENDENCE.md Globalement utile Moyenne Vérifier les outils réellement invoqués
docs/database/DATABASE_ARCHITECTURE.md Marqué V1 Critique Transformer en architecture V10
docs/database/SCHEMA_AUDIT_V1.md Historique non signalé Critique Déplacer et ajouter un avertissement
docs/database/SCHEMA_AUDIT_CURRENT.md À ajouter Critique Référence courante V10
docs/database/audits/SCHEMA_AUDIT_V10.md À ajouter Haute Photographie versionnée de V10

1. README.md

Éléments corrects

Le README décrit correctement :

  • le dépôt Forgejo comme source principale ;
  • le caractère non opérationnel du logiciel ;
  • le cadre légal et éthique ;
  • lautonomie dune enquête ;
  • limmutabilité des preuves originales ;
  • SQLite comme source de vérité ;
  • lexécution asynchrone ;
  • linterdiction de construire des commandes shell dynamiques ;
  • une grande partie des fonctionnalités ajoutées jusquà V9/V10.

Mises à jour nécessaires

Ajouter explicitement le schéma courant

Ajouter dans létat du projet :

Version du schéma SQLite : V10

avec un lien vers :

docs/database/SCHEMA_AUDIT_CURRENT.md

Mettre à jour les fonctionnalités présentes

Ajouter dans la liste du socle actuel :

  • pipeline EML asynchrone préparatoire ;
  • extraction MIME sécurisée ;
  • assainissement des noms de pièces jointes ;
  • propositions bancaires IBAN/BIC ;
  • vocabulaire contrôlé ;
  • table bank_account_entities ;
  • types canoniques de relations liés au pivot e-mail ;
  • tests test_controlled_vocab, test_bank_proposal et test_eml_pipeline_task.

Préciser que le ticket #107 reste ouvert et que le flux complet de révision et dintégration nest pas encore terminé.

Corriger le prochain chantier

Le texte indiquant que le prochain chantier porte sur linitialisation asynchrone du registre doutils est obsolète.

Le chantier actif est désormais :

#107 — Pivot e-mail forensique

Le ticket #42 reste linventaire permanent des outils OSINT.

Corriger les commandes de validation

Utiliser :

make clean
make -j8
make -j8 test
git diff --check

Prévoir un retour séquentiel uniquement si lexécution parallèle échoue pour une raison réelle.


2. CHANGELOG.md

Problème

Le changelog ne reflète pas encore correctement lampleur du commit V10.

Ajouts à documenter

Dans une section Unreleased ou 0.1.0-dev, ajouter au minimum :

  • schéma SQLite V10 ;
  • table bank_account_entities ;
  • statuts de vérification et provenances contrôlés ;
  • nouveaux types système de relations ;
  • pipeline EML asynchrone ;
  • extraction MIME sécurisée ;
  • détection et proposition IBAN/BIC ;
  • vocabulaire contrôlé ;
  • premiers objets dintégration EML ;
  • tests associés ;
  • migration V9 vers V10 ;
  • mise à jour de schema_current.sql.

Règle recommandée

Le changelog doit décrire les capacités livrées, pas seulement les premiers modules historiques de la fenêtre GTK.


3. docs/ARCHITECTURE.md

Problèmes observés

Le document date du 14 juillet et décrit essentiellement le premier socle.

Il ne représente pas correctement :

  • src/dao et include/dao ;
  • les services métier ;
  • les tâches asynchrones ;
  • le gestionnaire de tâches ;
  • le registre et le catalogue doutils ;
  • la provenance OSINT ;
  • le graphe denquête ;
  • les types canoniques de relations ;
  • les extractions ;
  • les comptes sociaux ;
  • les personnes et leurs rôles ;
  • le pipeline EML ;
  • les propositions bancaires ;
  • le vocabulaire contrôlé.

La phrase suivante est désormais incorrecte :

Aucune requête SQL ne doit apparaître ailleurs.

Le dépôt possède une couche DAO contenant les requêtes métier.

Architecture à documenter

Interface GTK4
    ↓
Application et contrôleurs
    ↓
Services métier / tâches
    ↓
DAO et adaptateurs
    ├── SQLite
    ├── système de fichiers
    ├── outils externes
    └── futures API
    ↓
Modèles métier

Règle SQL correcte

  • linfrastructure SQLite, les migrations et les transactions appartiennent à src/database ;
  • les requêtes métier appartiennent aux DAO ;
  • les widgets et vues naccèdent jamais directement à SQLite ;
  • les modèles ne connaissent pas SQLite.

Organisation actuelle à ajouter

include/core/
include/dao/
include/database/
include/models/
include/views/
include/widgets/

src/core/
src/dao/
src/database/
src/models/
src/views/
src/widgets/

Statuts à utiliser

Pour éviter les ambiguïtés, chaque grande capacité doit être marquée :

IMPLÉMENTÉ
PARTIEL
PRÉVU
HISTORIQUE

4. docs/DEVELOPMENT.md

Incohérences avec le Makefile

Cible make docs

Le document mentionne :

make docs

mais le Makefile courant ne définit pas de cible docs.

Action :

  • supprimer cette commande ;
  • ou créer réellement une cible Doxygen avant de la documenter.

Options de compilation

Le document affirme que tout le projet utilise :

-Wpedantic

Le Makefile principal utilise globalement :

-std=c17 -Wall -Wextra -Werror

-Wpedantic est ajouté à plusieurs tests, mais pas aux CFLAGS globaux.

Il faut choisir une seule vérité :

  • ajouter -Wpedantic globalement au Makefile ;
  • ou corriger le document.

Versions minimales

Le document annonce :

  • GTK 4.10+ ;
  • SQLite 3.45+ ;
  • GCC 15+.

Ces versions ne sont pas imposées par le Makefile via pkg-config.

Pour la future cible Ubuntu, annoncer GCC 15+ risque dexclure inutilement les postes institutionnels.

Action :

  • documenter les versions réellement minimales requises par les API utilisées ;
  • distinguer lenvironnement de développement Arch de la cible minimale Ubuntu.

Architecture MVC

Le terme MVC est désormais trop réducteur.

Utiliser plutôt :

architecture en couches

avec services, DAO, tâches et adaptateurs.

Accès SQLite

Remplacer :

Toutes les opérations sur SQLite passent par la couche DAO.

par :

Les migrations, connexions, statements et transactions appartiennent à la
couche Database. Les requêtes métier passent par les DAO. Les vues, widgets et
modèles naccèdent jamais directement à SQLite.

Commandes

Mettre les commandes recommandées à jour :

make clean
make -j8
make -j8 test
git diff --check

5. docs/CONVENTIONS.md

Langue du code

Le document affirme que le domaine métier est écrit en français, avec des exemples tels que preuve.c et entite.c.

Le code actuel utilise principalement des noms techniques anglais :

evidence_record
entity_dao
relation_service
bank_proposal
controlled_vocab
eml_pipeline_task

Convention proposée

  • code C, noms de fichiers, fonctions, structures et codes persistés : anglais technique cohérent ;
  • libellés de linterface et documentation utilisateur : français ;
  • termes juridiques et métier : français dans les textes ;
  • codes persistés : anglais stable, sans dépendre du libellé affiché.

Exemple :

code persistant : proposed
libellé français : Proposé

Suppression

Le document affirme que les objets importants ne sont jamais supprimés immédiatement.

Cette règle doit être qualifiée table par table :

  • suppression logique par défaut pour les objets de traçabilité ;
  • suppression physique autorisée uniquement lorsquun DAO et les contraintes métier la prévoient explicitement ;
  • aucune affirmation générale non vérifiée.

Git

Remplacer la règle trop stricte :

Un ticket terminé correspond à un commit.

par :

Chaque commit porte un changement cohérent et vérifiable. Un ticket peut
nécessiter plusieurs commits, mais chaque commit doit compiler, être testé et
laisser la branche stable.

Schéma

Ajouter :

  • toute migration possède un script versionné ;
  • une base existante est migrée transactionnellement ;
  • la version courante est documentée dans SCHEMA_AUDIT_CURRENT.md ;
  • les audits anciens sont historiques.

6. docs/ROADMAP.md

Problème critique

Le document conserve plusieurs générations de roadmap dans le même fichier.

Il présente encore comme non réalisés :

  • création dune enquête ;
  • validation ;
  • initialisation SQLite ;
  • InvestigationProject ;
  • preuves ;
  • entités ;
  • relations ;
  • tâches asynchrones ;
  • plusieurs fonctions déjà présentes.

Il commence également une seconde roadmap au ticket #031.1.

Cette structure est la principale source de confusion documentaire du dépôt.

Action recommandée

Remplacer complètement le fichier par une roadmap courte et vivante.

Structure proposée :

# Roadmap

## Source de vérité
Les tickets Forgejo sont la source de vérité du suivi.

## État courant
- Schéma SQLite : V10
- Développement actif
- Logiciel non prêt pour la production

## Chantiers actifs
- #107 — Pivot e-mail forensique

## Inventaires permanents
- #42 — Arsenal OSINT

## Prochains axes
- terminer le flux de révision EML ;
- persister les propositions confirmées ;
- améliorer les tests de migration V9 → V10 ;
- mettre à jour le packaging Ubuntu ;
- poursuivre le graphe et les rapports.

## Historique
Consulter le changelog et les tickets fermés.

Déplacer lancienne roadmap vers :

docs/archive/ROADMAP_LEGACY.md

ou la supprimer si Forgejo conserve déjà tout lhistorique utile.


7. docs/BACKLOG.md

État

Le fichier est vide.

Action

Deux choix valables :

Choix recommandé

Supprimer le fichier et utiliser uniquement Forgejo.

Alternative

Conserver un simple pointeur :

# Backlog

Le backlog actif est suivi dans Forgejo :

https://git.labfytools.com/fy59/labfy-investigation/issues

Ce fichier ne décrit pas létat courant du projet.

Ne pas dupliquer les tickets dans un backlog Markdown.


8. docs/DEPENDENCE.md

Éléments corrects

Le document couvre déjà :

  • Tesseract ;
  • ExifTool ;
  • dig ;
  • host ;
  • whois ;
  • curl ;
  • OpenSSL ;
  • qpdf ;
  • John/pdf2john ;
  • Sherlock ;
  • Maigret ;
  • Holehe.

Vérifications nécessaires

Comparer les exécutables documentés avec :

  • tool_catalog.c ;
  • tool_registry.c ;
  • eml_pipeline_task.c ;
  • rib_ocr.c ;
  • exiftool_metadata.c ;
  • pdf_password_recovery.c.

Documenter pour chaque dépendance :

  • obligatoire ou optionnelle ;
  • fonctionnalité concernée ;
  • commande de détection ;
  • commande de version ;
  • comportement lorsque loutil est absent ;
  • paquet Arch ;
  • paquet Ubuntu ;
  • compatibilité avec dépôts institutionnels restreints.

Ajout recommandé

Ajouter une matrice :

Outil Fonction Obligatoire Dégradation si absent
Tesseract OCR Non Analyse partielle
ExifTool Métadonnées Non Métadonnées externes absentes
dig DNS Non Action DNS indisponible
John/pdf2john PDF protégé Non Pas daudit de mot de passe

Ne jamais présenter un outil optionnel comme condition de démarrage.


9. docs/database/DATABASE_ARCHITECTURE.md

Problème critique

Len-tête indique encore :

Statut : Stable (V1)
Schéma : V1

alors que la branche contient un schéma V10.

Le document a reçu un ajout V10 en fin de fichier, mais son titre, son statut et la majorité de son inventaire restent centrés sur V1.

Action recommandée

Transformer le document en architecture courante V10.

Nouvel en-tête :

# Architecture de la base de données

> Statut : architecture courante
> Version du schéma : V10
> Source de vérité détaillée : SCHEMA_AUDIT_CURRENT.md

Éléments à ajouter à linventaire

  • osint_executions ;
  • liaisons de provenance OSINT ;
  • comptes_sociaux ;
  • person_roles ;
  • extractions ;
  • tables de disposition et viewport du graphe ;
  • relation_types ;
  • bank_account_entities.

Accès SQL

Remplacer la centralisation dans un unique module database par la séparation réelle :

Database : connexion, statements, transactions, schémas et migrations
DAO      : requêtes métier
Services : orchestration transactionnelle
GTK      : aucune requête SQL

Migrations

Ajouter un résumé V1 → V10 et renvoyer vers laudit courant pour les détails.


10. docs/database/SCHEMA_AUDIT_V1.md

Problème

Le document est facilement interprété comme létat actuel.

Action

Déplacer vers :

docs/database/audits/SCHEMA_AUDIT_V1.md

Ajouter en première ligne :

> [!WARNING]
> Document historique. Cet audit décrit exclusivement la V1.
> Il ne représente pas le schéma courant.
> Consulter ../SCHEMA_AUDIT_CURRENT.md.

11. Nouveaux documents de base

Organisation recommandée :

docs/database/
├── DATABASE_ARCHITECTURE.md
├── SCHEMA_AUDIT_CURRENT.md
└── audits/
    ├── SCHEMA_AUDIT_V1.md
    ├── SCHEMA_AUDIT_V9.md
    └── SCHEMA_AUDIT_V10.md

Règle :

  • SCHEMA_AUDIT_CURRENT.md est mis à jour à chaque migration ;
  • laudit versionné reste immuable après validation ;
  • le ticket de migration nest pas terminé sans mise à jour documentaire.

12. Hygiène du dépôt hors documentation

Deux éléments présents à la racine doivent être contrôlés :

meline59760.txt
watch_20260723-211101

Ils ne ressemblent pas à des fichiers source ou de documentation standards.

Avant de les conserver publiquement :

  1. vérifier quils utilisent exclusivement des données synthétiques ;
  2. vérifier quils ne contiennent aucune donnée denquête réelle ;
  3. les déplacer vers une fixture clairement nommée sils sont utiles aux tests ;
  4. les supprimer du dépôt sinon ;
  5. ajouter les motifs nécessaires dans .gitignore.

Ne jamais versionner :

  • Enquete.sqlite réelle ;
  • captures ;
  • e-mails réels ;
  • RIB réels ;
  • pièces jointes réelles ;
  • exports bruts issus dune enquête ;
  • données personnelles non synthétiques.

Ordre de mise à jour recommandé

Commit 1 — Références SQLite

  • ajouter SCHEMA_AUDIT_CURRENT.md ;
  • ajouter laudit V10 ;
  • archiver laudit V1 ;
  • mettre à jour DATABASE_ARCHITECTURE.md.

Commit 2 — Roadmap et suivi

  • remplacer ROADMAP.md ;
  • supprimer ou rediriger BACKLOG.md ;
  • corriger la section suivi du README.

Commit 3 — Architecture et développement

  • mettre à jour ARCHITECTURE.md ;
  • mettre à jour DEVELOPMENT.md ;
  • mettre à jour CONVENTIONS.md.

Commit 4 — Dépendances et présentation

  • vérifier DEPENDENCE.md ;
  • compléter CHANGELOG.md ;
  • finaliser README.md.

Commit 5 — Hygiène du dépôt

  • auditer les fichiers isolés à la racine ;
  • supprimer ou déplacer les éléments non conformes ;
  • ajuster .gitignore.

Critères de validation documentaire

La mise à jour est terminée lorsque :

  • aucun document courant ne présente V1 comme schéma actuel ;
  • V10 est identifiée comme version courante ;
  • les audits historiques sont explicitement marqués historiques ;
  • la roadmap ne duplique plus les tickets fermés ;
  • #107 est présenté comme chantier actif ;
  • #42 est présenté comme inventaire permanent ;
  • les commandes documentées existent réellement dans le Makefile ;
  • make docs nest plus documenté sans cible correspondante ;
  • larchitecture distingue Database, DAO, services et GTK ;
  • le nommage documenté correspond au code actuel ;
  • les dépendances optionnelles sont clairement identifiées ;
  • les données denquête réelles sont explicitement interdites dans le dépôt ;
  • tous les liens Markdown sont valides ;
  • git diff --check passe.