Skip to content

feat(gametheory,#12204): SC-06 Mobius — agrégation, pouvoir et manipulation (op 14, 2e attestation) - #16378

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/12204-op14-mobius-agregation
Sep 18, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/12204-op14-mobius-agregation

Conversation

@jsboige

@jsboige jsboige commented Sep 16, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2026:CoursIA-2 — prev: DEEP/notebook-lean #16356

Substance

Nouveau notebook SocialChoice-06 — Möbius sur le treillis des coalitions : agrégation, pouvoir et manipulation (MyIA.AI.Notebooks/GameTheory/SocialChoice/06-Mobius-Aggregation-Pouvoir-Manipulation.ipynb, 18 cellules, 6 code). Deuxième attestation de l'opération 14 « Agréger un collectif » de l'EPIC #12204 : la loi (inversion de Möbius / dividendes de Harsanyi) était attestée une seule fois en Lean-formel ; ce notebook l'atteste sur un substrat indépendant — Python exécuté, pattern « Gain 1 » de l'op 9.

Loi : mobius_coeff / mobius_reconstruct = miroirs Python exacts de Mobius.mobiusCoeff / Mobius.mobiusReconstruction (Shapley.lean:614-634, sorry-free). Reconstruction vérifiée par exécution sur les 16 coalitions de [6;4,3,2,1] (le re-test [8;5,4,3,2,1] est posé en exercice étudiant, non exécuté).

Pont Shapley : valeur de Shapley calculée deux fois par des voies indépendantes — via les dividendes (partage égal m(T)/|T|, miroir de phi_weightedUnanimity + shapley_uniqueness, Shapley.lean:870/996) et par énumération des 24 ordres d'entrée — écart mesuré 5.55e-17. Indice de Banzhaf en regard.

Témoin : Gibbard-Satterthwaite sur un Borda à électeurs pondérés (le jeu [6;4,3,2,1] devient un électorat) — profil sincere A=11 > B=10 > C=9, l'exercice 3 fait chercher le bulletin insincere profitable de V3 (unique : [B,C,A] → B=12).

Preuves d'exécution (H.1)

$ python -m papermill 06-Mobius-Aggregation-Pouvoir-Manipulation.ipynb <same> -k python3
Executing notebook with kernel: python3
100%|██████████| 18/18 [00:04<00:00,  4.15cell/s]
  • exec_counts : 6/6 cellules code remplies (1..6), 0 erreur dans les outputs (vérifié par script).
  • Sorties mesurées (vérifiées contre un script indépendant avant commit — anti-faux-zéro) :
    • Loi de reconstruction ... sur les 16 coalitions : True ; dividendes {1,2}:+1, {1,3}:+1, {2,3,4}:+1, {1,2,3}:−1, N:−1.
    • Shapley = (0.4167, 0.2500, 0.2500, 0.0833) = (10,6,6,2)/24 par les DEUX voies ; Banzhaf swings (5,3,3,1) ; P4 balancier uniquement dans {2,3,4}.
    • Somme des valeurs de Shapley = 1.0 | v(N) = 1 (efficience, assert).
    • Scores Borda ponderes sous vote sincere : {'A': 11, 'B': 10, 'C': 9}.
  • C.1 : grep -nE "raise NotImplementedError|assert False|1/0" → 0 hit ; les 4 stubs (Ex1, Q1, Ex2, Ex3-énumération) suivent le pattern print("... a completer") + result = None # TODO etudiant avec Indice/Attendu.

Vérification des claims mathématiques (mesurée avant livraison)

Chaque claim du notebook (prose comprise) a été re-vérifié par un script indépendant : roundtrip 16+32 coalitions, table des dividendes, Shapley double-voie, Banzhaf, décomposition de m(N) par taille (2/4/1 → −1 ; 2/8/5/1 → +2), dummy Luxembourg (0 swing, parité : {4,4,4,2,2} ne produit que des sommes paires, 11 impossible), Belgique 6 swings, témoin Borda (BCA unique manipulation profitable), P4 swing unique {2,3,4}, et la « coïncidence remarquable » Shapley == Banzhaf normalisé sur ce jeu (vrai, mesuré). Correction en cours de route : la formule factorielle (|T|−1)!(n−|T|)!/n! pour φ via dividendes est fausse — le théorème de Harsanyi est le partage égal m(T)/|T| (confirmé contre phi_weightedUnanimity, Shapley.lean:870-920) ; c'est l'anti-faux-zéro qui l'a attrapée (la formule factorielle donnait −1/6 à chaque joueur et violait l'efficience).

Accompagnement

  • README série : ligne SC-06 (40 min), durée totale ~3h55 → ~4h35, parcours élargi à six angles (mermaid + Étape 6), prérequis, concepts clés (+2 lignes), ressources (+Harsanyi). Bloc CATALOG-STATUS byte-identique à main (vérifié : 0 ligne du diff le touche).
  • Ledger docs/ledgers/12204-ict-chantier-1-audit-froid.md : op 14 → 2 attestations, promotion « en constitution » → TABLE, nouveau §Gain 3 (même pattern que l'op 9).
  • Drift catalogue signalé (non aligné) : le tableau compte désormais 9 notebooks (6 originaux + 3 jumeaux C#) contre pedagogical_count: 8 dans le bloc CATALOG-STATUS — le bloc appartient à l'automatisation, la resynchronisation se fera par le pipeline catalogue.
  • See #12204 (EPIC : l'op 14 atteint son critère d'admission, l'EPIC reste ouverte pour les autres opérations).

🤖 Generated with Claude Code

…ation (op 14, 2e attestation)

Nouveau notebook SocialChoice-06 : inversion de Mobius sur le treillis des
coalitions (miroir Python de Mobius.mobiusCoeff / mobiusReconstruction,
Shapley.lean), reconstruction verifiee sur [6;4,3,2,1], Shapley par dividendes
ET par enumeration des ordres (2 voies, ecart 5.55e-17), Banzhaf, dummy du
Luxembourg 1958, temoin Gibbard-Satterthwaite sur Borda pondere. 3 exercices
+ 1 question, stubs C.1, outputs reellement executes (papermill python3).
README serie : ligne SC-06, duree 4h35, parcours 6 angles. Ledger audit-froid :
op 14 -> 2 attestations, Gain 3. See #12204

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@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 3.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.4s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 2.9s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 16.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.6s

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

@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.

VERDICT: LGTM (vérifié: maths re-dérivées par script indépendant + témoin Borda recalculé à la main + artefact inspecté)

[NanoClaw] structural review (notebook + README + ledger lus via API contents au head, diff jamais fetché en bloc).

Vérifié firsthand — maths re-dérivées indépendamment (script from-scratch, aucune réutilisation du code de la PR) :

  • Dividendes de Harsanyi du jeu [6;4,3,2,1] : mon calcul (récursion exacte sur sous-masques propres) donne exactement les non-nuls du body : {1,2}:+1, {1,3}:+1, {2,3,4}:+1, {1,2,3}:−1, N:−1 — et la table committée (cell 3) porte les mêmes valeurs.
  • Shapley double voie : via dividendes m(T)/|T| ET via énumération des 24 ordres, je retrouve (10,6,6,2)/24 = (0.4167, 0.25, 0.25, 0.0833), somme = 1 — la sortie committée affiche les deux voies d'accord. Le partage égal m(T)/|T| (Harsanyi) est bien le bon pont — la correction en cours de route du body (formule factorielle fausse attrapée par l'anti-faux-zéro, violait l'efficience) est documentée et juste.
  • Banzhaf swings (5,3,3,1) recomptés coalition par coalition ; P4 balancier dans {2,3,4} UNIQUEMENT ✓ ; la « coïncidence remarquable » Shapley == Banzhaf normalisé est vraie sur ce jeu (5/12, 3/12, 3/12, 1/12) ✓.
  • Témoin Borda pondéré recalculé à la main depuis le profil committé (V1 w4 [B,A,C], V2 w3 [A,C,B], V3 w2 [C,B,A], V4 w1 [C,A,B], échelle 2/1/0) : sincere A=11 > B=10 > C=9 exact (total 30 = 3×poids total, cohérent), et le flip insincère V3→[B,C,A] donne B=12 gagnant — le claim de l'exercice 3 est arithmétiquement exact.

Artefact : 18 cellules, 6 code, exec 1-6, 0 output d'erreur ; les 4 stubs (Ex1 [8;5,4,3,2,1], Q1 décomposition par taille, Ex2 dummy Luxembourg 1958, Ex3 manipulation) suivent le pattern print("… a completer") + TODO etudiant ; secrets : 0.

Accompagnement : diff README inspecté hunk par hunk — aucune ligne du bloc CATALOG-STATUS (l.3-8) n'est touchée (claim byte-identical vérifié) ; le drift déclaré (table 9 notebooks vs pedagogical_count: 8) est exact et honnêtement signalé comme resync pipeline. Ledger : op 14 → 2 attestations, promotion TABLE, §Gain 3 présent ✓.

Limites : papermill non re-jouable ici (pas de Python au conteneur) — les exec_counts et outputs lus sont ceux committés ; l'unicité de la manipulation profitable de V3 (vs autres bulletins insincères) est affirmée par le script de vérification de l'auteur, pas re-énumérée par moi (les 5 autres bulletins V3 donneraient A ou C gagnants ou B<12 sauf preuve du contraire — confiance moyenne, non bloquante pour un énoncé d'exercice).

@github-actions

github-actions Bot commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16378 (feat(gametheory,#12204): SC-06 Mobius — agrégation, pouvoir et manipulation (op 14, 2e attestation)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants