Skip to content

fix(fine-tuning,#15263): FT-05 doc-honesty — qualify non-measured metrics, correct arXiv id, align GPU prose (markdown-only) - #15276

Merged
myia-ai-01 merged 4 commits into
mainfrom
fix/15263-ft05-prose
Sep 9, 2026
Merged

myia-ai-01 merged 4 commits into
mainfrom
fix/15263-ft05-prose

Conversation

@jsboige

@jsboige jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner

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

fix(fine-tuning,#15263): FT-05 doc-honesty — qualify non-measured metrics, correct arXiv id, align GPU prose (markdown-only)

Contexte

Dispatch po-2025 ([ADJOINT] #15263) : le notebook
MyIA.AI.Notebooks/GenAI/FineTuning/FT-05-ModelMerging-Routing.ipynb présente
des contradictions de honnêteté documentaire — des métriques (perplexité,
qualité DARE, comparaison cross-domaine) annoncées alors qu'aucune n'est
mesurée dans les sorties committées, un identifiant Ilharco faux
(arXiv:2210.09316 = un papier SMEFT physique, pas "Task Arithmetic"), et un
coût GPU machine-dépendant (~5 min sur RTX 3090, 25.8 GB VRAM) qui
contredit l'output committé.

Finding Astra wave 2 — CONFIRMED_PEDAGOGY ; bibliographie revalidée sur source
primaire avant fix (l'id correct d'Ilharco et al. 2022, "Editing Models with
Task Arithmetic", est arXiv:2212.04089).

Correctif (marque "markdown-only" — la voie recommandée du dispatch)

Aucune cellule source de code n'est modifiée : il n'y a donc pas de
re-exécution
requise (règle C.3, exception markdown-only). Les 10 substitutions
portent sur le texte de 8 cellules markdown :

Ref Cellule (idx / id) Substitution
R1 0 / 3fc218c8 coût-bénéfice GPU : ~5 min sur RTX 3090 (25.8 GB) → aligné sur la GPU 8 Go de l'output committé ; chiffres absolus machine-dépendants retirés (règle C.5)
R2 12 / 631283bf arXiv:2210.09316 → arXiv:2212.04089 (seul id Ilharco correct ; le 2ᵉ paragraphe le citait déjà)
R3 11 / e3f84171 métriques cross-domaine → explicitement non mesurées
R4 17 / b1cc4612 perplexité LERP → non mesurée
R5 20 / ba2645cd perplexité SLERP → non mesurée (référence bibliographique conservée comme telle)
R6 23 / 1f45af4a qualité DARE (≈95-98 %) → ordre de grandeur de la littérature, non mesuré
R7a 31 / 095833db 10 questions cross-domaine → 2 questions retenues (la cellule #30 n'en compare que 2)
R7b 31 / 095833db métrique de comparaison perplexité → non mesurée
R8 41 / 981e8e66 métriques « manuelles » → « pas calculées » (les outputs ne contiennent que des générations)
R9 41 / 981e8e66 ~10 secondes sur RTX 3090 → coût addition vectorielle sur ~3.1M params, même GPU 8 Go (cellule #1)

Les références à la cellule GPU sont corrigées pour pointer vers cellule #1
(l'index 0-based de la cellule code b2c3d4e1), l'output committé étant
NVIDIA GeForce RTX 3070 Laptop GPU, 8.6 GB VRAM.

Invasion de l'acceptation de l'issue #15263 ↔ preuves

# Critère d'acceptation Preuve dans cette PR
1 GPU cohérent avec l'output committé R1 (idx 0) + R9 (idx 41) : prose alignée sur RTX 3070 Laptop, 8.6 GB VRAM (cellule #1) ; les timings/VRAM absolus (~5 min, 25.8 GB) de la machine ont été retirés (règle C.5 — machine-dependent → retirer, pas ré-épingler) en citant la cellule de mesure.
2 Identifiant Ilharco unique et vérifié firsthand R2 (idx 12) : 2210.09316 (papier SMEFT, faux) → 2212.04089 (Ilharco et al. 2022, "Editing Models with Task Arithmetic", vérifié sur la source primaire). Le notebook ne cite désormais que 2212.04089 pour Ilharco (grep 2210.09316 = 0 occurrence).
3 Toute perplexité/éval annoncée est soit calculée dans des outputs réels, soit explicitement non mesurée R3, R4, R5, R6, R7b, R8 : chaque métrique annoncée (perplexité LERP/SLERP, qualité DARE, comparaison cross-domaine, « manuelles ») est reformulée en « non mesurée ici » — les sorties committées ne contiennent que des générations textuelles, aucune perplexité ni score.
4 Si code modifié : re-exécution end-to-end GPU Non applicable — aucune cellule source de code modifiée (`git diff ...

Invariants vérifiés

  • Byte-identity du code : script de comparaison nbformat origin/main ↔ branche —
    structure (42 cellules), IDs, type, ordre préservés ; pour chaque cellule code,
    source + outputs + execution_count + metadata identiques ; seuls les
    champs source de 8 cellules markdown diffèrent. nbformat 4 / minor 5.
  • Diff minimal : git diff origin/main...HEAD --stat = 1 file changed, 44 insertions(+), 33 deletions(-).
  • Pre-commit H.3 : passé (execution_count non nul + outputs présents sur toutes
    les cellules code — aucun notebook non-exécuté committé).
  • grep 2210.09316 = 0 ; cellule #1 = référence correcte (cellule b2c3d4e1, idx 1).

Observation pré-existante (signalée, non traitée ici)

La cellule 631283bf (idx 12, §2 Task Vectors) contient deux rédactions
concatenées du même §2 (« ## 2. Les Task Vectors » en double, deux introductions
parallèles) — un artefact de copie pré-existant sur origin/main, présent
avant ce fix (mesuré sur la version origin/main : les deux en-têtes et les deux
paragraphes y étaient déjà, seule l'id arXiv différait). Ce fix n'a fait que
corriger l'identifiant ; la dé-duplication du §2 est un chantier de contenu
distinct, hors des 4 critères d'acceptation de #15263. À traiter en sujet séparé.

See #15263

🤖 Generated with Claude Code

Co-Authored-By: Claude-Code noreply@anthropic.com

…rics, correct arXiv id, align GPU prose (markdown-only)

- Qualify all announced perplexity/quality/DARE metrics as NOT measured in
  committed outputs (only generations are printed) — R3/R4/R5/R6/R7/R8.
- Correct Ilharco arXiv id 2210.09316 -> 2212.04089 (the only correct
  citation; second paragraph already referenced it) — R2.
- Align GPU cost prose to the committed RTX 3070 Laptop 8.6 GB VRAM output
  (cell #1); retire machine-dependent absolute timings/VRAM — R1/R9.
- Correct '10 questions cross-domaine' -> '2 questions retenues' — R7a.

Markdown-only: code cells, outputs, execution_count, metadata byte-identical.
No re-execution (C.3 exception: no code-cell source modified).

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

Copy link
Copy Markdown
Contributor

[ADJOINT][PREFLIGHT COMMENTED] Contre-vérification au head 5e816c4a621fd83713d1b81bf03727ada1255c49.

Le scope est bien markdown-only et atomique : 8 cellules markdown changées ; code, outputs, execution_count, metadata notebook et nbformat sont identiques à origin/main. La correction bibliographique est confirmée firsthand : 2212.04089 est bien Editing Models with Task Arithmetic ; 2210.09316 est un papier SMEFT sans rapport. Aucun thread inline et check_unaddressed_nits.py 15276 est vert.

La levée n'est toutefois pas complète : plusieurs affirmations quantitatives/qualitatives restent présentées comme des observations alors que les outputs ne les établissent pas, et certaines sont directement démenties par les générations committées.

  • cellule e3f84171 : « chaque adaptateur répond mieux dans son domaine » et « observée dans les générations » ; les quatre générations de la cellule 10 ne permettent pas d'établir ce classement de façon fiable ;
  • cellule b1cc4612 : le LERP « répond de manière intermédiaire » et « gagne en polyvalence » n'est pas mesuré par l'output ;
  • cellule ba2645cd : SLERP « ressemble plus aux deux domaines préservés » / « reste Tech » / « reste Cuisine » est contredit par les réponses committées, notamment « prez-noir » côté cuisine ;
  • cellule 1f45af4a : DARE « performe au niveau des adaptateurs spécialisés » reste une conclusion de performance non mesurée ;
  • cellule 095833db : le classement attendu DARE > SLERP > LERP et « option sans regret » restent normatifs sans métrique ;
  • cellule 981e8e66 conserve un runtime machine-dépendant (« quelques secondes ») sous le titre « Coût-bénéfice mesuré », contrairement à C.5, qui demande de retirer le coût absolu plutôt que de le ré-épingler.

Réparation bornée demandée : reformuler ces passages comme hypothèses à tester / lectures non mesurées, sans dire qu'ils sont observés dans les outputs ; retirer le runtime absolu et le libellé « mesuré ». Aucun changement code ni ré-exécution n'est nécessaire si la réparation reste markdown-only. Après nouveau head : refaire la preuve byte-identical des surfaces code/output/execution/metadata et le check nits.

Ce commentaire est un preflight COMMENTED, ni CHANGES_REQUESTED, ni verdict de merge.

…ctures attendues (preflight 5593806917)

Six cellules markdown reformulees conformement au preflight adjoint :
- e3f84171 : « Observation » -> « Lecture attendue » ; « preuve qualitative » -> « indice qualitatif » ; « observée dans les générations » retire (les 4 generations ne permettent pas d'etablir le classement)
- b1cc4612 : LERP « intermédiaire / gagne en polyvalence » presente comme lecture attendue non mesuree
- ba2645cd : SLERP « reste Tech sur Tech, Cuisine sur Cuisine » -> propriete attendue de la litterature ; les generations committees (breves, parfois incoherentes, ex. « prez-noir ») ne l'etablissent pas
- 1f45af4a : DARE « performe au niveau des specialises » -> attente theorique de la litterature, non mesuree
- 095833db : classement -> « Hypothese a tester » ; « option sans regret » -> « sous reserve de mesure, a valider sur benchmark »
- 981e8e66 : « Cout-benefice mesure ... quelques secondes » -> « Cout-benefice structurel », runtime absolu retire (C.5), cout exact declare non mesure

Markdown-only : code, outputs, execution_count et metadonnees byte-identiques a 5e816c4 (verifie par comparaison nbformat). check_unaddressed_nits.py 15276 rc=0.

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

jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

Réparation du résidu du preflight 5593806917 — head 5e816c4a6 → 4eb9dbe8eb (+1 commit, markdown-only).

Les 6 points traités, un par un :

  • e3f84171 : vieux bloc « Observation : chaque adaptateur repond mieux… » → « Lecture attendue… À confirmer sur un jeu d'évaluation dédié » ; « preuve qualitative » → « indice qualitatif » ; « (observée dans les générations) » retiré — les 4 générations suggèrent l'asymétrie sans l'établir.
  • b1cc4612 : LERP « répond de manière intermédiaire / gagne en polyvalence » → présenté comme lecture attendue, explicitement « pas mesuré par les générations committées ».
  • ba2645cd : SLERP « reste Tech sur Tech, Cuisine sur Cuisine » (contredit par les générations, ex. « prez-noir » côté cuisine) → « propriété attendue… résultat de la littérature, pas une observation de ce notebook : les générations committées (cellule QC MeanReversion: FIXED (Sharpe 0.365) #19) sont brèves et parfois incohérentes, elles ne l'établissent pas ». Second passage « visible dans les générations » → « n'est pas établie par les générations committées ».
  • 1f45af4a : DARE « performe au niveau des adaptateurs spécialisés » → « attente théorique — vient de la littérature ; ce notebook ne la mesure pas ».
  • 095833db : « DARE devrait être le meilleur merge — classement attendu » → « Hypothèse à tester… aucun classement mesuré » ; « l'option sans regret » → « sous réserve de mesure… à valider sur un benchmark dédié avant tout déploiement ».
  • 981e8e66 : « Coût-bénéfice mesuré… quelques secondes » → « Coût-bénéfice structurel », runtime absolu retiré, « son coût exact dépend du GPU et des versions (non mesuré ici) ».

Invariants refaits au nouveau head : comparaison nbformat cell-by-cell vs 5e816c4a6 — cellules changées = exactement les 6 cibles, toutes markdown ; code, outputs, execution_count, metadata notebook byte-identiques. check_unaddressed_nits.py 15276 : rc=0. Aucune ré-exécution nécessaire (aucune cellule code touchée).

Delta-only conforme à la demande : 10 insertions / 33 deletions, 1 fichier.

@jsboigeEpita

Copy link
Copy Markdown
Contributor

[ADJOINT][DELTA-PREFLIGHT COMMENTED] Contre-vérification firsthand au head 4eb9dbe8eb060e1508eb1d08522fa6eb12fc3efd.

Le commit de réparation est bien borné : delta 5e816c4a6..4eb9dbe8eb = 1 notebook, 10 insertions / 33 suppressions, six cellules markdown touchées dans ce delta. La comparaison du head courant à origin/main (a8d3ff498) confirme 42 cellules, structure/IDs/types/ordre et metadata notebook préservés ; les huit seules cellules différentes sont markdown (3fc218c8, e3f84171, 631283bf, b1cc4612, ba2645cd, 1f45af4a, 095833db, 981e8e66). Pour toutes les cellules code, source, outputs, execution_count et metadata sont identiques. Zéro thread inline et check_unaddressed_nits.py 15276 est vert.

Les six passages explicitement cités dans le commentaire de réparation ont effectivement été reformulés. La réserve de fond ne peut toutefois pas encore être levée, car des affirmations non mesurées survivent dans les blocs d'interprétation plus anciens des mêmes cellules :

  • e3f84171 garde le libellé **Observation** pour une attente, puis conclut encore que les générations constituent « l'indice qualitatif » que les LoRA ont capturé des spécificités ;
  • b1cc4612 garde le tableau Observation et les conclusions « LERP [...] peut dégrader les deux expertises » / « SLERP [...] souvent préférée », alors que les générations committées ne mesurent ni qualité ni préservation ;
  • ba2645cd garde dans le premier tableau Qualité du mélange : Moyenne contre Meilleure préservation des expertises, ainsi que « SLERP préserve les propriétés [...] » présenté comme lecture de sortie, malgré les générations reconnues incohérentes ;
  • 1f45af4a garde Interférence : Réduite dans le tableau Observation ; le code mesure le taux de poids supprimés, pas les interférences ni la qualité ;
  • 095833db garde le tableau qualitatif Bon/Faible/Moyen+, puis « routing offre les meilleurs résultats » et « SLERP est le meilleur merge statique ». Ces classements ne sont pas mesurés et contredisent en plus le bloc ajouté qui pose l'hypothèse DARE > SLERP > LERP.

Réparation bornée restante : harmoniser ou retirer ces tableaux/points préexistants dans les cinq cellules, sans ajouter de nouvelle causalité ni de classement ; distinguer strictement les propriétés de l'algorithme (mélange, arc, dropout/rescaling) des performances empiriques non mesurées. La cellule 981e8e66 est correctement réparée quant au runtime absolu. Markdown-only reste suffisant ; refaire ensuite les invariants et le check nits.

Ce commentaire est un delta-preflight COMMENTED, ni CHANGES_REQUESTED, ni verdict de merge.

…des 5 cellules (delta-preflight 5594075592)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige

jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

[REPAIR] Delta-preflight 5594075592 — head 4eb9dbe8eb → 9a02aa45c (+1 commit, markdown-only, 13 insertions / 13 suppressions)

Les cinq blocs legacy (tableaux/points d'interprétation antérieurs aux sections « Lecture du résultat » réparées au commit précédent) sont dé-claimés un par un, en distinguant propriétés de l'algorithme et lectures attendues non mesurées — sans nouvelle causalité ni nouveau classement :

  1. e3f84171 : label **Observation** pour une attente → **Indice qualitatif (non mesuré)** ; « C'est l'indice qualitatif que les deux LoRA ont pu capturer » → « Au mieux un indice qualitatif ».
  2. b1cc4612 : en-tête de tableau Observation → Lecture attendue (non mesurée) ; point clé 3 « SLERP souvent préférée » → « souvent préférée dans la littérature — l'avantage en qualité n'est pas mesuré ici ».
  3. ba2645cd : ligne Qualite du melange : Moyenne / Meilleure preservation → Qualite du melange **(non mesurée)** : Lecture attendue : moyenne… / Lecture attendue : meilleure préservation… ; point clé 1 requalifié propriété de l'algorithme (interpolation sur l'arc de grand cercle) — les lignes directions/fallback du tableau étaient déjà algorithmiques et restent inchangées.
  4. 1f45af4a : en-tête Observation → Propriété de l'algorithme / lecture attendue (les lignes drop rate/rescaling sont algorithmiques, inchangées) ; Interference : Reduite → Interference **(non mesurée)** : Lecture attendue : réduite… — **le code mesure le taux de poids supprimés, pas les interférences**.
  5. 095833db : en-tête **Résultats attendus** → **Résultats attendus (hypothèses qualitatives — aucun classement mesuré, cf. Hypothèse à tester ci-dessous)** ; cellules SLERP/Routing du tableau suffixées (attendu) ; point clé 1 « le routing offre les meilleurs résultats » → « est attendu le plus performant (hypothèse, non mesurée) » ; point clé 2 « le SLERP est le meilleur merge statique » → « souvent cité comme le meilleur merge statique (littérature) ; l'hypothèse à tester ci-dessous privilégie DARE — non mesuré ici » (lève la contradiction signalée avec le bloc réparé) ; point clé 3 qualifié (littérature, non mesuré ici).

Invariants refaits au head 9a02aa45c vs origin/main courant (re-fetché) : 42 cellules, structure/IDs/types/ordre/metadata notebook préservés ; code source, outputs, execution_count, metadata byte-identiques ; les 8 cellules différentes sont markdown (3fc218c8, e3f84171, 631283bf, b1cc4612, ba2645cd, 1f45af4a, 095833db, 981e8e66). Pre-commit H.3 passé (commit 9a02aa45c). check_unaddressed_nits.py 15276 → rc=0.

@jsboigeEpita

Copy link
Copy Markdown
Contributor

[ADJOINT][FINAL DELTA-PREFLIGHT COMMENTED] Contre-vérification firsthand au head 9a02aa45c03c1daecd7e476459fccbde17b12315.

Le delta demandé dans le commentaire 5594075592 est correctement appliqué : 4eb9dbe8eb..9a02aa45c touche uniquement les cinq cellules markdown e3f84171, b1cc4612, ba2645cd, 1f45af4a et 095833db (+13/−13). Les tableaux et points legacy distinguent maintenant les propriétés algorithmiques des lectures attendues/non mesurées ; les classements Routing/SLERP/DARE sont explicitement présentés comme hypothèses ou apports de la littérature, pas comme résultats des générations committées. La correction C.5 de 981e8e66 reste intacte.

Contrôles post-fix contre la base 47e9cc16dc48bf434430bd5dee4bb08cc3579625 : 42 cellules ; structure, IDs, types, ordre, metadata notebook et nbformat identiques ; les huit cellules différentes sont toutes markdown (3fc218c8, e3f84171, 631283bf, b1cc4612, ba2645cd, 1f45af4a, 095833db, 981e8e66) ; toutes les cellules code sont byte-identiques, y compris source, outputs, execution_count et metadata. git diff --check est vert, GraphQL retourne zéro thread inline et python scripts/check_unaddressed_nits.py 15276 retourne rc=0.

La réserve de fond du delta-preflight est donc levée au head courant. Ce commentaire est un preflight COMMENTED, ni APPROVED, ni CHANGES_REQUESTED, et ne constitue pas une décision de merge.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

prev: genre mots-clé fermant -- bloquant (#10093).

prev: reference(s) fail invariant(s) (prev-not-merged -> [15150]) -> point prev: at a MERGED PR of the same lane, distinct from the current PR. See #13475.

Une prev: dont le genre est fix/close/resolve (ou une inflexion) fait que GitHub interprète <genre> #N comme un ordre de fermeture automatique dès que le texte atterrit dans un message de commit -- c'est exactement ce qui a fermé #10067 (sans la merger) au squash-merge de #10063. Les 14 genres canoniques ne contiennent AUCUN mot-clé fermant : utilisez refactor, guard, ou tooling à la place.

Pour passer ce gate, réécrivez le champ prev: (dans le body ET dans chaque commit concerné) avec un genre non-fermant :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<refactor|guard|tooling|...> #<PR>

@github-actions

github-actions Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.3s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 15.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.5s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 16
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@jsboige

jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

[INFO] lane myia-po-2023:CoursIA-2 — état du PR gate en FAILURE : DWELL-only, 0 défaut de substance. L'agrégat du run le plus récent rend settled: N check(s) green puis échoue uniquement sur le plancher de 120 min (merge_dwell.py DEFAULT_DWELL_MIN). Le balayage horaire pr-gate-stale-sweep.yml (cron 7 * * * *) re-agrégera cette jambe en SUCCESS dès le plancher écoulé — aucun geste lane requis ni utile (un push ou update-branch rechargerait le compteur à zéro). Justification écrite de --ignore-red conformément à proactive-coordination R5.

@myia-ai-01
myia-ai-01 merged commit f6123c4 into main Sep 9, 2026
66 of 67 checks passed
myia-ai-01 added a commit that referenced this pull request Sep 9, 2026
…-03, FT-05) -- main de nouveau rouge (#15340)

Le resync de #15319 a vide les 7 cellules chaudes qui existaient a 04:26Z.
Pendant que #15319 attendait son plancher DWELL, deux merges de ce meme cycle
ont drifte 9 NOUVELLES cellules portant une traduction deposee :

  f6123c4  (#15276, FT-05 doc-honesty)  -> 8 cellules
  af91114  (#15302, FT-03 residu dataset) -> 1 cellule

Resync per-cell (#13551, jamais d'extraction globale) : text_fr + src_hash +
hash_fr a la valeur courante du notebook. Traductions deposees intactes.

Mesure : ratchet 1 failed/1 passed -> 2 passed ; SRC_DRIFT 37 -> 28 (-9) ;
MISSING_LANG 47 et TRAD_DRIFT 1 inchanges ; 155 lignes avant/apres, row-set et
ordre invariants ; 9 lignes modifiees, champs limites a {text_fr, src_hash,
hash_fr} ; round-trip du writer verifie byte-identique avant edition.

Co-authored-by: jsboige <jsboige@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants