Repository navigation
fix(ci,#16143): frontiere de mot explicite — un marqueur SNAKE_CASE est reconnu - #16161
Merged
Merged
Conversation
…est reconnu `\b` ne franchit pas l'underscore : `_` est un caractere de mot dans `re`, donc `FINAL_RESIDUAL` n'offrait de frontiere ni avant `final`, ni avant `residu`, et restait INERT aux deux motifs de `find_written_exception`. Mesure sur #15849 (rejoue sur le corps prive de la ligne de contournement en prose) : `verdict: trivial` + `written_exception: null` -- exactement ce que l'organe rend quand rien n'est invoque, donc faux dans le sens qui ACCUSE l'auteur. Le corps live de #15849 masquait le defaut : la lane y avait ajoute la phrase de prose #15719, qui passait par les MOTS et non par le marqueur. C'est ce contournement, pas l'organe, qui rendait `ok`. Fix = frontiere explicite, pas retrait de `\b` : `final` sans frontiere droite mordrait `finalement`, `finaliser`, `seulement` -- la sur-accusation symetrique, moins visible. `[a-z0-9]` suffit des deux cotes (l'entree est deja accent-strippee et minusculisee par `_strip_accents_lower`). Test de contrat a DEUX colonnes : la colonne de droite compte autant que celle de gauche (un test qui ne verifierait que la gauche repasserait au vert avec les `\b` simplement retires, en rouvrant la sur-accusation). Passe "meme erreur" terminee pour ce fichier : 2 regex compilees, 2 corrigees. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Contributor
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Grain: MED/tooling — lane myia-po-2026:CoursIA — prev: DEEP/notebook-python #16123
Closes #16143.
Le defaut
\bne franchit pas le tiret bas._est un caractere de mot enrePython, donc dansfinal_residualil n'y a de frontiere ni avantfinal, ni avantresidu: le marqueurSNAKE_CASEetait inerte aux deux motifs, et l'organe rendaitverdict: trivial+written_exception: null— exactement ce qu'il rend quand rien n'est invoque, donc faux dans le sens qui accuse l'auteur.Correctif applique, identique a celui propose par l'issue (le correctif SOTA, pas une variante degradee) :
Ne pas simplement retirer les
\b:finalsans frontiere droite mordraitfinalement,finaliser,seulement— la sur-accusation symetrique, et moins visible.[a-z0-9]suffit des deux cotes, l'entree etant deja accent-strippee et minusculisee par_strip_accents_lower.Mesure avant / apres, sur l'instance reelle #15849
Rejoue sur le corps de #15849 prive de la ligne de contournement en prose que la lane
myia-po-2023y avait ajoutee sur place (--stats 11,5,5, meme entree) :written_exception635f95abd)trivialnullokFINAL_RESIDUAL,fixed_count5 < plancher 10Une precision d'honnetete sur la lecture de ce tableau. Sur le corps live de #15849, l'ancien organe rendait deja
ok— mais pas grace au marqueur : grace aux mots de proseexception/residu final mesurede la ligne de contournement. Ce que la comparaison montre est donc un basculement de verdict (trivial->ok) et un changement de ligne citee : le verdictokporte desormais sur le marqueur, la ou il portait sur la prose. Le defaut etait reel et masque ; il fallait retirer le contournement pour le voir.Le controle : deux colonnes
test_table_des_deux_colonnes_de_la_frontierefige les deux colonnes de la table de l'issue. La colonne de droite compte autant que celle de gauche : un test qui ne verifierait que la gauche repasserait au vert avec les\bsimplement retires, en rouvrant la sur-accusation.Un troisieme test (
test_sans_frontiere_droite_final_mordrait_finalement) controle le raisonnement lui-meme : il verifie que la forme naive — celle qu'on obtiendrait en retirant les\b— mord bienfinalement, alors que la forme livree non. Sans lui, rien ne prouve que c'est la frontiere droite qui protege, et pas autre chose.Passe « meme erreur » sur le fichier : terminee
L'issue demandait de relire toutes les expressions du fichier dans la meme passe. Fait par grep, pas a l'oeil :
scripts/check_trivial_diff.pyporte exactement 2re.compile(_EXCEPTION_LEXICALl.102,_EXCEPTION_SCOPEl.104). 2 sur 2 corrigees. Aucune troisieme expression ne reste a auditer dans ce fichier.Au-dela de la demande de l'issue : le CLI a ete execute de bout en bout sur une instance reelle (les deux modes,
--body-fileet le contrat de sortie JSON), pas seulement les deux expressions isolees enpython -c.Ce que cette PR ne fait pas
SNAKE_CASE. Cette PR ne le mesure pas davantage — le defaut reste etabli sur la mecanique du moteur d'expressions regulieres et sur une instance observee (fix(probas,#15719): échapper les pipes des tables — tranche Probas (Percolation, PyMC-04, DoWhy-1, voi) — FINAL_RESIDUAL #15849), pas sur une frequence. Un marqueurSNAKE_CASEpeut donc avoir ete rendutriviala tort sans que quiconque l'ait releve._is_cited, 30 car.) ne s'arrete pas a la frontiere de paragraphe — un titre de section nu eteint un verdict NEUF #15989 pour la classe « mesure 0 la ou il croit mesurer »). Le meme\b-contre-_a pu se repeter ailleurs dansscripts/: non verifie ici. Ce serait un grain distinct, pas une extension de celui-ci (un sujet par PR).Verification
python -m pytest scripts/tests/test_check_trivial_diff.py -q-> 14 passed (11 existants + 3 ajoutes)trivial; docs(#15457): consolider la fournée d'aération en un grain (absorbe 10 PRs) #15737 (756 lignes) et le fix 2 lignes d'un bug critique restentokPassed,text=Truesansencoding=Passed🤖 Generated with Claude Code