diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-14-DifferentialGames.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-14-DifferentialGames.ipynb index 7c2572274b..660341ffe9 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-14-DifferentialGames.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-14-DifferentialGames.ipynb @@ -1818,7 +1818,7 @@ "tags": [] }, "source": [ - "### Note de reproduction : théorème solide, valeurs imprimées non retrouvées aux chiffres près\n", + "> **Note de reproduction : théorème solide, valeurs imprimées non retrouvées aux chiffres près :**\n", "\n", "Le **phénomène** se reproduit complètement : la recherche aléatoire dans la famille exacte du papier trouve une fraction de jeux à Nash selle strict du même ordre que la figure 1 de l'article, l'évitement presque sûre du Nash se vérifie sur une instance explicite, et les contrôles mono-agent/zéro-somme convergent.\n", "\n", diff --git a/MyIA.AI.Notebooks/Probas/Infer/Infer-3-Factor-Graphs.ipynb b/MyIA.AI.Notebooks/Probas/Infer/Infer-3-Factor-Graphs.ipynb index e8381cc8e9..1d71902f69 100644 --- a/MyIA.AI.Notebooks/Probas/Infer/Infer-3-Factor-Graphs.ipynb +++ b/MyIA.AI.Notebooks/Probas/Infer/Infer-3-Factor-Graphs.ipynb @@ -296,7 +296,7 @@ "| **Major Auburn** | Homme militaire, cheveux auburn | 70% |\n", "| **Miss Grey** | Jeune femme, cheveux gris | 30% |\n", "\n", - "### Indices\n", + "> **Indices :**\n", "\n", "1. **Arme du crime** : Revolver ou Dague\n", " - Auburn utiliserait un revolver (90%) ou une dague (10%)\n", diff --git a/MyIA.AI.Notebooks/Probas/Infer/Infer-8-TrueSkill.ipynb b/MyIA.AI.Notebooks/Probas/Infer/Infer-8-TrueSkill.ipynb index bc716aef77..d759f1c257 100644 --- a/MyIA.AI.Notebooks/Probas/Infer/Infer-8-TrueSkill.ipynb +++ b/MyIA.AI.Notebooks/Probas/Infer/Infer-8-TrueSkill.ipynb @@ -3541,7 +3541,7 @@ "3. Affichez un tableau de l'evolution : pour chaque match, montrez le mu de chaque joueur\n", "4. *(Bonus)* : Après le match 5 (upset Leo bat Zoe), comment evolue le sigma de Zoe par rapport a l'avant-match 5 ? L'upset augmente-t-il l'incertitude ?\n", "\n", - "### Indices\n", + "> **Indices :**\n", "\n", "- Initialisez `TrueSkillOnline` avec les paramètres par defaut\n", "- Après chaque `EnregistrerMatch()`, appelez `GetSkill()` pour chaque joueur et stockez `GetMean()` et `Math.Sqrt(GetVariance())`\n", diff --git a/MyIA.AI.Notebooks/Search/Applications/Hybrid/App-18-HyperparameterTuning.ipynb b/MyIA.AI.Notebooks/Search/Applications/Hybrid/App-18-HyperparameterTuning.ipynb index 17ba5d66c7..12ae480a17 100644 --- a/MyIA.AI.Notebooks/Search/Applications/Hybrid/App-18-HyperparameterTuning.ipynb +++ b/MyIA.AI.Notebooks/Search/Applications/Hybrid/App-18-HyperparameterTuning.ipynb @@ -1397,7 +1397,7 @@ "| **PSO** | Espace continu, bonne convergence, facile a implementer |\n", "| **Grid Search** | Peu de dimensions, comprehension du problème, reproductibilite |\n", "\n", - "### Conseils pratiques\n", + "> **Conseils pratiques :**\n", "\n", "1. **Commencer par Random Search** pour estimer les ranges\n", "2. **Utiliser l'optimisation bayesienne** pour le tuning fin\n", diff --git a/scripts/notebook_tools/twin_pairs.d/app-18-hyperparametertuning.yaml b/scripts/notebook_tools/twin_pairs.d/app-18-hyperparametertuning.yaml index 9df78a8bcf..0799b122fc 100644 --- a/scripts/notebook_tools/twin_pairs.d/app-18-hyperparametertuning.yaml +++ b/scripts/notebook_tools/twin_pairs.d/app-18-hyperparametertuning.yaml @@ -6,6 +6,7 @@ bridge_verdict: SOTA-OK bridge_verdict_reason: "Python = `sklearn` (RandomForestClassifier, GradientBoostingClassifier, SVC, cross_val_score, Pipeline, StandardScaler) + `optuna` (optimisation d'hyperparametres SOTA) + `scipy.optimize`/`scipy.stats`. C# = tranche 1 BCL pure (grid/random/bayes/GA/PSO from-scratch) + tranche 2 (2026-08-15) branche **ML.NET AutoML 0.23.0** (`CreateBinaryClassificationExperiment(30).Execute`): le jumeau C# dispose d'un moteur de production qui cherche dans l'espace des modeles (FastTree, LightGBM, SDCA, reg. logistique, perceptron) ET de leurs hyperparametres — parite lib-vs-lib atteinte (sklearn+Optuna <-> ML.NET AutoML). Mesures : split deterministe TrainTestSplit(0.2, seed 424242) = 165/35, AutoML 405 essais/30 s, meilleur entraineur SdcaLogisticRegressionBinary, accuracy test 0.7714 / AUC 0.7467 vs meilleure config k-NN from-scratch (Grid, k=49) 0.7143 sur le MEME split — AutoML devant de 0.0571. Env repare (regle F) : dotnet-interactive 1.0.712001 (Roslyn 5.0.0.0) requis par AutoML 0.23.0 (CodeAnalysis.CSharp 4.13). parity_level: native-both (les deux twins branchent une lib SOTA)." known_differences: + - "Sweep #16472 g2-residu-b (2026-09-18, po-2025) : demotion md-only `### Conseils pratiques` -> `> **Conseils pratiques :**` (convention hint-as-heading #8647) dans le twin Python ; 0 cellule code, 0 output touches -- parite semantique inchangee, attestee par audit firsthand." - "Edition Prong B #10019/#3801 (2026-08-08, po-2026) : le jumeau Python remplace Breast Cancer (dataset saturant, ecart 0,0022 = bruit) par un make_classification dur (flip_y 0,20, class_sep 0,55, desequilibre) pour rendre le RandomForest sensible a ses hyperparametres (paysage rugueux, ecart 0,021 entre les 5 optimiseurs). Le modele (RF) est INCHANGE donc le md[0] C# 'App-18 optimise un Random Forest' reste exact. Le C# twin (k-NN + gaussiens chevauchants) etait deja discriminant, non touche. Parite semantique preservee : les deux demontrent le tuning d'hyperparametres sur un paysage accidente." - "Socle pedagogique commun : Hyperparameter tuning (scipy.optimize + Gaussian Process / Bayes opt) comme application canonique. Les deux twins couvrent le meme socle theorique (formulation variables/domaines/contraintes, resolution, experimentation) avec parite semantique sur les concepts cibles." - "Idiomes framework : Python = scipy.optimize + scipy.stats norm + sklearn + optuna ; C# = BCL pure (System.*) pour les 5 optimiseurs from-scratch (cellules 4-20) + Microsoft.ML.AutoML 0.23.0 pour le moteur de production (tranche 2, cellule 26)." diff --git a/scripts/notebook_tools/twin_pairs.d/app-18-hyperparametertuning/0007-2026-09-18-myia-po-2025-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/app-18-hyperparametertuning/0007-2026-09-18-myia-po-2025-CoursIA.yaml new file mode 100644 index 0000000000..3f7507988e --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/app-18-hyperparametertuning/0007-2026-09-18-myia-po-2025-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-18' +by: myia-po-2025:CoursIA +python_sha: 12ae480a17fd5ca2ff927ba28454c1301eaa63b1 +csharp_sha: d1a40d93d1e1e33d98d3ea587e08700047bfcadb +content_python_sha: 3c15a1539b46f1e36d49e0bdf2583784bae734bf33031fc98ab03378c3b3c9c6 +content_csharp_sha: 61f67ec6bb0f8f7dc3d71215c168723efe443be68a543bc71bb069b011e336ea diff --git a/scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames.yaml b/scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames.yaml index 5e95cfe6dd..1e66ea3181 100644 --- a/scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames.yaml +++ b/scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames.yaml @@ -6,6 +6,7 @@ bridge_verdict: SOTA-OK bridge_verdict_reason: "Tranche 2 (2026-08-15) : pont MathNet.Numerics branche sur la paire GT-14. Le socle reste from-scratch (la lecon), mais la verification croisee s appuie desormais sur le moteur SOTA .NET MathNet.Numerics 5.0.0 (RK4 RungeKutta.FourthOrder + NelderMeadSimplex) : concordance vecteur-a-vecteur L-infini = 0 sur les deux experiences (ODE feedback Nash + optimum Stackelberg statique), gabarit #11058. Le moteur SOTA est invoque reellement (pas un stub) ; la paire reste pedagogiquement from-scratch-first, la verification par moteur tiers valide la reimplementation." known_differences: + - "Sweep #16472 g2-residu-b (2026-09-18, po-2025) : demotion md-only de l'aside `### Note de reproduction...` en blockquote (convention hint-as-heading #8647) dans le twin Python ; 0 cellule code, 0 output touches -- parite semantique inchangee, attestee par audit firsthand." - '2026-08-31 : ATTESTATION UNILATERALE (PR #13659, lane myia-ai-01:CoursIA) -- reparation d''echappements JSON manges dans le markdown du cote Python. CAUSE : dans le .ipynb, la sequence dollar-\bot-dollar ecrite avec UN SEUL antislash est lue par le parseur JSON comme l''echappement \b (backspace, U+0008) ; la source chargee porte un caractere de controle et le notebook rend un dollar-ot-dollar prive de sa commande LaTeX. FIX : doubler l''antislash (\\bot). Le DRIFT est UNILATERAL parce que le DEFAUT l''est : la contrepartie GameTheory-14-DifferentialGames-Csharp.ipynb (C#), 17 cellules markdown, a ete scannee sous controle positif (le litteral defectueux passe a json.loads doit rendre U+0008 -- assertion verifiee avant le scan) et ne porte AUCUN caractere de controle U+0008/U+000B/U+000C. Il n''y a donc rien a reparer de ce cote : l''attestation ne consacre aucune asymetrie de contenu. PORTEE DU DIFF cote repare (comparaison des JSON parses origin/main -> HEAD) : markdown uniquement, 0 cellule code touchee, 0 sortie modifiee, 0 execution_count deplace, 0 cellule ajoutee ou retiree.' - "Socle pedagogique commun : jeux differentiels et jeux dynamiques, equilibres de Stackelberg (von Stackelberg 1934) leader-follower, duopole a demande lineaire, comparaison avec Cournot, decisions dynamiques et leadership strategique." - "Idiomes framework : Python = `scipy.integrate.odeint` (integration ODE) + `scipy.optimize.minimize` + `numpy` + `matplotlib`. C# = BCL .NET 9 pur (`System.*`) pour la tranche 1 (RK4 from-scratch, formes analytiques Stackelberg/Cournot) + **tranche 2** branchant le moteur SOTA .NET `MathNet.Numerics` 5.0.0 (RungeKutta.FourthOrder + NelderMeadSimplex) pour la verification croisee. 0 numpy, 0 scipy des deux cotes C#." diff --git a/scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames/0006-2026-09-18-myia-po-2025-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames/0006-2026-09-18-myia-po-2025-CoursIA.yaml new file mode 100644 index 0000000000..f0625d64da --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames/0006-2026-09-18-myia-po-2025-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-18' +by: myia-po-2025:CoursIA +python_sha: 660341ffe9c456fc34d7048ff38d5c4dcab029ae +csharp_sha: 1b9ed3c0035b6ab80e30dd843b4b3a0d6fa0886c +content_python_sha: 1edacfe976a27945db8fae3d80f0cc3df76aaea67e325d4111d2d0762d71761c +content_csharp_sha: 03f8eca2c4268cffbefe5b39db80c0dee2c24e43037a3b2a9cb285854c2df4aa diff --git a/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs.yaml b/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs.yaml index 0856ff86b9..32d82df2ed 100644 --- a/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs.yaml +++ b/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs.yaml @@ -7,6 +7,7 @@ bridge_verdict: SOTA-OK bridge_verdict_reason: "Modele nominal lib-vs-lib cite par owner #10382 (\"PyMC vs Infer, 2 moteurs qui brillent\") : C# = Microsoft Infer.NET (Microsoft.ML.Probabilistic, NuGet officiel, native .NET, inférence variationnelle EP/VMP) et Python = PyMC (pip pymc, native Python, NUTS/HMC + ADVI). Chaque cote atteint le moteur SOTA de son ecosysteme probabiliste -- ni pont intermediaire ni reimplementation. Aucune asymetrie de machinerie a corriger. Verifie firsthand : C# Microsoft.ML.Probabilistic refs + execution_count, Python pymc imports." known_differences: + - "Sweep #16472 g2-residu-b (2026-09-18, po-2025) : demotion md-only `### Indices` -> `> **Indices :**` (convention hint-as-heading #8647) dans le twin Infer (role C#) ; 0 cellule code, 0 output touches -- parite semantique inchangee, attestee par audit firsthand." - '2026-09-16 (myia-po-2023:CoursIA) #16364 : REBASELINE cote Python apres densification markdown (#13410) : 1227 -> 1915 mots (+2 cellules d''interpretation diagnostic MCMC et Monty Hall, 4 extensions), markdown-only, 9/9 cellules code byte-identiques, ids originaux preserves. content_csharp_sha inchange : le jumeau C# n''est pas touche.' - '2026-08-19 (myia-ai-01) #11685 : REBASELINE cote C# apres reparation. Le merge 9881553 (#11622) avait re-execute Infer-3 sur une machine sans Graphviz -- le helper .NET imprime l''echec au lieu de lever, donc 6 bannieres "Problem with converting DOT to SVG" + chemins machine se sont retrouves dans les sorties, et l''audit precedent a enregistre un csharp_sha (bb769dc0f648) qui n''a JAMAIS ete le blob du fichier (test_twin_registry_integrity rouge sur main depuis ce merge). Repare par re-execution reelle avec dot sur le PATH (Graphviz 14.1.3 present sur ai-01, seulement absent du PATH) puis strip_probe_banner.py, --update en DERNIER (#8957). Volume de rendu verifie contre la base de fusion : blocs SVG 13356 -> 13362 et 28948 -> 28954 B, svg 2 -> 2 -- aucun livrable rendu perdu. content_python_sha inchange : le jumeau Python n''est pas touche.' - 'Socle pedagogique commun : graphes de facteurs et variables aleatoires modelise dans les deux stacks.' diff --git a/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs/0009-2026-09-18-myia-po-2025-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs/0009-2026-09-18-myia-po-2025-CoursIA.yaml new file mode 100644 index 0000000000..c5fecff19e --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs/0009-2026-09-18-myia-po-2025-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-18' +by: myia-po-2025:CoursIA +python_sha: 8237ead4a428fb0939d9dd58c75f9a611f78b369 +csharp_sha: 1d71902f691751a1722d19b3c92f498900b67165 +content_python_sha: eaaa5547149fcb21b01fbf9a65772347fdde035cc254324edf15c89ab2217d17 +content_csharp_sha: 580e6da433cf218b95ffe2e479c953314996c3b70189aa56dddb22e3df8fb22a diff --git a/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs/0010-2026-09-21-myia-po-2025-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs/0010-2026-09-21-myia-po-2025-CoursIA.yaml new file mode 100644 index 0000000000..dbd04b7f95 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/probas-3-factor-graphs/0010-2026-09-21-myia-po-2025-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-21' +by: myia-po-2025:CoursIA +python_sha: 2fd719b9ac10f6756066ae01e31e23c4cd64afbf +csharp_sha: 1d71902f691751a1722d19b3c92f498900b67165 +content_python_sha: bdae44e7b6b0b0057a38e4c7093089780e905451a2b4c9207cc239d105f7ce81 +content_csharp_sha: 580e6da433cf218b95ffe2e479c953314996c3b70189aa56dddb22e3df8fb22a diff --git a/scripts/notebook_tools/twin_pairs.d/probas-8-trueskill.yaml b/scripts/notebook_tools/twin_pairs.d/probas-8-trueskill.yaml index 3a03d1d351..4585158f67 100644 --- a/scripts/notebook_tools/twin_pairs.d/probas-8-trueskill.yaml +++ b/scripts/notebook_tools/twin_pairs.d/probas-8-trueskill.yaml @@ -7,6 +7,7 @@ bridge_verdict: SOTA-OK bridge_verdict_reason: "Modele nominal lib-vs-lib cite par owner #10382 (\"PyMC vs Infer, 2 moteurs qui brillent\") : C# = Microsoft Infer.NET (Microsoft.ML.Probabilistic, NuGet officiel, native .NET, inférence variationnelle EP/VMP) et Python = PyMC (pip pymc, native Python, NUTS/HMC + ADVI). Chaque cote atteint le moteur SOTA de son ecosysteme probabiliste -- ni pont intermediaire ni reimplementation. Aucune asymetrie de machinerie a corriger. Verifie firsthand : C# Microsoft.ML.Probabilistic refs + execution_count, Python pymc imports." known_differences: + - "Sweep #16472 g2-residu-b (2026-09-18, po-2025) : demotion md-only `### Indices` -> `> **Indices :**` (convention hint-as-heading #8647) dans le twin Infer (role C#) ; 0 cellule code, 0 output touches -- parite semantique inchangee, attestee par audit firsthand." - '2026-08-27 (myia-po-2027:CoursIA-2) #12752 : REBASELINE cote Python apres re-execution complete fresh kernel (44 cellules, ratchet Exec-sequence). Cause du drift : bandeau pytensor "g++ not available, if using conda: conda install gxx" imprime par l''import pymc 6.3.1 sans compilateur C, qualifie TOOL_FAILURE par le ratchet Output-failure. Re-exec avec PYTENSOR_FLAGS=cxx= (mode CXX desactive explicite, meme comportement, plus de bandeau). Resultats seedes IDENTIQUES au blob precedent (r_hat 1.002/1.001, ess 1761/1884, sigma mu 6.43/6.44, "took 21 seconds") -- parite semantique intacte. Sources inchangees (0 cellule source modifiee), cote C# non touche.' - '2026-08-19 (myia-ai-01) #11685 : REBASELINE cote C# apres reparation. Le merge 9881553 (#11622) avait re-execute Infer-8 sur une machine sans Graphviz -- le helper .NET imprime l''echec au lieu de lever, donc 12 bannieres "Problem with converting DOT to SVG" + chemins machine se sont retrouves dans les sorties, et l''audit precedent a enregistre un csharp_sha (532e6b70ee07) qui n''a JAMAIS ete le blob du fichier (test_twin_registry_integrity rouge sur main depuis ce merge). Repare par re-execution reelle avec dot sur le PATH (Graphviz 14.1.3 present sur ai-01, seulement absent du PATH) puis strip_probe_banner.py, --update en DERNIER (#8957). Volume de rendu verifie contre la base de fusion : blocs SVG 18093 -> 18099, 22104 -> 22110, 35287 -> 35293 et 44897 -> 44903 B, svg 4 -> 4 -- aucun livrable rendu perdu. content_python_sha inchange : le jumeau Python n''est pas touche.' - "2026-07-28 (myia-po-2026) #8704/#8715 : backfill section 14 \"Pour aller plus loin\" -- formules fermees EP V(t)/W(t)/tau^2 (Herbrich-Minka-Graepel 2007) ajoutees en markdown + NOUVELLE cellule code .NET executee (#r MathNet.Numerics, computation closed-form). Add-only (65 -> 69 cellules), 0 cellule existante alteree, 0 output drift sur les sections 1-13. Variance utilise la forme canonique sigma^2*(1-(sigma^2/c^2)*W(t)) (facteur de gain de Kalman sigma^2/c^2 present) -> posterior sigma=7,19 match exact Infer.NET cellule 16 N(29,21,7,19). python_sha inchange a ce stade (note: PyMC-8 cell29 portait la variante sans facteur sigma^2/c^2 -> bug source trace/corrige en #8718). csharp_sha rebaseline suite au changement de blob." diff --git a/scripts/notebook_tools/twin_pairs.d/probas-8-trueskill/0011-2026-09-18-myia-po-2025-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/probas-8-trueskill/0011-2026-09-18-myia-po-2025-CoursIA.yaml new file mode 100644 index 0000000000..09164f7d32 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/probas-8-trueskill/0011-2026-09-18-myia-po-2025-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-18' +by: myia-po-2025:CoursIA +python_sha: 22f41c96e949b00e019a8ad46907e0a0168899d9 +csharp_sha: d759f1c25796d49a8ac64e7ef2c9239b6a8546db +content_python_sha: 251a921cc9421e445bc57e380c154386308606c7dd6bf3fa9cab31912df9f13a +content_csharp_sha: 2b4c6f25d97337a86264ba3a7be01756f47107385ba29f7399cc2844be69ad34