You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
translation: la traduction FR->EN perd les code-spans inline, aucun garde de parite ne le mesure (9 perdues, 3 vues, 6 silencieuses) #13536
La traduction FR->EN perd les code-spans inline (`...`), et rien dans
l'outillage de traduction ne le mesure. Mesure firsthand sur le premier lot rendu
(PR #12850, medical_chatbot_en.ipynb) :
code-spans perdues
9 (3 cellules d'exercice)
attrapees par un garde
3
passees silencieusement
6
Ce qui se perd
Le FR ecrit le marqueur d'indice comme le commentaire Python que l'etudiant va taper :
- `# Etape 1` : Definir un dictionnaire associant allergies et medicaments
La traduction rend :
- # Step 1: Define a dictionary mapping allergies to contraindicated medications
Sans les backticks, le # en tete d'item de liste devient un vrai H1 : la ligne
se rend en corps de titre a la premiere ouverture, alors qu'elle est invisible dans
un diff de source.
Pourquoi seulement 3 sur 9
detect_markdown_rendering.py a signale la PR sur heading_in_list — mais il ne
voit la perte que quand elle produit un titre, et il n'en signale qu'une par
cellule. Les 6 autres code-spans perdues (`# Step 2`, `# Hint`) sont
tout aussi fausses et ne declenchent aucun garde : ce sont des marqueurs de
code rendus en prose ordinaire. Le garde de rendu a servi de detecteur d'occasion ;
il n'est pas l'instrument de cette classe.
Ce qui ne la couvre pas
scripts/translation/ : check_translation_parity.py (provenance + 4 invariants #10041), check_translation_sync.py (drift par hash), check_perimeter.py
(perimetre de langue declare). Aucun ne mentionne backtick ni code-span —
verifie : grep -rc "code_span\|backtick" scripts/translation/*.py -> aucune
occurrence. La parite mesure la provenance, jamais la preservation du
balisage.
Correctif propose
Un invariant de parite de balisage, cote a cote FR/EN, sur les formes que la
traduction n'a aucune raison de changer :
nombre de code-spans `...` par cellule
nombre de fences ``` par cellule
nombre de liens [..](..)
Un ecart = anomalie. C'est mecanique et sans faux positif de langue : traduire
change les mots, jamais le compte de backticks d'une cellule.
Controle positif obligatoire (cf. handrolled-pattern-set-undercounts-silently) :
le detecteur doit rougir sur la forme exacte ci-dessus (- # Step 1: face a - `# Etape 1` :) et rester muet sur une traduction saine. Ecrire les deux
avant de croire un zero.
Portee
Le lot rendu ne couvre que 2 notebooks. #10038 est en HOLD user depuis le
2026-08-12 (trigger reduit a workflow_dispatch, cf catalog-pr-hygiene.md) :
le moteur ne tourne plus. C'est precisement la fenetre utile pour cabler
l'invariant — avant que la levee du HOLD ne regenere la classe sur tout le
corpus. Chaque _en.ipynb rendu sans ce garde portera la meme perte.
Grain: MED/tooling
Reparation ponctuelle du lot deja rendu : #12850 (9 spans restaurees, commit ab053dcec).
[CLAIMED] lane myia-po-2027:CoursIA-2 -- paths: MyIA.AI.Notebooks/Transl/, scripts/translation/ — grain MED/tooling, 1 PR atomique : ajout d'un garde mesurant la perte de code-spans FR→EN (9 perdues / 3 vues / 6 silencieuses mesurées sur PR #12850), libère l'acceptance de #13536, suite translation T4 #13544/#13550. Précédent : issue #13536 candidate-delivered mal posée (PR #12850 NE couvre PAS les 6 silencieuses — le label est faux, retrait à la livraison). prev: MED/notebook-python #13601
Activity
jsboige commentedon Aug 30, 2026
[CLAIMED] lane myia-po-2027:CoursIA-2 -- paths: MyIA.AI.Notebooks/Transl/, scripts/translation/ — grain MED/tooling, 1 PR atomique : ajout d'un garde mesurant la perte de code-spans FR→EN (9 perdues / 3 vues / 6 silencieuses mesurées sur PR #12850), libère l'acceptance de #13536, suite translation T4 #13544/#13550. Précédent : issue #13536 candidate-delivered mal posée (PR #12850 NE couvre PAS les 6 silencieuses — le label est faux, retrait à la livraison). prev: MED/notebook-python #13601
feat(translation,#13536): inline code-span drift guard
feat(translation,#13536): inline code-span drift guard (#13657)