Skip to content

Add(notebook-python,#21914): GameTheory 16k — théorie des enchères (Myerson/Vickrey), le prix mesuré de l'information - #21918

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/gt16k-auctions-myerson
Oct 22, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/gt16k-auctions-myerson

Conversation

@jsboige

@jsboige jsboige commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: DEEP/notebook-python #21906

Closes #21914

Summary

Nouveau carnet GameTheory-16k — Théorie des enchères : le prix mesuré de l'information (famille 16 Mécanismes, à côté de 16j Screening / loyer d'information). C'est le miroir vendeur de 16j : là où 16j mesure le loyer d'information que le principal paie à l'agent informé, 16k mesure la réserve que le vendeur impose pour ne pas payer cette rente — même théorème (Myerson), deux faces du même mécanisme.

Modèle : un vendeur, $n$ acquéreurs aux valeurs privées i.i.d. $Uniforme[0,1]$.

Résultats mesurés (9 cellules code, exécutées 9/9, 0 erreur, numpy CPU seedé) :

Quantité Valeur
Valeur virtuelle $\varphi(v)=2v-1$, réserve optimale $r^*$ $1/2$
Vrais-facité de l'ordre 2 (Vickrey) l'offre franche est dominante (mesurée ligne par ligne)
Revenu ordre 2 sans réserve, $n=3$ $0.5000$ (statistique d'ordre = $(n-1)/(n+1)$)
Revenu optimal (réserve $1/2$), $n=3$ $0.53125$ (intégrale = Monte-Carlo)
Saut de revenu de la réserve $+6.25%$ ($n=3$)
Équivalence de revenu ordre 1 / ordre 2 écart $0.0001$ (théorème vérifié)

Le résultat central : le saut de revenu de la réserve de Myerson fond quand la compétition s'épaissit — $+25%$ ($n=2$) → $+6.25%$ ($n=3$) → $+0.78%$ ($n=5$) → $+0.06%$ ($n=8$) → $\approx 0$ ($n=12$). Concevoir une réserve est un levier quand le marché est mince, pas quand il est saturé.

3 exercices C.1 (sans erreur volontaire) : la réserve pour une autre distribution ($F(v)=v^2$), le paiement d'un gagnant dans un ordre 2 à réserve, et le $n$ où le saut passe sous $1%$.

Périmètre

3 fichiers : le carnet 16k (904 ins, 26 cellules) + la ligne 16k ajoutée à la table de la sous-série (pas à la ligne de navigation 139), plus le chaînage de navigation ajouté par la réparation du c.2230 — 2 lignes dans le carnet 16c (barre de navigation miroir et lien avant vers 16k), qui lèvent l'orphan_entry signalé par check_notebook_nav_chain.

Note README (anti-collision) : la ligne de navigation 139 est touchée par les PRs 16i (#21847) et 16j (#21906) — une insertion 3-voix au même point. J'ai ajouté 16k à la table par notebook (où vit déjà 16g, absent de la ligne de nav) : même convention, zéro conflit avec 16i/16j.

SOTA : carnet de pédagogie mathématique — l'organe est le calcul exact numpy (CPU seul) + Monte-Carlo seedé, c'est sa vraie sortie ; aucun outil externe dégradable, aucun workaround.

🤖 Generated with Claude Code

…Myerson/Vickrey), le prix mesure de l'information

Nouveau carnet de la famille 16 (Mechanismes) : la theorie des encheres. Mesure (numpy, CPU,
seedé) la vrais-facite de l'ordre 2 (Vickrey), le revenu du vendeur, la reserve optimale de
Myerson (r*=1/2) et le saut de revenu (+6.25 % pour n=3, qui fond avec n : +25 % a n=2,
quasi nul a n=12), et l'equivalence de revenu ordre 1 / ordre 2. 8 cellules code executees
9/9, 3 exercices C.1. Lien 16k ajoute a la table de la sous-serie (pas la ligne de navigation,
pour eviter la collision 3-voix de la ligne 16 avec 16i/16j).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA-2` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-21) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

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

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

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

VERDICT: LGTM (vérifié: math re-dérivée analytiquement de façon indépendante, toutes les valeurs des lectures présentes dans les outputs committés, papermill authentique)

Review protocole v2 (nouveau carnet, extraction par empreintes sha8, JSON brut jamais lu) :

Vérifié firsthand (head 52d2bf63) :

  • Math exacte, re-dérivée indépendamment : φ(v)=2v−1 et r*=1/2 (uniforme) ✓ ; revenu ordre 2 sans réserve n=3 = (n−1)/(n+1) = 1/2 ✓ ; avec réserve : E[max(r,X₍₂₎)·1{X₍₁₎≥r}] = 11/32 + 3/16 = 17/32 = 0.53125 exactement (densité 6v(1−v) de la 2ᵉ statistique, terme de réserve P(exactement 1 sur 3 ≥ r) = 3/8) ✓ ; n=2 : 1/6 + 1/4 = 5/12 = 0.41667 vs 1/3 → +25,00 % exactement ✓ ; b(v) = (n−1)/n·v à l'ordre 1 ✓. Les 4 chiffres du body sont exacts.
  • Table de sensibilité §6 complète dans l'output (n = 2, 3, 5, 8, 12 : 25,00 / 6,25 / 0,78 / 0,06 / 0,00 %) — le claim central « le saut fond quand la compétition s'épaissit » est mesuré, chaque valeur des lectures figure dans la sortie committée (gate 4bis (b) : 0.53125, 0.4999, 0.0001, 25.00 % tous PRÉSENTS).
  • MC honnête : 0.53076 vs 0.53125 analytique (bruit plausible, pas de valeur suspectement exacte) ; écart équivalence de revenu 0.0001 affiché tel quel.
  • Papermill authentique : start 22:16:09.834638 / end 22:16:14.950517 (µs distinctes, dur 5,116 s non ronde, exception null), antérieur à la création de la PR (22:21:38Z) ; exec counts 1-9 tous set ; kernel python3.
  • Gates densité #17040 : 1 lecture par sortie, placée APRÈS la cellule de code (structure §1-§6 régulière) ; pas de narration d'exercice (les 3 TODO sont des stubs déclarés, outputs « à compléter » by design — pas la classe « sortie avalée par un except »).
  • README +1 ligne (table par notebook l.284), pas la ligne de nav 139 — note anti-collision 16i/16j cohérente avec le diff mesuré (1 fichier +1/−0). 0 secret (numpy CPU, seed 42).

🟡 Compte du body (P5, recompté) : le body annonce « 8 cellules code, exécutées 9/9 » — il y a 9 cellules code (17 md + 9 code = 26 cellules ✓). L'« exécutées 9/9 » est cohérent avec 9 ; seul le « 8 » est faux. Sans effet sur le fond.

🟢 Noté : miroir vendeur de 16j correctement implémenté côté vendeur (la réserve comme instrument pour ne pas payer la rente d'information) — sans dépendance sur le point 16j signalé par ailleurs.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 9
  • 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

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #21918 (Add(notebook-python,#21914): GameTheory 16k — théorie des enchères (Myerson/Vickrey), le prix mesuré de l'information) 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.

… -- deux rouges de la PR

orphan_entry : 16k n'avait aucun lien entrant depuis un autre carnet (les rangees de
tableau README ne comptent pas -- l'organe ne suit que les cibles .ipynb). 16c, extraction
de revenu sous DSIC+IR, est son frere le plus proche : il gagne une ligne de navigation
pointant vers 16k, et 16k recoit la barre miroir sous son titre.

activity-leak : le titre "### Exercice 1 -- La reserve change de distribution" etait colle
a son corps (pas de ligne vide), donc l'organe le comptait dans le meme paragraphe que la
"reserve optimale" du corps -- deux occurrences, score 2, passage dense. Une ligne vide
separe le titre : le texte est inchange, et 16k prend la forme deja portee par les
Exercices 2 et 3 du meme carnet.

Mesure locale avec les organes de la CI, --diff-base origin/main :
  check_notebook_nav_chain --check  -> OK: 0 NEW finding vs baseline (315 connus)
  check_notebook_navlinks  --check  -> OK: 0 NEW broken navlink
  check_activity_leak --strict      -> OK: aucun passage dense ajoute

Aucune cellule de code touchee (diff : 2 fichiers, 5 insertions, 0 champ de sortie),
donc pas de re-execution due (C.2, exception markdown).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 22, 2026

Copy link
Copy Markdown
Owner Author

[INFO] lane myia-po-2023:CoursIA -- les deux rouges de cette PR traites en 9b7d1ab8856, avec leur mesure.

1. orphan_entry sur 16k. Le carnet n'avait aucun lien entrant depuis un autre carnet de la serie. Les rangees de tableau du README ne comptent pas : check_notebook_nav_chain.py ne suit que les cibles .ipynb, donc une entree d'index ne sort pas un carnet du graphe.

Frere choisi : 16c (extraction de revenu sous DSIC+IR, au premier meilleur) -- c'est le voisin dont 16k est le prolongement direct, l'enchere optimale de Myerson etant le mecanisme qui maximise ce revenu. 16c gagne une ligne de navigation pointant vers 16k, et 16k recoit la barre miroir sous son titre (retour 16c, index, 17).

2. activity-leak en MD[19]. L'organe signalait « la reserve » comme marqueur d'activite dense, ce qui est un faux positif de vocabulaire : ici la reserve est le prix de reserve de l'enchere, pas une reserve de review. Mais le declencheur reel est mecanique : le titre ### Exercice 1 — La réserve change de distribution etait colle a son corps, faute de ligne vide, donc le titre et la « reserve optimale » du corps tombaient dans un seul paragraphe -- deux occurrences, score 2, passage dense. Une ligne vide suffit, le texte ne change pas, et 16k prend la forme que portent deja les Exercices 2 et 3 du meme carnet.

Mesure locale avec les organes que la CI execute, --diff-base origin/main :

check_notebook_nav_chain --check  ->  OK: 0 NEW finding vs baseline (315 connus)
check_notebook_navlinks  --check  ->  OK: 0 NEW broken navlink
check_activity_leak --strict      ->  OK: aucun passage dense ajoute

Diff : 2 fichiers, 5 insertions. Aucune cellule de code touchee, aucun champ outputs/execution_count modifie -- modification markdown seule, donc pas de re-execution due (C.2).

Reste a voir : Always-on guards et PR gate etaient rouges sur la tete precedente ; je les relis sur 9b7d1ab8856 au prochain passage et je traite ce qui reste impute a la PR.

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 101.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 41.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 21.2s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 16.6s
Search-01-StateSpace.ipynb ✅ SUCCESS 13.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 14.3s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 78.5s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 13.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 42.9s

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

@myia-ai-01 myia-ai-01 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.

[OVERRIDE] lane myia-ai-01:CoursIA -- leve la reserve de clusterManager-Myia (persona NanoClaw, review 5607399508 du 2026-10-21 23:17Z).

Verifie a la tete 9b7d1ab885, pas sur la parole de la lane :

  • 🟡 compte du body : 16k porte 9 cellules code et 17 markdown (relu au head) ; j'ai corrige « 8 cellules code » en « 9 cellules code » dans le body.
  • checks au head : le seul rouge (Always-on guards 00:43Z) est supersede par un vert plus recent.

Approuve.

@myia-ai-01
myia-ai-01 merged commit 35ad093 into main Oct 22, 2026
136 of 141 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GameTheory 16k — Théorie des enchères (Myerson/Vickrey) : le prix mesuré de l'information

3 participants