diff --git a/.gitignore b/.gitignore index 42ab76f..b31dfc8 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,6 @@ ano/pdf_natif/pseudonymise/ .claude/ .codex-loop/ .qwen/ + +# === Artefacts graphify (knowledge graph généré) === +graphify-out/ diff --git a/docs/coordination/inbox/for-claude/2026-06-05_10-55_dom-via-codex_rebuild-beta.md b/docs/coordination/inbox/for-claude/2026-06-05_10-55_dom-via-codex_rebuild-beta.md new file mode 100644 index 0000000..441fbf5 --- /dev/null +++ b/docs/coordination/inbox/for-claude/2026-06-05_10-55_dom-via-codex_rebuild-beta.md @@ -0,0 +1,65 @@ +--- +from: dom +to: claude +date: 2026-06-05T10:55:00+02:00 +topic: rebuild-beta +status: open +priority: high +references: + - commit: 68ec345 + - file: docs/coordination/inbox/for-qwen/2026-06-05_10-55_dom-via-codex_relance-validation-beta.md +--- + +# Ordre de marche — rebuild et pack beta + +Message depose par Codex a la demande de Dom. + +## Etat de depart + +Branche : `feature/q1-quarantine-mvp` +HEAD observe : `68ec345` — T-N retrograde, T-O prioritaire. + +Working tree observe par Codex le 2026-06-05 10:52 : +- non suivis restants : `docs/rapport-analyse-campagne-gui-2026-04-21.md`, + `graphify-out/`. +- Le reste des travaux beta a ete committe par la session precedente. + +## Travail pour Claude + +### C-BETA-1 — Hygiene finale repo + +- Classer `docs/rapport-analyse-campagne-gui-2026-04-21.md` : + commit si utile a la beta, sinon laisser hors scope. +- Classer `graphify-out/` : + probablement artefact a gitignorer/supprimer, mais verifier avant action. +- Ne pas toucher aux livrables Qwen en cours sauf pour les lire. + +### C-BETA-2 — Attendre ou compenser T-O + +- Si Qwen livre `2026-06-05_qwen_validation-pack-beta.md`, lire son verdict. +- Si Qwen ne livre pas rapidement, faire une validation minimale equivalente + en local avant rebuild : admin off, VLM cache, absence PII pack, secrets, + chemins absolus, quarantaine. + +### C-BETA-3 — Rebuild v11 + +- Lancer le build Windows sur la machine prevue `192.168.1.11`. +- Verifier que le modele custom ONNX est present localement avant build. +- Produire EXE/ZIP/installer selon les scripts valides. +- Calculer SHA-256 des artefacts. + +### C-BETA-4 — Pack beta + +- Exclure explicitement : `pdf_natif/`, `ano/pdf_natif/pseudonymise/`, + `.admin`, `.claude/`, `.codex-loop/`, `.qwen/`, logs, caches, tests, secrets. +- Inclure procedure SmartScreen et instructions de feedback beta. +- Produire un rapport dans : + `docs/coordination/inbox/for-dom/2026-06-05_claude_pack-beta-build-report.md` + +## Garde-fous + +- Aucune suppression irreversible de donnees hors artefacts clairement identifies. +- Aucun push sans accord explicite Dom. +- Si Qwen signale un NO-GO bloquant, stopper le rebuild et documenter le blocage. + +— Dom via Codex diff --git a/docs/coordination/inbox/for-qwen/2026-06-05_10-55_dom-via-codex_relance-validation-beta.md b/docs/coordination/inbox/for-qwen/2026-06-05_10-55_dom-via-codex_relance-validation-beta.md new file mode 100644 index 0000000..a036b9a --- /dev/null +++ b/docs/coordination/inbox/for-qwen/2026-06-05_10-55_dom-via-codex_relance-validation-beta.md @@ -0,0 +1,61 @@ +--- +from: dom +to: qwen +date: 2026-06-05T10:55:00+02:00 +topic: relance-validation-beta +status: open +priority: high +references: + - file: docs/coordination/inbox/for-qwen/2026-06-04_17-05_claude_nouveaux-jobs-tn-to.md + - commit: 68ec345 +--- + +# Relance prioritaire — validation pack beta + +Message depose par Codex a la demande de Dom. + +## Priorite immediate + +T-O est le chemin critique. Merci de livrer en priorite : + +`docs/coordination/inbox/for-dom/2026-06-05_qwen_validation-pack-beta.md` + +Objectif : verdict **GO / NO-GO** du pack beta contre l'etat reel du repo, en +lecture seule. + +## Points a verifier reellement + +- Mode admin non actif par defaut : `.admin` absent, `ANON_ADMIN` non force dans + les scripts et le launcher. +- VLM/Ollama cache en non-admin : verifier le branchement D-11/D-13 dans le GUI. +- Quarantaine : permissions `0o700` / `0o600`, fail closed, pas de perte doc. +- Pack beta : aucun chemin `pdf_natif/`, sortie `.pseudonymise.txt`, + `.audit.jsonl`, `.redacted_*.pdf`, cache agent, log, secret, ou `.admin`. +- Build : coherences scripts Windows / spec / docs, sans bloquer sur le modele + ONNX custom puisque Dom a tranche que ce point n'est pas bloquant beta. +- Secrets / chemins absolus : verifier `C:\Users`, `/home/dom`, tokens, mots de + passe, domaines non prevus. + +## Livrable attendu + +Un tableau court par section : + +- check, +- commande ou fichier lu, +- resultat observe, +- statut `GO`, `RESERVE`, ou `NO-GO`, +- action requise si reserve/no-go. + +Verdict global obligatoire en tete du fichier. + +## T-N + +T-N reste utile mais n'est pas prioritaire : plan de sauvegarde du modele custom +ONNX, docs only, apres T-O. + +## Garde-fous + +Ne modifie aucun fichier. Ne touche pas au working tree, a Git, `.gitignore`, +`models/`, `pdf_natif/`, ni aux fichiers moteur/GUI. Lecture seule stricte. + +— Dom via Codex diff --git a/docs/coordination/log.md b/docs/coordination/log.md index 7736627..3908a7e 100644 --- a/docs/coordination/log.md +++ b/docs/coordination/log.md @@ -52,3 +52,4 @@ Format : `YYYY-MM-DD HH:MM | AUTEUR | ACTION | RÉSUMÉ` 2026-06-04 17:00 | claude | ASSAINIT working tree | 6 commits sur feature/q1-quarantine-mvp : chore(rgpd) untrack 48 PII pdf_natif + gitignore RGPD/caches (9f4fe1b), deps pyahocorasick (4b1ab3a), feat batch/manual_masking (91a128d), tests F5/batch/manual/layouts (a02e89b), build(windows), docs(coordination). 48 PII supprimées du disque (~38 Mo). 98 tests unit verts. Restent hors scope : 6 PDF sources pdf_natif/ (gitignorés), rapport-campagne-gui untracked. 2026-06-04 17:05 | claude | ECRIT for-qwen | Nouveaux jobs T-N (plan résolution modèle ONNX gitignoré, 440 Mo, build non reproductible — compare Git LFS / script fetch / release asset / statu quo) + T-O (validation go/no-go pack bêta contre état réel du repo). Lecture seule, anti-conflit working tree. 2026-06-04 17:10 | claude | CORRIGE T-N | Décision Dom : le « bloquant ONNX » de T-L est FAUX. Vérif code : modèle custom camembert-bio embarqué dans l'EXE au build (.spec datas l.23), autres modèles (GLiNER/docTR/EDS) téléchargés au 1er lancement (launcher.py:466). Ni bêta ni rebuild v11 bloqués. T-N rétrogradé en priorité normale (pérennité backup modèle custom non re-téléchargeable). T-O passe en priorité (chemin critique bêta). +2026-06-05 10:55 | codex | ECRIT for-qwen+for-claude | Mandat Dom : relance Qwen sur T-O validation GO/NO-GO pack bêta en lecture seule ; ordre de marche Claude pour hygiène finale repo, validation minimale si Qwen tarde, rebuild v11, SHA-256 et pack bêta. diff --git a/docs/rapport-analyse-campagne-gui-2026-04-21.md b/docs/rapport-analyse-campagne-gui-2026-04-21.md new file mode 100644 index 0000000..e957bf0 --- /dev/null +++ b/docs/rapport-analyse-campagne-gui-2026-04-21.md @@ -0,0 +1,152 @@ +## Rapport d'analyse de campagne GUI + +Date d'analyse : 2026-04-21 + +### Périmètre + +Campagne lancée depuis la GUI sur le dossier : + +`/home/dom/ai/anonymisation/tests/synthetic_regression/cases` + +Sorties observées dans : + +`/home/dom/ai/anonymisation/tests/synthetic_regression/cases/anonymise` + +### Synthèse + +La campagne n'est pas exploitable comme validation globale du corpus. + +Le moteur n'a pas échoué sur l'anonymisation observée, mais la méthode de lancement via la GUI a mélangé les cas de test dans un dossier de sortie unique. Résultat : les fichiers de sortie se sont écrasés entre eux, et il ne reste plus que trois sorties distinctes (`input`, `expected`, `test`) alors que 30 fichiers d'entrée ont été pris dans la campagne. + +En l'état, un seul cas est encore vérifiable de façon fiable : `010_spaced_establishment_header`. Ce cas est conforme. + +### Constats + +#### 1. La campagne a pris 30 fichiers en entrée + +Le dossier `tests/synthetic_regression/cases` contient 10 cas, et chaque cas contient : + +- `input.txt` +- `test.txt` +- `expected.txt` + +Soit 30 fichiers texte supportés au total. + +#### 2. Les sorties ont été écrasées + +La GUI écrit toutes les sorties dans un seul dossier : + +`folder / "anonymise"` + +Puis le moteur nomme les sorties uniquement avec le `stem` du fichier source : + +- `input.pseudonymise.txt` +- `test.pseudonymise.txt` +- `expected.pseudonymise.txt` + +Comme les 10 cas portent tous les mêmes noms de fichiers, chaque nouveau cas remplace le précédent. + +Conséquence observée : + +- 30 entrées traitées +- 3 sorties texte finales restantes + +#### 3. Les fichiers de référence ont aussi été anonymisés + +La GUI a pris tous les fichiers supportés trouvés récursivement dans le dossier sélectionné, donc elle a traité : + +- les fichiers de test à anonymiser +- les fichiers `input.txt` +- les fichiers `expected.txt` + +Pour une campagne de validation, ce n'est pas le bon protocole : les fichiers `expected.txt` sont des références de comparaison, pas des entrées métier à anonymiser. + +### Analyse des sorties restantes + +Les trois sorties restantes sont : + +- `tests/synthetic_regression/cases/anonymise/input.pseudonymise.txt` +- `tests/synthetic_regression/cases/anonymise/test.pseudonymise.txt` +- `tests/synthetic_regression/cases/anonymise/expected.pseudonymise.txt` + +Leur contenu correspond au cas : + +`tests/synthetic_regression/cases/010_spaced_establishment_header` + +Contenu observé : + +```text +[ETABLISSEMENT] +Service de cardiologie +``` + +Résultat : + +- `test.pseudonymise.txt` correspond exactement à `010_spaced_establishment_header/expected.txt` +- `input.pseudonymise.txt` correspond aussi à `010_spaced_establishment_header/expected.txt` +- `expected.pseudonymise.txt` reste déjà anonymisé, ce qui est cohérent + +Audit observé : + +- `input.audit.jsonl` : 1 hit `ETAB_SPACED` +- `test.audit.jsonl` : 1 hit `ETAB_SPACED` +- `expected.audit.jsonl` : vide + +Conclusion sur ce cas : + +Le cas `010_spaced_establishment_header` est réussi. + +### Conclusion générale + +Conclusion fonctionnelle : + +- aucun échec d'anonymisation n'est visible sur le cas encore vérifiable +- la campagne globale ne permet pas d'évaluer les 10 cas du corpus + +Conclusion méthodologique : + +- la structure actuelle des sorties GUI n'est pas compatible avec un lancement sur un dossier de corpus contenant des noms de fichiers répétés +- la campagne du 2026-04-21 doit être considérée comme non concluante pour 9 cas sur 10 + +### Causes racines + +1. La GUI parcourt récursivement tous les fichiers supportés du dossier sélectionné. +2. La GUI écrit toutes les sorties dans un seul sous-dossier `anonymise/`. +3. Le moteur génère les noms de sortie à partir du seul nom de fichier, sans conserver le chemin relatif du cas. + +### Recommandations immédiates + +1. Pour tester sans modifier le code, lancer la GUI sur un seul dossier de cas à la fois. + +Exemple : + +`/home/dom/ai/anonymisation/tests/synthetic_regression/cases/001_patient_header_and_birth` + +2. En validation humaine, ne pas lancer la GUI sur `tests/synthetic_regression/cases` directement. + +3. Comparer chaque sortie produite au `expected.txt` du même dossier de cas. + +### Correctifs recommandés + +1. Préserver l'arborescence relative des cas dans le dossier de sortie. + +Exemple attendu : + +- `anonymise/001_patient_header_and_birth/test.pseudonymise.txt` +- `anonymise/002_contact_bundle/test.pseudonymise.txt` + +2. Ou préfixer les sorties par le nom du dossier parent. + +Exemple : + +- `001_patient_header_and_birth__test.pseudonymise.txt` + +3. Ajouter un mode "campagne de tests" dans la GUI qui ne traite que les fichiers `test.txt`. + +4. Générer automatiquement un rapport de comparaison contre les `expected.txt`. + +### Statut + +- Campagne GUI du 2026-04-21 : non exploitable pour validation complète +- Cas encore vérifiable : `010_spaced_establishment_header` +- Verdict sur ce cas : conforme