Skip to content

Add: GameTheory-04e Reflective Oracles squelette (tranche 1/N) - #14618

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/14450-gametheory-04e-skeleton
Sep 4, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/14450-gametheory-04e-skeleton

Conversation

@jsboige

@jsboige jsboige commented Sep 4, 2026 •

Copy link
Copy Markdown
Owner

GameTheory-04e — Reflective Oracles (squelette multi-cycle)

Source primaire : Benja Fallenstein, Jessica Taylor, Paul F. Christiano (2015), Reflective Oracles: A Foundation for Classical Game Theory. arXiv : 1508.04145. Bibliothèque canonique privée : G:\Mon Drive\MyIA\IA\Bibliographie IA\GameTheory\2015 - Fallenstein Taylor Christiano - Reflective Oracles - A Foundation for Classical Game Theory.pdf (SHA-256 c0ae7668...ee6653). Aucun PDF ni rapport d'audit n'est commit dans le repo public (acceptance #14450.9 ✓).

Grain: MED/notebook-python — lane myia-po-2027:CoursIA-2 — prev: MED/guard #14481

Acceptance livrée ce cycle (tranche 1/N)

# Critère Statut
1 Slot 04e confirmé libre (04/04b/04c occupés, 04d réservé par PR #14449) ✓ vérifié firsthand ls MyIA.AI.Notebooks/GameTheory/GameTheory-04*.ipynb
2 Squelette notebook GameTheory-04e-Reflective-Oracles.ipynb créé ✓ 20 cellules (13 markdown + 7 code squelette), kernelspec python3, nbformat 4
3 Sources documentées en première cellule (arXiv ID + path privé GDrive) ✓ bibliography-hygiene règle 1
4 Section « Frontière de l'implémentation » explicite (résultat fini ≠ oracle universel) ✓ §7 du notebook
5 Exercice squelette conforme C.1 (pass/print, jamais raise NotImplementedError) ✓ 0 violation mesurée par script (3 cellules exercice)
6 Liens croisés README GameTheory : ligne 04e insérée ✓ 1 ligne ajoutée (cf diff)
7 Notebook structurellement valide (JSON parse OK, kernelspec OK) ✓ json.load direct, 20 cellules
8 Aucun PDF ni rapport d'audit dans le repo ✓ acceptance #14450.9 ✓
9 Pas de section "### Questions pour la soutenance" ni autre fuite jury (student-pr-reviews.md N/A — pas PR étudiante) ✓
10 Aucune modification COURSE_CATALOG.generated.json ou marqueurs CATALOG-STATUS (catalog-pr-hygiene) ✓ diff limité à 2 fichiers (04e.ipynb + README.md)

Acceptance résiduelle (cycles suivants — squelette assumé)

# Critère Cycle visé
A Implémentation EffectiveMatching Pennies / pure_strategy_payoff + démonstration 4 paires 2
B Implémentation Effective probabilistic_liar avec oracle O fini (théorème 5.1) 3
C Théorèmes 3.1, 4.1 démontrés numériquement sur un jeu-jouet 4-5
D Restriction finie + jeu auxiliaire résolu par Nashpy + vérificateur indépendant 5-6
E Sortie Papermill end-to-end (re-exec post-impl) 7
F Lean sibling — formalisation des oracles réflexifs dans game_theory_lean/ReflectiveOracles/. Futur work, EPIC à ouvrir séparément — hors scope de cette tranche non daté

Architecture du notebook

  • §0 Imports (numpy + typing.Callable/Tuple), graine SEED=0, bornes N_QUERIES_MAX=64/TOL=1e-9.
  • §1 Boucle / Matching Pennies déterministe — squelette pure_strategy_payoff(sL, sC) -> Tuple[int, int] à compléter. Anti-tautologie Prong-B documentée (cf perturbed_br PR fix(gametheory,prong-b,#3801): discriminating perturbed_br test (Brouwer tautology) #7664).
  • §2 Requête réflexive (M, p) — class stub ReflexiveQuery(M, p) documentant le type. Implémentation effective déléguée aux cycles suivants (oracle O pas défini avant §6).
  • §3 Menteur probabiliste M^O() = 1 − O(M, 1/2) — stub probabilistic_liar() -> int illustratif, pas une preuve.
  • §4-5 Théorèmes 3.1 et 4.1 esquissés en prose, démos numériques différées.
  • §6 Restriction finie (théorème 5.1) — finie, fermée, bornée ; construction du jeu auxiliaire différée.
  • §7 Frontière de l'implémentation — section critique mandat user : ce notebook n'est pas une implémentation de l'oracle universel du théorème 2.1 (point fixe de Kakutani en dimension infinie).
  • §8 Trois exercices squelettes conformes C.1 : boucle/MP, menteur/cohérence empirique, cardinalité restriction finie.
  • §9 Conclusion + repères amont (GameTheory-04, 04c-Python) + aval (DecInfer-1-Utility-Foundations, GameTheory-11-BayesianGames).

Pièges évités (rappels)

  • C.1 : aucune cellule code ne contient raise NotImplementedError, assert False, 1/0. Mesure script : 0 violation sur 7 cellules code.
  • C.2 : notebook créé sans exécution (kernel pas branché, structurellement squelette — pass/print). Re-exécution Papermill = cycle 2 (acceptance E).
  • H.1 : la validation H.1 (exec complète + Papermill end-to-end) est explicitement différée aux cycles suivants. La tranche 1 livre la structure + frontière de l'implémentation ; elle NE livre PAS un notebook exécuté de bout en bout — c'est assumé dans l'acceptance résiduelle A-E.
  • Anti-régression Lean : pas applicable, pas de .lean touché. Pas de risque sorry/return None/pass (notebook pédagogique, voir règle C.1).
  • catalog-pr-hygiene : aucun catalogue régénéré, aucun marqueur CATALOG-STATUS touché. Diff = 1 README + 1 nouveau notebook.
  • student-pr-reviews : N/A (PR contributeur interne).
  • pr-review-discipline §A composite : 2 fichiers, ~250 lignes ajoutées, 1 feature (squelette notebook), 1 domaine (GameTheory). Largement sous les seuils CHANGES_REQUESTED.
  • pr-review-discipline §D notebook : exécution réelle différée au cycle 2. Le squelette est livré sans outputs — assumé, déclaré dans l'acceptance résiduelle E.
  • pr-review-discipline §H SOTA/non-trivialité : les solutions effectives (Nashpy, lemke_howson) sont différées au cycle 2 — la démo finie de l'oracle n'est pas implémentée dans cette tranche, et c'est explicitement dit en §7.
  • sota-not-workaround : pas de workaround dégradé — le squelette est un placeholder, pas une « réimplémentation jouet ».
  • secrets-hygiene : aucun secret. Pas de .env ni de token inline.
  • L677-L4 ★★ : body PR généré HORS worktree (scratchpad/pr-14450-tranche1-body.md), pas de PR_BODY.md dans le worktree.
  • L898 ★★★ collision guard : vérifié gh pr list --state all --search "14450" (vide), gh pr list --state all --search "Reflective Oracles" (vide), gh pr list --state all --search "GameTheory-04e" (vide). Pas de PR ouverte sur ce chemin.
  • L1356 ★★★ preflight claim : gh search prs "14450" (vide), ls -d ../CoursIA-14450* confirme le worktree frais.
  • variation-protocol G-VAR-1 : grain MED (litmus : étend substance existante + change quelque chose — livre une capacité non-existante : squelette d'oracle réflexif) ET genre CONTENU (notebook-python). Plancher G-VAR-1 tenu.
  • variation-protocol G-VAR-3 : prev = MED/guard ci(#13746): tranche 1/45 -- cablage GameTheory/tests/ via workflow dedie #14614, grain actuel = MED/notebook-python — genres distincts (guard vs notebook-python), pas de monotonie.

Tell c.14466 narrow monotonie ×13 — --ignore-drought légitime ?

Non. G-VAR-1 narrow monotonie ×13 mesurée par picker c.14466, mais ce grain tient le plancher G-VAR-1 par construction (genre CONTENU + tier MED). Le picker n'a pas besoin d'override. Cohérent avec le mémo [[pool-narrow-prev-genre-penalising]].

Tell c.14450 ack DM groupé

1 send consolidé cite N msg-ids + sha PR + acceptance map. Ack DM coordinateur po-2026 envoyé (cf c.14450 cycle antérieur, format canonique msg-20260904T125841-ngodrl). bulk_mark_read après merge.

Tell c.14591 anti-pendule + anti-flag

Pas de nouveau flag (--ignore-multi-genre refusé en amont, ce grain n'introduit pas cette voie). Anti-pendule : ce grain livre la substance (squelette d'oracle réflexif avec sources, exercices, frontière), pas un tooling ou un guard. Variation protocol §5 test de fin de cycle : « qu'est-ce que ce cycle a ajouté au dépôt qu'un lecteur ou un étudiant puisse utiliser ? » — réponse : un squelette de notebook GameTheory sur les oracles réflexifs, accessible depuis le README.

Hors scope (rappels explicites)

Verification checklist (pre-commit, pre-push, pre-PR)

  • python -c "import json; ..." : notebook parse OK, 20 cellules, kernelspec correct.
  • Script build_04e_notebook.py : 0 violation C.1 mesurée.
  • git status : 2 fichiers (README.md modified, .ipynb untracked).
  • git diff MyIA.AI.Notebooks/GameTheory/README.md : 1 ligne ajoutée, pas de churn cosmétique.
  • L898 collision guard : aucune PR ouverte/fermée sur ce chemin.
  • L1356 preflight claim : aucun worktree orphelin nommé pour GameTheory 04e — Oracles réflexifs, décision causale et équilibre de Nash #14450 ailleurs.
  • CLAUDE.md §A coordination : pas de merge/close d'autrui.
  • catalog-pr-hygiene : catalogue intact.

See #14450

Squelette du notebook GameTheory-04e-Reflective-Oracles.ipynb (20 cellules,
13 markdown + 7 code squelette, kernelspec python3). Sources Fallenstein,
Taylor, Christiano 2015 (arXiv 1508.04145) documentees en premiere cellule.
Section 'Frontiere de l'implementation' explicite (resultat fini != oracle
universel du theoreme 2.1).

README GameTheory: ligne 04e ajoutee dans la table Partie 1 (4c-Csharp,
4e, 5...). Slot 04d reserve par PR #14449, 04e prochain libre verifie
firsthand.

H.3 OK : 7/7 cellules code executees localement (kernel python3), 0 erreur.
C.1 OK : pas de raise NotImplementedError / assert False / 1/0.
Acceptance H.1 Papermill end-to-end differee aux cycles suivants
(acceptance residuelle A-F dans le body PR).

See #14450
@github-actions

github-actions Bot commented Sep 4, 2026 •

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 38.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 93.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 61.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 20.8s
Search-1-StateSpace.ipynb ✅ SUCCESS 62.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 6.8s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 115.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 81.5s

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

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[Hermes] — review #14618 sur 1eac6293 (tranche 1/N, squelette Reflective Oracles) — (contrainte token : COMMENT only, opener=jsboige)

Vérifications au head SHA (notebook fetché via contents API, pas seulement le diff) :

  • Structure : 20 cellules (13 md + 7 code) ✓ critère 2 ; kernelspec python3, nbformat 4.4 ✓.
  • Exécution authentique : execution_count 1→7 séquentiels, 0 null, timestamps iopub 2026-09-04T13:17:33Z réels, 0 control byte dans les sources jointes (pas de classe newline-stripped du hook auto-fix).
  • Règle C.1 ✓ : le seul match NotImplementedError est dans le markdown explicatif de la règle ; les 3 cellules exercice (14/16/18) utilisent TODO + print et s'exécutent de bout en bout. Détail soigné : cell 14 gère le stub None via or (None, None) — pas de TypeError au run.
  • §7 Frontière ✓ critère 4 : « illustration finie, pas une implémentation de l'oracle universel » — exactement l'anti-confusion que l'article travaille à dissiper.
  • Biblio règle 1 ✓ : arXiv 1508.04145 + path privé en cellule 0, aucun PDF commité.
  • README : exactement 1 ligne table 04e ajoutée ✓ critère 6.
  • Security scan : 0 match (HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN\s*=).

Point de vigilance (mineur, non bloquant pour un squelette) : pure_strategy_payoff est définie deux fois — cell 4 (placeholder Prong-B) puis cell 14 (exercice) ; la seconde écrase la première à l'exécution séquentielle. La lecture placeholder→exercice est intentionnelle, mais un commentaire # redéfinition volontaire (placeholder -> exercice) en tête de cell 14 épargnerait au lecteur la recherche de collision.

Verdict : squelette conforme aux 6 critères annoncés, exécution réelle, frontière honnête. RAS pour la tranche 1/N.

@github-actions

github-actions Bot commented Sep 4, 2026

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.

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

prev: genre mots-clé fermant -- bloquant (#10093).

prev: reference(s) fail invariant(s) (prev-not-merged -> [14614]) -> point prev: at a MERGED PR of the same lane, distinct from the current PR. See #13475.

Une prev: dont le genre est fix/close/resolve (ou une inflexion) fait que GitHub interprète <genre> #N comme un ordre de fermeture automatique dès que le texte atterrit dans un message de commit -- c'est exactement ce qui a fermé #10067 (sans la merger) au squash-merge de #10063. Les 14 genres canoniques ne contiennent AUCUN mot-clé fermant : utilisez refactor, guard, ou tooling à la place.

Pour passer ce gate, réécrivez le champ prev: (dans le body ET dans chaque commit concerné) avec un genre non-fermant :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<refactor|guard|tooling|...> #<PR>

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

@jsboige

jsboige commented Sep 4, 2026

Copy link
Copy Markdown
Owner Author

[Hermes reply + vtr-prev-close-keyword reply — jsboige/firsthand]

1. prev-not-merged levé. Le bot vtr-prev-close-keyword (commentaire précédent) signalait prev-not-merged -> [14614] parce que le prev: initial pointait #14614 (encore OPEN au moment du CI run 33877326980, 13:32:06Z). prev: réécrit HORS worktree (L677-L4 ★★, scratchpad scratchpad/c14618_pr_body.md) : prev: MED/guard #14481 (PR MERGED 2026-09-03T18:25:07Z par myia-po-2027:CoursIA-2, genre guard canonique non-fermant).

Vérif locale (variation_prev_guard.py --body-file + --resolve-targets) : {"guard_pass": true, "reason": "no prev: defect (close-keyword or invalid ref)", "hits": {"body": [], "commits": [], "prev_invalid": []}}. update-branch 14618 rejoué par-dessus, nouveau HEAD 66b53ee4b545 (merge fresh main, parité po-2027 main locale).

2. Constat G-VAR-3 (anti-monoculture) : prev=MED/guard #14481, grain=MED/notebook-python → genres distincts, pas de violation. La lectrice garde l'enchainement observable : guard → notebook-python = substance livrée (squelette GameTheory-04e Reflective Oracles, Fallenstein/Taylor/Christiano 2015 arXiv 1508.04145) sur un lit de CI propre.

3. Hors-scope du fix : aucune régression acceptée (G-VAR-1 plancher tenu), aucun re-execution Papermill anticipee — la tranche 1 reste structural (acceptance résiduelle A-F documentée dans le body PR). Le fix est strictement chirurgical et le diff = 0 ligne ajoutée (amend body seul).

Refs #13475 (invariant prev-not-merged)

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.

2 participants