Skip to content

fix(lean-ci,#17336): lost_gate soustrait la couverture reprise — deplacer le gate n'est pas le perdre - #17440

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/17336-lost-gate-coverage-subtraction
Sep 22, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/17336-lost-gate-coverage-subtraction

Conversation

@jsboige

@jsboige jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard — lane myia-po-2025:CoursIA — prev: MED/notebook-python #17348

See #17336 — [CLAIMED] lane myia-po-2025:CoursIA -- paths: scripts/lean/check_axiom_gate_coverage.py, scripts/lean/tests/test_check_axiom_gate_coverage.py (issuecomment-5780939529)

Diagnostic — le rouge deterministe Scripts Tests sur main

Run main 35753750580 (2026-09-22 16:23Z) : test_no_lake_ever_lost_the_gate echoue sur
{'dispatcher': 'lean-serre.yml', 'deleted_by': '78537cd49d', 'had_gate': True} — 1 failed / 14600 passed.

Fait etabli firsthand : lean-serre.yml existe TOUJOURS sur main (git log origin/main --follow -- .github/workflows/lean-serre.yml ne montre que son ajout 77bcae0 ; measure(origin/main) le liste comme appelant vivant du gate avec project-path MyIA.AI.Notebooks/SymbolicAI/Lean/Serre100/serre100_lean). Le commit de suppression 78537cd vit sur la branche de la PR #17370, pas sur main.

Le mecanisme du faux rouge : deleted_dispatchers() scanne git log --all — sur un clone CI qui a fetché les refs de la PR, la suppression laterale est visible ; l'ancien code comptait lost = [deleted qui avaient le gate] sans verifier si la couverture est encore servie au ref mesure. Main garde le fichier et le gate, le test declarait pourtant une perte.

Le fix — deplacer le gate n'est pas le perdre

  • deleted_dispatchers() porte desormais gated_paths (les project-paths que le dispatcher gated, a sa derniere version).
  • Nouvelle classify_deleted(deleted, gated_now) : partition lost / gate_relocated / never_had. Un dispatcher supprime qui avait le gate et dont tous les project-paths sont gates par un appel vivant au ref mesure est DEPLACE, pas perdu. Fail-closed : gate sans project-path (couverture non prouvable) reste PERDU ; un seul chemin decouvert reste PERDU.
  • Rapport : cle gate_relocated + section humaine ; --check continue de ne rouge que sur lost_gate.
  • Prose not_an_acceptance_criterion mise a jour (« la perte ne se declare que si aucun appel vivant ne reprend les project-paths ») — l'ancienne phrase « aucun lake n'a perdu le gate » etait devenue fausse au moment ou elle a ete ecrite, c'est le bug meme que ce PR corrige.

Tests

  • TestClassifyDeleted (4 tests synthetiques, sans git) : recouverture complete -> deplace ; un chemin decouvert -> perdu ; gate sans project-path -> perdu (fail-closed) ; jamais eu -> never.
  • Invariant partition : test_lost_relocated_and_never_had_are_disjoint_and_exhaustive (3 voies).
  • TestDeletedDispatchers.test_partition_is_a_partition : cles attendues + gated_paths: list.
  • Local : 34/34 passes (python -m pytest scripts/lean/tests/test_check_axiom_gate_coverage.py -q), y compris test_no_lake_ever_lost_the_gate sur le ref reel — ce PR verdit le test deterministe qui fait echouer les PR-gates de la flotte depuis ce matin.

Portee et suite

🤖 Generated with Claude Code

…acer le gate n est pas le perdre

Le rouge deterministe Scripts Tests sur main (run 35753750580, test_no_lake_ever_lost_the_gate)
vient de deleted_dispatchers (git log --all) qui voit la suppression de lean-serre.yml sur la
branche #17370 alors que main garde le fichier et son gate : l ancien lost = [deleted avec gate]
comptait PERDUE une couverture que main sert toujours. Partition en lost / gate_relocated /
never_had : un dispatcher supprime dont tous les project-paths sont gates par un appel vivant au
ref mesure est DEPLACE, pas perdu ; illisible (gate sans project-path) reste PERDU (fail-closed).
34/34 verts en local, y compris le test de regression sur le ref reel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) label Sep 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=0 genre=2 cap=5)

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Sep 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre guard dans la famille META (docs/guard/ledger/readme/test) + diff de 82 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17440
head: f99ecff
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8119e9cb24a9761ad95a8f0ad2539edc65b8b52ffccc286235adf7f69c31ffa8
diff-files: 2
diff-additions: 73
diff-deletions: 9
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

Notes du rédacteur (hors bloc, pour le lecteur humain) :

— Hermes, siège myia-po-2026:CoursIA-3

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

Diagnostic du rerun PR gate (run 35761190584, relance isolee 18:46Z) : settled: 15 check(s) green — l unique jambe rouge est DWELL (tete 17:30:14Z, 77 min, plancher 120, ecoule a 20:07:00Z). Ce n est pas un defaut de la PR : minuteur documente du gate, leve par le balayage pr-gate-stale-sweep ou un rerun apres 20:07Z. Le fix lui-meme est valide en CI au head f99ecff (Scripts Tests success, guards verts). La candidate est prete pour merge apres ecoulement (ou label merge-dwell-waived si urgence main).

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17440 (fix(lean-ci,#17336): lost_gate soustrait la couverture reprise — deplacer le gate n'est pas le perdre) 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 Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17440
head: f99ecff
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 156768595dcad726dc044a90e20d8962fed1e2921576055f2c6903047764b20c
diff-files: 2
diff-additions: 73
diff-deletions: 9
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 123d766 into main Sep 22, 2026
17 of 24 checks passed
jsboige added a commit that referenced this pull request Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants