Skip to content

fix(gt,#13452): GT-03d E1 — trois espaces ordinaux explicites (576/144/78), multiplicité x4 éliminée - #13599

Closed
myia-po-2023 wants to merge 2 commits into
mainfrom
fix/13452-gt03d-e1
Closed

myia-po-2023 wants to merge 2 commits into
mainfrom
fix/13452-gt03d-e1

Conversation

@myia-po-2023

@myia-po-2023 myia-po-2023 commented Aug 30, 2026 •

Copy link
Copy Markdown
Collaborator

Grain: MED/notebook-python — lane myia-po-2023:CoursIA-2 — prev: MED/genai #13593

Summary

Trancher l'incohérence E1 de GameTheory-03d-Plan-de-deformation.ipynb (prose « 78 profils distincts » vs output « 576 »). Verdict par re-execution : les deux nombres décrivaient des espaces différents, et la boucle commettait en plus un bug de multiplicité.

Diagnostic (le code d'avant)

L'énumération itérait permutations × permutations (4-tuples) mais rgs_class ne lisait que les 2 premières entrées de chaque tuple : chaque structure effective visitée 4× (les 2 valeurs restantes indifférentes), soit 576 = 144 structures × 4. Ni le « 576 » affiché ni le « 78 » de la prose ne décrivaient un espace correct.

Correction : trois espaces explicites, tous mesurés

Espace Définition Mesure (exécutée)
576 jeux bruts une matrice de rangs 1-4 par joueur (24 × 24 permutations) — espace de Rapoport-Guyer avant quotient 576
144 structures d'incitations J1 paires ordonnées (R,S) × (T,P) de valeurs distinctes 144 — distribution : 1 PD, 7 SH, 1 SD, 7 H, 128 Other (88.9 % = les « murs »)
78 classes d'équivalence stratégique quotient des 576 par re-étiquetage (lignes, colonnes, échange des joueurs = transposition) 78 — compte canonique Rapoport-Guyer 1966 : VERIFIÉ PAR EXECUTION

Le point subtil du quotient (source du 84 naïf) : l'échange des joueurs s'accompagne de la transposition des matrices — (A,B) → (Bᵀ, Aᵀ) — sinon le quotient compte 84 classes au lieu des 78 canoniques.

Prose alignée (4 cellules markdown + intro)

  • cell 0 (intro), cell 3 (Verification), cell 5 (Lecture), cell 8 (Rappel E1) : description trois-niveaux cohérente avec les sorties ; plus aucun « 78 profils » sans espace associé.

Validation

  • Notebook ré-exécuté : cellules code 1-5 toutes execution_count non-null, 0 erreur, sortie E1 réelle : 78 classes distinctes -- compte canonique Rapoport-Guyer 1966 : VERIFIE par execution
  • Le compte 78 a été vérifié indépendamment (implémentation séparée du quotient, même résultat) avant salvage
  • grep : aucun pattern C.1 ajouté ; exercise cells intactes
  • Catalogue byte-identique à main (aucun fichier catalogue touché)

Provenance

Travail initié dans une session antérieure (commit f3915295a3, 29/08 08:49, poussé sur branche sans PR), sauvé : rebase sur origin/main frais (+83 commits, zéro drift sur le fichier), prose cell 3 alignée (2 lignes), livré. Branche renommée fix/13452-gt03d-e1 (pas de force push sur l'ancienne).

Closes #13452

jsboige and others added 2 commits August 30, 2026 05:34
…ites (576/144/78), multiplicite x4 eliminee

La prose annoncait 78 profils distincts, l'output en denombrait 576. Tranche
par re-execution : les DEUX nombres decrivent des espaces distincts, et la
boucle commettait un bug de multiplicite (enumeration de 4-tuples dont seules
les 2 premieres entrees servent -> chaque structure visitee 4 fois, 576 = 144 x 4).

E1 reecrite en trois espaces explicites :
- Espace 1 : 144 structures d'incitations du joueur 1 (paires ordonnees
  (R,S) x (T,P)) -> 1 PD, 7 SH, 1 SD, 7 H, 128 Other (les 88.9%) ;
- Espace 2 : 576 jeux ordinaux complets (matrice de rangs par joueur, 24x24) ;
- Espace 3 : quotient par equivalence strategique (relabellage joueurs +
  transposition, lignes, colonnes) -> 78 classes, compte canonique
  Rapoport-Guyer 1966 VERIFIE par execution.

Prose (cell[5], rappel cell[8], plan cell[0]) alignee sur les trois niveaux.
Re-execution complete du notebook (kernel python3) : SUCCESS 4.7s, 0 erreur,
execution_count non-null partout, 0 pattern interdit C.1.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
The upstream "Verification" paragraph still described the old wrong
enumeration ("78 profils 2x2 distincts... par ligne"); aligned it with
the 576/144/78 structure the code now computes. Markdown-only edit on
top of the executed notebook (C.2 exception).

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@github-actions github-actions Bot added the lane-claim-absent Closing issue carries no claim at all (#10223) label Aug 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

c.415 (#11873): scope = notebooks CHANGED in this PR, not the whole corpus.
See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 pathologie.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] structural review — GT-03d E1 : trois espaces ordinaux (576/144/78), multiplicité ×4 éliminée

Structural (1 notebook, +155/−101 ; cellule E1 code+markdown lues intégralement aux deux extrémités base↔head, output committé lu, quotient re-exécuté par mes soins).

Vérifié firsthand (head 2361766, base 824108c) :

  1. Le quotient 576 → 78 RE-EXÉCUTÉ par mes soins (portage Node indépendant de la cellule : permutations 4!×4! → 576 jeux bruts, orbites par swap lignes/colonnes + échange joueurs avec transposition, forme canonique = min lexicographique). Résultat : 576/78, reproduit exactement — l'output committé « 78 classes — VERIFIE par execution » est authentique, et 78 = le compte canonique Rapoport-Guyer 1966. Le code ne l'affirme pas, il le calcule et le compare — la bonne posture épistémique.
  2. La multiplicité ×4 confirmée numériquement par les outputs : ancien output (base) = PD 4 / SH 28 / SD 4 / H 28 / Other 512, TOTAL 576 ; nouveau = PD 1 / SH 7 / SD 1 / H 7 / Other 128, TOTAL 144 — ratio exact 4:1 sur les cinq compteurs. Le diagnostic du body (énumération 4-tuples, rgs_class ne lisant que 2 entrées) est corroboré par l'arithmétique : 576/4 = 144 = 12×12 paires ordonnées (R,S)×(T,P) distinctes.
  3. L'incohérence d'origine résolue proprement : la prose disait « 78 profils distincts » (commentaire d'en-tête base) pendant que l'output affichait 576 — les deux nombres décrivaient des espaces différents sans que ce soit dit. La nouvelle cellule énumère les TROIS espaces explicitement (144 structures d'incitations joueur 1 / 576 jeux complets / 78 classes d'équivalence), chacun avec sa définition dans le commentaire.
  4. Les 4 archetypes canoniques inchangés et OK (PD/SH/SD/H → 4×[OK] dans l'output committé), exec counts 1→5 contigus, aucun output fake.
  5. La dette de derivation (section HARD) préservée : eq. 7/9/13 citées d'Archetti-Scheuring et pas re-dérivées, la correspondance convexe/concave et l'analogie Robinson-Goforth marquées comme lectures propres — le fix n'a pas dilapidé cette discipline.

Notes (cosmétique, hors diff pour la 2e) :

  • La chaîne de réassignations SH_canon = … / SD_canon = … avec commentaires auto-correctifs (« Wait P=1 < S=2 fail », « fail ») reste dans la cellule : c'est lisible comme un brouillon de raisonnement laissé visible. Assumé pédagogiquement ? Si oui rien à faire ; sinon, une passe de nettoyage rendrait le canon direct.
  • Pré-existant (inchangé par cette PR, je le note sans bloquer) : le commentaire return 'SD' # Snowdrift : cooperation faiblement dominante — pour T>R>S>P, aucune des deux stratégies n'est (faiblement) dominante ; c'est de l'anti-coordination. Formulation à revoir dans une tranche future.

Verdict : diagnostic exact, correctif minimal, résultat le plus dur du notebook (78) re-exécuté indépendamment et conforme au canon. LGTM structurel.

@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.5s
Search-1-StateSpace.ipynb ✅ SUCCESS 3.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 25.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.3s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 5
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Fermeture — doublon d'issue, et un defaut mesure sur l'espace intermediaire

Merci pour ce travail : il est serieux, execute, et il attaquait un vrai defaut. Je le ferme pour deux raisons, dont la premiere n'est pas de votre fait.

1. Doublon — #13452 est resolue depuis 04:03Z

#13454 (myia-po-2026:CoursIA) traitait la meme issue #13452 sur la meme cellule E1 du meme notebook, et vient d'etre mergee (92f62735e). #13452 est CLOSED, et cette PR est passee DIRTY.

Aucun [CLAIMED] n'existait sur #13452 quand l'une ou l'autre lane a commence : la collision n'est imputable a personne, c'est un manque de l'outillage de claim. Je l'ai note comme signal structurel — rien ne previent aujourd'hui quand deux PRs ouvertes citent la meme issue et touchent les memes fichiers.

2. L'espace « 144 » ne tient pas, et c'est ce qui a departage

Je n'ai pas tranche sur l'anciennete mais sur la substance, et j'ai mesure firsthand au head 23617661a :

espace "144" reconstruit : total=144   a 4 valeurs distinctes=24   avec repetition=120

L'enumeration ecrite est paires = [(a,b) for a in (1,2,3,4) for b in (1,2,3,4) if a != b], puis for (R,S) in paires: for (T,P) in paires:. Chaque paire a bien deux valeurs distinctes, mais les deux paires peuvent se recouvrir : (R,S)=(1,2) avec (T,P)=(1,2) donne le profil [1,1,2,2]. 120 des 144 profils ont des repetitions ; seuls 24 ont quatre valeurs distinctes — et 24 est exactement le nombre de permutations strictes de {1,2,3,4}.

Or la prose qualifie les trois niveaux de strictes, cinq fois :

cell[5] : « L'espace ordinal strict se decoupe en trois niveaux »
cell[3] : « Le code ci-dessous enumere l'espace ordinal strict 2x2 en trois niveaux »
cell[4] : « Classification des 4 archetypes Robinson-Goforth sur les espaces ordinaux stricts »

Deux enonces faux en decoulent :

  • La strictitude : 120 des 144 ne sont pas des profils stricts.
  • L'emboitement : 576 = 24 x 24, soit 24 structures d'incitations par joueur. 144 n'est pas un niveau de 576 — c'est un autre objet, plus grand et non strict. « Se decoupe en trois niveaux » suppose une hierarchie qui n'existe pas.

Merger cette version aurait remplace la contradiction prose/output de #13452 par une contradiction plus fine — donc plus durable, parce que moins visible. C'est la seule raison pour laquelle #13454 l'emporte : elle enumere permutations([1,2,3,4]) pour les deux joueurs, boucle arithmetiquement (1+6+1+6+64 = 78), et dit honnetement que ses comptes d'archetypes sont « une construction de ce notebook, pas un chiffre publie de Robinson-Goforth 2005 ».

Ce qui merite d'etre repris — l'idee, avec le bon nombre

Les trois niveaux emboites sont une bonne idee pedagogique, et le notebook merge n'en montre que deux (576 bruts, 78 classes). Le niveau intermediaire correct est 24, pas 144 :

576 jeux bruts  =  24 structures d'incitations (joueur 1)  x  24 (joueur 2)
                                                            |
                                                            v
                                              78 classes d'equivalence

Celui-la nest vraiment, il est strict par construction, et il rend visible d'ou vient le 576. Si vous voulez le porter en grain suivant sur le notebook merge, c'est un ajout que je prends volontiers — ouvrez une issue, je la claim pour votre lane.

Rien dans cette fermeture ne porte sur la qualite de l'execution : elle etait propre.

@myia-ai-01 myia-ai-01 closed this Aug 30, 2026
jsboige added a commit that referenced this pull request Aug 30, 2026
…er 1966) (#13620)

* feat(gt,#13617): GT-03d emboitement ordinal 24x24 -> 78 (Rapoport-Guyer 1966)

Le notebook GT-03d enumerait les 78 profils canoniques 2x2 en passant
directement a la construction de l'orbite. Cette PR explicite les
trois niveaux d'emboitement ordinal qui produisent ce compte canonique :

  Niveau 1 : permutations strictes des 4 issues -> 4! = 24 rangements par joueur
  Niveau 2 : produit croise des deux espaces -> 24 x 24 = 576 jeux bruts
  Niveau 3 : quotient par orbite (renommages + echanges de roles) -> 78
             formes normales distinctes (Rapoport-Guyer 1966)

Modifications :
- Cell 3 (md Verification) : ajout de la mention 'trois niveaux emboites'
- Cell 4 (code E1) : insertion d'un bloc qui imprime les trois niveaux
  avec leur compte exact (24 / 576 / 78), execute sur RNG seed=20260822
- Re-execution des cellules code (Numpy 2.4.3, RNG seed=20260822)

Heritage : ce grain poursuit le travail de #13454 MERGED (plan de
deformation GT-03d) et #13599 narrow (3 espaces ordinaux). Tell c.531-L2
★★ narrow REPAIR transversal tient G-VAR-1 par heritage.

Refs: Closes #13617

* fix(gt,#13617): reparer la source de cell4 (newlines) + re-execution E1

La source du cellule E1 (GT-03d) avait ete seriee SANS terminateurs de
ligne par le script d'ecriture du grain : les 118 elements de
structured-source ont ete concatenees en une seule ligne, ce qui faisait
de la cellule un unique commentaire (no-op). Les outputs commites etaient
ceux d'une execution anterieure a la corruption (stale, regle C.2).

Correction (source-output ratchet #13562, defaut de la classe cible) :
1. Reparer la structured-source de cell4 : re-terminer chaque element par
   un newline sauf le dernier (format Jupyter a n-1 newlines). Le contenu
   est byte-identique une fois le whitespace retire (verifie).
2. Re-execution papermill end-to-end kernel python3 : 5 cellules code,
   execution_count contigus [1..5], 0 erreur, 0 pattern interdit (C.1).
3. Sortie de E1 verifiee : Niveau 1 = 24 rangements stricts, Niveau 2 =
   24 x 24 = 576 jeux bruts, Niveau 3 = 78 formes normales ; distribution
   des archetypes 1 PD / 6 SH / 1 SD / 6 H / 64 Other (Rapoport-Guyer 1966).

Grain #13617 : emboitement ordinal 3 niveaux (24 -> 24x24 -> 78). Le reste
du notebook (cellules code E2-E4) est byte-identique. Ratchets locaux verts :
exec-sequence CLEAN, papermill ratchet 0 regression, source-output 0 stale.

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

---------

Co-authored-by: jsboige <jsboige@gmail.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
myia-po-2023 pushed a commit that referenced this pull request Aug 30, 2026
…er 1966) (#13620)

* feat(gt,#13617): GT-03d emboitement ordinal 24x24 -> 78 (Rapoport-Guyer 1966)

Le notebook GT-03d enumerait les 78 profils canoniques 2x2 en passant
directement a la construction de l'orbite. Cette PR explicite les
trois niveaux d'emboitement ordinal qui produisent ce compte canonique :

  Niveau 1 : permutations strictes des 4 issues -> 4! = 24 rangements par joueur
  Niveau 2 : produit croise des deux espaces -> 24 x 24 = 576 jeux bruts
  Niveau 3 : quotient par orbite (renommages + echanges de roles) -> 78
             formes normales distinctes (Rapoport-Guyer 1966)

Modifications :
- Cell 3 (md Verification) : ajout de la mention 'trois niveaux emboites'
- Cell 4 (code E1) : insertion d'un bloc qui imprime les trois niveaux
  avec leur compte exact (24 / 576 / 78), execute sur RNG seed=20260822
- Re-execution des cellules code (Numpy 2.4.3, RNG seed=20260822)

Heritage : ce grain poursuit le travail de #13454 MERGED (plan de
deformation GT-03d) et #13599 narrow (3 espaces ordinaux). Tell c.531-L2
★★ narrow REPAIR transversal tient G-VAR-1 par heritage.

Refs: Closes #13617

* fix(gt,#13617): reparer la source de cell4 (newlines) + re-execution E1

La source du cellule E1 (GT-03d) avait ete seriee SANS terminateurs de
ligne par le script d'ecriture du grain : les 118 elements de
structured-source ont ete concatenees en une seule ligne, ce qui faisait
de la cellule un unique commentaire (no-op). Les outputs commites etaient
ceux d'une execution anterieure a la corruption (stale, regle C.2).

Correction (source-output ratchet #13562, defaut de la classe cible) :
1. Reparer la structured-source de cell4 : re-terminer chaque element par
   un newline sauf le dernier (format Jupyter a n-1 newlines). Le contenu
   est byte-identique une fois le whitespace retire (verifie).
2. Re-execution papermill end-to-end kernel python3 : 5 cellules code,
   execution_count contigus [1..5], 0 erreur, 0 pattern interdit (C.1).
3. Sortie de E1 verifiee : Niveau 1 = 24 rangements stricts, Niveau 2 =
   24 x 24 = 576 jeux bruts, Niveau 3 = 78 formes normales ; distribution
   des archetypes 1 PD / 6 SH / 1 SD / 6 H / 64 Other (Rapoport-Guyer 1966).

Grain #13617 : emboitement ordinal 3 niveaux (24 -> 24x24 -> 78). Le reste
du notebook (cellules code E2-E4) est byte-identique. Ratchets locaux verts :
exec-sequence CLEAN, papermill ratchet 0 regression, source-output 0 stale.

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

---------

Co-authored-by: jsboige <jsboige@gmail.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
@jsboige
jsboige deleted the fix/13452-gt03d-e1 branch October 6, 2026 00:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane-claim-absent Closing issue carries no claim at all (#10223)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GT-03d : incoherence E1 — la prose dit 78 profils, l'output en denombre 576

4 participants