Session de 6h consacrée au fix DETTE-006 (bug d'échelle pixel grounding). Bilan : 2/5 commits fix faits (smart_resize + refactor parser bbox_2d), 3/5 bloqués par découverte DETTE-010 (divergence factor 28 vs 32 sur checkpoint Qwen3-VL-8B-Instruct, à instruire demain matin). Effets de bord positifs : registre dette technique créé (14 entrées P1/P2/P3), investigation mémoire visuelle orpheline documentée, infra clarifiée (vLLM absent, Transformers direct retenu, checkpoint Qwen3-VL-8B fp16 téléchargé 17 GB). Voir docs/handoffs/2026-05-09_session_audit.md pour détail. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.9 KiB
8.9 KiB
HANDOFF — Session 2026-05-09 (clôture)
Rédigé le 2026-05-09 15:46 CEST.
1. ÉTAT FACTUEL DU REPO
- Branche :
feature/qw-suite-mai - 10 commits du jour (les plus récents en HEAD) :
df5ad5933docs(dette): MAJ DETTE-010 (config trouvé, divergences) + création DETTE-014 (smart_resize calé sur mauvaise référence)bfbf0f9c3refactor(grounding): centralise parser bbox_2decc5a233adocs(dette): création DETTE-013 env tests dev local4df1ba577docs(dette): création DETTE-011 bug cv2 Python 3.120d7bcd18afeat(grounding): module smart_resize officiel Qwen3-VLe9702b4dfdocs(dette): création DETTE-010 vérif preprocessor_config Qwen3-VL293e54b4edocs(dette): création DETTE-012 (vLLM hors scope) + maj DETTE-010 (cible Transformers + AWQ)e0b47e451docs(refs): commit groupé docs de référence session 2026-05-085dc20cc85docs(dette): rectif mapping DETTE-005 + DETTE-008/009 + investigation mémoire visuelle orpheline88ed103dedocs(dette): création registre dette technique + 7 entrées rétroactives
- Pas de push (tous commits locaux)
- Working directory : modifications antérieures intactes (héritées du handoff 2026-05-08, hors scope cette session)
- Checkpoint Qwen3-VL-8B-Instruct fp16 téléchargé localement
(
~/.cache/huggingface/hub/models--Qwen--Qwen3-VL-8B-Instruct/, 17 GB, 16/16 fichiers, 0.incomplete) - Total : 2 modules purs créés (smart_resize, bbox_parser) + 100% coverage (58 tests unitaires) + registre dette créé avec 14 entrées + −96 lignes nettes sur resolve_engine.py.
2. DÉCISIONS PRISES CETTE SESSION
- Cible backend grounding : Transformers direct (pas vLLM —
vLLM absent de la machine, infra inexistante, cf. DETTE-012).
Cohérent avec
core/grounding/server.pydéjà câblé en Transformers et service systemdrpa-grounding.service. - Modèle cible :
Qwen/Qwen3-VL-8B-Instructfp16 (16 GB safetensors)- chargement Transformers avec
BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4")à la volée (~5-6 GB VRAM runtime). Pas d'AWQ officiel disponible pour Qwen3-VL-8B (Qwen/Qwen3-VL-8B-Instruct-AWQ→ 404 HF, repo inexistant).
- chargement Transformers avec
- T2A v2 désactivé durant la session pour libérer la VRAM partagée du RTX 5070 (12 GB).
- Strict no-op sémantique sur le refactor parser bbox_2d
(commit 2/5
bfbf0f9c3) : préservation des contrats sémantiques des 3 sites d'appel via paramètreformats=(pas seulement préservation comportementale). - Investigation DETTE-010 en fin de journée a révélé une
divergence majeure :
factoreffectif probable 32 (vs 28 hypothèse matin) carpatch_size=16dans lepreprocessor_config.jsondu checkpoint Qwen3-VL-8B-Instruct ; conventionsize.longest_edge/shortest_edgedifférente demin_pixels/max_pixels. → Arrêt avant commit 3/5 du fix DETTE-006 pour reprendre demain matin frais avec investigation propre, plutôt que coder à l'aveugle sur fin de journée.
3. PROBLÈMES OUVERTS (par criticité)
- [P0] DETTE-006 — Bug d'échelle pixel grounding fix en cours, 2/5 commits faits (smart_resize + refactor parser), 3/5 bloqués par DETTE-010 + DETTE-014 (alignement convention Qwen3-VL effective).
- [P1] DETTE-010 IN_PROGRESS — investigation
Qwen2VLImageProcessorFast+ sémantiquelongest_edge/shortest_edgepatch_size=16requise demain matin. Bloquant Étape 2 (validation grounding isolée). Date revue : 2026-05-10.
- [P1] DETTE-014 OPEN — module
core/grounding/smart_resize.pycalé surQwen2VLImageProcessor(factor=28, max=1_003_520) alors que le checkpoint utiliseQwen2VLImageProcessorFastavecpatch_size=16(factor probable 32). À réaligner après DETTE-010. - [P2] Autres dettes (P2/P3) listées dans
docs/DETTE_TECHNIQUE.md(DETTE-001 à 014) — pas urgent, revues par défaut +14 jours sauf P1 listées ci-dessus.
4. PROCHAINE ACTION CONCRÈTE (demain matin)
- Étape A : lire
transformers.models.qwen2_vl.image_processing_qwen2_vl_fastpour comprendre les défauts effectifs (min_pixels,max_pixels, interactionpatch_size × merge_size→factor) et la sémantique desize.longest_edge/shortest_edge(côté max ou produit total ?). - Étape B : tester le chargement runtime via
AutoProcessor.from_pretrained('Qwen/Qwen3-VL-8B-Instruct')puis inspecter ses attributs (processor.image_processor.size,processor.image_processor.patch_size, etc.) pour confirmer la convention réelle au runtime. - Étape C : tirer la convention validée et décider de
l'ajustement de
core/grounding/smart_resize.py:- soit ajuster
FACTOR_DEFAULT/ bornes du module existant (et adapter les tests), - soit créer un nouveau module dédié Qwen3-VL si la sémantique
diverge trop (ex:
core/grounding/smart_resize_qwen3.py).
- soit ajuster
- Étape D : commit 3/5 du fix DETTE-006 avec convention validée
(les 4 sites de
resolve_engine.pyparseront enfin parresized_w/hau lieu desmall_w/h). - Critère de succès Étape 2 (validation grounding isolée) :
sur fixture
data/training/live_sessions/bg_DESKTOP-58D5CAC_windows/shots/heartbeat_1773792436.png(2560×1600), bouton OK localisé àcx ≈ 0.45-0.55(vs 0.17 le 8 mai). - Critère de succès Étape 3 (replay e2e) : workflow rpa complet sur 1 dossier MOREL sans clic aberrant, latence acceptable.
5. CE QUE LE PROCHAIN CLAUDE DOIT LIRE (ordre)
- @docs/handoffs/2026-05-09_session_audit.md (ce fichier)
- @docs/DETTE_TECHNIQUE.md (en particulier DETTE-010 et DETTE-014, P1 bloquants)
- @/home/dom/.cache/huggingface/hub/models--Qwen--Qwen3-VL-8B-Instruct/snapshots/0c351dd01ed87e9c1b53cbc748cba10e6187ff3b/preprocessor_config.json (config réel du checkpoint, pivot pour DETTE-010)
- @core/grounding/smart_resize.py (module à éventuellement réaligner)
- @core/grounding/bbox_parser.py (commit 2/5 OK strict no-op, à conserver)
- @docs/MIGRATION_VLM_PLAN_2026-05-09.md (plan original toujours valide pour la suite, mais cible backend ajustée : Transformers direct, pas vLLM)
- @docs/handoffs/2026-05-08_session_audit.md (handoff veille, pour contexte si besoin)
6. RÈGLES DE LA JOURNÉE À RESPECTER DEMAIN
- Maximes Dom : « il faut prendre le temps d'aller vite », « rustine interdite », « on lit la doc avant de faire quoi que ce soit ».
- Investigation infra : ne jamais conclure à l'absence d'un composant sans avoir vérifié N endroits possibles (PATH, autres venvs, conda, Docker, système, autres caches). Leçon DETTE-012 vLLM : conclusion hâtive « stack vLLM absente » sur fouille partielle, rectifié par Dom. Présenter les vérifications négatives comme partielles et demander confirmation, pas comme une absence définitive.
- Refactor de code mature : préserver les contrats sémantiques
en plus des comportements techniques. Leçon refactor parser
Occ 3 + Occ 4 : strict no-op via paramètre
formats=plutôt que centralisation laxe qui élargit silencieusement les formats acceptés. - Validation explicite par étape, stop pour relecture diff sur tout code prod. Pas d'enchaînement A→B→C sans GO entre les étapes structurantes.
- Datage : forcer
date '+%Y-%m-%d %H:%M %Z'avant tout commentaire daté. - Désactivation contrôle : flag env + log WARNING + entrée
dette + revue +14j (et registre central
docs/DETTE_TECHNIQUE.md). - Git destructeur : jamais en combo, atomique, validation explicite.
- Un commit = une intention (respecté sur les 10 commits du jour).
7. NOTES POUR LA PROCHAINE SESSION
- Action pré-prochaine session — hygiène git : commit
chore(docs): déplacement business_docs vers archive/pour consolider en 1 commit la suppression à la racine (ANALYSE_MOAT_RPA_VISION_V3.md, PITCH_INVESTISSEURS_RPA_VISION_V3.md →Ddansgit status) et l'ajout dansarchive/business_docs/(encore en?? archive/). Pas de DETTE associée, juste hygiène. - Mécanisme de délestage VRAM rpa_v3 : à documenter dans le module concerné (path à retrouver), trace de fonctionnalité transversale.
- Bug cv2 (DETTE-011) + env tests (DETTE-013) : la batterie
pytest tests/unit/entière n'est pas exécutable en dev local sans configuration spécifique (RPA_API_TOKENouRPA_AUTH_DISABLED+ version cv2 compatible Python 3.12). Prévoir une session dédiée pour rétablir l'exécution complète ou découpler les tests purs des tests qui chargentagent_v0.server_v1.api_stream. - Audit exhaustif modules orphelins (au-delà périmètre AUDIT
serveur) : mentionné dans
docs/INVESTIGATION_MEMOIRE_VISUELLE_ORPHELINE_2026-05-09.md§6, dette identifiée sans numéro réservé. À instruire post-démo Kerella. - DETTE-010 + DETTE-014 sont la première chose à débloquer demain matin. Sans cet alignement, le commit 3/5 du fix DETTE-006 et l'Étape 2 (validation grounding isolée) sont impossibles à instruire correctement.