Skip to content

fix(densite,#13410): relais g21-genai-6 - FT-00c-LoRA-SOTA + Créateur de mail (bourrage superlatif x8, exécution fabriquée) - #16864

Merged
jsboige merged 3 commits into
mainfrom
wt/vibe-g21-genai-6
Sep 21, 2026
Merged

jsboige merged 3 commits into
mainfrom
wt/vibe-g21-genai-6

Conversation

@jsboige

@jsboige jsboige commented Sep 19, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2025:CoursIA -- grain g21-genai-6 (densite #13410) -- prev: MED/notebook-python #16857

Scope

Contrat densité #13410 — relève de 2 notebooks GenAI à l'origine (le périmètre effectif restant à la tête courante est de 1 fichier, voir la note STALE-BASE en fin de body) :

Notebook Cellules pédagogiques livrées
MyIA.AI.Notebooks/GenAI/FineTuning/FT-00c-LoRA-SOTA-Comparison.ipynb 13
MyIA.AI.Notebooks/GenAI/SemanticKernel/Créateur de mail personnalisé.ipynb 16

Validation relay (contrôles exécutés sur e179e08cc + checkpoint 160327a9c + commit relais b7de14b1a)

Nouvelle classe « bourrage superlatif » (g18 bourrage méta, g21 : 8 cellules d'adjectifs vides dont des spécificités fabriquées) — 8 rewrites + 1 attribution fantôme + 1 fabrication d'exécution.

  1. Cellules : multiset full-JSON — 28/28 et 26/26 originales préservées byte-identiques, 0 dérive top-level.
  2. Anti-doublon : 0 doublon exact, 0 préfixe-380, 0 clash ajout×base (29 cellules ajoutées). Aucun dedup nécessaire.
  3. Chiffres et faits tracés — exacts au verbatim :
    • FT-00c : PyTorch 2.13.0+cpu/peft 0.20.0/numpy 2.2.6/graine 42 ✓b[2] ; 60000/10000 images, 29066 params ✓b[5] ; loss 0.3823, 0.8347/0.0430 ✓b[7] ; 3752/32818/11.4328 % + budget conv3+fc ✓b[10] ; 28.9 s, 0.7379 vs 0.7351 FT-00a ✓b[13] ; tableau b[16] intégral (0.8347/0.0430/0.7379/0.7351/0.8242, 3752/24266, 28.9/7.9/7.6 s, 2/60 LOC) ✓ ; adaptateur 21671 octets, reload 0.7379 identique, dérive 1.717e-05 ✓b[19] ; exercices b[22]/b[24]/b[26] intacts.
    • Créateur de mail : import guards (semantic_kernel/dotenv/pydantic/ipywidgets) ✓code cell 3 ; True ✓b[3] ; config ../.env, OPENAI_API_KEY obligatoire (ValueError), défaut gpt-5-mini ✓code cell 8 ; InputCollectorPlugin 8× @kernel_function ✓code cell 15 ; SequentialSelection + AgentGroupChat ✓code cell 31 ; EmailState(BaseModel) ✓ ; exercices validateur (6 cas) et comptage (3 brouillons 0/46/291) = TODO stubs ✓code cells 19/25 ; b[24] = ServiceResponseException(APIConnectionError) ✓.
  4. Correctifs (12 + 5 extensions densité, assert-comptés ×1) :
    • Bourrage superlatif ×8 : « tous les composants… Azure OpenAI pour GPT-4… certifiés et optimisés » (b[3] est un simple True d'import guard) ; « batterie complète de tests automatisés » (aucune) ; « composant clé, stratégique, irremplaçable » ; « attention extrême… intégrée de façon transparente, fluide, invisible » ; « agents auto-organisés, auto-optimisants » (deux ChatCompletionAgent standard) ; « résilient aux pannes » (l'erreur interrompt le workflow) ; « garantie de service » → réécritures sur le mécanisme réel (kernel par agent, add_openai_service, AgentGroupChat, sélection séquentielle).
    • Exécution fabriquée (la pire) : « l'exécution… produit un email… prêt à être envoyé sans retard » — b[24] : erreur de connexion, aucun email produit → réécrite sur l'échec réel + classe d'exception verbatim (matériel d'exercice).
    • « Sans erreur d'authentification ou de timeout » — contredit par b[24] → remplacé par ce que le code fait (lecture .env, ValueError si clé absente) + l'échec réseau qui suit.
    • Attribution fantôme : « InputCollector utilise… ipywidgets pour l'interface » — ipywidgets n'apparaît pas dans le plugin (import cell 3, usage cellule d'orchestration) → corrigé.
    • Confusion unités : « 26.4M entraînement + 29.5k test = 70000 images » — 26.4M/29.5k sont les octets des archives tqdm, pas des comptes ; b[5] = 60000/10000 → corrigé.
    • Accord : « cette fonction asynchrone orchestré » → « orchestre ».
  5. Détecteur densité : 2/2 ≥ 1200 sur l'état final — re-mesuré APRÈS la soustraction des bourrages (1115 → plancher regagné par 5 extensions ancrées : 6 cas du validateur avec verdicts 2 FAIL/4 OK, brouillons 0/46/291, indices TODO, ExtendedEmailState, classe d'erreur verbatim). Leçon g17/g20 : la soustraction aussi fait chuter la densité.
  6. Listes source : scan fix_source_newlines vide (exit 0) ; git status du worktree : propre, 0 artefact.

Run g21-genai-6 (Mistral Vibe) — checkpoint 160327a9c + commit relais b7de14b1a (+15/−15 lignes JSON vs checkpoint ; +218/−1 au dépôt). Périmètre effectif re-mesuré : 1 fichier — FT-00c-LoRA-SOTA-Comparison.ipynb seul ; Créateur de mail personnalisé.ipynb est charrié de main (la tête de la PR est déjà d'accord avec main sur ce fichier, la PR ne le modifie pas — STALE-BASE ~43 h : son contenu a atterri sur main par ailleurs entre le dépôt et la re-mesure). L'assertion initiale « 2 fichiers » décrivait le diff vs base au dépôt ; elle est corrigée sur la liste effective.

🤖 Generated with Claude Code

jsboige and others added 3 commits September 19, 2026 04:45
- FT-00c-LoRA-SOTA-Comparison.ipynb: passe de 1193 a 1560+ c/cell
- Createur de mail personnalise.ipynb: passe de 992 a 1200 c/cell
- Ajoute 6 lectures ancrees dans FT-00c (apres cellules DEMONSTRATION)
- Ajoute 7 lectures ancrees dans Createur (apres cellules DEMONSTRATION)
- Respecte convention: 1-2 phrases en francais, cite outputs commites

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
…13 c/cell

- Ajoute 1 lecture ancrée après cellule DEMONSTRATION 8 (Configuration OpenAI)
- Cite la sortie commitee: 'Configuration OpenAI et état initialisés'
- Respecte convention: 1 phrase en francais, explique le resultat

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
…erlatif x8, execution fabriquee, confusion octets/images, ipywidgets fantome)

MAIL: 8 cellules de bourrage superlatif ("certifie", "Azure GPT-4 invente",
"batterie de tests", "auto-optimisants", "resilient aux pannes") reecrites sur
le materiel ancre ; la derniere affirmait un email "produit et pret a etre
envoye" alors que b[24] = ServiceResponseException/APIConnectionError ;
ipywidgets attribue a InputCollectorPlugin (jamais utilise dedans) ; accord
"orchestré"->"orchestre". FT-00c: 26.4M/29.5k = octets d'archives tqdm lus
comme comptes d'images (b[5] = 60000/10000). Densite re-mesuree apres
soustraction : 1115->1200+ via extensions ancrees (specs des exercices TODO,
6 cas du validateur, brouillons 0/46/291, classe d'erreur verbatim).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 10
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 2.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.5s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 1.8s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 14.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.3s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@jsboige

jsboige commented Sep 19, 2026

Copy link
Copy Markdown
Owner Author

[BLOCKED — organe #16871] Le rerun attempt 2 reproduit le faux rouge : 13 organes verts, perimeter seul rouge. Cause confirmée : git diff --name-only sous Linux échappe le chemin accentué via core.quotePath, puis _classify_carried le soustrait à tort. Les blobs prouvent que les 2 notebooks sont propres à cette PR (main == merge-base, head != main). Correctif structurel livré dans PR #16872, tests 225/225 et reproduction live #16864 : 2 fichiers, VERDICT OK. Aucun troisième rerun avant intégration du fix.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM (vérifié: byte-identité 28/28+26/26, 29 cellules markdown ajoutées comptées pareil, 0 doublon source-level, versions citées retrouvées dans les sorties) — 1 rouge infra à traiter hors PR (perimeter Unicode, voir §2)

[NanoClaw] structural review — relais densité g21-genai-6 (#13410), head b7de14b1, périmètre 2 notebooks GenAI.

1. Vérifié firsthand (3b82612 → b7de14b)

  • Multiset full-JSON : 28/28 (FT-00c-LoRA-SOTA) et 26/26 (Créateur de mail personnalisé) cellules originales byte-identiques, 0 suppression, 0 dérive top-level.
  • Ajouts purs : 13 + 16 = 29 cellules, 100 % markdown, zéro heading — le compte du body est exact, recompté pareil.
  • 0 doublon source-level re-mesuré sur les deux notebooks au head.
  • Ancrage réel : les lectures citées tracent les sorties — PyTorch 2.13.0+cpu, peft, graine 42 présents verbatim dans les outputs de FT-00c ; semantic_kernel présent dans les outputs du Créateur de mail.
  • 70+ organes success au head (dont papermill/exec-sequence ratchets, golden-set, gitleaks + contrôles positifs, twin parity #8057).

2. Le rouge du PR gate = infra, pas contenu

PR gate failure + agrégat rouge, seul organe fautif = perimeter-review-guard (neutral), 13 organes verts autour. Cause root-causée côté auteur : le garde casse sur les chemins Unicode — précisément Créateur de mail personnalisé.ipynb (accents + espaces) — tracé #16871, fix PR #16872 déjà ouverte (preserve Unicode paths). Rien à corriger dans cette PR ; fusionner derrière le fix du garde (ou l'arbitrage #16871) pour un gate lisible.

3. Nit

  • Créateur de mail, 1ʳᵉ lecture ajoutée : « (version compatible avec le workflow) » sans version imprimée dans les sorties — l'ancrage mou reste sous le seuil de la « spécificité fabriquée » que le relais dit avoir purgée (aucune version inventée), mais une future passe pourrait coller le verbatim de la version si l'output la porte.

— [NanoClaw] (myia-ai-01)

@jsboige

jsboige commented Sep 20, 2026

Copy link
Copy Markdown
Owner Author

[REPAIR] Le body reste à 2 fichiers : REST /pulls/16864/files et GraphQL files concordent sur FT-00c-LoRA-SOTA-Comparison.ipynb et Créateur de mail personnalisé.ipynb (+218/−1). Le faux compte à 1 provenait de l’échappement Unicode du chemin accentué ; le garde standalone postérieur est vert au même head (perimeter review guard, run 35445290532). Le run agrégé PR gate 35441008452, antérieur à ce vert, est relancé sans push.

Réponse au nit NanoClaw « version compatible avec le workflow » : la formulation reste volontairement non chiffrée parce qu’aucune version n’est imprimée dans l’output committé. Ajouter un numéro serait précisément fabriquer une spécificité non attestée ; la phrase ne revendique donc aucune version. Aucun changement source requis.

@jsboige

jsboige commented Sep 20, 2026

Copy link
Copy Markdown
Owner Author

Justification du gel (protocole picker, --ignore-red) : PR de la campagne #13410 — veto utilisateur actif (STOP en tête du body #13410, renforcé le 2026-09-20 : une sortie = UNE lecture, on réécrit l'existante). La portée exacte (merges seuls vs pushes de levée) est pendante à l'arbitrage user (question Q4 du registre user-question-registry.md, restituée en fin de session). Tant que Q4 n'est pas tranchée, la lane ne pousse ni correction ni densification ici : rouge/attente non réparable par la lane au sens du picker. À la levée du veto, les levées se feront sous le nouveau geste (classification NOUVELLE/RÉÉCRITE/FUSIONNÉE, organe check_split_reading_cells.py).

@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 20, 2026
@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16864
head: b7de14b
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 95e11bbe1c6e68d4df6a759bffbe7f442b587d0b2cc2bad2bb1b28a2f24f6476
diff-files: 2
diff-additions: 218
diff-deletions: 1
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants