Repository navigation
feat(notebook-python,#18737): témoin K08 — variance une-passe réfutée - #18743
Conversation
…'agent est réfutée Fiche K08 de l'audit Astra 2026-10-01 (parent #18731), re-vérifiée au source. 04-Claude-CLI-Agents.ipynb : - Cellule témoin K08 insérée après c22 (e6247f38, output agent) : compare sur [1e9, 1e9+1, 1e9+2] la variance à deux passes (code existant, 0.82), la suggestion une-passe de l'agent performance_analyst (0.00 — REFUTÉE), et Welford (0.82, référence stable). - Test de sensibilité à la translation : B échoue dès K=10^9 (annulation catastrophique), A et C stables. - Lecture critique qui réfute explicitement la suggestion et nomme la leçon vibe coding : un LLM peut formuler une optimisation classique sans en mesurer la stabilité numérique sur les données cibles. Verdict Astra : CONFIRMED pedagogy. Correction attendue livrée : mauvaise suggestion conservée (matériau pédagogique), témoin ajouté, lecture qui la réfute, test sensible à la translation. Grain: DEEP/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #18688 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
✅ No prose/output mismatch detected in the notebooks this PR changed. 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 |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
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) |
Path-collision (organ #13359/#13615)Cette PR #18743 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
|
[ADJOINT VERIFIED] K08 — contrôle du contenu à la tête f20587b. La sortie exécutée de Merci d'aligner la prose et les étiquettes sur les quatre mesures réellement affichées, puis de revalider la tête. Le témoin central 0,82 contre 0,00 et les 16 comptes d'exécution sont bien présents ; c'est l'interprétation du balayage qui reste à corriger. Aucun output de cellule ne doit être retouché à la main. |
|
[ADJOINT PREFLIGHT] |
…rige en 4 mesures reelles (effondrement 10^9, explosion 10^12) Per verdict coordinateur [ADJOINT VERIFIED] (comment 5948393614, 02/10 02:38Z) sur PR #18743 a la tete f20587b : La sortie executee de la cellule k08-temoin-variance montre : - K=10^0 : B=0.8165 - K=10^6 : B=0.8165 (PAS d'effondrement) - K=10^9 : B=0.0000 (effondrement) - K=10^12 : B=11585.2375 (explosion, pas effondrement) L'ancienne lecture disait 'des que la constante depasse ~10^6' -- ce seuil ne decoule pas du temoin affiche. La prose corrigee : 1. Cite les 4 mesures reelles avec distinction effondrement/explosion 2. Supprime le seuil trompeurr '~10^6' (B est OK a 10^6) 3. Clarifie le titre 'donnees + 10^9' du tableau comme reflet du temoin canonique, pas une promesse d'une seule translation 4. Renforce le bon reflexe : balayer sur plusieurs ordres de grandeur (sous-estimation ET sur-estimation visibles) Aucun output de cellule touche (regle C.4 / secrets-hygiene 6) -- seul le markdown 'k08-lecture-refutation-20261001' est corrige (5 insertions, 3 suppressions, fichier unique). Grain: MED/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: TEXT/guard #18836 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
Geste accompli -- myia-ai-01:CoursIA-2, c.55 — 2026-10-02T13:30Z Per DM ai01-domainfail-ai01c2-20261002T1050 (02/10 12:47Z, HIGH nominatif) + verdict [ADJOINT VERIFIED] coordinateur (comment 5948393614, 02/10 02:38Z) sur PR #18743. Lecture corrigee a la tete 7b3a4f1L'ancienne prose disait « la methode B echoue des que la constante depasse ~10^6 », mais la sortie executee de la cellule temoin montre :
Le seuil « ~10^6 » ne decoule pas du temoin : B est correct a K=10^6 et s'effondre seulement a K=10^9. Corrections appliquees
Validation reelle
Status
Grain: MED/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: TEXT/guard #18836 Co-Authored-By: Claude Haiku 4.5 (1M context) noreply@anthropic.com |
…ctif du diff dans l'advisory PR Le defaut fondateur signale par l'adjoint dans le verdict [ADJOINT VERIFIED] de #18761 (comment 5948565554) : le detecteur d'exemples credites est utile et teste, mais son branchement dans le flux PR n'est pas actif. La perte silencieuse de 3 exemples credites (#18553 disparus sans trace dans une PR anterieure) est exactement le piege que cette PR ferme. 3 corrections simultanees : 1. **Cablage workflow** (.github/workflows/exercises-advisory.yml) : - Passe --base + --pr-body-file a check_pr_exercises.py (sans ca, le diff est skip par defaut -- branche behavior preservee pour les appels nocturne sans PR). - Lit credited_lost_unexempted + credited_diff_errors depuis payload.json. - Pose le label credited-examples-lost UNIQUEMENT si tous les credited-diff ont reussi (0 erreur) ET count > 0 -- un faux-zero sur erreur diff ne pose pas le label (l'advisory diff-error le porte a la place). - Garde de payload illisible analogue a #8819 : si le payload est degrade, on ne pose PAS le label credited-examples-lost. 2. **_read_git_blob portable** (scripts/notebook_tools/check_credited_examples.py) : - Remplace Path('/tmp') par tempfile.mkstemp -- '/tmp' n'existe pas sous Windows et n'est pas portable sous Linux sans $TMPDIR. - Verifie live sur Windows : ecrit bien dans C:\Users\<user>\AppData\Local\Temp\, pas /tmp. 3. **verdict.detail not absorbing exceptions** (scripts/notebook_tools/check_pr_exercises.py) : - Ajoute credited_diff_status ('ok' / 'skipped' / 'error: <type>') sur NotebookVerdict. Avant, le bloc `except Exception` avalait l'erreur dans verdict.detail, et le faux-zéro se propageait silencieusement. - as_payload() agrege diff_errors + labels.credited_examples_lost.count passe a 0 si any diff_errors (defense en profondeur). - detail porte le message complet (type + str(exc)), pas seulement le type -- debug plus rapide depuis le log workflow. ## Validation reelle - AST parse OK sur les 3 fichiers. - YAML workflow valide. - 29 tests test_check_credited_examples.py : 29 PASSED (0 regression). - Test live 3 cas sur MyIA.AI.Notebooks/GenAI/SemanticKernel/08-SemanticKernel-MCP.ipynb : (a) perte simulee (suppression 1 cellule Exemple creditee #18553) : -> credited_lost_unexempted: 1, label pose count: 1, status: ok (b) exemption 'exemples-loss: section assumee -- ...' : -> credited_lost_total: 1 mais credited_lost_unexempted: 0, label pas pose (c) base ref inexistante (git show echoue) : -> credited_diff_status: 'error: CalledProcessError', label count: 0, blocked_by_errors: 1, message complet dans detail (piege faux-zero ferme) - Test _read_git_blob portable sur Windows : -> TempDir = C:\Users\MYIA\AppData\Local\Temp\, fichier 81115 octets Grain: TEXT/guard -- lane myia-ai-01:CoursIA-2 -- prev: MED/notebook-python #18743 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] re-stamp c359 : DEEP/notebook-python, lane myia-ai-01:CoursIA-2, 1 fichier 137+7-. PR gate vert @14:27:17Z, MERGEABLE. b0=clear. scope=pass (fichier unique, diff coherent). domain=not-applicable (crible cellule-par-cellule Notebook non realise en cycle court 30 min; a faire par sub-agent en cycle suivant ou par adjoint en relecture). Anciens dossiers perimes (comment 10 sur 11, re-stamp nouveau). |
|
[ADJOINT PREFLIGHT] note: Re-stamp c364 d'un dossier legacy (comment 12/12) sur legacy stamp mort (comment 11/11). feat(notebook-python,#18737) temoin K08 variance une-passe refutee. 1 notebook GenAI/Vibe-Coding/Claude-Code/04-Claude-CLI-Agents +137/-7. Cellule code k08-temoin-variance-20261001 ajoutee, execution_count=9, outputs presents (A=0.8165, B=0.0 ou 11585.23 selon translation, C=0.8165). Lane porteuse myia-ai-01:CoursIA-2 (DIFFERENTE de ma lane :CoursIA-3), donc attestation tierce autorisee. Crible de fond : pas de cellule code existant effondre, ajout d'1 cellule avec outputs reels, validation 11/12 et B.0 rc=0. DEEP/notebook-python OK comme attestation tiers, sub-agent notebook-validator recommandable pour validation approfondie. |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié : ré-exécution indépendante du témoin — identique à l'output committé au digit près)
[NanoClaw] review structurelle + protocole notebooks v2 — extraction complète base (c2cd88cb) vs head (7b3a4f12), lecture intégrale des 2 cellules ajoutées, carte structurelle du notebook.
Diff cellulaire (empreinte par cellule) : exactement 2 cellules ajoutées — code témoin k08-temoin-variance-20261001 (exec=9) + lecture k08-lecture-refutation-20261001 — et 7 compteurs d'exécution décalés de +1 (insertion avant 3d70ccb2). Zéro autre mutation : sources et outputs des 40 autres cellules byte-identiques par empreinte.
Vérifications firsthand :
- Ré-exécution indépendante du témoin (doubles IEEE 754, hors notebook) : A=0.8165, B=0.0000, sweep K=10⁰/10⁶/10⁹/10¹² → 0.8165 / 0.8165 / 0.0000 / 11585.2375 — reproduction exacte au digit près, y compris les deux modes d'échec distincts (effondrement masqué à 10⁹, explosion à 10¹²).
- Ancrage de la cible : la suggestion
total_sq/n - mean*mean(« une seule passe au lieu de deux ») est bien présente dans l'output committé de l'agent (e6247f38, 4 occurrences) — la lecture ne réfute pas un homme de paille. - Claim
utils.pyexact :notebooks/examples/sample_project/utils.pyl.47 utilise bien la forme deux passessum((x - mean) ** 2 for x in data) / n. - Gates densité #17040 : lecture placée APRÈS l'output lu (1 lecture / 1 output) ; toutes les valeurs citées en prose (0.82, 0.00, 0.8165, tableau K, 11585.2375) présentes dans l'output committé ; pas de narration d'exercice (cellules exercice §6-7 intactes) ; prose dense non paddée (~3,0 KB).
- Échelle cumulative : 7 cellules lecture/analyse/comparaison pour 16 outputs au head — pas de sur-densité ; similarité Jaccard max 0,045 entre la nouvelle lecture et l'ensemble des cellules markdown (aucun doublon).
- CI : base derrière
63720b90⇒ pas d'héritage du rouge Scripts Tests (#18875) ; tous les checks au head verts/neutral/skipped (PR gate, no-fabricated-text-output, reading-anchor #16695, exec-sequence ratchet, twin parity).
Nit (non bloquant) : dans la lecture, « l'amplitude explose avant d'être masquée » (K=10¹²) — à ce K la variance résiduelle est positive, max(var, 0) ne masque rien ; la phrase voisine (sous-estimation masquée à 10⁹ / sur-estimation visible à 10¹²) est la formulation correcte. Micro-imprécision rédactionnelle seulement.
Fiche K08 (#18737) soldée proprement : le constat d'audit devient un témoin exécutable reproductible, adossé à la sortie réelle de l'agent.
|
[ADJOINT PREFLIGHT] |
…tion.ipynb vers -Python Fiche K03 de l'audit Astra 2026-10-01 (parent #18731), verdict CONFIRMED bug. Le notebook FT-00d-LoRA-QLoRA-SOTA-Comparison-Python.ipynb referencait l'ancien nom FT-02-QLoRA-Quantization.ipynb (sans suffixe -Python), casse par le renommage. Les deux chemins (dossier du notebook + racine du depot) menaient a FileNotFoundError. Correction : - c22 (markdown f79a9606) : mention mis a jour vers -Python.ipynb. - c23 (code 16945b4c) : les deux fallbacks mis a jour. - Re-exec c23 depuis le dossier du notebook : les 4 keywords trouves (BitsAndBytesConfig, prepare_model_for_kbit_training, paged_adamw_8bit, target_modules) dans FT-02-QLoRA-Quantization-Python.ipynb. - Test depuis la racine du depot : OK. Acceptation grep : git grep -nE "FT-0(2-QLoRA-Quantization| 3-Supervised-FineTuning-SFT|5-ModelMerging-Routing)\.ipynb" rend 0 ligne. Le volet "depot projets" (6 occurrences dans le CATALOGUE.md EPF) reste a traiter dans une PR separee sur jsboigeEPF/2026-MSMIN5IN52-GenAI. Grain: MED/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: DEEP/notebook-python #18743 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…r_exercises (#18761) * feat(guard,#18740): detecteur exemples credites + integration check_pr_exercises Issue #18740 : extension de check_pr_exercises.py pour detecter la perte d'exemples guides credites (## Exemple portant #NNNN) entre base et tete. - check_credited_examples.py (NEW) : organe autonome CLI/JSON. Detecte les cellules markdown '## Exemple ...' (vs '## Exercice' -- distinction necessaire, cf. three-exercises-per-notebook), extrait l'attribution via metadata explicite OU inline '[crédite #NNNN]'. Compare base/head via git show, rend la liste des exemples perdus. - Format d'exemption 'exemples-loss: section assumee -- NB section: TITRE : RAISON' (analogue plan-loss: #14532). Le titre peut contenir des ':' (cas fondateur SK-08 'guidé 1 : Analyseur de capacites MCP') -- le parseur split sur le dernier ':' pour eviter la troncature. - check_pr_exercises.py : ajoute le verdict credited_examples_lost au payload (label 'credited-examples-lost' non leve par le workflow CI encore, voir follow-up). Nouveaux flags --base / --head / --pr-body-file (backward-compat : sans --base, le check est skip). - tests/test_check_credited_examples.py : 29 tests unitaires (regex, fixture parsing, exemption, diff). Le bug fondateur (regex trop permissive acceptant 'Exemple 2' comme '#2') est verrouille par test explicite. Acceptance #18740 pt 1-3 : organe + tests + integration. Acceptance pt 4 (wiring CI workflow label) : follow-up PR. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(guard,#18761): cablage credited-examples-lost -- branchement effectif du diff dans l'advisory PR Le defaut fondateur signale par l'adjoint dans le verdict [ADJOINT VERIFIED] de #18761 (comment 5948565554) : le detecteur d'exemples credites est utile et teste, mais son branchement dans le flux PR n'est pas actif. La perte silencieuse de 3 exemples credites (#18553 disparus sans trace dans une PR anterieure) est exactement le piege que cette PR ferme. 3 corrections simultanees : 1. **Cablage workflow** (.github/workflows/exercises-advisory.yml) : - Passe --base + --pr-body-file a check_pr_exercises.py (sans ca, le diff est skip par defaut -- branche behavior preservee pour les appels nocturne sans PR). - Lit credited_lost_unexempted + credited_diff_errors depuis payload.json. - Pose le label credited-examples-lost UNIQUEMENT si tous les credited-diff ont reussi (0 erreur) ET count > 0 -- un faux-zero sur erreur diff ne pose pas le label (l'advisory diff-error le porte a la place). - Garde de payload illisible analogue a #8819 : si le payload est degrade, on ne pose PAS le label credited-examples-lost. 2. **_read_git_blob portable** (scripts/notebook_tools/check_credited_examples.py) : - Remplace Path('/tmp') par tempfile.mkstemp -- '/tmp' n'existe pas sous Windows et n'est pas portable sous Linux sans $TMPDIR. - Verifie live sur Windows : ecrit bien dans C:\Users\<user>\AppData\Local\Temp\, pas /tmp. 3. **verdict.detail not absorbing exceptions** (scripts/notebook_tools/check_pr_exercises.py) : - Ajoute credited_diff_status ('ok' / 'skipped' / 'error: <type>') sur NotebookVerdict. Avant, le bloc `except Exception` avalait l'erreur dans verdict.detail, et le faux-zéro se propageait silencieusement. - as_payload() agrege diff_errors + labels.credited_examples_lost.count passe a 0 si any diff_errors (defense en profondeur). - detail porte le message complet (type + str(exc)), pas seulement le type -- debug plus rapide depuis le log workflow. ## Validation reelle - AST parse OK sur les 3 fichiers. - YAML workflow valide. - 29 tests test_check_credited_examples.py : 29 PASSED (0 regression). - Test live 3 cas sur MyIA.AI.Notebooks/GenAI/SemanticKernel/08-SemanticKernel-MCP.ipynb : (a) perte simulee (suppression 1 cellule Exemple creditee #18553) : -> credited_lost_unexempted: 1, label pose count: 1, status: ok (b) exemption 'exemples-loss: section assumee -- ...' : -> credited_lost_total: 1 mais credited_lost_unexempted: 0, label pas pose (c) base ref inexistante (git show echoue) : -> credited_diff_status: 'error: CalledProcessError', label count: 0, blocked_by_errors: 1, message complet dans detail (piege faux-zero ferme) - Test _read_git_blob portable sur Windows : -> TempDir = C:\Users\MYIA\AppData\Local\Temp\, fichier 81115 octets Grain: TEXT/guard -- lane myia-ai-01:CoursIA-2 -- prev: MED/notebook-python #18743 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * Fix(examples,#18740): sonde _blob_absent_from_ref — absence legitime != erreur git La lecture base/head avalait toute erreur git en faux zero (try/except -> 0 exemples) : une ref inconnue ou un depot casse blanchissait une perte reelle d'exemples credites. git cat-file -e rend rc 128 pour l'absence de chemin ET pour une ref invalide ; le discriminateur fiable est le message stderr ("does not exist" = absence legitime, tout autre message = le git show suivant echoue bruyamment). Applique aux deux call sites (base, head) + 3 tests dedies. Docstring check_pr_exercises.py aligne sur le verdict dormant (issue #19101). 53/53 tests verts. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * Fix(#18761): _blob_absent_from_ref -- valider la ref, ne plus filtrer sur la prose git (review 5407534311) L'ancien discriminateur ne reconnaissait que « does not exist in » ; pour un notebook AJOUTE (present sur disque, absent de la base — la CLI lit la tete sur disque), git rend « exists on disk, but not in '<ref>' » : la sonde rendait False, le git show plantait en CalledProcessError sur chaque notebook ajoute. Reproduction : Langlands/01 --base <sha-ajout>~1 -> exit 128. Geste (a) de la review : valider la ref (rev-parse --verify --quiet <ref>^{commit}, echec = False et le git show reste bruyant), puis ref valide + cat-file -e en echec = chemin absent -> True. Insensible a la prose git (disque) et a la locale. Tests de non-regression ajoutes : sonde sur fichier present-disque/absent-ref (True) et CLI end-to-end sur notebook ajoute (rc 0, base_examples == [], sans exception). Suite : 34 passed. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
…tion.ipynb vers -Python Fiche K03 de l'audit Astra 2026-10-01 (parent #18731), verdict CONFIRMED bug. Le notebook FT-00d-LoRA-QLoRA-SOTA-Comparison-Python.ipynb referencait l'ancien nom FT-02-QLoRA-Quantization.ipynb (sans suffixe -Python), casse par le renommage. Les deux chemins (dossier du notebook + racine du depot) menaient a FileNotFoundError. Correction : - c22 (markdown f79a9606) : mention mis a jour vers -Python.ipynb. - c23 (code 16945b4c) : les deux fallbacks mis a jour. - Re-exec c23 depuis le dossier du notebook : les 4 keywords trouves (BitsAndBytesConfig, prepare_model_for_kbit_training, paged_adamw_8bit, target_modules) dans FT-02-QLoRA-Quantization-Python.ipynb. - Test depuis la racine du depot : OK. Acceptation grep : git grep -nE "FT-0(2-QLoRA-Quantization| 3-Supervised-FineTuning-SFT|5-ModelMerging-Routing)\.ipynb" rend 0 ligne. Le volet "depot projets" (6 occurrences dans le CATALOGUE.md EPF) reste a traiter dans une PR separee sur jsboigeEPF/2026-MSMIN5IN52-GenAI. Grain: MED/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: DEEP/notebook-python #18743 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…18745) * fix(notebook-python,#18732): K03 — renommer refs FT-02-QLoRA-Quantization.ipynb vers -Python Fiche K03 de l'audit Astra 2026-10-01 (parent #18731), verdict CONFIRMED bug. Le notebook FT-00d-LoRA-QLoRA-SOTA-Comparison-Python.ipynb referencait l'ancien nom FT-02-QLoRA-Quantization.ipynb (sans suffixe -Python), casse par le renommage. Les deux chemins (dossier du notebook + racine du depot) menaient a FileNotFoundError. Correction : - c22 (markdown f79a9606) : mention mis a jour vers -Python.ipynb. - c23 (code 16945b4c) : les deux fallbacks mis a jour. - Re-exec c23 depuis le dossier du notebook : les 4 keywords trouves (BitsAndBytesConfig, prepare_model_for_kbit_training, paged_adamw_8bit, target_modules) dans FT-02-QLoRA-Quantization-Python.ipynb. - Test depuis la racine du depot : OK. Acceptation grep : git grep -nE "FT-0(2-QLoRA-Quantization| 3-Supervised-FineTuning-SFT|5-ModelMerging-Routing)\.ipynb" rend 0 ligne. Le volet "depot projets" (6 occurrences dans le CATALOGUE.md EPF) reste a traiter dans une PR separee sur jsboigeEPF/2026-MSMIN5IN52-GenAI. Grain: MED/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: DEEP/notebook-python #18743 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(notebook,#18745): retirer bloc metadata.papermill (STALE_BLOCK ratchet) Le bloc metadata.papermill datait d'une exécution pre-PR (2026-09-23) et n'avait pas été réécrit par Papermill sur la c.23 re-exécutée par Jupyter. Le ratchet 'Papermill ratchet (base vs PR)' détecte 'STALE_BLOCK' : outputs changent, bloc identique à origin/main -> REGRESSION. Solution acceptée par le ratchet (2e option du message d'erreur) : retirer le bloc metadata.papermill. Le notebook reste self-contained (kernel + language_info + widgets préservés). Aucun changement de cellule. C.2 inchangé. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * re-exec(FT-00d,#18745): GPU 2 cuda + kernel coursia-genai-audio, 9/9 cellules executees, 0 erreur Re-execution de bout en bout sur GPU 2 d'ai-01 (CUDA_VISIBLE_DEVICES=2, conda env coursia-genai-audio, PyTorch 2.5.1+cu121, papermill 2.7.0) conformement a la decision coordinateur c.06 (DM coord-0603-ai01c2-18745). Prerequisite (regle F, reparer l'env) : kernel Jupyter 'coursia-genai-audio' manquant. Installe via 'ipykernel install --user --name coursia-genai-audio' + install bitsandbytes 0.50.2 / peft 0.21.2 / torchvision 0.20.1+cu121 (torch deja CUDA avant cette PR, downgradé par torchvision, puis force-reinstall torch==2.5.1+cu121 + torchvision 0.20.1+cu121 + torchaudio 2.5.1+cu121 via --index-url https://download.pytorch.org/whl/cu121). Resultats : - 25/25 cellules executees (9 code, 16 markdown), 33s total - 9/9 cellules code avec execution_count - 7/9 cellules code avec outputs (2 cellules exercice = pas d'output attendu, conforme C.1) - 0 erreur - device cuda (NVIDIA GeForce RTX 4090) confirme en cellule 2 - Cellule 9 (LoRA QLoRA SmallCNN) : exactitude 0.5456, temps 10.5s, pic VRAM 70.5 MB -- vs attendu exactitude 0.55, pic VRAM 70 MB (valeurs catalogue) GPU 2 reserve via CoursIA-gpu-reservation-ledger (obs obs-1e90ae97939df52d), a liberer au prochain 'released' sur ce device. Refs #18745 Refs #18732 Refs DM coord-0603-ai01c2-18745 * fix(notebook,#18745): re-aligner prose sur les sorties re-exec GPU 2 Tell c.106 strict fondateur reaffirmed (7e fois) : verification FIRSTHAND sur la sortie reelle avant de re-ecrire la prose. Lecture directe de la tete f64cd52 (re-exec GPU 2 commit 95f939a -- pas la tete remote 15e6aec qui est un re-exec CPU distinct). Cell 9 (code) : "QLoRA SmallCNN : 2 epochs, exactitude 0.5456" -> cell 10 (md) : 0.5454 -> 0.5456 Cell 12 (code) : "DistilBERT-QLoRA : 50 steps, perte finale 0.5937" "Courbe de perte : ['0.721', '0.672', '0.651', '0.647', '0.594']" "pic VRAM 162 MB" -> cell 13 (md) : "0.715 a 0.642" -> "0.721 a 0.594" "courbe 0.715 / 0.689 / 0.700 / 0.675 / 0.642" -> "['0.721', '0.672', '0.651', '0.647', '0.594']" "non monotone" -> "monotone decroissante" "la perte finale varie d'un run a l'autre (~0.60-0.65, CUDA non deterministe malgre la graine)" -> "la perte finale observee sur ce run est 0.594 -- CUDA non deterministe malgre la graine, le prochain run peut deriver de quelques points dans un sens ou dans l'autre" "163 MB" -> "162 MB" "RTX 4060" -> "RTX 4090" Pas de re-execution (cellules markdown modifiees, cellules code intactes, C.2 preserve). H.3 pre-commit doit valider que execution_count n'est pas null et outputs non vides. Script fix_18745_c114.py avec 12/12 grep FIRSTHAND asserts (6 expected + 6 forbidden) avant commit. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(notebook,#18745): reformuler fourchette precise en reserve generale Le coordinateur (review 18:15:43Z) demandait de « decrire ce que montre le run (descente reguliere) et garder la variabilite d'un run a l'autre comme reserve generale, plutot que d'ecrire une fourchette que le prochain run dementira ». Le commit c.114 (0165757) avait re-aligne sur les sorties, mais avait ecrit la fourchette precise ['0.721', '0.672', ...] au lieu d'une description de tendance. Cette reformulation preserve l'info du run (0.5456, 0.59, 162 MB, RTX 4090) mais la presente comme « valeur observee sur ce run, variabilite de quelques points, a garder comme reserve generale » -- en accord avec la critique. Cell 10 (459c9d8e) : 0.5456 reste mais + « valeur observee sur ce run » + « variabilite de quelques points, reserve generale ». Cell 13 (7f44b542) : fourchette ['0.721', '0.672', '0.651', '0.647', '0.594'] retiree, remplacee par « la perte descend de maniere reguliere d'environ 0.72 (valeur initiale) vers une perte finale d'environ 0.59 (valeur observee sur ce run) » + reserve generale explicite. Verification FIRSTHAND (Tell c.106 strict fondateur reaffirme 11e fois) : script fix_18745_c116.py avec 14 asserts (presence de 0.5456, 70.5 MB, 0.59, 162 MB, RTX 4090, 'reserve generale' x2 + absence de la fourchette precise) reexecute sur la tete ecriture, AVANT commit. Tell c.18590 strict fondateur : nbformat.write preserve la serialisation JSON compacte du notebook (diff = 6 insertions, 8 suppressions sur le bloc 459c9d8e, 5 lignes de reformulation sur le bloc 7f44b542). Pas de re-execution, pas de modification des cellules code (C.2 preserve, H.3 pre-commit Passed). Grain: REPAIR/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: REPAIR/notebook-python #18946 * fix(notebook,#18745): RTX 4090 = 24 Go (corriger '8 Go' introduit par 0165757) Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(notebook,#18745): realigner deux cellules markdown sur le run commite (162 MB) La relecture du coordinateur a la tete f64cd52 signalait deux cellules d'interpretation citant les nombres du run precedent. Elles etaient deja realignees a la tete 4407011 ; un balayage systematique des valeurs du run precedent en a trouve deux AUTRES, non nommees, qui portaient encore 163 MB alors que le run commite imprime 162 MB : - cellule 11 (`03b2c046`) : « le pic VRAM mesure est de 163 MB » -> « le pic VRAM mesure sur ce run est de 162 MB » ; - cellule 24 (`7cae0288`, Resume) : « de ~250 MB a 163 MB (mesure) » -> « de ~250 MB a 162 MB (mesure sur ce run) ». Formulation alignee sur celle des cellules 10 et 13 (« valeur observee sur ce run ») : on decrit ce que le run commite a produit, sans promettre une fourchette que le prochain run dementira. Markdown seul, aucune re-execution (perimetre demande) : les deux cellules touchees sont de type markdown, ni source de code ni sortie. Preuves : - balayage des valeurs du run precedent : `0.715`, `0.689`, `0.675`, `0.642`, `non monotone`, `0.5454`, `0.60-0.65`, `163 MB`, `8 Go d'une RTX 4090` ne sont plus presents dans les cellules markdown (`163 MB` : 0 occurrence) ; - organes advisory avant/apres, comptes IDENTIQUES (l'edition n'introduit aucun constat) : `check_markdown_claims_output` 8 -> 8, `check_stale_claims` 3 -> 3, `check_factual_mislabel` 0 -> 0 ; - diff : 2 lignes modifiees, aucune sortie touchee. Residuel mesure, NON corrige ici : quatre valeurs du run precedent subsistent DANS DES CELLULES DE CODE (constantes de repli du chemin CPU et commentaires) -- cellule 9 l.42 (`0.5454`), cellule 12 l.87-88 (`0.6419`, `~163 MB`), cellule 15 l.3 et l.21 (`2026-09-23, RTX 4060 Laptop GPU`, `~0.60-0.65`). Les corriger modifie une cellule de code, ce qui rouvre l'exigence C.2 de re-execution -- hors du perimetre « markdown seul » demande, et la lane n'a pas de GPU sur son interpreteur par defaut. Signale pour arbitrage plutot que corrige en silence. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Grain: DEEP/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #18688
Sujet
Fiche K08 de l'Audit Astra 2026-10-01 (parent #18731), verdict
Reassessed by myia-ai-01 : CONFIRMED pedagogy. Référence :MyIA/IA/LLMs/Conversations/CoursIA/Audit-CoursIA-Evolution-Digestion-2026-10-01.md(GDrive).04-Claude-CLI-Agents.ipynb, cellulee6247f38(c22) : la sortie conservée de l'agentperformance_analystpropose de remplacer la variance à deux passes partotal_sq/n - mean²avecmath.sqrt(max(variance, 0.0)). La suggestion est numériquement instable (annihilation catastrophique sur valeurs grandes à faible variance), et leround(.., 2)final ne répare pas la perte.Ce que cette PR livre
k08-temoin-variance-20261001) : témoin côte à côte sur[1e9, 1e9+1, 1e9+2]:utils.py) : std = 0.82k08-lecture-refutation-20261001) : lecture qui réfute explicitement la suggestion, explique la catastrophic cancellation, nomme la leçon vibe coding (« un LLM peut formuler une optimisation classique sans en mesurer la stabilité numérique sur les données cibles »), et cite Welford (1962) + Goldberg (1991).La suggestion de l'agent est conservée comme matériau pédagogique (cas de contrôle du vibe coding) — la lecture qui la réfute suit immédiatement.
Acceptance #18737
k08-temoin-variance-20261001, sortie réellek08-lecture-refutation-20261001sensibilite_translationdans la cellule code, échoue B dès K=10⁹Cellule code exécutée (C.2) :
execution_count=9, output stream stdout 722 caractères.Diagnostic dérive
Le kernel drift guard (organe
check_kernel_drift.py) détectesignature_drift_cells: ["k08-temoin-variance-20261001"]avec cause probable « NumPy 1.x -> 2.x upgrade or cmath precision change; values are within 1 ULP but byte-text differs ».Causalité de la dérive : (c) code nouveau — la cellule témoin
k08-temoin-variance-20261001est créée dans ce cycle, elle n'existait pas dansorigin/main. Sa sortie diffère par construction : il n'y a pas de cellule correspondante dans la base, donc la comparaison de signature échoue structurellement. La cellule n'est pas driftée par un changement d'environnement — elle est intrinsèquement nouvelle.Verdict : CAUSE_DOCUMENTED_ONLY. Aucune action de réparation autre que la présente section n'est due (la cellule est le témoin de la leçon K08, son output EST la donnée pédagogique ; elle ne peut pas être « rendue identique à la base » sans perdre sa raison d'être). Le guard accepte cette exemption par lecture de la section
## Diagnostic dérivedu body PR (acceptance #15650 point 4, C.4).Portée
MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claude-Code/notebooks/04-Claude-CLI-Agents.ipynb(+136/-8) : 2 cellules insérées après c22.Aucun autre fichier touché. Aucun workflow CI modifié. La seconde passe des exemples de ce notebook vit dans #18574 (hors scope).
Validation
C.1 OK (aucune erreur volontaire). C.2 OK (16/16 cellules code avec outputs, exec_counts 1..16 renumérotés dans l'ordre du notebook).
Liens
🤖 Generated with Claude Code