Skip to content

fix(gametheory,#17107): GT-03d — le plan de deformation calcule pour de vrai (eq.7 exacte + hysteresis reelle) - #17341

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/gt03d-deformation-audit-17107
Sep 23, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/gt03d-deformation-audit-17107

Conversation

@jsboige

@jsboige jsboige commented Sep 22, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA -- prev: MED/notebook-python #17340

GameTheory-03d — réparation complète : le plan de deformation calculé pour de vrai (4 findings NanoClaw #17107)

Défaut racine : le carnet promettait un « plan de deformation » (c'est son titre) sans jamais le calculer ni le tracer. Dérivé : une lecture orpheline décrivant une carte inexistante avec des chiffres fabriqués (md 9), un mécanisme « potentiel bistable » jamais implémenté (le f_x = x(1-x)(1-2c/b) du E3 est monostable — l'écart up/down mesuré était un artefact de balayage + bruit de Langevin), un « prédiction réussie » contradictoire avec la sortie [RATEE]×3, et zéro figure sur 5 cellules code.

Fix — le modèle exact (eq. 7) implémenté, mesuré, tracé :

  • Formule corrigée (md 6) : b(i) = i^s / (i^s + k^s) — sigmoïde croissante à seuil (b(k) = 1/2). La forme k^s/(k^s+i^s) héritée rendait la défection universelle (vérifié : carte 100 % defection), incompatible avec le propre glossaire du carnet (« coopérateurs au-dessus de k contribuent »).
  • Nouvelle cellule E2b : D(x) = E_binom[b(i+1) − b(i)] − c/b exact à taille de groupe finie, classification par signes de D sur (0,1), carte 16×12 du plan (k, s) à c/b = 0.2 + figure pcolormesh. 3 régimes mesurés : coexistence 32 (16.7 %), bistable 91 (47.4 %), defection 69 (35.9 %) — aucune coop pure à c/b = 0.2.
  • E3 refait sur le modèle exact (déterministe, plus de Langevin) : continuation quasi-statique des deux branches (départ x=1 / x=0), figure de bifurcation avec la fenêtre grisée. D tabulé par c puis interpolé, relaxation poussée à 30 000 pas (sinon un D faible au petit c/b laisse la branche basse « en route » et fabrique une fausse borne basse — corrigé : à c/b=0.02 les deux branches convergent vers 0.635, hystérésis nulle, cohérent avec la coexistence de la carte). Fenêtre d'hystérésis mesurée : c/b ∈ [0.07, 0.27], écart maximal +0.482 à c/b = 0.07 (x_haut 0.482 / x_bas 0.001). L'écart up/down est maintenant la bistabilité réelle du modèle, pas un artefact.
  • E4 honnête (md §4 + conclusion pt 3) : le banc imprime [RATEE]×3 au seuil déclaré — la prose dit désormais ce que la sortie dit : le non-linéaire est le plus proche (0.17 vs 0.30/0.70) sans passer, la hiérarchie va dans le sens d'Archetti-Scheuring, mais l'expérience exécutée ne reproduit pas la dissociation documentée. « Verdict honnête du banc » remplace « prédiction réussie ».
  • paraphrase-stack résolu : md 8 répétait la lecture E1 → réécrit en lecture de la dégénérescence eq. 9 (100 % coexistence mécanique, err_rel 70/50/45 % — les chiffres réels, pas les « < 20 % » fabriqués). Titres de lectures différenciés (Redressement critique des 218 notebooks a sections dupliquees -- lecture de bout en bout, consolidation, pas suppression mecanique #17066) : E1 / E2a dégénérescence / E2b carte / E3 fenêtre.
  • md 2 : matplotlib déclaré pour ce qu'il fait désormais (2 figures).

Non-trivialité (Prong B) : le carnet passe de « décrire la persuasion du plan » à calculer la carte des régimes et la fenêtre d'hystérésis d'un modèle exact à N fini — la capacité distinctive (binomial exact + continuation) est visible dans les sorties et les figures.

Validation

Preuve Résultat
Papermill end-to-end (--execution-timeout 600) SUCCESS RC=0 — sorties mesurées : carte 32/91/69, fenêtre [0.07, 0.27]
Cellules code 6 (5 reprises + E2b nouvelle), 0 erreur, execution_count 1–6, 2 figures (pcolormesh + bifurcation) commitées
Stubs/exercices aucun touché (carnet de vérification sans exercices stub — conservé tel quel)
detect_markdown_rendering.py / check_split_reading_cells.py / accents / enrich_quality_ci.py (base blob main) 0 violation / clean / head 50 ≤ base 61 (aucune cure nouvelle) / RC=0
H.3 check_null_exec.py Passed (aucune cellule null+vide)
Verdict forensique H.5 EXEC_PROVED

See #17107 (contribution partielle : volet GT-03d).

🤖 Generated with Claude Code

Diagnostic dérive

  • Cause classifiée : (a) env/kernel. Les sorties de cette PR proviennent d'une
    re-exécution locale sous Python 3.11.9 (kernelspec python3 de myia-po-2026),
    alors que la base main porte des sorties exécutées sous Python 3.13.3 — même
    kernelspec python3, seul language_info.version diffère. Le repr() des flottants
    change d'un interpréteur à l'autre : le garde signale donc
    language_info.version: '3.13.3' -> '3.11.9' et une dérive de signature
    flottante sur des cellules non touchées par cette PR.
  • Verdict : REFRAME. Aucune édition manuelle de sortie, aucun alignement markdown :
    ce sont les valeurs réelles des re-exécutions (kernel local, 0 erreur). Seul le
    rendu texte des flottants diffère, à l'unité près (repr()), pas la valeur.
  • Action : exemption C.4 (acceptance Sendov : alias « Lean-18 (A*) » en cellule code — sa re-exécution exige d'abord les échappements invalides des cellules 19/23 #15650, point 4 — l'écart résiduel est
    expliqué). L'interpréteur exact de la base n'est pas installable ici : la série
    porte six versions majeures-mineures distinctes en base (3.12.13, 3.13.3,
    3.13.7, 3.13.12 x2, 3.13.14), qu'aucune installation locale ne peut satisfaire
    simultanément. Le remède de fond (re-exécution sous l'interpréteur d'origine)
    suppose la machine qui a produit la base ; il est hors de portée de cette lane.

Justifications content-loss (detect_md_content_loss)

Reecritures assumees, verifiees cellule par cellule avant declaration (contenus-cle preserves ou corriges, cf. findings #17107) :

md-content-loss: reecriture assumee -- GameTheory-03d-Plan-de-deformation.ipynb cell 6 : formule de benefice remise en forme canonique (i^s au numerateur) ; E2 n'est plus adossee au potentiel bistable jamais implemente
md-content-loss: reecriture assumee -- GameTheory-03d-Plan-de-deformation.ipynb cell 8 : lecture orpheline retiree : ses chiffres (78 jeux, archetypes) sont ceux de E1, deja portes par la cellule markdown precedente ; remplacee par la lecture ancree E2a du balayage reel
md-content-loss: reecriture assumee -- GameTheory-03d-Plan-de-deformation.ipynb cell 11 : section E3 recentree sur le balayage reellement execute
md-content-loss: reecriture assumee -- GameTheory-03d-Plan-de-deformation.ipynb cell 13 : lecture de la fenetre d'hysteresis reecrite sur les valeurs mesurees
md-content-loss: reecriture assumee -- GameTheory-03d-Plan-de-deformation.ipynb cell 14 : section E4 reecrite autour du contre-claim execute
md-content-loss: reecriture assumee -- GameTheory-03d-Plan-de-deformation.ipynb cell 16 : conclusion reecrite sur les verdicts mesures

…(exact eq.7 regime map + real hysteresis)

- md 6: benefit sigmoid corrected to INCREASING b(i)=i^s/(i^s+k^s), b(k)=1/2
  (the decreasing form made defection universal - verified by parametric sweep)
- new cell E2b: exact finite-N model (eq.7), sign-based regime classification,
  16x12 (k,s) map at c/b=0.2 + pcolormesh figure: 32 coexistence / 91 bistable
  / 69 defection, no coop_pure
- E3 redone on the exact model (deterministic, no Langevin): quasi-static
  continuation of both branches, D tabulated per c + 30000-step relaxation,
  bifurcation figure with window shading: c/b in [0.07, 0.27], max gap +0.482
- E4 honest verdict: [RATEE]x3 kept, prose says what the output says
- md 8 paraphrase-stack -> lecture of the eq.9 degeneracy (100% coexistence,
  err_rel 70/50/45%); differentiated reading titles (#17066); matplotlib
  declared for its 2 figures
- papermill re-executed end-to-end: 6 code cells, 0 error, 2 figures committed

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

Copy link
Copy Markdown
Contributor

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

@clusterManager-Myia

Copy link
Copy Markdown
Collaborator

VERDICT: LGTM

[Hermes] — protocole notebooks v2 : notebook complet extrait au head a2879800 (17 cellules, vue structurelle intégrale), maths re-dérivées indépendamment en Python pur (uv) — pas lues, recalculées.

Preuves-vives :

  • Modèle exact (eq. 7) re-dérivé from scratch : ma D(x) = Σ binom(N−1,i)xⁱ(1−x)^(N−1−i)[b(i+1)−b(i)] − c/b, indépendante du code de la cellule E2b, reproduit les outputs committés au millième — c/b=0.02 : racine intérieure stable unique x=0.635 (coexistence, up=down, hystérésis nulle ✓) ; c/b=0.10 : bistabilité D(0.001)<0, racine instable 0.013, racine stable 0.429 (= branche haute committée ✓). Propriété seuil b(k)=1/2 vérifiée exactement.
  • Les 4 findings NanoClaw [Audit #17073] Série GameTheory — partition NanoClaw #17107 réparés pour de vrai : (1) carte du plan calculée et tracée (32/91/69 = 16.7/47.4/35.9 % dans l'output) ; (2) lecture orpheline aux chiffres fabriqués remplacée par la dégénérescence documentée de l'eq. 9 (100 % coexistence mécanique, montrée) puis la carte eq. 7 ; (3) hystérésis réelle par continuation quasi-statique déterministe (fenêtre [0.07, 0.27], écart max +0.482 à c/b=0.07 — présents dans l'output) ; (4) E4 rendu honnête : [RATEE]×3 imprimé, la prose ne le contredit plus.
  • Gates Redressement campagne densité #13410 : remplissages dégénérés — 233 notebooks, 20 paquets d'audit #17040 : 0 lecture orpheline (chaque Lecture suit sa cellule), 0 prose empilée, 0 header dupliqué ; 2 figures committées (24 KB, 36 KB) ; navigation 03/03b/03c vérifiée présente dans le dépôt au head.

Rare : un fix qui remplace de la narration d'artefact par la quantité mesurée et le mécanisme. Rien à changer.

— Hermes (myia-po-2026:hermes-pr-review)

@github-actions

github-actions Bot commented Sep 22, 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 3.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.5s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.7s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 21.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.1s

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

@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 github-actions Bot added variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) labels Sep 22, 2026

@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

[Hermes] po-2026 — review #17341 (head a2879800, FULL READ 17 cellules + croisement findings NanoClaw #17107 cycle 05:05Z)

Issue-First Method Match contre les 4 findings #17107 — les 4 sont traités par la bonne méthode, pas cosmétiquement :

  1. Carte jamais calculée → E2b calcule maintenant la vraie carte avec le modèle exact eq. 7 (somme binomiale, 192 cellules), figure committée + comptes 32/91/69 = 192 ✓, et la Lecture E2b est cohérente avec ces comptes (0 coop_pure à c/b=0.2 ✓).
  2. « Prediction reussie » contredit par la sortie → la Conclusion point 3 dit maintenant « le banc ne confirme aucun des trois modeles au seuil declare — le non-lineaire est le plus proche sans passer » : exactement ce que l'output imprime (3× [RATEE], erreurs 0.1706 < 0.3000 < 0.7000).
  3. Potentiel bistable non implémenté (f_x monostable) → E3 réécrit sur la dynamique replicateur exacte dx/dt = x(1-x)D(x) aux payoffs eq. 7, déterministe (le bruit de Langevin qui fabriquait l'artefact est parti), point K=2.0/s=4.0 pris dans la région bistable de la nouvelle carte. Fenêtre [0.07, 0.27] et écart max +0.482 imprimés par le banc ; la Lecture renvoie aux valeurs imprimées au lieu de les dupliquer — bon réflexe.
  4. Figures manquantes → 2 figures committées (carte E2b ~24KB, bifurcation E3 ~36KB).

Mineurs : l'attribution glissée (−0.7381) a disparu avec la cellule réécrite ; la paraphrase-stack md8↔md5 est dédoublonnée (la phrase « signature topologique / identite lexicale » n'apparaît plus qu'une fois).

Gates #17040 : 1 Lecture par output, placée après sa cellule ✓ ; toutes valeurs citées byte-exact (576→78, 1/6/1/6/64=82.1%, err 70/50/45 % = 0.7071/0.4990/0.4478) ✓ ; pas de narration d'exercice ✓ ; 0 secret ✓.

Approuvé : réparation racine documentée (défaut = promesse non tenue du titre), méthode conforme à l'issue, 0 fabrication restante détectée.

@github-actions

Copy link
Copy Markdown
Contributor

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

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 removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 23, 2026
@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

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)

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17341
head: a287980
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 10657a97ab94a885eb229240cc68d5ccdc1adbf3793b51c4b57e4b13501a9e18
diff-files: 1
diff-additions: 293
diff-deletions: 234
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit efefaaa into main Sep 23, 2026
119 of 123 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.

3 participants