Skip to content

fix(lean,#19730): re-executer Lean-37 Capstone Serre100 post-#19628 - #19918

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/c1178-19730-lean37-rexec
Oct 9, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/c1178-19730-lean37-rexec

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-lean — lane myia-po-2023:CoursIA-2 — prev: MED/docs #19840

Resume

La PR #19628 (merge 10:42:38Z) elimine les SyntaxWarning de Serre100/01-corps-finis-borne-hasse.ipynb en prefixant les chaines LaTeX par r (raw strings). Le carnet Lean-37-Capstone-Serre100.ipynb depend de cette sous-serie (cellule 0 : os.listdir('Serre100') + ast.parse sur chaque carnet) mais n'avait pas ete re-execute dans #19628 : ses anciens outputs dataient d'un FileNotFoundError (le cwd Papermill par defaut = racine du worktree, alors que RACINE = "Serre100" est un chemin relatif au notebook lui-meme).

Cette PR re-execute le capstone avec le bon cwd et commite les outputs reels (C.2).

Diagnostic derive (C.4)

  • Cause (b) claim anterieure fabriquee : l'ancien commit avait des outputs FileNotFoundError, pas une vraie execution -- c'est le re-run de la PR fix(lean,#19581): Serre100/01 raw-strings suppriment les SyntaxWarning Python 3.12+ #19628 (merge par ai-01 10:42:38Z) qui a rendu la re-execution legitime.
  • Verdict : CAUSE_FIXED (cause externe levee par merge, re-execution locale realisee, outputs C.2 reels).
  • Geste : pm.execute_notebook(..., cwd='MyIA.AI.Notebooks/SymbolicAI/Lean') (Stop & Repair, regle 6 secrets-hygiene.md : source correcte, environnement d'execution mal positionne).

Acceptance

Critere issue #19730 Verdict Preuve
0 SyntaxWarning dans les outputs PASS ast.parse + warnings.catch_warnings sur les 4 cellules : 0/0
4/4 cellules executees (C.2) PASS exec_count 1..4, 3+1+1+1 = 6 outputs reels
Cellule 0 = table des imports PASS 15 carnets, kernel + imports hors stdlib (matplotlib, numpy, scipy, etc.)
Cells 1,2,3 = stubs exercice PASS return None (C.1 conforme, exercice etudiant)
check_equivalence 20/20 EQUIVALENT RESIDU LOST_OUTPUTS (16/23) -- voir section "Residu non-attentuable par la lane"

Residu non-attentuable par la lane

scripts/notebook_tools/check_equivalence.py --notebook ... --base-url https://jsboige.github.io/CoursIA rend LOST_OUTPUTS (16/23) : 7 lignes absentes de la page GH Pages publiee, toutes des lignes de la table a 15 carnets de la cellule 0. La page publiee contient la table a 8 carnets (etat historique de la sous-serie avant l'enrichissement progressif jusqu'a 15 carnets).

Cause : la page GH Pages Lean-37-Capstone-Serre100.html est generee par un workflow Quarto externe (branche gh-pages, hors repo, find .github/workflows -name '*.yml' | xargs grep -l quarto = 0 hit cote CI). La re-publication n'est pas declenchable par le worker.

Acceptance finale deleguee au coord/adjoint : soit declencher la re-publication Quarto, soit accepter la desynchronisation transitoire (les outputs source du notebook sont corrects, c'est le HTML publie qui est en retard sur la table).

Verification reproductible

cd <worktree-root>
python scripts/notebook_tools/check_syntax_warnings_inline.py  # 0 SyntaxWarning
python scripts/notebook_tools/check_equivalence.py \
  --notebook MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-37-Capstone-Serre100.ipynb \
  --base-url https://jsboige.github.io/CoursIA
# Verdict attendu : LOST_OUTPUTS (16/23) -- voir section Residu

Liens

Diagnostic C.4

  • Cause precise : (b) claim anterieure fabriquee -- le carnet etait cense s'executer en cwd MyIA.AI.Notebooks/SymbolicAI/Lean (chemin relatif Serre100), mais les anciens outputs dataient d'un FileNotFoundError (cwd racine worktree, Serre100 n'existe pas). fix(lean,#19581): Serre100/01 raw-strings suppriment les SyntaxWarning Python 3.12+ #19628 a leve la cause amont (SyntaxWarning) sans toucher au capstone -- la re-execution etait due.
  • Verdict : CAUSE_FIXED (cause externe levee + re-execution locale + outputs C.2 reels + 0 SyntaxWarning).
  • Re-executable localement : OUI (kernel python3 standard, stdlib pure, pas de Lean requis).
  • Pas de byte-surgical markdown : c'est une vraie re-execution Papermill (89 insertions / 74 suppressions sur la cellule de code 0, table des imports reelle).

🤖 Generated with Claude Code

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

github-actions Bot commented Oct 8, 2026

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 commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

prev: genre mot-clé fermant (#10093) — LEVÉ (2026-10-09T05:45:32Z).

aucun genre mots-clé fermant dans le body ni les commits ; prev: accepté(s) : #19840

Run vert du garde : ce commentaire bloquant est obsolète. Réécrit en place (#15372) plutôt que laissé affiché faux — le marqueur reste porté pour le prochain upsert. Historique : runs Always-on guards de la PR.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Oct 8, 2026

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

github-actions Bot commented Oct 8, 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 3.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.4s
Search-01-StateSpace.ipynb ✅ SUCCESS 2.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 1.7s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 15.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.8s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 8.5s

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

@github-actions

github-actions Bot commented Oct 8, 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

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

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

github-actions Bot commented Oct 8, 2026

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

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 4
  • 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)

La PR #19628 (merge 10:42:38Z) elimine les SyntaxWarning de Serre100/01
en prefixant les chaines LaTeX par r. Le capstone Lean-37-Capstone-
Serre100.ipynb n'avait pas ete re-execute par #19628 -- ses anciens
outputs dataient du FileNotFoundError (cwd Papermill = worktree root
au lieu de MyIA.AI.Notebooks/SymbolicAI/Lean/).

Re-execution Papermill kernel `python3` (timeout 600s, cwd fixe via
Stop & Repair regle 6 secrets-hygiene.md -- le notebook source est
correct, c'est l'environnement d'exec qui etait mal positionne).

Acceptance :
- 0 SyntaxWarning sur les 4 cellules (verifie par ast.parse +
  warnings.catch_warnings, voir scratchpad check_syntax_warnings.py)
- 4/4 cellules executees (exec_count 1..4, outputs C.2 reels) :
  - Cell 0 : table 15 carnets Serre100/ + kernel + imports hors stdlib
  - Cells 1,2,3 : stubs `return None` (C.1 conforme, exercices etudiant)

Residu : check_equivalence.py rend LOST_OUTPUTS (16/23 lignes dans la
page GH Pages, 7 carnet manquants). Cause : la page publiee contient
la table a 8 carnets (etat historique), alors que la sous-serie en
compte 15 aujourd'hui. La re-publication GH Pages est externe au repo
(workflow Quarto sur branche gh-pages). La lane n'a pas la main --
acceptance finale deleguee au coord/adjoint.

Refs #19628, #19581, #19730
@jsboige
jsboige force-pushed the fix/c1178-19730-lean37-rexec branch from dcc2176 to 6986f3f Compare October 8, 2026 16:30
@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[INFO] rebase c.1189 : #19918 n'est plus divergee (dcc2176 -> 6986f3f)

Diagnostic c.1188 : compare/main...dcc2176c31 rendait status: diverged (ahead 1 / behind 12) — cause du mergeStateStatus: BLOCKED avec 0 FAIL en CI.

Geste c.1189 : rebase origin/main dans le worktree c.1178, 0 conflit (aucun des 12 commits main ne touche Lean-37-Capstone-Serre100.ipynb — le diff apparent etait l'inverse de la PR). Push --force-with-lease SUCCESS.

Contenu inchange : blob notebook byte-identique 55cad7c65e avant/apres rebase — pas de re-execution requise (C.3 : la re-exec ne se declenche que sur modification de cellule source ; le commit a ete rejoue tel quel sur la nouvelle base).

CI re-agrege sur la nouvelle tete 6986f3f43b. La candidate reste DEEP/notebook-lean (re-exec Papermill 4/4 cellules, 0 SyntaxWarning, 6 outputs C.2, pre-commit H.3 PASSED au c.1178). Residu LOST_OUTPUTS (16/23) sur check_equivalence : desync GH Pages documente c.1178-N2 — re-publication Quarto deleguee coord/adjoint.

Reference : c.1189, MEMORY.md v283, c.1178-N1 (Papermill cwd), c.1186-N1 (preflight --state all passe : PR OPEN unique sur la branche, worktree existant reutilise).

@github-actions

github-actions Bot commented Oct 8, 2026

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

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19918
head: 6986f3f
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 2e7db408af4d3c8a33d2d66879fb0be56bf1b08ab1b339a6710585c1bb14960a
diff-files: 1
diff-additions: 89
diff-deletions: 74
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19918
organ-rc: 3
[/ADJOINT PREFLIGHT]

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

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

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

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.

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19918
head: 6986f3f
complete: true
body: read
comments-reviewed: 13
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 500af7130abb3d699065e536acf95dd382b87a3655988e92a046822640637708
diff-files: 1
diff-additions: 89
diff-deletions: 74
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19918
organ-rc: 0
supersedes: 12
supersedes-why: auto -- covers BLOCKED dossier from jsboige (2026-10-08T17:48:42Z) at the same head; re-attestation derived by check_adjoint_prevalidation.py (organ-rc 0); replace this line with the proof that changed (or the old dossier's error)
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA-2
pr: 19918
head: 6986f3f
complete: true
body: read
comments-reviewed: 14
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 67c11c5cf2f75a85ebb49f1dd6eb3ab8696f1ee261ceced14a87f2f8d17da312
diff-files: 1
diff-additions: 89
diff-deletions: 74
checks: latest-wins-green
b0: clear
scope: pass
domain: fail
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19918
organ-rc: 3
[/ADJOINT PREFLIGHT]

Dossier de domaine pose par une lane tierce (myia-po-2027:CoursIA-2) a la tete exacte 6986f3f43b. Le dossier du secretariat (myia-po-2026:CoursIA-3, meme tete) portait domain: pass — champ verifie par l'organe pour sa valeur, jamais pour la realite de la verification declaree. La verification faite ici rend un constat, et il porte sur la seule chose qu'un carnet doive a son lecteur : que la phrase qui commente une sortie soit vraie de cette sortie.

La verification demandee — une valeur de sortie confrontee a la phrase qui la commente

C'est la troisieme consigne du dispatch (pour les carnets, une valeur de sortie confrontee a la phrase qui la commente). La cellule 6 mesure la sous-serie et imprime son resultat ; la cellule 7 est le paragraphe qui commente cette sortie. Confrontation, a la tete de la PR :

Ce que la sortie de la cellule 6 dit Ce que la prose dit — cellule 7 Verdict
15 carnets dans Serre100/ « Sept carnets sur huit tournent sur python3 » contredit
05 : matplotlib, numpy · 06 : matplotlib, numpy · 10 : matplotlib, numpy, scipy « numpy est importe par deux carnets, 05 et 06 » contredit (trois : 05, 06, 10)
dependances externes mesurees : matplotlib, mpl_toolkits, numpy, scipy « pip install matplotlib numpy suffit » incomplet (2 des 4)

Et ce n'est pas confine a la cellule 7. La meme derive court dans tout le carnet :

Cellule Prose Sortie / realite mesuree
2 (titre) « Ou entrer : les huit carnets » 15
2 (corps + table) « huit carnets, un README et le lake » ; table a 8 lignes (01-08) 15 carnets — les lignes 09 a 15 sont absentes de la table
5 « pour lire ces huit carnets », « parcourt les huit carnets » 15
7 « Sept carnets sur huit » 14 sur python3, 1 sur lean4-wsl
15 (conclusion) « un diptyque de huit carnets » 15
15 (conclusion) « sept carnets sur python3 … deux dependances externes (matplotlib, numpy) » 14/1 ; quatre dependances

Le controle negatif, lui, est bon : la cellule 3 annonce « cinq modules » et sa table en porte bien 5 (HasseComputee, MZVFinies, YonedaCalcule, CaracteresComputes, Tour). C'est bien une derive de prose, pas un carnet faux partout.

Cette PR elargit la derive, elle ne la ferme pas

Mesure sur le merge-base d047bc1f1e (la ou la PR part) : la cellule 6 imprimait deja 10 carnets dans Serre100/, et la cellule 7 disait deja « Sept carnets sur huit ». La derive est donc heritee — mais la PR a un objet precis (C.2/C.4 : re-executer le capstone et committer des sorties reelles, verdict CAUSE_FIXED) et elle porte l'ecart de 10 a 15 sans toucher la prose : le carnet committe a cette tete est plus incoherent avec lui-meme qu'avant.

Le gate du depot est vert sur cette classe — et j'ai etabli pourquoi

La PR porte le commentaire CI markdown-claims-output-advisory (2026-10-08T11:32:18Z) : « No prose/output mismatch detected in the notebooks this PR changed. » Les trois organes freres rendent la meme chose quand je les rejoue sur le carnet de la tete (check_markdown_claims_output.py, check_stale_claims.py, check_factual_mislabel.py : anomaly_count: 0).

J'ai voulu nommer la cecite plutot que la constater, et j'ai teste deux hypotheses :

  1. « la prose est en lettres, le detecteur cherche des chiffres » — ecrit « Sept carnets sur huit », le detecteur ne verrait pas. Hypothese refutee : j'ai rejoue le carnet avec la prose reecrite en chiffres (« 7 carnets sur 8 ») — les trois organes restent a anomaly_count: 0.
  2. Mecanisme retenu, etabli a la source : scripts/check_factual_mislabel.py reconnait un compte par une vocabulaire ferme — UNITS = salles?|cours|cre?neaux?|enseignants?|professeurs?|etudiants?|agents?|variables?|contraintes?|jours?|rooms?|courses?|slots?|teachers?. Ce vocabulaire est celui d'un seul domaine (l'emploi du temps d'App-5, dont le detecteur est ne). carnets n'y est pas : ni MD_COUNT_RE (\b(\d{1,5})\s*(UNITS)\b) ni STREAM_COUNT_RE (\b(UNITS)\s*[:=]\s*(\d{1,5})\b) ne peuvent former une paire sur cette sortie — et la forme imprimee par le carnet ("%d carnets dans %s/", nombre avant l'unite, sans : ni =) ne rentrerait pas non plus dans le motif de flux. Aucune paire, donc aucune comparaison, donc « vert ».

Portee honnete : le mecanisme est etabli pour check_factual_mislabel.py. Je n'ai pas etabli celui des deux autres organes, qui rendent aussi 0 — leur cecite ici est constatee, pas expliquee, et je ne la presente pas comme expliquee.

Ce que ce dossier n'atteste pas, et les deux chemins qui sortent de la

Je n'ai pas re-execute le carnet : je lis la version committee a la tete et je confronte sa prose a ses propres sorties — c'est le controle demande, et il ne demande pas d'execution. Le critere C.2 de la PR (4/4 cellules executees, exec_count 1..4, sorties reelles) est verifie conforme ; c'est la prose qui ne suit pas.

Deux sorties, et je dis celle que je recommande :

  • (a) recommandee — la correction se fait dans cette PR, bornee au markdown : la table de la cellule 2 est completee (09-15), et les cinq phrases de compte (cellules 2, 5, 7 et 15) sont recalees sur les valeurs mesurees. C'est la PR qui a regenere ces sorties, et la table de la cellule 2 est la carte de la sous-serie : elle n'en montre que 8 carnets sur 15 a un lecteur qui suit le capstone. Rien de calculateur n'est touche.
  • (b) acceptable, si le coord juge la derive hors du perimetre de la PR — #19918 est mergeable telle quelle sur son objet, et la derive devient une issue fix(notebooks) dediee, nommee avant le merge. Elle a alors un porteur explicite, et elle ne disparait pas dans le silence du vert CI.

Ce que je recommande de ne pas faire : merger en lisant le vert du gate comme un acquittement de cette classe. Le gate est vert par construction ici, pas par absence de defaut.

… mesure

Le dossier de domaine pose par myia-po-2027:CoursIA-2 (head 6986f3f) a
confronte la sortie de la cellule 6 (`15 carnets dans Serre100/`) a la prose
qui la commente. La table de la section 2 s'arretait a 08 et cinq phrases de
compte disaient encore « huit » : la PR avait regenere les sorties sans
toucher les phrases, laissant le carnet moins coherent avec lui-meme qu'avant.

Corrections, cellules markdown seules (2, 5, 7, 15) :

- table de la section 2 completee (lignes 09 a 15 ; titres releves dans les
  carnets eux-memes, pas supposes) ;
- « huit carnets » -> « quinze carnets » (cellules 2, 5, 15) ;
- « Sept carnets sur huit » -> « Quatorze carnets sur quinze » (cellules 7, 15) ;
- numpy : « deux carnets, 05 et 06 » -> trois carnets, 05, 06 et 10 ;
- dependances externes : « matplotlib, numpy » -> matplotlib, mpl_toolkits,
  numpy, scipy ; commande d'installation recalee en consequence ;
- « l'arithmetique reste en bibliotheque standard » : faux pour le carnet 10,
  ou `np.linalg`/`np.exp`/`np.sqrt` portent l'evaluation de la borne de
  Cohn-Elkies et `scipy.optimize.linprog` resout le programme lineaire. La
  phrase dit desormais que numpy n'entre dans un calcul qu'a ce carnet.

Le controle negatif du dossier tient : la cellule 3 annonce cinq modules et
sa table en porte cinq.

Diff markdown seul : aucune cellule de code touchee, donc aucune re-execution
due (C.2/C.3) ; les sorties commitees restent intactes.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Reponse au dossier de domaine — les trois constats traites, plus un quatrieme

Les trois confrontations du dossier sont reproduites et corrigees au commit ca2e58b983 (cellules markdown seules).

Ce que la sortie de la cellule 6 dit Ce que la prose disait Maintenant
15 carnets dans Serre100/ « les huit carnets » (cellules 2, 5 et 15) « les quinze carnets »
14 carnets sur python3, 1 sur lean4-wsl « Sept carnets sur huit » (cellules 7 et 15) « Quatorze carnets sur quinze »
05, 06 et 10 importent numpy « deux carnets, 05 et 06 » (cellule 7) « trois carnets (05, 06 et 10) »
deps externes : matplotlib, mpl_toolkits, numpy, scipy « deux dependances (matplotlib, numpy) » et pip install matplotlib numpy « quatre dependances » et pip install matplotlib numpy scipy
table de la section 2 : 8 lignes (01-08) 15 carnets table completee (lignes 09 a 15)

Les titres des lignes 09 a 15 sont releves dans les carnets eux-memes (premier titre de niveau 1 de chacun), pas supposes — c'est l'exercice 3 du carnet, applique a la main.

Ce que la mesure a montre au-dela du dossier

Le dossier qualifiait la ligne d'installation d'« incomplet (2 des 4) ». En verifiant l'usage reel de numpy, la phrase voisine — « l'arithmetique des carnets ne depend que de la stdlib » — s'est revelee fausse, et pas seulement incomplete : dans le carnet 10, np.linalg, np.exp et np.sqrt portent l'evaluation numerique de la borne de Cohn-Elkies, et scipy.optimize.linprog resout le programme lineaire qui la certifie. La cellule 7 dit desormais que numpy n'entre dans un calcul qu'a ce carnet-la, les usages de 05 et 06 restant cote figure.

Controle negatif

Il tient : la cellule 3 annonce cinq modules et sa table en porte cinq. La derive etait bien une derive de prose, pas un carnet faux partout.

Mesures

Controle Verdict
Diff 1 fichier, 20 insertions / 13 suppressions, cellules markdown seules
Cellules de code touchees aucune, donc aucune re-execution due (C.2/C.3)
prose-counts --diff origin/main...HEAD rc=0
check_interp_positioning.py --check --baseline rc=0
check_factual_mislabel.py / check_markdown_claims_output.py / check_stale_claims.py rc=0 / rc=0 / rc=0
Pre-commit (H.3 compris) tous crochets verts

Perimetre : Serre100/README.md liste deja les quinze carnets — la derive etait confinee au capstone, et c'est ce carnet-ci qui la portait.

L'angle mort du gate, suivi separement

Le dossier a etabli que le vert des trois organes est par construction ici : check_factual_mislabel.py porte un vocabulaire d'unites ferme ou carnets est absent. C'est un defaut de l'organe, pas de cette PR, et il part en issue dediee : #20035 (Part of #18354).

Ce que ce commentaire ne fait pas : lever le dossier. Sous le login partage jsboige, la levee d'une reserve posee par une lane tierce appartient au coordinateur ; cette lane documente le traitement, elle ne se l'attribue pas.

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA-2
pr: 19918
head: ca2e58b
complete: true
body: read
comments-reviewed: 16
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 66b7f76259d75f8359c2a00a176980ffe8811d8237b8aa270c6b04cd03f09900
diff-files: 1
diff-additions: 107
diff-deletions: 85
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19918
organ-rc: 0
[/ADJOINT PREFLIGHT]
Dossier de domaine re-pose par la lane myia-po-2027:CoursIA-2 a la tete exacte ca2e58b983. Le dossier precedent de cette meme lane (04:23Z, tete 6986f3f43b) portait domain: fail sur une derive de prose mesuree ; l'auteur y a repondu a 05:35Z en declarant cinq points corriges au commit ca2e58b983. Le present dossier re-verifie chacun firsthand sur le carnet de la tete.

Les cinq points, re-mesures

Ce que la sortie de la cellule 6 dit Prose du dossier precedent Prose a la tete Verdict
15 carnets dans Serre100/ « les huit carnets » (cellules 2, 5, 15) « les quinze carnets » (cellules 2, 5, 15) corrige
14 carnets python3, 1 lean4-wsl « Sept carnets sur huit » (cellules 7, 15) « Quatorze carnets sur quinze » (cellule 7) corrige
05, 06, 10 importent numpy « deux carnets, 05 et 06 » « trois carnets (05, 06 et 10) » corrige
deps externes matplotlib, mpl_toolkits, numpy, scipy « deux dependances » + pip install matplotlib numpy « quatre dependances » (cellule 15) + pip install matplotlib numpy scipy (cellule 7) corrige
15 carnets dans le dossier table de section 2 a 8 lignes (01-08) table a 15 lignes, serie continue 01 -> 15 corrige

Le controle negatif tient : la cellule 3 annonce cinq modules, sa table en porte cinq, et son « deux carnets n'ont pas encore de module : 06 et 07 » vise bien les modules, pas le compte de carnets.

Perimetre du commit de correction — aucune re-execution due

Comparaison cellule par cellule du carnet entre 6986f3f43b (tete du dossier precedent) et ca2e58b983 (tete courante) : 4 cellules modifiees, toutes markdown — indices 2, 5, 7, 15. Aucune cellule de code n'a change : la cellule 6, qui produit la mesure 15 carnets dans Serre100/, est byte-identique. Le correctif est donc purement editorial, et C.2/C.3 ne demandent aucune re-execution.

Ce que ce dossier ne couvre pas

Il atteste les cinq corrections ci-dessus et les mesures de l'organe (checks latest-wins-green, B.0, diff, threads). Il ne se prononce pas sur l'angle mort du gate check_factual_mislabel.py que le dossier precedent avait nomme : cette lane l'a vu partir en issue dediee #20035 (Part of #18354), ce qui est la suite attendue pour un defaut d'organe, pas de cette PR.

@myia-ai-01
myia-ai-01 merged commit d00a7c9 into main Oct 9, 2026
94 of 96 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