Le defaut
Du LaTeX genere depuis une chaine Python non-raw perd son antislash. Trois exemples, ecrits ici
avec l'antislash echappe pour survivre au transport :
| ecrit dans le source |
ce que Python produit |
ce qui atterrit dans le notebook |
\\theta (non-raw) |
TAB + heta |
tabulation reelle collee a heta |
\\neg (non-raw) |
LF + eg |
saut de ligne reel colle a eg |
\\frac (non-raw) |
FF + rac |
form-feed reel colle a rac |
Le JSON du notebook reste valide, le notebook s'ouvre, la CI passe -- et la formule ne se rend pas.
Aucun organe existant ne l'attrape : ce n'est ni une erreur d'execution, ni un execution_count nul,
ni un motif de texte. C'est un caractere de controle a l'interieur d'une portee mathematique.
Mesure (2026-09-06, main)
32 occurrences dans 4 notebooks, plus un notebook illisible. Sortie brute du detecteur
(les antislashes simples dans les extraits sont des caracteres de controle rendus par repr,
les doubles sont de vrais antislashes -- c'est le contraste qui prouve le defaut) :
\r->CR MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 2 id=e109ee46 'e des joueurs\n- $v : 2^N \rightarrow \\math'
\r->CR MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 2 id=e109ee46 'n\n\n### Pourquoi $v : 2^N \rightarrow \\math'
\f->FF MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 6 id=de992024 'seteq N \\setminus \\{i\\}} \x0crac{|S|!(n-|S|-'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 13 id=5d63b0e9 '$\n- **Monte Carlo** : $O(\text{samples} \\c'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 13 id=5d63b0e9 'cable.\n\n**Monte Carlo $O(\text{samples} \\c'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 13 id=5d63b0e9 'rgence est en $O(1/\\sqrt{\text{samples}})$'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 16 id=dd45e2b1 'allocations stables :\n\n$$\text{Core}(v) = '
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 16 id=dd45e2b1 'R}^n : \\sum_i x_i = v(N) \text{ et } \\sum_'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 16 id=dd45e2b1 '_{i \\in S} x_i \\geq v(S) \text{ pour tout '
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 26 id=d6a75983 're pour theta=0.8\n\nPour $\theta = 0.8$, la'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 26 id=d6a75983 'ue Robbie peut conclure $\theta > 0.5$ ave'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 26 id=d6a75983 'ptimale de Robbie. Pour $\theta = 0.8$, ch'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 26 id=d6a75983 'ent interessant\n\nLe cas $\theta = 0.8$ est'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 26 id=d6a75983 ' est non-ambigu. Le cas $\theta = 0.5$ est'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 26 id=d6a75983 'imes est abrupte : pour $\theta$ dans une '
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 26 id=d6a75983 'efficacite baisse. Pour $\theta$ eloigne d'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 30 id=ccc05a2a 'soit preferable. Si $P(R \text{ mal specif'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 30 id=ccc05a2a 'R \text{ mal specifiee} | \text{humain veut'
\r->CR MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 30 id=ccc05a2a 'pense **fixee** $R^* : S \rightarrow \\math'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 35 id=gt15meta-md01 'nt, le seuil effectif\n\n$$\tau(\\sigma) = 0{'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15-CooperativeGames.ipynb
cellule 35 id=gt15meta-md01 "*bande de résistance** $[\tau, 1]$ s'effon"
\f->FF MyIA.AI.Notebooks/GameTheory/GameTheory-15c-CooperativeGames-Csharp.ipynb
cellule 2 id=ad9ac4c5 'seteq N \\setminus \\{i\\}} \x0crac{|S|!(n-|S|-'
\f->FF MyIA.AI.Notebooks/GameTheory/GameTheory-15c-CooperativeGames-Csharp.ipynb
cellule 2 id=ad9ac4c5 'e sous-ensemble $S$ par $\x0crac{|S|!(n-|S|-'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15c-CooperativeGames-Csharp.ipynb
cellule 13 id=ec842a36 'ons $(x_1, x_2, x_3) \\in \text{Core}(v)$. '
\b->BS MyIA.AI.Notebooks/GameTheory/GameTheory-15c-CooperativeGames-Csharp.ipynb
cellule 17 id=? 'es par $k$-uplets donne $\x08inom{n-1}{k-1} '
\b->BS MyIA.AI.Notebooks/GameTheory/GameTheory-15c-CooperativeGames-Csharp.ipynb
cellule 21 id=a32be861 'our un joueur $i$** :\n\n$$\x08eta_i(v) = \\fra'
\t->TAB MyIA.AI.Notebooks/GameTheory/GameTheory-15c-CooperativeGames-Csharp.ipynb
cellule 35 id=tranche2-glop-leastcore-md 'epsilon}\\ \\epsilon \\quad \text{s.c.} \\quad'
\f->FF MyIA.AI.Notebooks/GameTheory/GameTheory-15c-CooperativeGames-Csharp.ipynb
cellule 35 id=tranche2-glop-leastcore-md 'i \\ge v(S) + \\epsilon\\ \\ \x0corall S \\subset'
UNREADABLE MyIA.AI.Notebooks/QuantConnect/ESGF-2026/lean-workspace/BTC-ML-Researcher/research.ipynb
cellule -1 id=? Expecting value: line 63 column 5 (char 1753)
\n->NL MyIA.AI.Notebooks/Search/Part1-Foundations/Search-11-Metaheuristics.ipynb
cellule 22 id=section-6-sa 'xt{si } \\Delta E \\leq 0 \\\ne^{-\\Delta E / '
\t->TAB MyIA.AI.Notebooks/SymbolicAI/Planners/02-Classical/Planners-4-Fast-Downward-Csharp.ipynb
cellule 28 id=tranche2-fd-intro ' la\ntranslation domaine $\to$ SAS+ (cellul'
\t->TAB MyIA.AI.Notebooks/SymbolicAI/Planners/02-Classical/Planners-4-Fast-Downward-Csharp.ipynb
cellule 28 id=tranche2-fd-intro '(i) la translation PDDL $\to$ SAS+, (ii) l'
=== 32 occurrence(s) dans 5 notebook(s) ===
La PR #14855 (branche, non mergee) en porte une 33e -- cellule 18e8e42f. Elle est deja tracee
par le preflight adjoint po-2025:CoursIA-2 et n'entre pas dans le perimetre de cette issue.
Detecteur -- trois discriminants, sans lesquels il ment
- cellules
markdown seulement -- en code, un saut de ligne avant else est legitime
(premier jet : des centaines de faux positifs sur \nelse:) ;
- occurrence a l'interieur d'une portee
$...$ / $$...$$ ;
- la queue est le nom de commande PRIVE de sa premiere lettre -- l'echappement avale
l'antislash et la lettre : \\theta laisse heta, pas theta. Chercher theta
rend zero, et ce zero est indiscernable d'une absence de defaut.
| avale |
caractere |
queues attendues |
\\t |
TAB 0x09 |
heta imes ext op au ilde o |
\\n |
LF 0x0A |
eg abla otin ewline e u |
\\r |
CR 0x0D |
ightarrow angle ho floor ight |
\\f |
FF 0x0C |
orall rac rown lat |
\\v |
VT 0x0B |
ee dash arphi ec ert |
\\b |
BS 0x08 |
eta egin igcup ot ar inom |
Exclusion mesuree : un saut de ligne LaTeX (\\\\) suivi d'un vrai retour a la ligne est legitime.
Le detecteur doit porter un controle positif ET un controle negatif (une cellule de code avec
else: ne doit rien rendre). Sans eux, un jeu de motifs faux rend un zero propre : c'est arrive
deux fois pendant cette mesure -- une fois en sur-accusant, une fois en etant completement muet.
Acceptance
- Les 32 occurrences corrigees, la cause d'abord : si un script du depot genere ce markdown,
corriger le script (r"..." ou antislash double) avant de reparer sa sortie.
- Markdown seul -> pas de re-execution (C.2). Si une cellule code change, re-executer.
- Verifier le RENDU, pas seulement la disparition du caractere de controle : la formule doit
s'afficher. QA visuel requis (lane qui voit) -- le detecteur ne prouve que l'absence du symptome.
- Le detecteur atterrit dans
scripts/notebook_tools/ avec ses deux controles, puis advisory en CI.
QuantConnect/ESGF-2026/lean-workspace/BTC-ML-Researcher/research.ipynb est illisible en JSON
(Expecting value: line 63 column 5) -- defaut distinct, a tracer separement, pas a reparer ici.
Sequencement -- garde de collision
Portee de la mesure
Denominateur : 1236 notebooks (MyIA.AI.Notebooks/**/*.ipynb, hors _archive/,
.ipynb_checkpoints/, .lake/, *_output.ipynb). La mesure ne dit rien des READMEs ni des
.md de docs/, ou la meme generation par chaine non-raw est possible : surface non comptee.
Le defaut
Du LaTeX genere depuis une chaine Python non-
rawperd son antislash. Trois exemples, ecrits iciavec l'antislash echappe pour survivre au transport :
\\theta(non-raw)hetaheta\\neg(non-raw)egeg\\frac(non-raw)racracLe JSON du notebook reste valide, le notebook s'ouvre, la CI passe -- et la formule ne se rend pas.
Aucun organe existant ne l'attrape : ce n'est ni une erreur d'execution, ni un
execution_countnul,ni un motif de texte. C'est un caractere de controle a l'interieur d'une portee mathematique.
Mesure (2026-09-06,
main)32 occurrences dans 4 notebooks, plus un notebook illisible. Sortie brute du detecteur
(les antislashes simples dans les extraits sont des caracteres de controle rendus par
repr,les doubles sont de vrais antislashes -- c'est le contraste qui prouve le defaut) :
La PR #14855 (branche, non mergee) en porte une 33e -- cellule
18e8e42f. Elle est deja traceepar le preflight adjoint po-2025:CoursIA-2 et n'entre pas dans le perimetre de cette issue.
Detecteur -- trois discriminants, sans lesquels il ment
markdownseulement -- en code, un saut de ligne avantelseest legitime(premier jet : des centaines de faux positifs sur
\nelse:) ;$...$/$$...$$;l'antislash et la lettre :
\\thetalaisseheta, pastheta. Chercherthetarend zero, et ce zero est indiscernable d'une absence de defaut.
\\thetaimesextopauildeo\\negablaotinewlineeu\\rightarrowanglehoflooright\\forallracrownlat\\veedasharphiecert\\betaeginigcupotarinomExclusion mesuree : un saut de ligne LaTeX (
\\\\) suivi d'un vrai retour a la ligne est legitime.Le detecteur doit porter un controle positif ET un controle negatif (une cellule de code avec
else:ne doit rien rendre). Sans eux, un jeu de motifs faux rend un zero propre : c'est arrivedeux fois pendant cette mesure -- une fois en sur-accusant, une fois en etant completement muet.
Acceptance
corriger le script (
r"..."ou antislash double) avant de reparer sa sortie.s'afficher. QA visuel requis (lane qui voit) -- le detecteur ne prouve que l'absence du symptome.
scripts/notebook_tools/avec ses deux controles, puis advisory en CI.QuantConnect/ESGF-2026/lean-workspace/BTC-ML-Researcher/research.ipynbest illisible en JSON(
Expecting value: line 63 column 5) -- defaut distinct, a tracer separement, pas a reparer ici.Sequencement -- garde de collision
GameTheory-15,GameTheory-15c,Planners-4: aucune PR ouverte, libres.Search-11-Metaheuristics: trois PRs ouvertes -- fix(notebook-python,#14532): restaure la section Applications reelles du TSP (App-13) #14811, fix(search-09c): dédupliquer les ponts — la section 5 paraphrasait la table de la section 7 #14794, et surtout renum(search,#14545): padding zero Part1-Foundations — Search-N vers Search-0N (tranche A) #14790 quirenomme le fichier (padding zero, renum(Search): padding zero du reste des series Search Part1 et Part4 — l'ordre lexicographique est casse #14545). Ne pas toucher Search-11 avant que renum(search,#14545): padding zero Part1-Foundations — Search-N vers Search-0N (tranche A) #14790 soit
tranchee : le correctif s'appliquerait a un chemin qui n'existera plus.
Portee de la mesure
Denominateur : 1236 notebooks (
MyIA.AI.Notebooks/**/*.ipynb, hors_archive/,.ipynb_checkpoints/,.lake/,*_output.ipynb). La mesure ne dit rien des READMEs ni des.mddedocs/, ou la meme generation par chaine non-raw est possible : surface non comptee.