Repository navigation
fix(tooling): elargir la classe d'unites de check_factual_mislabel.py au-dela du domaine App-5 #20035
Description
Part of #18354.
Le constat
Le vocabulaire d'unites de scripts/check_factual_mislabel.py est ferme et mono-domaine :
UNITS = salles?|cours|cre?neaux?|enseignants?|professeurs?|etudiants?|agents?
|variables?|contraintes?|jours?|rooms?|courses?|slots?|teachers?
Ce vocabulaire est celui du domaine d'ou l'organe est ne (l'emploi du temps d'App-5). Les deux motifs qui forment une paire — MD_COUNT_RE (\b(\d{1,5})\s*(UNITS)\b) et STREAM_COUNT_RE (\b(UNITS)\s*[:=]\s*(\d{1,5})\b) — ne peuvent donc pas se former sur une unite absente de la liste. Aucune paire, aucune comparaison, donc aucun signal : l'organe est vert par construction sur cette classe, pas par absence de defaut.
Instance mesuree
PR #19918, Lean-37-Capstone-Serre100.ipynb. La cellule 6 imprime 15 carnets dans Serre100/ et sa table ; la prose qui commente cette sortie disait « les huit carnets » (titre et corps de la cellule 2, cellule 5, conclusion 15) et « Sept carnets sur huit » (cellule 7). La table de la section 2 s'arretait a 08.
Les trois organes freres rendaient anomaly_count: 0 sur la tete d'alors, et le commentaire CI markdown-claims-output-advisory affichait « No prose/output mismatch detected in the notebooks this PR changed. »
Le dossier de domaine qui a trouve la derive (myia-po-2027:CoursIA-2) a etabli le mecanisme a la source et a teste une hypothese concurrente — la prose en lettres plutot qu'en chiffres — en rejouant le carnet avec la prose reecrite en chiffres : les trois organes restent a 0. Le mecanisme retenu est donc bien le vocabulaire, pas la forme du nombre. Portee honnete : le mecanisme est etabli pour check_factual_mislabel.py ; la cecite des deux autres organes est constatee, pas expliquee.
Ce qui est demande
- Reproduire le cas sur la tete d'avant correction de fix(lean,#19730): re-executer Lean-37 Capstone Serre100 post-#19628 #19918 (
6986f3f43b) : le carnet y est committe avec la prose perimee, les organes rendent 0. - Trancher le remede — les deux options ne sont pas equivalentes :
- etendre
UNITSa une unite de plus est le geste le plus court, mais il ne traite qu'une instance : la prochaine prose portera un autre substantif, et la liste restera mono-domaine ; - une classe d'unites de comptage (un nom commun au pluriel precede d'un entier, dans une cellule d'interpretation adjacente a une cellule code) attrape la classe entiere, au prix d'un taux de faux positifs a mesurer.
- etendre
- Mesurer le taux de faux positifs avant/apres sur le corpus, et consigner la mesure dans le body de la PR — la liste fermee existe pour tenir le bruit bas, l'elargir sans mesure la viderait de son sens.
Note de perimetre
Le remede n'est pas requis par #19918 : la prose y est corrigee independamment. Cette issue porte l'organe, pour que la classe cesse d'etre invisible au gate. Toute personne qui ouvre la classe doit relire scripts/check_factual_mislabel.py et sa campagne parente avant de toucher au vocabulaire.
Activity
jsboige commentedon Oct 13, 2026
Mesure avant correctif, depuis la session cloud du mainteneur (hors flotte, exemption #17713). Aucune PR : l'élargissement proposé échoue au critère de faux positifs.
1. Le vocabulaire seul ne rattrape pas l'instance #19918. Sur la tête pré-correction
6986f3f43bdeLean-37-Capstone-Serre100.ipynb, trois leviers sont nécessaires ensemble :carnetsabsent deUNITS;15 carnets dans Serre100/(forme « N unité »), alors que l'organe ne lit que la forme « Unité : M » ;MD_COUNT_REn'accepte que des chiffres.2. Coût sur le corpus (1 551 carnets de
MyIA.AI.Notebooks,origin/main) :Toutes les unités qui produisent des findings sont dominées par les faux positifs : seed 28, bit 14, exemple 13, noeud 13, itération 9, etc.
3. Classes de faux positifs observées :
Seed : 42,Noeud : 400,Iterations : 100) : l'organe confond un compte et une valeur de paramètre ;Seed : 42) ;Nombre d'actifs: 3sélectionnés) ;App-5 reste précis parce que
Salles : 4est le total du même objet que la prose. Ce cas ne se généralise pas.Conséquence proposée. Ne pas élargir
UNITS. Un élargissement fiable demande d'abord un travail de précision, qui relève plutôt d'une issue de design que d'une extension de liste :Hors périmètre, relevé : le canon App-5 (« 3 salles » contre
Salles : 4) est toujours présent surmain. Le step CI (markdown-claims-output-advisory.yml, « factual-mislabel detector ») reste non bloquant : élargir n'ajouterait que du bruit dans le commentaire sticky, avec un impact estimé sur 5 des PRs ouvertes.Generated by Claude Code