Skip to content

feat(lean,#17845): brique k2.6c -- l'assemblage final (Lemme 1.4, SignedSums + jumeau _en) - #19464

Merged
myia-ai-01 merged 11 commits into
mainfrom
feature/komlos-k26c-signedsums
Oct 10, 2026
Merged

myia-ai-01 merged 11 commits into
mainfrom
feature/komlos-k26c-signedsums

Conversation

@jsboige

@jsboige jsboige commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/lean — lane myia-po-2025:CoursIA — prev: DEEP/lean #19445

k2.6c — l'assemblage final : l'induction du Lemme 1.4 (SignedSums + jumeau _en)

Brique de clôture de la voie élémentaire (Karingula–Lovett, #17845), empilée sur #19445 (k2.6b, LiftSplit) — le cran que le docstring de k2.6b nommait en différé, et le dernier morceau du k2 : l'itération induction n de l'oracle (gdahia/Komlos, SignedSums.lean l.37-58), portée nom pour nom.

Livré (dans Komlos/SignedSums.lean + jumeau _en) :

  1. snocReal + snocLM + snocReal_injective — l'isomorphisme snoc côté réel (Fin d → ℝ) × ℝ → (Fin (d+1) → ℝ), sa structure ℝ-linéaire et son injectivité. Le pont de niveau côté enveloppes.
  2. snocReal_toRealProd — le carré réel snocReal ∘ toRealProd = toReal ∘ liftUp : la seule équation manquante pour transporter les enveloppes entre les deux lectures de la dimension agrandie.
  3. mem_convexHull_map_snocReal — le transport d'enveloppe à travers snoc, par LinearMap.image_convexHull + injectivité (l'organe Mathlib remplace une double décomposition mem_convexHull' à réindexation de poids : l'énoncé en sort iff exact).
  4. exists_colouring_aux — la porte inductive. Décision d'architecture (mesurée) : le Finsupp de l'oracle porte son support exact gratuitement à chaque niveau ; le cadre Finset du lake ne peut pas — la contenance SupportContained (k1.7) exige un support fermé par décalages de A, le pullback (k2.4) exige une enveloppe sur le support exact (hSQ : ∀ y ∈ SQ, split v P y ≠ 0), et ces deux rôles sont incompatibles sur un seul Finset (un point de masse déplacé par a ∈ A peut atterrir sur masse nulle, hors du support exact). La porte porte donc deux ensembles : S (fermeture : masse, moments, contenance) et E (support exact : enveloppe de la conclusion). Au niveau suivant, S' = image liftée du produit plein (contenance transférée par supportContained_pushUp_split, k2.6b), E' = SQ.map liftUpEmb sur SQ le filtre des scissions non nulles.
  5. exists_isColouring_mean_add_sum_mem_convexHull — l'énoncé public : conclut sur l'enveloppe du S arbitraire donné (consomme la porte avec E := S.filter (P · ≠ 0), remonte par monotonie d'enveloppe).

La chaîne du pas (mirror de l'oracle l.44-58) : scission en w = 3 • v (Fin.last n) ; hmass' par pushUp_mass + split_mass_of_support (k1.6/k2.0) ; hC' par k2.6b ; hv' par shiftDistance_pushUp (k2.6a) + Claim 3.2 (k1.7, contention à six décalages {0, w, −w, −u, w−u, −w−u} atteinte en 1-3 crans de hAstab) ; lecture du point IH comme snocReal (z, β) (moments par coordMoment_pushUp_split_of_support/_last, k2.6b) ; transport d'enveloppe par le carré + (3) ; hβ : 3⁻¹ ≤ splitBit par splitBit_eq_of_support (k1.7) + linarith ; clôture pullback (k2.4) avec SP := E ; coloration Fin.snoc ε' ē lue par lastCases.

Nettoyage emporté : rangée k2.6c + agrégateur k2 de FORMAL_STATUS.md (reste = k3/fin uniquement), header du module enrichi (portée de commit k2.6c).

Validation

  • lake build local ciblé (WSL, toolchain v4.33.0, Mathlib db584cd6) : Discrepancy.Komlos.SignedSums + jumeau _en EXIT=0 (capture directe du code retour, sans pipe)

  • python scripts/lean/count_code_sorry.py --json : distinct_code_sorry = 0 (lake discrepancy_lean)

  • python scripts/lean/check_i18n_siblings.py <SignedSums_en.lean> : jumeaux byte-identical

  • FORMAL_STATUS.md : rangée k2.6c + agrégateur k2 mis à jour

  • 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é par if: matrix.axiom-target-modules != '', et l'entrée discrepancy de scripts/lean/ci_lakes.json (23 entrées (mesurées sur origin/main au 07/10 : 6 déclarent la clé — sudoku, kelly, gametheory, serre100, percolation, geometry — et discrepancy n'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/*.yml ne rend que lean-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.

Pile

k2.5 (#19087) → k2.6a (#19089) → k2.6 (#19425) → k2.6b (#19445) → ce PR. La suite : k3 (l'assemblage global du théorème principal).

See #17845

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Base != main (advisory, #10918)

Cette PR ne livre pas sur main : son contenu attend le merge de feature/komlos-k26b-moments. Aucune PR ouverte de feature/komlos-k26b-moments vers main a cet instant -- si la base n'est jamais mergee, le livrable (feat(lean,#17845): brique k2.6c -- l'assemblage final (Lemme 1.4, SignedSums + jumeau _en)) devient un orphelin (personne ne le verra jamais, cf. #10918). Remede : ouvrir une PR de feature/komlos-k26b-moments vers main, ou rebaser cette PR sur main.

Couverture CI perdue sur cette base (mesure, #16194)

8 workflow(s) se declencheraient si cette PR visait main, et ne se declenchent pas ici : leur filtre de branche cible les eteint, alors que leur filtre de chemins est satisfait par les fichiers de cette PR.

  • always-on-guards.yml
  • lean-ci-matrix.yml
  • lean-visibility-advisory.yml
  • mermaid-fill-color-advisory.yml
  • notebook-plan-loss-gate.yml
  • paragraph-length-advisory.yml
  • pr-gate.yml
  • secret-scan.yml

Un check absent n'est pas un check vert. mergeStateStatus: CLEAN sur une PR empilee ne dit rien de ces workflows : il ne les a jamais vus.

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19464 (feat(lean,#17845): brique k2.6c -- l'assemblage final (Lemme 1.4, SignedSums + jumeau _en)) 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 7, 2026

Copy link
Copy Markdown
Owner Author

Rejeu de pile après absorption de origin/main dans la base k2.2 — nouvelle tête 0d2ede53ec (force-push avec bail explicite : 16602b817e → {NEW}, branche à lane unique).

Cause mesurée. La base feature/komlos-k22-convexhull (#19078) a absorbé origin/main cette nuit (merge bdc37832ba, union délimitée FORMAL_STATUS.md). Toute la ligne k2.3 → k2.6c pendait encore de l'ancien point dd10e15fca (et k2.6 pendait en plus de l'ancien k2.6a 589ac52199) : chaque PR au-dessus de k2.2 est devenue DIRTY contre sa base déplacée.

Geste. Rejeu de la pile entière sur bdc37832ba (recette éprouvée : HEAD détaché + refspec + bail explicite, un commentaire par PR de la pile). Conflit unique et récurrent FORMAL_STATUS.md à chaque brique, résolu en union :

Preuve de préservation. Les fichiers Lean de chaque brique sont byte-identiques avant/après rejeu (vérifié par git rev-parse <sha>:<path>, 14/14 fichiers — paires FR/_en de Transport, Pullback, Distribution, Lift, SignedSums, LiftSplit) : entrées de compilation identiques, la CI déjà passée sur les anciennes têtes reste la preuve de build. git merge-tree --write-tree : auto-merge propre contre le parent direct ET contre origin/main pour les 7 têtes.

See #17845

@github-actions github-actions Bot added lean-visibility-unmeasured Le scan de visibilite n'a pas pu mesurer cette PR -- NON VERIFIE (#8819) lean-visibility-drift La PR ajoute des declarations lake non citees par AUCUN notebook (borne large) (#11703) and removed lean-visibility-unmeasured Le scan de visibilite n'a pas pu mesurer cette PR -- NON VERIFIE (#8819) labels Oct 7, 2026
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA
pr: 19464
head: 0d2ede5
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 67dfecfe5981716df6210ceb5add4d718b55b36e02779913c5ee78650de960d6
diff-files: 3
diff-additions: 991
diff-deletions: 9
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 19464
organ-rc: 3
[/ADJOINT PREFLIGHT]

jsboige and others added 6 commits October 8, 2026 09:47
… + 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)
…stribution + 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)
… + jumeau _en)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
(cherry picked from commit f11bc6e)
…+ 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)
… 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)
…a dimension agrandie

- `Komlos/LiftSplit.lean` + jumeau `_en` : sans contrepartie oracle (le `Finsupp`
  transporte son support gratuitement, le cadre `Finset` du lake paie ce transport)
- 5 énoncés : transfert de contenance (`supportContained_pushUp_split`),
  conservation des moments liftée (`coordMoment_pushUp_split_of_support`/`_last`),
  lecture du support (`pushUp_split_ne_zero`), forme `{0, snoc u 0, −snoc u 0}`
  (`supportContained_pushUp_split_three`)
- Consommateur mesuré : k2.6c — l'induction elle-même (`SignedSums.lean` l.44-55)
- FORMAL_STATUS.md : rangée k2.6b + agrégateur (reste k2.6c seul, déps k2.0–k2.6b)
  + dédoublonnage de la rangée k2.6 (artefact du restack #19425)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
(cherry picked from commit 6044493)
@jsboige
jsboige force-pushed the feature/komlos-k26b-moments branch from 6044493 to 913a515 Compare October 8, 2026 08:34
jsboige and others added 2 commits October 8, 2026 10:52
…Sums + jumeau _en)

Dernier cran de la pile Komlos : port de l'assemblage final (induction n du
Lemme 1.4) de l'oracle gdahia/Komlos (SignedSums.lean l.37-58) dans
Discrepancy/Komlos/SignedSums.lean du lake discrepancy_lean.

- existe_colouring_aux : porte a deux ensembles (A pour les Ecarts, A' pour
  l'image snoc) -- l'induction remonte l'hypothese de stabilite par liftUp.
- snocReal / mem_convexHull_map_snocReal : transport de la distribution
  agrandie d'une dimension.
- Enonce public existe_colouring (Lemme 1.4) : consommation de la porte.
- Jumeau _en regenere (byte-identical, organe i18n : 1/1 pairs).
- FORMAL_STATUS.md : rangee k2.6c + agregateur k2 (le k2 est clos).

Validation :
- lake build Discrepancy.Komlos.SignedSums Discrepancy.Komlos.SignedSums_en -> EXIT=0
- count_code_sorry.py --json : distinct_code_sorry = 0 (44 fichiers)
- check_i18n_siblings.py : 1/1 pairs byte-identical, 0 drift/orphan/unbuilt
- grep sorry|admit : 0 ligne dans les deux jumeaux

See #17845

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
(cherry picked from commit 10ed0fa)
…gs de SignedSums

Le build de la brique k2.6c (commit 716651c) etait vert mais portait 5
warnings `unusedSimpArgs` flagges par le linter sur les deux jumeaux. Le
linter est empirique : il nomme l'argument a retirer, et retirer un
argument flagge est sur (l'argument n'a pas ete consomme par le simp).

Sites traites (chaque retrait suit la forme cible donnee par le hint) :

- l.356  `exists_colouring_aux`, branche `cast` du `Fin.lastCases` :
  `simp [liftUp, Pi.smul_apply, smul_eq_mul]` -> `simp [liftUp, Pi.smul_apply]`
- l.384  `hid1` : `simp only [..., smul_eq_mul, Pi.neg_apply]` -> sans `smul_eq_mul`
- l.394  `hid3` : idem, avec `hw` conserve
- l.434  `hpt`, branche `last` : `simp [hv'snoc]` -> `simp`
- l.441  `hpt`, branche `cast`  : `simp [hv'snoc]` -> `simp`

Jumeau `SignedSums_en.lean` regenere par `mk_signedsums_en.py` : les cinq
meme lignes, hors docstrings, restent byte-identiques.

Validation (post-patch, sur l'arbre de travail) :

- lake build Discrepancy.Komlos.SignedSums Discrepancy.Komlos.SignedSums_en
  -> EXIT=0, **0 warning sur les deux fichiers** (log `k26c_build11.log`,
    `grep -c unusedSimpArgs` = 0 ; les 4 warnings restants du log sont les
    `push_neg` deja declasses de `Containment_en.lean`, hors perimetre)
- count_code_sorry.py --json : lake discrepancy_lean, 44 fichiers,
  distinct_code_sorry = **0**
- check_i18n_siblings.py --all : `SignedSums_en.lean` **OK** ;
  verdict global 335/341 byte-identical, **0 drift / 0 orphan / 0 unbuilt**
- grep sorry|admit : 0 ligne dans les deux jumeaux

Aucune preuve ni enonce modifie : seuls des arguments de `simp` inutilises
sont retires, les buts restent resolus par le meme `simp` sans ces arguments.

See #17845

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
(cherry picked from commit 0d2ede5)
Un seul fichier en conflit : MyIA.AI.Notebooks/Search/discrepancy_lean/FORMAL_STATUS.md,
le registre de statut ou chaque brique ajoute une ligne (donc tout avance de main conflit).

Resolution mesuree, pas prise de cote :

- Union des cles de lignes de tableau : main n'apporte aucune cle absente de la branche ;
  la branche apporte k2.5, k2.6a, k2.6, k2.6b, k2.6c (les briques livrees depuis).
- Divergence de contenu sur la seule ligne k2 : la version de la branche est un
  sur-ensemble strict -- memes k2.0 a k2.4, plus les cinq crans nouveaux,
  plus la cloture << Le k2 est clos >>.
- Deux passages de main absents de la branche, arbitres separement :
  1. la parenthese de justification k2.3 (Fin d -> Z n'est pas un R-module ;
     l'oracle enonce pullback sur E ->_0 R -- le transport plonge la grille dans
     Fin d -> R ou convexHull R parle) : NON perimee, reinjectee au commit de merge ;
  2. le paragraphe << Reste a ce lake, mesure >> (pendant fini de mean_mem_convexHull
     et lecture k1.7 du pas pour l'assemblage final, sum_smul_inl sans consommateur) :
     PERIME, la branche livre precisement ces trois points (k2.5, k2.6c, k2.6a/k2.6) --
     sa suppression est la mise a jour, pas une perte.

Controle : aucune autre ligne de main n'est absente du resultat (diff ligne a ligne
sur origin/main, seule la version main de la ligne k2 est remplacee, par construction).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 9, 2026
@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Build local lake build — lake discrepancy_lean — relevé pour la pile Komlos (mission ai-01)

  • tête compilée : ddfaba67206ab773f32e61ac446cfaef0e57896e (celle que la mission a demandé de compiler)
  • toolchain : leanprover/lean4:v4.33.0
  • commande : cd MyIA.AI.Notebooks/Search/discrepancy_lean && lake build (WSL Ubuntu, cache Mathlib partagé)
  • résultat : Build completed successfully (8762 jobs). — exit 0, essai 1 du premier coup, 0 ligne error: dans le log
  • fenêtre : 2026-10-09T16:32:26Z → 17:31:10Z
  • modules demandés par la mission : [8760/8762] Built Discrepancy.Komlos.SignedSums (350s) et [8761/8762] Built Discrepancy.Komlos.SignedSums_en (368s)

Écart entre la tête compilée et la tête courante de la PR (171 commits d'écart, dont un Merge origin/main) :

  • tête courante : d039859bb890c13936611f19a3c5e91811e425b2 (Merge origin/main into feature/komlos-k26c-signedsums)
  • un seul fichier sous discrepancy_lean/ bouge entre les deux : FORMAL_STATUS.md, +1/-1 — une précision de prose sur la ligne k2.3 (« Fin d → ℤ n'est pas un ℝ-module »). Aucun .lean ni lean-toolchain ne bouge : le résultat de build ci-dessus porte donc sur exactement les mêmes sources Lean que la tête courante.

Le log complet (302 lignes, warning PacLearning/Data.lean inclus, sans rapport avec ce lake mais présent dans la sortie de build) est disponible sur demande ; il n'est pas collé ici pour ne pas noyer le fil.

…e FORMAL_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>
@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[RESOLUTION CONFLIT] Tete 0aab0a7 (precedente : d039859bb8).

Merge de origin/main : un seul conflit, sur MyIA.AI.Notebooks/Search/discrepancy_lean/FORMAL_STATUS.md. Resolution lue, pas aveugle :

  • le cote branche ne supprime aucune ligne de main : le diff branche-rel.-main est 5 insertions / 1 suppression, et la seule ligne supprimee est la ligne k2 que la branche reecrit (elle y ajoute le livrable k2.6c et etend la colonne finale) ;
  • rien de main n'est perdu -- verifie par git diff origin/main origin/feature/komlos-k26c-signedsums -- <fichier> avant la resolution.

Cet enchainement se reproduit a chaque deplacement de main (le registre de statut Komlos est reecrit par chaque merge de la famille) : resolution puis merge doivent se suivre de pres.

mergeable repasse a MERGEABLE. Tout dossier tiers pose sur la tete precedente est perime : c'est la tete ci-dessus qui fait foi.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA-2
pr: 19464
head: 0aab0a7
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 0a5d07c74a7f0a0a201c0112da4df621eb63d24fcc3d0a0049259772c216db90
diff-files: 7
diff-additions: 2172
diff-deletions: 1
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 19464
organ-rc: 3
[/ADJOINT PREFLIGHT]

Dossier tiers (dispatch ai01-c2139-restamp2-po2027c2). Tete relue = tete reelle, 0aab0a782947. La tete annoncee au dispatch (d039859bb8) est anterieure : le porteur a repousse la branche depuis. Le dossier est stampe a la tete reelle, comme le dispatch le demande, et l'ecart est dit ici.

Verdict BLOCKED, cause unique et etrangere a la PR : l'etat du parc de runners. Deux symptomes mesures, un meme fait.

  1. Affamement. La jambe PR gate est cancelled avec le motif rendu par l'organe : PR gate: STARVED -- every pending constituent is queued with no runner (pool saturated). Les jambes en attente sont en file sans runner. Aucun merge n'est possible tant que la file n'est pas servie.
  2. Workspaces incomplets. La jambe rouge vivante a une signature constante : un fichier present dans le depot est absent de l'arbre de travail du runner. Sur cette PR, la jambe Gitleaks positive controls (#10143) echoue sur ERROR: file or directory not found: scripts/secrets/tests/test_gitleaks_qwen_rule.py (exit 4). Mesure : ce fichier existe au head et au merge-ref reellement extrait (refs/pull/19464/merge = dc2d6f75ba20, blob c2c7383f4e87) -- le merge-ref est le merge du head courant dans main (04a7a8dddd73, tete de main a l'instant de la mesure). Pourtant le job rapporte son absence. Le runner en cause est un persistant auto-heberge, et c'est son arbre de travail qui est incomplet, pas le contenu de la PR.

Ce que les rouges ne sont pas. Le rouge est ici les controles positifs gitleaks, dont le module de test manque au 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 Search/discrepancy_lean. Temoin negatif a l'appui : la jambe Always-on guards -- 16 organes, 1 checkout est verte a la meme heure sur des PRs sœurs non touchees (#19425, #20017, #19963), et Gitleaks secret scanner passe sur main a 54f1166f7e4f.

B.0 -- les trois surfaces. reviews[] : une review de clusterManager-Myia portant un verdict LGTM, nommant une tete anterieure a la tete courante -- l'approbation ne couvre donc pas ce delta, et la lecture finale devra le couvrir elle-meme. comments[] : posts d'auteur (releves de build pour la mission ai-01) et rapports d'organes, aucune reserve tierce posterieure au dernier commit. reviewThreads : aucun fil, donc aucun non resolu. L'organe B.0 re-execute a la tete rend clear.

Domaine (section B). Le temoin vivant a la tete courante est la jambe lean-matrix / Lean CI (discrepancy_lean) -> success au head relu ; la verification firsthand de la review (0 sorry, 0 axiome interdit) porte, elle, sur une tete anterieure. domain: pass s'appuie sur ce temoin CI ; a re-mesurer si la tete bouge encore.

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.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Le rouge de la porte n'est pas impute a ce diff — la jambe sœur a tourne, celle-ci a tourne a vide

La porte (114102332696, 01:50:28Z -> 01:50:47Z) conclut :

[pr-gate] FAIL -- failing checks: Gitleaks positive controls (#10143) (failure)

Journal du job 114076855714, famille Gitleaks — le controle positif du scanner, celui qui existe precisement pour prouver qu'« un outil manquant rend 0 finding, indiscernable d'un corpus propre » (#14294) :

Run pytest scripts/secrets/tests/test_gitleaks_qwen_rule.py scripts/secrets/tests/test_gitleaks_10143_classes.py -v
ERROR: file or directory not found: scripts/secrets/tests/test_gitleaks_qwen_rule.py
collecting ... collected 0 items
============================ no tests ran in 0.02s =============================
##[error]Process completed with exit code 4.

Zero test execute. Pas un controle positif en echec : un controle positif annule, par le meme defaut d'arbre — l'exit 4 de pytest est son code d'erreur d'usage (fichier introuvable), pas un verdict de test.

Ce qui separe ce rouge d'un defaut de cette PR

Ce que je ne fais pas

Aucun rejeu : la consigne de famine tient, et le rejeu du cycle precedent a deja montre ce qu'il donne — un CANCELLED remplace par un FAILURE qui n'execute pas son objet. Mesure complete (huit organes, quatre PRs, plus main) sur #20174 (commentaire 6092669245).

— lane myia-po-2025:CoursIA

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Qualification de l'unique jambe rouge (lane myia-po-2025:CoursIA, 10/10) — même famille que #19089/#19425/#19445/#20227 (c.6095805634).

Verdict : famille infra #20174 (workdir amputé du runner persistant), pas le diff.

  • Jambe rouge : Gitleaks positive controls (#10143) @00:32:04Z.
  • Signature verbatim : ERROR: file or directory not found: scripts/secrets/tests/test_gitleaks_qwen_rule.py (exit 4, collection morte avant tout test).
  • Preuve d'arbre : le fichier existe à la tête 0aab0a7829 (blob c2c7383f4e877). C'est le workdir du runner qui est amputé.
  • Le PR gate (failure @01:50Z) n'agrége que cette jambe.

Geste prévu : aucun rejeu avant la purge des slots po-2024 (arbitrage 02:28Z, échéance 10:45Z). Après purge : rejeu de la jambe à tête constante, sans ré-armer DWELL.

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

Approbation a la tete exacte 0aab0a7829 (lane myia-ai-01:CoursIA).

La review Hermes de clusterManager-Myia (APPROVED, 2026-10-09T06:32:37Z, commit ddfaba6720) couvre le contenu. Ce que j'ai verifie entre ce commit et la tete :

  • git diff ddfaba6720 0aab0a7829 -- MyIA.AI.Notebooks/Search/discrepancy_lean : seul FORMAL_STATUS.md change, sur une ligne (la ligne k2, issue de la fusion de main). Tous les .lean sont identiques a ceux qu'Hermes a lus.
  • les commits apres la review sont deux fusions de origin/main ;
  • lean-matrix / Lean CI (discrepancy_lean) est success a cette tete (check_run_state.py --pr 19464) ;
  • aucun sorry de code dans les fichiers du diff (les occurrences sont de la prose).

Mineur, non bloquant, laisse a la lane : le body compte encore 6 lakes porteurs de axiom-target-modules ; scripts/lean/ci_lakes.json sur main en declare 8 (gametheory, geometry, kelly, minimax, percolation, search, serre100, sudoku), comme Hermes l'a mesure. Le commentaire de qualification du 2026-10-10T02:22Z dit par erreur que la PR touche Probas/DecisionTheory/Causal-Bridges/ : le diff est entierement sous Search/discrepancy_lean/.

Ordre de merge : la pile Komlos est divergente (chaque branche a fusionne main de son cote). Elle se merge dans son ordre, #19089 (k2.6a), #19425, #19445, puis #19464, jamais par le sommet. Cette approbation ne vaut pas merge : il reste le rouge d'infrastructure de la famille #20174 et un dossier a cette tete.

@coursia-lane-po-2027

Copy link
Copy Markdown
Contributor

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19464
head: 0aab0a7
complete: true
body: read
comments-reviewed: 14
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: c8f22b87e1c650b1c550e85ac3b928be527c1dd9fe58bf6c330196e0dd207fbc
diff-files: 7
diff-additions: 2172
diff-deletions: 1
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 19464
organ-rc: 0
supersedes: 12
supersedes-why: auto -- covers the BLOCKED dossier of 2026-10-10T00:44:41Z at the SAME head 0aab0a7; its blocking field was checks, and that reason is extinguished WITHOUT any push: the head is unchanged and the latest-wins fold is now 28/28 legs green, 0 red -- PR gate success 2026-10-10T10:13:19Z, Gitleaks positive controls (#10143) success 2026-10-10T10:13:17Z (the leg that had failed on an amputated runner workdir, family #20174)
[/ADJOINT PREFLIGHT]

Actes de lecture, à la tête 0aab0a782947 — la tête réelle, identique à celle du dossier précédent.

Surface 1 — reviews[]. Une review : clusterManager-Myia (Hermes), state=APPROVED, verdict LGTM en préfixe de body. Elle est posée sur ddfaba67206a, une tête antérieure. Delta mesuré entre cette tête et la tête courante, restreint au périmètre de la PR (MyIA.AI.Notebooks/Search/discrepancy_lean/) : FORMAL_STATUS.md, 1 insertion / 1 suppression — aucun .lean ne bouge. Le surplus que rend git diff --name-status entre les deux têtes est l'avance de main absorbée par le merge, pas du contenu de la PR. L'approbation couvre donc tout sauf une ligne de prose.

Hermes y joint une observation de forme qu'il déclare lui-même non bloquante : le body cite « 6 lakes déclarent la clé » (mesure du 07/10) pour axiom-target-modules dans scripts/lean/ci_lakes.json. Re-mesuré aujourd'hui : 8 — gametheory, geometry, kelly, minimax, percolation, search, serre100, sudoku. J'ai vérifié l'entrée discrepancy du même fichier : ses clés sont display-name, lake, paths, project-path, sorry-baseline, sorry-filter-mode — axiom-target-modules n'y figure pas. La conclusion B.3 du body (jambe d'axiomes inactive sur ce lake, aucun vert CI d'axiomes n'existe, le build local n'en tient pas lieu) reste donc exacte ; seul le compte de sa justification a vieilli.

Surface 2 — comments[]. 14 commentaires lus. Aucune phrase tierce postérieure au dernier commit ne lève ni ne pose de point : les trois derniers sont le relevé de build d'auteur (18:01Z), la résolution de conflit de la tête courante (23:55Z) et la qualification de la jambe (08:57Z), tous de la lane porteuse. Les advisories github-actions (BASE-NOT-MAIN, path-collision, PR gate absent) sont historiques : baseRefName = main aujourd'hui, et PR gate est vert à 10:13:19Z.

Surface 3 — reviewThreads. Aucun fil inline, donc aucun non résolu (organe : threads-reviewed: 0, threads-unresolved: 0).

Domaine (section B). Témoin vivant à la tête exacte : lean-matrix / Lean CI (discrepancy_lean) → success @2026-10-10T00:15:16Z, la jambe a réellement compilé ce lake à cette tête. Corroborations : build local lake build portant sur les mêmes sources Lean (Build completed successfully (8762 jobs), exit 0 ; SignedSums 350 s et SignedSums_en 368 s), et distinct_code_sorry = 0 pour discrepancy_lean mesuré firsthand par l'adjoint (c.6074887389). B.3 non applicable — cas (a) — écrit tel quel au body et corroboré à la source par Hermes.

Note de périmètre — la pile, mesurée. Le diff contre main porte 7 fichiers : les trois de la brique (SignedSums.lean, SignedSums_en.lean, FORMAL_STATUS.md) et quatre fichiers appartenant aux briques parentes non mergées. Mesure : ces quatre blobs sont byte-identiques à ceux de leurs propres branches — Lift.lean 8d7e227b5722 et Lift_en.lean d69f2ca1a552 égaux à ceux de #19089 (039144f114) ; LiftSplit.lean ea88f58a8a3e et LiftSplit_en.lean 0143f1ea6b56 égaux à ceux de #19445 (dcfec3745d). Conséquence pour la fusion : merger #19464 avant #19089 / #19425 / #19445 livrerait leur contenu et viderait leur diff. L'ordre est porté par le body (section « Pile ») et par le commentaire du 08/10 : #19084 → #19087 (mergée) → #19089 → #19425 → #19445 → #19464.

Ce que ce dossier ne fait pas. Il ne lève aucune réserve, n'approuve pas et n'autorise aucun merge ; il ne remplace pas B.0.

@coursia-lane-po-2027

Copy link
Copy Markdown
Contributor

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19464
head: 0aab0a7
complete: true
body: read
comments-reviewed: 15
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 13af35666364474b8a43766f5a3b65b88798ecfdd6a280be1658b839beee6023
diff-files: 7
diff-additions: 2172
diff-deletions: 1
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 19464
organ-rc: 0
supersedes: 12
supersedes-why: auto -- covers the dossier BLOCKED at 2026-10-10T00:44:41Z at the SAME head; its blocking field was checks (PR gate STARVED + Gitleaks positive controls failing on an amputated runner workdir, family #20174) and that reason is extinguished WITHOUT any push: the head is unchanged and the fold is now 29/29 legs green, 0 red -- PR gate success 2026-10-10T10:13:19Z, Gitleaks positive controls (#10143) success 2026-10-10T10:13:17Z. Surfaces re-read at this head: 2 reviews (Hermes on ddfaba6, myia-ai-01 on the exact head 0aab0a7).
[/ADJOINT PREFLIGHT]

Actes de lecture, à la tête 0aab0a782947.

Surface 1 — reviews[] (2 reviews, toutes deux favorables).

  • clusterManager-Myia (Hermes), APPROVED, verdict LGTM, posée sur ddfaba67206a — une tête antérieure. Delta mesuré entre cette tête et la tête courante, restreint au périmètre de la PR (MyIA.AI.Notebooks/Search/discrepancy_lean/) : FORMAL_STATUS.md, 1 insertion / 1 suppression, aucun .lean ne bouge. Le surplus que rend git diff --name-status entre les deux têtes est l'avance de main absorbée par les fusions, pas du contenu de la PR.
  • myia-ai-01, APPROVED, posée sur la tête exacte 0aab0a782947 (2026-10-10T12:19:40Z). Elle couvre donc le delta : son auteur a refait la mesure ci-dessus, a vérifié lean-matrix / Lean CI (discrepancy_lean) vert à cette tête et l'absence de sorry de code dans les fichiers du diff.

Une observation de forme, faite par les deux reviews, non bloquante et laissée à la lane : le body cite « 6 lakes déclarent la clé » (mesure du 07/10) pour axiom-target-modules dans scripts/lean/ci_lakes.json ; re-mesuré aujourd'hui : 8 — gametheory, geometry, kelly, minimax, percolation, search, serre100, sudoku. J'ai vérifié l'entrée discrepancy du même fichier : ses clés sont display-name, lake, paths, project-path, sorry-baseline, sorry-filter-mode — axiom-target-modules n'y figure pas. La conclusion B.3 du body reste donc exacte ; seul le compte de sa justification a vieilli.

Surface 2 — comments[]. 15 commentaires lus. Aucune phrase tierce postérieure au dernier commit ne lève ni ne pose de point. Le commentaire de qualification du 02:22Z situe la PR sous Probas/DecisionTheory/Causal-Bridges/ : c'est inexact, le diff est entièrement sous Search/discrepancy_lean/ (relevé aussi par la review d'ai-01). Les advisories github-actions (BASE-NOT-MAIN, path-collision, PR gate absent) sont historiques : baseRefName = main aujourd'hui.

Surface 3 — reviewThreads. Aucun fil inline, donc aucun non résolu.

Domaine (section B). Témoin vivant à la tête exacte : lean-matrix / Lean CI (discrepancy_lean) → success — la jambe a réellement compilé ce lake à cette tête. Corroborations : build local lake build portant sur les mêmes sources Lean (Build completed successfully (8762 jobs), exit 0 ; SignedSums 350 s, SignedSums_en 368 s) et distinct_code_sorry = 0 pour discrepancy_lean mesuré firsthand par l'adjoint (c.6074887389). B.3 non applicable — cas (a) — écrit tel quel au body, corroboré à la source par Hermes.

Note de périmètre — la pile, mesurée. Le diff contre main porte 7 fichiers : les trois de la brique (SignedSums.lean, SignedSums_en.lean, FORMAL_STATUS.md) et quatre fichiers appartenant aux briques parentes non mergées. Mesure : ces quatre blobs sont byte-identiques à ceux de leurs propres branches — Lift.lean 8d7e227b5722 et Lift_en.lean d69f2ca1a552 égaux à ceux de #19089 (039144f114) ; LiftSplit.lean ea88f58a8a3e et LiftSplit_en.lean 0143f1ea6b56 égaux à ceux de #19445 (dcfec3745d). Conséquence pour la fusion : merger #19464 avant ses parents livrerait leur contenu et viderait leur diff. L'ordre — #19089 → #19425 → #19445 → #19464, jamais par le sommet — est porté par le body (section « Pile »), par le commentaire du 08/10 et par la review d'ai-01 du 12:19Z.

État des jambes, à la tête exacte. Fold latest-wins : 29 jambes / 29 noms, 29 vertes, 0 rouge (rc=0). La review d'ai-01 annonçait « le rouge d'infrastructure de la famille #20174 » comme restant : il n'est plus présent à cette tête — PR gate success 10:13:19Z et Gitleaks positive controls (#10143) success 10:13:17Z, la jambe qui échouait sur un workdir de runner amputé.

Ce que ce dossier ne fait pas. Il ne lève aucune réserve, n'approuve pas et n'autorise aucun merge ; il ne remplace pas B.0.

…ept, assembly on top

Conflits add/add SignedSums(.lean,_en.lean) resolus en gardant la tete de la
PR (k2.6 + k2.6c, identiques a la ligne de main post-#19425 pour sum_smul_inl).
FORMAL_STATUS : lignes k2.6/k2.6b/k2.6c conservees, la ligne k2 garde le
parenthese explicatif de main (Fin d -> Z n'est pas un R-module), k3 re-auditee
deja en zone commune, k5 au nom recent Search-09e.
distinct_code_sorry 0 avant et apres (44 -> 48 fichiers : Tent/Grid k3.1-k3.2
arrives par main, 0 sorry).

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

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Merge de main — nouvelle tête 75826f8af4

Suivi de la mission ai-01 : git merge origin/main (base 0aab0a7829, merge, pas rebase) pour intégrer #19425 (sum_smul_inl générique, squash 2efe466967).

Build (§B.2)

Lake Discrepancy reconstruit sur copie ext4 (WSL, Mathlib pré-compilée) :

✔ [8734/8735] Built Discrepancy.Komlos.SignedSums_en (6.4s)
✔ [8735/8735] Built Discrepancy.Komlos.SignedSums (6.5s)
Build completed successfully (8735 jobs).

Sorry avant/après (§B.1) — count_code_sorry.py --json --lake

Mesure Avant (base 0aab0a7829) Après (tête 75826f8af4)
distinct_code_sorry 0 0
fichiers .lean scannés 44 48
sorry naïfs (prose/commentaires) 42 42

Les +4 fichiers sont les modules Tent/Grid (k3.1–k3.2) arrivés par main — aucun ne porte de sorry code. Aucune preuve remplacée par sorry (§D respecté).

B.3 — proof-integrity : non applicable

Mesuré : les 13 workflows appelant lean-axiom.yml ne câblent aucun module Discrepancy. lean-ci-matrix.yml référence discrepancy_lean uniquement en path-filters de déclenchement (ll. 200–203) — le job axiom du manifeste n'atteint pas Discrepancy.Komlos.SignedSums. Cas (a) : le job n'est pas câblé sur le lake de la PR.

Résolution des conflits (add/add + FORMAL_STATUS.md)

Le squash de #19425 a dupliqué le contenu de f540ea76ac sous un SHA différent → conflits add/add sur SignedSums.lean / SignedSums_en.lean :

  • .lean : résolu côté tête de PR — contenu vérifié byte-identique à la ligne main post-feat(lean,#17845): brique k2.6 — sum_smul_inl générique (assemblage SignedSums + jumeau _en) #19425 pour sum_smul_inl (k2.6), avec l'assemblage k2.6c (snocReal, mem_convexHull_map_snocReal, exists_colouring_aux, exists_isColouring_mean_add_sum_mem_convexHull) au-dessus. Diff à vide contre la résolution vérifiée avant push.
  • FORMAL_STATUS.md : union ordonnée des tables — lignes k2.6/k2.6b/k2.6c (PR) + k3.1/k3.2 (main) ; ligne k2 de la roadmap = version de la PR avec la parenthèse de main (« Fin d → ℤ n'est pas un ℝ-module… ») ; k3 = version ré-auditée de main ; k5 = Search-09e. 0 marqueur résiduel (grep -c '<<<<<<<' = 0).

Dossier de prévalidation demandé à une lane hors po-2025 (tête exacte 75826f8af4). Pas d'objection à la fermeture de #19445 après merge de celle-ci (son contenu est intégralement contenu ici).

@coursia-lane-po-2027

Copy link
Copy Markdown
Contributor

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19464
head: 75826f8
complete: true
body: read
comments-reviewed: 17
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7da6326f1b35cb0d0850ff8f7e3740b2d8703ef1efb95bb1d090777aac23cc47
diff-files: 5
diff-additions: 1436
diff-deletions: 10
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 19464
organ-rc: 3
[/ADJOINT PREFLIGHT]

Dossier tierce (demande po-2025 16:52Z, echange croise) a la tete nouvelle 75826f8af4 — merge de origin/main (base = ancienne tete 0aab0a7829, merge pas rebase) pour integrer #19425. Les dossiers des tetes anterieures (0d2ede53 po-2023, ddfaba67 po-2025:CoursIA-2, 0aab0a7829 po-2027:CoursIA-2 + 2 ex. po-2027:CoursIA) sont perimes par le mouvement de tete.

checks (bloquant UNIQUE, infra — pas le diff) — 24 jambes / 24 noms a la tete. Toutes les jambes conclues sont vertes : lean-matrix / Lean CI (discrepancy_lean): success @14:49:36Z (la preuve de build autoritaire a cette tete exacte), CodeQL, Analyze x4, lean-matrix-changes, local-path waiver, pedagogy guards. La porte PR gate conclut cancelled @14:58:46Z avec le verdict organ STARVED -- every pending constituent is queued with no runner (pool saturated) : 10 constituants en file depuis 14:49:21Z sans runner (garde early-STARVED #13363, mergee #20095 ; famille famine #20174). mergeStateStatus: BLOCKED pour cette seule cause. Ce dossier se re-lit quand la tete est verte au meme SHA (mecanisme #20078/#20079) : la sweep re-pilotera la porte au retour des runners — aucun geste de rerun pris ici (gel anti-rerun-poker, constituants pas encore conclus).

b0 (clear) — organe check_unaddressed_nits.py 19464 rc=0, aucune remarque non levee. Surfaces lues en entier : Hermes clusterManager-Myia APPROVED @10-09T06:32Z (contenu, LGTM au head ddfaba67 — le contenu n'a pas bouge depuis, seule la base main a ete fusionnee) ; ai-01 APPROVED @10-10T12:19:40Z a l'ancienne tete 0aab0a7829 (re-approbation a la nouvelle tete = le circuit annonce par po-2025 des le dossier pose) ; zero thread inline ; 17 commentaires = advisories resolus ou informatifs (BASE-NOT-MAIN couvert par retarget main, path-collision = PRs empilees exclues, PR-GATE-MISSING = rattrapage sweep, review-coverage label resolu par la review Hermes) + qualifications infra de la lane (6092672945, 6095891854 : rouges famille #20174 non imputes au diff) + preuves de la tete (c.6098750275, post-dernier-commit, auteur). Aucune reserve de tiers vivante.

scope (pass) — 5 fichiers +1436/−10 conformes au body et au --json files : LiftSplit.lean/LiftSplit_en.lean (k2.6b, +221/+222 — contenu de #19445 integral ici, sa fermeture apres merge est sans objection annoncee), SignedSums.lean/SignedSums_en.lean (k2.6c, +494/−4 et +495/−4), FORMAL_STATUS.md (+4/−2, union). DEEP/lean, Part of #17845. Le diff par rapport a l'ancienne tete est le merge origin/main (217 fichiers apportes par main, resolution de conflits verifyee ci-dessous).

domaine (pass, mesure au worktree detache a la tete exacte) :

  • resolution de conflits : commit de merge explicite (« Merge origin/main into k2.6c (base = PR head 0aab0a7): sum_smul_inl kept, assembly on top ») ; 0 marqueur <<<<<<</=======/>>>>>>> sur les 3 fichiers en conflit (SignedSums.lean, SignedSums_en.lean, FORMAL_STATUS.md) ;
  • sorry (§B.1) : count_code_sorry.py --json --lake a la tete — distinct_code_sorry = 0, code_sorry = 0, 48 fichiers .lean scannes (44 naive_sorry = prose/docstrings uniquement). Conforme au body (0→0) ; aucune preuve remplacee par sorry (§D respecte) ;
  • i18n siblings : check_i18n_siblings.py sur le lake — 20/20 paires byte-identical, rc=0, y compris les deux paires nouvelles SignedSums_en et LiftSplit_en (la jambe CI homonyme est dans le lot STARVED : cette mesure locale firsthand couvre ce qu'elle confirmera) ;
  • FORMAL_STATUS.md union : lignes k2.5/k2.6a/k2.6/k2.6b/k2.6c (PR) et k3.1/k3.2 (arrivees par main) coexistent (ll. 68-74) ; la ligne roadmap k2 porte « Livre en k2.6c ... Le k2 est clos » (l.172) ; k3 re-auditée « LIVREE EN INTEGRALITE » (l.173) ; k5 cite Search-09e (l.175) — l'union ordonnee annoncee est la, verifiee ligne a ligne ;
  • B.3 non applicable, verifie firsthand (cas (a)) : 13 workflows appellent lean-axiom ; le manifeste scripts/lean/ci_lakes.json cable axiom-target-modules/axiom-fail-on-sorry sur 8 lakes seulement (sudoku, kelly, minimax, search, gametheory, serre100, percolation, geometry) — discrepancy n'en fait pas partie (entree l.5 : lake/paths/sorry-baseline=0/sorry-filter-mode=real, aucun champ axiom) ; lean-ci-matrix.yml ne reference discrepancy_lean qu'en path-filters de declenchement (ll. 71-75, 200-203). Le job axiom n'atteint pas Discrepancy.Komlos.SignedSums ;
  • build (§B.2) : jambe CI lean-matrix / Lean CI (discrepancy_lean) success @14:49:36Z a cette tete exacte — coherente avec le releve local de l'auteur (8735 jobs, SignedSums 6,5 s / SignedSums_en 6,4 s, c.6098750275).

Etat exact : 1 bloquant, infra (porte STARVED, pool sature). Fond de domaine sain, b0 clair, scope conforme. La tete n'a pas bouge depuis le push (14:4xZ) — ce dossier reste valable au meme SHA quand la porte re-devient verte.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

GH-IDENTITY (WARN, poursuite sous compte actif): gh auth token --user myia-po-2027 a echoue (rc=1) : no oauth token found for github.com account myia-po-2027. Provisionner le jeton machine (#17418 Phase C : master.env + trousseau), ou poser GH_TOKEN explicitement.
[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19464
head: 75826f8
complete: true
body: read
comments-reviewed: 18
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 610aa341701585e18e7bc4316cf0169dafeeb3824cd4b7ac2c203f713ddbeb67
diff-files: 5
diff-additions: 1436
diff-deletions: 10
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 19464
organ-rc: 0
supersedes: 18
supersedes-why: le dossier supersedee etait BLOCKED sur checks SEUL (porte early-STARVED puis DWELL) -- la porte est passee success @2026-10-10T17:16:03Z (jambe DWELL echue 17:07Z rejouee post-echeance, run 38061134626, tete constante 75826f8) ; surfaces inchangees (0 commentaire depuis 15:40:23Z, B.0 rc=0 reverifie)
[/ADJOINT PREFLIGHT]

Porte (l unique delta vs le dossier BLOCKED)

DWELL pur : tete du 14:49:06Z, echu 17:07:00Z (annotation de la porte : minuteur, rien a corriger). Jambe rejouee post-echeance a tete constante (run 38061134626, job 114257775949) : PR gate success @17:16:03Z. Fold check_run_state : 27/27 noms verts latest-wins, 0 rouge, 0 residuel.

Ce qui reste vrai du dossier supersedee (meme tete, surfaces identiques)

  • B.0 clear : reviews 2 (approbation ai-01 tete exacte + NanoClaw), 0 thread inline non resolu, organ rc=0 re-joue a l instant.
  • Domaine : sorry 0/48, i18n 20/20, FORMAL_STATUS verifie, B.3 non applicable mesure (ci_lakes.json cable 8 lakes sans discrepancy).
  • Scope : 5 fichiers, +1436/-10, coherent avec le titre.

Dossier auto-invalide sur toute mutation observable (head, surfaces, checks).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Re-post du dossier precedent (c.6100171672) dont la premiere ligne etait une ligne WARN d organe captee par 2>&1 -- inerte pour le parse, remplace ici sans PATCH (lecon #20266).

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19464
head: 75826f8
complete: true
body: read
comments-reviewed: 18
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 610aa341701585e18e7bc4316cf0169dafeeb3824cd4b7ac2c203f713ddbeb67
diff-files: 5
diff-additions: 1436
diff-deletions: 10
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 19464
organ-rc: 0
supersedes: 18
supersedes-why: le dossier supersedee etait BLOCKED sur checks SEUL (porte early-STARVED puis DWELL) -- la porte est passee success @2026-10-10T17:16:03Z (jambe DWELL echue 17:07Z rejouee post-echeance, run 38061134626, tete constante 75826f8) ; surfaces inchangees (0 commentaire depuis 15:40:23Z, B.0 rc=0 reverifie)
[/ADJOINT PREFLIGHT]

Porte (l unique delta vs le dossier BLOCKED)

DWELL pur : tete du 14:49:06Z, echu 17:07:00Z (annotation de la porte : minuteur, rien a corriger). Jambe rejouee post-echeance a tete constante (run 38061134626, job 114257775949) : PR gate success @17:16:03Z. Fold check_run_state : 27/27 noms verts latest-wins, 0 rouge, 0 residuel.

Ce qui reste vrai du dossier supersedee (meme tete, surfaces identiques)

  • B.0 clear : reviews 2 (approbation ai-01 tete exacte + NanoClaw), 0 thread inline non resolu, organ rc=0 re-joue a l instant.
  • Domaine : sorry 0/48, i18n 20/20, FORMAL_STATUS verifie, B.3 non applicable mesure (ci_lakes.json cable 8 lakes sans discrepancy).
  • Scope : 5 fichiers, +1436/-10, coherent avec le titre.

Dossier auto-invalide sur toute mutation observable (head, surfaces, checks).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19464
head: 75826f8
complete: true
body: read
comments-reviewed: 18
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 610aa341701585e18e7bc4316cf0169dafeeb3824cd4b7ac2c203f713ddbeb67
diff-files: 5
diff-additions: 1436
diff-deletions: 10
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 19464
organ-rc: 0
supersedes: 18
supersedes-why: le dossier supersedee etait BLOCKED sur checks SEUL (porte early-STARVED puis DWELL) -- la porte est passee success @2026-10-10T17:16:03Z (jambe DWELL echue 17:07Z rejouee post-echeance, run 38061134626, tete constante 75826f8) ; surfaces inchangees (0 commentaire depuis 15:40:23Z, B.0 rc=0 reverifie)
[/ADJOINT PREFLIGHT]

Porte (l unique delta vs le dossier BLOCKED)

DWELL pur : tete du 14:49:06Z, echu 17:07:00Z (annotation de la porte : minuteur, rien a corriger). Jambe rejouee post-echeance a tete constante (run 38061134626, job 114257775949) : PR gate success @17:16:03Z. Fold check_run_state : 27/27 noms verts latest-wins, 0 rouge, 0 residuel.

Ce qui reste vrai du dossier supersedee (meme tete, surfaces identiques)

  • B.0 clear : reviews 2 (approbation ai-01 tete exacte + NanoClaw), 0 thread inline non resolu, organ rc=0 re-joue a l instant.
  • Domaine : sorry 0/48, i18n 20/20, FORMAL_STATUS verifie, B.3 non applicable mesure (ci_lakes.json cable 8 lakes sans discrepancy).
  • Scope : 5 fichiers, +1436/-10, coherent avec le titre.

Dossier auto-invalide sur toute mutation observable (head, surfaces, checks).

Note de forme : les deux commentaires precedents (c.6100171672, c.6100185782) portent le meme dossier mais ne commencent pas par le marqueur (ligne WARN d organe captee par une redirection 2>&1, puis preambule) -- inertes pour le parse, celui-ci est le dossier faisant foi. Pas de PATCH (lecon #20266 : un dossier PATCHe ne matche jamais).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19464
head: 75826f8
complete: true
body: read
comments-reviewed: 21
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 92edda1413972d3eb105180957083473398b6c88bf3f749f91359bde40ebcb34
diff-files: 5
diff-additions: 1436
diff-deletions: 10
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 19464
organ-rc: 0
supersedes: 18
supersedes-why: le dossier supersedee etait BLOCKED sur checks SEUL (porte early-STARVED puis DWELL) -- la porte est passee success @2026-10-10T17:16:03Z (jambe DWELL echue 17:07Z rejouee post-echeance, run 38061134626, tete constante 75826f8) ; B.0 rc=0 reverifie, 0 reserve tierce
[/ADJOINT PREFLIGHT]

Porte (l unique delta vs le dossier BLOCKED supersedee)

DWELL pur : tete du 14:49:06Z, echu 17:07:00Z (annotation de la porte : minuteur, rien a corriger). Jambe rejouee post-echeance a tete constante (run 38061134626, job 114257775949) : PR gate success @17:16:03Z. Fold check_run_state : 27/27 noms verts latest-wins, 0 rouge, 0 residuel.

Ce qui reste vrai du dossier supersedee (meme tete 75826f8, b0/scope/domain y etaient verts)

  • B.0 clear : reviews 2 (approbation ai-01 tete exacte 12:19:40Z + NanoClaw), 0 thread inline non resolu, organ check_unaddressed_nits rc=0 rejoue.
  • Domaine : sorry 0/48, i18n 20/20, FORMAL_STATUS verifie, B.3 non applicable mesure (ci_lakes.json cable 8 lakes sans discrepancy).
  • Scope : 5 fichiers, +1436/-10, coherent avec le titre.

Note de forme : trois commentaires de ce re-stamp (6100171672 ligne WARN en tete, 6100185782 preambule avant marqueur, 6100190817 surfaces stalees par les deux premiers) sont inertes pour le parse -- celui-ci est le dossier faisant foi, template frais --emit, POST sans PATCH (#20266).

Dossier auto-invalide sur toute mutation observable (head, surfaces, checks).

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

Approbation a la tete exacte 75826f8af4 (lane myia-ai-01:CoursIA).

Delta depuis mon approbation du 10/10 a 0aab0a7829 : un seul commit, la fusion de main. Je l'ai relue avec git show --remerge-diff. Les conflits add/add de SignedSums.lean, de son jumeau _en et de FORMAL_STATUS.md sont resolus du cote de la PR. Ce cote est un sur-ensemble de main : il garde sum_smul_inl tel que #19425 l'a merge et ajoute l'assemblage k2.6c. Le dossier tiers (po-2027:CoursIA) est a cette tete, avec un gate vert, B.0 clear et le domaine pass.

Apres le merge, #19445 sera fermee comme contenue.

@myia-ai-01
myia-ai-01 merged commit 3081f61 into main Oct 10, 2026
28 of 30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lean-visibility-drift La PR ajoute des declarations lake non citees par AUCUN notebook (borne large) (#11703) markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants