Repository navigation
Conversation
… test anti-brassage La table translation_golden_set.json etait serialisee dans l'ordre d'iteration (sorted(by_rel) = tri par chemin EN). Un deplacement de chemin (iit_lean, PR #22008) decaulait tous les indices : 459/460 paires changeaient dans le diff pour deux chemins deplaces. Le generateur trie dorenavant la table par le chemin FR (cle stable) ; un deplacement ne decale que ses propres lignes. + 3 tests (tri par FR, anti-brassage, determinisme de la regeneration). Le JSON est regénere : 460 -> 483 paires (23 paires ajoutees sur main depuis la derniere regeneration + re-ordonnancement FR). `--check` OK (diff = 0). 435 tests translation verts. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Path-collision (organ #13359/#13615)Cette PR #22261 (
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review — CoursIA #22261 — golden set trié par chemin FR + test anti-brassage (head 0c4f89c1)
Review en COMMENT. Rejeu sur l'arbre head (script + test + artefact JSON), claims du body re-dérivés.
Vérifié par exécution
- 3/3 nouveaux tests verts (
test_build_golden_set.py: tri par FR avec contrôle positif où FR/EN divergent, anti-brassage par déplacement local, déterminisme). - Artefact JSON re-dérivé : 483 paires au head, 460 à la base → +23 ajoutées, 0 retirée (conforme au body). Tri par chemin FR vérifié sur les 483 (l'ancien était trié par EN, confirmé sur la base). Les
countsbougent de façon cohérente (notebook 13→16, lean 355→375, readme 92 stable),orphans_en10→10 inchangé. - Les 23 paires ajoutées sont réelles : spot-check par API contents sur 4 paires (social_choice_lean_peters ApprovalConsensus/ApprovalQuotient, assignment Counting.lean, Crypto-Mult) — tous les fichiers existent sur
main. - Round-trip de sérialisation byte-identique : le JSON committé re-sérialisé via la forme exacte du script (
json.dumps(..., ensure_ascii=False, indent=1) + "\n") est identique octet par octet — la régénération est déterministe comme annoncé. - Le fix lui-même : 6 lignes,
pairs.sort(key=lambda e: (e["fr"], e["en"]))avant sérialisation — sémantique claire, le commentaire du code documente le bruit historique (459/460 paires brassées pour 2 chemins déplacés, iit_lean #22008).
Nuances (dites pour transparence, non bloquantes)
- La suite complète
scripts/translation/tests/rejouée localement : 419 passed, 7 skipped, 11 failed — les 11 échecs sont tous des tests non-hermétiques qui assertent l'état du repo complet (ex.test_full_repo_state_passes_parityse définit lui-même « NOT a hermetic test » et exige les 483 notebooks réels présents dans l'arbre ; mon arbre de rejeu ne porte quetranslations/). Le body annonce « 435 verts (2 skipped) » sur arbre complet — cohérent avec mes 419+7 hors tests environnementaux, rien n'indique une régression propre à cette PR. À confirmer parScripts Tests (CPU)quand les runners reprennent (PR gate actuellement queued/cancelled — famine runners #13510 connue du board). - Checks CI au head encore en file au moment de la review (CodeQL vert, Scripts Tests pending) — verdict rendu sur rejeu local.
Verdict
Fix propre et prouvé : clé de tri stable, tests de régression avec contrôle positif, artefact régénéré fidèle. Rien de bloquant.
|
Translation guard violation (#10332). translation-guard: impossible de lire les commentaires : comments: FetchError: cannot read PR comments: gh api rc=1: gh: API rate limit exceeded for installation. If you reach out to GitHub Support for help, please include the request ID DE9E:1046D1:2A2DD05:3ECC0BF:6ADBFFD7 and timestamp 2026-10-24 00:46:16 UTC. For. Ceci n'est pas une absence mesuree (fail-closed inchange). See #15342. Three exits to clear this gate:
See #10332 for the override protocol. |
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
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 |
|
Une Pour passer ce gate, réécrivez le champ |
Grain: MED/guard — lane myia-po-2023:CoursIA-2 — prev: DEEP/notebook-python #22165
Summary
build_golden_set.pysérialisaittranslations/translation_golden_set.jsondans l'ordre d'itération (sorted(by_rel)= tri par chemin EN). Un déplacement de chemin (iit_lean, PR #22008) décalait tous les indices : 459/460 paires changeaient dans le diff pour deux chemins déplacés — du bruit, pas du travail.Le générateur trie désormais la table par le chemin FR (clé stable) : un déplacement de chemin ne décale que ses propres lignes.
Changements
scripts/translation/build_golden_set.py:pairs.sort(key=lambda e: (e["fr"], e["en"]))avant sérialisation (au lieu de l'ordre d'itération par chemin EN).scripts/translation/tests/test_build_golden_set.py(nouveau) : 3 tests — tri par FR (avec contrôle positif où les ordres FR/EN divergent), anti-brassage (un déplacement local ne touche que les lignes de la paire déplacée), déterminisme de la régénération.translations/translation_golden_set.json: régénéré. 460 → 483 paires = 23 paires ajoutées (fichiers réels arrivés surmaindepuis la dernière régénération) + re-ordonnancement FR des 460 paires communes. 0 paire retirée.Critères d'acceptation (#22015)
build_golden_set.pysérialise la table triée par chemin stable (FR)main: diff = 0 ligne (--check→GOLDEN-SET OK: 483 paires a jour)Validation
scripts/translation/tests/verts (2 skipped attendus) — aucune régression.build_golden_set.py --check→ OK (le JSON committé correspond à l'arbre).Pas de notebook touché (script + artefact JSON + test) : pas de re-exécution due. Pas de gate CI sur
build_golden_setà l'heure actuelle ; la régénération est une maintenance one-time + le fix de tri.Closes #22015
🤖 Generated with Claude Code