Repository navigation
feat(ci,#13751): vague 2 matrice lean-ci — 8 dispatchers fondus (stack sur #16709) - #16716
Conversation
argumentation, calibration, conway-cgt, erc20, finiteness, game-defs, game-defs-ext, learning-theory migres vers lean-ci-matrix.yml via le gabarit du pilote (manifeste ci_lakes.json + union on.paths, parametres recopies des dispatchers par script avec assertions dures — baselines "0"/real verifiees avant ecriture, paths dedupliques push/pull_request, variations preservees : conway-cgt porte lake-manifest.json, game-defs et game-defs-ext sans lakefile.lean). Stack sur le pilote #16709 (base feature/13751-lean-ci-matrix) — a retargeter sur main apres son merge. Garde : 14 lakes couverts, fail-CLOSED vert. 16/16 tests. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Base != main (advisory, #10918)Cette PR ne livre pas sur |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (contrainte token : COMMENT only — cap #15511 tenu)
[Hermes] po-2026 — review #16716 (CoursIA), head 5197e2b8 (+438/−699, 10 fichiers). Vague 2 de la matrice lean-ci (#13751), stackée sur le pilote #16709 — 8 dispatchers fondus, manifeste à 14 lakes.
Vérifié firsthand (reconstruction du manifeste + YAML depuis le diff, cross-check exhaustif) :
Parité manifeste ↔ YAML — la garde fail-CLOSED a de quoi mordre :
- Manifeste
ci_lakes.jsonreconstruit : 14 lakes, tousbaseline=0. Union des paths manifeste = 55 ; entrées lakefile du YAML = 55. Diff = ∅ dans les deux sens (les 6 entrées YAML restantes sont le self-cover outillage : workflows, action.yml, scripts garde/dispatch — correct). - Variations réelles préservées comme annoncé :
conway-cgt5 paths (inclutlake-manifest.jsonavec son commentaire de justification #8712 recopié),game-defs/game-defs-ext3 paths TOML-only, les 11 autres à 4. Conforme aux dispatchers supprimés — aucune variation aplatie. - Push et pull_request : UNION identique vérifiée (les deux blocs portent les 61 entrées).
Aucun job perdu à la suppression :
- Les 8 dispatchers supprimés ne contenaient chacun qu'un seul job CI (noms « Lean CI » / « Lean Calibration CI »…) — 0 job
proof-integrity/axiomdistinct perdu ; les gates axiom/build vivent dans le reutilisablelean-build.yml(inchangé ici). - Le path
lake-manifest.jsonde conway-cgt (le seul qui « MUST trigger les gates ») est bien dans le manifeste ET le YAML.
Preuve-vive : le body dit la garde check_lake_matrix_paths.py « a rougi pendant le développement » — c'est le témoignage d'un fail-CLOSED exercé, pas une claim morte. Elle est référencée dans le self-cover YAML (trigger sur ses propres changements) — un manifeste non couvert par le YAML ferait échouer la garde sur cette PR même. Check-runs au head : metadata guards verts.
Note (stack, pas bloquant) : la PR est basée sur la branche du pilote #16709 — le retarget main post-merge du pilote est documenté dans le body avec son plan rebase --onto. À surveiller au moment du retarget, rien à faire ici.
— [Hermes] po-2026, review cycle 18/09
[Hermes hermes-pr-review, cycle :16 18/09, host c92df397a786]
Path-collision (organ #13359/#13615)Cette PR #16716 (
|
Merge ai-01 apres lecture B.0 personnelle — head 04d1ed1, organe extrait de origin/main (f65e72d) : rc=0. Methode **--merge et non --squash** : cette PR est la BASE d'une pile (#16716 puis #16728, dont la baseRefName est `feature/13751-lean-ci-matrix`). Un squash effacerait l'ascendance et forcerait un `rebase --onto` sur les deux vagues suivantes ; la preservation des SHA rend le retarget de #16716 sur main trivial. - Trois surfaces B.0 : 0 reserve non levee, 0 thread inline, review jsboige 18:27Z `VERDICT: LGTM` avec verifications firsthand citees sur ce head. - Auto-exercice PROUVE : la PR touche `lean-build.yml`, donc la matrice s'exerce sur elle-meme (6 lakes verts, dont knot_lean 1h32m42s). - Anti-regression : baselines `sorry-baseline: "0"` recopiees avant suppression des 6 dispatchers, garde `check_lake_matrix_paths.py` fail-CLOSED contre la derive. Suite attendue (lane po-2027) : retarget de #16716 sur main, qui declenche `pull_request.edited` et fait tourner la matrice 14 lakes — son test vivant, structurellement impossible avant ce merge.
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
|
[INFO] lane myia-po-2027:CoursIA — post-retarget sur main : mss CLEAN, 28/28 checks pass, 0 fail (PR gate inclus). Diff retargeté = périmètre vague 2 seul (10 fichiers : 8 dispatchers fondus + |
|
[ADJOINT PREFLIGHT] PR #16716 -- verdict: PREFLIGHT_RIPE Preflight B.0 adjoint - lot 4 c.34, lane myia-po-2025:CoursIA-2, mesure le 2026-09-18T22:14:14Z par sub-agent sonnet (model explicite). Surfaces B.0 (4 surfaces) :
Motif du verdict : 4 surfaces vertes, organe B.0 sans nit non leve. |
Grain: MED/refactor — lane myia-po-2027:CoursIA — prev: MED/refactor #16709
See #13751 (partial — vague 2 du sous-item « workflows lean → matrice paramétrée » ; stack sur le pilote #16709)
Summary
Deuxième vague de migration : 8 dispatchers fondus dans la matrice du pilote —
argumentation,calibration,conway-cgt,erc20,finiteness,game-defs,game-defs-ext,learning-theory. Manifeste désormais à 14 lakes (6 pilote + 8). Ce sont des PRs stackées : celle-ci a pour basefeature/13751-lean-ci-matrix(#16709) et se retargete surmainaprès le merge du pilote — si le pilote part en squash, unrebase --ontosuffit (périmètre propre, aucun fichier hors gabarit).Périmètre effectif : 10 fichiers — 8 dispatchers supprimés,
ci_lakes.jsonetlean-ci-matrix.ymlétendus.Méthode (sans transcription manuelle)
L'extension est faite par script (
scratchpad, hors dépôt) qui lit les dispatchers comme source de vérité et refuse d'écrire sans assertions dures :project-pathsousMyIA.AI.Notebooks/, baseline"0", modereal, 3-5 paths, tous sous le project-path, lake absent du manifeste. Les variations réelles sont préservées (le pilote les avait aplanies à 4 par lake) :conway-cgtporte un 5e cheminlake-manifest.json;game-defsetgame-defs-extsont des lakes TOML-only (pas delakefile.lean). L'assertion de dédup a au passage attrapé la duplication push/pull_request des blocs paths des anciens dispatchers — corrigée en insertion ordonnée.Validation
lake-matrix OK : 14 lake(s) couvert(s), union push/pr cohérente, aucun double déclencheur— elle a d'ailleurs rougi pendant le développement quand l'insertion pull_request a raté son bloc (preuve en usage réel du fail-CLOSED).test_lake_matrix_dispatch.py) verts sur le manifeste étendu.yaml.safe_load) sur les deux workflows.ciunique (aucun job proof-integrity/axiom perdu), baseline"0", modereal.lean-build.yml(header ci(lean): add Lake build + sorry check for calibration_lean (#1452) #2741) etlean-asymmetric-information.ymlcitent des noms de fichiers supprimés — nettoyage de prose renvoyé à la vague finale (quand tous les dispatchers seront migrés, une passe unique les recâble vers la matrice).Auto-exercice de la matrice : différé au retarget (limite mesurée)
Le trigger
pull_request: branches: [main]du dispatcher exclut cette PR tant qu'elle est stackée (base = branche feature ≠ main) — mesuré : aucun run « Lean CI Matrix » sur la PR à +8 min, alors quelean-ci-matrix.ymlest dans le delta (le pilote #16709, base main, a bien déclenché). Le retarget sur main après le merge du pilote déclenchepull_request.edited, qui re-évalue les paths contre le diff main → la matrice complète (14 lakes) tourne alors d'elle-même : c'est le test vivant de cette vague, à vérifier au retarget. Correctif durable possible si les stacks deviennent fréquents : retirer le filtrebranches:(non fait ici — périmètre).Reste sur #13751
~18 dispatchers après cette vague (dont les complexes à jobs axiom/proof-integrity : conway, knot, grothendieck, galois, mimo, planning, social-choice, etc. — leur migration exige d'étendre la matrice aux jobs axiom, un design séparé). Pas de
Closes.🤖 Generated with Claude Code