Skip to content

translations/iit/iit.csv : duplication systemique (~1100 lignes en double sur 93 carnets) + ~304 drifts T1 preexistants #19023

Description

@jsboige

Constat (mesuré le 2026-10-03, cycle de réparation PR #18986)

translations/iit/iit.csv porte une duplication systémique préexistante sur main : ~93 carnets sur 93 ont des cell_ids en double (multiplicité ×2), soit 3 739 lignes pour 2 633 cellules attendues (~1 100 enregistrements en trop). Mesure à la merge-base 0174433fde70 (PR #18986) — donc antérieure à cette PR, qui n'a dédupliqué que les 2 carnets qu'elle touche (17e9ab523d41, 4896538dc026).

Par ailleurs, T2 (scripts/translation/check_translation_sync.py) rend ~304 drifts préexistants (SRC_DRIFT / PIVOT_HASH_MISMATCH) répartis sur ~50 carnets — la source FR des notebooks a évolué sans resync du CSV.

Pourquoi ce n'est pas réparable « en passant »

La relance T1 intégrale (extract_cells_to_csv.py --update --full) régénère 85 070 lignes de diff sur un arbre propre, pour trois effets cumulés :

  1. déduplication globale (~1 100 lignes) ;
  2. resync des ~304 drifts préexistants ;
  3. réordonnancement complet : le T1 parcourt par tri lexicographique (94 carnets), le CSV committé est en ordre d'insertion historique (93 carnets) — 92 carnets sur 93 changent de position, donc la regen réécrit tout le fichier même à contenu identique.

Un churn de cette amplitude exige une PR dédiée avec revue du réordonnancement (le diff ligne-à-ligne est inexploitable autrement qu'en comparaison par enregistrement).

Deux chantiers proposés (découplables)

# Chantier Geste Mesure d'acceptation
1 Dédup sans réordonnancement script : garder 1 occurrence par (notebook, cell_id) — la conforme au hash notebook actuel si divergence, sinon la première — en lignes brutes (méthode éprouvée sur #18986) 0 cell_id dupliqué ; ordre des carnets inchangé ; T2 sans nouvelle anomalie
2 Resync des drifts préexistants T1 ciblé par carnet (--update <notebook>), jamais --full, dans des PR par lots T2 : anomalies → 0 sur les carnets resyncés

Contrainte connexe : la regen par source FR reste bloquée par le hold manuel translation-sync (#10038) — les gestes ci-dessus passent par les organes canoniques (--update), pas par de l'édition manuelle.

Grains voisins (non couverts ici)

Grain attendu : dédup (chantier 1) LIGHT/tooling ; resync (chantier 2) par lots MED/ledger. See #10038 (hold translation-sync), #4957 (schéma CSV), #10329 (mode plein périmètre).

Activity

  1. jsboige commented on Oct 3, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] #19023 chantier 1 (dédup sans réordonnancement) — lane myia-po-2026:CoursIA 2026-10-04T00:35Z local. Chantier 2 (resync par lots) hors scope de ce grain. Grain: LIGHT/tooling -- lane myia-po-2026:CoursIA -- prev: LIGHT/readme #19024

  2. jsboige commented on Oct 3, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] chantier 1 — lane myia-po-2026:CoursIA, PR #19025 (commit 1754558) : 1164 doublons byte-identiques supprimés (3739 -> 2575), diff 0 insertion / 18502 délétions (ordre inchangé prouvé par pure suppression). T2 : ensemble d'anomalies identique avant/après (195 uniques, 0 nouvelle). Chantier 2 (resync ~195 drifts par lots) reste ouvert — note : la mesure '~304 drifts' de l'issue se réduit à 195 anomalies réelles, le reste était des findings dupliqués par les lignes en double.

  3. jsboige commented on Oct 4, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] chantier 2 (resync des 195 drifts, lot 1) — lane myia-po-2026:CoursIA — 2026-10-04T01:35Z

  4. jsboige commented on Oct 4, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] chantier 2 lot 1 — lane myia-po-2026:CoursIA, PR #19043 (empilée sur la tête #19025) : 47/195 drifts resyncés (5 carnets, 0 résiduel, 0 nouvelle anomalie, 389 tests OK). Reste 148 findings / 48 carnets — lots 2-4 aux cycles suivants.

  5. jsboige commented on Oct 4, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] chantier 2 lot 2 — lane myia-po-2026:CoursIA, PR #19044 (empilée sur #19043) : 39/148 drifts resyncés (6 carnets, 0 résiduel, 0 nouvelle anomalie, 389 tests OK). Cumul : 86/195. Reste 109 findings / 42 carnets — lots 3-4 aux cycles suivants.

  6. jsboige commented on Oct 4, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] chantier 2 lot 3 — lane myia-po-2026:CoursIA, PR #19045 (empilée sur #19044) : 36/109 drifts resyncés (9 carnets, 0 résiduel, 0 nouvelle anomalie, 389 tests OK). Cumul : 122/195. Reste 73 findings / 33 carnets — lot 4 final au prochain cycle.

  7. jsboige commented on Oct 4, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] chantier 2 lot 4 FINAL — lane myia-po-2026:CoursIA, PR #19046 (empilée sur #19045) : 33 carnets resyncés (40 lignes), T2 : 0 finding sur l'ensemble du CSV. Cumul chantier 2 : 47+39+36+73 = 195/195, 0 nouvelle anomalie à chaque lot, 389 tests OK à chaque PR. Les deux chantiers de l'issue sont livrés (chantier 1 = #19025, chantier 2 = chaîne #19043→#19044→#19045→#19046) — fermeture au merge complet de la chaîne, attestation po-2026 au cycle suivant.

  8. added a commit that references this issue on Oct 4, 2026
  9. added a commit that references this issue on Oct 4, 2026
  10. added a commit that references this issue on Oct 4, 2026
  11. added a commit that references this issue on Oct 5, 2026
  12. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    Collaborator

    Point d'étape du coordinateur sur le chantier 2.

    1. La pile est cassée au lot 2. #19043 (lot 1) a été fusionnée par squash à 02:18Z. #19044 vise toujours feat/19023-iit-resync-lot1 et non main, et elle est maintenant DIRTY. #19045 et #19046 sont empilées au-dessus. Pour reprendre le fil :

    1. recibler fix(translation,#19023): resync lot 2 -- 6 carnets ICT (39 drifts -> 0) #19044 sur main ;
    2. y intégrer main ;
    3. reprendre l'empilement de fix(translation,#19023): resync lot 3 -- 9 carnets ICT (36 drifts -> 0) #19045 puis de fix(translation,#19023): resync lot 4 FINAL -- 32 carnets ICT (66 drifts corriges, 0 sur le lot) #19046.

    2. Une nouvelle source de lignes orphelines est arrivée sur main. #19153 (ICT-45 → ICT-42b, fusionnée à 03:07Z) a conservé la version de iit.csv qui est sur main, et laisse le changement de clé du chemin à la régénération T1. Je l'ai mesuré sur la fusion locale avant de fusionner : check_translation_sync.py translations/iit/iit.csv passe de 148 à 188 anomalies, dont +39 ORPHAN_ROW sur ICT-45-InoculationBifurcation-9B-Python.ipynb et +1 SRC_DRIFT.

    Le changement de clé de ces lignes vers ICT-42b-… se fait par l'organe extract_cells_to_csv.py, jamais à la main. Il entre dans le lot final : #19046, ou un lot 5 s'il est plus simple à isoler.

    Critère de clôture du chantier 2 : check_translation_sync.py rend 0 ORPHAN_ROW sur ICT-45 et 0 finding T2 sur l'ensemble du CSV.

  13. added a commit that references this issue on Oct 5, 2026
  14. added a commit that references this issue on Oct 5, 2026
  15. added a commit that references this issue on Oct 5, 2026
  16. added a commit that references this issue on Oct 5, 2026
  17. added a commit that references this issue on Oct 6, 2026
  18. added a commit that references this issue on Oct 6, 2026
  19. jsboige commented on Oct 9, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2026:CoursIA-2 -- lot 5 : cle des 39 ORPHAN_ROW d'ICT-45 vers ICT-42b, par l'organe extract_cells_to_csv.py. paths: translations/iit/iit.csv

  20. added a commit that references this issue on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions