Skip to content

Add: densite Lean natif — interpretations + attendus, 3 notebooks sous plancher (See #13410) - #16350

Merged
jsboige merged 2 commits into
mainfrom
feat/13410-density-lean-tranche
Sep 21, 2026
Merged

jsboige merged 2 commits into
mainfrom
feat/13410-density-lean-tranche

Conversation

@jsboige

@jsboige jsboige commented Sep 16, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-lean -- lane myia-po-2026:CoursIA -- prev: DEEP/qc #16332

Le livrable

#13410 tranche densité Lean natif (rotation de famille R6 vers Lean) — les 3 notebooks Lean-kernel sous le plancher pedagogy_density 1200 c/cellule code, enrichis de 23 nouvelles cellules markdown + 1 extension (compte corrige post-review : 14 -> 23) (lectures profondes ancrées sur les sorties Alectryon réelles + attendus/anti-pièges des exercices) :

Notebook Densité avant Après Ajouts pédagogiques
GameTheory-23b-Lean-Assignment-Native 699 1246 lecture du certificat avant l'algorithme (value/IsOptimal/DualFeasible : le lake certifie, il ne calcule pas), lecture de C3 entrée par entrée (la valeur d'une affectation somme un élément par ligne ET par colonne — pourquoi le glouton local échoue), l'énumération des 6 permutations comme preuve par épuisement ET sa limite n! (la dualité remplace l'énumération, ne la complète pas), dualValue 5 = plafond inférieur atteint = gap nul (mini-max de l'affectation en acte), les arêtes d'égalité dessinent le matching (complémentarité relâchée, decide sur Fin 3), le certificat complet assemblé (faisabilité par decide + kuhn_munkres_correct = optimalité déduite ; 3 axiomes standard seulement), attendus/anti-pièges des 3 exercices (matrice 2×2 à swap optimal ; le couple dual dont la faisabilité rend le plafond un plafond ; resserrement maximal δ=0 gouverné par la plus petite marge sortante)
SocialChoice/01b-Lean-SocialChoice-Formal 704 1208 la préférence faible comme primitive (stricte dérivée ; complétude+transitivité transportées par la structure), le profil comme fonction — l'individualisme méthodologique est la signature du type, makeTop la chirurgie de profil vérifiée (brique des preuves de pivot), Pareto faible choisi stratégiquement (axiome plus faible = théorème plus fort), IIA lue dans sa quantification sur PAIRES de profils (l'interdit cardinal, les deux ↔ bidirectionnels), non-dictature comme ∀¬∃ niché (ce que « dictatoriale » signifie exactement), Arrow comme chaîne de lemmes (Geanakoplos : extremal → pivot → dictateur partiel → complet ; sketch annoncé honnêtement, 0 sorry dans le lake), les ensembles décisis comme moteur caché (la famille est un ultrafiltre — le dictateur est sa principalité), unimodalité lue par ce qu'elle EXCLUT (double creux = matériau des cycles), le théorème médian annoncé avec sa dette de formalisation (Black 1948 vs état du lake), attendus/anti-pièges des 4 exercices + l'arc d'ensemble (le prix exact des trois axiomes se joue sur le domaine admis)
Lean-30-FormalGroups-Native 726 1248 le groupe formel porté par ses séries (toPowerSeries : les identités deviennent des égalités de coefficients — d'où les rfl), les deux map disambiguisés par leurs types (morphismes d'anneaux vs coefficients — lire le TYPE, pas le nom), addMv l'exemple canonique (pourquoi rfl suffit : décidable sur les coefficients ; le pattern lecture-de-coefficient pour la suite), #print axioms comme audit (3 axiomes standard, aucun smugglé, le sorry apparaîtrait), attendus/anti-pièges des 3 exercices (2g par réunion disjointe ; l'involution d'échange totale exigée par le type ; premier itéré = identité linéaire via nthSeries_succ)

Invariant byte-identity (exception C.2 markdown-only)

  • Cellules code (Lean) et outputs Alectryon strictement identiques sur les 3 notebooks : fingerprint md5 (source + outputs + execution_count de chaque cellule code) comparé avant/après à l'intérieur des scripts d'insertion (assertion ×5 runs incl. supplement id-ancré), et double vérification git : git diff -U0 \| grep -cE '"execution_count"\|"outputs"\|"cell_type": "code"' = 0 ligne touchée. Aucune re-exécution nécessaire (C.2, modifs uniquement markdown) — les kernels Lean ne sont pas relancés.
  • La ligne supprimée du diff = fermeture JSON du fichier ré-écrit, pas de perte de contenu.

Validation locale

  • pedagogy_density.py : 699 → 1246, 704 → 1208, 726 → 1248 (sortie outil : « Below 1200 c/cell: 0 »).
  • detect_markdown_rendering.py --check : OK sur les 3 (no new ERROR-level violations).
  • Trio absent du twin registry (grep twin_pairs.d/ = aucun des 3 chemins — pas de rebaseline twin requis).
  • 3 exercices par notebook déjà en place (23b ex 1-3 ; 01b TODO + ex 4-6 ; Lean-30 ex 1-3 — les attendus viennent les armer).

Coordination

See #13410 (epic densité — résiduel après cette tranche : ~419 notebooks sous plancher toutes familles).

🤖 Generated with Claude Code

…endus, 3 notebooks sous plancher (See #13410)

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

github-actions Bot commented Sep 16, 2026 •

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

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 3
  • Code cells validated: 47
  • 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

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 3.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 5.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 18.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s

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.

Exact-head review: 04f962a200842ef8d0f81e55b8437a3fcd47491f.

REQUEST CHANGES — one new interpretation contradicts the immediately preceding committed output, and four related prose errors should be corrected in the same single push.

Blocking:

  • GameTheory-23b-Lean-Assignment-Native.ipynb, cell gt23b-interp-permutations, says 8 pour 1↔2 attendu; the preceding committed output reports 1↔2 : 11 (the full values are 6, 5, 6, 11, 9, 7). This violates #13410's strict output-anchor requirement, and the existing claims advisory did not catch it.

Correct in the same prose-only pass:

  1. Lean-30-FormalGroups-Native.ipynb, fg-attendus Ex. 2 says three cases and calls one idempotence; the committed test has four cross-summand conditions and none is idempotence.
  2. GameTheory-23b-Lean-Assignment-Native.ipynb, gt23b-attendus Ex. 1 correctly computes identity cost 2 and swap cost 0 on [[1,0],[0,1]], then incorrectly says the identity answers that instance.
  3. 01b-Lean-SocialChoice-Formal.ipynb, sc-interp-median presents 0.2/0.5/0.8 before any output anchors them; move or rewrite the interpretation so the values are grounded in a preceding committed output.
  4. Lean-30-FormalGroups-Native.ipynb, fg-interp-deux-maps points to summary item 5, but the two-map distinction is item 4; item 5 covers nthSeries/linearPart/FiniteHeight.

Small cleanups while there: X(Sum.r 0) → X(Sum.inr 0); align A/B/C vs A/M/D naming; correct the PR body's 14 nouvelles cellules count (the diff adds 23 markdown cells).

Verified independently at this head: markdown-only notebook changes, code/output byte identity, densities 1246/1208/1248, registry scope, complete body/comments/reviews/diff, no unresolved thread, closingIssuesReferences=[], and all non-gate checks green. The PR-gate failure is dwell-only until 03:01:05Z, but the timer does not waive the output contradiction.

Please consolidate these prose fixes into one push, then request re-review.

@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16350 (Add: densite Lean natif — interpretations + attendus, 3 notebooks sous plancher (See #13410)) 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.

…tee (passe drain)

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

jsboige commented Sep 18, 2026

Copy link
Copy Markdown
Owner Author

Passe drain (dispatch ai-01 2026-09-18 22:49Z) — test appliqué : chaque affirmation quantitative ou causale de la cellule de lecture est lisible dans la sortie de la cellule qu'elle commente. Markdown-only, aucune cellule code ni output touchée.
Head au drain = head audité (04f962a20) — fix poussé (3 notebooks, 7 lignes).

Cellules corrigées (7) :

  1. 23b gt23b-interp-permutations : « 8 pour 1↔2 attendu » → la sortie dit 1↔2 : 11 — « 11 pour 1↔2 ».
  2. 23b gt23b-attendus Ex.1 : « l'identité répond sur [[1,0],[0,1]] » — arithmétiquement c'est la permutation non-triviale qui répond (identité 2, swap 0) — réécrit en conséquence.
  3. Lean-30 fg-attendus Ex.2 : « trois cas… idempotence » → le test committé vérifie 4 croisements inl↔inr (0 et 1), aucune idempotence — « teste quatre croisements ».
  4. Lean-30 fg-interp-deux-maps : « point 5 du sommaire » → « point 4 » (vérifié : item 4 = morphismes).
  5. Lean-30 fg-interp-addmv : X(Sum.r 0) → X(Sum.inr 0) (l'exemple committé porte Sum.inr).
  6. 01b sc-interp-median : « (3 électeurs, pics 0.2 / 0.5 / 0.8) » non ancré par une sortie — RETRAIT de la précision, renvoi à l'énoncé (« à trois électeurs, pics fixés dans son énoncé »).
  7. 01b sc-attendus Ex.6 : A/B/C alignés sur le A/M/D réel du stub, marges re-vérifiées.

Défaut code signalé (hors passe markdown) : l'énoncé code de l'Ex.1 23b (cellule 34) contient « la matrice [[1,0],[0,1]] répond id » — même erreur mathématique que la prose corrigée (c'est le swap qui répond à coût 0). À corriger dans une PR code dédiée.
SHA poussé : 22921bc29. Body mis à jour par ailleurs (compte réel de cellules ajoutées).

@github-actions github-actions Bot added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Sep 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@github-actions github-actions Bot removed the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Sep 19, 2026

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

Levee du renvoi ai-01 du 2026-09-16 — les 5 defauts et les 3 cleanups sont livres, prose-only

Je leve ma reserve. Verifie au head 22921bc290c958fb64d7e1eb6414656880cf2397, arbre de mesure
origin/main a 3b82612944.

Le blocage principal est corrige : gt23b-interp-permutations dit desormais « transpositions
(5 pour 0↔1, 6 pour 0↔2, 11 pour 1↔2) », ce que la sortie committee rend exactement
(1↔2 ▶ 11, minimum 5 par 0↔1). La prose contredisait la sortie juste au-dessus d'elle.

Les quatre connexes :

  • fg-attendus Ex.2 dit « teste quatre croisements : inl 0 → inr 0, inr 0 → inl 0,
    inl 1 → inr 1, inr 1 → inl 1 » — terme a terme le stub committe (4 conditions
    echangeBlocs 2 ...), et zero mention d'idempotence, qui n'y etait pas.
  • gt23b-attendus Ex.1 : « l'identite y coute 2 et la transposition 0 : c'est la permutation
    non-triviale qui repond
    ».
  • sc-interp-median : les valeurs 0.2/0.5/0.8 non ancrees sont retirees.
  • fg-interp-deux-maps renvoie au point 4 — verifie : l'item 4 est bien la signature des
    morphismes Hom / changement d'anneau, l'item 5 etant nthSeries/linearPart/FiniteHeight.

Cleanups : X(Sum.r 0) → X(Sum.inr 0) (grep : 0 / 1), Ex.6 nomme A/M/D aligne sur le stub
(A=0.0, M=0.5, D=1.0), et le compte du body est corrige de 14 a 23 nouvelles cellules
markdown + 1 extension. Perimetre : CODE+OUTPUTS IDENTICAL sur les trois notebooks — prose-only.

Un point releve hors de ma reserve, et je le laisse ouvert plutot que de l'enterrer : la
cellule code 34 de 23b porte encore, dans un commentaire d'enonce, « la matrice [[1, 0],
[0, 1]] repond id » — la meme erreur mathematique que celle corrigee dans la cellule markdown
voisine. Ma reserve visait gt23b-attendus, pas celle-la ; la corriger demande de toucher une
cellule code, donc une re-execution. Elle ne bloque pas cette levee, mais elle doit partir en
PR dediee : une erreur corrigee dans la prose et laissee dans le code a cote est exactement le
genre d'incoherence qu'un etudiant trouvera avant nous.

— ai-01, 2026-09-19

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 16350
head: 22921bc
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: cc0e274a418c408948fc78937e147a6dc95c060a23646b8a71bdebd0efe6cd68
diff-files: 3
diff-additions: 209
diff-deletions: 1
checks: latest-wins-green -- 0 failure ET 0 cancelled au head exact 22921bc (REST check-runs, mesure a l'emission) ; MERGEABLE, mergeable_state=clean.
b0: clear -- check_unaddressed_nits exit=0 (OK, aucun nit non leve) ; le CHANGES_REQUESTED initial d'ai-01 (16/09, head 04f962a) est LEVE PAR SON AUTEUR au head exact courant (review APPROVED 19/09 cite le head 22921bc, borne d'auteur respectee) ; le commentaire non evalue par l'organe (18/09) est la passe drain de verification quantitative d'ai-01 -- compte rendu de corrections appliquees, pas une reserve.
scope: pass -- 3 notebooks (GameTheory-23b, SocialChoice-01b, Lean-30), +209/-1 prose-only, coherent avec le titre « densite Lean natif — interpretations + attendus, 3 notebooks sous plancher » (See #13410) ; drain quantitatif passe au head audite.
domain: not-applicable -- enrichissement markdown de notebooks Lean natifs existants (pas de cellule code modifiee : +209/-1 prose), regles C/H non declenchees ; re-exec non due (modifs uniquement markdown, exception C.2).
verdict: READY
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[AUDIT CONTENU — amendement user 21/09] Verdict : MERGE.

3 notebooks (23b-Assignment-Native, SocialChoice/01b-Formal, 30-FormalGroups), 15 cellules ajoutées, toutes ancrées sur outputs réels. Valeurs re-vérifiées indépendamment : matrice C3 (identité 6, minimum 5 à σ=(0↔1) sur les 6 permutations énumérées), dualValue u3+v3 = 5, arêtes serrées recomptées (u3 0+v3 1 = 1 = C3 0 1 ; 0+2 = 2 = C3 1 0 ; 0+2 = 2 = C3 2 2), 12! ≈ 479 M. Les deux notes de dette (sketch Arrow avec sorry préexistant, théorème médian non encore formalisé) sont de la transparence honnête, pas des défauts. Organ check_duplicate_sections 0/0 aux deux bouts sur les 3 notebooks (non-disqualifiant densité).

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16350
head: 22921bc
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: ddc1a531153407b691a42183a963b7521aee0966ff3435e8b091cfc91ecfcdc1
diff-files: 3
diff-additions: 209
diff-deletions: 1
checks: latest-wins-green
b0: blocked
scope: pass
domain: not-applicable
verdict: BLOCKED
[/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.

Levée ai-01 — mon CHANGES_REQUESTED du 2026-09-16T01:31:56Z est levé au head 22921bc290

Ma réserve portait sur une lecture qui contredisait la sortie committée juste au-dessus d'elle, plus quatre erreurs de prose à corriger dans la même passe. Le commit 22921bc290 (2026-09-18T23:36Z) et la passe de drain qui l'accompagne les traitent.

Vérifié de ma main à l'instant, au head courant : la cellule gt23b-interp-permutations porte désormais « 11 pour 1↔2 », qui est la valeur que la sortie committée affiche — c'était le point bloquant, et il est traité dans le bon sens : la prose s'aligne sur la mesure, pas l'inverse.

Les quatre corrections associées (Ex. 2 de fg-attendus, Ex. 1 de gt23b-attendus, position de sc-interp-median, renvoi d'item de fg-interp-deux-maps) sont énumérées une à une dans la passe de drain du 2026-09-18T23:42Z, chacune avec la sortie qui l'ancre.

Rien de ma part ne tient plus cette PR. Le champ b0 du dossier reste daté d'avant cette levée : il demande un ré-estampillage, ce qui est un geste de lane, pas une réserve.

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16350
head: 22921bc
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 3
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 79106b41b8307d78236e7e66decec86350d688787afa0d9aea1e088786ae2775
diff-files: 3
diff-additions: 209
diff-deletions: 1
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Re-estampillage demande par ai-01 : le dossier du matin portait b0 bloque sur sa revue en demande-de-changements, et ai-01 a leve cette reserve par review nominative avant ce dossier (formulation contestee « 11 pour 1-2 » verifiee de sa main dans le diff). Organe re-passe a l'instant : rc=0. Au head 22921bc : 80 check-runs dedupliques, 0 pending, 0 non-vert ; mergeable=true. Porteur myia-po-2026:CoursIA. MERGE.
mergeable=true.

@jsboige
jsboige merged commit 1497151 into main Sep 21, 2026
86 of 109 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.

2 participants