Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/lean-assignment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name: Lean CI (assignment_lean)
# Kuhn-Munkres Hungarian method correction skeleton (Munkres tribute #12598):
# weak LP duality, zero-gap optimality certificate, equality graph, and the
# Hungarian tightening preserving dual feasibility. Companion lake of the
# notebook GameTheory-27-Munkres-Assignment.ipynb.
# notebook GameTheory-23-Munkres-Assignment.ipynb.
#
# sorry-filter-mode=real, baseline=0: the library is fully sorry-free;
# this guards that NO new `sorry` is introduced (never false-positives on
Expand Down
20 changes: 19 additions & 1 deletion .github/workflows/pr-path-collision-advisory.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,24 @@ name: PR path-collision advisory
# is absent from the required set and from the PR gate roster. Its own run,
# however, goes red when writes are lost (#14236, --fail-on-write-loss) --
# a muted organ has no other way to say that it is mute.
#
# Candidate pool widened to recently-MERGED PRs (#15578). The pool was
# `--state open` only, so a collision vanished from the report at the exact
# moment it became irreversible. Measured on the founding instance: at
# 2026-09-10T23:18Z the advisory posted a `faible` collision between #15513
# and #15455 over five identical paths; #15455 merged at 2026-09-11T08:37Z and
# the pair left the pool, though the duplicate was by then consumed. A pair
# with one merged side now carries the TERMINAL verdict (never a tier: the
# substance is on `main`), all-merged pairs stay excluded, and open/open tiers
# are untouched. Depth is `--merged-window-days` (default 3, 0 disables).
#
# The merged side must also OVERLAP substantially (>= TERMINAL_MIN_OVERLAP_RATIO
# of BOTH sides' signal paths, 0.5): measured on the 2026-09-11 snapshot, an
# ungated rule reached 37 of the 64 open PRs -- every other open PR, the
# "reports everything reports nothing" collapse -- while the gate cuts it to 16
# and still keeps the founding duplicate (5 shared out of 5 and of 6 = 0.83).
# A sub-threshold pair is not silently dropped: it is counted and named under
# `merged-side low-overlap excluded` in the run summary.

on:
# Off-round minutes: the top of the hour is when every cron in the account
Expand All @@ -56,7 +74,7 @@ on:
type: boolean
default: true
same_issue_only:
description: 'Post only strong-tier collisions (common cited issue)'
description: 'Post only the actionable tiers: strong (common cited issue) or terminal (other side already merged)'
required: false
type: boolean
default: false
Expand Down
24 changes: 12 additions & 12 deletions MyIA.AI.Notebooks/GameTheory/GameTheory-03f-Parcours-Complet.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
"source": [
"# GameTheory 3f : Le Parcours Complet -- du jeu nommé au coût de la méta-action\n",
"\n",
"[← GameTheory-3e](GameTheory-03e-Meta-Actions-Tarifees.ipynb) | [GameTheory-24-Chemin-Minimal →](GameTheory-24-Chemin-Minimal-Robinson-Goforth.ipynb) | [↑ README GameTheory](README.md)\n",
"[← GameTheory-3e](GameTheory-03e-Meta-Actions-Tarifees.ipynb) | [GameTheory-20-Chemin-Minimal →](GameTheory-20-Chemin-Minimal-Robinson-Goforth.ipynb) | [↑ README GameTheory](README.md)\n",
"\n",
"**Versant d'intégration du chantier #12207.** Les versants précédents ont livré chacun une pièce : [GT-24](GameTheory-24-Chemin-Minimal-Robinson-Goforth.ipynb) construit et vérifie des chemins minimaux entre chambres, [GT-3b](GameTheory-03b-Chambres-et-Murs.ipynb) identifie les murs où vivent les égalités, [GT-3e](GameTheory-03e-Meta-Actions-Tarifees.ipynb) tarifé les swaps comme des actions que l'agent paie. Ce notebook referme la boucle : il réunit les trois pièces **dans un seul parcours**, celui que le chantier demande de bout en bout --\n",
"**Versant d'intégration du chantier #12207.** Les versants précédents ont livré chacun une pièce : [GT-20](GameTheory-20-Chemin-Minimal-Robinson-Goforth.ipynb) construit et vérifie des chemins minimaux entre chambres, [GT-3b](GameTheory-03b-Chambres-et-Murs.ipynb) identifie les murs où vivent les égalités, [GT-3e](GameTheory-03e-Meta-Actions-Tarifees.ipynb) tarifé les swaps comme des actions que l'agent paie. Ce notebook referme la boucle : il réunit les trois pièces **dans un seul parcours**, celui que le chantier demande de bout en bout --\n",
"\n",
"> un lecteur peut, dans un notebook exécuté : partir d'un **jeu nommé**, atteindre un autre jeu nommé par un **chemin qu'il n'a pas écrit lui-même**, **voir le mur** qu'il traverse à chaque pas, et **lire le coût** de la méta-action qui l'y a mené.\n",
"\n",
"## Plan\n",
"\n",
"1. **Le chemin que le lecteur n'écrit pas** : constructeur BFS et vérificateur indépendant (patron GT-24)\n",
"1. **Le chemin que le lecteur n'écrit pas** : constructeur BFS et vérificateur indépendant (patron GT-20)\n",
"2. **Voir les murs** : chaque pas traverse un jeu à égalité codimension 1, dont on exhibe les deux faces\n",
"3. **Le coût des méta-actions** : tarifs par côté puis par niveau -- et un résultat inattendu, mesuré\n",
"4. **Le parcours complet, bout en bout** : le bloc intégral, puis sa re-vérification indépendante\n",
Expand All @@ -49,7 +49,7 @@
"tags": []
},
"source": [
"## 0. Le substrat, hérité de GT-3b / GT-3e / GT-24\n",
"## 0. Le substrat, hérité de GT-3b / GT-3e / GT-20\n",
"\n",
"Un jeu = **deux tables de rangs**, une par joueur, chacune un 4-uplet ordonnant strictement les quatre cases (haut-gauche, haut-droite, bas-gauche, bas-droite) -- rang 4 = meilleur. Les **swaps** échangent les cases portant deux rangs adjacents `k` et `k+1`, de part et d'autre : `R1, R2, R3` (côté Ligne) et `C1, C2, C3` (côté Colonne). Ce sont les six générateurs de l'espace ; chaque traversée d'un swap franchit un **mur** du monde de Bruns-Kimmich -- c'est l'objet de la section 2. Toute la mécanique est reprise telle quelle des trois versants, sans modification : ce notebook est un consommateur du substrat, pas une refonte."
]
Expand Down Expand Up @@ -90,7 +90,7 @@
}
],
"source": [
"# Substrat GT-3b / GT-3e / GT-24, repris tel quel -- pur stdlib\n",
"# Substrat GT-3b / GT-3e / GT-20, repris tel quel -- pur stdlib\n",
"from itertools import product\n",
"from collections import Counter, deque\n",
"import heapq\n",
Expand All @@ -112,7 +112,7 @@
"print(\"Tables strictes par joueur :\", len(stricts), \"| chambres (jeux stricts) :\", len(chambres))\n",
"print(\"Générateurs : R1 R2 R3 (Ligne) x C1 C2 C3 (Colonne)\")\n",
"\n",
"# Les cinq bornes canoniques (convention GT-21 / GT-3b / GT-24)\n",
"# Les cinq bornes canoniques (convention GT-21 / GT-3b / GT-20)\n",
"PD = ((3, 1, 4, 2), (3, 4, 1, 2)) # T>R>P>S\n",
"POULE = ((3, 2, 4, 1), (3, 4, 2, 1)) # T>R>S>P\n",
"CERF = ((4, 1, 3, 2), (4, 3, 1, 2)) # R>T>P>S\n",
Expand Down Expand Up @@ -140,7 +140,7 @@
"source": [
"### Lecture du substrat\n",
"\n",
"Vingt-quatre tables par joueur, donc 24 x 24 = **576 chambres** -- l'univers de Robinson-Gofforth classique, déjà dérivé par GT-24 et non récité ici. Les cinq bornes canoniques y vivent : le Dilemme du Prisonnier (défection mutuelle stable), la Poule (le jeu du poulet), la Chasse au Cerf (coordination sur le meilleur monde commun), et les deux extrêmes structurants Identité et Renversement.\n",
"Vingt-quatre tables par joueur, donc 24 x 24 = **576 chambres** -- l'univers de Robinson-Gofforth classique, déjà dérivé par GT-20 et non récité ici. Les cinq bornes canoniques y vivent : le Dilemme du Prisonnier (défection mutuelle stable), la Poule (le jeu du poulet), la Chasse au Cerf (coordination sur le meilleur monde commun), et les deux extrêmes structurants Identité et Renversement.\n",
"\n",
"Deux précisions de vocabulaire pour la suite. Un **pas** relie deux chambres adjacentes : il modifie exactement une table, celle du joueur qui agit, par exactement un swap de niveau `k`. Et une **méta-action** (GT-3e) est ce pas *considéré comme payé* : réécrire une préférence déclarée coûte quelque chose, en échelons de rang -- c'est la section 3 qui fixe le barème."
]
Expand All @@ -161,7 +161,7 @@
"source": [
"## 1. Le chemin que le lecteur n'écrit pas\n",
"\n",
"Le premier impératif du parcours : le chemin ne doit pas être écrit à la main. Si le lecteur choisissait lui-même ses swaps, le notebook ne montrerait rien -- il redirait ses propres intuitions. Le constructeur ci-dessous produit donc le chemin par **BFS avec remontée des parents**, exactement selon le patron de GT-24 : le graphe des 576 chambres est exploré depuis le départ, et la chaîne est reconstruite en remontant de l'arrivée.\n",
"Le premier impératif du parcours : le chemin ne doit pas être écrit à la main. Si le lecteur choisissait lui-même ses swaps, le notebook ne montrerait rien -- il redirait ses propres intuitions. Le constructeur ci-dessous produit donc le chemin par **BFS avec remontée des parents**, exactement selon le patron de GT-20 : le graphe des 576 chambres est exploré depuis le départ, et la chaîne est reconstruite en remontant de l'arrivée.\n",
"\n",
"Le second impératif est la **séparation constructeur / vérificateur** (loi II de la série) : celui qui produit le témoin n'est pas celui qui le juge. La cellule suivante héberge un vérificateur qui ne réutilise *rien* du constructeur -- il re-dérive les distances par sa propre recherche exhaustive."
]
Expand Down Expand Up @@ -200,7 +200,7 @@
}
],
"source": [
"# === Section 1.1 : construire_chemin -- le constructeur de témoin (patron GT-24) ===\n",
"# === Section 1.1 : construire_chemin -- le constructeur de témoin (patron GT-20) ===\n",
"\n",
"def construire_chemin(depart, arrivee):\n",
" \"\"\"Produit une suite (jeu_avant, jeu_apres) de départ à arrivée par BFS + remontée des parents.\"\"\"\n",
Expand Down Expand Up @@ -299,7 +299,7 @@
}
],
"source": [
"# === Section 1.2 : verifier_chemin -- le vérificateur indépendant (patron GT-24) ===\n",
"# === Section 1.2 : verifier_chemin -- le vérificateur indépendant (patron GT-20) ===\n",
"\n",
"def bfs_complet(depart):\n",
" \"\"\"Distances exhaustives depuis depart (la preuve de minimalité, recalculée par le vérificateur).\"\"\"\n",
Expand Down Expand Up @@ -988,7 +988,7 @@
"\n",
"Le vérificateur étendu ne se contente pas des extrémités et de l'élémentarité : il re-dérive **chaque mur** (brisure de tie recalculée, faces comparées aux extrémités affichées), **chaque coût** (barème réappliqué pas à pas), la **minimalité en longueur** (BFS exhaustif) et la **minimalité en coût** (Dijkstra indépendant) -- et rend son verdict en une ligne. La contre-épreuve finale montre qu'un chemin rallongé d'un aller-retour, invisible aux yeux s'il était bien imprimé, est attrapé par la distance réelle.\n",
"\n",
"La terminologie est celle du steer #12205 : un chemin produit par un constructeur et accepté par un vérificateur séparé est un **témoin construit et vérifié indépendamment** -- pas une preuve au sens formel, mais un objet dont chaque affirmation affichée a été re-dérivée par un code qui ne partage rien avec celui qui l'a produite. C'est le standard de la série depuis GT-24, étendu ici aux murs et aux coûts."
"La terminologie est celle du steer #12205 : un chemin produit par un constructeur et accepté par un vérificateur séparé est un **témoin construit et vérifié indépendamment** -- pas une preuve au sens formel, mais un objet dont chaque affirmation affichée a été re-dérivée par un code qui ne partage rien avec celui qui l'a produite. C'est le standard de la série depuis GT-20, étendu ici aux murs et aux coûts."
]
},
{
Expand Down Expand Up @@ -1160,7 +1160,7 @@
"\n",
"Deux résultats structurent le parcours au-delà de l'assemblage. Le **théorème des bornes** (3.1) : le coût du trajet minimal se décompose en `c_L·d_L + c_C·d_C` où `d_L`, `d_C` sont des distances de tables individuelles -- la facture est un invariant géométrique, hors de portée de tout marchandage sur le choix du chemin. Et le **fait mesuré** (3.2) : sous tarification par niveau, le plus court chemin est aussi le moins cher, sur toutes les paires testées -- l'intuition du détour économique ne survit pas à la mesure.\n",
"\n",
"**Pour aller plus loin** : l'arbitrage *migrer ou rester* (à quel prix un agent accepte-t-il de payer ces 6 échelons ?) est le sujet de [GT-3e](GameTheory-03e-Meta-Actions-Tarifees.ipynb) ; la théorie des murs et des chambres, celui de [GT-3b](GameTheory-03b-Chambres-et-Murs.ipynb) ; la séparation constructeur / vérificateur, celle de [GT-24](GameTheory-24-Chemin-Minimal-Robinson-Goforth.ipynb)."
"**Pour aller plus loin** : l'arbitrage *migrer ou rester* (à quel prix un agent accepte-t-il de payer ces 6 échelons ?) est le sujet de [GT-3e](GameTheory-03e-Meta-Actions-Tarifees.ipynb) ; la théorie des murs et des chambres, celui de [GT-3b](GameTheory-03b-Chambres-et-Murs.ipynb) ; la séparation constructeur / vérificateur, celle de [GT-20](GameTheory-20-Chemin-Minimal-Robinson-Goforth.ipynb)."
]
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1187,18 +1187,6 @@
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.7"
},
"papermill": {
"default_parameters": {},
"duration": 5.222232,
"end_time": "2026-09-08T05:49:38.580142+00:00",
"environment_variables": {},
"exception": null,
"input_path": "MyIA.AI.Notebooks\\GameTheory\\GameTheory-06e-Open-Source-Game-Theory.ipynb",
"output_path": "C:\\Users\\jsboi\\AppData\\Local\\Temp\\claude\\c--dev-CoursIA-2\\b7fd0659-297b-4996-861e-5419adefc1c3\\scratchpad\\c987_game06e_exec.ipynb",
"parameters": {},
"start_time": "2026-09-08T05:49:33.357910+00:00",
"version": "2.7.0"
}
},
"nbformat": 4,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1094,7 +1094,7 @@
"issue atteignable a matrice fixee ?* Le mur cesse d'etre une etiquette pour devenir un objet\n",
"**traversable-sous-conditions** — ce qui le franchit est une promesse ou une menace **croyable**,\n",
"et la croyabilite est exactement ce que l'arbre sait calculer (sous-jeux, induction a rebours),\n",
"comme GT-26 traite le mur `w = l` comme separateur de codimension 1 plutot que comme un nom.\n",
"comme GT-22 traite le mur `w = l` comme separateur de codimension 1 plutot que comme un nom.\n",
"\n",
"**Le dispositif.** Avant le jeu de base, le joueur Ligne choisit un **engagement observable** :\n",
"se taire, promettre (se lier a Cooperer — la force acquise en se privant d'une option, Schelling),\n",
Expand Down Expand Up @@ -1808,8 +1808,8 @@
"end_time": "2026-08-23T22:09:34.345656",
"environment_variables": {},
"exception": null,
"input_path": "GameTheory-24-Chemin-Minimal-Robinson-Goforth.ipynb",
"output_path": "C:/Users/jsboi/AppData/Local/Temp/claude/d--Dev-CoursIA/2b36da1d-b3d6-48d7-97f2-37a6d5c34555/scratchpad/exec_gt24_ext.ipynb",
"input_path": "GameTheory-20-Chemin-Minimal-Robinson-Goforth.ipynb",
"output_path": "GameTheory-20-Chemin-Minimal-Robinson-Goforth.ipynb",
"parameters": {},
"start_time": "2026-08-23T22:09:31.569711",
"version": "2.7.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
"source": [
"# GameTheory 24b : Le temoin d'impossibilite\n",
"\n",
"> **Grain1 d'ai-01 sur #12205 §6** : Robinson-Goforth (#12364, GT-24 chemin minimal) porte les points 1-3 du critere d'acceptance mais pas le **point 4** (temoin d'impossibilite). Ce notebook ferme le point 4 en s'appuyant sur la **structure produit** des chambres : `d_chambre(G,H) = d_perm(row_G,row_H) + d_perm(col_G,col_H)`.\n",
"> **Grain1 d'ai-01 sur #12205 §6** : Robinson-Goforth (#12364, GT-20 chemin minimal) porte les points 1-3 du critere d'acceptance mais pas le **point 4** (temoin d'impossibilite). Ce notebook ferme le point 4 en s'appuyant sur la **structure produit** des chambres : `d_chambre(G,H) = d_perm(row_G,row_H) + d_perm(col_G,col_H)`.\n",
"\n",
"**Conventions reprises de GT-24** : `canonique`, `swap_valeurs_adjacentes`, `swap_jeu(cote, k)`, 24 ordres stricts sur 4 cases, 576 chambres, 6 voisins par jeu (3 swaps x {ligne, colonne})."
"**Conventions reprises de GT-20** : `canonique`, `swap_valeurs_adjacentes`, `swap_jeu(cote, k)`, 24 ordres stricts sur 4 cases, 576 chambres, 6 voisins par jeu (3 swaps x {ligne, colonne})."
]
},
{
Expand Down Expand Up @@ -223,7 +223,7 @@
"- **`IMPOSSIBLE`** si `d_row + d_col > k_max` (la distance minimale theorique depasse la borne, donc aucun chemin de longueur `<= k_max` n'existe) ;\n",
"- **`POSSIBLE`** si `d_row + d_col <= k_max` (un chemin de cette longueur existe, par concatenation des chemins optimaux dans chaque facteur).\n",
"\n",
"Le verdict `IMPOSSIBLE` porte un **certificat analytique** : les valeurs `(d_row, d_col, k_max)` qui le justifient. Le verdict `POSSIBLE` porte la meme garantie d'existence, mais ne fournit pas le chemin explicite — celui-ci est produit par le constructeur de GT-24 (point 1 du critere #12205 §5).\n",
"Le verdict `IMPOSSIBLE` porte un **certificat analytique** : les valeurs `(d_row, d_col, k_max)` qui le justifient. Le verdict `POSSIBLE` porte la meme garantie d'existence, mais ne fournit pas le chemin explicite — celui-ci est produit par le constructeur de GT-20 (point 1 du critere #12205 §5).\n",
"\n",
"**Verification de la table 24x24** : le tableau `D` des distances dans le permutaedre doit etre symetrique et triangulaire pour que le certificat soit coherent."
]
Expand Down Expand Up @@ -802,7 +802,7 @@
"\n",
"**Certifie** : pour `k_max < 12`, IMPOSSIBLE est certain des que `d_min > k_max`.\n",
"\n",
"**Non certifie** : un cas POSSIBLE garantit l'**existence** d'un chemin, pas un chemin explicite. La construction explicite est deléguée au constructeur de GT-24 (point 1 du critere #12205 §5) qui produit le chemin par concatenation des chemins optimaux dans chaque facteur.\n",
"**Non certifie** : un cas POSSIBLE garantit l'**existence** d'un chemin, pas un chemin explicite. La construction explicite est deléguée au constructeur de GT-20 (point 1 du critere #12205 §5) qui produit le chemin par concatenation des chemins optimaux dans chaque facteur.\n",
"\n",
"**Au-dela de `k_max = 12`** (le diametre du produit), tout est POSSIBLE par definition : le chemin existe toujours en au plus 12 pas."
]
Expand Down Expand Up @@ -1080,7 +1080,7 @@
"\n",
"**Acceptance #12205 §5** :\n",
"\n",
"1. Substrat dont le verificateur existe sur main : GT-24 porte les points 1-3. **OUI**.\n",
"1. Substrat dont le verificateur existe sur main : GT-20 porte les points 1-3. **OUI**.\n",
"2. Generateur != verificateur : `certifier_impossibilite` (O(1)) != BFS exhaustif (O(V + E) sur la boule visitée, ici O(576 + 3 456) par palier). **OUI**.\n",
"3. Temoin certifie : verdict IMPOSSIBLE porte certificat analytique (d_row, d_col, k_max). **OUI**.\n",
"4. Cas sans solution = temoin d'impossibilite, pas silence : section 4 verifie par BFS tronque. Section 6 : plus de la moitie des paires a k_max=5 sont IMPOSSIBLE. **OUI**.\n",
Expand Down Expand Up @@ -1127,8 +1127,8 @@
"end_time": "2026-09-02T13:23:36.794320+00:00",
"environment_variables": {},
"exception": null,
"input_path": "GameTheory-24b-Chemin-Minimal-Temoins-Impossibilite.ipynb",
"output_path": "GameTheory-24b-Chemin-Minimal-Temoins-Impossibilite.ipynb",
"input_path": "GameTheory-20b-Chemin-Minimal-Temoins-Impossibilite.ipynb",
"output_path": "GameTheory-20b-Chemin-Minimal-Temoins-Impossibilite.ipynb",
"parameters": {},
"start_time": "2026-09-02T13:23:33.184445+00:00",
"version": "2.7.0"
Expand Down
Loading
Loading