Files
rpa_vision_v3/docs/handoffs/2026-05-12_handoff_fin_journee.md
Dom 5ea4960e65
Some checks failed
tests / Lint (ruff + black) (push) Successful in 1m50s
tests / Tests unitaires (sans GPU) (push) Failing after 1m50s
tests / Tests sécurité (critique) (push) Has been skipped
backup: snapshot post-démo GHT 2026-05-19
Backup état complet après enregistrement vidéo démo de bout en bout.
À utiliser comme point de référence pour la consolidation post-démo.

Changements majeurs de la session 18-19 mai :
- AIVA-URGENCE : page autonome avec preset URL + auto-focus chain
- Workflow Demo_urgence_3_db : merge linux_db + steps AIVA + pause humaine NoMachine
- Bypass LLM (static_result / static_text) dans replay_engine
  pour démos déterministes sans appel Ollama
- Fix api_stream:3013 — replay_paused au premier polling /next
- dag_execute : lift duration_ms vers top-level pour wait runtime
- NPM bypass auth /aiva-urgence/ via location ^~ (proxy_host/10.conf hors git)
- scripts/cancel-replays.sh — workaround Stop VWB qui ne purge pas la queue

Anchors visuels (468) forcés dans le commit pour garantir restorabilité.
DB workflows actuelle + ~12 .bak DB de la journée incluses.

Sujets identifiés pour consolidation post-démo (TODO) :
1. Bug VWB recapture anchor ne régénère pas le PNG
2. Léa client accumule état mémoire (restart périodique requis)
3. Stop VWB ne purge pas la queue serveur (lien manquant vers /replay/cancel)
4. Bug coord client mss tronqué 2560x60 → mapping Y cassé
5. delay_before/delay_after ignorés au runtime (fix partiel duration_ms)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 14:55:06 +02:00

12 KiB
Raw Blame History

Handoff fin de journée — 12 mai 2026

Période couverte : 09:16 → 19:30 (avec coupure déjeuner ~13:00-13:45 et vélo 18:00-19:27) Démo cible : 15 mai 2026 (3 jours restants) Statut global : très en avance sur planning matinal, qualité non-minimale visée maintenue.


TL;DR — À lire en premier demain matin

  1. PRIORITÉ #1 demain : bug d'orchestration skip ord 13 découvert en fin de journée. Criticité HAUTE pour démo. Voir fiche dédiée _archives/handoff_evidence_20260512_1940/DETTE_S1_skip_ord13_orchestration.md + trace JSON replay_fb0c9882_state.json.
  2. PRIORITÉ #2 demain : reprise du mini-bench décision sur 11 dossiers POC dès que gemma4:31b-cloud répond (avorté aujourd'hui après 2-3 dossiers sur timeout Ollama Cloud 503).
  3. Acquis majeur du jour : A.1 paste validé techniquement (65s → 2s sur step #25, 762 chars). Gain visible énorme sur la démo.
  4. 2 commits décision en local non pushés : à arbitrer demain matin avant de reprendre.

État des chantiers à la coupure

Chantier décision (build_dpi_enriched + garde-fous)

Étape Statut
Brief V3 finalisé (8 arbitrages tranchés) docs/handoffs/2026-05-12_brief_S1_build_dpi_enriched.md
Étape 0 (vérif source données) close sur inférence statique + capture MOREL
Commit 1 build_dpi_enriched (commit 9872f4510) local, NON pushé
Tests : golden MOREL + négatif + intégration 41/41 verts, 0 régression sur 37 tests existants
Commit "bench" bench_t2a_dryrun.py + t2a_mappings.py (commit f2212e77e) local, NON pushé
Mini-bench exécution sur 11 dossiers 🔴 avorté après 2-3 dossiers (timeout gemma4:31b-cloud)
Commit 2 du brief (garde-fou serveur) non démarré (dépend du bench)
Dry-run E2E Demo_urgence_2 sur MOREL non démarré

Note vocabulaire : "commit bench" ≠ "commit 2 du brief". Le commit 2 du brief = garde-fou Python ↔ LLM dans _handle_t2a_decision_action, pas encore commencé.

État git branche décision :

HEAD : f2212e77e (feat: bench + mappings) — local
   ↑
  9872f4510 (feat: build_dpi_enriched) — local
2 commits en avance sur origin/feature/qw-seuite-mai

Chantier vitesse (A.1 paste + B parallélisation)

Étape Statut
Baseline run 4 instrumentée (timing) 381s mesurés, goulots identifiés
Bascule γ → δ (A.1 d'abord, B après) acté en cours de journée sur chiffres réels
A.1 paste implémenté (executor.py + DB)
Test E2E run 6 — preuve gain step #25 paste 762 chars en 2,02s vs 65s baseline
qwen3-next:80b-cloud testé qualité run 8 dec + resume_patient cliniquement propres (1336 chars) — switch ponctuel pour test, pas durable
B parallélisation Ollama annulé (A.1 plus rentable, β reporté [S3])
Run 8 final 🔴 cassé sur orchestration (bug skip ord 13 découvert)

Décisions et arbitrages tranchés aujourd'hui

Chantier décision (8 arbitrages)

  1. CCMU/GEMSA dans FAITS_CALCULÉS : libellé COMPLET, pas code seul (test Ollama a montré que gemma4 hallucine, gemma3 confabule pire — cf. constat empirique ci-dessous)
  2. Priorité IAO : extraite et injectée dans FAITS_CALCULÉS (champ motif.priorite du data.js)
  3. Mapping TERRAIN_VERS_T2A : 4 entrées validées sur grep data.js (Consultation externe, Hospitalisation, Sortie après surveillance UHCD, Transfert intra-hospitalier). "Retour structure d'origine" (dossier IPP 25012257, BRUNEL Henri) laissé non mappé → question à poser à Pauline/Amina.
  4. Mise en garde "depuis 23h" : Option A pure (pas d'avertissement injecté), valeur diagnostique du dry-run préservée
  5. Décision médicale terrain : extraite dans metadata mais PAS injectée dans FAITS_CALCULÉS (scénario C) → audit indépendant LLM + comparaison serveur a posteriori
  6. Paramètres LLM bench : Option 2 (temperature=0, seed=42 côté bench uniquement) → vérifier empiriquement si gemma4:31b-cloud respecte le seed
  7. Filet data_quality_warning : flagging incohérences cliniques détectables sans correction (anonymisation data.js statut incertain)
  8. Test négatif = test de dégradation gracieuse (input dégradé, pas test qui doit échouer)

Chantier vitesse

  • Bascule γ → δ : A.1 paste d'abord (gain 94s, effort 30-45min, risque faible) avant B parallélisation (gain révisé 55-65s après mesure honnête). Bascule justifiée par recalcul ratio parallélisme (1,27× et non 2,7× après séparation cold-start)
  • Paste opt-in : workflows non-Citrix explicitement marqués paste: true, fallback char-by-char par défaut
  • Source de vérité parallélisation Ollama : mesure 2 appels CHAUDS en série vs parallèle, pas comparaison cold-start vs warm (piège initial corrigé)

Constats empiriques importants

Ollama Cloud sur nomenclatures PMSI françaises (test direct)

  • gemma4:31b-cloud : connaissance partielle, fausse dans les détails (CCMU/GEMSA confondus avec logique GHM "ressources consommées"), mais reste dans le champ correct (classification individuelle). Le bloc Thinking montre une auto-conscience d'incertitude.
  • gemma3:27b-cloud : confabulation pure. Invente l'acronyme GEMSA ("Gestion des Mouvements de Patients et des Stocks"), transforme CCMU en plan blanc niveau crise sanitaire, présente avec assurance maximale et lien officiel inventé. Beaucoup plus dangereux que gemma4 (pas d'auto-doute).
  • Conséquence design : libellé complet PMSI obligatoire dans FAITS_CALCULÉS quel que soit le modèle.
  • Conséquence choix modèle : NE PAS envisager gemma3:27b comme fallback gemma4 sur T2A. Pour fallback post-démo : viser modèle médical français spécialisé (DrBERT/edsnlp) ou fine-tuning.
  • Méthode validée : test Ollama direct 30 sec avant tout pari sur la connaissance d'un modèle, y compris pour changement de modèle (pas seulement initialisation).

Méthodes sanctuarisées

  1. "Sauvegarde + fork avant chantiers parallèles" — appliqué ce matin spontanément, a payé toute la journée. À sanctuariser dans CLAUDE.md comme prérequis avant tout chantier multi-branches.
  2. "Instrumenter avant optimiser" — appliqué 2 fois aujourd'hui, 2 corrections de cap décisives :
    • Baseline run 4 a transformé "97% opaque" en goulots chiffrés
    • Mesure parallélisme v2 a corrigé un ratio 2,7× → 1,27× et fait basculer l'arbitrage γ → δ
  3. "Test Ollama direct avant pari sur connaissance LLM" — applicable à toute classification spécialisée (PMSI, CIM-10, CCAM, etc.)
  4. "Mesurer 2 conditions comparables, jamais cold-start vs warm" — piège classique de mesure de parallélisme corrigé en cours de journée.
  5. git status systématique en début de session Claude Code — incident commit composite (4 fichiers backend + 2 fichiers frontend stagés non liés) corrigé proprement par Option A reset+restore. À sanctuariser pour éviter récidive.

Dette tracée [S3] (à traiter post-démo)

Critique pour démo 15 mai

  • DETTE [S1] skip ord 13 orchestration : bug d'orchestration découvert run 8, voir fiche dédiée _archives/handoff_evidence_20260512_1940/DETTE_S1_skip_ord13_orchestration.md. Criticité HAUTE. NOT REPRO 100% (runs 2-3 ce matin OK). Investigation : replay_engine.py + api_stream.py, mécanisme "server side action" et transition serveur → visuel → serveur.
  • DETTE [S2] faux positif click_anchor "Codage" (run 1 matin) — peut-être lié à S1 ?
  • Robustesse Ollama Cloud en démo : NON COUVERT. Panne 503 vécue aujourd'hui (gemma4:31b temporarily overloaded). Si panne pendant démo le 15 → fallback nécessaire. Options : modèle local sur RTX 5070 12GB (qualité dégradée Q3/Q2 inacceptable sur gemma4:31b), démo enregistrée en backup, ou autre modèle local équivalent.

Optimisations post-démo

  • B parallélisation Ollama : reporté, gain 55-65s sur 381s, à reprendre après stabilisation démo
  • Verify post-click : trop coûteux (15-25s gaspillés sur 8 clics)
  • Warmup gemma4:31b-cloud : pour neutraliser cold-start (~40s)
  • Re-test A.1 paste isolé sur gemma4:31b-cloud post-incident Ollama
  • Crop OCR zone visible utile : gain 10-20s

Décision qualité

  • Mapping TERRAIN_VERS_T2A : libellé "Retour structure d'origine" (dossier 25012257 BRUNEL Henri) à arbitrer cliniquement avec Pauline/Amina
  • Email Pauline/Amina : à finaliser une fois résultats mini-bench disponibles. Questions candidates :
    1. "Retour structure d'origine" → quelle catégorie T2A ?
    2. Règle 3/3 ET (doc DIM établissement) vs règle ATIH 2/3 (PROMPT 3 actuel) — confirmation pratique ?
    3. Critère 2 (surveillance prolongée) — signaux concrets attendus dans DPI ?
    4. Critère 3 (examens/actes) — un acte CCAM suffit, ou acte ET examen ?
    5. "Sortie après surveillance UHCD" vs "Hospitalisation" vs "Transfert intra-hospitalier" — tous REQUALIFICATION ?
    6. Bandeau UI "à valider manuellement" si LLM confiance "faible" ?
  • CCMU + GEMSA + mode de venue + diagnostic principal dans FAITS_CALCULÉS : intégré (élargissement Option Élargie pris en cours de journée)
  • Override vérité-terrain dans _handle_t2a_decision_action (finding #1 audit) : à traiter en parallèle de commit 2

Méthode

  • Sanctuariser dans CLAUDE.md : git status initial, sauvegarde+fork avant chantiers parallèles, instrumenter avant optimiser, test Ollama direct, mesure comparable
  • Communication Dom ↔ Claude Code × 2 ↔ Claude session principale : déperdition d'information observée (3 arbitrages décision retransmis 2 fois). Pattern à formaliser : Dom pointe Claude Code vers fichiers de référence rédigés en session principale (brief md) plutôt que paraphraser en chat.

Asymétrie mémoire Claude session principale ↔ Dom

À traiter en session dédiée (pas en passant) : Dom maintient une mémoire active des patterns de Claude entre sessions, Claude n'a accès qu'aux notes uploadées ponctuellement. Asymétrie connue, signalée à plusieurs reprises aujourd'hui.


Points ouverts à reprendre demain en priorité

Matin (priorité par ordre)

  1. Investigation bug skip ord 13 (orchestration) — priorité HAUTE. Voir fiche dédiée + trace JSON. Investigation replay_engine.py et api_stream.py, mécanisme server-side action et transition serveur → visuel → serveur.
  2. Arbitrage push commits décision (9872f4510 + f2212e77e) — décider si on push avant ou après le bench complet.
  3. Reprise mini-bench décision sur 11 dossiers POC dès que gemma4:31b-cloud répond (ou décider de basculer sur gemma4 local si panne persiste). Sortie attendue : tableau récap convergence durée + décision sur 10 dossiers utiles.
  4. Commit 2 du brief décision (garde-fou serveur) après bench validé.
  5. Dry-run E2E Demo_urgence_2 sur MOREL après commit 2.

Aprem (si temps)

  • Email Pauline/Amina (rédigé sur la base des résultats bench)
  • Réécriture éventuelle PROMPT 3 selon résultats convergence
  • Investigation faux positif click_anchor "Codage" (run 1 matin) — possiblement même cause que skip ord 13
  • B parallélisation si tout le reste est stable

Décision stratégique en suspens

  • Fallback Ollama Cloud pour démo 15 mai : à arbitrer. Options à instruire : gemma4 local (qualité quantization à vérifier), qwen3-next:80b (testé qualité aujourd'hui sur run 8), démo enregistrée backup.

Annexes

  • Trace bug skip ord 13 : _archives/handoff_evidence_20260512_1940/replay_fb0c9882_state.json (129 Ko, 1167 lignes)
  • Fiche dette dédiée : _archives/handoff_evidence_20260512_1940/DETTE_S1_skip_ord13_orchestration.md
  • Synthèse Claude Code journée : _archives/handoff_evidence_20260512_1940/SYNTHESE_journee_handoff.md
  • Sceau démo matin : tag git demo-stable-2026-05-12 + tarball 23 Go + SHA256 vérifiés
  • Backups DB : chaîne de 4 sur la journée (backups_db_chain.txt)

Coupe nette ce soir. Pas d'autre tentative. Le vélo a coupé proprement, ne replonge pas dans le code après 20h.