labfy-investigation/CHANGELOG.md
fy59 d65f9559e6 chore(checkpoint): preserve local investigation workbench
Preserve the local graph-first investigation stack through macro V1.

Include reviewed source, tests, contracts, documentation and synthetic assets.

Retain the standalone financial V21 test foundation without runtime migration.

Runtime remains V20; operational JobStore remains V3.

Local experimental checkpoint, not a stable release.
2026-09-27 08:34:46 +02:00

10 KiB
Raw Blame History

[0.1.0-dev] — en préparation, non publiée

Pivots locaux J7

  • Index C typé des observations persistées, rapprochements explicables e-mail/domaine/IP, connexions locales bornées et corpus Web SPECIMEN multi-preuves.
  • Annulation active propagée jusqu’au groupe d’outil, annulation d’attente sans interruption du worker actif et temporaires d’export concurrents uniques.

Jobs locaux J5

  • Ajout du JobStore V1 séparé, du worker mono-propriétaire, des contrôles CLI, de la reprise après publication et de l’export Web en lecture seule.
  • Durcissement du runner et du replay ExifTool typé, y compris la vérification d’un résultat historique lorsque l’outil courant est indisponible.

Poste Web local J6

  • Ajout d’une session loopback protégée, d’un bridge JSON vers le service C, des actions EML/ExifTool depuis le graphe et des contrôles de file.
  • Actualisation automatique des jobs et résultats persistés, avec conservation du contexte graphique et tests Firefox de bout en bout.

Foundation

  • Repositionnement canonique de Labfy comme environnement local-first d'investigation numérique centré sur le graphe interactif.
  • Adoption de « THE GRAPH IS THE INVESTIGATION » comme principe UX et métier : Identity, Infrastructure, Finance, Timeline, Geo et Evidence deviennent des projections d'un même réseau logique.
  • Choix du Web comme future interface principale, sans sélection prématurée du framework, du protocole d'événements ou du serveur HTTP local ; GTK reste l'interface fonctionnelle existante pendant la transition.
  • Architecture cible du Toolkit Registry, des adapters, du Job Engine, du Pivot Engine, du Correlation Engine, du planner et des contrôles de scope.
  • Séparation canonique des entités, artefacts, preuves, observations, claims, événements, transactions et hypothèses dans une projection graphique unifiée.
  • Définition d'une autonomie progressive, de budgets multidimensionnels et d'une confiance qualitative explicable.
  • Adoption de Catppuccin Mocha avec Lavender comme direction visuelle de la future interface Web et création d'une bannière dédiée au README.
  • Refonte du README et remplacement de la roadmap par une séquence V2 ordonnée, sans annoncer les fonctionnalités cibles comme déjà disponibles.
  • Ajout de l'index documentaire, du contrat conceptuel du graphe, des décisions Web/graph-first/polyglotte, du registre Toolkit, du modèle de sécurité, du design system et du backlog local préparé.
  • Ajout d'une source SVG éditable pour la bannière et structuration de la roadmap en jalons J0 à J9 avec portes de validation et non-objectifs.

Added

  • Premier lot J3 expérimental en lecture seule : ouverture SQLite V20 sans création/migration, projection C unifiée des entités, relations, preuves, observations et exécutions OSINT, snapshot JSON v2 borné/atomique et mode de démonstration Web alimenté par une fixture créée avec les DAO de production.

  • Extension J3 EML synthétique : analyse native réellement exécutée, dérivé versionné, extraction et observations proposées publiés atomiquement en V20, replay idempotent vérifié après réouverture et projection Web snapshot v3.

  • Lot J4 local : registre de capabilities consommé, runner POSIX borné, adapters EML/ExifTool, publication idempotente V20 et démonstration Web sur fixtures SPECIMEN avec ExifTool réel.

  • Assistant de création de personne en sept étapes séparant la révision OCR, la projection facultative et les relations factuelles avant confirmation.

  • Projection contrôlée des champs OCR confirmés vers les attributs structurés d’une personne, avec provenance append-only, conflits explicites et rollback.

  • Saisie et consultation, depuis la fiche preuve, d’un historique immuable d’appréciations humaines d’authenticité documentaire avec justification et OcrRun facultatif appartenant à la preuve, sans verdict automatique.

  • OCR d’identité contrôlé et révisable dans la création d’une personne, l’import normal et la fiche de preuve, avec texte brut immuable, transcription corrigée persistante, manual_override, manual_entry et notes documentaires factuelles.

  • Consultation complète des données OCR persistées, sélection explicite d’un OcrRun, révision sans relance de Tesseract et création d’un nouveau run lors d’une nouvelle analyse.

  • Aperçu partagé avec zoom, ajustement, défilement bidirectionnel, navigation PDF multipage, compteur de pages et provenance OCR synchronisée.

  • Politique commune des dialogues GTK métiers complexes : parent transitoire, géométrie responsive, répartition initiale 2/3–1/3, formulaire défilable et barre d’actions fixe.

  • Préparation du pivot e-mail : pipeline EML asynchrone, extraction MIME sécurisée, propositions bancaires IBAN/BIC et vocabulaire contrôlé.

  • Référentiel persistant et normalisé des types de relations, avec codes système stables, types personnalisés, renommage et fusion transactionnelle.

  • Sélecteur canonique dans les formulaires de création et de modification des relations.

  • Glisser-déposer confirmé des extractions texte vers le graphe, avec persistance de leur association à une entité.

  • Ouverture de l’aperçu des pièces jointes et preuves depuis les fiches d’entités.

  • Initialisation du cycle de vie de l'application.

  • Création du module Application.

  • Intégration de GTK4.

  • Affichage de la première fenêtre.

  • Module MainWindow.

  • Séparation de la fenêtre principale du module Application.

  • Première architecture de la fenêtre principale.

Fixed

  • Schéma de création directe aligné sur la V19, avec champs structurés, provenance des projections et garde SQLite identique à la migration V19.
  • Migration V20 pour l’évaluation humaine append-only de l’usage d’identité, distincte de l’authenticité et sans automatisme OCR.
  • Consultation V20 sur la fiche preuve et test GTK des relations et champs structurés affichés sur la fiche Person.
  • Rafraîchissement immédiat de Workspace après import ou révision OCR et persistance des données sur l’UUID définitif de la preuve, y compris après fermeture et réouverture de SQLite.
  • Fermeture sûre du dialogue après enregistrement d’une révision OCR, avec protection contre le double clic, maintien ouvert en cas d’échec et absence de relance de Tesseract.
  • Conservation du cadrage du graphe pendant les rechargements.
  • Persistance SQLite du zoom et de la position du graphe entre deux sessions.
  • Réduction de la fenêtre d’intégration des extractions pour maintenir les actions accessibles sur les petits écrans.

Changements locaux non publiés — J8

  • Ajout du planner C explicable, des plans/budgets persistants JobStore V3 et de l'admission Web atomique pour le corpus synthétique local.
  • Fiabilisation J7 des révisions, plafonds, références, transactions de lecture et normalisation prudente.
  • Finalisation JobStore V3 : budgets opposables au claim, temps monotone, réserve conservée après crash, états de plan exportés et scénario Firefox J8.

Changements locaux non publiés — J9

Espace local et import navigateur (non publié)

  • création Web explicite d’une enquête V20 et d’un JobStore V3 réellement vides ;

  • réception privée EML/PNG/JPEG, limites serveur, contrôle de signature et confirmation idempotente par UUID réservé ;

  • raccord aux projections, planner, analyses et rapports existants ;

  • matrice Python/C et scénario Firefox canonique depuis zéro.

  • fermeture d’intégrité de l’import local : création non destructive, intention et reçus structurés, rejeu revalidé sur l’original V20, états terminaux immuables, réservations concurrentes atomiques et timeout de corps opposable ;

  • durcissement P01–P06 du cycle de vie, des réservations, du rejeu et du framing HTTP ; refus des corps tronqués ou ambigus sans réouverture d’un état terminal ;

  • aperçu Web EML/PNG/JPEG produit par le bridge C après intégrité et bornes, sans servir l’original ni son chemin ; l’identité de cache ne crée aucun cache disque persistant ;

  • revue transactionnelle d’observations avec journal V20 non signé, corrections distinctes et rejeu strict ; la confirmation décrit la revue d’une observation, jamais une identité ;

  • promotion volontaire par création ou rattachement d’un indicateur e-mail, domaine ou IP, et retrait non destructif préservant observation, entités et rattachements indépendants ;

  • republication réessayable du graphe, des corrélations et du planner après import ou revue, sans relancer d’analyse, nouveau claim ni consommation de budget.

  • Ajout des projections Web Preuves, Chronologie et Infrastructure locale sur le graphe cœur, avec dates persistées et prudence temporelle.

  • Ajout de la sélection explicite, de la prévisualisation révisionnée et du dossier hors ligne HTML/JSON/PDF avec manifeste, hashes et vérificateur.

  • Ajout des limites, de la minimisation, de l'idempotence et des reprises après interruption, ainsi que des tests C, API, Python et Firefox correspondants.

  • Renforcement de l’intégrité du rapport : PDF Cairo/Pango Unicode fidèle, sections effectives, fermeture de provenance orientée, refus de troncature, vérificateur hostile strict et réconciliation durable après interruption.

Changements locaux non publiés — poste Web UX V1

  • Réorganisation graph-first en barre compacte, projections, inspecteur à onglets et tiroir Tâches/Actions/Plans/Rapports responsive.
  • Ajout d’actions ancrées près des nœuds, avec clic droit, Maj+F10, fermeture Échap, alternative visible et motifs issus du registre de capabilities.
  • Conservation du brouillon de rapport pendant une actualisation, validation Firefox des cinq téléchargements réels et ouverture du HTML reçu hors ligne.
  • Prise en charge de dates ISO 8601 à la minute avec Z ou offset explicite, sans promotion artificielle de leur précision à la seconde.
  • Clôture sur graphe alimenté : classification par object_kind, disposition bornée par étages, navigation cohérente et provenance interactive.
  • Application des snapshots modifiés à UUID constants, aperçu de rapport invalidé dès l’édition et tiroir libérant réellement le graphe.
  • Scénario Firefox lançant six analyses depuis l’UI puis validant le snapshot C observé à 62 nœuds/100 arêtes, sans relation ajoutée côté JavaScript.