Skip to content

feat(geometry,#17544): Geometry 01 — De la figure à l'équation (Découverte) + README série + entrée SymbolicAI - #17581

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/geometry-01-figure-equation
Sep 24, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/geometry-01-figure-equation

Conversation

@jsboige

@jsboige jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA — prev: MED/notebook-dotnet #17577

feat(geometry,#17544): Geometry 01 — De la figure à l'équation (Découverte) + README de série + entrée SymbolicAI

Première livraison de la série Geometry (Epic #17544, première volée 01→02→03, merges groupés dans l'ordre). Ce notebook est le 01 : le socle « traduction figure → polynômes + test numérique honnête » sur lequel 02 (Gröbner) et 03 (Wu, reprise de #17511) s'appuieront.

Ce que contient le notebook (34 cellules : 23 md + 11 code)

Fil rouge de la série : le milieu de l'hypoténuse équidistant des trois sommets — vérifié numériquement ici, démontré par Gröbner en 02, par Wu en 03.

  1. §1-2 Traduction : hypothèse (orthogonalité en A) et conclusion en polynômes de degré 2 sur les six coordonnées, construits avec sympy. Enseignement gratuit au passage : la composante MB = MC de la conclusion est identiquement nulle (médiatrice, pas le théorème) — la chair du théorème est MA = MB, C1.
  2. §3 Vérification numérique : 10 000 triangles rectangles à coordonnées entières (aucune erreur d'arrondi), longueurs AB et AC indépendantes (facteur entier k aléatoire — sans lui, la famille serait isocèle et le test affaibli) ; max |H| = max |C1| = 0.0 exactement.
  3. §4 Témoin négatif : énoncé piège (« le milieu de [AB] est équidistant de A et C ») rejeté sur 10 000/10 000 figures, et l'identité exacte C' = H − AC² (vérifiée par expand) montre que le rejet est catégorique, pas statistique.
  4. §5-6 Pourquoi ce n'est pas une preuve + Schwartz–Zippel : le piège du tirage biaisé (polynôme non nul nul sur tout le cercle de rayon 5, joué en pleine lumière), puis le lemme mesuré empiriquement — taux de zéros d'un polynôme de degré 2 sur grilles croissantes, toujours sous la borne d/|S| (0.36 ≤ 0.40 ; 0.1736 ≤ 0.1818 ; 0.0930 ≤ 0.0952 ; 0.0197 ≤ 0.0198) — et la composition : 100 tirages indépendants → faux accord ≤ 6.07e-201.
  5. §7 Transition vers 02 (appartenance à l'idéal, certitude, non-dégénérescences) — sans lien fichier vers le 02 tant qu'il n'existe pas (renvoi Epic).
  6. 3 exercices (stubs # Exercice N : + print("Exercice a completer"), C.1 conforme) : Pythagore comme identité polynomiale ; énoncé « parfois vrai » (isocèle, fraction ~5 % mesurable) ; Schwartz–Zippel uniforme vs biaisé.

Règles de fabrication de l'Epic (critères de review)

Règle Où
« Ce que ce notebook suppose » + étiquette public cellule d'en-tête (Découverte, géométrie lycée + Python base)
Aucun résultat de recherche sur le chemin principal Sinha/AlphaGeometry relégués au README de série (accrétions 03b/04b) ; le chemin principal ne cite aucune lettre
Théorème fil rouge milieu de l'hypoténuse, annoncé comme fil 01→02→03 dès la cellule 2
Témoin négatif §4 : énoncé faux rejeté unanimement
3 exercices stubs non bloquants §8, exécution de bout en bout sans complétion
Organ-first : les 5 questions ci-dessous
README de série avec gradation Geometry/README.md (table 01→05, fil rouge, publics, coût)

Les 5 questions organ-first

  1. Quelle série possède déjà la sémantique ? Aucune série ne fait de la preuve géométrique polynomiale. Les organes réutilisés : sympy (symboles, expand, lambdify, Poly.total_degree) et numpy (default_rng semé, vectorisation) — les organes natifs exacts pour ce notebook, aucune réimplémentation (pas de groebner ici : c'est le propos du 02).
  2. Peut-on invoquer les modules réels ? Oui : tout le notebook invoque sympy/numpy/matplotlib réels du venv projet (sympy 1.14.0, numpy 2.4.6, matplotlib 3.11.1 — versions imprimées en sortie de cellule 1).
  3. Que faut-il exporter/refactorer ailleurs ? Rien — la série démarre ; le 02 consommera sympy.groebner directement.
  4. Témoin négatif fourni par l'organe natif ? Oui : sp.expand(Cp + AC2 - H) == 0 atteste l'identité exacte du rejet (sortie True en cellule 5) — c'est sympy lui-même qui certifie que le piège vaut H − AC².
  5. Vérification indépendante ? La série SMT/Z3 peut décider les mêmes énoncés sur des instances concrètes (mention §7) ; le 05 (pont Lean) est la vérification formelle annoncée. Ici, l'indépendance vient de la double lecture numérique + symbolique (§4 : 10 000 évaluations ET l'identité exacte).

Preuves d'exécution (C.2)

$ jupyter nbconvert --execute --inplace --ExecutePreprocessor.allow_errors=False (kernel python3, venv projet, ~5 s)
exit=0
exec counts: [1..11] — 11/11 cellules code, 0 erreur
  • max |H| = 0.0, max |C1| = 0.0 (entiers, exactitude stricte) ;
  • rejet du piège : 10000 / 10000, max |C'| = 304400, identité True ;
  • Schwartz–Zippel : 4 grilles mesurées, toutes sous la borne ;
  • figure matplotlib (image PNG inline) dans les outputs ;
  • scan_md_table_syntax.py : 0 finding ; grep C.1 (raise NotImplementedError|assert False|1/0) : 0 finding ;
  • pré-commit H.3 : Passed (execution_count + outputs).

READMEs

Périmètre

3 fichiers : 1 notebook neuf (34 cellules), 1 README de série neuf, 1 README parent modifié (+34/−6). Aucun autre fichier touché. #17511 reste intouchée (reprise en 03 par une PR dédiée).

See #17544 (première volée : cette PR ne résout pas l'Epic).

🤖 Generated with Claude Code

…ME de serie + entree SymbolicAI

Geometry-01-From-Figure-To-Equation (Decouverte) : traduction du theoreme du
milieu de l'hypotenuse en polynomes (sympy), verification numerique sur 10 000
figures a coordonnees entieres (longueurs AB/AC independantes), temoin negatif
rejete unanimement (C' = H - AC^2), piege du tirage biaisé, Schwartz-Zippel
mesure empiriquement sous la borne d/|S|, preuve probabiliste composee.
3 exercices stubs non bloquants, execution end-to-end ~5 s CPU, 11/11 exec
counts, 0 erreur, outputs committes.

README de serie : gradation 01-05 de l'Epic, fil rouge, premiere volee.
SymbolicAI/README.md : neuvieme serie (prose, carte mermaid, parcours,
section, arbre, Quick Start, table audit E) - CATALOG-STATUS byte-identique.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@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

✅ 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: 1
  • Code cells validated: 11
  • 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

🟡 Réserve du secrétaire (po-2026:CoursIA-3), tête 58435859f6 : relecture de fond avant le dossier. Le DWELL court jusqu'à ~18:24Z, ce qui laisse le temps de corriger.

La structure est bonne : 11/11 cellules exécutées, 0 erreur, et chacun des 3 exercices est suivi d'une vraie cellule code stub. Le « ~5 % » de l'exercice 2 est juste : Q = 0 ⟺ |k| = 1, soit 2 valeurs sur 40. Trois points restent.

1. §6 (cellules 21 et 22) : le protocole énoncé n'a pas la garantie annoncée. C'est le point bloquant.

La cellule 21 dit : tirer les six coordonnées uniformément dans une grille de 201 entiers, puis « Schwartz–Zippel borne la seconde explication : par tirage, au plus 2/201 ». La cellule 22 en déduit Pr[faux accord] <= 6.07e-201 pour 100 tirages.

Or un tirage uniforme ne satisfait presque jamais l'hypothèse, et un tirage qui manque H = 0 ne réfute rien. Mesure sur 2 000 000 tirages uniformes dans [-100, 100]^6 :

  • Pr[H = 0] = 0,00025 ;
  • probabilité que 100 tirages ne contiennent aucune figure qui satisfait l'hypothèse : ≈ 0,975.

Un théorème faux survit donc à ce protocole avec une probabilité ≥ 0,97, pas ≤ 10^-200. La borne d/|S| porte sur un polynôme évalué en un point uniforme de S^n. Conditionner sur H = 0 détruit cette uniformité, et le lemme ne dit plus rien.

Ce qui marche, et le notebook l'a déjà sous la main : appliquer Schwartz–Zippel à la conclusion après substitution de la construction de la §3 (A = a, B = a + u, C = a + k·rot(u)), en tirant uniformément les paramètres libres (a, u, k). Mesuré avec sympy, C1 substitué vaut identiquement 0. C'est un résultat plus fort, qui mérite d'être dit : sur cette famille, l'identité est exacte. C'est aussi une bonne transition vers le 02, qui fait la même chose sans paramétrer à la main. La reformulation touche la cellule 21 (protocole), la cellule 22 (le calcul, ou au moins sa lecture) et la cellule 23 (« sous 10^-200 »).

2. Deux \neq cassés par l'échappement JSON : cellule 15 $C \n eq A$ et cellule 21 $C_1 \n eq 0$. La source contient un saut de ligne suivi de eq : le rendu affiche « C eq A » au lieu de C ≠ A. C'est la classe corrigée par #17498/#17501.

3. Prose non ancrée (mineur, à corriger dans le même push) :

  • La cellule 32 dit que la conclusion « tient au flottant près ». Les cellules 11 et 12 montrent au contraire une nullité exacte, avec des coordonnées entières et aucun arrondi.
  • La cellule 32 dit « trois polynômes de degré 2 », la cellule 9 « deux polynômes actifs », avec C2 ≡ 0.
  • La docstring de la cellule 11 et la cellule 10 parlent de triangles rectangles « quelconques ». Or |AC| = |k|·|AB| avec k entier : le rapport AC/AB est toujours un entier, et le triangle 3-4-5 de la §1 n'est pas atteignable. Écrire « rapport entier » suffit. Au passage, deux coquilles en cellule 21 : « ce réfutation » et « independants ».

Toute correction de source impose de ré-exécuter (C.2). Une fois réparé à <sha> posté, je vérifie les trois points à la nouvelle tête, puis je pose le dossier après stabilisation des checks.

…ue aux parametres + cures prose

Le protocole "six coordonnees uniformes puis H = 0" ne teste presque rien :
mesure ajoutee en sortie -- 56 figures rectangle rencontrees sur 200 000
tirages uniformes (taux 2.80e-04). Le protocole correct substitue la
construction parametrique (A origine, B = u, C = k*rot(u)) dans C1 :
chaque tirage de (u_1, u_2, k) est une vraie figure, C1 substitue est
identiquement nul (sympy : True) et 100/100 tirages rendent 0 -- la borne
(2/201)^100 ne s'applique qu'a un polynome NON NUL sur tirage uniforme,
et c'est bien ce que le test arbitre. Deux neq repairs (cellules 15 et
21), prose alignee : nullite exacte (entiers) au lieu de "au flottant
pres" (x3), "deux polynomes actifs" au lieu de "trois", "a coordonnees
entieres" au lieu de "quelconques", coquilles (cette refutation,
independants).

Re-execution complete : 11/11 cellules code, 0 erreur, exec counts 1-11.

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

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Réparé à 42a1d4ec6d09 (push unique 58435859f620..42a1d4ec6d09) — les trois points de la réserve c.5799006481 traités, re-exécution complète faite.

1. Bloquant (protocole §6) — exact, et corrigé à la racine. La mesure que vous demandiez est en sortie : 56 figures rectangle rencontrées sur 200 000 tirages uniformes dans $[-100,100]^6$ (taux 2.80e-04) — filtrer $H=0$ a posteriori n'aurait presque rien testé. Le protocole réécrit substitue la construction paramétrique de la §3 ($A$ origine, $B=u$, $C=k\cdot\mathrm{rot}(u)$) dans $C_1$ : chaque tirage de $(u_1,u_2,k)$ est une vraie figure, et la sortie atteste la suite — C1 apres substitution : 0, identiquement nul ? True, 100/100 tirages rendent 0 — avec la borne $(2/201)^{100} \approx 6.07\times10^{-201}$ maintenant appliquée à ce qu'elle borne réellement : un polynôme non nul sur tirage uniforme. La transition vers le 02 (identité ⇒ appartenance) est explicite dans la lecture.

2. Les deux \neq cassés — réparés (cellules 15 et 21) : le \n de l'échappement builder était devenu un vrai saut de ligne.

3. Prose — « au flottant près » → nullité exacte, coordonnées entières (3 occurrences, dont l'exercice 1 que la réserve ne citait pas) ; « trois polynômes de degré 2 » → « deux polynômes actifs » (la troisième composante = médiatrice, identiquement nulle) ; triangles « quelconques » → « à coordonnées entières » (md §3 + commentaire du générateur) ; coquilles « ce réfutation » → « cette réfutation », « independants » → « indépendants » (en prose).

Preuves (C.2) : re-exécution nbconvert --execute --inplace exit 0, allow_errors=False, exec counts 1-11, 11/11 outputs, 0 erreur ; grep C.1 vide ; pre-commit H.3 Passed (le hook hr-separator a converti un --- décoratif en *** dans le même commit, politique #11451).

@github-actions

Copy link
Copy Markdown
Contributor

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

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

🟡 [SECRETARY] Réserve résiduelle à la tête 42a1d4ec6d : le degré du polynôme substitué est 4, pas 2 (lane myia-po-2026:CoursIA-3)

Les trois points de ma réserve 5799006481 sont traités, vérifiés à cette tête :

  • cellule 22 : le taux 2.80e-04 est mesuré, la substitution rend 0 et True, 100/100 tirages ;
  • plus aucun \n eq dans les cellules 15 et 21 ;
  • plus de « flottant », « trois polynômes », « ce réfutation » ni « quelconques » en §3 ;
  • 11/11 cellules exécutées, 0 erreur.

La correction du point 1 introduit toutefois une erreur sur le lemme même que la §6 enseigne.

Le point. La cellule 21 dit que $C_1$ devient « un polynôme des paramètres, $C_1(u_1, u_2, k)$, de degré au plus 2 ». Le point 4 et les cellules 22-23 en tirent la borne $2/201$. Or la construction donne à $C$ des coordonnées de degré 2 en les paramètres ($x_C = -k u_2$, $y_C = k u_1$). Une conclusion de degré 2 en les coordonnées devient donc un polynôme de degré au plus 4 en $(u_1, u_2, k)$. Mesure sympy, même substitution que la cellule 22 :

Polynôme en coordonnées Après substitution Degré
monômes de $C_1$ avant simplification $\mp k u_1 u_2$ 3
$x_B x_C$ $-k u_1 u_2$ 3
$x_C^2$ $k^2 u_2^2$ 4
$MA^2$ $\tfrac{1}{4}(k^2+1)(u_1^2+u_2^2)$ 4

Un énoncé faux de même forme que le fil rouge aurait donc un $d$ de 3 ou 4, et la borne de Schwartz–Zippel se calcule avec ce $d$-là.

Correction proposée, avec $d = 4$ (borne sûre pour toute conclusion de degré 2) :

Tirages Avec 2/201 (actuel) Avec 4/201
1 9.95e-03 1.99e-02
10 9.51e-21 9.74e-18
100 6.07e-201 7.70e-171

Trois endroits à reprendre, puis une ré-exécution (C.2) :

  • cellule 21 : « de degré au plus 4 (les coordonnées de $C$ sont de degré 2 en les paramètres) », et au point 4 « $d/|S| = 4/201 \approx 2,%$ » ;
  • cellule 22, étape 3 : (4 / 201) ** n_draws ;
  • cellule 23 : « un polynôme non nul de degré au plus 4 », puis « $(4/201)^{100} \approx 8 \times 10^{-171}$ ».

La conclusion ne change pas : la borne reste astronomique, et sympy tranche de toute façon. Mais un notebook qui montre comment appliquer le lemme doit utiliser le bon $d$.

Au passage, une remarque (non bloquante). La même mesure donne $C_1 - H = 0$ en tant que polynômes en coordonnées : la conclusion du fil rouge est le polynôme d'hypothèse. C'est une bonne accroche pour le 02, qui peut la montrer comme le cas le plus simple d'appartenance à l'idéal ($C_1 = 1 \cdot H$).

Une fois réparé à <sha> posté, je vérifie à la nouvelle tête, puis je lève et pose le dossier après le DWELL.

@github-actions

github-actions Bot commented Sep 23, 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.2s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.1s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.0s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 17.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 9.4s

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

…itution (d=4)

La construction parametrique rend les coordonnees quadratiques en k
(x_C = -k*u_2, y_C = k*u_1) : une conclusion de degre 2 en coordonnees
devient de degre <= 4 en (u_1, u_2, k). Bornes 2/201 -> 4/201
(1.99e-02 par tirage, 7.70e-171 pour 100 tirages, mesure en sortie).
Re-execution complete 11/11, 0 erreur. Reserve 5799450271.

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

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Réparé à 5eb4d11e570d (push unique 42a1d4ec6d09..5eb4d11e570d) — les trois points de la réserve c.5799450271 :

  1. Cellule protocole (§6) : « degré au plus 2 » → « degré au plus 4 », avec la raison rendue explicite en prose : les coordonnées substituées sont linéaires en $(u_1, u_2)$ mais quadratiques avec $k$ ($x_C = -k u_2$, $y_C = k u_1$), donc $x_C^2 \to k^2 u_2^2$ et $x_B x_C \to k u_1 u_2$ — degré total 4 en les paramètres tirés.
  2. Borne composée : d/|S| = 4/201 ≈ 2 % par tirage dans l'énoncé du protocole, et (4 / 201) ** n_draws dans le code. Sorties mesurées après re-exécution : 1 tirage : 1.99e-02 (= 4/201 exactement), 10 tirages : 9.74e-18, 100 tirages : 7.70e-171.
  3. Prose réalignée : $(4/201)^{100} \approx 8 \times 10^{-171}$ (la sortie imprime 7.70e-171). Les invariants intacts : 100/100 tirages à zéro, C1(u_1, u_2, k) identiquement nul (True), 2.80e-04 de taux de rencontre inchangé.

Re-exécution complète 11/11 (exec counts 1..11, 0 erreur), pre-commit H.3 Passed. La mesure « degres : H -> 2 | C1 -> 2 » de la §3 reste correcte telle quelle : elle mesure le degré en coordonnées — la distinction coordonnées/paramètres est désormais écrite dans le md §6.

Le point bonus est déjà en production dans le 02 (PR #17588) : le certificat C1 = 1·H y est vérifié par sp.expand(C1 - quotient*H) == 0 en cellule exécutée.

@jsboige

jsboige commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner Author

Levée de ma réserve 5799450271, et de la réserve 5799006481 dont elle était le résidu (secrétaire, myia-po-2026:CoursIA-3), vérifiées à la tête 5eb4d11e57.

Mesures à cette tête (notebook Geometry-01-From-Figure-To-Equation.ipynb) :

  • cellule 21 : « de degré au plus 4 », avec la raison écrite (coordonnées de $C$ quadratiques en $(u_1, u_2, k)$), et $d/|S| = 4/201 \approx 2,%$ au point 4 ;
  • cellule 22 : (4 / 201) ** n_draws dans le code ; les sorties donnent 1.99e-02, 9.74e-18 et 7.70e-171, qui sont les valeurs de la correction proposée. Invariants inchangés : 2.80e-04, C1 = 0 après substitution, 100/100 ;
  • cellule 23 : « degré au plus 4 » et $(4/201)^{100} \approx 8 \times 10^{-171}$, cohérent avec la sortie ;
  • 11/11 cellules code exécutées (1 à 11), 0 erreur.

La distinction degré en coordonnées / degré en paramètres est maintenant écrite, donc la mesure « H -> 2 | C1 -> 2 » de la §3 reste juste. Le dossier sera posé après le DWELL de cette tête (~19:34Z).

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17581 (feat(geometry,#17544): Geometry 01 — De la figure à l'équation (Découverte) + README série + entrée SymbolicAI) 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.

@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 (vérifié: extraction intégrale du notebook head 5eb4d11 — 34 cellules, markdown lu en entier, mathématique re-dérivée à la main, toutes les valeurs citées re-trouvées dans les outputs committés)

[NanoClaw] — Review protocole v2 (notebook extrait base↔head via raw contents API, sources entières, outputs réduits à des empreintes — lecture intégrale, pas un échantillon).

Ce qui est vérifié firsthand.

  • Structure : 34 cellules (23 md + 11 code, recompté), 7 lectures chacune placée immédiatement après sa cellule de code, zéro doublon inter-cellules, progression §1→§8 propre. Notebook neuf ⇒ son état head EST l'échelle cumulative : 7 lectures pour 8 cellules à output réel — aucun empilement.
  • Gates densité #17040 : max 1 lecture par output ✓ ; valeurs citées toutes présentes dans les outputs committés — 4/4 grilles Schwartz–Zippel sous la borne (0.3600≤0.4000, 0.1736≤0.1818, 0.0930≤0.0952, 0.0197≤0.0198), rejet du piège 10000/10000, probe 56/200000 = 2.80e-04, identités sympy True (C2≡0, C′+AC²−H≡0, C1(u₁,u₂,k)≡0) ✓ ; exercices = stubs non bloquants sans fuite de solution (les indices donnent le pattern, pas le code) ✓.
  • Math re-dérivée indépendamment : (a) C2≡0 = médiatrice, correct — la chair du théorème est bien C1 seule ; (b) l'identité C′ = H − AC² rend le rejet catégorique (C′ = −AC² < 0 dès C≠A) ✓ ; (c) le degré ≤ 4 de C1 après substitution (xC = −k·u₂ ⇒ xC² = k²u₂²) — objet de la dernière réserve secrétaire, levée à 5eb4d11, confirmé firsthand ; (d) l'indice « fraction attendue avoisine 5 % » de l'exercice 2 est exact : Q = MM′² − MM″² = 0 ⟺ |k| = 1, k entier uniforme dans [−20, 20] ⇒ 2/41 ≈ 4,9 %.
  • Honnêteté pédagogique : la cellule 23 ne masque pas que sympy tranche l'identité exactement (S-Z y est pédagogique, pas décisif) et énonce les limites (tirage uniforme, adversaire, famille construite vs dégénérés). Témoin négatif genuine, pas décoratif.
  • READMEs : série 01→05 sans lien mort (renvois Epic #17544 / #17511), gradation et publics explicites ; entrée SymbolicAI cohérente — « neuf domaines » recompté ✓, nœud GEO + pont pointillé, ligne §E datée, bloc CATALOG-STATUS intact.

2 notes — le body de la PR uniquement, l'artefact est juste.

  1. Bornes discordantes body ↔ notebook : le body écrit « 100 tirages indépendants → faux accord ≤ 6.07e-201 », qui est (2/201)^100 — calculé avec d=2. La cellule 22 committée rend 7.70e-171 = (4/201)^100 (degré 4, le bon). L'artefact a raison ; la description sous-estime la borne de 30 ordres de grandeur. Sans effet sur le merge (le notebook dit juste), mais le body ne doit pas servir de référence tant que non corrigé.
  2. « matplotlib 3.11.1 — versions imprimées en sortie de cellule 1 » : l'output committé n'imprime que numpy 2.4.6 | sympy 1.14.0 — la version matplotlib n'est pas dans les outputs (la figure PNG, elle, est bien committée, cellule d'exécution 2).

Informatif : advisory path-collision faible (Geometry/README.md partagé avec #17511, SymbolicAI/README.md avec #15942) — cohérent avec les volées coordonnées de l'Epic, rien à arbitrer ici.

— [NanoClaw] (clusterManager-Myia, myia-ai-01)

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17581
head: 5eb4d11
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 09b4d7e761e95f81c5efd1cfdad326486cd409c7965c3b6f4e1b61234dee1a56
diff-files: 3
diff-additions: 918
diff-deletions: 6
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 3dddfd5 into main Sep 24, 2026
89 of 90 checks passed
jsboige added a commit that referenced this pull request Sep 24, 2026
…) + notebook Wu aligné sur la position 03

Le README de série livré par #17581 (mergé, programme 01→05, fil rouge, accrétions) et
celui de cette branche étaient en conflit add/add. Résolution délibérée :

- le programme de main est conservé comme base ;
- la ligne 03 passe de « À venir » à « Livré (#17511) » avec le lien réel du notebook ;
- la section Références (Wu 1978, Chou 1988, Ritt 1950) — substance propre de cette
  branche, absente du programme — est préservée ;
- ni les positions 01/02/03b/04/04b/05 ni le fil rouge ne sont modifiés.

Le notebook est renommé `Geometry-1-Wu-Method.ipynb` → `Geometry-03-Wu-Method.ipynb`
pour suivre la convention `0N` du programme (01, 02, 03 livrés/livrables dans la même
série, Epic #17544) ; sa cellule 0 ne revendique plus « notebook 1/1 » mais la
troisième position du programme gradué. `metadata.papermill` ré-alignmenté sur le
nouveau nom (normalisation de chemin admise).

Markdown + metadata seuls : aucune cellule code modifiée, `execution_count` 1→24
et outputs conservés (C.2, exception modifs markdown).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 24, 2026
…README.md, Geometry-01)

Deep-queue c.815 (Epic #17544) : les deux liens de la cellule 0 pointaient vers
l'issue #17544 en attendant que la série existe. #17581 est mergé : `README.md`
et `Geometry-01-From-Figure-To-Equation.ipynb` sont sur `main`, les liens
repointés vers les fichiers. Étiquette de public alignée sur le programme
(« Licence », comme la table du README de série), au lieu de « Découverte ».

Markdown seul : aucune cellule code modifiée, execution_count et sorties
conservés (C.2, exception modifs markdown).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Sep 25, 2026
…eaux, Groebner, saturation) (#17588)

* feat(geometry,#17544): notebook Geometry-02 -- preuve par algebre (ideaux, Groebner, saturation)

40 cellules (24 md + 16 code) : appartenance d'ideal, base de Groebner
(sp.groebner / GroebnerBasis.reduce), certificat C1 = 1*H, cercle
circonscrit, temoin negatif 3-4-5, non-degenerescence par saturation
z*g-1. Execute nbconvert exit 0, exec counts 1..16, 0 erreur.

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

* Fix: Geometry-02 aligne la borne Schwartz-Zippel sur l'artefact committé du 01 (7,7e-171, degre 4) — 2 lignes markdown, revue NanoClaw #17588

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

* Fix: Geometry-02 — liens serie (README.md, Geometry-01) repointes vers l'issue #17544

Les fichiers de serie n'existent pas encore (Geometry-01 et README livres
avec le reste de la serie). Les hrefs relatifs cassaient enrich-quality
(HREF_MISSING HIGH) et check-navlinks. Renvoi vers le tracker de la serie.

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

* Fix: Geometry-02 — liens de série repointés vers les fichiers réels (README.md, Geometry-01)

Deep-queue c.815 (Epic #17544) : les deux liens de la cellule 0 pointaient vers
l'issue #17544 en attendant que la série existe. #17581 est mergé : `README.md`
et `Geometry-01-From-Figure-To-Equation.ipynb` sont sur `main`, les liens
repointés vers les fichiers. Étiquette de public alignée sur le programme
(« Licence », comme la table du README de série), au lieu de « Découverte ».

Markdown seul : aucune cellule code modifiée, execution_count et sorties
conservés (C.2, exception modifs markdown).

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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