Configure numerical library and torch threading for H1, keep raster threading/timing instrumentation, remove CONCERTATION from forced masks after real PDF FP testing, and record coordination archive state.
5.6 KiB
5.6 KiB
Resumption — Qwen Code (nouvelle session)
Date de création : 2026-05-30 Dernière activité : 2026-05-29 13:45 Sprint en cours : v11.0 MVP (livraison prévue mardi 02/06)
Contexte en 1 phrase
Le sprint v11.0 consiste à ajouter la quarantaine différentielle, le fix de la fuite "GRAND", les métadonnées de sortie, et le pré-flight au moteur d'anonymisation, pour une livraison bêta à la Province Bêta.
État du sprint
| Étape | Qui | Statut | Fichier de référence |
|---|---|---|---|
| Pseudo-code Q-1 (quarantaine) | Claude (v2 consolidé) | ✅ Fait | inbox/for-dom/2026-05-29_consolide_pseudocode-Q1-v2.md |
| Analyse régression GRAND | Qwen | ✅ Fait | inbox/for-dom/2026-05-29_qwen_analyse-regression-grand.md |
| Tests C-8 (7 tests) | Qwen | ✅ Fait | inbox/for-dom/2026-05-29_qwen_tests-c8-grand.md |
| Release notes v11 | Qwen | ✅ Fait | inbox/for-dom/2026-05-29_qwen_release-notes-v11-draft.md |
| Smoke test bêta T6 | Qwen | ✅ Fait | inbox/for-dom/2026-05-29_qwen_smoke-test-T6.md |
| CODE Q-1 + C-8 + P0 | Dom | 🔴 Non commencé | En attente |
Ce qui est en attente
1. Dom doit coder le Q-1 + C-8 + P0 dans anonymizer_core_refactored_onnx.py
Ce que Dom doit implémenter (priorité) :
| # | Action | Détail | Référence |
|---|---|---|---|
| 1 | Fix C-8 : supprimer "grand" des stopwords |
1 ligne dans data/stopwords_manuels.txt |
data/stopwords_manuels.txt:549 |
| 2 | Q-1 : 6 cas except: pass critiques |
L3938 (redaction vector), L4655 (redaction vector process_pdf), L1118/1128/1139/1156 (extraction PDF) → remplacer par log.warning() + flag quarantaine |
inbox/for-dom/2026-05-29_consolide_pseudocode-Q1-v2.md |
| 3 | Q-1 : dossier quarantaine/ + INDEX.md |
Structure : quarantaine//*.reason.txt, errors.log, INDEX.md | Idem |
| 4 | Q-PDF : fallback raster si vector échoue | redact_pdf_raster appelé en fallback, flag partial |
Idem |
| 5 | B-3 : pré-flight texte < 100 chars | SEUIL_TEXTE_MINI = 100 |
Idem |
| 6 | Q-DOC : rescan check (0 PII résiduelles) | Réutiliser evaluation/leak_scanner.py |
Idem |
| 7 | B-1 : métadonnées .audit.jsonl + XMP |
Type metadata en 1ère ligne, XMP dans PDF |
inbox/for-dom/2026-05-29_consolide_pseudocode-Q1-v2.md §B-1 |
| 8 | B-2 : fichiers .log + errors.log |
Un .log par doc, errors.log cumulatif |
Idem §B-2 |
2. Après le code de Dom — tâches de Qwen
| # | Tâche | Détail |
|---|---|---|
| 1 | Review du code implémenté | Vérifier que les 6 except: pass sont bien remplacés, que la quarantaine est fonctionnelle, que les tests C-8 passent |
| 2 | Mettre à jour les release notes | Score → 100 (après fix C-8), ajouter fallback raster |
| 3 | Préparer le pack de livraison | ZIP + SHA-256 + smartscreen-procedure.md |
| 4 | Re-exécuter evaluate_quality.py | Confirmer score 100/100 après fix C-8 |
Fichiers à lire en priorité (dans l'ordre)
docs/coordination/etat-projet.md— état courant du projet (commit, score, décisions)docs/coordination/log.md— journal des échanges (dernières lignes surtout)docs/coordination/inbox/for-dom/2026-05-29_consolide_pseudocode-Q1-v2.md— LE document de référence pour le code Q-1docs/coordination/decisions/— décisions de Dom (MVP, no-UI)docs/coordination/audits/2026-05-28_qwen_audit-complet.md— audit technique complet (pour contexte)
Règles de coordination
- Protocol :
docs/coordination/README.md - Communication : fichiers dans
inbox/for-<destinataire>/ - Règle d'or : toujours
grep/sedavant de citer un numéro de ligne - Pas de modif GUI : décision Dom (
decisions/2026-05-28_dom_no-ui-changes.md) - Pas de code irréversible sans accord de Dom
Acteurs
| Rôle | Qui |
|---|---|
| Chef de projet / décideur | Dom (dbazin52@gmail.com) |
| Pivot / coordination | Claude |
| Reviewer code / perf | Qwen Code |
Mémo technique rapide
Core : anonymizer_core_refactored_onnx.py (4770 lignes)
Fonction principale : process_pdf(doc_path, output_dir, cfg) → retourne AnonResult
Pipeline :
- Extraction texte (pdfplumber → pdfminer → PyMuPDF → docTR OCR → fallback tesseract)
- Regex PII (phases 0a-0h : EMAIL, TEL, NIR, IBAN, FINESS, IPP, OGC, dates, adresses)
- NER (EDS-Pseudo, CamemBERT-bio ONNX, GLiNER, VLM)
- Gazetteers Aho-Corasick (FINESS, villes, noms INSEE)
- Cross-validation des noms (
_cross_validate_name_candidates) - Masquage ligne par ligne (
_mask_line_by_line) - Rescan de sécurité (
selective_rescan) - Redaction PDF (
redact_pdf_vectorpuis fallbackredact_pdf_raster) - Sauvegarde (
.pseudonymise.txt,.audit.jsonl,.redacted.pdf)
6 cas except: pass critiques (vérifiés par grep)
| Ligne | Fonction | Problème |
|---|---|---|
| 1118 | extract_text_with_fallback_ocr |
PyMuPDF échec silencieux |
| 1128 | extract_text_with_fallback_ocr |
pdfplumber échec silencieux |
| 1139 | extract_text_with_fallback_ocr |
pdfminer échec silencieux |
| 1156 | extract_text_with_fallback_ocr |
docTR OCR échec silencieux |
| 3938 | redact_pdf_vector |
apply_redactions() échec silencieux |
| 4655 | process_pdf |
Rédaction vectorielle globale échec silencieux |
Fix C-8 : fuite "GRAND"
grep -n "^grand$" data/stopwords_manuels.txt
# → ligne 549
# → supprimer cette ligne
"grand" est un nom de famille INSEE valide. Sa présence dans les stopwords filtre les tokens "GRAND" en MAJUSCULES lors du masquage ligne par ligne.