Skip to content

fix(search,#13515): de-leak MGS-30 (3/3) + MGS-7b (2/3) — exercices pré-résolus stubbés - #13525

Merged
jsboige merged 2 commits into
mainfrom
feature/mgs-deleak-exercises
Aug 30, 2026
Merged

jsboige merged 2 commits into
mainfrom
feature/mgs-deleak-exercises

Conversation

@jsboige

@jsboige jsboige commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-dotnet -- lane myia-po-2026:CoursIA -- prev: DEEP/lean #13427

See #13515 (partiel : 5/9 cellules — priorités de l'issue MGS-30 puis MGS-7b livrées)
See #12373 (Epic MGS)

Le de-leak (tranché par contenu, exercise-example-labeling.md)

Option A « rendre l'exercice réel » pour les 5 cellules pré-résolues :

notebook cellule avant après
MGS-30 16 (Ex. 1 budget x4) 14 lignes calculées sous le TODO stub : squelette resultats64 + 3 indices + 3 étapes
MGS-30 18 (Ex. 2 balayage qf) 14 lignes calculées stub : sweepRows + indices
MGS-30 20 (Ex. 3 profil) 35 lignes calculées stub : profilRows + indices
MGS-7b 11 (Ex. 1 convergence) boucle GetPixel complète stub : stats + indices
MGS-7b 12 (Ex. 2 variabilité seed) comparaison complète, sans TODO stub : objectif + indices + attendu
  • Zéro dépendance aval (vérifié : resultats64/deltas64/sweepRows/profilRows/stats/totalDiff non référencés hors de leurs cellules).
  • C.1 : patterns print("...a completer") + squelette, aucun raise NotImplementedError (grep verifié).
  • MGS-7b cell 14 (Ex. 3) était déjà un stub sain — non touchée.

Exécution réelle (C.2 / verdict EXEC_PROVED)

  • MGS-30 : 10/10 cellules exec=1..10, 0 erreur. Pont PythonNet actif sur Python 3.13.13 + mealpy 3.0.2 (via PYTHONNET_PYDLL → probe de la cellule 6 lit l'env en premier ; le probe hit[0] fragile LOCALAPPDATA est un défaut connu MGS-22/23/30, hors scope ici).
  • MGS-7b : 8/8 cellules exec=1..8, 0 erreur.
  • Prérequis reproduits : git submodule update --init (MetaGeneticSharp + GeneticSharp imbriqué) + dotnet build MetaGeneticSharp.sln -c Debug (0 erreur) — documentés en tête de notebook.
  • Banner probeAddresses strippé via strip_probe_banner.py --apply (seule normalisation autorisée), grep -c probeAddresses = 0.

Déterminisme vs dérive des timings

Médianes qualité identiques au main (seeds déterministes) : jumeau mealpy 51,5 [48-53] < ablaté 52,0 < complet 54,0 ; déterminisme 12/12 ; sanity check IDENTIQUE. Les ms dérivent avec la charge machine -> ratios resynchronisés dans le README de série : 0,73x -> 0,92x (écart noyau), 6,79x -> 5,25x (fitness isolée), 5,8x -> 4,7x et 4x -> 4,7x (ablaté vs complet). Classe #13516 : la prose ne doit pas contredire la sortie committée.

§E audit fichier-entier

34 .ipynb sur disque ; le seul absent du README est MGS-20-Langage-de-Composition — gap pré-existant sur main déjà couvert par #13518 (EN ATTENTE DE MERGE, ajoute la ligne MGS-20). Pas de duplication ici.

Note de merge pour le coordinateur : #13518 et cette PR éditent toutes deux la ligne L7 (long paragraphe d'arc) du README Part4, sur des segments différents (MGS-29 pour #13518, MGS-30 ici) — conflit textuel possible à 1 ligne, résolution = union des deux substitutions. Merger #13518 d'abord puis rebase trivial.

Residuel (4/9)

Les 4 singletons MGS-16 / MGS-17 / MGS-21 / MGS-25 (1 cellule pré-résolue chacun) restent a traiter — nécessitent chacun une re-exec bench complète (~30 min/notebook), tranche suivante. Cellules repérées : MGS-16 cell 27 (8 lignes calculées), MGS-17 cell 10 (25 lignes), MGS-21 cell 9 (démonstration étiquetée Exercice 3), MGS-25 (a localiser précisément).

@github-actions

Copy link
Copy Markdown
Contributor

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

c.415 (#11873): scope = notebooks CHANGED in this PR, not the whole corpus.
See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 pathologie.

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-08-29) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 18
  • 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 Aug 29, 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 4.2s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.3s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.2s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.0s
Search-1-StateSpace.ipynb ✅ SUCCESS 4.1s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.8s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 26.4s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s

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

@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 — COMMENT, verdict positif (de-leak 2 notebooks + README, +348/−375 ; structure, stubs et outputs vérifiés au head, full-diff non chargé)

fix(search,#13515) — MGS-30 (3/3) + MGS-7b (2/3) : exercices pré-résolus stubbés.

Vérifié firsthand (head 9cc4de8d) :

  • Le de-leak est réel et complet : l'issue #13515 mesurait sur main 14/14/35 lignes de code effectif sous les // TODO etudiant des exercices 1-3 de MGS-30 (« exemples résolus étiquetés exercice »). Au head, les 6 cellules d'exercice (MGS-30 c.16/18/20, MGS-7b c.11/12/14) portent 1-2 lignes non-commentaire : déclaration de conteneur vide + Console.WriteLine("Exercice a completer : …"). Le conteneur vide rend l'instruction « remplace resultats64 » enfin littérale — le stub est cohérent avec le défaut documenté.
  • Outputs re-exécutés, pas périmés : les 6 cellules stub ont pour sortie committée exactement la ligne prompt (« Exercice a completer : verdict budget x4… ») — les anciens verdicts résolus ne subsistent nulle part. Intégrité d'exécution intacte : MGS-30 21 cellules (11 md/10 code), execution_count 1→10 strictement monotone, 0 output manquant ; MGS-7b 16 cellules (8/8), 1→8 monotone. CI Golden-Set 8/8 PASS corrobore.
  • Justification des suppressions au standard (#13515) : remarque opérateur sur #13397, vérification firsthand, mesure bornée (9/96 exos pré-résolus sur les 29 MGS, concentrés MGS-30/MGS-7b), doctrine citée (exercise-example-labeling.md : trancher par le contenu, pas l'étiquette). Chaque solution supprimée correspond à une ligne du tableau de l'issue.
  • README (+2/−2) : rows MGS-7b (l.57) et MGS-30 (l.82) inchangées dans leur substance, liens vers fichiers réels ; l'arc narratif n'a pas été touché.
  • Sécurité : code C# algorithmique pur, scan secrets 0 hit ; les mentions « solution/corrigé » restantes sont de la prose pédagogique (ex. intro MGS-7b c.0), pas des fuites.

Concerns (non bloquants) : (1) le détecteur CI s'est abstenu (« merge-base introuvable ») sur cette PR précisément dédiée au leak — ironique mais sans impact, la validation notebook (2 notebooks, 18 cellules code) est PASS. (2) Rien d'autre.

Ball merge : Emerjesse.

jsboige and others added 2 commits August 30, 2026 13:56
…ré-résolus stubbés

Les 5 cellules d'exercice portaient un TODO mais un corps calculé complet
(solution entière sous le commentaire). Option A (rendre l'exercice réel) :
corps retiré, squelette + indices + étapes conservés, print C.1, aucune
dépendance aval (vérifié par grep des variables). Re-exec complète des deux
notebooks (10/10 et 8/8, kernel .net-csharp, pont PythonNet sur Python
3.13.13 + mealpy 3.0.2 via PYTHONNET_PYDLL) : médianes qualité identiques
(seeds déterministes), timings dérivés -> README resynchronisé (0,73->0,92x,
5,8->4,7x, 6,79->5,25x, 4x->4,7x). Residuel : 4 singletons MGS-16/17/21/25
(1 cellule chacun).

Co-Authored-By: Claude-Code <noreply@anthropic.com>
La re-execution nbclient (C.2) a change outputs/execution_count mais le bloc
metadata.papermill restait byte-identique a origin/main (fin de run du
2026-08-28T17:32Z) -> check_papermill_ratchet verdict STALE_BLOCK. nbclient
n'ecrit pas ce bloc ; la sortie explicite du gate est la suppression
(precedents 454093f, c220160, issue #11155).

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@jsboige
jsboige force-pushed the feature/mgs-deleak-exercises branch from 9cc4de8 to 7e686d4 Compare August 30, 2026 11:56
@jsboige
jsboige merged commit aaf552d into main Aug 30, 2026
60 checks passed
@jsboige
jsboige deleted the feature/mgs-deleak-exercises branch September 2, 2026 13:15
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.

2 participants