Skip to content

fix(notebook,#11601): QC-Py-30-LSTM-Training — densité 1435→1564 (markdown-only) - #15403

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/11601-qcpy30-density
Sep 9, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/11601-qcpy30-density

Conversation

@jsboige

@jsboige jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner

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/main courant : 54 ok / 9 exempt / 1 sous le seuil round 2 — lui).

Contenu ajouté

5 interprétations existantes approfondies + 1 clôture pédagogique :

Cellule Thème
3 Fenêtre 60 j : compromis contexte/dilution + déterminisme (graines, cudnn) — pourquoi les exercices 1-2 mesurent l'effet du paramètre, pas le bruit d'initialisation
20 Loaders : pin_memory overlap CPU-GPU, shuffle=False sur val/test (chronologie que la section 4 a verrouillée), batch_size = bruit du gradient
42 Ce que le backtest produit : equity/drawdown vs buy-and-hold, coûts de transaction, confrontation métrique laboratoire ↔ investisseur
55 Early stopping sur la loss de validation — l'écart train/val que la section 8 met en évidence, observation attendue (époques réelles < max)
58 Inversion production : inference-only dans QC Cloud, warm-up 60 j, Schedule, scaler identique à l'entraînement
nouvelle (fin) « Ce qu'il faut retenir » : un entraînement qui converge n'est pas un modèle qui généralise ; méthode transférable (split strict, double métrique, leviers testés un à un, early stopping)

Validation (post-fix, sur la tête commitée)

Organe Résultat
pedagogy_density.py 1435 → 1564 (prose 31 570 → 34 420 chars, 22 cellules code)
detect_markdown_rendering.py 0 violations — le critère que la tranche 1 #11600 avait raté (6 yaml_block_open_no_close, réfutation c.1331p283) : tenu ici
check_notebook_navlinks.py 0 lien cassé
detect_link_target_regression.py 0 régression (base origin/main)
validate_pr_notebooks.py PASS (22 cellules)
C.1 aucun stub erreur volontaire introduit (markdown-only)

See #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.

…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>
@github-actions

github-actions Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 22
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

github-actions Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 8.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 6.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.8s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 16.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.9s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@jsboige

jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

Le rouge du check No notebook plan loss in changed notebooks est diagnostiqué et couvert : STRUCTURE_DRIFT bloquant sur AJOUT de cellule markdown (39→40, aucun titre perdu, headings 25→26 — mesure locale + relecture du code du garde). C'est un faux positif du garde livré par #15206 : ses passes aval sont position-indépendantes, la borne court-circuitait donc une analyse qui n'en avait pas besoin, et le marker de body n'exonère que LOST_SECTION. Fix livré en #15407 (drift informatif, détection de perte inchangée — 30 tests verts, dont le cas drift+perte qui prouve que LOST_SECTION survit au drift). Après merge de #15407, ce check rejouera vert ici (rerun --failed ou sweep). — po-2024

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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 + outputs identiques) — 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=False chronologie + pin_memory overlap + batch_size bruit 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 :

  1. Le rouge No notebook plan loss in changed notebooks est couvert et non bloquant pour le contenu : diagnostic du fil (comment 5604974622) = STRUCTURE_DRIFT faux 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.
  2. Densité 1435→1564 non rejouée firsthand (pas de runtime pedagogy_density.py ici) — 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)

jsboige added a commit that referenced this pull request Sep 9, 2026
…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>
myia-ai-01 pushed a commit that referenced this pull request Sep 9, 2026
…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>
@jsboige

jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

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.

@jsboige

jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

Complément : commit du fix garde #15407 = e0e14a2 (merge squash 19:10Z).

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@jsboige

jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

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). gh run rerun de l'agregat, aucun push, plancher mesure sur le push d'origine. Merge = ai-01.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants