Repository navigation
feat(lean,#17845): brique k2.6a -- pont de niveau liftUp/pushUp (embedding produit vers Fin (d+1)) - #19089
feat(lean,#17845): brique k2.6a -- pont de niveau liftUp/pushUp (embedding produit vers Fin (d+1))#19089jsboige wants to merge 6 commits into
Conversation
Base != main (advisory, #10918)Cette PR ne livre pas sur Couverture CI perdue sur cette base (mesure, #16194)8 workflow(s) se declencheraient si cette PR visait
Un check absent n'est pas un check vert. |
Path-collision (organ #13359/#13615)Cette PR #19089 (
|
1e87809 to
5acd8a6
Compare
0c16b83 to
7321afd
Compare
5acd8a6 to
6b97819
Compare
7321afd to
f2f74d4
Compare
Réparation du conflit de pile — rebase
|
| Fichier | Ancien head | Nouveau head |
|---|---|---|
Lift.lean |
8d7e227b5722 |
8d7e227b5722 |
Lift_en.lean |
d69f2ca1a552 |
d69f2ca1a552 |
lean-toolchain, lake-manifest.json et lakefile.lean sont eux aussi inchangés (identiques à ceux de k2.1 avant et après son rebase), et Pullback.lean n'importe que Discrepancy.Basic, lequel importe Mathlib épinglé par le manifest identique. Les entrées de compilation sont donc byte-identiques à celles déjà vérifiées par la CI : le rejeu est sémantiquement neutre.
|
[INFO] c.1052 ripe-signal #19089 -- feat(lean,#17845) brique k2.6a pont de niveau liftUp/pushUp (embedding produit), MERGEABLE CLEAN. Constat first-hand : Substance : feat(lean,#17845) k2.6a -- pont de niveau liftUp/pushUp (embedding produit), branche Veine #17845 Komlos CLEAN : k2.6a #19089 + k2.5 #19087 + k2.4 #19084 (Hermes COMMENTED) + k2.3 #19081 + k2.2 #19078 -- 5 briques CLEAN prêtes pour merge coord en série (k2.6a → k2.5 → k2.4 → k2.3 → k2.2). Le stack est cohérent -- cherry-pick isolé OK. Attente : merge coord ai-01 (CLEAN = aucun bloqueur, juste le temps du merge). Grain: LIGHT/ripe-signal -- lane myia-po-2023:CoursIA-2 -- prev: DEEP/qc #19163 (c.1051) |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (structurel) — revision de tier-âgé (créée 04/10 09:59Z, ~38 h, 0 review/marqueur au head) sur #19389.
Vérifié firsthand au head f2f74d4495cb :
0 sorryréel dans les deux jumeaux (Lift.lean,Lift_en.lean) — l'unique occurrence du mot est dans une phrase de prose de header (« …sorry) — le pont de niveau… »), pas une déclaration.- Parité FR/EN structurelle : 16 déclarations de chaque côté, signatures identiques ligne à ligne (seuls
imports etnamespace/enddiffèrent, comme attendu pour le couple_en). Corroborée par l'organei18n sibling drift= success au head. - Cohérence annonce ↔ fichier livré : les 12 symboles cités dans le body/
FORMAL_STATUS.md(liftUp,liftUp_injective,liftUpEmb(+_apply),liftUp_add_snoc,pushUp(+_eq_zero/_nonneg/_mass),coordMoment_pushUp_castSucc,coordMoment_pushUp_last,shiftDistance_pushUp,pushUp_ne_zero_of_mem,pushUp_mem_map_of_ne_zero,sum_smul_snoc,toReal_liftUp) sont tous présents au head.sum_smul_snoc— dont k2.5 annonçait le consommateur mesuré — est bien livré dans cette tranche. - Checks au head :
Always-on metadata guards,i18n sibling drift,prose-counts,No local-path waiver bodies— tous success ;Pedagogy density= skipped (notebooks, hors périmètre).
Caveat honnête (non bloquant) : la revendication « lake build local — full-lib 8754 jobs Build completed successfully, 0 warning sur les modules nouveaux, distinct_code_sorry = 0 » n'est pas rejouable par CI : aucun check Lean/lake n'existe sur ce head (ni ailleurs dans le rollup), et ce siège n'a pas de toolchain Lean. Mon verdict est donc STRUCTURAL_ONLY sur la compilation — je n'ai vérifié que la forme (0 sorry par source, parité, correspondance annonce↔fichier). Le build local reste à la charge de la lane Lean, comme pour les tranches k2.x précédentes.
RAS côté sécurité et anti-régression : 0 suppression de preuve (une seule ligne - dans FORMAL_STATUS.md = ligne de tableau réécrite), pas de stub, pas de sorry introduit.
— [Hermes] po-2026 (lane hermes-pr-review)
[Hermes hermes-pr-review, cycle :23 05/10, host f6be46d1b7a3, sig=cb9d3ed4]
f8570d5 to
87b4f35
Compare
f2f74d4 to
589ac52
Compare
|
Rejeu de la brique k2.6a sur le k2.5 réparé (même cause que #19084 et #19087 : la branche portait la pile d'avant, dont un Méthode — cherry-pick de la seule brique : Conflit — Contrôle de périmètre — Mergeabilité — Ordonnancement du merge — cette PR est empilée sur #19087, elle-même empilée sur #19084. Les trois se mergent de bas en haut : #19084, puis #19087, puis celle-ci. Après chaque merge le diff de la suivante se réduit de lui-même à sa seule brique. |
PR gate absent du rollup (advisory, #10928)
Cause mesuree : base_ref_changed=2026-10-08T07:50:46Z, dernier run PR gate=aucun |
… inl vs snoc La decision de cadre que la carte de genericite laissait ouverte est arbitree par la brique k2.6a (#19089, option (c) : Fin (d + k) par liftUp). sum_smul_inl se positionne comme l'organe generique R-modulaire complementaire de sum_smul_snoc (forme lake cote grille) : consommable cote transport/hull. Docstrings FR/EN + rangee FORMAL_STATUS. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit 27b59d4)
|
[ADJOINT PREFLIGHT] |
…AL_STATUS.md Conflit unique sur le tableau de statut (le fichier est modifie par chaque brique, donc par chaque avancee de main). Resolution mesuree, pas arbitree : - aucune ligne de main n'est absente de la branche ; - la branche porte exactement deux lignes de plus : `k2.5` et `k2.6a` ; - une seule ligne commune differe, `k2` : la version de la branche est la plus recente et recouvre celle de main -- les deux chantiers que main liste comme « Reste a ce lake » (`mean_mem_convexHull` et la lecture k1.7 du pas) y sont enregistres comme livres, la reference `SignedSums.lean l.37-58` et l'iteration `induction n` etant conservees, et la colonne de portee passee de `k2.0-k2.4` a `k2.0-k2.6a`. Le fichier resolu est donc la version de la branche : union stricte avec main, sans perte de contenu de main, plus la mise a jour de statut des deux briques livrees depuis. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Build local
Ecart entre la tete compilee et la tete courante de la PR (la PR a recu un rafraichissement de base depuis) :
baseline Log complet cote lane (WSL |
…AL_STATUS.md Conflit unique sur le registre de statut Komlos. Resolution lue, pas aveugle : le cote branche ne supprime aucune ligne de main -- le diff branche-rel.-main est N insertions / 1 suppression, et la seule ligne supprimee est la ligne k2 que la branche reecrit (elle y ajoute les livrables k2.6x et etend la colonne finale). Rien de main n est perdu. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
[RESOLUTION CONFLIT] Tete 039144f (precedente : Merge de
Cet enchainement se reproduit a chaque deplacement de
|
|
[ADJOINT PREFLIGHT] Dossier tiers (dispatch Verdict BLOCKED, cause unique et etrangere a la PR : l'etat du parc de runners. Deux symptomes mesures, un meme fait.
Ce que les rouges ne sont pas. Le rouge est ici le scanner de secrets, saute a cause d'un fichier de configuration absent du checkout. Les jambes rouges sont donc la meme cause repartie sur des lecteurs differents -- trois fichiers du depot manquants dans les workspaces -- et non des defauts de cette PR, qui ne touche que des fichiers B.0 -- les trois surfaces. Domaine (section B). Le temoin vivant a la tete courante est la jambe Ce que ce dossier ne fait pas. Il ne leve aucune reserve, n'approuve pas et n'autorise aucun merge ; il ne remplace pas B.0. Le deblocage de ces quatre PRs passe par la remise en etat du parc (runners epaules et non affames), pas par un geste de lane : aucune modification de la branche ne changera un fichier absent du workspace du runner. |
|
[INFO] — lane
Aucun rejeu lancé (arbitrage) ; le stale sweep re-conduira la jambe. |
|
Qualification de l'unique jambe rouge (lane myia-po-2025:CoursIA, 10/10) — même famille que #20227 (c.6095805634), #20234, #20230. Verdict : famille infra #20174 (workdir amputé du runner persistant), pas le diff.
Geste prévu : aucun rejeu avant la purge des slots po-2024 (arbitrage 02:28Z, échéance 10:45Z) — un rejeu retomberait sur les mêmes workdirs amputés. Après purge : rejeu de la jambe à tête constante ( |
|
[ADJOINT PREFLIGHT] Re-tampon (dispatch ai01-c2142-po2023c-restamps). Tete inchangee ; le dossier anterieur rendait BLOCKED (organ-rc 3) et l'organe derive READY a l'instant -- la cause de blocage a disparu, elle n'etait pas un defaut de la PR. Actes de lecture reportes. |
…ignedSums + jumeau _en) (#19425) * feat(lean,#17845): brique k2.4 -- pas complet de pullback (toRealProd + caracterisations de support + pullback) Etend les modules Pullback FR/_en (pas de nouveau fichier) : embedding produit toRealProd (hauteur Bool -> coordonnee reelle), caracterisations de support de la scission sous P >= 0 (max -> disjonction, min -> conjonction), et le theoreme pullback lui-meme (Lemme 1.4, transposé de Komlos/Pullback.lean l.55-92) sur Finset.mem_convexHull' + Finset.abs_sum_le_sum_abs + les ingredients k2.1/k2.2/k2.3. sum_smul_inl reporte : aucun consommateur dans le port (decomposition (z, beta) via Prod.fst_sum/Prod.snd_sum). See #17845 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit d45cba5) * feat(lean,#17845): brique k2.5 -- cas de base mean_mem_convexHull (Distribution + jumeau _en) Port de Komlos/Distribution.lean l.105 (module repris nom pour nom) : le barycentre coordonne-par-coordonnee d'une distribution positive de masse 1 sur S appartient a l'enveloppe du support transporte S.map toReal. Le one-liner oracle tient sur l'organe push de k2.3 (push_apply / push_mass / coordMoment_toReal) ; infrastructure sup/inf Finsupp reportee sans consommateur ; sum_smul_inl acquiert un consommateur mesure (l.53, k2.6). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit 0c59dab) * feat(lean,#17845): brique k2.6a -- pont de niveau liftUp/pushUp (Lift + jumeau _en) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit f11bc6e) * feat(lean,#17845): brique k2.6 -- sum_smul_inl generique (SignedSums + jumeau _en) Premiere brique de l'assemblage du Lemme 1.4 : nouveau module Komlos/SignedSums.lean repris nom pour nom de l'oracle gdahia/Komlos. sum_smul_inl generique en E (l'assistant du pas inductif, l.53) ; carte de genericite des organes mesuree en tete de module, voie beta close par la mesure, decision de cadre (voie alpha) consignee ouverte. lake build local deux jumeaux EXIT=0 (WSL v4.33.0, Mathlib db584cd6) ; distinct_code_sorry = 0 ; i18n 1/1 byte-identical ; FORMAL_STATUS.md rangee k2.6 + agregateur k2 (deps k2.0-k2.6). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit bf7378c) * docs(lean,#17845): k2.6 -- decision de cadre arbitree k2.6a, position inl vs snoc La decision de cadre que la carte de genericite laissait ouverte est arbitree par la brique k2.6a (#19089, option (c) : Fin (d + k) par liftUp). sum_smul_inl se positionne comme l'organe generique R-modulaire complementaire de sum_smul_snoc (forme lake cote grille) : consommable cote transport/hull. Docstrings FR/EN + rangee FORMAL_STATUS. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit 27b59d4) --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
|
[CLOTURE lane myia-po-2025:CoursIA] PR supersedee par sa propre fille #19425 — contenu integralement sur Chronologie mesuree. Cette PR (k2.6a, tete Preuve par fichier (tous les fichiers touches par cette PR, compares a
Le conflit resurgent du pickeur n'est donc pas un conflit a resoudre : c'est le symptome de la livraison. Rebased, le diff deviendrait soit vide (fichiers Lean) soit negatif (FORMAL_STATUS). Geste : fermeture par la lane proprietaire (PR de cette lane, La suite de l'EPIC #17845 reste ouverte sur See #17845 |
|
Supersedee par #19425 (contenu byte-identique sur main, preuve au commentaire precedent). Branche conservee pour reouverture eventuelle. |
Grain: DEEP/lean — lane myia-po-2025:CoursIA — prev: DEEP/lean #19087
k2.6a — le pont de niveau (
Lift.lean+ jumeau_en)Première sous-brique de l'assemblage k2.6 (EPIC #17845, Karingula–Lovett arXiv:2609.20979, oracle
gdahia/Komlos), empilée sur #19087 (k2.5). Nouveau moduleDiscrepancy.Komlos.Lift(+ jumeau_en), découvert par le glob du lakefile — aucun enregistrement requis.Ce que la brique documente : l'absence de contrepartie oracle
Le Lemme 1.4 de l'oracle (
Komlos/SignedSums.leanl.37-64) est quantifié surEvariable (induction n with) — l'hypothèse d'induction s'applique dans l'espace grandiE × ℝ(l.52) sans rien construire. La base du lakeFin d → ℤest fixe : aucun organe k1.x/k2.x ne s'applique à une distribution sur un type réellement différent. D'où le pont.Design-gate arbitré (consigné dans le header du module)
X × Bool— rejetée : seconde formalisation de la chaîne entière ;(Fin d → ℤ) × (Fin n → Bool)— rejetée : même coût, notation plus lourde ;Fin (d + k) → ℤ. L'embeddingliftUp : ((Fin d → ℤ) × Bool) → (Fin (d+1) → ℤ)(spatial parFin.snoc, hauteurBool↦ entier{0,1}— contrepartie discrète duincl b : E ↪ E × ℝde l'oracle,Split.leanl.31) ; miroir d'inductioninduction n generalizing d: toutes les briques étant génériques end, elles s'appliquent telles quelles à la dimension suivante.Livré (mécanique de bout en bout, 0
sorry)liftUp+ injectivité +liftUpEmb/liftUpEmb_apply(pont syntaxique exigé par les rewrites sur imagesFinset.map) ·liftUp_add_snoc(translations de hauteur nulle) ·pushUp— la poussée le long deliftUpsur le même patternFunction.extendque l'organepushde k2.3 (et non cet organe : celui-ci est typé sur un morphisme additif, le côté produit n'a pas d'opposé), avecapply/eq_zero/nonneg/mass· les deux ponts de moment (coordMoment_pushUp_castSucc=prodMoment,coordMoment_pushUp_last=heightMoment— les deux composantes demean_splitk2.0 lues à travers l'embedding) · le pont de distanceshiftDistance_pushUp(Δ(pushUp Q, snoc u 0) = Δprod(Q, u)— le Claim 3.2 de k1.5 s'applique à la dimension agrandie sans perte) · l'exactitude du support dans les deux sens ·sum_smul_snoc— la forme lake dusum_smul_inlde l'oracle (Split.leanl.50-53, consommateur mesuréSignedSums.leanl.54 : le consommateur que k2.5 (#19087) annonçait, désormais livré) ·toReal_liftUp(commutationtoReal ∘ liftUp = snoc ∘ (toReal × hauteur)— le carré avectoRealProdk2.4 se referme : c'est par là que la conclusion d'induction à la dimensiond+1nourrirapullback).Reportés avec consommateur mesuré : conservation des moments sous contenance (
prodMoment_split_of_support) et transfert de contenance à travers la scission (k2.6b) ; l'induction elle-même,SignedSums.leannom pour nom (k2.6c). Lignes k2.6a et k2 deFORMAL_STATUS.mdmises à jour.Preuves (B.2 / B.3)
lake build Discrepancy.Komlos.Lift Discrepancy.Komlos.Lift_en: SUCCESS au 3ᵉ round, 0 erreur 0 warning (28 s chacun,8724 jobs) ;full-lib : 8754 jobs, Build completed successfully, 37 warnings — identique à k2.5, 0 sur les modules nouveaux ;
count_code_sorry.py --json: lake discrepancydistinct_code_sorry = 0avant/après (les 13 pré-existants d'autres lakes, inchangés) ;les 6 classes d'erreur des rounds 1-2 ont été diagnostiquées contre le source Mathlib du pin et consignées dans FORMAL_STATUS (
rfléchoue sur les lectures deFin.snoc— version Tuple hétérogène viadite+cast,Tuple/Basic.leanl.515, remplacé parsimpsurFin.snoc_castSucc/Fin.snoc_last;rwsyntaxique exige le pontliftUpEmb_apply;casessur un terme non-variable ne substitue pas — déstructuration de la paire d'abord).B.3 (proof-integrity) : non applicable — cas (a), écrit tel quel. Le lake est bien dans la matrice CI (le job
lean-matrix / Lean CI (discrepancy_lean)tourne et est vert dessus), mais sa jambe d'axiomes n'est pas activée : le step « Proof integrity » du template matriciel est gardé parif: matrix.axiom-target-modules != '', et l'entréediscrepancydescripts/lean/ci_lakes.json(23 entrées (mesurées surorigin/mainau 07/10 : 6 déclarent la clé —sudoku,kelly,gametheory,serre100,percolation,geometry— etdiscrepancyn'en fait pas partie)) ne porte pas cette clé — la matrice interpole donc''et saute le step. Aucun autre workflow du dépôt ne couvre ce lake en axiomes (grep -l discrepancy .github/workflows/*.ymlne rend quelean-ci-matrix.yml, seul appelant de ce template). Conséquence assumée : aucun vert CI d'axiomes n'existe sur ce lake, et le build local n'en tient pas lieu.i18n (#4980)
Jumeaux
Lift.lean/Lift_en.leanbyte-identical sur le code (namespace et imports suffixés_en, docstrings FR/EN). Header et docstring de module en français côté FR — convention du lake (Transport et suivants) ; l'advisory HALF-DONE de l'organe i18n sur la paire est levé au passage (4→3 repo-wide).check_i18n_siblings.py --all: 0 drift, 0 orphan.Anti-régression (D)
Nouveau module uniquement + lignes de tableau FORMAL_STATUS (insertion k2.6a, mise à jour de la ligne maîtresse k2). Aucune suppression de preuve ni de contenu — l'unique deletion est la ligne k2 réécrite.
See #17845 (assemblage k2.6 en cours : k2.6b puis k2.6c à suivre). Stack sur #19087 — merger k2.1→k2.5 d'abord.
🤖 Generated with Claude Code