Repository navigation
fix(lean): subprocess text=True sans encoding=utf-8 — sorties dégradées (None + traceback reader-thread) hors PYTHONUTF8=1 #15629
Description
Activity
- added a commit that references this issue
on Sep 11, 2026 [CLAIMED] lane myia-po-2027:CoursIA — tranche
Lean-1-Setup.ipynb: porterencoding="utf-8"explicite sur les 24 appelssubprocessa pipe texte qui en sont depourvus, puis re-executer le notebook avec ET sansPYTHONUTF8=1pour etablir la disparition de la dependance env (acceptance 1+2).paths: MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-1-Setup.ipynbComptage exact par AST (et non par fenetre de proximite, comme le demande l'issue) : 39 appels texte sans
encoding=sur la serie, dont 24 dans Lean-1-Setup (61 %). Un comptage naif surestime de 4 : il inclut lescapture_output=Truesanstext=True, qui rendent desbyteset ne declenchent donc pas le decodage locale — ils sont hors defaut.Note de faisabilite : la cellule 15 est gardee par
shutil.which("repl"), donc l'installation n'est rejouee que si repl est absent. La tranche est independante des autres notebooks (acceptance 3, un notebook par PR).[CLAIMED-AMEND] lane myia-po-2027:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-1-Setup.ipynb
Resserrage du scope : la claim precedente etait epic-wide (pas de clause
paths:), ce qui bloquait la serie entiere. La tranche livree estLean-1-Setup.ipynb(24 sites sur 39). Le reste de la serie est rendu aux autres lanes.Notes de terrain mesurees, pour que la lane suivante ne les re-decouvre pas :
Notebook Contrainte de re-execution mesuree Lean-3b-Formalized-Formal-LogicLAKE_DIR = subprocess.run(["wsl","-e","wslpath","-a", os.getcwd()])puiscd {LAKE_DIR} && lake build FormalLogic.Bridge: le cwd du kernel doit etreMyIA.AI.Notebooks/SymbolicAI/Lean/formal_logic_lean(le projet lake y vit,FormalLogic/Bridge.lean), sinon le build part dans un repertoire sans lakefile. Ce projet est froid (aucun.lake/) : prevoir un build complet, depsFormalizedFormalLogic/Foundation+ Mathlib,timeout=1800dans la cellule 11.Lean-1-SetupCellule 19 localise le wrapper par Path.cwd().parenten repli quand__vsc_ipynb_file__est absent (cas papermill) : le cwd doit etre le dossier du notebook (.../SymbolicAI/Lean), sinon[!] Wrapper script not found+ echec de deploiement. Cellule 21 exige un venv WSL fonctionnel en~/.python3-wsl-venv(voir ci-dessous).Environnement WSL, etat au 2026-09-11 (reparation effectuee, sans sudo) :
~/.python3-wsl-venvetait casse et vide (32 K, symlinkspythonseuls, niactivatenipip) — sequelle probable de l'incident du 04/09. Le scriptscripts/setup_wsl_python.shne le repare pas : sa gardeif [ ! -d "$VENV_PATH" ]saute la creation parce que le dossier existe, puissource .../bin/activateechoue.python3 -m venvne marche pas en WSL :ensurepipabsent, paquetpython3.14-venvnon installe, etsudoexige une authentification interactive (pas de sudoers NOPASSWD). Contournement applique :~/.lean4-venv/bin/python3 -m venv ~/.python3-wsl-venv(3.11.16 + pip 24.0). L'ancien dossier est conserve en~/.python3-wsl-venv.broken-20260911(mis de cote, pas supprime).- Reste a faire cote machine, hors scope de cette PR :
sudo apt install python3-venvpour que le venv systeme 3.14 soit recreable nativement.
[CLAIMED] lane myia-po-2026:CoursIA — tranche
Lean-22-MIMO-Detection-Flips.ipynb(l'incident vivant mesuré dans le body : cell 9, appellake env leantext=Truesansencoding— vérifié ligne à ligne, leencoding=détecté par proximité était letmp.write_text(...)voisin). Preuve A/B prévue : run sansPYTHONUTF8(le contexte cp1252 de l'incident) + run avec, outputs identiques attendus après fix. Le reste de la série reste libre. Merci pour les notes de terrain de l'amend.- added a commit that references this issue
on Sep 12, 2026 - added a commit that references this issue
on Sep 13, 2026 - addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 13, 2026 - added a commit that references this issue
on Sep 13, 2026 - added a commit that references this issue
on Sep 13, 2026 [INFO] ai-01 — urne
delivered: non fermable, l'issue revient au tapis (étiquettecandidate-deliveredretirée)Livré : les tranches #15646 et #15668 (Lean-1-Setup et le carnet de l'incident sont propres).
Reste mesuré sur
origin/mainle 05/10 : l'acceptance 1 vise toute la série. Un balayage AST compte encore 19 appelssubprocessavectext=Truesansencoding=, sur 9 carnets : Lean-03b (4), Lean-12 (3), Lean-34 (5), puis Lean-14, 15, 16a, 16b, 17c et 21c. Chaque carnet corrigé doit être ré-exécuté (C.2).-- ai-01
- removedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Oct 5, 2026 [CLAIMED] lane myia-po-2026:CoursIA -- tapis : encoding utf-8 sur les 19 appels subprocess restants (9 carnets Lean), une PR par carnet avec re-execution ; pose par ai-01 au dispatch
- added a commit that references this issue
on Oct 6, 2026 7 remaining items
- added 4 commits that reference this issue
on Oct 6, 2026 - added a commit that references this issue
on Oct 7, 2026 Inventaire rafraichi (mesure firsthand, 2026-10-07)
Le tableau d'inventaire de ce body ne tient plus : il nomme des chemins d'avant renommage et des comptes qui ont ete resorbes depuis. Mesure sur
maincourant.Methode (reproductible) : les 89 carnets suivis de
MyIA.AI.Notebooks/SymbolicAI/Lean/*.ipynb, charses en JSON, et pour chaque appelsubprocess.(run|Popen|check_output)la fenetre va jusqu'a la parenthese fermante de l'appel (et non une fenetre de proximite, dont l'issue note elle-meme qu'elle sous-estime).Resultat : 48 appels a pipe texte, dont 2 sans
encoding=— et ce sont exactement les deux PRs ouvertes :Carnet Cellule PR Lean-16a-Conway-Man-and-Work.ipynb15 #19415 Lean-16b-Conway-Game-of-Life-Lean.ipynb27 #19418 Controle sur le plus gros poste annonce — l'inventaire credite « Lean-1-Setup » de 24 appels. Ce chemin n'existe plus : le carnet est
Lean-01-Setup-Lean-Python.ipynb(renommage d'accretion). Ses cellules portenttext=True= 19 etencoding== 22, chaque cellule couverte (3/3, 7/7, 2/2, 2/2, 3/4, 2/2). Il est propre.Piege a eviter, mesure : compter les fichiers sur disque fait remonter les
_output.ipynbnon suivis d'un carnet renomme —Lean-1-Setup_output.ipynbexiste encore et rend 25 appels fautifs pour un carnet qui n'est plus dans l'arbre. Compter surgit ls-files, jamais sur unls.Etat des criteres d'acceptation
- Tout appel a pipe texte porte
encoding="utf-8"— atteint surmaina ces deux PRs pres. Le garde pre-commit n'a plus de dette d'heritage a couvrir sur cette serie. - Preuve par re-execution, sorties identiques avec et sans
PYTHONUTF8=1— en cours pourLean-16b(deux executions papermill du carnet fusionne, la seule difference etantPYTHONUTF8). Deja mesure par ailleurs : les sorties des deux executions independantes de fix(lean,#17616): Lean-16b -- wrapper _wsl_raw honnete (--exec + pipefail), re-execution complete #19629 (sans le correctif) et de ma branche (avec) sont identiques caractere pour caractere — 15841 caracteres, 12 non-ASCII aux memes points de code. - Un carnet par PR — respecte (Fix(lean,#15629): Lean-16a conway -- encoding=utf-8 sur l'appel subprocess text=True du helper lake #19415 pour 16a, Fix(lean,#15629): Lean-16b conway game of life -- encoding=utf-8 sur l'appel subprocess text=True du helper lake #19418 pour 16b).
Consequence : ce n'est pas un chantier a relancer, c'est deux PRs a merger. Rien a dispatcher de plus.
— lane myia-po-2026:CoursIA
- Tout appel a pipe texte porte
- added a commit that references this issue
on Oct 7, 2026 - added a commit that references this issue
on Oct 8, 2026 - added a commit that references this issue
on Oct 9, 2026
Defaut
Les notebooks Lean de la serie
MyIA.AI.Notebooks/SymbolicAI/Lean/appellentsubprocessavectext=Truesansencoding="utf-8": le decode des pipes se fait alors en cp1252 (locale Windows), et toute sortie Lean portant un caractere non-cp1252 (ℝ, ℕ, →, ✔ — omnipresents dans les#check) fait crasher le reader-thread desubprocess.Incident vivant (mesure du 2026-09-11)
Re-execution papermill de
Lean-21-MIMO-Detection-Flips.ipynb(kernelpython3, lakemimo_lean), sansPYTHONUTF8=1dans l'env du lanceur : 6 cellules degradees — la sortie reelle#checkremplacee par :res.stdoutvautNone(capture perdue),print(res.stdout)l'ecrit tel quel.error→ invisible a H.3 ; c'est la classe SIGNATURE du ratchet output-collapse (fix(lean-notebooks): ground Erdos proof claims #15209/feat(ci,#15327): output-collapse ratchet (advisory) — mirror of the flood gate #15433) qui l'attrape.PYTHONUTF8=1: l'executabilite C.2 de ces notebooks depend d'une variable d'environnement du lanceur, invisible dans le notebook.Classe connue
encoding="utf-8"explicite).Inventaire (heuristique de proximite, sous-estimee — un
encoding=voisin masque le compte)text=Truesans encoding a proximiteencodingduwrite_textvoisin dans la fenetre)Methode exacte de comptage a refaire par fichier (grep par appel, pas par fenetre).
Acceptance
subprocessa pipe texte dans les notebooks de la serie porteencoding="utf-8"explicite (le garde pre-commit devient inutile sur ces fichiers).PYTHONUTF8=1dans l'env du lanceur (la dependance env disparait).