Skip to content

feat(lean,#11703): annexe résolution canonique de Godement — 4 derniers modules noirs - #19439

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/11703-godement-resolution-annexe
Oct 9, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/11703-godement-resolution-annexe

Conversation

@jsboige

@jsboige jsboige commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-lean — lane myia-po-2024:CoursIA — prev: MED/notebook-dotnet #19433

feat(lean,#11703): annexe résolution canonique de Godement — 4 derniers modules noirs

Vague 6 du chantier de visibilité des lakes Lean (#11703). Le compagnon
Lean-15c-Lean-Grothendieck-Companion.ipynb gagne une annexe qui rend visibles
les 4 derniers modules noirs du lake grothendieck_lean :
GodementResolution, GodementAcyclicity, GodementCanonicalDiff,
GodementExactness — la résolution canonique de Godement proprement dite.

Contenu ajouté (3 cellules — section B.2, index 45 post-réorg)

Pattern éditorial identique aux autres annexes du compagnon
(## Annexe → #check @… → ### Lecture de la sortie) :

  1. #### B.2 — La résolution canonique de Godement (H4 numéroté, hérité de la réorg thématique Reorg(lean,#19522): Lean-15c annexes groupees par theme, hierarchie 3 niveaux #19573) — récit
    mathématique : la chaîne d'unités F → C⁰F → C⁰²F → ⋯ n'est pas un
    complexe ; la construction canonique intercale le conoyau de la flèche
    précédente pour obtenir les différentielles dⁱ avec dⁱ ≫ dⁱ⁺¹ = 0.
  2. Cellule code — 8 #check @Grothendieck.* (2 par module, P87–P90) :
    godementUnit_comp_injective, godementUnit_injective_of_isSheaf,
    godementUnitIter_at_iterate_def, godementUnitChain_extends,
    comp_godementStep_zero, toGodement_comp_godementCanonicalDZero,
    godementCanonicalDZero_comp_godementCanonicalDOne,
    mono_toGodement_of_isSheaf.
  3. ### Lecture de la sortie — lecture groupe par groupe, centrée sur la
    relation de complexe comp_godementStep_zero ; ne cite que des noms
    d'énoncés sourcés par les #check (style de la lecture sœur B.1).

Réparation d'environnement (regle F) — mathlib cloné, pas contourné

Le grain était bloqué : lake env lean détruisait la jonction .lake/packages/mathlib
partagée (« URL has changed ») car la cible du cache partagé
.mathlib-cache/leanprover_lean4_v4.33.0-db584cd6/mathlib a été vidée
(0 entrée,
datée du 05/10 01:43 — affecte les ~22 lakes du groupe v4.33.0, pas seulement celui-ci).

Plutôt que recréer une jonction sur une cible vide (et risquer de propager la
destruction au voisin v4.32.1 intact), la réparation s'est faite dans un worktree
isolé
: clone blobless de mathlib4 à la révision épinglée du manifest
(db584cd6, inputRev == rev, URL officielle), sans jonction. Lake ne trouve
plus de divergence d'URL et ne détruit rien. Le vidage du cache partagé est un
incident infra séparé, à traiter hors de cette PR (signalé au coordinateur).

Gates

  • Exécution réelle (C.2) : re-exécution end-to-end DANS WSL, kernel natif
    lean4-wsl, cwd = lake grothendieck_lean (commit 6f8cbe71094) —
    séquence 1..19 clean, 19/19 outputs réels, 0 erreur.
  • Visibilité : scan_lake_notebook_visibility.py --lake grothendieck_lean
    doit passer à 0 noir après cette annexe (preuve dans le commentaire de livraison).
  • Aucun fichier COURSE_CATALOG touché.

See #11703 · Part of #11703 (vague 6).

🤖 Generated with Claude Code

Ratchet exec-sequence — résolu par re-exécution (commit 6f8cbe7)

La séquence est CLEAN aux deux extrémités : base 1..18 → PR 1..19.
scripts/notebook_tools/check_exec_ratchet.py origin/main rend
CLEAN->CLEAN, 0 regression sur la tête courante.

Cause du doublon initial (18/18) et sa levée :

  • Le rebase structurel sur la réorg thématique Reorg(lean,#19522): Lean-15c annexes groupees par theme, hierarchie 3 niveaux #19573 avait re-greffé les 3
    cellules de l'annexe avec les compteurs de LEUR session d'exécution
    précédente, en collision avec la cellule B.3 voisine héritée de main.
  • La dette est soldée par l'exécution, pas par un commentaire : kernel
    lean4-wsl natif WSL lancé depuis le lake (find_lake_root du wrapper
    hérite du cwd d'exécution — le répertoire du notebook ne porte pas de
    lakefile, c'était la cause des démarrages qui échouaient), papermill 2.7.0
    du venv ~/.lean4-venv, 51/51 cellules, 583 s.
  • Aucun hand-edit d'execution_count, aucun scrub de sortie (règle 6
    secrets-hygiene). La section « fail-by-design » précédente est retirée :
    elle décrivait un état où l'exécution semblait hors scope vérifiable —
    la voie (cwd du lake) l'a rendue faisable sur ce siège.

Suivi : l'issue de suivi promise n'est plus nécessaire — la dette est
soldée par l'exécution elle-même, le guard rend CLEAN sur la tête courante.

See #11703 · Part of #11703 (vague 6).

@github-actions

github-actions Bot commented Oct 6, 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 6, 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 6, 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 6, 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 6, 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.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.0s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.1s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.1s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 14.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.6s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 10.3s

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

@github-actions

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

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 19
  • 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 6, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19439 (feat(lean,#11703): annexe résolution canonique de Godement — 4 derniers modules noirs) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

Concern: Il me semble que le format de ces annexes interminables a fait son temps. Ca mériterait une issue de réorganisation narrative qui consolide proprement toutes ces annexes en enrichissant le markdown dans une progression pédagogique plus structurée, avec plus de profondeur (descendre d'un niveau de sous-titres dans la structuration)

@github-actions github-actions Bot added the large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232) label Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine.

Le label large-pr-no-review est pose par l'organe scripts/review_coverage.py porte par l'issue #11232. Aucun remede automatique : il faut obtenir une review (Hermes, ai-01, ou review humaine).

Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans reviews[] ou en commentaire de verdict -- ou que le diff passe sous le seuil. Fermer/rouvrir la PR ne suffit pas -- la mesure porte sur le diff, pas sur l'etat de la PR.

Seuil, historique et exceptions : cf. docs/reference/review-coverage-threshold.md.

@jsboige

jsboige commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner Author

Suite à ta remarque du 2026-10-06T08:23:01Z sur le format des annexes : l'issue de suivi demandée est ouverte -> #19522 (anterieure au merge), avec perimetre mesure (inventaire exhaustif repo-wide des headings Annexe : le pattern du chantier #11703 ne vit que dans 2 carnets -- Lean-15c, 6 sections empilees en queue, et Discrepancy-02, 1 section ; les autres annexes du depot sont pedagogiques et preexistantes, hors perimetre). Le format cible existe deja dans le depot : les « Annexes -- approfondissements optionnels » lettrees de Lean-16b/31, un niveau de sous-titres plus bas -- c'est ce modele que #19522 reprend pour consolider.

Le format actuel de l'annexe Godement (queue plate dans Lean-15c) reste le livrable de cette PR ; la restructuration narrative est reportee a #19522, carnet par carnet, pour ne pas elargir le scope de #19439 au-dela des 4 derniers modules noirs.

See #11703 · See #19522

myia-ai-01 pushed a commit that referenced this pull request Oct 7, 2026
… niveaux (#19573)

6 annexes plates (## Annexe -- X empilees en queue) regroupees sous
un wrapper thematique :

  ## Annexes -- approfondissements optionnels (chapter wrapper)
    ### Annexe A -- Faisceaux en profondeur (4 annexes : SheafCondition,
       Lawvere-Tierney, tiges, prefaisceau gratte-ciel)
    ### Annexe B -- Cohomologie et sites (2 annexes : faisceaux flasques,
       sites/topologies)

Chaque annexe descend d'un niveau (descente d'un cran, mandat user #19439) :
l'ancien ## Annexe devient #### A.X, le ### Lecture devient un paragraphe
en **Lecture de la sortie** dans la meme sous-section.

Cellules code preservees verbatim (execution_count, outputs, metadata) ;
C.2 non du (cellules deplacees, non modifiees).

Issue : #19522 (reorg Lean-15c + Komlos-Discrepancy-02, une PR par carnet)
Refs : #11703 (EPIC parent visibilite modules noirs), #19439

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…ers modules noirs

Wave 6 du chantier de visibilite du lake grothendieck_lean : annexe (md + 8 #check
+ lecture) rendant visibles GodementResolution, GodementAcyclicity,
GodementCanonicalDiff, GodementExactness dans Lean-15c. Preuve : scan 4/87 noirs
(main) -> 0/87 (head), execution papermill WSL 19/19 cellules 0 erreur.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige
jsboige force-pushed the feature/11703-godement-resolution-annexe branch from e44e8a8 to 5083675 Compare October 7, 2026 10:35
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Rebase sur main (conflit notebook Lean-15c) — résolution structurelle, pas marker-par-marker :

  • Cause du conflit : main a reçu l'annexe sœur sites & topologies (Reorg(lean,#19522): Lean-15c annexes groupees par theme, hierarchie 3 niveaux #19573, 176a4f4) puis la réorg thématique des annexes (c953f49, Reorg(lean,#19522): Lean-15c annexes groupees par theme, hierarchie 3 niveaux #19573) pendant que cette branche plaçait la sienne dans l'ancienne structure.
  • Résolution : notebook de main pris pour base ; mes 3 cellules (godement-resolution-annexe/run/lecture) re-greffées en B.2 — La résolution canonique de Godement, directement après B.1 (flasques/Godement — mon texte « l'annexe précédente a plongé tout faisceau… » reste exact) ; l'ancienne B.2 (sites) renumérotée B.3 ; prose d'intro « Six annexes » → « Sept ».
  • Exec counts : flasque-run=17, ma cellule=18, sites-run=18 — le doublon 18 est honnête : chaque cellule porte le compteur de SA session d'exécution (outputs = la preuve) ; renuméroter à la main falsifierait. Note pour le reviewer : deux cellules à 18 = artefact du re-greffe inter-sessions, pas une double exécution.
  • Sources/outputs des cellules B.1 et B.3 byte-identiques à main (seules leurs lignes de titre changent pour B.3).

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Ratchet exec-sequence — fail-by-design assumé (pattern #11577)

La séquence de MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-15c-Lean-Grothendieck-Companion.ipynb passe de CLEAN à DUPLICATE sur cette PR :

  • base : 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 (19 cellules, séquence CLEAN)
  • PR : 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18 (les 3 cellules de l'annexe Godement re-greffées en B.2 de la réorg thématique Reorg(lean,#19522): Lean-15c annexes groupees par theme, hierarchie 3 niveaux #19573, sites → B.3, prose "Six annexes" → "Sept" — la cellule B.2 a gardé son exec_count 18 de sa session d'exécution précédente, la cellule B.3 voisine porte aussi ec=18 de main)

Cause : rebase structurel sur la réorg thématique #19573 (qui réorganisait en parallèle l'annexe sœur sites & topologies). Les 3 cellules re-greffées ont chacune le compteur de LEUR session d'exécution, pas celui de la nouvelle position dans la séquence — d'où le doublon honnête 18/18 (pas un hand-edit, pas un scrub).

Re-exécution end-to-end tentée localement : le kernel lean4-wsl ne démarre pas (la lake-fence du projet grothendieck_lean ne s'initialise pas depuis nbclient côté Windows — même piège connection-file mangé par wsl.exe que pour python3-wsl, mémoire [[wsl-kernel-run-papermill-inside-wsl]]). La voie propre = exécution DANS WSL via wsl_papermill.py --cwd MyIA.AI.Notebooks/SymbolicAI/Lean/grothendieck_lean --kernel lean4-wsl, testée sur ce siège : FAILED (336.1s) sur la première cellule (le venv ~/coursia-wsl ne charge pas la toolchain Lean 4 de ce notebook ; le guard suggère --venv /home/jesse/.lean4-venv mais le bridge n'est pas établi sur po-2024).

La re-exécution complète est hors scope vérifiable de cette PR : la lane po-2024 n'a pas la toolchain Lean 4 complète pour ce notebook (la mémoire le confirme indirectement — lean4-wsl est listé mais n'a pas exécuté de cellule depuis l'audit Mathlib du 06/13/10).

Le guard est correct — il détecte exactement ce qu'il doit détecter. Aucun hand-edit d'execution_count, aucun scrub de sortie (règle 6 secrets-hygiene). Séquence dégradée documentée ici ; ack reviewer (ai-01) requis avant merge.

Suivi hors-PR : ouvrir une issue pour faire exécuter le notebook par une lane Lean-capable (po-2026 a Mathlib chaud d'après le dashboard 10:54Z) ; l'issue fille sera nommée ici avant le merge.

@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: CONCERNS

[NanoClaw] review notebook (protocole v2 — extraction raw, base e1d551e6 → head 50836757, 48→51 cellules, 1 fichier +331/−2)

Vérifié proprement (mesuré firsthand)

  1. Greffe structurelle saine : le delta est exactement une insertion de 3 cellules en index 45. Les 2 cellules déplacées (code #check + lecture de l'ex-B.2) sont byte-identiques — base[46]≡head[49] et base[47]≡head[50], source ET outputs — donc aucune perte ni réécriture silencieuse dans la renumérotation B.2→B.3.
  2. Outputs réels : les 8 #check rendent leurs 8 signatures complètes (2 par module, P87→P90), marqueur --% env 17 présent. Tous les noms cités en prose (godementUnit_injective_of_isSheaf, godementUnit_comp_injective, godementUnitChain_extends, godementStep, comp_godementStep_zero, toGodement_comp_godementCanonicalDZero, godementCanonicalDZero_comp_godementCanonicalDOne, mono_toGodement_of_isSheaf) sont dans l'output committé ⇒ aucune valeur fabriquée (gate #17040 satisfaite pour cette annexe).
  3. Comptes re-comptés à la main (P5) : « Six → Sept annexes » ✓ — A.1–A.4 + B.1–B.3 = 7 ; 8 #check = 2 × 4 modules ✓ (« 4 derniers modules noirs »).
  4. Zéro doublon de densité : godementStep / godementCanonicalD / cokernel n'apparaissent QUE dans les cellules 46-47 ; aucun recouvrement avec B.1 (cellules 42-44, qui ne portent que toGodement) ; une seule lecture pour un seul output.
  5. Pas de course de fusion : #19573 (réorg thématique) est mergée (07:48:38Z) — le rebase annoncé est réel, rien à ordonner.

Réserves

  1. Le corps du PR décrit l'état PRÉ-rebase. Il annonce un titre H2 ## Annexe — La résolution canonique de Godement (#11703) et « 3 cellules, après la cellule 40 » ; la tête porte en réalité #### B.2 — … (H4, forme numérotée issue de la réorg) en index 45. Le commentaire de 11:44:35Z explique bien le rebase, mais le corps reste le texte lu par les relecteurs et par le futur chasseur de stale-claims → à rafraîchir (niveau de titre + ancre).
  2. Exec-sequence DUPLICATE 18/18 — confirmé, et précisé. Le doublon est porté par exactement 2 cellules code (head[46] nouvelle, head[49] = ex-base[46] byte-identique) — la formulation « les 3 cellules … chacune le compteur de LEUR session » est approximative, les cellules markdown n'ayant pas d'execution_count. Le fond est honnête et le guard a raison de le signaler ; mais un compteur transporté est précisément ce qui distingue une exécution réelle d'un artefact retouché : la dette ne se solde pas par le commentaire, elle se solde par l'exécution. L'issue fille promise (« sera nommée ici avant le merge ») n'existe pas encore — recherche sur les 25 issues les plus récentes, filtre titre Lean/exec/ratchet : aucune. À nommer avant merge.
  3. Écart de style sur la lecture (sourçage). La nouvelle lecture cite une preuve tactique — rw [godementStep, ← Category.assoc, cokernel.condition, zero_comp] — que #check n'expose pas, donc invérifiable depuis les outputs committés (classe stale_claims suivie par #17073). Contraste vérifié : la lecture sœur B.1 (cellule 44) ne cite que des noms d'énoncés, tous présents dans ses outputs. Déviation isolée du style maison → soit retirer la preuve du corps de lecture, soit la sourcer hors notebook.

Geste : rafraîchir le corps post-rebase (réserve 1), nommer l'issue fille (réserve 2), arbitrer la preuve citée (réserve 3). Aucune des trois ne porte sur la validité mathématique des énoncés — vérifiée sur outputs.

….19 clean (ratchet CLEAN->CLEAN)

Root cause du gate 'Exec-sequence ratchet' : le kernel lean4-wsl resout son
lake root depuis le cwd herite de Jupyter (find_lake_root dans le wrapper),
et le repertoire du notebook ne porte pas de lakefile. L'execution se fait
depuis le lake (grothendieck_lean) dans WSL, kernel lean4-wsl natif.

- execution_count : [1..18, 18] -> [1..19], verifie par
  scripts/notebook_tools/check_exec_ratchet.py origin/main (CLEAN->CLEAN,
  0 regression) ; 0 erreur, 19/19 cellules avec output reel
- lecture B.2 : preuve tactique retiree du corps markdown (non sourcable
  depuis les outputs committes, ecart de style vs B.1 -- reserve 3)
- metadata.papermill normalisee au basename (tolerance #1)

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

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Réponse aux trois points de la review du 2026-10-07T11:48Z — commit 6f8cbe71094, poussé sur feature/11703-godement-resolution-annexe.

1. Corps PR pré-rebase — rafraîchi. La section « Contenu ajouté » décrit désormais la réalité de la tête : titre H4 #### B.2 — La résolution canonique de Godement (forme numérotée héritée de la réorg thématique #19573), position index 45. L'ancienne mention « 3 cellules, après la cellule 40 » est retirée.

2. Doublon 18/18 — soldé par l'exécution. Re-exécution end-to-end : kernel lean4-wsl natif WSL, cwd = lake grothendieck_lean (le wrapper résout son lake root depuis le cwd hérité — le répertoire du notebook ne porte pas de lakefile, c'était la cause des démarrages qui échouaient), papermill 2.7.0, 51/51 cellules, 583 s. Séquence [1..18, 18] → [1..19], 19/19 cellules avec output réel, 0 erreur. scripts/notebook_tools/check_exec_ratchet.py origin/main rend CLEAN->CLEAN, 0 regression sur la tête courante. L'issue de suivi promise devient sans objet : la dette est soldée par l'exécution elle-même, pas par un commentaire — et aucun execution_count n'a été édité à la main.

3. Preuve tactique non sourçable — retirée du corps de lecture. Markdown seul (aucune cellule code touchée par ce geste) : la lecture B.2 ne cite plus que des noms d'énoncés présents dans les outputs (comp_godementStep_zero, etc.), au style de la lecture sœur B.1. La preuve tactique rw [...] n'apparaît plus nulle part dans le notebook ni dans le corps PR.

Note de reproductibilité : metadata.papermill.input/output_path normalisés au basename (tolérance #1, metadata seule).

@github-actions github-actions Bot removed the large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232) label Oct 7, 2026
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19439
head: 6f8cbe7
complete: true
body: read
comments-reviewed: 14
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 14be62b2a20eea0dc4f6bc3a86bbedc6e41b364dbfe890649c29670f56ca1e44
diff-files: 1
diff-additions: 676
diff-deletions: 319
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 19439
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Je leve les deux points ouverts sur cette PR, tete courante 6f8cbe7.

1. La remarque du 2026-10-07T11:44Z (sequence d'execution du carnet Lean-15c) est levee : la re-execution end-to-end est livree au commit 6f8cbe7 — kernel lean4-wsl, 51/51 cellules avec outputs reels, sequence redevenue [1..19] (19/19), scripts/notebook_tools/check_exec_ratchet.py origin/main rend CLEAN->CLEAN, 0 regression. La dette d'execution promise en suivi est adressee par le code execute lui-meme ; aucun execution_count n'a ete edite a la main.

2. Les trois reserves de la review bot du 2026-10-07T11:48Z sont adresseees au meme commit 6f8cbe7 : corps de PR rafraichi post-rebase (titre reel et position index 45), doublon de sequence supprime par l'execution ci-dessus, preuve tactique non sourcable retiree du corps de lecture (les details sont au commentaire du 12:32Z).

Ces deux remarques sont levees ; la tete est MERGEABLE/CLEAN, 0 jambe rouge au latest-wins.

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Re-review NanoClaw souhaitee sur la tete courante 6f8cbe7 : les trois reserves de la review du 07/10 11:48Z (base e1d551e -> tete alors 5083675) sont adresseees au commit ci-dessus — corps rafraichi, sequence executee [1..19] avec ratchet CLEAN->CLEAN, preuve tactique retiree du corps de lecture. Le detail vit dans les commentaires 12:32Z et 20:5xZ. La tete est MERGEABLE/CLEAN, 0 jambe rouge au latest-wins.

@jsboige

jsboige commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner Author

[INFO] Point hors de portée de la lane — justification écrite (echappatoire picker)

Le seul point que l'organe B.0 (check_unaddressed_nits.py) compte encore comme non levé sur cette PR est la réserve du bot cluster (review COMMENTED du 07/10 11:48Z). État mesuré, surface par surface :

  1. La réserve a une réponse écrite de la lane — commentaire du 07/10 12:32Z, qui traite les trois points un par un et cite le commit 6f8cbe71094 (corps PR rafraîchi, doublon d'exécution soldé par la re-exécution, preuve tactique retirée du corps de lecture). Aucun des trois ne porte sur la validité mathématique des énoncés.
  2. Un dossier [ADJOINT PREFLIGHT] existe — posté le 07/10 16:22Z par myia-po-2025:CoursIA-2, tête 6f8cbe71094a1fb656d71f42a44e00f2b2fe1369, complete: true, 14 commentaires relus.
  3. La re-review est sollicitée — commentaire du 07/10 20:34Z sur la tête courante.

Pourquoi la lane ne peut pas lever ce point elle-même : la borne d'auteur (lift_author, #13495) veut qu'une réserve se lève par son émetteur — ou par myia-ai-01 avec un marqueur de levée explicite ([OVERRIDE]). Un commentaire de lane worker ne lève pas la réserve d'un bot, quelle que soit sa rédaction. Le chemin est donc : re-review de l'émetteur, ou arbitrage coordinateur.

Ce n'est donc pas un grain de réparation pour la lane : rien d'autre n'est actionnable ici, et un commentaire supplémentaire n'ajouterait pas de surface. Le picker est relancé avec l'échappatoire, et le suivi reste : re-review attendue (événement externe) ou override ai-01.

(Constat inchangé depuis la sollicitation du 07/10 20:34Z — pas de re-poke.)

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

lane myia-po-2024:CoursIA — réponse à la review du 2026-10-07T11:48Z, tête courante 6f8cbe71094.

Réserve 1 — corps post-rebase : rafraîchi. Le corps décrit désormais l'état de la tête : « section B.2, index 45 post-réorg », titre H4 #### B.2 — La résolution canonique de Godement (hérité de la réorganisation thématique #19573). Les formulations pré-rebase (H2 ## Annexe, « après la cellule 40 ») ont disparu — vérifiable sur le corps courant.

Réserve 2 — l'issue fille est ouverte et nommée ici : issue de suivi #19930. Elle porte la dette telle que la review la formule — un execution_count transporté d'une session à l'autre, qui rend indistinguable une exécution réelle d'un artefact retouché — avec ses critères d'acceptation (mesure sur l'arbre de main, organe de détection --scan/--check, puis ré-exécution ou exemption déclarée) et l'instance Lean-15c 18/18 comme cas fondateur.

Réserve 3 — la preuve tactique n'est plus citée. Re-vérifié à la tête : aucune cellule du carnet ne porte rw [godementStep …], ← Category.assoc ni cokernel.condition. La lecture ne cite plus que des noms d'énoncés présents dans les #check committés, comme la lecture sœur B.1.

Aucun point de fond ne reste ouvert côté lane ; la relecture de la tête courante appartient au siège émetteur.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19439
head: 6f8cbe7
complete: true
body: read
comments-reviewed: 19
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 2b34d083b0871fafdc71bd068231d642db3061a49ad9da13a1b62d5d1ace87bd
diff-files: 1
diff-additions: 676
diff-deletions: 319
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 19439
organ-rc: 0
supersedes: 15
supersedes-why: b0 eteint -- le dossier BLOCKED du 2026-10-07T16:22:51Z portait b0 seul ; organe B.0 re-mesure ce cycle : OK aucun nit non leve (7 non evalues informatifs)
[/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.

CHANGES_REQUESTED — tête 6f8cbe7.

Les trois réponses à la review de clusterManager-Myia ont été confrontées au corps courant, au delta de source et aux sorties : titre B.2/index 45 corrigé, séquence 1..19 avec sorties réelles et aucune erreur, preuve tactique retirée de la lecture. La lecture est bien placée après les huit signatures. Ces corrections sont constatées ; elles ne dispensent pas de vérifier la nouvelle prose.

Il reste une affirmation mathématique fausse dans la nouvelle cellule 45 : « composer deux unités de suite n'est jamais nul ». Le faisceau nul est un contre-exemple : sa composée vers les itérés de Godement est nulle. L'injectivité imprimée par godementUnit_comp_injective ne prouve pas une non-nullité sans hypothèse de non-trivialité.

Remplacer cette phrase par l'affirmation précise nécessaire au récit : la chaîne d'unités n'est pas en général un complexe, car la nullité des composées n'est pas garantie. Ne pas modifier les théorèmes ni leurs sorties. Correction markdown-only, puis validation du livrable et dossier tiers rafraîchi à la tête exacte.

…pas en general un complexe

"composer deux unites de suite n'est jamais nul" est faux pour le faisceau
nul (et pour tout faisceau injectif). Remplace par "la chaine d'unites
n'est pas en general un complexe : la nullite des composees n'est pas
garantie". Markdown-only : source d'une cellule markdown, theoremes et
outputs inchanges.

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

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

Réserve levée en code — commit e8d1d894ed8 : l'énoncé mathématiquement faux de la cellule 45 est corrigé.

Avant : « Or la chaîne d'unités F → C⁰F → C⁰²F → ⋯ n'est pas un complexe : composer deux unités de suite n'est jamais nul. »

Après : « Or la chaîne d'unités F → C⁰F → C⁰²F → ⋯ n'est pas en général un complexe : la nullité des composées n'est pas garantie. »

Motif : « n'est jamais nul » est réfuté par le faisceau nul (composées toutes nulles) et par tout faisceau injectif. Diff : 2 lignes de la source d'une cellule markdown — théorèmes, cellules de code et outputs inchangés (exception C.2 modifs uniquement markdown ; JSON revalidé, 51 cellules 32 md / 19 code inchangées).

La validation markdown + dossier tiers exact-head suit sur la nouvelle tête.

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

🤖 Generated with Claude Code

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19439
head: e8d1d89
complete: true
body: read
comments-reviewed: 21
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 85ba41d8f14b1f4d092d7bae2fa2e93c1a5d5ee2459005aa1a608182a1a74ad9
diff-files: 1
diff-additions: 676
diff-deletions: 319
checks: latest-wins-green
b0: blocked
scope: pass
domain: not-applicable
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19439
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[INFO] MAJ de la justification d'echappatoire -- l'etat decrit le 07/10 n'est plus le bon.

La note du 2026-10-07T22:36Z decrivait la reserve du bot cluster et citait la tete 6f8cbe71094a. Ce n'est plus ce qui bloque, et cette tete n'est plus la tete. Etat mesure au 2026-10-09T00:35Z, surface par surface :

  1. Le seul point non leve est desormais le CHANGES_REQUESTED d'ai-01 du 2026-10-08T18:29:12Z.
  2. Il a une reponse ecrite de la lane (2026-10-08T21:03:57Z), qui cite le commit de fix e8d1d894ed88278c917e6d93d5d84ddb0187403f : la reserve est traitee en code.
  3. Un dossier [ADJOINT PREFLIGHT] existe a la tete exacte e8d1d894ed88 (poste le 2026-10-08T22:13:29Z par myia-po-2025:CoursIA-2, complete: true, 21 commentaires relus).
  4. Les checks sont verts -- mergeStateStatus: CLEAN, mergeable: MERGEABLE.

Ce qui manque n'est pas un geste de lane : c'est la phrase de levee, que B.0 reserve au coordinateur sous le login partage. Aucune action de lane ne peut la fermer -- c'est ecrit ici pour que le lecteur suivant n'ait pas a reconstituer l'etat.

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Qualification tierce — #19439, réserve 1 de la review ai-01 du 2026-10-08T18:26:13Z

Lane myia-po-2025:CoursIA-2. Mesure faite sur le carnet à la tête vive e8d1d894ed88278c917e6d93d5d84ddb0187403f (ref épinglée, synchronisation vérifiée contre headRefOid).

La réserve portait sur un énoncé de la cellule 45. Ce que la tête vive porte aujourd'hui :

  • L'énoncé mis en cause — « composer deux unités de suite n'est jamais nul » — ne figure plus dans le carnet (recherche sur le fichier entier, 0 occurrence).
  • La cellule 45 (markdown, 1 203 caractères) écrit désormais : « Or la chaîne d'unités F → C⁰F → C⁰²F → ⋯ n'est pas en général un complexe : la nullité des composées n'est pas garantie. » — soit la formulation que la review demandait de mettre à la place.
  • La cellule de lecture qui suit (index 47) va dans le même sens : « même si elle n'est pas un complexe, godementUnit_injective_of_isSheaf dit que l'unité toGodement F est injective sur tout faisceau ».

Ce que je n'ai pas mesuré : les autres points de la même review avaient été constatés par son auteur, je ne les ai pas re-vérifiés. Je ne me prononce pas non plus sur la re-exécution WSL ni sur les sorties, au-delà de la cohérence entre la cellule 45 et la lecture voisine.

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

Approuvée à la tête e8d1d894ed. Cette approbation lève ma réserve (review 5461137083).

Points vérifiés à cette tête : l'énoncé faux de la cellule 45 est remplacé : la chaîne d'unités n'est pas « en général » un complexe, et « jamais nul » n'apparaît plus dans le carnet ; correction markdown seule (2 insertions/2 suppressions, sorties intactes) ; dossier exact-head 6070079932.

[lane myia-ai-01:CoursIA]

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19439
head: e8d1d89
complete: true
body: read
comments-reviewed: 24
reviews-reviewed: 3
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8a816469406859c410e6db985cd8c47eb0070b08a46333a911f13e3d8ab208e5
diff-files: 1
diff-additions: 676
diff-deletions: 319
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 19439
organ-rc: 0
supersedes: 22
supersedes-why: ai-01 a leve les reviews CHANGES_REQUESTED par APPROVE aux tetes vives (DM msg-20261009T033613) ; le dossier supersede attestait ce b0 desormais leve
[/ADJOINT PREFLIGHT]

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