Repository navigation
SRC_DRIFT : la colonne text_fr des CSV de traduction est un instantane perime, coherent avec lui-meme (2007 cellules, dont 47 avec traduction deposee) #13551
Description
Activity
[CLAIMED] #13551 — myia-po-2023:CoursIA 2026-08-30T18:10Z — paths: translations/genai/{finetuning,casestudies,image}.csv, translations/quantconnect/*.csv (research.ipynb), scripts/translation/tests/
Preflight 3 axes : (1) sous-ensemble chaud re-mesure firsthand sur arbre origin/main frais (cc4d59e) : SRC_DRIFT 2047 / ORPHAN_ROW 2292 / MISSING_LANG 206 / TRAD_DRIFT 1 ; sous-ensemble « drift ET traduction deposee » = 46 cellules / 8 notebooks (l'issue mesurait 47 le matin — delta -1 sur QC research, cohérent avec un arbre qui bouge) ; (2) 0 PR ouverte touchant ces CSV ou check_translation_sync.py (PR #13591 = sudoku/search-part2, sans intersection) ; (3) 0 claim actif sur l'issue (0 commentaire).
Plan : resynchro par cellule (text_fr + src_hash depuis le notebook courant, retraduction EN des cellules materiellement changees — jamais d'extraction globale, piege de l'issue respecte) + cliquet test sur le sous-ensemble chaud (post-fix : 0 attendu).
[DELIVERED] #13551 — myia-po-2023:CoursIA — PR #13687
Les 2 livrables demandés + le piège respecté :
- Resync per-cellule des 47 cellules chaudes (
text_fr/src_hash/hash_frdepuis les notebooks courants) avec retraduction des 29 matérielles (20 EN + 9 RU, difflib < 0.98 ; les 18 cosmétiques gardent leur traduction byte-identical). Aucune extraction globale — diff logique vérifié = exactement les 47 lignes cibles, tout le reste byte-identical. - Cliquet hot-subset :
scripts/translation/tests/test_hot_subset_ratchet.py(repo-wide hot == 0 + fixture hermétique de sémantique). Suite 345 PASS.
Chiffres post-fix relancés firsthand : HOT 47 → 0, SRC_DRIFT 2047 → 2000, ORPHAN_ROW/MISSING_LANG/TRAD_DRIFT inchangés (2292/206/1).
Note comptes : le claim annonçait 46 (join tsync ayant manqué 1 cellule QC research) ; la recomputation directe par hash fait autorité = 47. Advisory #6949 : verdict
ok(traductions déposées, pas du resync-only suspendu).- Resync per-cellule des 47 cellules chaudes (
- added a commit that references this issue
on Aug 30, 2026 - added a commit that references this issue
on Sep 8, 2026 - added a commit that references this issue
on Sep 9, 2026 - added a commit that references this issue
on Sep 9, 2026 - added a commit that references this issue
on Sep 13, 2026 - added a commit that references this issue
on Sep 13, 2026 - added 6 commits that reference this issue
on Sep 14, 2026 - added a commit that references this issue
on Sep 29, 2026 - added a commit that references this issue
on Sep 29, 2026 - added a commit that references this issue
on Sep 29, 2026 - added a commit that references this issue
on Oct 4, 2026 - added a commit that references this issue
on Oct 10, 2026 - added a commit that references this issue
on Oct 10, 2026
Grain: MED/tooling — lane myia-ai-01:CoursIA — prev: MED/guard #13548
Le defaut
La colonne
text_frdes CSV de traduction est un instantane du notebook source. Quand le notebook francais evolue, l'instantane ne suit pas -- et commehash_frest recalcule sur l'instantane, la ligne reste coherente avec elle-meme. Aucune verification interne au CSV ne peut la signaler.Cas concret, trouve en travaillant sur #13542 :
Le notebook FR a ete repare (par
fix_hint_headings.py-- la forme backtickee est la forme correcte). Le CSV porte encore l'avant. C'est la seule difference sur cette cellule, ethash_frstocke =hash(text_fr perime)=0a2e6e8ca6a4ff4d: cliquet parfaitement ferme sur un contenu perime.Pourquoi c'est plus qu'un detail cosmetique :
text_frest la reference de traduction. Tout raisonnement de la forme « l'anglais est-il fidele au francais ? » qui lit cette colonne compare a un francais qui n'existe plus. Je m'y suis fait prendre moi-meme sur #13542 : mon applier conditionnait une correction a « le sibling FR porte-t-il cette forme ? », a lu le CSV, et a conclu a un defaut cote francais qui n'existait pas. La mauvaise reponse etait coherente -- c'est ce qui la rend dangereuse.L'organe existe deja, et il est non bloquant par conception
scripts/translation/check_translation_sync.pynomme exactement ce verdict :Il tourne en CI via
.github/workflows/translation-drift.yml, en--check(« Non-blocking: --check always exits 0. Drift is surfaced as a notice »). Ce choix etait le bon en phase POC. Il a pour effet qu'aujourd'hui personne ne regarde le compte.Mesure du 2026-08-30,
python scripts/translation/check_translation_sync.py translations/:Antecedent : #10287 (CLOSED) traitait le meme verdict a 78 cellules -- « translation_plan() ignore src_hash, les 78 cellules en SRC_DRIFT ne sont jamais retraduites ». Le compte a ete multiplie par 25 depuis, sans que rien ne rougisse.
Le sous-ensemble qui mord : 47 cellules, 8 notebooks
Les 2007 bruts ne sont pas tous actionnables, et il faut le dire pour que personne ne parte sur une chasse a 2007 items. Une source qui derive alors qu'aucune traduction n'est deposee n'a rien a retraduire : le drift y est l'etat normal d'un moteur en attente.
Le sous-ensemble ou l'anglais publie ou rendable est fidele a un francais qui n'existe plus --
SRC_DRIFTET au moins une colonnetext_<lang>remplie :GenAI/FineTuning/FT-02-QLoRA-Quantization.ipynbGenAI/FineTuning/FT-03-Supervised-FineTuning-SFT.ipynbGenAI/Image/01-Foundation/01-2-GPT-5-Image-Generation.ipynbGenAI/CaseStudies/Recipe-Maker/receipe_maker.ipynbGenAI/CaseStudies/Barbie-Schreck/barbie-schreck.ipynbGenAI/CaseStudies/Fort-Boyard/fort-boyard-python.ipynbQuantConnect/partner-course-quant-trading/kit-transitoire/03-Framework-Composite/research.ipynbGenAI/FineTuning/FT-01-Introduction-FineTuning.ipynb47 cellules, 8 notebooks. C'est le grain.
Ce qui est demande
text_fr/src_hashsur ces 47 cellules depuis les notebooks courants, et re-traduire celles dont le contenu a materiellement change (pas seulement une forme de backtick).Piege a ne pas prendre
Ne pas reparer en re-extrayant tous les CSV d'un coup (
extract_cells_to_csv.pysurtranslations/). Cela ecraseraittext_frpartout y compris la ou une traduction deposee reference l'ancien texte -- on echangerait 2007 drifts silencieux contre 47 traductions orphelines silencieuses, sans qu'aucun verdict ne bouge. La resynchro doit etre faite par cellule, avec sa retraduction, sur le sous-ensemble chaud.Contexte
Trouve en portant #13542 (traduction
medical_chatbot/FT-05). Sans rapport avec le contenu de cette PR -- c'est l'instrument de reference qui derive, pas la traduction qu'elle livre.