Repository navigation
fix(translation,#20551): re-rendu EN de 01-2 GPT-5 Image -- repare la parite FR/EN rouge sur main - #20777
Conversation
… -- parite FR/EN de main test_full_repo_state_passes_parity est rouge sur main depuis #20551 (13/10) : le TP2 a ajoute 8 cellules au carnet FR 01-2 et retire la cellule 17aab9f8, sans re-rendre le jumeau _en cree la veille par #20449 (STRUCTURE_DRIFT, 37 cellules FR contre 30 EN). La jambe Scripts Tests de toute PR rougit sur ce seul defaut. Second defaut, muet : 6 cellules markdown deja traduites ont change en FR dans #20551 (exercices devenus exemples guides). La mise a jour du CSV a rafraichi leur src_hash en gardant l'ancien text_en : la synchro les voit IN_SYNC alors que la traduction decrit l'ancien texte. Geste (pipeline T1/T3/T4, aucune edition du carnet _en a la main) : - T1 : CSV deja a jour cote FR ; ligne orpheline 17aab9f8 retiree. - T3 : 10 text_en ecrits (4 nouvelles cellules, 6 cellules modifiees), hash_en = cell_hash du module ; spans code et sorties citees inchanges. - T4 : render --require-translated, 20/20 markdown traduits, 17 code copiees verbatim, 0 fallback, 0 orphelin. Validation : pytest scripts/translation/tests/ -> 403 passed, 2 skipped. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Path-collision (organ #13359/#13615)Cette PR #20777 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review : fix(translation,#20551) — re-rendu EN de 01-2 GPT-5 Image
Verdict : APPROVE (ré exécution mécanique au head b0152988, identité clusterManager-Myia).
Ce que j'ai réellement vérifié sur les artefacts du head, indépendamment du corps de la PR :
1. Delta CSV exact et chirurgical. Parse du CSV head vs main (translations/genai/image.csv, 609 vs 610 lignes) :
- 1 ligne retirée :
17aab9f8(l'orpheline signalée, correspondant à la cellule Parameters supprimée en #20551) ; - 10 lignes modifiées, toutes uniquement sur les colonnes
text_en/hash_en— exactement les 6 cellules modifiées (ea7cd836,jxwlftsm05, « 9bf10ff2 », « gkk2vqpxov », « ubm6sfxypqb », « cuqkx7t59ob ») et les 4 nouvelles (nv-exemple-3modes-md,nv- exo1-md, « nv-exo2-md », « nv-exo3-md ») listées dans le corps ; - aucune autre ligne, aucune autre colonne touchée.
2. Intégrité du pipeline appliqué. J'ai extrait la formule canonique cell_hash de check_translation_sync.py (sha256(normalize(text))[:16], rstrip par ligne + strip newline) et recalculé :
hash_en = cell_hash(text_en): 20/20 OK, 0 mismatch, 17 lignes sans traduction (politique normale) ;src_hashdes 37 lignes du carnet contre le carnet FR réel au head : 37/37 OK, 0 stale, 0 ligne orpheline.
3. Parité structurelle du jumeau EN. Comparaison intégrale FR↔EN au head :
- 37 cellules = 37 cellules, séquence de types identique ;
- 17 cellules code verbatim (0 différence) — les sorties et le code ne sont pas retouchés ;
- 20 cellules markdown traduites, toutes byte-identiques au
text_endu CSV (0 mismatch, 0 orpheline, 0 non-couverture).
4. Ancrage des traductions. Sur les 20 textes traduits : 0 span de code `...` du FR absent de l'EN ; valeurs numériques toutes préservées — l'unique écart détecté (« 400 000 tokens » → « 400,000 token context window ») est la localisation légitime des nombres, pas une perte de valeur. 0 mot FR résiduel.
Le second défaut décrit au corps (6 text_en rafraîchis par src_hash mais décrivant l'ancien texte après #20551) est confirmé présent au head et bien couvert par le geste : les 6 lignes visées font partie des 10 modifiées.
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
…-free base refresh, See #20777)
…ase refresh, pre-#20777 cure -- lane myia-po-2023:CoursIA)
…base refresh, pre-#20777 cure -- lane myia-po-2023:CoursIA)
… base refresh, pre-#20777 cure -- lane myia-po-2023:CoursIA)
…e refresh, pre-#20777 cure -- lane myia-po-2023:CoursIA)
…refresh, pre-#20777 cure -- lane myia-po-2023:CoursIA)
… refresh, pre-#20777 cure -- lane myia-po-2023:CoursIA)
…twin-parity STRUCTURE_DRIFT sur #21175 La cellule markdown nouvelle (lecture-cmp-modes-guide) et les 5 cellules FR reecrites rendaient la paire jumeau desynchronisee (38 FR vs 37 EN). Resync per-cell du CSV (6 entrees, 0 hors 01-2) + re-traduction EN + re-rendu du _ipynb EN via le pipeline canonique (render_notebook, geste #20777/#21110). Guards locaux : twin-parity PASS, resync-only verdict ok, 0 cellule code/output touchee cote EN (18 lignes markdown seules). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Grain: LIGHT/notebook-python -- lane myia-ai-01:CoursIA -- prev: MICRO/config #20917
Ce qui est rouge sur
mainscripts/translation/tests/test_check_translation_parity.py::test_full_repo_state_passes_parityéchoue surmain(1cef8a5502) :La jambe Scripts Tests de toute PR rougit sur ce seul défaut, quel que soit son contenu.
Cause
01-2-GPT-5-Image-Generation_en.ipynb(30 cellules).17aab9f8, sans re-rendre le jumeau anglais.Un second défaut, muet, s'y ajoute : 6 cellules markdown déjà traduites (
ea7cd836,jxwlftsm05,9bf10ff2,gkk2vqpxov,ubm6sfxypqb,cuqkx7t59ob) ont changé en FR dans #20551, quand les exercices sont devenus des exemples guidés. La mise à jour du CSV a rafraîchi leursrc_hashet gardé l'ancientext_en.check_translation_sync.pyles voit doncIN_SYNCalors que la traduction décrit l'ancien texte. Le CSV n'enregistre pas contre quelle version source une traduction a été faite : c'est un angle mort de l'organe, signalé à part.Geste
Pipeline T1/T3/T4, sans édition du carnet
_enà la main :17aab9f8est retirée.text_enécrits, pour les 4 nouvelles cellules et les 6 modifiées.hash_enest calculé parcell_hashdu module ; les spans de code et les sorties citées restent identiques au FR.render_notebook.py --require-translated:Vérifié par lecture du CSV parsé : seules les 10 lignes visées changent (colonnes
text_enethash_en), et seule l'orpheline disparaît.Validation
python -m pytest -q scripts/translation/tests/→403 passed, 2 skipped in 50.84s(donttest_full_repo_state_passes_parity).Hooks pre-commit passés : gitleaks, H.3, scrub papermill, source-newlines, cellules compilables.
See #20551 · See #1650
🤖 Generated with Claude Code
Ajout du 15/10 (coordinateur) : périmètre élargi pour sortir d'un interblocage
Le PR gate échoue sur tout rouge hérité de
main, et le merge admin est refusé. Cette PR héritait du rougecheck-nav-chain(2 orphelins ANALYSE), que corrige #20704 ; #20704 héritait du rouge de parité, que corrige cette PR. Aucune des deux ne pouvait passer seule. Le périmètre s'élargit donc, ce qui est déclaré ici (composite justifié, G.4) :90f96eb5b2: cherry-pick ded17382fc03(Fix(analyse,nav): rattacher ANALYSE-10 et ANALYSE-06_en a la chaine de navigation (main rouge check-nav-chain) #20704). Il ne touche que la navigation markdown de 2 carnets ANALYSE (5 lignes, aucune clésource/outputs/execution_countde code), donc aucune ré-exécution (C.2, markdown-only).check_notebook_nav_chain.py --checkdonne rc=0. Fix(analyse,nav): rattacher ANALYSE-10 et ANALYSE-06_en a la chaine de navigation (main rouge check-nav-chain) #20704 sera fermée comme intégrée, avec crédit.355f83b2a6: deux organes ne voyaient pas la forme canonique d'un jumeau_en.check_split_reading_cells.py: le carve-out Add: consolidation Oversight-Scaling-Laws — exercices stubs (C.1) + Lectures manquantes (Nim/Statistics/Wargames) #17777 (énoncé d'exercice adjacent à son stub) ne reconnaissait que « Exercice ». Il couvre aussi « Exercise », et ses deux garde-fous (en-tête d'interprétation déguisé, citation de sortie) reçoivent leur miroir anglais, pour que l'ouverture du titre ne rouvre pas le trou fermé par Add: consolidation Oversight-Scaling-Laws — exercices stubs (C.1) + Lectures manquantes (Nim/Statistics/Wargames) #17777.INTERPRETATION_REest inchangé. Un test vérifie qu'une interprétation déguisée sous « Exercise » reste rouge.detect_notebook_plan_loss.py: le lookahead de_BOLD_INLINE_REpasse de `à. Un label gras suivi de sa liste collée (Instructions:Mesures à
355f83b2a6: split-reading rc=0, plan-loss rc=0 sur les 3 carnets, nav-chain rc=0, twin-parity PASS,pytestsur les 2 fichiers d'organes : 159 passed, 1 xfailed ;pytest scripts/translation/tests/: 403 passed, 2 skipped.