Repository navigation
GenAI : qualifier les 14 notebooks sous le seuil du compteur canonique — faux négatifs, artefact hors parcours, vrais trous #18741
Description
Activity
- addedauditAutomated quality audit findingsAutomated quality audit findings
on Oct 1, 2026 [CLAIMED] lane myia-ai-01:CoursIA-2 -- qualifier 14 notebooks GenAI (faux negatifs / hors corpus / vrais trous)
[DELIVERED] PR #18758 (head c437c35) — qualification 14 notebooks GenAI sous seuil du compteur (10 faux negatifs + 3 vrais trous + 1 hors corpus). Aucune modification de notebook/compteur — document de constat seulement. PR suivantes recommandees pour les actions concretes (extension compteur pour exercices de lecture, exclusion Notebook-Generated, statut TV-03 demo, complement PT_09).
- added a commit that references this issue
on Oct 3, 2026 - added a commit that references this issue
on Oct 3, 2026 Point d'étape. L'issue reste ouverte : un critère n'est pas satisfait.
Livré :
- le classement des 14 notebooks : docs(ledgers,#18741): qualification 14 notebooks GenAI sous seuil #18758 (2026-10-03), ledger
docs/ledgers/18741-qualification-14-notebooks.mdsurmain; - les statuts de
06-3etTV-03: docs(genai,#18741): 06-3 declare format lecture chiffree (audit Astra 2026-10-01) #18946 et docs(genai,#18741): TV-03 declare mode demonstration (audit Astra 2026-10-01) #18932.
Non satisfait : « les faux négatifs se corrigent dans
count_exercises.py». Aucune PR fusionnée n'étendscripts/notebook_tools/count_exercises.pypour cette issue. Le dernier changement du compteur surmainest #18181 (2026-09-29), antérieur au ledger, et le ledger renvoie lui-même cette correction à des « PR suivantes ».Reste à faire : étendre le compteur (détection ou table d'exemptions) pour qu'il ne refuse plus une PR valide. Les 11 faux négatifs du ledger sont toujours sous-comptés.
- le classement des 14 notebooks : docs(ledgers,#18741): qualification 14 notebooks GenAI sous seuil #18758 (2026-10-03), ledger
[CLAIMED] lane myia-po-2023:CoursIA -- dispatch coordinateur : critere restant, etendre count_exercises.py pour que les 11 faux negatifs du ledger 18741 soient comptes, temoin negatif inclus -- paths: scripts/notebook_tools/count_exercises.py, scripts/**/test_count_exercises*.py
Etat mesure au 2026-10-05 (lane myia-po-2023:CoursIA) — diagnostic, non livre
Le dispatch ai-01 demandait d'etendre
count_exercises.pypour que les faux
negatifs du ledger soient comptes. Je n'ai pas livre le correctif : la
mesure ci-dessous explique pourquoi, et separe les causes pour que le grain
puisse etre decoupe.Corpus
python scripts/notebook_tools/count_exercises.py --json: 1299 notebooks,
55 non conformes in-corpus. Les 14 cas du ledger sont toujours la, avec les
memes comptes, plus un quinzieme apparu depuis la redaction du ledger :
PostTraining/PT_18_laya_ablation_distillation.ipynb(1/3), absent du tableau.Cause 1 — l'accent, dans le motif le plus canonique
STUB_PATTERNS[0]est le seul des trois motifs « a completer » a exiger
l'orthographe non accentuee :Motif Forme acceptee [0]printprint("Exercice 2 a completer— sans accent[11]commentaire de fin de lignea compl[eé]ter— accent accepte[12]chaine sentinellea compl[eé]ter,à compléter— accent accepteLe depot est francophone :
print("Exercice 2 à compléter : ...")est la forme
que les auteurs ecrivent, et elle n'etait pas reconnue. Une cellule dont le seul
autre marqueur est unresult_x = Nonenu retombait alors sur la regle
<= 1 ligne de code effectiveet se lisait comme une solution.Mesure directe :
PT_091 -> 3 (conforme),PT_11c2 -> 4.Cause 2 — l'appariement arriere absorbe une cellule d'import
C'est ce que la cause 1 revele, et c'est pourquoi je n'ai pas livre le seul
correctif d'accent.Sur
PT_11c, avant tout changement, les deux hits etaient :cell 8 markdown markdown_header <- Exercice 1 cell 9 code code_cell_comment <- le stub de l'Exercice 1, compte en autonomeL'en-tete 8 (Exercice 1) ne s'apparie pas a son stub (cellule 9). Il absorbe
la cellule 7 — un blocimport re/from typing import Optional— via
l'absorption arriere de #18146 :_is_stub_coderendTruesur une cellule
d'import (sa seule ligne est un import, que le filtre de lignes effectives
retire, donc0 <= 1), et son numero d'exercice estNoneavec aucun mot
« exercice ». Le vrai stub (c9) reste non apparie et la passe 2 le compte.Resultat : Exercice 1 compte deux fois, Exercices 2 et 3 zero fois, pour un
total de 2 sur 3. Avec le seul correctif d'accent, c15 et c33 deviennent des
stubs, les en-tetes 14 et 32 s'apparient, et le total passe a 4 — soit un
faux positif sur une cellule qui a bien 3 exercices.Cette cause est independante du compteur d'exercices : toute cellule
d'import est « un stub » au sens de_is_stub_code.Cause 3 —
_body_computes_resultlit un corps placeholder comme un calculLes trois cas « 3 stubs, compteur en voit 2 » que le ledger laissait « hors
perimetre » partagent une cause, mesuree cellule par cellule :Notebook Cellule Marqueurs presents Pourquoi ecartee Video/.../02-6-MiniMax-H3c16 # TODO etudiant,# Indiceentites_connues = [...]puisreturn trouveeslu comme deriveTexte/09b_Prompt_Security_RedTeamc30 # TODO etudiantx4return okest celui d'une fonction imbriquee (verifier_classification) ; le corps de la cellule, lui, est un dict deNoneOWUI/.../05-Multi-Tenant-CI-QA-OWUIc17 # TODO,# Indicereturn "api" # placeholder — a affiner+ une boucleforde testDans les trois cas la cellule porte un marqueur de stub explicite et le corps
ne calcule rien d'utile (liste vide, dict deNone, valeur codee en dur annotee
placeholder)._body_computes_resulta ete construit sur des incidents
precis (#15080 D01, #15713, PR #12246) : le durcir demande une mesure
avant/apres corpus entier dans les deux sens.Causes deja qualifiees par le ledger, non retouchees
Scan C#
// Exercicesans en-tete adjacente (Aspire 01, Orleans 01), stubs
externalises dans le.csprojvoisin (Orleans 02), exercices de lecture sans
stub (Audio 06-3), vrai trou (TV-03), artefact hors corpus
(SemanticKernel/Notebook-Generated), et les deux cas declares (PT_17, PT_18).Pourquoi rien n'a ete livre
Le correctif d'accent est juste en soi (il rend le motif 0 coherent avec les
motifs 11 et 12, etPT_09passe a 3), mais livre seul il transforme le
sous-comptage dePT_11cen sur-comptage : il faut traiter la cause 2 dans la
meme PR. Or la cause 2 touche l'absorption arriere de #18146 et la cause 3 la
porte_body_computes_result— deux heuristiques porteuses d'historique, dont
la modification exige sa propre validation corpus. Livrer la moitie reviendrait
a livrer un compte faux connu sur un outil qui gate la pedagogie.Decoupage propose
- PR A — accent du motif 0 + garde « une cellule d'import n'est pas un
stub » (cause 1 + 2). Effet attendu : PT_09 1->3, PT_11c 2->3. - PR B —
_body_computes_result: distinguer un corps placeholder d'un
corps qui calcule (cause 3). Effet attendu : Video 02-6, Texte 09b, OWUI 05. - PR C — formes C# (Aspire 01, Orleans 01/02) et exercices de lecture
(Audio 06-3), avec leskinddistincts recommandes par le ledger. - Declarations —
SemanticKernel/Notebook-Generatedhors corpus, TV-03 en
statut demonstration, PT_17/PT_18 assumes.
Instrument de mesure
Le diff avant/apres corpus entier se fait avec
count_exercises.py --jsonpuis une empreintechemin \t compte \t conforme:
c'est ce qui a permis de voir que la fenetre declaree et la fenetre couverte
divergeaient. A refaire pour chaque PR ci-dessus, dans les deux sens (conformes
gagnes et conformes perdus).- PR A — accent du motif 0 + garde « une cellule d'import n'est pas un
Parent : #18731. Section 3 du compagnon de l'Audit tiers Astra du 2026-10-01, archivé sur GDrive :
MyIA/IA/LLMs/Conversations/CoursIA/Audit-CoursIA-Evolution-Digestion-2026-10-01.md(preuves :CoursIA-Audit-Preuves-2026-10-01.zip). (CoursIA-EPF-TPs-Projets-Suite-2026-10-01.md).Mesure
python scripts/notebook_tools/count_exercises.py --family GenAI --jsonsurorigin/main=c2cd88cb7fdonne 254 notebooks dans le corpus, dont 6setupexemptés, plus 2 hors corpus. 14 sont non conformes. L'audit en compte 25, parce qu'il inclut les carnets d'environnement et les templates que l'outil canonique exempte déjà.Le risque à éviter : remplir mécaniquement ces 14 notebooks de trois stubs artificiels. Les cas ne sont pas de même nature.
Integrations-DotNet/Orleans/01-Orleans-Grains-AgentsIntegrations-DotNet/Orleans/02-Orleans-Aspire-CoHostAudio/06-Diffusion-SOTA/06-3-AudioDiffusion-Comparison-A-vs-BPostTraining/PT_09_rloo_from_scratch_toy_envSemanticKernel/Notebook-GeneratedPostTraining/PT_17_laya_proper_rewards_toyTexte/TransformerVariants/TV-03-Internalisation-CoTFineTuning/FT-00d-LoRA-QLoRA-SOTA-Comparison-PythonIntegrations-DotNet/Aspire/01-Aspire-Orchestration-GenAi,Plateformes-Conversationnelles/…/05-Multi-Tenant-CI-QA-OWUI,…/06-Nouveautes-v0.10-QA-OWUI,PostTraining/PT_11c_grpo_qwen17_rlvr,Texte/09b_Prompt_Security_RedTeam,Video/02-Advanced/02-6-MiniMax-H3-Architecture-LicensingAcceptation
count_exercises.py, par sa table d'exemptions ou sa détection, pas par des cellules ajoutées.