From 5d3a719fca54d057ee1fb5c69f32f8310db69c94 Mon Sep 17 00:00:00 2001 From: jsboige Date: Tue, 3 Nov 2026 04:29:30 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Fix(gametheory):=20contre-audit=20fourn?= =?UTF-8?q?=C3=A9e=20=E2=80=94=208=20carnets=20GameTheory=20repli=C3=A9s?= =?UTF-8?q?=20en=20une=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Repli des 8 PRs de la classe contre-audit GameTheory en une seule PR (mandat user 02/11 #24280 "thin-prs-go-out-in-class-batches"). Cherry-pick des commits existants ; 7 carnets byte-identiques a la tete de leur PR d'origine. GT-06 reconcilie sa barre de nav avec l'ordre courant de main (conflit additif : main a reordonne le lien 06i entre-temps) en y appliquant le fix 5->5c de la PR d'origine. - GT-06 #23995 (0d74329208, 4da630baab, 5e0c807135) - GT-16b #24176 (40cca9d2a5) - GT-16g #24190 (88d579e399) - GT-16h #24196 (3c8257398d) - GT-16i #24202 (6523d4d5db) - GT-16j #24204 (7f9945ff79) - GT-18b #24226 (e199bbfea0) - GT-18c #24241 (f5770bdd6b) Co-Authored-By: Claude Haiku 5.5 --- .../GameTheory/GameTheory-06-EvolutionTrust-Python.ipynb | 4 ++-- ...GameTheory-16b-Automated-Mechanism-Design-Python.ipynb | 4 ++-- ...ameTheory-16g-Populations-Othman-Sandholm-Python.ipynb | 2 +- .../GameTheory-16h-Cooperation-LLM-Python.ipynb | 6 +++--- ...eTheory-16i-Appariage-Stable-Gale-Shapley-Python.ipynb | 2 +- ...ameTheory-16j-Screening-Loyer-Information-Python.ipynb | 4 ++-- .../GameTheory-18b-Casser-la-Composition-Python.ipynb | 2 +- .../GameTheory/GameTheory-18c-Humour-Banc-Python.ipynb | 8 ++++---- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-06-EvolutionTrust-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-06-EvolutionTrust-Python.ipynb index c5dabb895b8..c7024832c82 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-06-EvolutionTrust-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-06-EvolutionTrust-Python.ipynb @@ -16,7 +16,7 @@ "source": [ "# GameTheory-06-EvolutionTrust-Python\n", "\n", - "**Navigation** : [<< 5-ZeroSum-Minimax](GameTheory-05-ZeroSum-Minimax-Python.ipynb) | [Index](README.md) | [06i — Ensembles limites](GameTheory-06i-Ensembles-Limites-Poincare-Bendixson-Python.ipynb) | [7-ExtensiveForm >>](GameTheory-07-ExtensiveForm-Python.ipynb)\n", + "**Navigation** : [<< 5c-KKT-Dualite](GameTheory-05c-KKT-Dualite-Lagrangienne-Python.ipynb) | [Index](README.md) | [06i — Ensembles limites](GameTheory-06i-Ensembles-Limites-Poincare-Bendixson-Python.ipynb) | [7-ExtensiveForm >>](GameTheory-07-ExtensiveForm-Python.ipynb)\n", "\n", "## Evolution de la Confiance et Dilemme du Prisonnier Itere\n", "\n", @@ -2939,7 +2939,7 @@ "source": [ "***\n", "\n", - "**Notebook précédent**: [GameTheory-05-ZeroSum-Minimax-Python](GameTheory-05-ZeroSum-Minimax-Python.ipynb) \n", + "**Notebook précédent**: [GameTheory-05c-KKT-Dualite-Lagrangienne-Python](GameTheory-05c-KKT-Dualite-Lagrangienne-Python.ipynb) \n", "**Notebook suivant**: [GameTheory-07-ExtensiveForm-Python](GameTheory-07-ExtensiveForm-Python.ipynb) \n", "**Navigation — prolongement spatial** : [GameTheory-14c — Jeux spatiaux : la structure spatiale soutient-elle la coopération ?](GameTheory-14c-Jeux-Spatiaux-Cooperation-Python.ipynb)" ] diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynb index 3da05f4813d..f692acc67b0 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynb @@ -200,7 +200,7 @@ "# Cellule 3 — Implémentation du générateur (version compacte pour H.3 < 30s)\n", "#\n", "# Domaine : 2 agents, 2 types, 2 issues, paiements ∈ {0, 1}.\n", - "# (Réduit depuis {0, 1, 2} pour rester tractable : 16 issues × 16 paiements = 256 candidats.)\n", + "# (Réduit depuis {0, 1, 2} pour rester tractable : 16 issues × 256 paiements = 4096 candidats.)\n", "# On garde l'esprit \"énumération + tri\" mais l'espace est plus petit.\n", "\n", "PAYMENT_RANGE_FAST = (0, 1)\n", @@ -918,7 +918,7 @@ "\n", "***\n", "\n", - "**Refs** : #12211 · Sandholm 2002 (AMDA) · Conitzer & Sandholm 2002 · Vervaeke #11488\n", + "**Refs** : #12211 · Sandholm 2002 (AMDA) · Conitzer & Sandholm 2003 · Vervaeke #11488\n", "\n" ] }, diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-16g-Populations-Othman-Sandholm-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-16g-Populations-Othman-Sandholm-Python.ipynb index 8547233eb9d..a246a376b9f 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-16g-Populations-Othman-Sandholm-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-16g-Populations-Othman-Sandholm-Python.ipynb @@ -22,7 +22,7 @@ "N paires tirées selon une distribution sur les politiques.\n", "\n", "**Déconflit** : ce carnet ne réécrit pas le 16e (pilote fondateur) ni les\n", - "16/16b/16c/16d (mechanism design). Il **re-gèle** le protocole §0 sur des\n", + "16/16b/16c (mechanism design). Il **re-gèle** le protocole §0 sur des\n", "populations au lieu d'une paire. La formalisation Lean de la Proposition 6\n", "(#12343, §1.1 du 16e) reste propriétaire du owner.\n", "\n", diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynb index ccdc7006767..b892a6fdccc 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynb @@ -223,7 +223,7 @@ "text": [ "§1 — 6 politiques chargees : ['tft', 'generous_tft', 'suspicious_tft', 'always_defect', 'uniform_random_seed', 'llm_proxy_tft']\n", " Payoff matrix : T=5, R=3, P=1, S=0\n", - " Structure dilemme : T > R > P > S, 2R > T + S (8 > 5)\n" + " Structure dilemme : T > R > P > S, 2R > T + S (6 > 5)\n" ] } ], @@ -290,7 +290,7 @@ "assert len(POLICIES) >= 5, f\"Au moins 5 politiques (j'ai {len(POLICIES)}).\"\n", "print(f\"§1 — {len(POLICIES)} politiques chargees : {list(POLICIES.keys())}\")\n", "print(\" Payoff matrix : T=5, R=3, P=1, S=0\")\n", - "print(\" Structure dilemme : T > R > P > S, 2R > T + S (8 > 5)\")" + "print(\" Structure dilemme : T > R > P > S, 2R > T + S (6 > 5)\")" ] }, { @@ -854,7 +854,7 @@ "\n", "- Pas de réécriture de `16e` (pilote fondateur Othman–Sandholm SAGT 2009, COMPLETED) ni de `16g` (populations, MERGED via #19888).\n", "- S'inscrit dans le sillage « **stratégies de populations LLM** » du réservoir #14468 (Coopération/stratégie de populations LLM).\n", - "- Pas d'overlap avec la formalisation Lean 16f (Munkres assignment) ni avec 16b/16c/16d (mechanism design pur)." + "- Pas d'overlap avec la formalisation Lean de l'affectation (Kuhn-Munkres, assignment_lean/) ni avec 16b/16c (mechanism design pur)." ] }, { diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-16i-Appariage-Stable-Gale-Shapley-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-16i-Appariage-Stable-Gale-Shapley-Python.ipynb index cdbb8d4397e..a8f4ed4d86f 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-16i-Appariage-Stable-Gale-Shapley-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-16i-Appariage-Stable-Gale-Shapley-Python.ipynb @@ -18,7 +18,7 @@ "\n", "**GameTheory-16i** (sous-famille *matching*) — **approfondissement** du [carnet 16](GameTheory-16-MechanismDesign-Python.ipynb) §5, qui y introduit déjà l'algorithme, la stabilité et l'avantage du côté proposeur.\n", "\n", - "L'**appariage stable** (*mariage stable*) de **Gale et Shapley (1962)** a valu à **Lloyd Shapley le prix Nobel d'économie 2012**. Le carnet 16 en pose les bases ; ici on pousse la **facette d'incitation** — la question que le §5 ne fait qu'évoquer à travers le théorème de **Gibbard–Satterthwaite** :\n", + "L'**appariage stable** (*mariage stable*) de **Gale et Shapley (1962)** a valu à **Lloyd Shapley le prix Nobel d'économie 2012**. Le carnet 16 en pose les bases ; ici on pousse la **facette d'incitation** — la question que le §6 ne fait qu'évoquer à travers le théorème de **Gibbard–Satterthwaite** :\n", "\n", "> Un agent peut-il améliorer sa situation en **mentant sur ses préférences** ?\n", "\n", diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-16j-Screening-Loyer-Information-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-16j-Screening-Loyer-Information-Python.ipynb index e2d23a3b8f4..081dea45847 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-16j-Screening-Loyer-Information-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-16j-Screening-Loyer-Information-Python.ipynb @@ -560,7 +560,7 @@ "source": [ "### Lecture\n", "\n", - "Le coût de l'asymétrie **croît de façon convexe** avec l'écart de type : $\\approx 0.04$\n", + "Le coût de l'asymétrie **croît de façon concave** avec l'écart de type : $\\approx 0.04$\n", "pour $\\theta_H=1.25$, $0.083$ pour $\\theta_H=2$, $\\approx 0.10$ pour $\\theta_H=3$. Plus\n", "les types sont différents, plus le loyer à verser au type haut (et la distorsion du type\n", "bas) sont gros — le résultat qu'on attendait, **mesuré** plutôt que supposé.\n" @@ -770,7 +770,7 @@ "- Ce coût se **décompose** de façon exacte en loyer (type haut) + distorsion (type bas) —\n", " ici loyer $1/18$ + distorsion $1/36$ = coût espéré $1/12$, ce qui n'est **pas** un\n", " partage 50/50 mais une conséquence des paramètres choisis.\n", - "- Le coût **croît convexe** avec l'écart de type : l'asymétrie d'information coûte d'autant\n", + "- Le coût **croît concave** avec l'écart de type : l'asymétrie d'information coûte d'autant\n", " plus cher que les types sont différents.\n", "\n", "C'est le fondement des mécanismes de §16 (conception de mécanismes) : tout contrat qu'on\n", diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-18b-Casser-la-Composition-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-18b-Casser-la-Composition-Python.ipynb index cce108f8780..76d8dbb8f1a 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-18b-Casser-la-Composition-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-18b-Casser-la-Composition-Python.ipynb @@ -16,7 +16,7 @@ "- **Surface A — la sélection n'est pas compositionnelle.** Quand une meilleure réponse locale est *multivoque* (plateau d'optima) et que les paiements sont *couplés*, composer des sélections d'argmax locaux produit un profil qui n'est pas un équilibre du jeu composé. La propriété de Hedges, dans sa forme exacte, porte sur les *correspondances* d'ensembles ; la lecture fonctionnelle du jouet GT-18 — composer des points — ne survit qu'univoque.\n", "- **Surface B — la frontière de contraction.** La convergence de la boucle GT-18 tient parce que l'update est (presque) contractante. En balayant le pas d'update, la boucle passe de la convergence monotone au 2-cycle exact, puis à l'oscillation persistante — et la frontière mesurée coïncide avec la borne de Banach, exactement.\n", "\n", - "Références : Hedges (2015), *The composition of games* ; GT-18 (`GameTheory-18-Open-Games-et-Lentilles-Python.ipynb`)." + "Références : Ghani, N., Hedges, J., Winschel, V., Zahn, P. (2018), *Compositional Game Theory* (LICS '18, arXiv:1603.04641) ; GT-18 (`GameTheory-18-Open-Games-et-Lentilles-Python.ipynb`)." ] }, { diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-18c-Humour-Banc-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-18c-Humour-Banc-Python.ipynb index ee062dba550..5ff7edd8cfe 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-18c-Humour-Banc-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-18c-Humour-Banc-Python.ipynb @@ -2121,9 +2121,9 @@ "\n", "- **Naïf** : P=0,500, R=1,000, F1=0,667 — il attrape tous les vrais positifs (R=1) mais au prix de 6 faux positifs (toute cellule `rire_sans_recadrage` est classée `humour_reussi` parce que `laugh=True`). La moitié de ses prédictions `humour_reussi` est fausse.\n", "- **Partage** : P=1,000, R=1,000, F1=1,000 — parfait sur le sous-ensemble. La section circularité (cell[43-45]) montrera **pourquoi ce chiffre n'est pas un résultat** : les features sont dérivées du label, l'identité est constructive.\n", - "- **LLM `anthropic/claude-haiku-4.5`** (canal épinglé OpenRouter) : P=0,294, R=0,833, F1=0,435 — un régime inverse du naïf : sur 6 vrais `humour_reussi`, il en attrape 5 (R=0,833), mais en prédisant la classe positive bien trop large — 12 faux positifs pour 5 vrais positifs (P=0,294). Il ratisse large : presque tout ce qui ressemble de près à une blague est classé positif.\n", + "- **LLM `anthropic/claude-haiku-4.5`** (canal épinglé OpenRouter) : P=0,312, R=0,833, F1=0,455 — un régime inverse du naïf : sur 6 vrais `humour_reussi`, il en attrape 5 (R=0,833), mais en prédisant la classe positive bien trop large — 11 faux positifs pour 5 vrais positifs (P=0,312). Il ratisse large : presque tout ce qui ressemble de près à une blague est classé positif.\n", "\n", - "La lecture honnête : le LLM **n'est pas évalué sur le même terrain** que les détecteurs à règles. Ces derniers lisent des features booléennes dérivées du label ; le LLM ne voit que le texte. Le F1=0,435 du LLM n'est donc pas « moins bon que 1,000 » — il est **incomparable** au 1,000, qui mesure une identité algébrique, pas une capacité de classification. La section circularité (cell[43-45]) formalise exactement cette réserve." + "La lecture honnête : le LLM **n'est pas évalué sur le même terrain** que les détecteurs à règles. Ces derniers lisent des features booléennes dérivées du label ; le LLM ne voit que le texte. Le F1=0,455 du LLM n'est donc pas « moins bon que 1,000 » — il est **incomparable** au 1,000, qui mesure une identité algébrique, pas une capacité de classification. La section circularité (cell[43-45]) formalise exactement cette réserve." ] }, { @@ -2433,7 +2433,7 @@ "- **Mais l'IC dégénéré est la signature d'un pipeline déterministe**, pas d'une mesure confiante : un bootstrap non paramétrique sur un classifieur qui est une fonction déterministe des labels rend toujours la même valeur, donc un intervalle de largeur nulle. Ce n'est pas une forte confiance, c'est l'absence de stochasticité.\n", "- **La trace algébrique** l'explique : `label → features_from_label → reframe_detector` est une **involution** (sauf pour `recadrage_sans_rire` qui tombe en `rien` — un cas où le détecteur est strictement plus conservateur que l'annotation). Le détecteur inverse la construction des features, donc il ne peut pas se tromper sur un Argumentum, fût-il tenu à l'écart.\n", "\n", - "La réserve structurelle est posée en cell[45] : le F1=1,000 **ne mesure pas la théorie du partage sur le corpus Argumentum**, il mesure l'identité de construction features ↔ label. L'écart avec le LLM épinglé (haiku-4.5, F1 = 0,435) n'est pas un résultat : c'est l'écart entre un détecteur évalué sur son terrain de construction et un modèle évalué hors du sien. La voie de validation réelle est #12756 (features annotées depuis le texte, indépendamment du label)." + "La réserve structurelle est posée en cell[45] : le F1=1,000 **ne mesure pas la théorie du partage sur le corpus Argumentum**, il mesure l'identité de construction features ↔ label. L'écart avec le LLM épinglé (haiku-4.5, F1 = 0,455) n'est pas un résultat : c'est l'écart entre un détecteur évalué sur son terrain de construction et un modèle évalué hors du sien. La voie de validation réelle est #12756 (features annotées depuis le texte, indépendamment du label)." ] }, { @@ -2465,7 +2465,7 @@ "Conséquence directe : le F1 = 1,000 du banc **ne mesure pas la théorie du partage\n", "sur le corpus Argumentum** — il mesure l'identité de construction features ↔\n", "label. Tant que les features ne sont pas annotées indépendamment du label,\n", - "l'écart avec le LLM épinglé (haiku-4.5, F1 = 0,435) n'est pas un résultat : c'est l'écart entre un\n", + "l'écart avec le LLM épinglé (haiku-4.5, F1 = 0,455) n'est pas un résultat : c'est l'écart entre un\n", "détecteur évalué sur son terrain de construction et un modèle évalué hors du\n", "sien.\n", "\n", From 545cda185e214a5fdbe92b68c9cc3a89e25d6baf Mon Sep 17 00:00:00 2001 From: jsboige Date: Tue, 3 Nov 2026 12:08:32 +0100 Subject: [PATCH 2/3] Fix(gametheory): re-execution GT-16h + GT-16b bout en bout (ratchet C.2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-execution Papermill (kernel python3) des deux carnets de la fournée, en réponse à la réserve CHANGES_REQUESTED du coordinateur à la tête 5d3a719fca : la sortie de la cellule 6 de GT-16h (print 2R > T+S) avait été retouchée à la main pour suivre la source ((8 > 5) -> (6 > 5)) sans ré-exécution, et GT-16b avait une cellule de code modifiée (commentaire) sans ré-exécution. Les sorties committées sont maintenant celles du kernel. Les carnets sont déterministes (seeds gelées [0,1,7,42,99]) : les sorties stochastiques se reproduisent byte-identiques, seule la cellule 15 de GT-16h gagne un saut de ligne cosmétique. La prose reste valide (nombres identiques). See #24280 Co-Authored-By: Claude Haiku 5.5 --- ...6b-Automated-Mechanism-Design-Python.ipynb | 180 ++++--- ...ameTheory-16h-Cooperation-LLM-Python.ipynb | 505 +++++++++++++++--- 2 files changed, 513 insertions(+), 172 deletions(-) diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynb index f692acc67b0..9aa28a750dc 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynb @@ -5,10 +5,10 @@ "id": "a4f70b47", "metadata": { "papermill": { - "duration": 0.003331, - "end_time": "2026-09-29T15:33:27.182637", + "duration": 0.005806, + "end_time": "2026-11-03T10:57:12.954455+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.179306", + "start_time": "2026-11-03T10:57:12.948649+00:00", "status": "completed" }, "tags": [] @@ -76,16 +76,16 @@ "id": "0505e975", "metadata": { "execution": { - "iopub.execute_input": "2026-09-29T15:33:27.188167Z", - "iopub.status.busy": "2026-09-29T15:33:27.187856Z", - "iopub.status.idle": "2026-09-29T15:33:27.193604Z", - "shell.execute_reply": "2026-09-29T15:33:27.192730Z" + "iopub.execute_input": "2026-11-03T10:57:12.968096Z", + "iopub.status.busy": "2026-11-03T10:57:12.967596Z", + "iopub.status.idle": "2026-11-03T10:57:12.978863Z", + "shell.execute_reply": "2026-11-03T10:57:12.977465Z" }, "papermill": { - "duration": 0.009852, - "end_time": "2026-09-29T15:33:27.194692", + "duration": 0.020236, + "end_time": "2026-11-03T10:57:12.980314+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.184840", + "start_time": "2026-11-03T10:57:12.960078+00:00", "status": "completed" }, "tags": [] @@ -128,10 +128,10 @@ "id": "00ab1517", "metadata": { "papermill": { - "duration": 0.002725, - "end_time": "2026-09-29T15:33:27.199790", + "duration": 0.005607, + "end_time": "2026-11-03T10:57:12.990778+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.197065", + "start_time": "2026-11-03T10:57:12.985171+00:00", "status": "completed" }, "tags": [] @@ -162,16 +162,16 @@ "id": "ec0a3e7d", "metadata": { "execution": { - "iopub.execute_input": "2026-09-29T15:33:27.209225Z", - "iopub.status.busy": "2026-09-29T15:33:27.208932Z", - "iopub.status.idle": "2026-09-29T15:33:27.218554Z", - "shell.execute_reply": "2026-09-29T15:33:27.217687Z" + "iopub.execute_input": "2026-11-03T10:57:13.002460Z", + "iopub.status.busy": "2026-11-03T10:57:13.001681Z", + "iopub.status.idle": "2026-11-03T10:57:13.018919Z", + "shell.execute_reply": "2026-11-03T10:57:13.017419Z" }, "papermill": { - "duration": 0.017182, - "end_time": "2026-09-29T15:33:27.220169", + "duration": 0.024581, + "end_time": "2026-11-03T10:57:13.020174+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.202987", + "start_time": "2026-11-03T10:57:12.995593+00:00", "status": "completed" }, "tags": [] @@ -253,10 +253,10 @@ "id": "0657441a", "metadata": { "papermill": { - "duration": 0.003818, - "end_time": "2026-09-29T15:33:27.226494", + "duration": 0.004799, + "end_time": "2026-11-03T10:57:13.029978+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.222676", + "start_time": "2026-11-03T10:57:13.025179+00:00", "status": "completed" }, "tags": [] @@ -287,16 +287,16 @@ "id": "abe9966c", "metadata": { "execution": { - "iopub.execute_input": "2026-09-29T15:33:27.233872Z", - "iopub.status.busy": "2026-09-29T15:33:27.233566Z", - "iopub.status.idle": "2026-09-29T15:33:27.237262Z", - "shell.execute_reply": "2026-09-29T15:33:27.236576Z" + "iopub.execute_input": "2026-11-03T10:57:13.041931Z", + "iopub.status.busy": "2026-11-03T10:57:13.041424Z", + "iopub.status.idle": "2026-11-03T10:57:13.048644Z", + "shell.execute_reply": "2026-11-03T10:57:13.047222Z" }, "papermill": { - "duration": 0.009308, - "end_time": "2026-09-29T15:33:27.238178", + "duration": 0.015147, + "end_time": "2026-11-03T10:57:13.049649+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.228870", + "start_time": "2026-11-03T10:57:13.034502+00:00", "status": "completed" }, "tags": [] @@ -335,10 +335,10 @@ "id": "4068f6e9", "metadata": { "papermill": { - "duration": 0.00219, - "end_time": "2026-09-29T15:33:27.243795", + "duration": 0.007072, + "end_time": "2026-11-03T10:57:13.061761+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.241605", + "start_time": "2026-11-03T10:57:13.054689+00:00", "status": "completed" }, "tags": [] @@ -376,16 +376,16 @@ "id": "0411076d", "metadata": { "execution": { - "iopub.execute_input": "2026-09-29T15:33:27.252930Z", - "iopub.status.busy": "2026-09-29T15:33:27.252632Z", - "iopub.status.idle": "2026-09-29T15:33:27.264263Z", - "shell.execute_reply": "2026-09-29T15:33:27.263542Z" + "iopub.execute_input": "2026-11-03T10:57:13.074739Z", + "iopub.status.busy": "2026-11-03T10:57:13.074123Z", + "iopub.status.idle": "2026-11-03T10:57:13.102828Z", + "shell.execute_reply": "2026-11-03T10:57:13.101390Z" }, "papermill": { - "duration": 0.018074, - "end_time": "2026-09-29T15:33:27.264969", + "duration": 0.036929, + "end_time": "2026-11-03T10:57:13.104194+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.246895", + "start_time": "2026-11-03T10:57:13.067265+00:00", "status": "completed" }, "tags": [] @@ -570,10 +570,10 @@ "id": "f4d63a25", "metadata": { "papermill": { - "duration": 0.001698, - "end_time": "2026-09-29T15:33:27.268506", + "duration": 0.005562, + "end_time": "2026-11-03T10:57:13.115013+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.266808", + "start_time": "2026-11-03T10:57:13.109451+00:00", "status": "completed" }, "tags": [] @@ -606,10 +606,10 @@ "id": "1d751dc6", "metadata": { "papermill": { - "duration": 0.00172, - "end_time": "2026-09-29T15:33:27.273528", + "duration": 0.011081, + "end_time": "2026-11-03T10:57:13.131333+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.271808", + "start_time": "2026-11-03T10:57:13.120252+00:00", "status": "completed" }, "tags": [] @@ -640,16 +640,16 @@ "id": "2f1d78be", "metadata": { "execution": { - "iopub.execute_input": "2026-09-29T15:33:27.279103Z", - "iopub.status.busy": "2026-09-29T15:33:27.278845Z", - "iopub.status.idle": "2026-09-29T15:33:27.282179Z", - "shell.execute_reply": "2026-09-29T15:33:27.281473Z" + "iopub.execute_input": "2026-11-03T10:57:13.146881Z", + "iopub.status.busy": "2026-11-03T10:57:13.146383Z", + "iopub.status.idle": "2026-11-03T10:57:13.152530Z", + "shell.execute_reply": "2026-11-03T10:57:13.151207Z" }, "papermill": { - "duration": 0.008846, - "end_time": "2026-09-29T15:33:27.284137", + "duration": 0.015096, + "end_time": "2026-11-03T10:57:13.153749+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.275291", + "start_time": "2026-11-03T10:57:13.138653+00:00", "status": "completed" }, "tags": [] @@ -686,10 +686,10 @@ "id": "57000ed3", "metadata": { "papermill": { - "duration": 0.002408, - "end_time": "2026-09-29T15:33:27.290637", + "duration": 0.004862, + "end_time": "2026-11-03T10:57:13.163741+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.288229", + "start_time": "2026-11-03T10:57:13.158879+00:00", "status": "completed" }, "tags": [] @@ -716,16 +716,16 @@ "id": "a7f1dc15", "metadata": { "execution": { - "iopub.execute_input": "2026-09-29T15:33:27.295536Z", - "iopub.status.busy": "2026-09-29T15:33:27.295246Z", - "iopub.status.idle": "2026-09-29T15:33:27.301558Z", - "shell.execute_reply": "2026-09-29T15:33:27.300802Z" + "iopub.execute_input": "2026-11-03T10:57:13.188135Z", + "iopub.status.busy": "2026-11-03T10:57:13.187535Z", + "iopub.status.idle": "2026-11-03T10:57:13.203283Z", + "shell.execute_reply": "2026-11-03T10:57:13.201939Z" }, "papermill": { - "duration": 0.009883, - "end_time": "2026-09-29T15:33:27.302387", + "duration": 0.032222, + "end_time": "2026-11-03T10:57:13.204485+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.292504", + "start_time": "2026-11-03T10:57:13.172263+00:00", "status": "completed" }, "tags": [] @@ -770,10 +770,10 @@ "id": "lecture-temoin-impossibilite", "metadata": { "papermill": { - "duration": 0.001962, - "end_time": "2026-09-29T15:33:27.306276", + "duration": 0.005976, + "end_time": "2026-11-03T10:57:13.216163+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.304314", + "start_time": "2026-11-03T10:57:13.210187+00:00", "status": "completed" }, "tags": [] @@ -792,10 +792,10 @@ "id": "7a9c51b9", "metadata": { "papermill": { - "duration": 0.00344, - "end_time": "2026-09-29T15:33:27.315242", + "duration": 0.005722, + "end_time": "2026-11-03T10:57:13.228674+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.311802", + "start_time": "2026-11-03T10:57:13.222952+00:00", "status": "completed" }, "tags": [] @@ -829,16 +829,16 @@ "id": "c08c2202", "metadata": { "execution": { - "iopub.execute_input": "2026-09-29T15:33:27.320826Z", - "iopub.status.busy": "2026-09-29T15:33:27.320497Z", - "iopub.status.idle": "2026-09-29T15:33:27.324671Z", - "shell.execute_reply": "2026-09-29T15:33:27.323801Z" + "iopub.execute_input": "2026-11-03T10:57:13.242789Z", + "iopub.status.busy": "2026-11-03T10:57:13.242236Z", + "iopub.status.idle": "2026-11-03T10:57:13.249598Z", + "shell.execute_reply": "2026-11-03T10:57:13.248172Z" }, "papermill": { - "duration": 0.00797, - "end_time": "2026-09-29T15:33:27.325333", + "duration": 0.015849, + "end_time": "2026-11-03T10:57:13.250830+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.317363", + "start_time": "2026-11-03T10:57:13.234981+00:00", "status": "completed" }, "tags": [] @@ -879,10 +879,10 @@ "id": "eccc889d", "metadata": { "papermill": { - "duration": 0.002469, - "end_time": "2026-09-29T15:33:27.329899", + "duration": 0.006294, + "end_time": "2026-11-03T10:57:13.262759+00:00", "exception": false, - "start_time": "2026-09-29T15:33:27.327430", + "start_time": "2026-11-03T10:57:13.256465+00:00", "status": "completed" }, "tags": [] @@ -924,7 +924,17 @@ }, { "cell_type": "markdown", - "metadata": {}, + "id": "bb307886", + "metadata": { + "papermill": { + "duration": 0.011838, + "end_time": "2026-11-03T10:57:13.280263+00:00", + "exception": false, + "start_time": "2026-11-03T10:57:13.268425+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## Références\n", "\n", @@ -956,21 +966,21 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.13" + "version": "3.13.15" }, "papermill": { "default_parameters": {}, - "duration": 2.130083, - "end_time": "2026-09-29T15:33:27.563928", + "duration": 7.617021, + "end_time": "2026-11-03T10:57:16.820154+00:00", "environment_variables": {}, "exception": null, "input_path": "GameTheory-16b-Automated-Mechanism-Design-Python.ipynb", "output_path": "GameTheory-16b-Automated-Mechanism-Design-Python.ipynb", "parameters": {}, - "start_time": "2026-09-29T15:33:25.433845", + "start_time": "2026-11-03T10:57:09.203133+00:00", "version": "2.7.0" } }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/MyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynb b/MyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynb index b892a6fdccc..e02607e09d7 100644 --- a/MyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynb +++ b/MyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynb @@ -3,7 +3,16 @@ { "cell_type": "markdown", "id": "1ab97a64", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.008092, + "end_time": "2026-11-03T10:56:57.210766+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.202674+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "# GameTheory-16h : Coopération LLM — protocole multi-seed (Vallinder–Hughes 2024, Payne–Alloui–Cros 2025)\n", "\n", @@ -31,11 +40,19 @@ "id": "ff6f873d", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.767498Z", - "iopub.status.busy": "2026-10-15T19:55:56.767276Z", - "iopub.status.idle": "2026-10-15T19:55:56.777672Z", - "shell.execute_reply": "2026-10-15T19:55:56.777040Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.225607Z", + "iopub.status.busy": "2026-11-03T10:56:57.225067Z", + "iopub.status.idle": "2026-11-03T10:56:57.244093Z", + "shell.execute_reply": "2026-11-03T10:56:57.243052Z" + }, + "papermill": { + "duration": 0.02875, + "end_time": "2026-11-03T10:56:57.245800+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.217050+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { @@ -78,7 +95,16 @@ { "cell_type": "markdown", "id": "da059ace", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.007774, + "end_time": "2026-11-03T10:56:57.259804+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.252030+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## Préambule — qu'est-ce qu'une *hétérogénéité de population* en IPD ?\n", "\n", @@ -99,7 +125,16 @@ { "cell_type": "markdown", "id": "a85ec61e", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.005903, + "end_time": "2026-11-03T10:56:57.272434+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.266531+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## 0. Pré-enregistrement du protocole (gelé avant tout appel d'agent)\n", "\n", @@ -142,11 +177,19 @@ "id": "05839750", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.780567Z", - "iopub.status.busy": "2026-10-15T19:55:56.780232Z", - "iopub.status.idle": "2026-10-15T19:55:56.785838Z", - "shell.execute_reply": "2026-10-15T19:55:56.785267Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.285750Z", + "iopub.status.busy": "2026-11-03T10:56:57.285222Z", + "iopub.status.idle": "2026-11-03T10:56:57.292557Z", + "shell.execute_reply": "2026-11-03T10:56:57.291786Z" + }, + "papermill": { + "duration": 0.015529, + "end_time": "2026-11-03T10:56:57.293341+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.277812+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { @@ -187,7 +230,16 @@ { "cell_type": "markdown", "id": "b204bade", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.006607, + "end_time": "2026-11-03T10:56:57.306375+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.299768+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## 1. Le jeu IPD et les politiques (proxy scripté des agents LLM)\n", "\n", @@ -210,11 +262,19 @@ "id": "a2a40b08", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.788779Z", - "iopub.status.busy": "2026-10-15T19:55:56.788292Z", - "iopub.status.idle": "2026-10-15T19:55:56.795668Z", - "shell.execute_reply": "2026-10-15T19:55:56.794943Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.321509Z", + "iopub.status.busy": "2026-11-03T10:56:57.321074Z", + "iopub.status.idle": "2026-11-03T10:56:57.332745Z", + "shell.execute_reply": "2026-11-03T10:56:57.331396Z" + }, + "papermill": { + "duration": 0.02093, + "end_time": "2026-11-03T10:56:57.333865+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.312935+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { @@ -296,7 +356,16 @@ { "cell_type": "markdown", "id": "90165f06", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.005666, + "end_time": "2026-11-03T10:56:57.347629+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.341963+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture — §1.** Cinq politiques sont définies : trois variantes TFT (strict, généreux, suspect), un `always_defect` (contrôle négatif), et un `uniform_random_seed` (modèle nul). Le **proxy LLM** est `generous_tft` (Vallinder–Hughes 2024 ont mesuré que les LLM *promptés* à coopérer ont une **générosité** significativement supérieure à un TFT strict dans le tournoi IPD).\n", "\n", @@ -311,7 +380,16 @@ { "cell_type": "markdown", "id": "d0302183", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.006572, + "end_time": "2026-11-03T10:56:57.361683+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.355111+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## 2. Définition d'une hétérogénéité — distribution sur (strat_0, strat_1)\n", "\n", @@ -331,11 +409,19 @@ "id": "dd8660a3", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.798537Z", - "iopub.status.busy": "2026-10-15T19:55:56.798226Z", - "iopub.status.idle": "2026-10-15T19:55:56.803171Z", - "shell.execute_reply": "2026-10-15T19:55:56.802537Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.375794Z", + "iopub.status.busy": "2026-11-03T10:56:57.375235Z", + "iopub.status.idle": "2026-11-03T10:56:57.382909Z", + "shell.execute_reply": "2026-11-03T10:56:57.381536Z" + }, + "papermill": { + "duration": 0.015937, + "end_time": "2026-11-03T10:56:57.383964+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.368027+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { @@ -368,7 +454,16 @@ { "cell_type": "markdown", "id": "71ff2ae1", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.006228, + "end_time": "2026-11-03T10:56:57.397766+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.391538+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture — §2.** Les 4 hétérogénéités sont définies par un couple de politiques du registre `POLICIES`. **Vérification de cohérence** : le `assert set(HET_PAIRS.keys()) == set(HETEROGENEITIES)` garantit qu'aucune hétérogénéité du gel §0 n'est oubliée à l'implémentation.\n", "\n", @@ -378,7 +473,16 @@ { "cell_type": "markdown", "id": "0ec1396b", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.007366, + "end_time": "2026-11-03T10:56:57.410081+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.402715+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## 3. Driver multi-seed — exécution reproductible d'une rencontre IPD\n", "\n", @@ -393,11 +497,19 @@ "id": "74c84d8e", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.805595Z", - "iopub.status.busy": "2026-10-15T19:55:56.805387Z", - "iopub.status.idle": "2026-10-15T19:55:56.812521Z", - "shell.execute_reply": "2026-10-15T19:55:56.811806Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.428135Z", + "iopub.status.busy": "2026-11-03T10:56:57.427675Z", + "iopub.status.idle": "2026-11-03T10:56:57.438158Z", + "shell.execute_reply": "2026-11-03T10:56:57.436870Z" + }, + "papermill": { + "duration": 0.021536, + "end_time": "2026-11-03T10:56:57.439202+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.417666+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { @@ -467,7 +579,16 @@ { "cell_type": "markdown", "id": "61f9a5fc", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.006275, + "end_time": "2026-11-03T10:56:57.450614+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.444339+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture — §3.** Le driver est paramétré par `(heterogeneite, seed)` et exécute `N_MATCHES_PER_PAIR = 50` rencontres indépendantes. Le **combinateur de seed** `seed * 1000 + m` évite les collisions entre matches d'une même hétérogénéité.\n", "\n", @@ -479,7 +600,16 @@ { "cell_type": "markdown", "id": "f99a8b30", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.004995, + "end_time": "2026-11-03T10:56:57.461115+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.456120+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## 4. Agrégation par (hétérogénéité, seed) — distribution du taux de coopération\n", "\n", @@ -492,18 +622,33 @@ "id": "86e50acf", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.814959Z", - "iopub.status.busy": "2026-10-15T19:55:56.814749Z", - "iopub.status.idle": "2026-10-15T19:55:56.871943Z", - "shell.execute_reply": "2026-10-15T19:55:56.871172Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.475649Z", + "iopub.status.busy": "2026-11-03T10:56:57.475136Z", + "iopub.status.idle": "2026-11-03T10:56:57.588968Z", + "shell.execute_reply": "2026-11-03T10:56:57.587585Z" + }, + "papermill": { + "duration": 0.122422, + "end_time": "2026-11-03T10:56:57.590138+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.467716+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "§4 — Resultats agreges par (heterogeneite, seed) :\n", + "§4 — Resultats agreges par (heterogeneite, seed) :" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", " het seed mean_c0 std_c0 mean_c1 std_c1 payoff0\n", " llm_only 0 1.0000 0.0000 1.0000 0.0000 300.00\n", " llm_only 1 1.0000 0.0000 1.0000 0.0000 300.00\n", @@ -571,7 +716,16 @@ { "cell_type": "markdown", "id": "86f3d50f", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.007323, + "end_time": "2026-11-03T10:56:57.605442+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.598119+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture — §4.** Le tableau croisé `(heterogeneite, seed)` montre trois patterns clés, calibrés sur les outputs réels :\n", "\n", @@ -593,7 +747,16 @@ { "cell_type": "markdown", "id": "683bce40", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.007371, + "end_time": "2026-11-03T10:56:57.619320+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.611949+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## 5. Modèle nul — `uniform_random_seed`\n", "\n", @@ -606,11 +769,19 @@ "id": "41f306a9", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.874741Z", - "iopub.status.busy": "2026-10-15T19:55:56.874412Z", - "iopub.status.idle": "2026-10-15T19:55:56.927907Z", - "shell.execute_reply": "2026-10-15T19:55:56.927211Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.633233Z", + "iopub.status.busy": "2026-11-03T10:56:57.632761Z", + "iopub.status.idle": "2026-11-03T10:56:57.723928Z", + "shell.execute_reply": "2026-11-03T10:56:57.722848Z" + }, + "papermill": { + "duration": 0.099965, + "end_time": "2026-11-03T10:56:57.725120+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.625155+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { @@ -663,7 +834,16 @@ { "cell_type": "markdown", "id": "fc0dd715", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.006445, + "end_time": "2026-11-03T10:56:57.738576+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.732131+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture — §5.** Le **modèle nul** produit un taux de coopération moyen très proche de **0.5** sur tous les seeds (écart-type inter-seed ≈ 0.02-0.05, compatible avec une Bernoulli(0.5) sur 50 matches × 100 rounds = 5 000 tirages). C'est la **référence** à laquelle les hétérogénéités du §7 seront comparées." ] @@ -671,7 +851,16 @@ { "cell_type": "markdown", "id": "47c30640", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.008519, + "end_time": "2026-11-03T10:56:57.755350+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.746831+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## 6. Contrôle négatif — `always_defect` doit dégrader la coopération à 0 %\n", "\n", @@ -686,11 +875,19 @@ "id": "bdb348a7", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.930770Z", - "iopub.status.busy": "2026-10-15T19:55:56.930530Z", - "iopub.status.idle": "2026-10-15T19:55:56.936676Z", - "shell.execute_reply": "2026-10-15T19:55:56.935994Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.773558Z", + "iopub.status.busy": "2026-11-03T10:56:57.773288Z", + "iopub.status.idle": "2026-11-03T10:56:57.780492Z", + "shell.execute_reply": "2026-11-03T10:56:57.779392Z" + }, + "papermill": { + "duration": 0.017918, + "end_time": "2026-11-03T10:56:57.782212+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.764294+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { @@ -728,7 +925,16 @@ { "cell_type": "markdown", "id": "003e9a63", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.008662, + "end_time": "2026-11-03T10:56:57.800063+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.791401+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture — §6.** Le contrôle négatif passe : `always_defect` produit exactement 0 % de coopération et un payoff de 100 (défection mutuelle stable) sur **tous les seeds**. La **pipeline est validée** : les hétérogénéités du §4 sont comparables entre elles et au modèle nul." ] @@ -736,7 +942,16 @@ { "cell_type": "markdown", "id": "0cbcdceb", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.010426, + "end_time": "2026-11-03T10:56:57.819064+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.808638+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## 7. Verdict H0/H1 par hétérogénéité\n", "\n", @@ -753,11 +968,19 @@ "id": "4df215dc", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.940573Z", - "iopub.status.busy": "2026-10-15T19:55:56.940279Z", - "iopub.status.idle": "2026-10-15T19:55:56.947296Z", - "shell.execute_reply": "2026-10-15T19:55:56.946503Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.839045Z", + "iopub.status.busy": "2026-11-03T10:56:57.838566Z", + "iopub.status.idle": "2026-11-03T10:56:57.849904Z", + "shell.execute_reply": "2026-11-03T10:56:57.848785Z" + }, + "papermill": { + "duration": 0.022781, + "end_time": "2026-11-03T10:56:57.851031+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.828250+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [ { @@ -815,7 +1038,16 @@ { "cell_type": "markdown", "id": "479767c1", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.008604, + "end_time": "2026-11-03T10:56:57.868781+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.860177+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture — §7.** Les verdicts par hétérogénéité dépendent fortement des politiques sous-jacentes, calibrés sur les outputs réels :\n", "\n", @@ -837,7 +1069,16 @@ { "cell_type": "markdown", "id": "1adb98f6", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.008441, + "end_time": "2026-11-03T10:56:57.885676+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.877235+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## Conclusion\n", "\n", @@ -860,7 +1101,16 @@ { "cell_type": "markdown", "id": "cfe78cc6", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.008031, + "end_time": "2026-11-03T10:56:57.902451+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.894420+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## Écarts d'exécution vs gel (consignés, conformément au §0)\n", "\n", @@ -879,7 +1129,16 @@ { "cell_type": "markdown", "id": "c8436ed2", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.012966, + "end_time": "2026-11-03T10:56:57.923612+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.910646+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## Exercices\n", "\n", @@ -889,7 +1148,16 @@ { "cell_type": "markdown", "id": "56f5b7ab", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.007828, + "end_time": "2026-11-03T10:56:57.940416+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.932588+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "### Exercice 1 — *Politique LLM étendue* (générosité paramétrable)\n", "\n", @@ -902,11 +1170,19 @@ "id": "9b045bc7", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.950823Z", - "iopub.status.busy": "2026-10-15T19:55:56.950531Z", - "iopub.status.idle": "2026-10-15T19:55:56.954043Z", - "shell.execute_reply": "2026-10-15T19:55:56.953453Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.958940Z", + "iopub.status.busy": "2026-11-03T10:56:57.958603Z", + "iopub.status.idle": "2026-11-03T10:56:57.963646Z", + "shell.execute_reply": "2026-11-03T10:56:57.962197Z" + }, + "papermill": { + "duration": 0.017079, + "end_time": "2026-11-03T10:56:57.964886+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.947807+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [], "source": [ @@ -920,7 +1196,16 @@ { "cell_type": "markdown", "id": "ab87cd4d", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.007846, + "end_time": "2026-11-03T10:56:57.980616+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.972770+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "### Exercice 2 — *Dynamique évolutive de population* (reproduction + mutation)\n", "\n", @@ -933,11 +1218,19 @@ "id": "43917cc3", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.956954Z", - "iopub.status.busy": "2026-10-15T19:55:56.956437Z", - "iopub.status.idle": "2026-10-15T19:55:56.959966Z", - "shell.execute_reply": "2026-10-15T19:55:56.959349Z" - } + "iopub.execute_input": "2026-11-03T10:56:57.999471Z", + "iopub.status.busy": "2026-11-03T10:56:57.998935Z", + "iopub.status.idle": "2026-11-03T10:56:58.004610Z", + "shell.execute_reply": "2026-11-03T10:56:58.003144Z" + }, + "papermill": { + "duration": 0.016554, + "end_time": "2026-11-03T10:56:58.005642+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:57.989088+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [], "source": [ @@ -952,7 +1245,16 @@ { "cell_type": "markdown", "id": "5375ba31", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.008517, + "end_time": "2026-11-03T10:56:58.022462+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:58.013945+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "### Exercice 3 — *Bruit de communication* (canal symétrique bruité)\n", "\n", @@ -965,11 +1267,19 @@ "id": "cfd580f2", "metadata": { "execution": { - "iopub.execute_input": "2026-10-15T19:55:56.962689Z", - "iopub.status.busy": "2026-10-15T19:55:56.962405Z", - "iopub.status.idle": "2026-10-15T19:55:56.966103Z", - "shell.execute_reply": "2026-10-15T19:55:56.965092Z" - } + "iopub.execute_input": "2026-11-03T10:56:58.038975Z", + "iopub.status.busy": "2026-11-03T10:56:58.038552Z", + "iopub.status.idle": "2026-11-03T10:56:58.043772Z", + "shell.execute_reply": "2026-11-03T10:56:58.042418Z" + }, + "papermill": { + "duration": 0.016027, + "end_time": "2026-11-03T10:56:58.044839+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:58.028812+00:00", + "status": "completed" + }, + "tags": [] }, "outputs": [], "source": [ @@ -983,7 +1293,16 @@ { "cell_type": "markdown", "id": "5b96cfba", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.007873, + "end_time": "2026-11-03T10:56:58.060293+00:00", + "exception": false, + "start_time": "2026-11-03T10:56:58.052420+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## References\n", "\n", @@ -1053,9 +1372,21 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.3" + "version": "3.13.15" + }, + "papermill": { + "default_parameters": {}, + "duration": 4.572988, + "end_time": "2026-11-03T10:56:58.415621+00:00", + "environment_variables": {}, + "exception": null, + "input_path": "GameTheory-16h-Cooperation-LLM-Python.ipynb", + "output_path": "GameTheory-16h-Cooperation-LLM-Python.ipynb", + "parameters": {}, + "start_time": "2026-11-03T10:56:53.842633+00:00", + "version": "2.7.0" } }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file From c840e4c8cf36ccbd32a613bd0976622963ff2e4b Mon Sep 17 00:00:00 2001 From: jsboige Date: Tue, 3 Nov 2026 19:28:37 +0100 Subject: [PATCH 3/3] Fix(gametheory,#24361): re-attest the EvolutionTrust twin pair (markdown-only nav retarget) The fournee retargets the two navigation pointers of GameTheory-06-EvolutionTrust-Python.ipynb (head navigation + footer "Notebook precedent") from GameTheory-05-ZeroSum-Minimax to GameTheory-05c-KKT-Dualite-Lagrangienne, which is the notebook the 06 actually follows. Markdown-only: 0 code cell touched, execution_count and outputs byte-identical to the base (C.2 markdown-only exception). The C# twin blob (166ef01d82) and its content hash (ddc0a1e35b) are unchanged, so the parity level "semantic" is preserved. The registry stored the base blob (c5dabb895b), which this PR makes stale -> DRIFT_INTRODUCED on the Twin parity audit (#8057). Re-attested at ordinal 0055 with a known_differences line describing the edit (cf #8957: the attestation comes last). Co-Authored-By: Claude Haiku 5.5 --- .../twin_pairs.d/gametheory-6-evolutiontrust.yaml | 1 + .../0055-2026-11-03-myia-po-2024-CoursIA-2.yaml | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust/0055-2026-11-03-myia-po-2024-CoursIA-2.yaml diff --git a/scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust.yaml b/scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust.yaml index 7d25b36f660..99493a95c98 100644 --- a/scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust.yaml +++ b/scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust.yaml @@ -6,6 +6,7 @@ bridge_verdict: SOTA-OK bridge_verdict_reason: "Bascule verdict (registre #10382, axe 5 #10459) : l'annexe axelrod PythonNet (cellule code 36, execution_count=16, `#r nuget pythonnet 3.1.0`) est installée et exécutée dans le notebook commité. Résolution CPython Windows/Linux/macOS et dépendances natives Conda Windows validées ; parity_level semantic préservé (gel #11200)." known_differences: + - "PR #24361 (fournée contre-audit GameTheory, lane myia-po-2024:CoursIA-2) : cote Python seul edite, markdown seul -- les deux pointeurs de navigation (`**Navigation**` en tete de carnet et `**Notebook précédent**` en pied) sont retargetes de `GameTheory-05-ZeroSum-Minimax-Python.ipynb` vers `GameTheory-05c-KKT-Dualite-Lagrangienne-Python.ipynb` (le carnet 06 s'enchaine sur le 05c-KKT, pas sur le 05-ZeroSum) ; 0 cellule de code touchee, `execution_count` et sorties byte-identiques a la base (exception C.2 markdown-only, pas de re-execution due). Le cote C# est inchange (blob `166ef01d82`, contenu `ddc0a1e35b` inchanges) : aucune divergence nouvelle, niveau de parite `semantic` preserve. Attestation refaite a l'ordinal 0055, apres l'edit de contenu (cf #8957)." - "2026-10-30 PR #22447 (lane myia-po-2028:CoursIA, #21736 tranche 14b) : cote Python seul edite, markdown seul -- la ligne `**Navigation**` du carnet porte desormais l'arete entrante vers `GameTheory-06i-Ensembles-Limites-Poincare-Bendixson-Python.ipynb` ; 0 cellule de code touchee, `execution_count` et sorties inchanges (exception C.2 markdown-only, pas de re-execution due). Le cote C# est inchange et ne porte pas de ligne de navigation de serie : aucune divergence nouvelle, niveau de parite `semantic` preserve. Attestation refaite apres le commit de contenu (cf #8957)." - "PR #23577 (#20316, lane myia-po-2028:CoursIA-2) : cote Python seul edite, markdown seul -- barre de navigation de l'en-tete du carnet porte : ajout du lien vers son capstone `GameTheory-06i-Ensembles-Limites-Poincare-Bendixson-Python.ipynb` (le carnet 06i avait ete descendu dans Dynamics/, #22177, et n'avait plus de lien intra-serie depuis le carnet porte) ; aucune cellule de code touchee, execution_count et outputs inchanges (exception C.2 markdown-only, pas de re-execution due). Le cote C# est inchange : aucune divergence nouvelle, niveau de parite `semantic` preserve. Attestation refaite apres l'edit de contenu (cf #8957)." - "2026-10-30 merge origin/main dans PR #21780 (myia-po-2023:CoursIA-2) : cote Python seul edite, markdown seul -- resolution du conflit de la cellule References par union des deux apports : ref 8 Nashpy accentuee venant de main (#21548/#21476), ref 9 Nowak & Sigmund 1992 ajoutee par la branche (#21738), accents de la ref 9 harmonises au style accentue de la cellule ; aucune cellule de code touchee, execution_count et outputs inchanges (exception C.2 markdown-only, pas de re-execution due). Le cote C# est inchange : aucune divergence nouvelle, niveau de parite `semantic` preserve. Attestation refaite a l'ordinal 0038, apres le merge commit (cf #8957)." diff --git a/scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust/0055-2026-11-03-myia-po-2024-CoursIA-2.yaml b/scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust/0055-2026-11-03-myia-po-2024-CoursIA-2.yaml new file mode 100644 index 00000000000..3dd6e3bd229 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust/0055-2026-11-03-myia-po-2024-CoursIA-2.yaml @@ -0,0 +1,6 @@ +date: '2026-11-03' +by: myia-po-2024:CoursIA-2 +python_sha: c7024832c8291e04966878653be9921b92f87308 +csharp_sha: 166ef01d82c552042924c40b3ecb72155163101e +content_python_sha: 2a21a0d6c1bc735b60cdd9e29c2065299b18da00424bc3f26eb78c0299a06bbf +content_csharp_sha: ddc0a1e35b6178150b9d6d90539f78ec3c82d64a72d8214e734174fb7d4222e7