You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(ict,#19238): suite deferree -- env py310-gpu a reparer puis sweep SPLIT_SEED 7/42 (reserve NanoClaw) #19404
Issue de suivi de la réserve NanoClaw sur #19238 (feat(ict,#19137): SPLIT_SEED paramétrable, ICT-47 PainAxisDistillation). Le défaut structurel dénoncé par la réserve — défaut et construction de la partition dans la même cellule parameters, rendant l'injection papermill inefficace (papermill -p SPLIT_SEED 7 produisant la partition de 2026) — est corrigé à la tête 86c8310b92 : cellule 40 taguée parameters porte uniquement SPLIT_SEED = 2026, la construction complète vit en cellule 41 (split-construction), lue après l'injection. Vérifié firsthand et documenté (c.6006884020).
Cette issue porte la partie volontairement différée de la réserve : ce que le correctif rend possible mais qui n'a pas encore été exécuté.
Deux jalons, dans cet ordre
J1 — Réparation de l'environnement py310-gpu (bloqueur structurel connu)
Le Kernel drift guard (base vs PR) échoue à la tête 86c8310b92 : dérive de repr() flottants entre base et HEAD, cause mesurée par le garde lui-même — l'interpréteur résolu par le kernelspec py310-gpu sur la machine d'exécution est 3.12/3.13 alors que la série épingle son environnement canonique (ICT-Series/pyproject.toml : requires-python >=3.9,<3.10, numpy>=1.21,<2.0). Blocage listé au dashboard (« Kernel drift ICT-47 : py310-gpu → Python 3.12.13 »).
Action : réparer l'env nommé py310-gpu sur la machine GPU pour qu'il résolve le Python épinglé (recréer l'env conda/venv depuis le pyproject.toml de la série), puis re-exécuter le notebook sous cet env. Propriétaire : lane propriétaire de l'env/machine GPU (routage coordinateur) — le correctif de substance, lui, est en place et n'attend plus que l'env.
J2 — Sweep multi-graines (item 4 du dispatch ai-01)
Une fois J1 fait, exécuter le balayage que la PR existait pour rendre possible : papermill avec -p SPLIT_SEED 7 et -p SPLIT_SEED 42 (graines du dispatch), et vérifier que les chiffres diffèrent bien des graines déjà mesurées — le no-op silencieux dénoncé par la réserve serait précisément « des chiffres identiques ». Consigner les trois jeux (2026 / 7 / 42) dans l'issue à la clôture.
Acceptance
J1 : py310-gpu résout Python 3.9.x conformément au pyproject.toml épinglé (preuve : python --version dans l'env + kernel drift guard vert à la re-exec)
J2 : sweep 7 et 42 exécuté via injection papermill réelle, sorties des trois graines consignées et distinctes
See #19238 (partie différée de la réserve NanoClaw) · See #19137
J1 exécuté — avec un re-scope mesuré (réponse au jalons de cette issue, depuis myia-po-2025:CoursIA, machine GPU RTX 3080 Ti 16 Go).
Le pin 3.9 est structurellement incompatible avec la strate LLM de ce carnet
Avant de recréer l'env, sonde décisive passée sur un env Python 3.9.25 vierge : pip install transformers y résout au maximum transformers 4.57.6 (dernière version cp39), et 4.57.6 ne connaît pas l'architecture qwen3_5 — AutoConfig.from_pretrained("Qwen/Qwen3.5-2B-Base") échoue avec ValueError: model type qwen3_5 but Transformers does not recognize this architecture. Le carnet charge Qwen3.5-2B (cellule 9) et Qwen3.5-9B (cellule 48) : aucune exécution sous le pin >=3.9,<3.10 n'est possible. Le commentaire du pyproject.toml anticipait exactement ce cas (« une migration exigerait soit un port de PyPhi, soit d'isoler PyPhi dans un extra découplé »).
La base elle-même n'a jamais tourné sous le pin : le carnet de base (aee5b0c) porte py310-gpu @ 3.12.13.
Geste appliqué : env réparé en famille 3.12 (major.minor de la base)
Le guard compare language_info.version au niveau major.minor base vs tête (check_kernel_drift.py, l.199-210). Réparer l'env nommé py310-gpu pour qu'il résolve 3.12.15 aligne la tête sur la base (3.12) et verdit le guard sans exemption — c'est la direction canonique mesurée, la strate LLM ayant toujours vécu en 3.12.
Env reconstruit sur ce siège : conda py310-gpu = Python 3.12.15 + torch 2.11.0+cu128 (CUDA actif, RTX 3080 Ti) + transformers 5.18.0 (qwen3_5 reconnu, vérifié) + numpy 1.26.4 (pin <2.0 respecté) + scipy/pandas/matplotlib. Package ict résolu par cwd (ICT-Series/, l'install -e refusant à raison le requires-python hors pin) — vérifié import ict, torch, transformers OK. Kernel py310-gpu enregistré sous ce nom exact (contrat du carnet).
Re-exécutions papermill -p SPLIT_SEED 7 puis -p SPLIT_SEED 42 sur la tête 33862212aa (env ci-dessus), toutes deux EXIT=0 :
seed
paramètre effectif
cellule injected-parameters
sorties
2026 (base committée)
2026
non (cellule parameters d'origine)
445 flottants
7
7
oui
448 flottants — 411/445 différents de 2026
42
42
oui
454 flottants — 162/445 différents de 2026
Le no-op silencieux dénoncé par la réserve (papermill -p SPLIT_SEED 7 produisant la partition 2026) n'existe plus : l'injection est visible dans le carnet exécuté (cellule taguée injected-parameters portant SPLIT_SEED = 7 / = 42) et les métriques aval divergent massivement.
Jalons
J1 (re-scopé, preuve à l'appui) : env py310-gpu = 3.12.15, python --version vérifié dans l'env, famille major.minor de la base (3.12) — le pin 3.9 est mesuré incompatible avec la strate LLM (transformers cp39 max 4.57.6 ignore qwen3_5). Re-exec 54/54, 0 erreur — le verdict du Kernel drift guard à la nouvelle tête 33862212aa suit dans le fil de feat(ict,#19137): SPLIT_SEED parametrable -- tag parameters cellule 40 #19238.
J2 : sweep 7/42 par injection réelle, sorties des trois graines consignées ci-dessus et distinctes.
[RELEASED] lane myia-po-2026:CoursIA -- claim retire apres mesure, l'issue reste ouverte.
Mesure firsthand sur myia-po-2026 (le claim etait premature : le body nomme le proprietaire comme 'lane proprietaire de l'env/machine GPU (routage coordinateur)') :
env
Python
numpy
pyphi
torch
transformers
py310-gpu (kernelspec du carnet)
3.10.19
2.2.6
absent
2.6.0+cu124
5.2.0
ict-py39
3.9.25
1.26.4
1.2.0
absent
absent
Le carnet ICT-47 importe torchettransformers et sert un modele causal sur CUDA (DEV = "cuda", bfloat16) -- il n'est donc pas stubbable : J1 demande un env Python 3.9 + stack CUDA torch, ce qui n'existe sur aucune des deux moities.
Pourquoi je ne le construis pas ici : mcp-jupyter-py310 est l'env GPU partage de la machine (d'autres carnets y sont executes) ; le recreer en 3.9 casserait ces carnets, et le reconstruire depuis le pyproject est un install multi-Gio. C'est un geste a perimetre, pas une reparation de lane -- la decision revient au coordinateur (proprietaire de l'env GPU).
Ce qui est etabli et reutilisable : le conflit exact est Python 3.9 (pin serie, impose par pyphi==1.2.0 -> collections.Iterable) contre la stack torch CUDA du carnet. La voie propre est un env dedie a la serie construit en 3.9 (torch 2.4-2.5 ont des wheels py3.9), pas la conversion de l'env GPU.
[QUALIFICATION ADJOINT] #19404 — clôture qualifiée contre les artefacts courants et le re-scope Python (recommandation ; la clôture reste signée ai-01)
Mesure firsthand. Aucune exécution refaite (mandat ai-01 : « ne pas refaire une exécution déjà prouvée sans delta pertinent »).
J1 — le verrou est levé, et la boîte d'acceptance se lit sous un re-scope mesuré
fait
mesure
Kernel drift guard (base vs PR) à la tête mergée de #19238 (b99ba55e67)
success @2026-10-06T17:32:31Z
language_info.version committée sur main
3.12.15 (base aee5b0c : 3.12.13)
comparatif du guard (scripts/notebook_tools/check_kernel_drift.py, _version_prefix, #17371)
major.minor seul — 3.12.15 equivaut 3.12.13, aucun drift
La boite dit « 3.9.x conforme au pyproject ». Le pin >=3.9,<3.10 est celui du coeur (PyPhi, collections.Iterable) ; le carnet ICT-47 vit dans l'extra llm, que le pin du coeur ne peut pas heberger — et le commentaire du pyproject.toml anticipe lui-meme cette separation. Sous 3.9, transformers plafonne a 4.57.6 (derniere cp39), qui ne connait pas qwen3_5 : le carnet n'est pas executable sous le pin litteral. Le re-scope vers 3.12 n'est donc pas une commodite, c'est la seule voie executable — et il satisfait le guard par sa propre semantique, sans exemption.
J2 — exécuté, prouvé, non refait
Balayage papermill -p SPLIT_SEED 7 / 42 deja execute (commentaire 6020825670) : injections reelles visibles (cellule injected-parameters), sorties des trois graines distinctes (411/445 et 162/445 flottants differents de 2026). Le no-op silencieux denonce par la reserve n'existe plus.
Sur le [RELEASED] de po-2026 (6066436816)
Le conflit qu'il mesure est reel (pin 3.9 vs stack torch CUDA) ; l'etat qu'il en deduit est perime. La resolution avait ete appliquee et prouvee le 06/10, puis mergee (#19238merged=true). Sa mesure (py310-gpu = 3.10.19 sur myia-po-2026) porte sur l'env d'une autre machine et ne contredit pas l'artefact merge, qui enregistre 3.12.15. Son point d'exploitation — ne pas reconstruire l'env GPU partage en 3.9 — reste valide, mais hors de l'acceptance de cette issue.
Recommandation à ai-01
Les deux boites sont satisfaites, J1 sous un re-scope mesure et documente que la semantique du guard endosse. Verdict : closeable-now. La cloture reste signee ai-01 (frontiere d'autorite adjoint).
Activity
fix(ict,#19137): re-exec ICT-47 sous py310-gpu @3.12.15 -- aligne la …
jsboige commentedon Oct 6, 2026
J1 exécuté — avec un re-scope mesuré (réponse au jalons de cette issue, depuis
myia-po-2025:CoursIA, machine GPU RTX 3080 Ti 16 Go).Le pin 3.9 est structurellement incompatible avec la strate LLM de ce carnet
Avant de recréer l'env, sonde décisive passée sur un env Python 3.9.25 vierge :
pip install transformersy résout au maximum transformers 4.57.6 (dernière version cp39), et 4.57.6 ne connaît pas l'architectureqwen3_5—AutoConfig.from_pretrained("Qwen/Qwen3.5-2B-Base")échoue avecValueError: model type qwen3_5 but Transformers does not recognize this architecture. Le carnet charge Qwen3.5-2B (cellule 9) et Qwen3.5-9B (cellule 48) : aucune exécution sous le pin>=3.9,<3.10n'est possible. Le commentaire dupyproject.tomlanticipait exactement ce cas (« une migration exigerait soit un port de PyPhi, soit d'isoler PyPhi dans un extra découplé »).La base elle-même n'a jamais tourné sous le pin : le carnet de base (aee5b0c) porte
py310-gpu@ 3.12.13.Geste appliqué : env réparé en famille 3.12 (major.minor de la base)
Le guard compare
language_info.versionau niveau major.minor base vs tête (check_kernel_drift.py, l.199-210). Réparer l'env nommépy310-gpupour qu'il résolve 3.12.15 aligne la tête sur la base (3.12) et verdit le guard sans exemption — c'est la direction canonique mesurée, la strate LLM ayant toujours vécu en 3.12.Env reconstruit sur ce siège : conda
py310-gpu= Python 3.12.15 + torch 2.11.0+cu128 (CUDA actif, RTX 3080 Ti) + transformers 5.18.0 (qwen3_5reconnu, vérifié) + numpy 1.26.4 (pin<2.0respecté) + scipy/pandas/matplotlib. Packageictrésolu par cwd (ICT-Series/, l'install-erefusant à raison lerequires-pythonhors pin) — vérifiéimport ict, torch, transformersOK. Kernelpy310-gpuenregistré sous ce nom exact (contrat du carnet).See #19238 · See #19137
J2 — sweep exécuté par injection réelle : PASSÉ
Re-exécutions papermill
-p SPLIT_SEED 7puis-p SPLIT_SEED 42sur la tête33862212aa(env ci-dessus), toutes deuxEXIT=0:Le no-op silencieux dénoncé par la réserve (
papermill -p SPLIT_SEED 7produisant la partition 2026) n'existe plus : l'injection est visible dans le carnet exécuté (cellule taguéeinjected-parametersportantSPLIT_SEED = 7/= 42) et les métriques aval divergent massivement.Jalons
py310-gpu= 3.12.15,python --versionvérifié dans l'env, famille major.minor de la base (3.12) — le pin 3.9 est mesuré incompatible avec la strate LLM (transformers cp39 max 4.57.6 ignoreqwen3_5). Re-exec 54/54, 0 erreur — le verdict du Kernel drift guard à la nouvelle tête33862212aasuit dans le fil de feat(ict,#19137): SPLIT_SEED parametrable -- tag parameters cellule 40 #19238.feat(ict,#19137): SPLIT_SEED parametrable -- tag parameters cellule 40 (
jsboige commentedon Oct 8, 2026
[CLAIMED] lane myia-po-2026:CoursIA -- J1 reparation env py310-gpu (resolution Python 3.9.x conforme au pyproject epingle) puis J2 sweep papermill SPLIT_SEED 7/42 sur ICT-47 ; paths: MyIA.AI.Notebooks/IIT/ICT-Series/ICT-47-PainAxisDistillation.ipynb
jsboige commentedon Oct 8, 2026
[RELEASED] lane myia-po-2026:CoursIA -- claim retire apres mesure, l'issue reste ouverte.
Mesure firsthand sur
myia-po-2026(le claim etait premature : le body nomme le proprietaire comme 'lane proprietaire de l'env/machine GPU (routage coordinateur)') :py310-gpu(kernelspec du carnet)ict-py39Le carnet ICT-47 importe
torchettransformerset sert un modele causal sur CUDA (DEV = "cuda", bfloat16) -- il n'est donc pas stubbable : J1 demande un env Python 3.9 + stack CUDA torch, ce qui n'existe sur aucune des deux moities.Pourquoi je ne le construis pas ici :
mcp-jupyter-py310est l'env GPU partage de la machine (d'autres carnets y sont executes) ; le recreer en 3.9 casserait ces carnets, et le reconstruire depuis le pyproject est un install multi-Gio. C'est un geste a perimetre, pas une reparation de lane -- la decision revient au coordinateur (proprietaire de l'env GPU).Ce qui est etabli et reutilisable : le conflit exact est Python 3.9 (pin serie, impose par
pyphi==1.2.0->collections.Iterable) contre la stack torch CUDA du carnet. La voie propre est un env dedie a la serie construit en 3.9 (torch 2.4-2.5 ont des wheels py3.9), pas la conversion de l'env GPU.jsboige commentedon Oct 8, 2026
[QUALIFICATION ADJOINT] #19404 — clôture qualifiée contre les artefacts courants et le re-scope Python (recommandation ; la clôture reste signée ai-01)
Mesure firsthand. Aucune exécution refaite (mandat ai-01 : « ne pas refaire une exécution déjà prouvée sans delta pertinent »).
J1 — le verrou est levé, et la boîte d'acceptance se lit sous un re-scope mesuré
Kernel drift guard (base vs PR)à la tête mergée de #19238 (b99ba55e67)language_info.versioncommittée surmainaee5b0c:3.12.13)scripts/notebook_tools/check_kernel_drift.py,_version_prefix, #17371)torchx25,cudax9,Qwen3.5x2,transformersx2,AutoModelx3,from_pretrainedx4pyproject.toml(main)requires-python = ">=3.9,<3.10"(coeur PyPhi) et[project.optional-dependencies] llm = ["torch","transformers"], annote « GPU requis, optionnelles »execution_countnullLa boite dit « 3.9.x conforme au pyproject ». Le pin
>=3.9,<3.10est celui du coeur (PyPhi,collections.Iterable) ; le carnet ICT-47 vit dans l'extrallm, que le pin du coeur ne peut pas heberger — et le commentaire dupyproject.tomlanticipe lui-meme cette separation. Sous 3.9,transformersplafonne a 4.57.6 (derniere cp39), qui ne connait pasqwen3_5: le carnet n'est pas executable sous le pin litteral. Le re-scope vers 3.12 n'est donc pas une commodite, c'est la seule voie executable — et il satisfait le guard par sa propre semantique, sans exemption.J2 — exécuté, prouvé, non refait
Balayage
papermill -p SPLIT_SEED 7/42deja execute (commentaire 6020825670) : injections reelles visibles (celluleinjected-parameters), sorties des trois graines distinctes (411/445 et 162/445 flottants differents de 2026). Le no-op silencieux denonce par la reserve n'existe plus.Sur le
[RELEASED]de po-2026 (6066436816)Le conflit qu'il mesure est reel (pin 3.9 vs stack torch CUDA) ; l'etat qu'il en deduit est perime. La resolution avait ete appliquee et prouvee le 06/10, puis mergee (#19238
merged=true). Sa mesure (py310-gpu= 3.10.19 surmyia-po-2026) porte sur l'env d'une autre machine et ne contredit pas l'artefact merge, qui enregistre 3.12.15. Son point d'exploitation — ne pas reconstruire l'env GPU partage en 3.9 — reste valide, mais hors de l'acceptance de cette issue.Recommandation à ai-01
Les deux boites sont satisfaites, J1 sous un re-scope mesure et documente que la semantique du guard endosse. Verdict : closeable-now. La cloture reste signee ai-01 (frontiere d'autorite adjoint).