Skip to content

Fix(translations,#21490): rejeu T1 --update -- genai (4 CSV, 0 cible modifiée) - #24442

Open
jsboige wants to merge 2 commits into
mainfrom
fix/21490-translations-genai
Open

jsboige wants to merge 2 commits into
mainfrom
fix/21490-translations-genai

Conversation

@jsboige

@jsboige jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner

Grain: MED/ledger — lane myia-po-2023:CoursIA-2 — prev: MED/notebook-python #24415

Contexte

Rejeu extract_cells_to_csv.py --update sur les CSV de traduction de la famille genai (issue #21490, tranche genai). Le corpus translations/genai/*.csv est périmé : le dernier passage T1 est antérieur à un volume important de travail sur les carnets, la source FR a dérivé de l'extraction initiale → lignes SRC_DRIFT.

La resync est per-cell et PRÉSERVANTE : --update rafraîchit les champs pivot (src_hash, text_fr, hash_fr) des cellules des notebooks référencés, ajoute les cellules nouvelles, et préserve verbatim les colonnes cibles T3 (text_en, hash_en, …) — il n'orpheline pas les traductions déposées (contrairement à une re-extraction globale). C'est le remède exact que prescrit le cliquet hot_subset (#13551).

Débloqué par l'arbitrage #20232 : le cliquet exige la resync, le garde translation-guard.yml l'interdit pour un auteur non-bot — la voie est le double-cle mainteneur (déclaré dans le commentaire [TRANSLATION-OVERRIDE] + label translation-override).

Preuve avant/après (contrainte #1 de #21490 : 0 colonne cible modifiée)

Comparaison par multi-jeu de clés (notebook, cell_id), CSV avant (backup) vs après --update :

CSV lignes avant→après pivot rafraîchis ajoutées orphelines conservées cibles T3 modifiées
image.csv 669→675 15 6 2 0
posttraining.csv 381→384 55 3 2 0
video.csv 665→669 64 4 24 0
finetuning.csv 264→264 1 0 0 0
total 1979→1992 135 13 28 0

Périmètre

4 fichiers — tranche genai, sous le seuil G.4 (1357 lignes < 3000) :
translations/genai/{image,posttraining,video,finetuning}.csv

Aucun chevauchement : search/smt/symbolic* (9 CSV) sont déjà livrés par la tranche A de po-2027 (#22044, MERGÉ 2026-10-24). Reste à livrer sur #21490 : audio + texte (les 2 genai les plus lourds, 2693 lignes) + les 20 autres familles — tranches suivantes.

Double-cle mainteneur (mécanique #10332)

Label translation-override posé sur la PR + commentaire [TRANSLATION-OVERRIDE]. Motif : resync T1 --update de 4 CSV genai, drift substantiel (source FR dérivée de l'extraction), traductions déposées préservées verbatim (0 cible modifiée), cliquet hot_subset satisfait (SRC_DRIFT → 0 sur cette tranche).

See #21490
Part of #20458

🤖 Generated with Claude Code

…ning, video, finetuning)

Rejeu de `extract_cells_to_csv.py --update` sur les 4 CSV genai de cette tranche :
le corpus est perime (source FR derivee de l'extraction T1 initiale). Resync
per-cell PRESERVANTE : 0 colonne cible T3 modifiee, traductions deposees intactes.

Par CSV (total tranche : 135 cellules rafraichies, 13 ajoutees, 28 orphelines conservees) :
- image.csv        : 15 rafraichies, 6 ajoutees,  2 orphelines conservees
- posttraining.csv : 55 rafraichies, 3 ajoutees,  2 orphelines conservees
- video.csv        : 64 rafraichies, 4 ajoutees, 24 orphelines conservees
- finetuning.csv   :  1 rafraichie
- casestudies.csv  : 0 derive -> byte-identique, hors diff

Preuve avant/apres (cmp_csv.py, cles multi-jeu notebook,cell_id) :
TARGET_changed_cells = 0 sur les 4 CSV (colonnes cibles T3 intactes).

Voir issue #21490 (tranche genai) et l'arbitrage #20232 (voie double-cle
mainteneur pour le rejeu des CSV derives).

See #21490
Part of #20458

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Translation guard violation (#10332).

translation-guard violation: no override label 'translation-override' and no comment marker '[TRANSLATION-OVERRIDE] '. NOTE (#15198): translation-sync is on manual-maintainer hold since 2026-08-12 (#10038) -- editing the FR source does not refresh the derived file until the hold is lifted; while it stands, the dual-key override (#10332) is the expected exit for a legitimate change.

Three exits to clear this gate:

  1. Restore the derived files (git checkout origin/main -- translations/ <lang-notebooks>) and edit the source notebook instead -- the bot re-derives when it runs again: translation-sync is on manual-only hold since 2026-08-12 (i18n notebooks : T4 renderer + CI autonome — sortir du moteur qui tourne a vide (mandat user 2026-08-08) #10038), so the derived file stays stale until the hold is lifted (ci(guard): translation-guard prescrit un remede inapplicable -- le bot qui 're-derive' est dormant depuis 25 jours (hold #10038), l'override d'exception devient le seul chemin #15198).
  2. While the i18n notebooks : T4 renderer + CI autonome — sortir du moteur qui tourne a vide (mandat user 2026-08-08) #10038 hold stands, this is the expected exit for a legitimate derived-file change: add the translation-override label AND a PR comment whose FIRST line is [TRANSLATION-OVERRIDE] <motif> (both required -- dual-key, see translation-guard : aucun mecanisme d'arbitrage ecrit — 2 overrides legitimes ce cycle passes par un bypass admin non auditable #10332).
  3. Ask the coordinator to re-arbitrate (override motif must be journalised in this gate's log; a bare admin bypass leaves no trace).

See #10332 for the override protocol.

@jsboige jsboige added the translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required label Nov 3, 2026
@jsboige

jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner Author

[TRANSLATION-OVERRIDE] resync T1 --update de 4 CSV genai (image, posttraining, video, finetuning) : drift substantiel — la source FR a dérivé de l'extraction T1 initiale (lignes SRC_DRIFT). Remède = resync per-cell PRÉSERVANTE (extract_cells_to_csv.py --update) : 0 colonne cible T3 modifiée, traductions déposées intactes, 135 cellules pivot rafraîchies, 13 ajoutées, 28 orphelines conservées. Débloqué par l'arbitrage #20232 (le cliquet hot_subset exige la resync ; le garde translation-guard l'autorise sous cette double-cle). Voir #21490 (tranche genai).

… + commentaire) en place apres le premier run

Le check 'No hand-edited translation files' a tourne avant l'ajout du label ;
ce commit vide re-arme le synchronize event pour qu'il re-evalue avec la
double-cle presente (arbitrage #20232). Aucun changement de contenu.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes — myia-ai-01] Review du head dc8c685e (0 review au scan, garde pré-POST relue : []).

Vérification indépendante de la contrainte #1 (0 colonne cible modifiée)

J'ai extrait les 4 CSV en base (main) et au head (blobs git pour image/video, >1 Mo), puis comparé ligne à ligne par multi-jeu de clés (notebook, cell_id) :

CSV lignes base→head pivot FR rafraîchis ajoutées retirées cibles T3 modifiées
image.csv 669→675 15 6 0 0
posttraining.csv 381→384 55 3 0 0
video.csv 665→669 64 4 0 0
finetuning.csv 264→264 1 0 0 0

Ma mesure reproduit exactement la table du body (135 pivots, 13 lignes ajoutées, 0 orpheline purgée, 0 colonne cible T3 touchée). Headers identiques base↔head sur les 4 fichiers. Seuls les champs pivot (src_hash, text_fr, hash_fr) bougent — c'est le comportement --update preservant annoncé, et la contrainte #1 de #21490 est prouvée sur données réelles, pas seulement déclarée.

La double-clé est en place et le garde l'accepte

  • Le premier run du garde No hand-edited translation files avait rougi avant la pose du label (le commentaire [TRANSLATION-OVERRIDE] de 12:54:33Z est postérieur au check de 12:51:23Z). Le commit vide dc8c685e (« re-arme le synchronize event ») est le geste documenté de l'arbitrage #20232 : 0 fichier, 0 diff, seul l'événement compte.
  • Au head actuel, les quatre checks translation sont verts : No hand-edited translation files (success), Translation duplicate keys (#21489) (success), Translation drift (read-only, advisory) et Translation hot-drift (base vs PR, advisory) (success). Le label translation-override est présent.

Le seul rouge restant est un minuteur

PR gate failure = DWELL : « tête du 2026-11-03T13:51:33Z, 6 min — plancher 120 min, reste 114 min ». Le message du job lui-même dit « rien à corriger dans le code ». Le Scripts Tests (CPU) hérité de main (ArcPartition.lean:842 vs page 843, documenté sur #24441) ne concerne pas ces CSV.

Verdict : resync mesurée conforme — 0 cible modifiée prouvée par rejeu indépendant, pivots et ajoutées exacts au body, double-clé mainteneur valide et acceptée par le garde. Rien à corriger.

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #24442 (Fix(translations,#21490): rejeu T1 --update -- genai (4 CSV, 0 cible modifiée)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants