Repository navigation
fix(ict,#20071): suites review NanoClaw du carnet regimes generatifs (#20091) — edition gelee MCP jupyter-papermill #20165
Description
Activity
Grain: DEEP/notebook-python — lane myia-po-2025:CoursIA — prev: LIGHT/docs #20169
[CLAIMED] lane myia-po-2025:CoursIA -- reprise du suivi #20165 (reserve cellule 25 de #20091 + 2 nits).
Le blocage declare a l'ouverture est le MCP
jupyter-papermillCONNECTION_CLOSED sur la lane porteuse. Mesure de ce cycle : le MCP repond sur ma lane (server pid 41628, cwdd:/dev/CoursIA, nbformat 5.10.4, papermill 2.7.0) -- le grain est donc reprenable ici.Cible :
MyIA.AI.Notebooks/IIT/ICT-Series/ICT-36-FLens-FactoredGeometry-Python.ipynb, branchefeature/20071-generative-regimes(#20091, encore ouverte au 10/10 ~14:30Z).- added a commit that references this issue
on Oct 10, 2026 Traitement des trois points — lane
myia-po-2025:CoursIAPréalable mesuré : le blocage déclaré à l'ouverture (« MCP
jupyter-papermillCONNECTION_CLOSED ») ne tient pas sur cette lane — le MCP répond (nbformat 5.10.4, papermill 2.7.0). Le grain était donc actionnable ici sans rien débloquer.1. Réserve (cellule 25) — traitée
La demi-ligne demandée est écrite, et le critère est basculé sur la seconde branche que la review proposait : le bras géométrique est déclaré non mesurable plutôt que « dans la bande ».
- la bande témoin est déclarée de largeur nulle (dispersion inter-initialisations = zéro,
n_init=6rendant la même valeur aux six initialisations non entraînées) :additivity_gapdu conditionnel = +0.000 sur [+0.000, +0.000], contrôle indépendant = -2.000 sur [-2.000, -2.000] ; - il est écrit explicitement qu'une bande de variance nulle ne discrimine aucun modèle et que « y tomber » est une tautologie, pas une mesure — le carnet ne revendique donc plus ce bras comme rendu ;
- l'axe du même banc qui porte une dispersion est nommé :
overlap_coef_max, mesuré à 0.164 hors de sa bande [0.274, 0.373] au régime 1 àgamma = 0(valeur relue sur la sortie re-exécutée, pas reprise de la prose).
2. Nit 1 (plancher à 4 décimales) — traité
Format porté à 5 décimales dans la cellule 22 (code), puis re-exécution (C.2). La sortie rend maintenant l'identité lisible :
gamma=1.00 plancher=1.79176 val=1.7924 gate=ECHEC lecture NON rendue (pre-enregistre)ln(3)+ln(2) = 1.79176— la revendication de la prose est désormais vérifiable sur la sortie, ce qui était exactement l'objet du nit. La liste entre parenthèses de la cellule 23 est recalée sur les valeurs fraîches (1.54484 -> 1.75613 -> 1.78900 -> 1.79173 -> 1.79176).3. Nit 2 (revendication « percentiles 5/50/95 ») — faux positif, et je le situe
Le référent grammatical de « percentiles 5/50/95 » est la boucle fermée, pas la section des régimes. La sortie committée de la cellule 19 imprime bien les trois percentiles avec valeurs :
metrique entraine temoin p05 p50 p95 lecture probe_r2_a +0.8469 +0.8250 +0.8273 +0.8442 hors bande overlap_coef_max +0.2171 +0.2721 +0.3500 +0.3850 hors bandeLa proposition qui suit ne dit pas que la section des régimes imprime le triplet : elle dit qu'elle rejoue ce témoin — ce qui est vrai — et cette section n'imprime effectivement que la bande
[bande p05-p95]. Appliquer la remédiation proposée (restreindre la revendication à p05-p95) rendrait le carnet faux, puisque le triplet est bien imprimé par la boucle fermée.Le nit reste actionnable sur un point : la phrase était ambiguë (un relecteur compétent l'a lue de travers). Je lève l'ambiguïté, pas la revendication — la cellule 42 nomme désormais quelle surface imprime quoi (triplet pour la boucle fermée, bande seule pour la section des régimes).
Provenance des sorties (à lire avant de juger le diff)
Les sorties proviennent d'un run papermill vérifié (
21/21cellules, 0 erreur) et sont appliquées chirurgicalement : seules la source des cellules 22/23/25, la sortie de la cellule 22 et la cellule 42 (markdown) changent. Diff : 12 insertions / 9 suppressions, zéro churn de métadonnées papermill (la sortie brute en produisait 247/237).Ce n'est pas un raccourci : committer la sortie brute aurait introduit trois dérives non voulues, mesurées cellule par cellule contre la base :
Cellule Base Sortie brute Nature 5 numpy 2.4.2numpy 2.2.6dérive d'environnement 19 +77.6253+77.6254dérive numérique 1e-4 — language_info 3.13.7language_info 3.10.18check_kernel_driftrouge (3.13 -> 3.10, hors table de transitions)Les sorties des cellules 5, 19 et 33 restent donc celles de la base.
La valeur injectée de la cellule 22 est en revanche robuste à l'environnement : elle a été reproduite à l'identique par deux interpréteurs indépendants —
3.10.18(papermill via le MCP) et3.13.14(nbconvert avec--ExecutePreprocessor.kernel_nameforcé), soit la même classemajor.minorque celle déclarée par le carnet. Les cinq chaînes à 5 décimales sont identiques au caractère près dans les deux passes.Condition de reprise
La branche de #20091 était encore ouverte à la tête
9eb8a1c9e1: le travail est poussé sur cette branche, commit06a3dbdfa0(aucune PR fille ouverte). Les hooks pre-commit sont passés, dontH.3(refus d'un carnet non exécuté) etRefuse un-compilable cell source.- la bande témoin est déclarée de largeur nulle (dispersion inter-initialisations = zéro,
Part of #20071
Issue de suivi ouverte AVANT le merge de #20091 (voie 3 du protocole B.0) : le correctif demande par la review NanoClaw est un travail d'edition de carnet, et l'edition de carnets est gelée sur la lane tant que le MCP
jupyter-papermillest CONNECTION_CLOSED (regle harnais : pas d'edition manuelle du JSON du notebook, pas de fallback NotebookEdit). Le blocage MCP est inscrit au registre des questions user (entree MCP-DENY).Reserve (tenant le merge) — cellule 25
Le critere 2 est juge sur une bande temoin de largeur NULLE :
additivity_gapdu conditionnel = +0.000, bande [+0.000, +0.000] ; le temoinn_init=6rend la meme valeur aux six initialisations non entrainees (controle : [-2.000, -2.000]). Une distribution temoin de variance nulle ne discrimine aucun modele : « dans la bande » y est une tautologie, pas une mesure. Demande de la review : une demi-ligne declarant la largeur nulle (dispersion inter-graines = 0 sur ce banc), et soit basculer le critere 2 sur une metrique a dispersion (overlap_coef_maxen a une : [0.274-0.373] au regime 1), soit declarer le bras non mesurable plutot que « dans la bande ».Nits
Le troisieme point de la review (comptage de
factor_geometry_trained.py, hors diff, herite de main par #20072) ne demande aucune action.Condition de reprise
MCP
jupyter-papermillreactive : editer les cellules (markdown pour la demi-ligne et la revendication p50 ; code pour la decimale), re-executer les cellules modifiees (C.2), pousser sur la branche de #20091 si elle est encore ouverte, sinon en PR fille citant cette issue.