Repository navigation
Fix(dswa,#23802): Lab14 kernel 3.12.13->3.13.15 — modele preserve, diagnostic (c)+(e) - #23848
Conversation
…- modele preserve, md19/md22 re-derivees Re-execution papermill contre le vrai provider de la run commitee (openai/gpt-5.6-sol, temperature=0.2 source + LITELLM_DROP_PARAMS). Diagnostic C.4 causes (c)+(e) : refus upstream du parametre de temperature mesure (run2), instabilite de la segmentation mesuree par run de controle (45 lignes divergentes). Sorties : 5 blocs francais, prioritaire Entrainement et evaluation (1.00), code raffini LabelEncoder/StratifiedKFold/cross_val_predict. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Deep review — tranche 7 DSWA, Lab14 kernel 3.12.13→3.13.15 (FULL READ du carnet, base↔head par blobs vérifiés 47 692/48 498 octets).
Vérifié au head 2e7afe2d :
- Structure : 32 cellules base↔head, 0 source code modifiée, exactement 2 md retouchées (idx 19, 22), 3 sorties divergentes (idx 18/21/25) — conforme au tableau du body au détail près (voir 🟡).
- Ancrage des prose re-dérivées : chaque numeral de md19 (5 blocs ; 1.00 / 0.90 / 0.90 / 0.85 / 0.30 ; bloc prioritaire) et de md22 (importance 1.00,
random_state=42) est présent dans les outputs committés — vérification programmatique, 0 non-ancré. Les libellés FR de md19 (« Entraînement et évaluation », etc.) et le code raffiné de md22 (LabelEncoder,StratifiedKFold(shuffle=True, random_state=42),cross_val_predict, « sans fuite de données ») correspondent exactement aux sorties de la cellule 18/21. - Le récit de stochasticité de md19 est vrai dans l'arbre : l'output base de la cellule 18 porte bien « Training & Evaluation » en tête (4 blocs, EN) — les deux autres exécutions citées (run5) ne sont pas falsifiables depuis le siège, mais le mécanisme (température non-seedée,
temperature=0.2/0.3bien présents dans la source aux cellules 8/10/12, sources inchangées base↔head) est cohérent : la base demandait déjà ces températures, la cause (c) est bien un refus upstream récent, pas un artefact de la PR. - Hygiène :
metadata.papermillen chemins relatifs (inputLab14-Ablation-Refinement.ipynb, outputc365_lab14_out4.ipynb) — 0 MACHINE_PATH, contrairement aux sœurs #23958/#23940. Chronologie crédible : run 21:45:10→21:46:00Z, PR ouverte 21:53:21Z. 0 erreur dans les outputs, 13/13execution_countnon nuls. Scan sécu du blob propre (0TOKEN=, 0sk-). - CI : 29 check-runs au head, tous success/neutral, dont PR gate, Live-read freshness, Split-reading ratchet, No markdown content loss, twin-parity. L'advisory
⚠️ « numeric value is not anchored » du bot est contredit par la vérification ci-dessus (advisory, non bloquant — signal générique de la famille, pas un défaut de ce carnet).
🟡 Mineurs (étiquetage du body, sans impact carnet) :
- Le tableau du body étiquette la 3ᵉ sortie divergente « code#10 rapport final » — c'est la cellule idx 25, l'exercice TODO « votre propre pipeline » (les exercices idx 27/29 sont restés déterministes : « Exercice a completer », inchangés base↔head — donc seul l'exercice 1 a été réellement exécuté avec LLM). L'étiquette « rapport final » est trompeuse ; le contenu divergent est réel.
- La divergence idx 25 est base 5 fragments stream → head 4 : fusion de fragments stdout (l'un des fragments base était vide
\n), contenu textuel équivalent — pas une perte d'output.
Verdict : re-exécution authentique (papermill, chemins propres, chronologie cohérente), prose re-dérivée intégralement ancrée, périmètre strict (1 fichier). Les 2 🟡 sont cosmétiques sur le body uniquement. APPROVE.
— Hermes (myia-ai-01:hermes-agent)
|
[ADJOINT PREFLIGHT] Crible de fond rejoue a la tete 2e7afe2, carnet extrait par API brute aux deux refs, cellule par cellule. Les trois chiffres qui commandent le verdict du body ont ete remesures et non relus. Zero source de cellule de code modifiee, deux cellules markdown modifiees, trois sorties divergentes — la mesure donne exactement cela, cinq cellules touchees au total, les 18, 21 et 25 pour les sorties et les 19 et 22 pour le markdown. Aucune source de code ne bouge d un caractere, ce qui est la propriete qui distingue une re-execution d une reecriture. Structure mesuree aux deux refs — 32 cellules, 13 cellules de code, aucun execution_count nul, zero sortie d erreur, de chaque cote. La sequence des identifiants de cellule est identique, donc rien n a ete deplace ni recree, et le compte de cellules de code est conserve. Les sorties divergent vers le haut, pas vers le bas — 942 vers 1085, 866 vers 881, 712 vers 734 caracteres. Aucun effondrement de sortie, aucune banniere de degradation, et aucun motif d erreur volontaire dans le carnet. Le sens de la variation compte ici parce que c est lui qui separe une re-execution honnete d une execution degradee qui passe les gardes. Le point a lire en priorite par le coordinateur est l arbitrage declare dans le body et je ne le requalifie pas — la re-execution a ete faite avec le modele de la run committe, au prix d un parametre de sampling refuse en amont, et ce compromis est ecrit plutot que tu. C est de l information pour sa lecture, pas une reserve que je pose. Aucun rouge au fold latest-wins de la tete, 97 jambes et 96 noms, et la review Hermes est APPROVED a cette meme tete. Les sept commentaires sont des advisories de bots verts sur ce perimetre. Verdict READY. |
Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA — prev: DEEP/notebook-python #23844
Tranche 7 de la famille
ML/DataScienceWithAgents(census #23384, issue fille #23802) :Track2-GoogleADK/Day6-MLE-Star/Lab14-Ablation-Refinement.ipynbpasse du kernel 3.12.13 au canon CPython 3.13.15. Ce carnet pilote une étude d'ablation à vrais appels LLM (litellm) : estimateur d'importance des blocs +TargetedRefiner. La re-exécution a été faite contre le même modèle que la run committée — au prix d'un paramètre de sampling refusé en amont (diagnostic ci-dessous).Ce qui a été fait
language_info.versionkernelspecpython3python3(inchangé)execution_countnon nulsLe vrai outil, même modèle que la run committée
Signature reconstruite à la source : au commit d'origine du carnet (
9a451e1052, 2026-10-08), la run a été servie parACTIVE_PROVIDER=openai, modèlegpt-5.6-sol..envdu worktree (gitignored, jamais committé, clé issue de.secrets/master.env) épinglé sur cette signature exacte — le défaut du module a bougé depuis, l'épinglage évite de changer d'outil en même temps que de noyau.Diagnostic dérive
Cause (c) — moteur upstream, mesurée. La source du carnet demande
temperature=0.2(estimateur d'importance, raffineur). Run2 : le provider refuse aujourd'hui ce paramètre pourgpt-5.6-soltant que le raisonnement est actif (UnsupportedParamsError). Parade sans toucher la source :LITELLM_DROP_PARAMS=Truedans l'environnement du process papermill — litellm abandonne le paramètre refusé et sert le même modèle que la run committée. Une run témoin surgpt-4.1(run3) a aussi été mesurée puis écartée : elle aurait changé l'outil en même temps que le noyau.Cause (e) — stochasticité non-seedée, mesurée par run de contrôle. Run de contrôle (run5) : même kernel 3.13.15, même provider, même modèle, même config que la run committée ici (run4) — 45 lignes de sortie divergentes, partition des blocs différente. La segmentation LLM n'est pas reproductible d'une exécution à l'autre : la divergence base → run4 n'est pas causée par le changement de noyau.
Prose re-dérivée en voix pédagogique. md19 épinglait « 4 blocs » avec noms anglais ; md22 décrivait
make_pipeline(StandardScaler(), ...)+GridSearchCV. Re-dérivation sur les valeurs imprimées par la run committée : 5 blocs (« Entraînement et évaluation » = 1.00 prioritaire, « Importation des dépendances » = 0.30 dernier — la leçon « imports = prérequis mécanique sans valeur prédictive » survit inchangée) et le raffinement réécrit (LabelEncoder,StratifiedKFold(shuffle=True, random_state=42),cross_val_predict, validation croisée imbriquée « sans fuite de données »). Le paragraphe « Pourquoi ces libellés et ces scores ne sont pas des constantes » est conservé, son récit historique étendu aux trois exécutions mesurées. L'histoire du paramètre de température refusé reste dans ce body, pas dans le carnet.Inventaire des runs
main(4 blocs EN).env)AuthenticationError→ réparation rule F (.envprovisionné depuis master.env)UnsupportedParamsErrortemperature=0.2 — preuve cause (c)LITELLM_DROP_PARAMS=TrueGardes locales (depuis le worktree, tête
2e7afe2d27)Normalisations :
metadata.papermill.input_path/output_pathau basename (tolérance admise) ; écriture en LF,ensure_ascii=False,indent=1. Aucune sortie éditée à la main — les 2 md retouchées sont une re-dérivation de prose sur les valeurs imprimées, pas un alignement de sortie.Portée
Un seul carnet, un seul sujet. Tranches restantes de #23802 : Lab13-Web-Search-SOTA (3.12.13, dépendance HTTP à sonder),
4.1-Conv-NumPy-Torch-Allclose(instantané HTTP — problème distinct), puis barrières CUDA ×6, API-key ×1 (Lab14 était la seconde, résolue via master.env),_archive/×1.See #23802. See #23384.
🤖 Generated with Claude Code