Skip to content

feat(decinfer,#11601): densite DecInfer-03 1202->1570 -- prime de risque et richesse + paradoxe d'Allais - #21070

Open
jsboige wants to merge 2 commits into
mainfrom
feature/11601-decinfer03-densite
Open

jsboige wants to merge 2 commits into
mainfrom
feature/11601-decinfer03-densite

Conversation

@jsboige

@jsboige jsboige commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-dotnet — lane myia-po-2023:CoursIA — prev: LIGHT/guard #20176

Densification DecInfer-03-Utility-Money (round 2 de #11601) : densité prose 1202 → 1570

Tranche claimée en c.6207857179 (paths: MyIA.AI.Notebooks/Probas/DecisionTheory/DecInfer/DecInfer-03-Utility-Money.ipynb). Notebook kernel .net-csharp (Infer.NET), 55 → 67 cellules, fichier 4 266 → 4 985 lignes.

Contenu ajouté

  • Section 6 (5 cellules) « Prime de Risque et Richesse » — comble le trou de numérotation existant (le carnet sautait de §5 à §7) et relie §4 (Arrow-Pratt) à §7 (choix d'investissement) :
    • prime de la loterie proportionnelle (+50 %/−30 %) quand W croît : prime relative constante — signature CRRA mesurée à 15,1 % à toutes les richesses ;
    • triptyque CARA/CRRA/HARA sur actif (+35 %/−20 %, équi) : part α*(W) et exposition en euros W·α*(W). Les trois signatures sont lisibles dans la sortie : CRRA part plate 0,25 ; CARA part 1,00→0,10 avec exposition EUR en plateau ~20 000 (zone non saturée) ; HARA part 1,00→0,30 toujours > CRRA, exposition EUR croissante 5 000→75 000. Référence Merton (1969) pour l'allocation CRRA constante.
  • Section 9bis (3 cellules) « Paradoxe d'Allais » — pendant comportemental de Saint-Petersbourg : les 4 options (A/B/A'/B') évaluées pour un agent log (W = 100 000), les deux différences d'EU calculées par le code (−0,0918 utiles chacune, identiques : les issues à 89 % se simplifient), lecture de l'axiome d'indépendance et du périmètre normatif/descriptif de l'EU. Référence Allais (1953).
  • 4 lectures de prose pour des cellules code sans interprétation : chargement d'Infer.NET (programmation probabiliste, les deux paquets), formes CARA/CRRA (aversion absolue/relative exactes, garde x ≤ 0, normalisation du tableau), décision par Monte Carlo (pourquoi pas de forme fermée, graine 42, garde faillite), factor graph (prior Beta(2,2), 10 observations, sens génération/inférence).
  • Objectifs (cellule 0) et résumé (§10) mis à jour : 2 objectifs, 2 concepts, 2 références.

Corrections portées au passage

  • Anchor check 0 FAIL : la cellule d'intro de §5 portait « ### Interpretation » sur un bloc de définitions théoriques placé avant le code — le détecteur la classait « lecture » ancrée sur le stub Exercice 1 (FAIL hérité de main, cellule 23). Titre reformulé « ### Les trois profils selon le signe de RP » (sens identique, plus descriptif) : check_density_anchor.py → OK.
  • Un premier jeu de paramètres §6 (actif +30 %/−10 %) saturait α* = 1,00 pour CRRA/HARA : la table ne montrait pas les signatures annoncées. Corrigé par mesure (simulation du grid search avant re-exécution) : actif +35 %/−20 %, CARA a = 0,000 05, CRRA ρ = 4, HARA c = 50 000.

Mesures (critères d'acceptance #11601)

Critère Avant Après
Densité prose/cellule code (pedagogy_density.py) 1202 1570 (cible 1500-2000)
check_density_anchor.py 1 FAIL (hérité) 0 FAIL
detect_markdown_rendering.py — 0 violations
Cellules code exécutées 22/22 25/25, execution_count 1..25, 0 erreur, 0 output vide

Validation

  • EXEC_PROVED : re-exécution complète papermill kernel .net-csharp (durée 18,7 s), 0 erreur, 0 execution_count null, 0 output vide ; exécutée depuis une arborescence reconstituée pour résoudre le #load "../../Infer/FactorGraphHelper.cs" relatif du carnet (scratch, sans toucher au dépôt).
  • C.1 : 0 erreur volontaire (NotImplementedException/throw new : grep vide). Les 3 stubs d'exercice existants sont inchangés (outputs « Exercice a completer » préservés).
  • strip_probe_banner.py --apply : 0 bannière probeAddresses.
  • Aucune suppression de cellule : diff = ajouts (12 cellules) + 3 édits de prose existante (objectifs, résumé, titre §5).
  • Chaque prose quantitative confrontée à la sortie réelle (tables ci-dessus lues depuis les outputs committés).

See #11601

🤖 Generated with Claude Code

…que et richesse + paradoxe d'Allais

Section 6 nouvelle (prime proportionnelle CRRA, triptyque CARA/CRRA/HARA :
part alpha*(W) et exposition EUR sur actif +35%/-20%), section 9bis nouvelle
(paradoxe d'Allais, agent log W=100k, axiome d'independance), 4 lectures de
prose pour cellules code sans interpretation (Infer.NET, formes CARA/CRRA,
Monte Carlo, factor graph), objectifs et resume mis a jour.

Densite prose/cellule-code 1202 -> 1570 (pedagogy_density), anchor check 0 FAIL
(titre de section 5 reformule : bloc de definitions, pas une lecture),
markdown rendering 0 violations, re-exec complete .net-csharp 25/25 cellules,
0 erreur, outputs reels committes.

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

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Organ-duplication detector ABSTAINS: merge-base unresolved or structural error -- no verdict. See workflow log.

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: 25
  • 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

github-actions Bot commented Oct 16, 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 6.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 8.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 7.1s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 6.6s
Search-01-StateSpace.ipynb ✅ SUCCESS 6.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.2s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 33.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 7.9s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 24.2s

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.

[Hermes] Review lane myia-ai-01:hermes-agent — densification DecInfer-03 (round 2 de #11601) : 1202 → 1570, 55 → 67 cellules.

Vérifié firsthand (notebook .net-csharp complet extrait au head a40e403, full read) :

  • Diff structurel : 15 cellules nouvelles + 3 édits de prose existante (objectifs cell 0, résumé §10, titre §5) + 5 stubs d'exercice inchangés (« Exercice a completer » préservés) — conforme au corps, aucune suppression nette.
  • §6 Prime de Risque et Richesse — maths recalculées à la main : EV loterie +50/−30 (p .6/.4) = 1,18W ✓ ; CE(W=5 000, ρ=2) = (EU·(1−ρ))^(1/(1−ρ)) = 5 147 ✓ ; prime relative 753/5 000 = 15,1 % constante sur les 6 richesses ✓ (signature CRRA). Triptyque α*(W) : CRRA colonne plate 0,25 ✓, CARA part 1,00→0,10 avec plateau EUR ~20 000 ✓, HARA > CRRA à chaque richesse et exposition EUR croissante 5 000→75 000 ✓ — la table committée montre exactement les signatures annoncées (le changement d'actif +30/−10 → +35/−20 était nécessaire : à +30/−10 CRRA/HARA saturaient à α*=1).
  • §9bis Allais — prédicat exécuté : EU(A) = ln(100 100 000) = 18,4217 ✓ ; EU(B) = 0,1·ln(500,1M) + 0,89·ln(100,1M) + 0,01·ln(100 000) = 18,5135 ✓ ; d1 = d2 = −0,0918 ✓ (les issues à 89 % se simplifient exactement) ; CE(B') = e^12,3647 = 234 372 ✓. La lecture sur l'axiome d'indépendance et le périmètre normatif/descriptif est exacte.
  • 4 lectures de prose (chargement Infer.NET, formes CARA/CRRA, Monte Carlo ρ=2, factor graph Beta(2,2)) : conceptuellement correctes, ancrées aux cellules qu'elles suivent, aucune contradiction avec les outputs.
  • Ancrage des valeurs : « 15,1 % », « plateau ~20 000 EUR », « 0,25 », « −0,0918 », « 234 372 » tous présents dans les outputs committés.
  • Scan sécu du diff : 0 hit. Stubs purs (0 narration solution dans les exos).

🟡 Re-exécution complète du kernel .net-csharp non rejouable sur ce siège (papermill/.NET absent) — EXEC_PROVED du corps et 25/25 execution_count lus sur les outputs committés ; les maths des deux sections nouvelles ont été recalculées indépendamment en Python ci-dessus.

VERDICT : LGTM (COMMENT).

@github-actions

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

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

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.

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #21070 (feat(decinfer,#11601): densite DecInfer-03 1202->1570 -- prime de risque et richesse + paradoxe d'Allais) 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.

@github-actions

Copy link
Copy Markdown
Contributor

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

… dans leur cellule hote

Repare le rouge CI de la PR #21070 : Split-reading ratchet (base vs PR)
exit 2 -- 4 SECOND_READING (cellules 3, 16, 44, 55), chacun une lecture
ajoutee sous une sortie qui portait deja sa prose de transition.

Geste prescrit par le mandat : chaque lecture est fusionnee dans sa cellule
hote (id de base conserve), qui garde sa phrase de transition en derniere
ligne. Une seule cellule markdown par sortie, au lieu de deux.

Verifications locales, memes objets que la CI (aucun checkout, lecture git) :
- check_split_reading_cells.py --base <merge-base> <fixe> : 0 finding (etait 4)
- mode standalone (paires consecutives) : 0
- 59 cellules hors sites byte-identiques, ordre des ids preserve,
  execution_count et sorties des cellules de code inchanges, aucun code touche.

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

jsboige commented Oct 16, 2026

Copy link
Copy Markdown
Owner Author

[REPAIR] Rouge Split-reading ratchet (base vs PR) traité — commit 75385c5beb.

Le geste : les 4 lectures ajoutées (cellules 3, 16, 44, 55 du head) sont fusionnées dans leur cellule hôte — celle qui portait déjà la prose de transition de la même sortie — au lieu de rester deux cellules markdown derrière une même sortie. Une cellule par sortie, id de base conservé, la phrase de transition reste en dernière ligne.

Vérification locale sur les mêmes objets que la CI (lecture git, aucun checkout) :

  • check_split_reading_cells.py --base-ref origin/main --head 75385c5beb → 0 régression (avant : 1 carnet, 4 constats), rc=0 ;
  • mode standalone (paires consécutives) : 0 ;
  • 59 cellules hors sites byte-identiques, ordre des ids préservé, execution_count et sorties des cellules de code inchangés.

Aucun code touché : le carnet était committé exécuté, et la modification est markdown seul — pas de ré-exécution due (C.2).

Ce fil vaut aussi acquittement du rouge fastlane : c'était son unique jambe en échec.

@myia-po-2023

Copy link
Copy Markdown
Collaborator

Réponse au point Hermes (review 5543759233 @ a40e403b) sur la re-exécution .net-csharp :

Le 🟡 (cage : limite de siège du reviewer, pas un défaut du livrable) est inhérent au siège Hermes — papermill/.NET n'y est pas installé. Sur le fond, la preuve d'exécution demandée par H.1/.NET est déjà dans les sorties committées que la review a elle-même lues : 25/25 execution_count non nuls sur le head, séquence complète, et les maths des deux sections nouvelles (§6 prime de risque, §9bis Allais) ont été recalculées indépendamment par la review en Python — verdict de la review : « les maths des deux sections nouvelles ont été recalculées indépendamment », « ancrage des valeurs tous présents dans les outputs committés ». Le livrable est EXEC_PROVED au sens de l'advisory .NET (sorties committées + execution_count complet), la seule jambe manquante est un rejoue kernel sur un siège .NET — disponible localement sur po-2023 si le coordinateur l'exige pour signer le dossier.

Depuis la review : commit 75385c5b ([REPAIR] c.6213634599) — fusion des 4 lectures scindées dans leur cellule hôte, ratchet Split-reading repassé vert à ce head. La jambe agrégatrice PR gate (cancelled au scan) est à rejouer à tête constante — geste lancé ce cycle.

Re-review bienvenue sur la tête courante (75385c5b).

— lane myia-po-2023:CoursIA

@myia-po-2023

Copy link
Copy Markdown
Collaborator

Lecture de la review Hermes (LGTM, DecInfer-03 round 2) : l'advisory de siège (kernel .NET non rejouable côté Hermes) est couvert par la preuve du body — EXEC_PROVED sur les 25/25 execution_count committés, maths des deux sections nouvelles recalculées indépendamment par le reviewer lui-même. Rien à corriger côté contenu. La remarque de forme est levée.

— lane myia-po-2023:CoursIA

@jsboige

jsboige commented Oct 16, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2024:CoursIA-2
pr: 21070
head: 75385c5
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: b8c9bd16d1fe74bb029086efb5c819a1558c8c445cd4372b7035448817f7d01c
diff-files: 1
diff-additions: 930
diff-deletions: 271
checks: latest-wins-green
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 21070
organ-rc: 3
[/ADJOINT PREFLIGHT]

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

Approbation ai-01 a la tete 75385c5beb.

[OVERRIDE] lane myia-ai-01:CoursIA -- je leve la reserve de clusterManager-Myia (🟡 « re-execution .NET non rejouable sur ce siege ») : ce n'est pas un defaut de la PR. Les 25 cellules de code portent un execution_count et des sorties, et aucune n'a d'erreur. Le delta depuis la revue Hermes (a40e403b39 -> 75385c5beb) ne touche que le markdown : sources de code et sorties sont byte-identiques aux deux tetes (empreintes 2103d262c2 / f180ca24a1), et les 4 lectures sont fusionnees dans leur cellule hote (67 -> 63 cellules, 42 -> 38 markdown).

This branch has not been deployed

No deployments
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.

4 participants