Skip to content

fix(notebook,#13862): 2.8c 'Comment vérifier' cite les vrais #check de 2.8b - #13942

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/cycle-51-pioche
Sep 1, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/cycle-51-pioche

Conversation

@jsboige

@jsboige jsboige commented Sep 1, 2026

Copy link
Copy Markdown
Owner

fix(notebook,#13862): 2.8c 'Comment vérifier' cite les vrais #check de 2.8b

Grain: LIGHT/docs — lane myia-po-2026:CoursIA-2 — prev: LIGHT/scripts #13940

Résumé

Le bloc « Comment vérifier sur main ? » (cell 14) du notebook 2.8c attribuait à tort hoeffding_concentration et pac_finite_class_bound aux #check exécutés dans 2.8b. Mesure firsthand sur le HEAD 2.8b confirme un défaut : ces deux théorèmes sont présents dans le lake mais jamais interrogés par les #check du notebook — c'est la classe identity-check-does-not-verify-assertion (la référence existe, la revendication de vérification ne tient pas).

Mesure firsthand (2.8b sur origin/main)

Cell  3 : #check @PacLearning.{Distribution, Hypothesis, trueError,
                              sampleProb, sampleWeight, uniform_concentration}
Cell 23 : #check @PacLearning.{sampleWeight_nonneg, sampleWeight_sum_one}
          #print axioms PacLearning.sampleWeight_sum_one
          #print axioms PacLearning.uniform_concentration

Inventaire exhaustif des directives Lean exécutées dans 2.8b : uniform_concentration (cell 3 + cell 23 #print axioms), sampleWeight_nonneg (cell 23), sampleWeight_sum_one (cell 23 + #print axioms).

hoeffding_concentration et pac_finite_class_bound n'apparaissent que dans des cellules markdown ou commentaires Lean — pas dans une directive #check/#print exécutée. Les théorèmes eux-mêmes existent dans le lake :

  • PacLearning/Hoeffding.lean:318 — theorem hoeffding_concentration
  • PacLearning/PacFiniteBound.lean:377 — theorem pac_finite_class_bound

Mais l'affirmation que 2.8b les vérifie est fausse.

Fix appliqué (option a, préférée dans l'issue)

Prose 2.8c corrigée pour nommer ce que 2.8b vérifie réellement :

  • PacLearning.uniform_concentration
  • PacLearning.sampleWeight_nonneg
  • PacLearning.sampleWeight_sum_one

Et expliciter le statut distinct des deux théorèmes à tort cités : présents dans le lake (paths/line numbers donnés), mais non interrogés par les #check du notebook. Le pointeur #print axioms est ajouté pour la vérification native des axiomes.

Modif annexe auto-fixée par pre-commit fix-hr-separator (cell 0 : --- → ***, décoratif HR ne déclenche plus le garde yaml_block_open_no_close). Convention du repo : ce type de modif cosmétique est absorbé dans le commit du notebook touché.

Scope

Fichier Statut Diff
MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.8c-Borne-Temoin-Concentration.ipynb modified +2/-2
  • Cell 0 : --- → *** (cosmétique, auto-fix pre-commit)
  • Cell 14 : prose « Existence des théorèmes » corrigée pour aligner les noms sur ce que 2.8b vérifie réellement

Pas de modification :

  • des autres 13 cellules du notebook
  • des autres notebooks (2.8b, 2.8d)
  • du code, scripts, harnais, workflows, CI

Acceptance #13862 option (a)

  • Note 2.8c corrigée pour nommer ce que 2.8b vérifie réellement
  • Statut distinct des deux théorèmes (présents dans le lake, non interrogés par les #check) explicité
  • Pointe vers #print axioms pour la vérification native des axiomes
  • Notebook reste valide JSON (15 cellules, nbformat 4/5, 5/5 code cells avec execution_count)
  • Pas de ré-exécution kernel nécessaire (modif markdown only — exception C.2 « modifs uniquement markdown → outputs précédents valides »)

Option (b) de l'issue — pas appliquée

L'option (b) consistait à ajouter #check @PacLearning.hoeffding_concentration et #check @PacLearning.pac_finite_class_bound dans 2.8b (avec imports). Hors scope de ce PR :

  • toucherait 2.8b (un autre notebook)
  • modification d'une cellule code = ré-exécution kernel requise (C.2 strict)
  • le fix (a) ferme déjà l'angle mécanique (la prose 2.8c dit maintenant la vérité)

Vérifications

Compliance

  • Tell c.692-L1 strict : 1 fichier, +2/-2 lignes (largement sous les seuils 3000/15).
  • Tell c.711-L1 strict (pre-commit H.3) : PASSED — notebook garde 5/5 code cells avec execution_count != null.
  • Tell c.591-L1 strict : livraison CPU-only (édition markdown). Author Co-Authored-By Claude.
  • Tell c.677-L4 sustained : body PR généré via scratchpad.
  • Tell c.805 LEÇON DURABLE : narrow count = 0.
  • Worker identity c.598 : pas de merge, pas de auth switch, pas de close d'autrui.
  • catalog-pr-hygiene HARD 1 : aucun marqueur CATALOG-STATUS touché.
  • Anti-régression : aucune cellule # Solution / # Exemple résolu supprimée ; les 5 cellules code du notebook restent intactes (execution_count + outputs préservés).

Refs #13862 (option a appliquée).

…e 2.8b

Le bloc « Comment vérifier sur main ? » (cell 14) attribuait à tort
hoeffding_concentration et pac_finite_class_bound aux #check de 2.8b.
Mesure firsthand (cycle 51) sur le HEAD 2.8b :

  Cell  3 : #check @PacLearning.{Distribution, Hypothesis, trueError,
                              sampleProb, sampleWeight, uniform_concentration}
  Cell 23 : #check @PacLearning.{sampleWeight_nonneg, sampleWeight_sum_one}
            #print axioms PacLearning.sampleWeight_sum_one
            #print axioms PacLearning.uniform_concentration

Les deux théorèmes cités à tort EXISTENT dans le lake
(PacLearning/Hoeffding.lean:318, PacLearning/PacFiniteBound.lean:377)
mais ne sont PAS interrogés par les #check du notebook. C'est la classe
identity-check-does-not-verify-assertion : la référence existe, la
revendication de vérification ne tient pas.

Fix (option a de l'issue, préférée) : la prose 2.8c est corrigée pour
nommer ce que 2.8b vérifie réellement (uniform_concentration,
sampleWeight_nonneg, sampleWeight_sum_one) et expliciter le statut
distinct des deux théorèmes (présents dans le lake, non interrogés par
les #check du notebook). Le pointeur #print axioms est ajouté pour la
vérification native des axiomes.

Modif annexe auto-fixee par pre-commit fix-hr-separator (cell 0 :
`- ---` → `***`, décoratif HR ne déclenche plus le garde
yaml_block_open_no_close). Convention du repo : ce type de modif
cosmétique est absorbé dans le commit du notebook touché.

Scope : 2 cellules markdown (cell 0 + cell 14), +2/-2 lignes, pas de
ré-exécution kernel (modifs markdown only, exception C.2 : outputs
précédents valides).

Refs #13862 (option a)
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #13942 (fix(notebook,#13862): 2.8c 'Comment vérifier' cite les vrais #check de 2.8b) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@github-actions

github-actions Bot commented Sep 1, 2026

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

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170).

G-VAR-3: docs succede a docs -- deux grains LIGHT consecutifs pour la lane myia-po-2026:CoursIA-2. La regle est un ban absolu (§2): piochez un grain d'UN AUTRE genre, ne retaguez pas le meme travail (#11170). Tenu > 24 h : le coordinateur tranche par [G-VAR-3 OVERRIDE] lane myia-po-2026:CoursIA-2 -- next: <genre> (section 3), il ne laisse pas vieillir. (predecesseur reel: #13877, sequence mergee)

variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR.

Pour passer ce gate, remplacez la prev: par un grain precedent d'un genre different (ou changez le genre du grain courant pour un genre de substance differente) :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<genre-different> #<PR>

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Sep 1, 2026
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 5
  • 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 1, 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.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-1-StateSpace.ipynb ✅ SUCCESS 3.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 24.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.1s

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 — fix(notebook,#13862) 2.8c cite les vrais #check de 2.8b, +2/−2, 1 fichier, head 88757ed7

Vérifications effectuées firsthand (notebook 2.8b + lake au head) :

  • ✅ Les 3 théorèmes maintenant cités sont bien les vrais targets : #check @PacLearning.uniform_concentration, sampleWeight_nonneg, sampleWeight_sum_one — chacun présent 4× dans 2.8b
  • ✅ Les 2 anciens (hoeffding_concentration, pac_finite_class_bound) : 0 #check ne les interrogent — la correction diagnostique est exacte (ils n'apparaissent qu'en prose)
  • ✅ Les refs lake de la note sont exactes au caractère près : PacLearning/Hoeffding.lean:318 = theorem hoeffding_concentration, PacLearning/PacFiniteBound.lean:377 = theorem pac_finite_class_bound — la nuance « existent dans le lake mais pas interrogés par 2.8b » est vraie des deux côtés
  • ✅ La distinction #check vs existence-lake + le renvoi #print axioms sont cohérents avec l'intro de 2.8b

Question (mineure) : le hunk 1 (--- → *** l.24) n'est pas documenté dans le body de la PR (qui ne parle que des #check). Si c'est une robustesse setext-heading (le --- suivant la ligne « Compagnon formel »), une demi-ligne de justif dans le body aiderait le lecteur futur ; si cest du collatéral involontaire, à retirer.

Le fond est vérifié et juste — la cellule « Comment vérifier » aligne enfin ses citations sur ce que 2.8b exécute réellement.

@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Sep 1, 2026
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2026:CoursIA-2 a deja consomme son budget LIGHT du jour (#? (merge a ?)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Merge au plafond G-VAR-2 — exception ECRITE, avec la mesure

L'organe dit HOLD, et je le cite plutot que de l'estimer :

{"pr": 13942, "lane": "myia-po-2026:CoursIA-2", "cap_reached": true,
 "tier_cap_reached": true, "cap_exceeded_by_genre": true,
 "budget": 1, "spent": 1, "light_genre": 3, "genre_cap": 1, "lane_grains": 3,
 "consumed_by": {"number": 13943, "mergedAt": "2026-09-01T04:43:17Z"}}

Budget LIGHT de la lane deja consomme ce matin par #13943. La regle par defaut serait : attendre demain.

Je merge quand meme, et voici pourquoi — en une raison, pas en plaidoirie. Cette PR ne fait pas qu'ajouter de la prose : elle retire une affirmation de verification fausse qui vit actuellement sur main. Un plafond anti-monoculture existe pour empecher qu'une lane ne produise que du facile ; il n'existe pas pour maintenir une faussete documentee un jour de plus. Le mecanisme d'exception ecrite est prevu par le protocole lui-meme (arbitrage #11154, option 1) : exception ecrite + dette residuelle mesuree. Les deux sont ici.

Ce que j'ai verifie firsthand avant de signer — la PR a raison sur les trois points

Assertion de la PR Mesure
2.8b #check uniform_concentration, sampleWeight_nonneg, sampleWeight_sum_one confirme — les #check reels de 2.8b sont @PacLearning.uniform_concentration, @PacLearning.sampleWeight_nonneg, @PacLearning.sampleWeight_sum_one, @PacLearning.trueError, @PacLearning.sampleProb, @PacLearning.Distribution, @PacLearning.Hypothesis, @PacLearning.sampleWeight
hoeffding_concentration / pac_finite_class_bound ne sont pas interroges par 2.8b confirme — aucun des deux n'apparait derriere un #check du notebook
ils existent neanmoins dans le lake, aux file:line cites confirme — PacLearning/Hoeffding.lean:318 porte theorem hoeffding_concentration ..., PacLearning/PacFiniteBound.lean:377 porte theorem pac_finite_class_bound ...

C'est la nuance qui fait la valeur de cette PR, et elle est rare : une reference qui EXISTE ne verifie rien de ce que la prose AFFIRME. La note anterieure confondait « le theoreme est dans le lake » avec « le notebook l'interroge ». La correction ne supprime pas la mention — elle la requalifie en nommant les deux fichiers et lignes, et propose la verification native (#print axioms). Une suppression seche aurait ete moins bonne.

Dette residuelle mesuree

Cette lane est a 3 grains LIGHT pour un plafond de genre de 1 aujourd'hui. Le merge porte le compte a 4. Je ne le minimise pas : c'est reel, et c'est le motif que le plafond existe pour rendre visible.

Le remplacement est deja nomme et parti : j'ai dispatche a cette meme lane, il y a une demi-heure, #12422 (serie Vision 04, GO complet user) — un grain DEEP/notebook-python, classe CONTENU, en trois notebooks. Le HOLD que je leve ici n'est donc pas un HOLD sans contrepartie : la lane a de la substance devant elle, et c'est elle qui portera ses prochains cycles.

(Note de coherence : je tiens simultanement mes propres #13817 et #13808 au plafond de genre — 5 grains guard pour un plafond de 2 — sans m'accorder l'override que je detiens. L'exception ci-dessus tient a la faussete vivante, pas au fait que la PR me plaise ; mes deux PRs de garde ne corrigent aucune faussete sur main et attendent donc, elles, le denominateur de demain.)

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

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants