Skip to content

Enrich PyMC-02-Gaussian-Mixtures.ipynb: density 970 -> 2774 c/code-cell - #14124

Merged
myia-ai-01 merged 4 commits into
mainfrom
feature/c131-pymc-gaussian-mixtures-density
Sep 3, 2026
Merged

myia-ai-01 merged 4 commits into
mainfrom
feature/c131-pymc-gaussian-mixtures-density

Conversation

@jsboige

@jsboige jsboige commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA -- prev: MED/notebook-python #14123 (cycle 130)

Summary

Enrichissement markdown-only de PyMC-02-Gaussian-Mixtures.ipynb (Probas/PyMC, PyMC 5.28.5, scenario cycliste avec Gaussienne simple, tronquee, posterior predictive check, melange a 2 composantes, label switching, API pm.NormalMixture) : 970 -> 2774 c/code-cell (+185 %), plancher 1200 largement franchi, cible 1500 largement depassee (185 %).

Rotation R6 (variete obligatoire) : c129 = MED/notebook-python sur PyMC-11 (Topic Models). c130 = MED/notebook-python sur PyMC-04 (Bayesian Networks). Cycle c131 = MED/notebook-python sur PyMC-02 (Gaussian Mixtures) -- MEME GENRE (Python), MEME FAMILLE (Probas/PyMC), continuite pedagogique directe : PyMC-02 introduit les modeles de melanges (GMM, posterior predictive check, label switching), une fois les reseaux bayesiens (PyMC-04) et les sujets LDA (PyMC-11) compris. Meme protocole (umbrella #13410) : code byte-identique, anchors sur sorties kernel in-place, zero re-execution.

Changement

Fichier Type Effet
MyIA.AI.Notebooks/Probas/PyMC/PyMC-02-Gaussian-Mixtures.ipynb markdown-only +14 cellules etendues + 5 nouvelles cellules d'interpretation inserees

Cellules etendues (14) : cells [0, 1, 3, 6, 8, 10, 12, 14, 15, 18, 20, 22, 23, 25] - chacune ancree sur la sortie verbatim de la cellule code qui suit :

  • cell[0] Plan + objectifs + substance pedagogique (7 sections : modele gaussien / NUTS / predictive / tronquee / GMM / controle predictif / divergences + label switching)
  • cell[1] Section 1 Scenario cycliste (donnees, modele bayesien, prior conjugue Normal-Inverse-Gamma, sortie verbatim code[2] PyMC 5.28.5, code[4] posterior 16.09/3.50)
  • cell[3] Section 2 Modele simple (tableau comparatif Infer.NET vs PyMC, sortie verbatim code[4] NUTS 19s, code[5] diagnostic rhat=1.000 ess_bulk=8429)
  • cell[6] Section 3 Prediction (formule p(x_new | x_obs) = integral p(x_new | theta) p(theta | x_obs) d(theta), sortie verbatim code[7] P(trajet < 18 min)=0.694, P(trajet > 25 min)=0.016, P(14 < trajet < 20 min)=0.556)
  • cell[8] Exercice 2 (seuil P(trajet > seuil) = 0.05, pattern attendu, verdict attendu ~21.8 min)
  • cell[10] Section 4 Gaussienne tronquee (formalisme, cas d usage temps de trajet, sortie verbatim code[11] moyenne tronquee 16.08/ecart-type 3.51)
  • cell[12] Exercice 3 (donnees negatives avec TruncatedNormal, pattern attendu, verdict recupere mu1.0 sigma0.5)
  • cell[14] Section 5 Melange de Gaussiennes (strategie variable latente z_i, implementation PyMC CompoundStep NUTS + BinaryGibbsMetropolis, cout 76s)
  • cell[15] Controle predictif (posterior predictive check avant complexification, sortie verbatim code[16] Gaussienne unique moyenne=20.00 ecart-type=8.06, predictive=Student-t, creux fraction OBSERVEE=0.083 vs PREDITE=0.243)
  • cell[18] Interpretation GMM (sortie verbatim code[19] Composante 1 mu=16.9/sigma=4.2/poids=0.58, Composante 2 mu=26.7/sigma=5.5/poids=0.42, label switching, 4 remedes)
  • cell[20] Section 6 pm.NormalMixture (API directe, avantages, cout 72s, sortie verbatim code[21] 62 divergences rhat=1.010 ESS=418)
  • cell[22] Section 7 Comparaison Infer.NET vs PyMC (tableau 8 criteres : inference, vitesse, determinisme, diagnostiques, posterieurs exactes, hierarchiques, multi-plateforme, cas d usage)
  • cell[23] Exercice melange 3 composantes (pattern attendu, piege surapprentissage, verdict honnete)
  • cell[25] Conclusion (7 acquis + pour aller plus loin DPM/HMM/VAE/normalizing flows + 5 references bibliographiques)

Nouvelles cellules (5) :

  • Apres code[5] : Lecture du diagnostic NUTS (code[5] divergences=0, r_hat<1.01, ess_bulk=8429, cout 19s, comparaison numpyro/ADVI)
  • Apres code[11] : Lecture de la gaussienne tronquee (sortie verbatim code[11] moyenne 16.08/ecart-type 3.51, cas d usage reels temps/distances/notes/probabilites, alternative pm.Potential)
  • Apres code[16] : Lecture du posterior predictive check (sortie verbatim code[16] OBSERVEE 0.083 vs PREDITE 0.243, rejet du modele gaussien, Prong B applicable)
  • Apres code[21] : Lecture de l API directe pm.NormalMixture (sortie verbatim code[21] 62 divergences vs 439, R-hat 1.010, ESS 418, comparaison code[17] vs code[21])
  • Apres code[24] : Lecture de l exercice 3 composantes stub (pattern attendu, piege surapprentissage, WAIC/LOO-CV pour selection)

Pourquoi ce notebook

Per mesure ground-truth direct disque :

  • PyMC-02-Gaussian-Mixtures.ipynb 970 c/cell <- choisi : 12 code cells, kernel python3, sorties tres riches (PyMC 5.28.5, Gaussienne simple mu=16.09/sigma=3.50, NUTS 19s, predictive P(<18 min)=0.694, tronquee 16.08/3.51, controle predictif OBSERVEE=0.083 vs PREDITE=0.243, GMM 2 composantes mu_1=16.9 poids=0.58 mu_2=26.7 poids=0.42, NormalMixture 76s 62 divergences rhat=1.010).
  • Famille Probas/PyMC : continuation logique apres PyMC-11 (Topic Models c129) et PyMC-04 (Bayesian Networks c130).
  • Genre Python : continuity c129/c130.
  • Substantif : PyMC-02 est le notebook fondateur de la serie pour les melanges gaussiens et le posterior predictive check -- il introduit le GMM, le label switching (439 divergences), l'API directe pm.NormalMixture (62 divergences, 7x moins), et la strategie de controle predictif (rejet quantitatif du modele trop simple). C'est la base des notebooks suivants (PyMC-12 Modeles Hierarchiques, PyMC-13 Crowdsourcing, PyMC-14 Sequences) et le complement logique de PyMC-04 (modeles structures) et PyMC-11 (modeles de sujets).
  • Cas pedagogique Prong B applicable (sota-not-workaround) : posterior predictive check quantitatif (O vs P) -- on peut mesurer que la gaussienne unique sous-estime le creux (24% vs 8%), justifiant le passage au melange a 2 composantes.

EPIC implicite : PyMC-02 etait le 3e notebook PyMC le plus bas en densite parmi ceux eligible. Ce compagnon ouvre la porte aux notebooks suivants (PyMC-12-Modeles-Hierarchiques, PyMC-13-Crowdsourcing) et prepare le terrain pour les notebooks paralleles Infer.NET (Infer-2-Gaussian-Mixtures).

Pool cross-lane autorisation respectee (PyMC-04 c130 -> PyMC-02 c131, MEME famille + MEME genre, continuite pedagogique directe).

Validations

  • validate_pr_notebooks.py origin/main : 1/1 PASS (12 code cells, byte-identique, kernel python3).
  • scan_cell_ordering.py --check-interp-anchor : 1/1 clean (0 findings).
  • pedagogy_density.py --json : 2774 c/code-cell (>= 1200 floor, cible 1500 franchie a 185 %).
  • Pre-commit hooks (gitleaks, dotnet-probes, papermill-paths, fix-hr-separator, markdown-rendering-guard, fix-source-newlines, H.3 un-executed, source-compilable) : all Passed apres auto-fix de 2 separateurs hr convertis --- -> *** au 1er passage.
  • Code byte-identique : verifie sur les 12 cellules code (sources + outputs + execution_counts). Les insertions et extensions sont toutes en markdown.

Anti-regression D + Stop & Repair

  • Zero modification aux 12 cellules code du notebook Python (sources / outputs / execution_counts byte-identique a origin/main).
  • Zero hand-edit d output (Stop & Repair respecte).
  • Catalog COURSE_CATALOG.generated.{json,md} non touche (RÈGLE HARD 1 catalog-pr-hygiene).

Refs

Liens

  • Notebook enrichi : MyIA.AI.Notebooks/Probas/PyMC/PyMC-02-Gaussian-Mixtures.ipynb
  • Famille jumeau : PyMC-12-Modeles-Hierarchiques (suivant logique), Infer-2-Gaussian-Mixtures (jumeau Infer.NET), PyMC-04-Bayesian-Networks (precedent c130), PyMC-11-Topic-Models (precedent c129)
  • Navigation : PyMC-01-Setup (precedent), PyMC-03-Factor-Graphs (suivant)
  • Prev sur la lane : PR Enrich(PyMC-04-Bayesian-Networks): density 785->3004 c/code-cell (+282%) #14123 (c130 PyMC-04-Bayesian-Networks)

@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

MD hierarchy drift -- 43f2416

Cette PR augmente le compte de defauts de rendu markdown
par rapport a la base de fusion 53989f9 re-scannee.
Nouveaux defauts imputables au diff :

reference: merge base 53989f97741f3779b5f505a85defec98e0fb4dd6 re-scanned (1 of 1 changed notebook(s) existed at base; others are additions; 0 had findings at base)
  +4  MyIA.AI.Notebooks/Probas/PyMC/PyMC-02-Gaussian-Mixtures.ipynb
        +4 HINT-AS-HEADING

=== drift: +4 across 1 notebook(s), 0 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...). See #11831.

@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 12.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 10.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 20.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 17.6s
Search-1-StateSpace.ipynb ✅ SUCCESS 9.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 7.5s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 54.3s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 11.4s

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

@github-actions

github-actions Bot commented Sep 1, 2026

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-09-01) :

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

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 12
  • 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 2, 2026

Copy link
Copy Markdown
Contributor

Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine.

Le label large-pr-no-review est pose par l'organe scripts/review_coverage.py porte par l'issue #11232. Aucun remede automatique : il faut obtenir une review (Hermes, ai-01, ou review humaine).

Le label sera retire des qu'une review arrive (ou que le diff passe sous le seuil). Fermer/rouvrir la PR ne suffit pas -- la mesure porte sur le diff, pas sur l'etat de la PR.

Seuil, historique et exceptions : cf. docs/reference/review-coverage-threshold.md.

jsboige and others added 2 commits September 3, 2026 03:24
Markdown-only enrichment of PyMC-02-Gaussian-Mixtures.ipynb (Probas/PyMC family,
PyMC 5.28.5, scenario cycliste fil rouge couvrant Gaussienne simple, NUTS inference,
gaussienne tronquee, posterior predictive check, melange a 2 composantes avec label
switching, API pm.NormalMixture simplifiee). 14 md cells etendues + 5 nouvelles
cellules d'interpretation inserees ; code byte-identique ; 0 re-execution.

Suite logique Probas/PyMC apres PyMC-11 c129 et PyMC-04 c130.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…ng paths corrected)

Le garde md-content-loss flaggait LOST_NAV_LINKS 3->2 : l'enrichissement
avait laisse tombe la ligne Equivalent Infer.NET (lien
Infer-2-Gaussian-Mixtures) et la barre de navigation pointait des
chemins fantomes ../PyMC-01-Setup/PyMC-1.ipynb et
../PyMC-03-Factor-Graphs/PyMC-3.ipynb (les fichiers reels sont des
siblings PyMC-01-Setup.ipynb / PyMC-03-Factor-Graphs.ipynb).
Markdown seul (C.2 exception). detect_md_content_loss : findings=0.
@jsboige
jsboige force-pushed the feature/c131-pymc-gaussian-mixtures-density branch from 43f2416 to 8306c3e Compare September 3, 2026 01:25
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

MD hierarchy drift -- 8306c3e

Cette PR augmente le compte de defauts de rendu markdown
par rapport a la base de fusion d753d8c re-scannee.
Nouveaux defauts imputables au diff :

reference: merge base d753d8c23446d16d3cbab2b6136df40881053f67 re-scanned (1 of 1 changed notebook(s) existed at base; others are additions; 0 had findings at base)
  +4  MyIA.AI.Notebooks/Probas/PyMC/PyMC-02-Gaussian-Mixtures.ipynb
        +4 HINT-AS-HEADING

=== drift: +4 across 1 notebook(s), 0 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...). See #11831.

jsboige and others added 2 commits September 3, 2026 08:19
…to guided example

Gate enrich_quality_ci 15 HIGH -> 0 :
- MD_REWRITE: base md restaure verbatim (111 lignes substantielles conservees)
- SOLUTION_LEAK: fence near-solution (melange 3 composantes) deplacee apres le
  stub TODO en exemple guide, reecrite contre le code reel (pm.NormalMixture,
  trace_3 = pm.sample(3000, random_seed=42), priors mu=[10,16,30] alignes sur
  le contrat du stub) - la fence originale utilisait obs/trace/tune/chains/cores
  fabriques
- ANCHOR_OOR x5: refs renumrotees via carte prose-verifiee ; cell[22] -> section 7
- PHANTOM_IN_FENCE x7: fences alignees sur extraits verbatim du code reel
  (trace_simple/ppc/trace_mixte/trace_nm, variable observee 'trajets' pas 'obs',
  Dirichlet pas pm.Beta, pas de step= explicite - le CompoundStep de la sortie
  verbatim est une auto-assignation) ; doublons Lecture/Potential de la section
  tronquee dedupliqués ; rappel du pattern melange supprime
- DIACRITICS 46->0: re-accentuation du head-only (protection fences/backticks/URLs)
Verdicts qualitatifs alignes sur les 12 observations (composante rapide mal
contrainte = piege surapprentissage, 2 composantes preferable).

Co-Authored-By: Claude-Code <noreply@anthropic.com>
…ion fix (#14124)

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@jsboige

jsboige commented Sep 3, 2026

Copy link
Copy Markdown
Owner Author

Sweep rendu vague 2 — #14124 traité

enrich_quality_ci.py --base origin/main --head : 15 HIGH -> 0 (rc=0 local, commit e5a5019). Twin rebaseline Probas-2 Gaussian-Mixtures poussée (dbc3cdd) — tout changement du notebook (md inclus) déplace le blob SHA du registre #8057.

Méthode

Même moteur de fusion que #14121/#14123 : 12/12 cellules code byte-identiques base↔head → base restauré verbatim + blocs additifs du head filtrés (clé alphanumérique, dedup par gap).

Corrections par classe

  • SOLUTION_LEAK : la fence near-solution « Melange a 3 Composantes » (avant le stub TODO) déplacée après le stub en ### Exemple guidé — Mélange à 3 composantes (à consulter après votre tentative), réécrite contre le code réel. Arbitrage stub = contrat : le stub demande des moyennes ~10/16/30 min et la spec base (conservée verbatim) dit K=3 / mu=np.array([10, 16, 30]) — la fence head utilisait des priors [15, 22, 30] et un verdict chiffré (poids 0.50/0.25/0.25) contredit par les 12 observations (9 trajets ≈16 min + 3 ≈32 min). Verdict réécrit qualitatif : composantes ~16 et ~30 identifiées, composante ~10 mal contrainte (piège surapprentissage) — cohérent avec la note honnête du head.
  • PHANTOM_IN_FENCE x7 (Potential, logp_y, obs, random, trace, trace_3, trajets_pred) : fences réécrites en extraits verbatim du code réel — trace_simple/trace_mixte/trace_nm (pas de trace nu), variable observée 'trajets' (pas 'obs'), ppc = pm.sample_posterior_predictive(trace_simple, random_seed=42) (pas trajets_pred), pm.Dirichlet (pas pm.Beta), pas de step= explicite (le CompoundStep de la sortie verbatim est une auto-assignation de PyMC, pas du code écrit). Doublons inter-sections dédupliqués (Lecture + « Implementation alternative pm.Potential » répétées ; rappel du pattern mélange supprimé). La fence numpyro (comparaison d'écosystèmes) conservée — API externe légitime, chaque entité retombe à ≤1 fence.
  • ANCHOR_OOR x5 : carte prose-vérifiée {2→0, 4→1, 5→2, 7→3, 11→5, 16→7, 17→8, 19→9, 21→10, 24→11} ; cell[22] (tableau Objectifs, comparaison Infer.NET) rewordé en section 7.
  • DIACRITICS 46→0 : ré-accentuation du head-only (dict word-boundary + phrases, protection fences/backticks/cibles de liens).
  • MD_REWRITE 18/111 : restauration base ci-dessus (111/111 conservées).
  • HREF_MISSING : déjà résolus par le fix navlinks c204 (8306c3e, tête de branche).

Exercices 2 et 3

Specs base conservées verbatim (contrats alignés stubs) ; exemples guidés ajoutés après chaque stub avec l'idiome réel (ppc.posterior_predictive['trajets'], TruncatedNormal + tau Gamma comme code[5], random_seed=42). Verdict Ex2 ~21.8 min vérifié plausible (16.1 + 1.645×3.5 ≈ 21.9).

Preuves

Gate local rc=0 ; navlinks 0 cassé ; 0 duplicate header ; code 12/12 byte-identique (md-only, outputs conservés règle C.2) ; 3 stubs TODO intacts + 3 guides directement après ; 0 fence python dans le md précédant chaque stub ; guards nits + perimeter OK ; twin parité Probas-2/Probas-4 OK après rebaseline.

Suite du sweep : #14127, #14116-#14119, #14129, #14399.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

MD hierarchy drift -- dbc3cdd

Cette PR augmente le compte de defauts de rendu markdown
par rapport a la base de fusion d753d8c re-scannee.
Nouveaux defauts imputables au diff :

reference: merge base d753d8c23446d16d3cbab2b6136df40881053f67 re-scanned (1 of 1 changed notebook(s) existed at base; others are additions; 0 had findings at base)
  +1  MyIA.AI.Notebooks/Probas/PyMC/PyMC-02-Gaussian-Mixtures.ipynb
        +1 HINT-AS-HEADING

=== drift: +1 across 1 notebook(s), 0 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...). See #11831.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Bash Syntax Advisory — shebang / executable-bit warnings

See the Shebang + dry-run advisory job log for the per-file ::warning:: lines. Non-blocking.

@myia-ai-01
myia-ai-01 merged commit 3ba7302 into main Sep 3, 2026
63 of 64 checks passed
jsboige added a commit that referenced this pull request Sep 3, 2026
…ll (#14124)

Merge coordinateur ai-01. Verifications : B.0 organe rc=0 ; H.4 markdown-only mesure sur les blobs base-de-fusion vs tete (aucune source de cellule code modifiee, exception C.2) ; catalogue byte-identique a main ; aucun rouge vivant au dernier check-run par nom.
jsboige added a commit that referenced this pull request Oct 8, 2026
…sortie, repositionnees apres leur code)

Paquet P13-redo, notebook 1/16. Markdown-only : les 12 cellules code, leurs
outputs, execution_count, metadata et ids restent byte-identiques (verifie
par comparaison de blobs HEAD vs worktree).

Cellules campagne #14124 seules touchees (19 identifiees par diff 3ba7302^..3ba7302) :

- fuse-2/5/6/8 : reduites a leur theorie pre-code ; les blocs Verbatim
  (paraphrase de sorties visibles) et Lectures placees AVANT leur code
  sont supprimes ou deplaces ;
- fuse-3 supprimee (tableau Infer.NET/PyMC duplique par la section 7,
  Verbatim/Pourquoi/Cout/Implementation consolides dans fuse-4) ;
- fuse-9 supprimee (intro PPC dupliquee par la cellule pre-campagne
  #8081 ; Lecture/Decision deja dans fuse-10, « Ce qu'on devrait voir »
  greffe dans fuse-10) ;
- fuse-15 supprimee (narration du stub d'exercice code[11] ;
  l'alternative WAIC/LOO est grefee dans la conclusion fuse-16) ;
- fuse-4/7/10/11 : lectures uniques consolidees, chacune APRES son code ;
  fuse-11 deplacee apres code[9] -- sa place ante-code cassait aussi le
  renvoi « cellule suivante » de la cellule pre-campagne 61bdfe5c ;
- fuse-8 (strategie melange) deplacee APRES la lecture du controle
  predictif : le rejet de la gaussienne unique precede desormais
  l'introduction du melange ;
- fuse-14 (tableau comparatif) deplacee APRES son titre de section 7 ;
- fuse-1 : section « Verdict SOTA » (meta-commentaire du processus de
  review) supprimee ; objectifs/plan/prerequis conserves ;
- nouvelles cellules lecture-post-simple (apres code[1]) et
  lecture-prediction (apres code[3]) : la valeur « +/- 0.32 » fabriquee
  par la campagne est remplacee par les valeurs committes (16.09 / 0.08 /
  3.50), toutes verifies contre les sorties avant ecriture.

Organes : check_duplicate_sections 1 finding (dup_reading x7) -> 0 ;
check_split_reading_cells clean avant et apres.

See #17066 (P13-redo, 1/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Oct 9, 2026
…rtie, repositionnees apres leur code (tranche 13/16 : 13 carnets, Probas Infer+PyMC et RL) (#19831)

* Fix(probas,#17066): PyMC-02 -- redressement densite (1re lecture par sortie, repositionnees apres leur code)

Paquet P13-redo, notebook 1/16. Markdown-only : les 12 cellules code, leurs
outputs, execution_count, metadata et ids restent byte-identiques (verifie
par comparaison de blobs HEAD vs worktree).

Cellules campagne #14124 seules touchees (19 identifiees par diff 3ba7302^..3ba7302) :

- fuse-2/5/6/8 : reduites a leur theorie pre-code ; les blocs Verbatim
  (paraphrase de sorties visibles) et Lectures placees AVANT leur code
  sont supprimes ou deplaces ;
- fuse-3 supprimee (tableau Infer.NET/PyMC duplique par la section 7,
  Verbatim/Pourquoi/Cout/Implementation consolides dans fuse-4) ;
- fuse-9 supprimee (intro PPC dupliquee par la cellule pre-campagne
  #8081 ; Lecture/Decision deja dans fuse-10, « Ce qu'on devrait voir »
  greffe dans fuse-10) ;
- fuse-15 supprimee (narration du stub d'exercice code[11] ;
  l'alternative WAIC/LOO est grefee dans la conclusion fuse-16) ;
- fuse-4/7/10/11 : lectures uniques consolidees, chacune APRES son code ;
  fuse-11 deplacee apres code[9] -- sa place ante-code cassait aussi le
  renvoi « cellule suivante » de la cellule pre-campagne 61bdfe5c ;
- fuse-8 (strategie melange) deplacee APRES la lecture du controle
  predictif : le rejet de la gaussienne unique precede desormais
  l'introduction du melange ;
- fuse-14 (tableau comparatif) deplacee APRES son titre de section 7 ;
- fuse-1 : section « Verdict SOTA » (meta-commentaire du processus de
  review) supprimee ; objectifs/plan/prerequis conserves ;
- nouvelles cellules lecture-post-simple (apres code[1]) et
  lecture-prediction (apres code[3]) : la valeur « +/- 0.32 » fabriquee
  par la campagne est remplacee par les valeurs committes (16.09 / 0.08 /
  3.50), toutes verifies contre les sorties avant ecriture.

Organes : check_duplicate_sections 1 finding (dup_reading x7) -> 0 ;
check_split_reading_cells clean avant et apres.

See #17066 (P13-redo, 1/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Chore(twin,#17066): rebaseline Probas-2 -- redressement densite markdown-only cote Python

Entree known_differences datee + SHAs courants attestes par
check_twin_parity.py --update --pair "Probas-2 Gaussian-Mixtures"
--by myia-po-2024:CoursIA. La paire repasse [OK] ; le jumeau C#
(Infer-2) est inchangé.

See #17066

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Fix(probas,#17066): PyMC-04 -- redressement densite (2/16) : 1 lecture par sortie, repositionnees apres leur code

Cellules campagne #14123 (fuse-1..17, diff 97072bf) uniquement ; 12 cellules
code byte-identiques (verifie par comparaison JSON + 0 execution_count dans le
diff). Markdown-only, aucune re-execution due (C.2/C.3).

Suppressions : fuse-16 entiere (narrate le stub code[11], extension Bayes
medical greffee dans fuse-17) ; blocs Verbatim/Sortie verbatim dans
fuse-2/3/5/8/13 ; meta « Verdict SOTA » (fuse-1) ; independances FAUSSES de
fuse-2 (fourche inversee, contredite par la sortie code[9]) ; sections dupliquees
(Analogie medicale + Implementation dans fuse-8, deja dans fuse-9 ; Pour aller
plus loin de fuse-15, deja dans fuse-17 ; Dict verbatim de fuse-3, deja dans
code[1]).

Corrections de fond (valeurs verifiees contre les sorties committes) :
- timings fabriques par la campagne alignes : fuse-5 citait « 28 seconds » et
  fuse-8 « 22 seconds » alors que les sorties committes portent 19 s ;
  « ~25 s » (fuse-1, fuse-17) -> « ~20 s pour 4 x 10 000 draws » ;
- enonce D-separation de fuse-11 CORRIGE : chaine et fourche avaient la
  dependance marginale/conditionnelle INVERSEES (contredit par la sortie
  code[9] : correlation S-R = -0.2630 sans observation = dependantes) ;
- fuse-4 reduite a « Pourquoi pedagogique » (le DAG est decrit + mermaid par
  la cellule pre-campagne b2n4etgr).

Repositionnements : fuse-10 (lecture des 3 scenarios) APRES code[8] (etait
avant) ; fuse-15 (tableau comparatif) sous le titre de section 9.

Creation : lecture-marginales apres code[2] (marginales vs theorie, bruit MCMC
1/sqrt(40000) -- contenu deplace depuis le Verdict de fuse-6, qui devient la
lecture unique du diagnostic code[3] et absorbe le pourquoi-BinaryGibbs de
fuse-5).

Organes : check_duplicate_sections 1 finding -> 0 ; check_split_reading_cells
clean -> clean. 118 insertions / 334 deletions markdown.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Chore(twin,#17066): rebaseline Probas-4 -- redressement densite markdown-only cote Python

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite PyMC-11 (3/16) -- 1 lecture par sortie, campagnes #14123 consolidees

Cellules campagne 2feaf4c uniquement ; 18 cellules code byte-identiques.
7 cellules campagne supprimees (fuse-10/16/21/23/24/25/20 : verbatim, narration
de stub, separateur nu, table K dupliquee et contredite par la lecture
pre-campagne ddf24625, extensions dupliquees par f8a9b0c7) ; 15 reecrites/
coupees ; 4 repositionnees APRES leur code ; 3 sur-annonces corrigees sur les
sorties committes (2 chains vs 4 annoncees ; tops K=4 melees vs '4 themes bien
separees' ; timing sklearn). Organes : dup_sections 1 finding -> 0.

See #17066 (P13-redo, 3/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: rebaseline twin Probas-11 apres redressement densite PyMC-11 (#17066, 3/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite PyMC-14 (4/16) -- retitre les 2 lectures en collision

Defaut unique du porteur (organs : dup_reading Interpretation x2, split clean,
zero verbatim/meta) : deux lectures legitimies de sorties differentes (code[4]
classification independante / code[6] comparaison) partageant le meme titre.
Retitre ancres distinctes ; valeurs citees verifiees contre la sortie commitee
de code[5] (t=2 P_haut FB 0.9878, t=6 P_bas FB 0.9878). 2 cellules markdown
seulement, 17 cellules code byte-identiques. Pas de twin pour ce notebook.

See #17066 (P13-redo, 4/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite PyMC-18 (5/16) -- retitre les 3 lectures en collision

Defaut unique du porteur (organs : dup_reading Lecture x3 cells 6/9/12, split
clean) : trois lectures legitimies de sorties differentes partageant le titre.
Retitres ancres : posterieur gaussien (code[1]-code[2]), rupture miniere
(code[3]), controle par entropie (code[4]). Valeurs citees verifiees contre
les sorties committes (mode t=50 P=0.9875 ; r_hat max 1.0076 sur cp ; taux
3.07->0.94 rapport 3.3x ; information 6.533/0.588 bits). 3 lignes markdown
seulement, 8 cellules code byte-identiques.

See #17066 (P13-redo, 5/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: rebaseline twin Probas-18 apres retitrage PyMC-18 (#17066, 5/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite Infer-1b (6/16) -- decline la collision de clotures

Defaut unique du porteur (organs : dup_closing resume x2 cells 32/86 ; split
clean). Les DEUX cellules sont pre-campagne : retitle nominal seul, contenu
inchange. Le retitle a suffixe ne suffisait pas (CLOSING_RE matche le prefix
mot-cle) : sujet en tete « DureeCycliste1 -- resume de la premiere
application », strictement plus informatif. Les 16 cellules campagne #16071
auditees au passage : titres distincts (1a-7a), zero verbatim/meta, placement
correct. Pas de twin pour ce notebook.

See #17066 (P13-redo, 6/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite Infer-2 (7/16) -- retitre les 2 lectures prediction

Defaut unique du porteur (organs : dup_reading « Interpretation de la
prediction » x2 cells 19/41 ; split clean) : deux lectures legitimies de
sorties differentes (code[5] prediction a 3 obs / code[12] a 9 obs), titre
identique. Retitres ancres ; valeurs verifiees contre les sorties committes
(Gaussian(15,33, 4,613) sigma 2,15 ; Gaussian(16,04, 17,11) sigma 4,14).
2 lignes markdown, 27 cellules code byte-identiques. Twin : entree cote C#
dans probas-2-gaussian-mixtures.yaml (commit suivant).

See #17066 (P13-redo, 7/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: rebaseline twin Probas-2 cote C# apres retitrage Infer-2 (#17066, 7/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite RL-01b (8/16) -- retitre les 6 lectures en collision

Defaut unique du porteur (organs : dup_reading Lecture x6 cells 4/12/15/18/21/33 ;
split clean) : six lectures legitimies de sorties differentes partageant le
titre. Retitres ancres : motifs de bits (code[0]), evaluation bitwise (code[3]),
evaluation LQR (code[4]), desaccords bitwise vs LQR (code[5]), PPO au budget
court (code[6]), tableau comparatif (code[10]). Valeurs citees verifiees contre
les sorties committes (0x3f800000/0xbf800000 ; moyen=500.00 succes=100/100 ;
13.10% de desaccords ; PPO ~456, 49/100). 6 lignes markdown, 14 cellules code
byte-identiques. Pas de twin.

See #17066 (P13-redo, 8/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite RL-06d (9/16) -- decline la collision de clotures

Defaut unique du porteur (organs : dup_closing points cles x2 cells 20/42 ;
split clean) : « Points cles de l'implementation » (mi-notebook) vs « Points
cles a retenir » (Conclusion finale). Sujet en tete « SAC -- points cles de
l'implementation » (prefix mot-cle ne matche plus), contenu inchange, la
Conclusion garde son canonique. 1 ligne markdown, 14 cellules code
byte-identiques. Pas de twin.

See #17066 (P13-redo, 9/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite RL-07b (10/16) -- retitre les 2 lectures en collision

Defaut unique du porteur (organs : dup_reading « Lecture du resultat » x2
cells 3/15 ; split clean) : optimum de la matrice (code[0]) vs taux hysteretic
(code[5]). Retitres ancres ; titres originaux conserves en prefix. 2 lignes
markdown, 10 cellules code byte-identiques. Pas de twin.

See #17066 (P13-redo, 10/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite RL-19 (11/16) -- retitre les 3 lectures en collision

Defaut unique du porteur (organs : dup_reading « Lecture du resultat » x3
cells 6/19/22 ; split clean) : enumeration des etats (code[1]) / manipulation
exacte (code[6]) / tampering par observation (code[7]). Retitres ancres ;
valeurs verifiees contre les sorties committes (32252 etats en 0.29 s, plage
theta 7975-8290 ; ecart +0,815 ; score 88). 3 lignes markdown, 11 cellules
code byte-identiques. Pas de twin.

See #17066 (P13-redo, 11/16)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite RLPT-02 (12/16)

Retitre les 2 lectures « Lecture du resultat » en collision (dup_reading
cells 16/20) : effet GRPO greedy/sampling (code[6]) et multi-seed au
budget court (code[7]). Valeurs verifiees contre les sorties committes
(0.88/0.62/0.700 ; plage 0.479-0.604). Markdown-only, code/outputs
byte-identiques.

See #17066

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Docs: redressement densite RLPT-04 (13/16)

Retitre les 6 lectures « Lecture du resultat » en collision (dup_reading
cells 5/8/10/13/17/21) : politique de depart (code[3]), auto-etiquetage
des rollouts (code[4]), run DPO (code[5]), run GRPO online (code[6]),
multi-seed DPO vs GRPO (code[7]), test Diebold-Mariano (code[8]).
Valeurs verifiees contre les sorties committes (0.688/0.438 ; 31/48 ;
0.016/0.90 ; 4.1/0.250 ; 0.812/39 ; -1.013/0.312). Markdown-only,
code/outputs byte-identiques.

See #17066

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Fix(notebook,#17066): PyMC-02 -- restauration de deux blocs retires sans trace (reserve R2 NanoClaw)

La review NanoClaw du 08/10 releve que « Verdict SOTA » et « Prong B applicable »
ont disparu du carnet sans equivalent au head et sans trace dans l'entry YAML.
Mesure firsthand contre origin/main : confirme.

- cellule 2 : la section « ## Verdict SOTA » (391 caracteres -- moteur utilise,
  alternatives ADVI et numpyro) avait ete tronquee ;
- cellule 27 : la PR a reecrit la lecture du controle predictif -- reecriture
  conservee, c'est une amelioration -- mais la section
  « ### Prong B applicable » (383 caracteres : pourquoi le probleme est assez
  riche pour exercer le moteur) n'a pas suivi la reecriture.

Les deux blocs sont restaures **verbatim** depuis origin/main, sans reecriture.
Markdown seul : aucune re-execution due (C.2). Organe
`check_split_reading_cells.py` sur le carnet : clean.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Fix(notebook,#17066): PyMC-11 -- restauration de la section « Formalisation » retiree sans trace

Le redressement densite a excise la definition du modele generatif LDA
(K sujets, phi_k, theta_d, z_w) de la cellule fuse-3. Mesure au head :
aucune trace -- ni le titre, ni phi_k / theta_d / z_w, ni la phrase
« inference bayesienne sur les variables latentes » -- et aucun marker de
body ne declare ce retrait. Le mandat retire verbatim, paraphrases et
doublons ; il ne retire pas la definition formelle du modele.

Section restauree **verbatim** depuis origin/main : fuse-3 repasse a 2098
caracteres, byte-identique a la base.

Markdown seul : aucune re-execution due (C.2). Cellules code inchangees
(multiset byte-identique 18/18).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Chore(twin,#8057): rebaseline des 5 paires Probas deplacees par le redressement P13

Le gate « Twin parity audit (#8057) » nomme 5 paires en DRIFT introduites par
la branche : Probas-2, Probas-4, Probas-11, Probas-14, Probas-18. Le mouvement
est unilateral et markdown-only (le jumeau C# n'est pas touche) : chaque paire
est rebaselinee cote Python via --update --by myia-po-2024:CoursIA.

Cinq paires et pas une seule : la reserve R5 de NanoClaw relevait que PyMC-14
avait ete modifie sans entree d'audit. PyMC-14 (paire Probas-14) est desormais
couvert. Infer-1b n'est pas une paire enregistree dans twin_pairs.d.

--update est passe APRES le dernier commit de carnet : tout strip outille
ulterieur deplace le blob SHA et invaliderait l'attestation (#8957).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore(twin,#17066): consolider les audits Probas-2 apres rebase -- un seul audit final

Le rebase sur origin/main a integre le raccord de navigation #19778 (cellule 0)
dans Infer-2 cote C# : les shas enregistres par les trois audits de la branche
(pre-rebase) ne decrivent plus aucun blob de l'arbre, et l'index 0022 entrait en
collision avec l'audit po-2027 du meme jour. Les trois fichiers branch-only sont
consolides en 0025, qui porte les shas POST-rebase mesures sur cet arbre
(parite rejouee [OK] avec la copie du script de la branche, comme le fait la CI).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Fix(twin,#8057): collision d'index 0006 apres rebase -- audit unique 0007 (Probas-14)

Le rebase sur main a fait cohabiter deux audits d'index 0006 pour la paire
`probas-14-sequences`, tous deux du 2026-10-08 :
- `0006-2026-10-08-myia-po-2027-CoursIA.yaml` (arrive par main, #19785 : accent
  corrige cote C#) ;
- `0006-2026-10-08-myia-po-2024-CoursIA.yaml` (mon propre rebaseline P13,
  `8f0e6b7c8bc`).

`_latest_audit` triant par NOM (`sorted(glob)`), `po-2027` l'emportait sur
`po-2024` et imposait ses shas : l'organe declarait la paire en DRIFT alors que
les deux cotes etaient simplement ceux du merge. Deux consequences mesurees :
`Twin parity audit (#8057)` -> "1 paire(s) mise(s) en DRIFT par cette PR", et
`Scripts Tests (CPU)` -> `test_audit_index_unique_and_no_identical_duplicates_per_pair`
+ `test_le_registre_de_la_revision_testee_ne_porte_aucun_doublon_intra_revision`.

L'etat reel est un MELANGE, qu'aucun des deux audits ne decrivait :
- Python `630d21e000a0` = le mien (retitrage des 2 lectures en collision du
  redressement densite P13, `b56d3f592bc`) ;
- C# `6646e3a1cd34` = celui de po-2027 (#19785, accent).

Resolution : suppression de mon `0006` (artefact de ma propre branche, jamais
sur main -- le diff de la PR n'en garde aucune trace) puis rebaseline a l'index
libre `0007` par l'organe lui-meme, plus une entree en tete de
`known_differences`. Le fichier de po-2027 reste intact.

Verifie : `check_twin_parity.py --pair "Probas-14 Sequences"` -> OK (157 paires,
OK=154 DRIFT=3, les 3 restants pre-existants a origin/main, cf #8264).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Fix(probas,#17066): lever R1 et R4 de la review NanoClaw -- PyMC-11 (PR #19831)

Deux reserves de la review structurelle du 2026-10-08T01:31Z, markdown-only
(18 cellules code byte-identiques, jumeau C# non touche).

R1 -- « doublon structurel cree » : CONFIRME. La table de references ajoutee par
la tranche (`fuse-26`) n'avait pas d'en-tete et restait collee sous la cellule
`## References`, donnant deux tableaux consecutifs dont un orphelin. En-tete
`### References complementaires` ajoute. Sur le chevauchement annonce : mesure
faite, cette table ne porte pas le Blei-Ng-Jordan 2003 deja cite au-dessus
(recherche `Blei, Ng` dans son texte -> absent) ; elle porte Blei & Lafferty
2006/2007, Mimno 2011, Griffiths & Steyvers 2004, Roberts 2016, Grootendorst
2022. Rien a dedupliquer, l'en-tete seul manquait.

R4 -- « double intro » : CONFIRME. La phrase de definition du topic modeling
etait repetee a l'identique entre `## 1. Introduction au Topic Modeling` et la
cellule suivante ; la seconde occurrence est retiree, le contraste
clustering/melange passant en tete de cellule.

Trace dans `known_differences` de la paire, rebaseline a la suite du present
commit (l'organe lit HEAD, pas le worktree).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Chore(twin,#8057): rebaseline Probas-11 Topic-Models apres le fix R1/R4 (blob deplace, avis 0021)

L'attestation suit le commit precedent : l'organe lit HEAD, et l'edition
markdown de PyMC-11 a deplace le blob.

Verification : scripts/notebook_tools/check_twin_parity.py -> OK (157 paires,
OK=154 DRIFT=3, les 3 restants pre-existants a origin/main, cf #8264).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants