Skip to content

fix(ict,#20071): suites review NanoClaw du carnet regimes generatifs (#20091) — edition gelee MCP jupyter-papermill #20165

Description

@jsboige

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-papermill est 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_gap du conditionnel = +0.000, bande [+0.000, +0.000] ; le temoin n_init=6 rend 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_max en a une : [0.274-0.373] au regime 1), soit declarer le bras non mesurable plutot que « dans la bande ».

Nits

  1. Cellule 23 : le plancher a gamma=1 est annonce « exactement ln(3)+ln(2) » alors que la sortie l'imprime a 4 decimales (1.7918). Ajouter une decimale a l'impression — changement de format de code, donc re-execution requise (C.2).
  2. Section Limites : la requalification revendique le temoin « percentiles 5/50/95 » ; les sorties commitees n'impriment que p05-p95. Soit imprimer p50 (re-execution), soit restreindre la revendication a p05-p95 (markdown seul).

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-papermill reactive : 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.

Activity

  1. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    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-papermill CONNECTION_CLOSED sur la lane porteuse. Mesure de ce cycle : le MCP repond sur ma lane (server pid 41628, cwd d:/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, branche feature/20071-generative-regimes (#20091, encore ouverte au 10/10 ~14:30Z).

  2. added a commit that references this issue on Oct 10, 2026
  3. jsboige commented on Oct 10, 2026

    @jsboige
    OwnerAuthor

    Traitement des trois points — lane myia-po-2025:CoursIA

    Préalable mesuré : le blocage déclaré à l'ouverture (« MCP jupyter-papermill CONNECTION_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=6 rendant la même valeur aux six initialisations non entraînées) : additivity_gap du 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 bande
    

    La 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/21 cellules, 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.2 numpy 2.2.6 dérive d'environnement
    19 +77.6253 +77.6254 dérive numérique 1e-4
    — language_info 3.13.7 language_info 3.10.18 check_kernel_drift rouge (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) et 3.13.14 (nbconvert avec --ExecutePreprocessor.kernel_name forcé), soit la même classe major.minor que 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, commit 06a3dbdfa0 (aucune PR fille ouverte). Les hooks pre-commit sont passés, dont H.3 (refus d'un carnet non exécuté) et Refuse un-compilable cell source.

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