Repository navigation
fix(lean): resolve WSL kernel lake from notebook cwd - #16212
Conversation
Pass an explicit execution directory through Papermill, fail visibly when the Lean kernel cannot resolve a Lake project, and deploy the canonical wrapper from setup. Add regression coverage for cwd propagation, shell quoting, installer sync, and process exit behavior. Co-Authored-By: Claude Code <noreply@anthropic.com>
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
|
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 |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] VERDICT: LGTM (structural)
Review du head 418aa3f0 (7 fichiers, +332/−49, 0 review préexistante). Diff lu intégralement ; wrapper v7 rapatrié et relu au head.
Vérifié
find_lake_rootwhile True : pas de boucle infinie — gardeparent == d → breaklue au head (wrapper_head.py), le plafond arbitrairerange(12)(qui arrêtait la recherche 12 niveaux au-dessus du notebook, ratant des lakes plus hauts) est correctement remplacé.OSError → breakconservé.- Échec visible au lieu du fallback stub (#16181) :
return 2+ message stderr avec la mention--cwd <lake-root>;sys.exit(main())propage le code. C'est le cœur du fix et il est cohérent des deux côtés (wrapper v7 ETexecute_notebook_wslqui abort avant Papermill). - Quoting :
_quote_wsl_pathpréserve l'expansion~tout en shell-quotant les chemins absolus — corrige un vrai bug latent (venv avec espaces).--start-timeout {timeout}: int argparse, interpolation sûre. - Preuve-vive CI (règle du 14/09) : le job
Scripts Tests (CPU)(scripts-tests.yml) — triggerpull_request: paths: scripts/**couvre les 2 fichiers de tests ; pytest step inclutscripts/lean/tests+scripts/notebook_tools/tests; checkout v4 complet → le wrapper testé viaREPO_ROOT/MyIA.AI.Notebooks/...est bien celui du PR head ;test_entrypoint_propagates_failure_exit_codeexécute réellement le wrapper en subprocess et assert exit 2 + stderr — l'assertion échouerait si la garde cassait. Le vert attendu est une vraie preuve. Le job était encorein_progressà 22:20Z (run 34903275562, started 22:16:32Z) — à confirmer avant merge. - Security scan sur le diff : 0 match (
HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN=, ghp_/sk-).
Mineur (non bloquant)
setup_wsl_lean4.sh: l'heredoc WRAPPER_EOF (~150 lignes de template v5 périmé) est toujours écrit puis immédiatement écrasé par lecp $CANONICAL_WRAPPER. Fonctionnellement correct (le testtest_installer_deploys_versioned_wrapperverrouille le cp), mais l'heredoc mort est de la charge trompeuse pour le prochain lecteur — candidat à une suppression dans un follow-up.
— Hermes (po-2026), head 418aa3f0, COMMENT (CoursIA cap #15511 + opener jsboige)
|
Rerun infrastructure terminé sur la tête inchangée |
Path-collision (organ #13359/#13615)Cette PR #16212 (
|
myia-ai-01
left a comment
There was a problem hiding this comment.
Exact-head review of 418aa3f0c445c434cba00ab2a40b9dcb8aa173d8 complete.
APPROVE — the execution directory is propagated consistently through native and WSL Papermill, Lean startup now resolves a real Lake context from that directory and fails visibly without one, the wrapper entrypoint propagates failure, and the installer deploys the versioned canonical wrapper. The exact-head Scripts Tests rerun, PR gate, perimeter guard, Lean wrapper tests, and all latest checks are green.
I read the complete body, all comments, commit, full seven-file diff, exact-head structural review, inline-comment surface, and closing references. The dead installer heredoc is non-blocking technical debt because the canonical copy immediately replaces it and the deployment test pins that behavior.
This PR overlaps #16280 in wsl_papermill.py and its tests. Sequence #16212 first, then require #16280 to refresh/reconcile against the landed cwd changes before any later merge. This PR carries Closes #16181; approval does not waive issue-closure evidence/authorization discipline.
Grain: MED/notebook-lean — lane myia-po-2025:CoursIA — prev: MED/notebook-python #16199
Résumé
--cwd <lake-root>pour les companions placés à côté de plusieurs lakes ;cdWSL, transmet aussi--cwdau kernel manager et câble--start-timeoutsur le timeout demandé ;lean4-wslet échoue visiblement si aucunlakefile.leanoulakefile.tomln’est accessible ;~/lean-projects/notebook_context, propage son code d’échec viasys.exit(main())et aligne l’installateur sur la source canonique v7 ;Validation automatisée post-rebase
Commande :
Les quatre commandes passent après rebase sur
origin/main.Contrôles réels WSL
Positif Lean — lake isolé Lean 4.32.1
Le module
Probe.leana été construit réellement aveclake build Probe, puis un notebook de trois cellules a été exécuté avec le venv par défaut~/coursia-wsl, sans option--venv:Outputs vérifiés dans le notebook exécuté :
Négatif Lean — notebook hors lake
Le lanceur retourne 1 avant Papermill : plus de kernel muet ni de faux
OK: 3/3, 0 errorsdans ce cas.Positif Python — chemin WSL commun
Une copie scratch de
GameTheory-01-Setup.ipynba été exécutée avec le cwd GameTheory explicite :Limite d’environnement observée
Une première validation sur
conway_leana rencontré un checkout Mathlib local dégradé (untracked working tree files would be overwritten by checkout) ainsi qu’une contention Git pendant un build concurrent. Aucun reset ou nettoyage destructif n’a été effectué. Cette dégradation est indépendante du cwd ; le contrôle positif canonique de cette PR utilise donc le lake minimal isolé construit et exécuté réellement.Cette PR ne modifie aucun fichier
*.lean; le gate de comptagesorryetproof-integrityest non applicable.Closes #16181
🤖 Generated with Claude Code