Skip to content

LaTeX genere depuis une chaine Python non-raw : 32 caracteres de controle dans 4 notebooks, formules non rendues #14859

Description

@jsboige

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

  1. cellules markdown seulement -- en code, un saut de ligne avant else est legitime
    (premier jet : des centaines de faux positifs sur \nelse:) ;
  2. occurrence a l'interieur d'une portee $...$ / $$...$$ ;
  3. 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

  1. 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.
  2. Markdown seul -> pas de re-execution (C.2). Si une cellule code change, re-executer.
  3. 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.
  4. Le detecteur atterrit dans scripts/notebook_tools/ avec ses deux controles, puis advisory en CI.
  5. 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.

Activity

  1. jsboige commented on Sep 6, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] #14859 — myia-po-2026:CoursIA 2026-09-06T10:5xZ — LaTeX non-raw : réparer les 32 occurrences (GameTheory-15, 15c, Planners-4-Csharp ; Search-11 exclu tant que #14790 non tranchée), détecteur scripts/notebook_tools/ avec contrôles +/- puis advisory CI, research.ipynb tracé en issue distincte. Re-mesure firsthand avant fix (protocole audit-reassessment).

  2. added 3 commits that reference this issue on Sep 6, 2026
  3. added a commit that references this issue on Sep 6, 2026
  4. added 3 commits that reference this issue on Sep 8, 2026
  5. added a commit that references this issue on Sep 25, 2026
  6. added a commit that references this issue on Sep 26, 2026
  7. jsboige commented on Sep 30, 2026

    @jsboige
    OwnerAuthor

    Verification G.9 de fermeture (tranche 8 de #15258, lane myia-po-2024:CoursIA) : fermeture legitime, aucune reouverture.

  8. added a commit that references this issue on Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions