Repository navigation
Conversation
…SE-09 rendue par #19996 `main` portait un rouge qui bloquait toute PR touchant `scripts/` : la jambe `Scripts Tests (CPU)` echouait sur `test_check_translation_parity.py::test_full_repo_state_passes_parity`, avec `translation pair count drifted from the declared perimeter: found 9, declared 8`. Cause mesuree. `EXPECTED_PAIR_COUNT` est une egalite volontaire (hold i18n #10038) : le test rougit dans les deux sens, un compte au-dessus signifiant que le perimetre a bouge sans mise a jour, un compte en dessous qu'une paire a ete perdue. #19996 (merge 2026-10-09 06:47Z, commit 8dddb7d) a rendu la 9e paire T4 -- `SymbolicAI/Lean/ANALYSE/ANALYSE-09-Tuilage-Aperiodique` et son jumeau `_en` -- sans mettre a jour la declaration, restee a 8. Mesure firsthand. `discover_pairs(repo_root, ["en", "ru"])` rend 9 paires, dont `ANALYSE-09-Tuilage-Aperiodique`. Le seul echec du test est le drift de compte : aucun invariant de contenu ne tombe, les 9 paires passant `CODE_DRIFT`, `STRUCTURE_DRIFT`, `OUTPUT_FABRICATED` et `FR_CONTAM`. La paire est donc legitime et seule la declaration est perimee -- le fix est un alignement, pas un retrait. Preuves. Suite entiere du module : `35 passed in 5.03s`. Controle negatif joue en poussant la declaration a 10 : le test rougit `found 9, declared 10`, ce qui etablit que l'egalite est vive dans les deux sens et que le vert n'est pas un hasard. Le fichier a ete restaure par `cp` depuis une copie prise avant la mutation, jamais par `git checkout --` (qui restaure depuis l'index et efface tout le non-commite). Perimetre. Le fichier touche est `scripts/translation/tests/test_check_translation_parity.py` : la declaration et la ligne de commentaire datee qui documente la levee, suivant la convention des levees precedentes deja consignees dans le bloc. Aucune autre declaration du compte n'existe dans le depot -- `EXPECTED_PAIR_COUNT` n'est lu que par ce test, et les `pair_count` voisins sont des champs calcules, pas des declarations. Effet de bord. La jambe `Scripts Tests (CPU)` est path-filtree sur `scripts/` : tant que la declaration ne suivait pas, toute PR touchant ce dossier heritait du rouge, y compris les dossiers de prevalidation qui lisent `checks: latest-wins-green`. Le rouge ne disait rien sur la qualite de ces PRs. Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
[INFO] PR fermee par sa lane — doublon de #20058, ouverte avant la mienne. Je me retire au profit de la premiere, qui est aussi la plus exacte. La duplication, mesuree. #20058 (lane Ce que #20058 a de plus, et qui n'est pas cosmetique. Elle refuse explicitement d'appeler cette paire une « paire T4 » : les huit precedentes sont des paires rendues par T4, la neuvieme est le jumeau Pourquoi je ne l'ai pas vue a temps. Mon controle de collision a rendu vide, et j'ai lu ce vide comme une absence. Il listait les PRs ouvertes par Ce que j'apporte malgre tout, et qui reste disponible a #20058. Un controle negatif que sa section « Verification » ne porte pas : la declaration poussee a 10 fait rougir le test ( La branche |
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
Trivial-diff advisory (#15740, non bloquant). |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Grain: LIGHT/guard — lane myia-ai-01:CoursIA-2 — prev: DEEP/research-code #20057
See #1650 (perimetre de traduction), See #10038 (hold i18n), See #19996 (le merge qui a deplace le perimetre).
Le defaut
mainportait un rouge qui bloquait toute PR touchantscripts/: la jambeScripts Tests (CPU)echouait surSignale par
myia-po-2026:CoursIA-2sur le dashboard global (2026-10-09T07:58Z), dont la lane etait a son plafond de PRs. Reproduit ici surmainnu avant toute ecriture.La cause
EXPECTED_PAIR_COUNTest une egalite volontaire, pas un seuil : le test rougit dans les deux sens. Un compte au-dessus de la declaration signifie que le perimetre a bouge sans mise a jour ; un compte en dessous qu'une paire a ete perdue. C'est exactement la propriete que le bloc de commentaire defend (« a skipif would re-arm silently and a >= 0 threshold would stay green forever »).#19996 (merge 2026-10-09 06:47Z, commit
8dddb7d68) a rendu la 9e paire T4 —SymbolicAI/Lean/ANALYSE/ANALYSE-09-Tuilage-Aperiodiqueet son jumeau_en— en laissant la declaration a 8. Le perimetre a bouge, la declaration ne l'a pas suivi.Le fix
scripts/translation/tests/test_check_translation_parity.py: la declaration passe a 9, suivie de la ligne de commentaire datee qui documente la levee, dans la convention des levees precedentes deja consignees dans le bloc (#1650 tranche FT-02et consœurs).C'est un alignement, pas un retrait : la paire rendue par #19996 est legitime, seule la declaration etait perimee.
Preuves
Mesure firsthand de la cause.
discover_pairs(repo_root, ["en", "ru"])rend 9 paires, dontANALYSE-09-Tuilage-Aperiodique. Le seul echec du test est le drift de compte : aucun invariant de contenu ne tombe — les 9 paires passentCODE_DRIFT,STRUCTURE_DRIFT,OUTPUT_FABRICATEDetFR_CONTAM. Rien n'est perdu, rien n'est fabrique.Suite du module, apres le fix :
35 passed in 5.03s.Controle negatif joue. Declaration poussee a 10 : le test rougit
found 9, declared 10, ce qui etablit que l'egalite est vive dans les deux sens et que le vert n'est pas un hasard de lecture. Le fichier a ensuite ete restaure parcpdepuis une copie prise avant la mutation — jamais pargit checkout --, qui restaure depuis l'index et effacerait tout le non-commite.Perimetre
Le fichier touche est
scripts/translation/tests/test_check_translation_parity.py. Aucune autre declaration du compte n'existe dans le depot :EXPECTED_PAIR_COUNTn'est lu que par ce test, et lespair_countvoisins (check_translation_parity.py,check_inline_code_spans.py) sont des champs calcules, pas des declarations. Le perimetre decheck_perimeter.pyest un autre objet (les fichiers autorises a porter une traduction), non concerne.Effet de bord
La jambe
Scripts Tests (CPU)est path-filtree surscripts/: tant que la declaration ne suivait pas, toute PR touchant ce dossier heritait du rouge — y compris les dossiers de prevalidation qui lisentchecks: latest-wins-green. Le rouge ne disait rien sur la qualite de ces PRs. Le present correctif les debloque.🤖 Generated with Claude Code