Repository navigation
Conversation
…canonique des accents (markdown seul) Restauration des accents francais dans la prose markdown de neuf carnets de la serie Sudoku (Sudoku-12 a Sudoku-18b), avec l'outil canonique restore_accents_canonical.py --apply, puis relecture mot a mot. Corrections conservees : 158 (sur 162 proposees par l'outil). Quatre paires revertees a la main, faux positifs (3 termes anglais "Satisfiable Modulo Theories" / "Satisfiability Modulo Theories" / "sat-modulo-theories" dans Sudoku-12, et "idiomes different)" dans Sudoku-18-Comparison-CSharp, ou le verbe "diffèrent" est requis). Hors table (non traites, sous-grain a part) : formes que la table canonique ne contient pas (difficulte, resolution, fiabilite, etc.). Invariance : check_accent_restoration_invariants.py --base-sha origin/main donne 0 finding sur chaque carnet. Cellules de code, types, identifiants et metadonnees inchanges ; diff ne contenant que des lignes accent-only. See #16638 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
…ration des accents (tranche sudoku-b) La modification de cette PR deplace le blob SHA de carnets enregistres dans le registre de parite. Pour chaque paire : entree known_differences qui decrit le geste et le cote touche, puis check_twin_parity.py --update --pair en derniere operation (cf #8957). Paires : sudoku-12-z3 sudoku-13-symbolicautomata sudoku-14-bdd sudoku-15-infer sudoku-18-comparison check_twin_parity.py --check --per-pair --base origin/main : OK sur les 157 paires apres re-attestation. See #16638 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
|
Commit Le « Twin parity audit (#8057) » aurait rougi en Vérification locale après le commit : Generated by Claude Code |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
…igne portant le décompte « 3 cellules » La garde prose-counts (--strict) refuse toute ligne ajoutée qui porte un compteur. La ligne en cause ne différait de main que par un accent (booléen) : elle reprend son texte de main, le décompte n'est plus une ligne ajoutée. See #16638 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
… a main de la ligne a decompte de Sudoku-13 (cellule 27) La modification de cette PR deplace le blob SHA de carnets enregistres dans le registre de parite. Pour chaque paire : entree known_differences qui decrit le geste et le cote touche, puis check_twin_parity.py --update --pair en derniere operation (cf #8957). Paires : check_twin_parity.py --check --per-pair --base origin/main : OK sur les 157 paires apres re-attestation. See #16638 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
|
Correctif préventif : commits J'ai lancé en local la garde
Le body est mis à jour en conséquence :
Le conflit attendu avec #20780 sur Generated by Claude Code |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review lane pr-review (myia-ai-01:hermes-agent) — head 7e0315ae (FULL READ, re-vérification indépendante sur blobs réels — aucune review antérieure sur ce SHA)
VERDICT: LGTM
Preuves mécaniques (recalculées au head 7e0315ae vs base 1cef8a55) :
- 7 carnets, 126/126 lignes de paire accent-only : 51 cellules markdown touchées (5/2/1/11/8/14/10 — total 51), toutes markdown→markdown ; sorties, metadata et execution_count byte-identiques (0 cellule de code touchée) ; au niveau mot : 157 paires d'accent, toutes NFD-égales, 157 ajouts / 0 retrait, 0 divergence numérique, 0 cible de lien / URL / span de code modifiée. Le compte « 157 corrections » du body est exact au mot près.
- Ré-attestations jumelles vérifiées par recalcul : les 10 champs
python_sha/csharp_shades 5 attestations (sudoku-12-z3/0017,sudoku-13/0024+0025,sudoku-14/0017,sudoku-15/0030,sudoku-18/0015) concordent octet à octet avec le git-hash-object recalculé sur les blobs bruts du head (ex. 12-Z3 : python7e23b0c6, C#47681df1). L'attestation0025est bien celle de l'état aprèsedb9f797c1— la ligne « 3 cellules » de Sudoku-13 est rendue àorigin/mainau head (ligne vérifiée littéralement). - Conflit #20780 × #20783 confirmé réel, pas déclaratif : les deux PRs créent le même chemin
sudoku-12-z3/0017-….yamlavec des revendications divergentes — l'entrée de #20780 portepython_sha=1cc184af(= blob Python base, cohérent « côté C# seul »), celle-ci portepython_sha=7e23b0c6(= blob Python head). La seconde fusionnée devra re-attester avec les deux côtés déplacés : l'avertissement du body est exact. - Scan sécurité : seules occurrences = le nom de variable
LOCAL_LLM_API_KEYen prose (aucune valeur). CLEAN.
Réserves (transparence) :
- CI au moment du verdict : 21 checks
queued, 3cancelled(starvation de la vague) — aucun rouge de contenu, mais aucun vert de garde citable ; la vérification byte-level ci-dessus tient lieu de preuve. nbformat.validate/check_accent_restoration_invariantsnon rejoués ici (scripts hors siège) : l'équivalence structurelle a été établie par comparaison directe cellule à cellule, plus forte que la garde.- Non traité par la tranche (déclaré au body) : la cure
booleende Sudoku-13 laissée avec son décompte, et les résidus hors table — sous-grain à venir.
Pas d'APPROVE : gardes au statut queued/cancelled au head.
…avec son cote C# La PR depassait le seuil de 15 fichiers (18, pr-review-discipline §A) et ré-attestait la paire sudoku-12-z3 côté Python seul, pendant que #20780 la ré-attestait côté C# seul, avec une entrée 0017 concurrente. Le carnet Sudoku-12-Z3-Python, le YAML parent et l'entrée 0017 sont rendus ici à leur état de la base de fusion 1cef8a5. Les deux côtés de la paire sont réunis, sous une attestation unique, dans la branche claude/16638-p5-accents-sudoku-c. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
|
Scission pour respecter le seuil de 15 fichiers de
Contrôles relancés :
La review Hermes du 09:43Z portait sur l'ancienne tête 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 |
|
Sur l'avis « Prose/output review » : les signalements sont antérieurs à cette PR. J'ai lancé Generated by Claude Code |
|
Le check
Generated by Claude Code |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
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 |
|
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) |
See #16638
Hors flotte (exemption #17713).
Summary
pr-review-discipline§A (18 chemins pour un maximum de 15).Sudoku-12-Z3-Pythonpasse dans Fix(accents,#16638): Sudoku-10, -11, -12-Z3 (deux jumeaux) -- détachés de #20780 et #20783 (seuil de 15 fichiers) #20940, réuni avec le côté C# de la paire (venu de Fix(accents,#16638): tranche Sudoku (1re moitie) -- restauration canonique des accents (markdown seul) #20780) sous une seule attestation. L'entrée0017concurrente avec Fix(accents,#16638): tranche Sudoku (1re moitie) -- restauration canonique des accents (markdown seul) #20780 disparaît, et le conflit signalé dans les reviews avec elle. Le commitffaf6b1becrend ici ce carnet, le YAML parentsudoku-12-z3et son entrée à leur état de base. Cette PR garde 15 fichiers. Les totaux du résumé portent sur la tranche d'avant la scission. La ligne déplacée est marquée « → Fix(accents,#16638): Sudoku-10, -11, -12-Z3 (deux jumeaux) -- détachés de #20780 et #20783 (seuil de 15 fichiers) #20940 ».detect_markdown_deaccent.pysur la tranche : 612 candidats avant, 456 après. Corrections conservées après tri : 157 (162 proposées par l'outil, 4 paires revertées comme faux positifs, cf. Verdicts, et 1 laissée sur la ligne à décompte de Sudoku-13, voir « Ligne à décompte laissée à l'identique deorigin/main»).different, constat 5) et lebooleende la ligne à décompte de Sudoku-13. Leur resolution mot a mot est un sous-grain a part : la tranche ne pretend pas a la completude.execution_count, aucune metadonnee, aucune cellule deplacee. Diff accent-only.Changes
Carnet par carnet, corrections apres tri. Indices de cellules = index nbformat (base 0), cellules markdown uniquement.
Les accents de « Règle » / « règle » (20 corrections, Sudoku-12-Z3-Python et Sudoku-18-Comparison) portent sur la mention « règle #9434 » : voir Points a signaler.
Mise en forme JSON. L'outil reecrit le fichier entier : il retirait 36 lignes vides presentes dans le JSON de Sudoku-17-LLM-Python et ajoutait un saut de ligne final a Sudoku-12-Z3-Python et Sudoku-15-Infer-Python. Ces effets ont ete annules : chaque carnet est reconstruit depuis sa version de base, en ne remplacant que les lignes accentuees (cf. Validation, point 6).
Verdicts
Theoriesdans « Satisfiable Modulo Theories » (Sudoku-12, cellule 0)Theoriesdans « Satisfiability Modulo Theories » (Sudoku-12, cellule 2)sat-modulo-theories(Sudoku-12, cellule 29)different(Sudoku-18-CSharp, cellule 5, ligne 367 : « seuls les idiomes different »)différent, faux ici. Laisse sans accent, a trancher a la maintache->tâche(Sudoku-17, cellule 23, ligne 1361 : « une tâche ou les LLM excellent »)tache/tâchede son compte (liste des homographes dedetect_markdown_deaccent.py) : c'est l'unique ecart entre le compte detecteur (-157) et les corrections (158)resolution,difficulte,fiabilite,recursifs,indice,pratique)restore_accents_canonical.pysignale « cures incompletes, pas un succes »). Une part sont des mots francais valides sans accent (pratique,route,porte,indice) : a verifier mot a motdonne/donné,accepte/accepté,atteste/attesté,suppose/supposé,borne/borné,compte/compté)Lecon(Sudoku-17 ligne 1368, Sudoku-18 une fois par carnet),tot(Sudoku-18-CSharp x3),cantonnees,arite, etc.Lecon clés(Sudoku-17, ligne 1368) reste donc partiellement accentueinference,precision,regime, etc.)en-cognat)Validation
Commandes lancees et sorties (extraits reels).
1. Detecteur avant / apres (
python scripts/notebook_tools/detect_markdown_deaccent.py <9 carnets>) :Écart 612 - 456 = 156 : 157 corrections conservées, moins le
tâche(constat 6) que le détecteur ne compte pas.2. Invariance (
python scripts/notebook_tools/check_accent_restoration_invariants.py --base-sha origin/main <carnet> --fail-on-findings), rc = 0 pour les 9 carnets :3. Structure nbformat (
nbformat.validate(nbformat.read(<nb>, as_version=4))) :nbformat OKpour les 9 carnets.4. Cellules de code et metadonnees (comparaison a
origin/main: source, outputs, execution_count et metadata des cellules code ; metadata du carnet ; types et identifiants de cellules) :5. Perimetre du diff (
git diff --statdu commit de prosec0c89b95ef) :Depuis le commit
edb9f797c1, le diff des carnets comptait 126 lignes de chaque côté ; après la scission, il en compte 117. La PR touche 15 fichiers : les 6 carnets restants de la tranche et leur registre de paritéscripts/notebook_tools/twin_pairs.d/(ré-attestation des jumeaux, voir « Parité des jumeaux »). Aucun*_en.ipynb, aucun fichier detranslations/, aucun script modifié.6. Purete du diff : 127 lignes retirees, 127 ajoutees ; les 127 paires ne different que par les accents (comparaison apres suppression des diacritiques) ; 0 ligne vide ajoutee ou retiree.
7. Controles de prose et de sortie (base
origin/main) :Ligne à décompte laissée à l'identique de
origin/main. La CI lance cette garde en mode--strict, qui refuse toute ligne ajoutée portant un compteur. Sur la tête913d481f4b, elle refusait la ligne de Sudoku-13 (cellule 27 : « tous distincts) en booleen : chaque chiffre tient sur 2 bits, donc 3 cellules »), que la restauration n'avait touchée que pour l'accent de « booléen ». Une version antérieure de ce body citait la commande sans--strict, qui ne fait qu'avertir. Le texte « 3 cellules » décrit la taille du mini-Sudoku de l'exemple, pas un compte du dépôt, et il était déjà surorigin/main. Le commitedb9f797c1rend à la ligne son texte exact deorigin/main; la curebooleenreste à faire avec ce décompte. Ce commit déplace le blob de Sudoku-13 : le commit7e0315aecdré-atteste la pairesudoku-13-symbolicautomata(voir « Parité des jumeaux »).8. Avis de prose avant / apres (
check_markdown_claims_output.py --jsonetcheck_stale_claims.py --json, base =origin/main, meme carnet) : ancrages identiques avant et apres sur les 9 carnets. Signalements pre-existants, inchanges (nombre de signalements) :Aucun des deux outils n'a plante sur ces carnets.
9. Execution : aucune cellule de code modifiee, donc aucune re-execution due (C.2).
check_kernel_drift.pynon applicable (aucune execution).metadata.papermillinchange (cf. point 4).10. Jumeaux et traductions (jumeaux : ré-attestés par le commit
913d481f4b, voir « Parité des jumeaux » ; traductions : lecture seule) :scripts/notebook_tools/twin_pairs.d/:sudoku-12-z3.yaml(Sudoku-12-Z3-Python),sudoku-13-symbolicautomata.yaml,sudoku-14-bdd.yaml,sudoku-15-infer.yaml,sudoku-18-comparison.yaml(Sudoku-18-Comparison-CSharp et -Python). Aucun pour Sudoku-12b, Sudoku-17, Sudoku-18b.translations/(origin/main) :sudoku/sudoku.csvcite 8 des 9 carnets (tous sauf Sudoku-12b) ;planners/planners.csvetsearch-part1/search-part1.csvcitent Sudoku-12-Z3-Python ;complexity/complexity.csvcite Sudoku-15-Infer-Python ;search-applications/search-applications.csvcite Sudoku-18b-Statistical-Comparison-Python. Ces catalogues ne sont pas modifies ici : le coordinateur doit re-attester les traductions des carnets modifies.Points a signaler
restore_accents_canonical.py --applyne preserve pas la mise en forme JSON du carnet (saut de ligne final, lignes vides de la source). Le controle d'invariance ne le voit pas, car il compare le contenu des cellules. Sujet separe : a corriger dans l'outil ou dans le controle.origin/main), Sudoku-18-Comparison-CSharp et Sudoku-18-Comparison-Python portent la mention « règle notebooks(#9377,#8052): porter le mandat « quantitatif tenu par le CI, pas par la prose » a l'interieur des notebooks — la vague #8052 re-epingle des valeurs qui rebougeront #9434 » (suivi des mesures non reproductibles). Elle n'a pas ete touchee : seul son accent est restaure. A traiter comme sujet separe si elle doit disparaitre de la prose enseignante.Parité des jumeaux
Le commit
913d481f4bré-atteste les cinq paires jumelles touchées par la tranche :sudoku-12-z3,sudoku-13-symbolicautomata,sudoku-14-bdd,sudoku-15-inferetsudoku-18-comparison, avec une entréeknown_differenceset une attestation par paire. Sans ce commit, le « Twin parity audit (#8057) » rougirait enDRIFT-INTROsur ces paires (commentaire du 2026-10-14 sur cette PR).Le commit
7e0315aecdré-atteste à nouveau la pairesudoku-13-symbolicautomataaprès le retour àorigin/mainde la ligne à décompte (nouvelle attestation0025, l'entréeknown_differencesexistante décrit déjà le geste). Mesure à la tête7e0315aecd, sur un checkout complet :python scripts/notebook_tools/check_twin_parity.py --check --per-pair --base <merge-base>rendTotal : 157 paire(s) | OK=157 INTRO=0 FIXED=0 PRE=0, etscripts/notebook_tools/tests/test_twin_registry_integrity.pypasse (46 tests).Conflit attendu entre #20780 et #20783 : les deux PRs ré-attestent la paire
sudoku-12-z3(#20780 pour le carnet C#, #20783 pour le carnet Python), modifient la même entréeknown_differencesdesudoku-12-z3.yamlet créent le même fichier d'attestationsudoku-12-z3/0017-2026-10-14-hors-flotte-claude-session-16638.yaml, chacune avec le blob de son seul côté. La seconde mergée devra être rafraîchie surmain, ses deux entrées fusionnées, et la paire ré-attestée avec ses deux côtés modifiés.Review Checklist
913d481f4bet7e0315aecdy ajoutent les entrées du registre de parité (« Parité des jumeaux ») ; le commitedb9f797c1rend une ligne de Sudoku-13 àorigin/main.metadata.papermillinchanges (validation, point 4).Correction après relecture (homographe nom / participe)
La table canonique restaure
controleencontrôle(nom). Deux occurrences sont des participes et portent donc l'accent final :Sudoku-17-LLM-Python.ipynb, « Format non contrôlé » (tableau des causes) et « raisonnement contrôlé par le programme ». Le contrôle d'invariance reste à 0 finding sur ce carnet après la correction (seule l'accentuation change).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