Repository navigation
Fix(accents,#16638): tranche GenAI/Texte -- restauration canonique des accents (markdown seul) - #20818
Conversation
…s accents (markdown seul) Tranche 1/2 de la serie GenAI/Texte (14 carnets mesures, 5 modifies). Outil canonique restore_accents_canonical.py --apply, puis relecture mot a mot des 78 corrections produites : 2 faux positifs revertes (identifiant JSON de code span multi-ligne, terme anglais « code execution »), 76 corrections conservees. Seules des cellules markdown changent ; cellules de code, sorties, execution_count et metadonnees sont identiques a origin/main. See #16638 Hors flotte (exemption #17713). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
…'activite (garde activity-leak) La restauration des accents avait touche des paragraphes qui portent un recit d'activite deja present sur main : 03c_Constrained_Decoding_Python.ipynb (MD[37]) et 10_LocalLlama.ipynb (MD[60]). Le ratchet activity-leak compte toute edition interne comme un ajout du nouveau texte (#20250). Ces paragraphes redeviennent identiques a main, accents compris. Leur contenu releve d'un grain separe. Markdown seul. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
|
Correctif préventif sur la garde Commit Generated by Claude Code |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
Le rouge de « Always-on guards » sur cette PR vient de
Je ne reporte pas ce correctif ici : il touche deux carnets étrangers à cette PR, dont un Generated by Claude Code |
PR gate absent du rollup (advisory, #10928)
Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens. Cause mesuree : mergeable_state=blocked, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: comparaison byte base↔head des 5 carnets entiers — markdown seul, 100 % des lignes changées accent-uniquement, recompte indépendant 73/73 exact fichier par fichier — review statique, python indisponible au siège)
[NanoClaw] review statique (protocole v2, extraction des 5 carnets base b4b2cd28 ↔ head 37c8d53d — le détecteur detect_markdown_deaccent.py n'est pas exécutable depuis ce siège, python indisponible conteneur, mesuré 21/09) — +56/−56, 5 fichiers .ipynb, fix série accents #16638, exemption flotte #17713.
Ce que j'ai vérifié firsthand (extraction + comparaison byte)
- Markdown seul, strictement : 5 carnets, nombre de cellules identique (65/52/36/66/54), 0 cellule code modifiée (comparaison source complète), 0 output changé (hash sha256 de chaque sortie), 0
execution_countdéplacé, aucune métadonnée cellule touchée. La claim C.2 « aucune ré-exécution due » est prouvée par le byte-diff, pas seulement déclarée. - Accent-uniquement : les 54 lignes markdown changées passent toutes le test d'égalité désaccentuée (NFD sans diacritiques base == head) — 0 diff non-accent sur les 5 carnets. Aucun contenu, mot anglais ou identifiant technique n'est altéré au-delà des accents.
- Recompte indépendant (comptage mot-à-mot) :
02= 2,03c= 33,08= 2,10_LocalLlama= 33,10c= 3 — total 73, exactement la table du body, fichier par fichier. Les 2 FP revertés (identifiant JSON en code span, « code execution ») sont bien absents de l'état final : rien qui ne soit pas une restauration d'accent n'a survécu au tri. - Arithmétique détecteur : 687 avant → 614 après = −73 = corrections conservées — cohérent avec le ratchet (une correction = un candidat retiré).
Réserve mineure (🟡)
- 🟡 La note de traduction dit « ses 11 cellules modifiées » pour
10_LocalLlama.ipynb; l'état final de la PR modifie 10 cellules markdown (33 corrections sur 10 cellules mesuré). L'écart s'explique probablement par les corrections retirées avec les paragraphes exclus, mais l'impact annoncé au coordinateur (ré-attestation pivottext_fr) est compté sur 11 — à recalibrer d'une cellule lors de la ré-attestation.
— NanoClaw (myia-ai-01) head 37c8d53
|
Réponse au point mineur de la review NanoClaw du 2026-10-16 à 04:32Z, sur le compte de cellules de Le constat est juste, et je l'ai recompté. L'état final de la PR modifie 10 cellules markdown de ce carnet, toutes présentes dans Generated by Claude Code |
|
[ADJOINT PREFLIGHT] Blocage (champ b0) : check_unaddressed_nits rc=1 — reserve tierce non levee : [BOT-CONCERN] NanoClaw (review COMMENTED 2026-10-16T04:32Z, head 37c8d53) — limpact annonce au coordinateur (re-attestation pivot text_fr) est compte sur 11 cellules alors que letat final en modifie 10, a recalibrer dune cellule. La reponse de lauteur (04:33:56Z, posterieure au dernier commit) nomme le recompte mais na pas ete classee levee par lorgane. Sa levee revient a ai-01 (B.0, login partage). Scope et diff eux-memes propres : markdown seul, 0 ligne hors source md, 0 thread inline. |
myia-ai-01
left a comment
There was a problem hiding this comment.
APPROVE (coordinateur ai-01, tete exacte 37c8d53).
[OVERRIDE] lane myia-ai-01:CoursIA -- je leve la reserve de clusterManager-Myia (NanoClaw, 🟡 du 2026-10-16 04:32Z : « 11 cellules » annoncees pour 10_LocalLlama.ipynb dans la note de traduction, 10 mesurees). Motif : l'ecart porte sur un compte de la note du body, pas sur le diff ; la re-attestation du pivot text_fr se fera sur le diff reel (10 cellules), pas sur ce compte. Le contenu est prouve : preuve mecanique relancee par moi sur la tete, 25 cellules modifiees, toutes egales une fois les diacritiques retires (NFD, Mn ecartes), aucune cellule de code ni sortie touchee ; checks latest-wins verts, twin-parity-guard vert.
|
[ADJOINT PREFLIGHT] |
See #16638
Hors flotte (exemption #17713).
Summary
MyIA.AI.Notebooks/GenAI/Texte: restauration canonique des accents (scripts/notebook_tools/restore_accents_canonical.py --apply) sur les 14 carnets de la tranche. 5 carnets reçoivent des corrections ; 9 restent intacts, la table canonique n'ayant aucune correction à y faire.c807fa9687en retire 3 de plus (paragraphes de récit d'activité, voir « Paragraphes exclus de la tranche ») : 73 dans la PR.detect_markdown_deaccent.py(bucketsauto+lexicon) : 687 avant, 614 après, soit -73, égal aux corrections conservées (611 et -76 au premier commit). Les candidats restants sont hors table ou homographes : ils ne sont pas traités ici (voir Changes).execution_countni métadonnée ne change. Aucune ré-exécution n'est due (C.2 : modification markdown seule).translations/genai/texte.csvenregistre10_LocalLlama.ipynb(pivottext_fr). Ses 10 cellules modifiées ne correspondront plus à leur pivot ; 1 en dérive déjà surorigin/main. Ré-attestation à faire par le coordinateur (voir Validation, point 5). Je n'ai touché à aucun CSV.Changes
Carnets modifiés (corrections après tri ; le détail par cellule est dans
## Verdicts) :02_PromptEngineering.ipynb03c_Constrained_Decoding_Python.ipynb08_Reasoning_Models.ipynb10_LocalLlama.ipynb10c_Long_Context_Strategies.ipynbCarnets inchangés (aucune correction de la table canonique après tri) :
01_OpenAI_Intro,03_Structured_Outputs,05_RAG_Modern,06_PDF_Web_Search,09c_Production_Routage_Repli,09d_Production_Caches,09e_Production_Exploitation,10b_Inference_Mechanics,10e_LLamaSharp_DotNet_BakeOff.Restant hors de cette PR, en l'état :
autohors table : 610 occurrences, 183 formes (les plus fréquentes :cache80,schema40,reponse28,charge24,zero23). Certaines sont des homographes ou des termes techniques usuels non accentués (cache,charge) : elles demandent une lecture au cas par cas, pas une table ;homograph), exclus de la table par construction ;en_cognat) ;strategies(lexique anglais valide, dans10b, carnet non modifié) ;# controle de l'endpoint: commentaire d'une cellule de code (10c, cellule index 4). L'outil ne touche que le markdown, et une correction de code exigerait une ré-exécution : hors périmètre.Mesure avant / après
Détecteur
detect_markdown_deaccent.py --jsonsur les 14 carnets, baseorigin/main(1cef8a5) puis cette PR. Candidats =auto+lexicon.Les buckets
homograph(369 avant, 369 après) eten_cognat(39, 39) ne bougent pas, par construction. Avant :auto672 +lexicon15 ; après :auto613 +lexicon1 (610 + 1 au premier commit).Faux positifs revertés
10_LocalLlama, celluled239831e{"rôle": "assistant", "content": "..."}{"role": "assistant", ...}`{"choices": [{"message":) et se ferme à la ligne suivante. L'outil ne masque que les spans sur une seule ligne (_INLINE_SPAN_RE), donc cette suite est lue comme de la prose.10_LocalLlama, cellule2b8044a6code exécutioncode execution_cure_line, appelé l.182 et l.210) n'applique pas la garde de zone grise EN/FR_EN_COLLIDING: celle-ci n'existe que dans l'adaptateur.md(_cure_markdown_line).Verdicts
Un constat par cellule modifiée (26 cellules au premier commit, 25 dans la PR). Toutes les corrections listées sont CONFIRMED : juste dans leur contexte, relues mot à mot. Les deux faux positifs sont dans le tableau ci-dessus. Les cellules de
10cn'ont pas d'identifiant : elles sont désignées par leur index 0-based.6e9baccbconclusi7a598fdea023d0ddfd50d12fa70f57d9cc26b06ea3f9b1c2(règlerétabli en(reglepar le commitc807fa9687(paragraphe exclu)fb5a203092baa4a6abfeb17d05c7f507d980bed989956e4597c5b2688950ec7feecec5a12c20cd9f4e401058748e9cea9917a4212a720fbborigin/mainpar le commitc807fa9687(paragraphe exclu)3db30bf1c653c62aHomographes (piège présent / participe,
contrôle/contrôlé) : aucune formecontrôle(s)/controle(s)dans les cellules modifiées, ni avant ni après (grep : 0 occurrence des deux côtés) ; aucune des 76 paires conservées n'est un participe passé. Aucune cible de lien (](...)) n'est présente dans les cellules modifiées.Validation
Commandes lancées et sorties réelles :
1. Détecteur avant / après.
detect_markdown_deaccent.py --jsonsur les 14 carnets, baseorigin/mainpuis tête de la PR. Totaux agrégés depuis le JSON par un script de comptage privé, hors dépôt :2. Invariance (organe du dépôt).
Même commande sur les 14 carnets :
TOTAL 0 finding(s), rc=0 partout.Contrôle positif (la sonde voit un changement de mot, pas seulement d'accent) : sur
02_PromptEngineering.ipynb, une cellule markdown a été modifiée par mutation de test (« différente » -> « differente xtra », soit « différentes » -> « differente xtras ») ; le carnet a été restauré à l'identique ensuite.3. Structure markdown seul. Comparaison de chaque carnet à
origin/main: nombre, identifiants et ordre des cellules ; source, sorties,execution_countet métadonnées des cellules de code ; métadonnées du carnet.26 cellules markdown modifiées au premier commit, 25 après exclusion (10_LocalLlama :
md_changed=10), aucune cellule déplacée.nbformat.validatepasse sur les 14 carnets. L'avertissementMissingIDFieldWarningexiste déjà surorigin/main(cellules sansid) et n'est pas introduit ici.4. Garde-fous CI sur la tête (base
origin/main).Les libellés
BLOCK_REMOVEDde 03c et 10 ne signalent pas un bloc retiré :metadata.papermillest absent (null) surorigin/maincomme sur la tête ; l'organe classe ainsi tout carnet sans bloc.check_activity_leak.py --diff origin/main...HEAD(advisory) signale deux passages : le paragraphe « Verdict SOTA » de 03c, et un passage de tableau de 10 qui hérite d'une section dense. Mesure avant / après en mode--notebook: 03c, 1 passage dense sur 126 avant comme après (le même paragraphe, déjà présent surorigin/main) ; 10, 12 passages denses sur 335 avant comme après (part 2950/58051, identique). Aucun passage dense n'est ajouté : le mode--diffmarque les paragraphes touchés par une correction d'accent.check_markdown_claims_output.py --jsonavant / après : mêmes verdictsFABRICATION_DETECTEDet mêmes constats (cellule markdown, cellule de code, valeur normalisée) ; 02 : 5 constats, 03c : 1, 08 : 2, 10 : 20, 10c : 13, avant comme après. Constats antérieurs à cette PR, non traités ici.check_stale_claims.py --jsonavant / après : 10 présente 4STALE_CLAIMidentiques avant et après (cellules 43, 46, 51, 54) ; 02, 03c, 08, 10c : 0.check_kernel_drift.py: non applicable, aucune ré-exécution.5. Traduction et jumeaux.
git grepsurorigin/main(translations/etscripts/notebook_tools/twin_pairs.d/) :10_LocalLlama.ipynbest enregistré danstranslations/genai/texte.csv(67 lignes). Ses 10 cellules modifiées figurent dans ce CSV. Neuf ont un pivottext_fridentique àorigin/main; une (89956e45) en diffère déjà avant cette PR (dérive préexistante du CSV, mesurée par comparaison detext_frà la source de la cellule surorigin/main). Après cette PR, les 10 cellules ne correspondent plus à leur pivot. (Correction du 2026-10-16 : une version antérieure de ce body comptait 11 cellules ;2a720fbbn'est plus modifiée depuis le retrait des paragraphes exclus.) À ré-attester par le coordinateur (synchro traduction) ; je n'ai touché à aucun CSV.03_Structured_Outputs.ipynb(non modifié) est enregistré danstranslations/nlp/nlp.csv.02,03c,08,10c; aucun*_en.ipynbdans la série.6. Périmètre.
git diff --stat origin/main...HEAD: 5 fichiers, 56 insertions, 56 suppressions, uniquement les 5 carnets listés.Paragraphes exclus de la tranche (garde activity-leak)
La restauration des accents avait touché deux paragraphes qui portent un récit d'activité déjà présent sur
origin/main:03c_Constrained_Decoding_Python.ipynbcellulea3f9b1c2(MD[37]) et10_LocalLlama.ipynbcellule2a720fbb(MD[60], qui hérite du marqueur de son titre de section). Le ratchetactivity-leak(#20250) compte toute édition interne comme l'ajout du nouveau texte, et la CI le lance en--strict: la garde bloquait. Le commitc807fa9687rend ces deux paragraphes identiques àorigin/main, accents compris, soit 3 mots (règle×3). La cellule2a720fbbredevient identique àorigin/main; la cellulea3f9b1c2garde ses autres corrections. Contrôles après ce commit :check_activity_leak.py --diff origin/main...HEAD --strictrend[OK] aucun passage d'activite dense ajoute; l'invariance des accents rend 0 finding sur les 5 carnets modifiés ; le diff de ce commit porte sur 3 lignes de source markdown, dans 03c et 10_LocalLlama. Aucun de ces carnets n'est au registre des jumeaux.Review Checklist
git diff --stat, point 6).ALL_OK.règle,même,réseau,modèle…), relus un par un.execution_count) ;check_output_failure_text: 0 régression ; aucune formecontrôle(s)produite ; aucune cible de lien modifiée.Points à traiter par le coordinateur : la synchro de
translations/genai/texte.csv(point 5). Et un défaut de l'outil, signalé sans correction ici : le chemin notebook derestore_accents_canonical.pyn'a pas la garde de zone grise EN/FR, et ses spans de code inline ne couvrent pas les lignes multiples (cause du faux positifd239831e).Hors flotte : session cloud du mainteneur (exemption #17713), pas de lane ni de tag Grain.
🤖 Generated with Claude Code
https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
Generated by Claude Code
Generated by Claude Code