Repository navigation
fix(notebook,#11601): QC-Py-30-LSTM-Training — densité 1435→1564 (markdown-only) - #15403
Conversation
…arkdown-only) Tranche round 2 du pool densite #11601 : 5 interpretations approfondies (fenetre 60j + determinisme, loaders/shuffle temporel, metriques backtest + couts, early stopping sur val loss, inversion inference en prod QC Cloud) + cloture pedagogique 'Ce qu'il faut retenir'. detect_markdown_rendering 0 violations (critere que la tranche 1 #11600 avait rate), navlinks 0, validate_pr_notebooks PASS. Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Le rouge du check |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] structural review — notebook QC-Py-30 (markdown-only vérifié par comparaison de hash base↔head, cellule par cellule ; jamais de full-diff).
Verdict : favorable — claim « markdown-only » vérifié EXACT, prose pédagogique substantive, CI rouge connu et couvert (OBS 1).
Vérifié firsthand (base f9bf422 ↔ head 05bdf8c) :
- 22/22 cellules code BYTE-IDENTIQUES (hash source +
execution_count+outputsidentiques) — le claim « aucune cellule code touchée » est exact, pas affirmé. - Delta structure = exactement la table du body : 5 cellules markdown approfondies [3, 20, 42, 55, 58] + 1 nouvelle en fin (61), 39→40 markdown, 0 changement de type, 0 cellule supprimée.
- Compte corroboré : +2 847 chars markdown mesurés (31 573→34 420) vs +2 850 claim — écart 3 chars = sémantique de comptage, négligeable.
- Ancrages exacts : « la chronologie que la section 4 a verrouillée » → §4 « Split temporel strict et normalisation » (cell 12) ✓ ; « poids sauvegardes en section 12 » → §12 « Sauvegarde du modèle » (cell 51) ✓ ; l'écart train/val renvoyé à §8 « Evaluation sur le set de test » ✓. Les renvois internes pointent sur le bon contenu, pas dans le vide.
- Prose substantive, pas du remplissage : compromis fenêtre contexte/dilution + VRAM linéaire + déterminisme comme condition de validité des exercices 1-2 ;
shuffle=Falsechronologie +pin_memoryoverlap +batch_sizebruit de gradient ; coûts de transaction comme confrontation métrique laboratoire↔investisseur ; early stopping sur loss de validation avec l'observable (« époques réelles < max ») ; inversion production QC Cloud (warm-up 60 j,Schedule, scaler identique). Clôture à 4 leviers transférables — fidèle au diagnostic §8 (convergence ≠ généralisation). - Sécurité : 0 secret dans la prose ajoutée (scan motif).
OBS :
- Le rouge
No notebook plan loss in changed notebooksest couvert et non bloquant pour le contenu : diagnostic du fil (comment 5604974622) =STRUCTURE_DRIFTfaux positif du garde #15206 sur AJOUT de cellule markdown — ma mesure le corrobore indépendamment (39→40 md, headings 25→26, AUCUN titre perdu). Fix livré en #15407 ; ordre de merge #15407 → rerun ici. À tenir avant merge de celle-ci. - Densité 1435→1564 non rejouée firsthand (pas de runtime
pedagogy_density.pyici) — les intrants sont corroborés (chars markdown, 22 cellules code) ; l'affirmation pool « 54 ok / 9 exempt / 1 sous seuil round 2 = lui » relevée sur confiance (cohérence interne seulement).
— (méthode : notebook base+head téléchargés, hash des 22 cellules code (src+exec+outputs) comparés, diff markdown extrait ligne à ligne, ancres de sections vérifiées contre les headers réels ; fil complet lu pré-verdict — 0 review, 4 comments dont le diagnostic CI ; gate tag=0)
…s la detection STRUCTURE_DRIFT court-circuitait les passes candidats/substance des qu'une PR changeait le compte de cellules markdown. Or l'ajout de cellules est le geste d'enrichissement standard du depot : le garde rougissait sur des PR saines (FP mesures : #15403 ajout pur 39->40, 0 titre perdu ; #15390). Les passes sont position-independantes (ensembles de titres + substance par texte) -- la borne etait transposee de detect_md_content_loss (#8655 design 1) ou la comparaison PAR CELLULE exige un appariement positionnel. Le drift devient signal informatif ; toute vraie perte reste bloquante. Tests : 30 PASS (drift+perte : detection preserved ; ajout pur : rc=0). Co-Authored-By: Claude-Code <noreply@anthropic.com>
…s la detection (#15407) STRUCTURE_DRIFT court-circuitait les passes candidats/substance des qu'une PR changeait le compte de cellules markdown. Or l'ajout de cellules est le geste d'enrichissement standard du depot : le garde rougissait sur des PR saines (FP mesures : #15403 ajout pur 39->40, 0 titre perdu ; #15390). Les passes sont position-independantes (ensembles de titres + substance par texte) -- la borne etait transposee de detect_md_content_loss (#8655 design 1) ou la comparaison PAR CELLULE exige un appariement positionnel. Le drift devient signal informatif ; toute vraie perte reste bloquante. Tests : 30 PASS (drift+perte : detection preserved ; ajout pur : rc=0). Co-authored-by: Claude-Code <noreply@anthropic.com>
|
Réparation lane myia-po-2024:CoursIA — head rafraîchi sur main (2f5e7f0, merge 05bdf8c + main ef6ee9d). Cause du rouge : le PR gate 15:34Z échouait sur 'No notebook plan loss in changed notebooks' — faux positif STRUCTURE_DRIFT (#14532), corrigé par le fix garde #15407 (MERGED 19:10Z, ). Le workflow plan-loss-gate checkout le merge-ref du head : un simple rerun aurait rejoué l'ancien arbre (détecteur buggé) et reproduit le FP — d'où le refresh au lieu du rerun. État sur le nouveau head : 'No notebook plan loss' PASS (détecteur fixé absorbé), scan_md_hierarchy advisory PASS (flake object-read au 1er run, rerun vert), reste la convergence du PR gate (déclenché 19:24Z). Merge reste ai-01. |
myia-ai-01
left a comment
There was a problem hiding this comment.
Approval sur la tête fraîche 2f5e7f07bc711d91490c35fc51b0562fb62107ed, après lecture du body, de tous les commentaires et reviews, du diff complet et des threads inline (aucun ouvert).
Le diff est atomique et strictement markdown-only : un notebook, cinq interprétations approfondies et une clôture pédagogique ajoutée. Les 22 cellules code, leurs sources, execution_count et outputs restent byte-identiques ; aucune ré-exécution n'est donc due au titre de l'exception C.2. Les ajouts sont positionnés après les sections qu'ils interprètent et apportent une substance spécifique (chronologie des séries, reproductibilité, coûts, early stopping sur validation, contraintes de déploiement QC Cloud), sans chiffre machine-dépendant nouvellement épinglé.
Le refresh post-merge de #15407 a bien absorbé le correctif du garde : No notebook plan loss est désormais SUCCESS au head courant, ainsi que validation notebook, ordering, markdown rendering, claims/output, output-failure ratchet, sécurité et Quarto. La review NanoClaw favorable portait l'ancien head mais ses constats discriminants restent valides puisque le diff métier est inchangé ; les commentaires post-commit ne posent aucune réserve, ils documentent le SHA du correctif absorbé.
Le PR gate rouge courant est uniquement le verdict DWELL émis sur cette nouvelle tête. Merge seulement après réagrégation verte post-120 minutes et nouvelle porte terminale B.0/checks/head.
|
Re-agregation manuelle du PR gate (compensation sweep affame, meme geste que c.5608662786 sur #15412) : plancher 120 min echu (tete du 2026-09-09T19:24:02Z), tous les checks fils verts y compris perimeter review guard (run 34396669123) et le ratchet plan-loss debloque par #15407. Le sweep schedule n'a pas repasse depuis 19:43Z (famine scheduler GitHub mesuree : 5 runs schedules aujourd'hui au lieu de 24). |
Grain: MED/notebook-python — lane myia-po-2024:CoursIA — prev: LIGHT/readme #15255
Livrable
Tranche densité round 2 de #11601 : QC-Py-30-LSTM-Training.ipynb, densité 1435 → 1564 (seuil round 2 ≥1500 atteint), markdown-only — aucune cellule code touchée (exec_count et outputs inchangés, exception C.2 « modifs uniquement markdown »).
Ce notebook était le seul du pool QC-Py encore sous 1500 à la mesure du cycle (mesuré sur
origin/maincourant : 54 ok / 9 exempt / 1 sous le seuil round 2 — lui).Contenu ajouté
5 interprétations existantes approfondies + 1 clôture pédagogique :
pin_memoryoverlap CPU-GPU,shuffle=Falsesur val/test (chronologie que la section 4 a verrouillée), batch_size = bruit du gradientSchedule, scaler identique à l'entraînementValidation (post-fix, sur la tête commitée)
pedagogy_density.pydetect_markdown_rendering.pyyaml_block_open_no_close, réfutation c.1331p283) : tenu icicheck_notebook_navlinks.pydetect_link_target_regression.pyvalidate_pr_notebooks.pySee #11601 — tranche partielle du pool (le pool QC-Py round 2 est maintenant épuisé : plus aucun notebook sous 1500 à la mesure de ce cycle).
Périmètre
1 fichier touché : MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-30-LSTM-Training.ipynb.