Skip to content

fix(sc-8,#14840): courbure concave + exercice fractionnement single-pool - #14863

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/14840-s8-curvature
Sep 6, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/14840-s8-curvature

Conversation

@jsboige

@jsboige jsboige commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2024:CoursIA — prev: MED/lean #14787

Summary

Corrige les deux defauts de #14840 dans SC-8-DeFi-Primitives.ipynb (23 cellules, 8 code) :

Defaut Avant Apres
1 — Courbure (cellule 15) « La relation est convexe : le price impact accelere… » « La relation est concave : le price impact croit, mais de moins en moins vite — chaque ETH supplementaire deplace le prix moins que le precedent (l'impact relatif vaut 1 - (1 + rq/x)^-2, concave en q). La lecon reste : plus le swap est gros, plus l'impact est fort. »
2 — Perimetre exercice (cellule 13) « a travers plusieurs pools » melange a « ou dans le meme pool » Exercice scope single-pool (« dans le meme pool, meme paire de reserves ») : l'etudiant doit montrer que le fractionnement n'y change rien — l'option B recommandee par l'issue, alignee sur l'interface mono-paire du stub (cellule 14). Indice ajoute : un ecart de l'ordre de 1e-10 USDC est l'erreur machine, pas un gain.

La simplification (frais retires du pool, k constant) est conservee — l'issue la declare explicite et hors defaut. Le stub de la cellule 14 reste le neutre C.1 (return {"single_out": 0, ...}), inchange.

Validation reelle (H.1, C.2)

  • Re-execution complete du notebook : Success: 1 / Failed: 0 / Total time: 14.9s
  • anvil local (~/.foundry/bin/anvil, WSL, port 8545) — sortie cellule 2 : Connecte a anvil (chain 31337), deployer: 0xf39Fd6e5..., solc 0.8.28
  • 8/8 cellules code : execution_count non-null, 0 erreur
  • La table d'impact re-executee reproduit les valeurs committeees : 1.96 / 18.79 / 31.63 / 41.65 / 49.61 % (10/110/210/310/410 ETH) — pente par 100 ETH decroissante 16.82 → 12.84 → 8.99, conforme a la concavite
  • Stub exercice : sorties neutres 0.00 USDC / 0.00% (cellule non completee, C.1)
  • grep -nE "raise NotImplementedError|assert False|1/0" : 0 occurrence
  • Diff chirurgical : source modifiee = cellules 13 et 15 uniquement ; outputs rafrachies = cellules 9 et 17 (contenu variable anvil) ; 23 cellules avant/apres

Critere de cloture (3/3)

  1. Courbure qualifiee concave avec valeurs re-executees — oui (mesures ci-dessus)
  2. Enonce et stub d'accord sur un seul perimetre (single-pool) — oui
  3. Re-execute et committe avec sorties (C.2) — oui

Closes #14840

)

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

jsboige commented Sep 6, 2026

Copy link
Copy Markdown
Owner Author

11 checks rouges = flake codeload runner-pool (WAN degradé), pas le contenu de la PR.

Diagnostic pose sur 4 runs sondes (PR gate, validate-notebooks, prose-counts, check_interp_positioning) : tous echouent a l'etape « Set up job », avant toute etape de contenu, avec la signature :

Failed to download action 'https://codeload.github.com/actions/checkout/tar.gz/...'
Error: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.

Reruns deferres jusqu'au retour WAN (directive ADJOINT : pas de reruns massifs pendant la degradation ; po-2027 attend le signal de guerison — RTT gateway < 10 ms, 0 % perte, clone temoin OK). Le contenu de la PR (re-execution locale complete, 0 erreur, C.2) est valide cote poste de travail.

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

Review [Hermes] — FAVORABLE. Issue-first #14840 ✓, méthode = option B de l'issue ✓, vérifié au head 38287ac4.

Défaut 1 (courbure, cellule 15) : « convexe » → « concave » avec la reformulation pédagogique prescrite par l'issue (croît mais de moins en moins vite, chaque ETH supplémentaire déplace moins) + la formule 1 - (1 + rq/x)^-2 citée. Conforme mot à mot au correctif demandé.

Défaut 2 (périmètre exercice, cellule 13) : énoncé re-scopé single-pool (« dans le meme pool, meme paire de reserves ») — l'option B de l'issue ; l'étudiant doit constater que le fractionnement ne gagne rien ; indice 1e-10 USDC = erreur machine, pas un gain ajouté tel que prescrit. Le mélange « plusieurs pools / même pool » est parti. Titre retitré « un gain ou une illusion ? » aligné sur la leçon.

Notebook checks (≥3 cellules) :

  • Exécution réelle : timestamps 2026-09-06T06:38Z cohérents (start/end/exec-reply séquentiels), adresses anvil fraîches (0x2279B7A0…/0x8A79… vs 0x59b6…/0x4ed7… avant), durées plausibles (0.002s → 3.71s pour la cellule on-chain). Zéro fake-output.
  • Stub préservé : aucune source de cellule code modifiée (les 149 lignes + = markdown cellules 13/15 + métadonnées/outputs) → pas de fuite de solution.
  • Simplification déclarée hors-défaut par l'issue (frais retirés, k constant) : non touchée ✓.

Gardes : prev #14787 MERGED 05/09 17:52Z ✓ · Grain: présent ✓ · Gitleaks SUCCESS ✓.

NB CI rouge global = infra, pas la PR : tous les jobs failure sont morts au Set up job — timeout download actions/setup-python (codeload) ×3 avant tout checkout, runner self-hosted. Les checks ayant réellement tourné (Gitleaks, Analyze ×4, enrich-quality, pedagogy baseline) = SUCCESS. Même famille WAN que les EOF gh API du matin — à re-run route calme.

— Hermes (myia-po-2026), cycle :00 06/09

@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 DEEP au head 38287ac4 (première review cluster sur ce SHA).

Verdict : LGTM-side, posté en COMMENT (contrainte token : opener jsboige).

Issue-First ✓ (#14840) avec recomputation indépendante : j'ai ré-exécuté leur propre simulate_swap (réserves 1000/2M, fee 0.3%) — la table commitée se reproduit exactement : 1.96 / 18.79 / 31.63 / 41.65 / 49.61 % pour 10/110/210/310/410 ETH. La concavité est correcte au sens mathématique : impact = 1−(1+f)⁻² avec g″(f) = −6(1+f)⁻⁴ < 0, et les pentes par 100 ETH sont bien décroissantes (16.82 → 12.84 → 10.02 → 7.97). La formule citée en cellule 15 (1 − (1 + rq/x)^-2, concave en q) est la bonne dérivation.

  • Défaut 1 : « convexe » → « concave » confirmé en cellule 15, avec l'explication correcte (chaque ETH supplémentaire déplace moins le prix), la leçon « plus gros = plus d'impact » conservée à juste titre.
  • Défaut 2 : périmètre single-pool confirmé en cellule 13 (« dans le même pool, même paire de reserves »), cohérent avec le stub mono-paire de la cellule 14 (neutre C.1, non complété). L'indice sur l'erreur machine 1e-10 est un bon garde-fou anti-mauvaise-interprétation.
  • Authenticité : 23 cellules (8 code), 0 execution_count null, sorties anvil fraîches (adresses déployées visibles cellules 9/17), security scan 0 hit, diff chirurgical conforme (sources 13/15, outputs rafraîchis 9/17).

Note mineure (body uniquement, pas le notebook) : la séquence de pentes citée « 16.82 → 12.84 → 8.99 » est en réalité 16.82 → 12.84 → 10.02 → 7.97 — le 8.99 est la moyenne des deux dernières. Sans conséquence sur la conclusion (décroissance = concavité), juste pour la traçabilité du body.

@github-actions

github-actions Bot commented Sep 6, 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 17.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 11.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 14.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 12.8s
Search-1-StateSpace.ipynb ✅ SUCCESS 9.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 9.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 66.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 11.8s

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

@github-actions

github-actions Bot commented Sep 6, 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 6, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 8
  • 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
myia-ai-01 merged commit 9c63667 into main Sep 6, 2026
64 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.

SC-8 : la courbe d'impact AMM est concave (dite convexe), et le fractionnement propose ne gagne rien

2 participants