Repository navigation
Conversation
…t3-Cas-pratiques (9 paires de jumeaux) Grain: MED/notebook-python — lane myia-po-2027:CoursIA-2 — prev: MED/guard #25032 Tranche deaccent de la famille Search/Part3-Cas-pratiques : 882 restaurations canoniques sur 14 carnets, markdown uniquement. - Fixer canonique : scripts/notebook_tools/restore_accents_canonical.py (4 lignes bright : markdown seul / pas les cibles de liens / pas le code / pas les sorties ni execution_count). - Table canonique etendue de 200 a 201 paires : ajout de "prerequis" -> "prérequis" (487 occurrences mesurees sur MyIA.AI.Notebooks/**, 436 carnets FR, 0 dans un carnet _en ; forme accentuee unique). - Preuve : 630 cellules inspectees, 182 cellules markdown modifiees, 0 cellule de code, 0 sortie, 0 execution_count, 0 diff non accentuel (comparaison fold(base) == fold(head) cellule par cellule). - Aucune re-execution due (C.2) : le diff ne touche que des cellules markdown. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…che Search/Part3-Cas-pratiques Les 14 carnets de la tranche accent sont modifies (blob SHA change) : les paires concernees doivent etre re-attestees, sinon la garde de parite les declare DRIFT. Ordre respecte : `--update` passe EN DERNIER, apres le commit de contenu (regle #8957). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
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 |
|
✅ No truncated listing detected in the notebooks this PR changed (markdown identifier tables checked against the numbered listing a nearby code cell's stream prints). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
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) |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible) Verdict calcule ce tour (cle
Pinned lockfile: |
Grain: MED/notebook-python — lane myia-po-2027:CoursIA-2 — prev: MED/guard #25032
Ce que fait cette PR
Une tranche de restauration d'accents sur la famille
Search/Part3-Cas-pratiques: 882 restaurations sur 14 carnets, cellules markdown uniquement.Contexte : l'audit visuel du site déployé (EPIC #10921, critère 5) a mesuré que la perte d'accents sur les pages publiques est sélective et vient de la source — le titre et la prose d'un carnet ont perdu leurs accents (« Espaces d'etats », « Pre requis », « Duree estimee ») alors que le corps de la même page en conserve (« probleme »). Le rendu n'est pas en cause : c'est le markdown source des carnets qui est désaccentué.
Fixer, organes, avant / après
scripts/notebook_tools/restore_accents_canonical.py(4 lignes bright : markdown seul / pas les cibles de liens / pas le code / pas les sorties niexecution_count)scripts/notebook_tools/detect_accent_stripping.py— 200 paires -> 201scripts/notebook_tools/check_accent_restoration_invariants.py <nb> --base-sha <sha> --fail-on-findingsscripts/notebook_tools/check_twin_parity.py --update(9 paires ré-attestées)prerequis->prérequis)execution_countmodifiésfold(base) == fold(head)cellule par cellule,fold= NFD + suppression des marques combinantes)test_detect_accent_stripping.py+test_restore_accents_canonical.py)check-encoding-corruption,cell-source-parses, H.3)--base-sha 50d2d022f21f)La promotion de la table canonique
Le dictionnaire est volontairement conservateur. Une forme n'y entre que si elle remplit les trois critères du fichier lui-même :
prerequisn'existe pas sans accent ;_en— mesure surMyIA.AI.Notebooks/**: 487 occurrences réparties sur 436 carnets FR, 0 dans un carnet_en;prerequisest invariable.C'est ce même critère que
etat/duree, déjà traités par la table contextuelle (CONTEXTUAL_PAIRS, appliquée seulement sur preuve de contexte français) :prerequisn'a pas cette ambiguïté, il passe donc dans la table canonique inconditionnelle.Périmètre : pourquoi ces 14 carnets
Les 9 paires de jumeaux retenues sont celles dont aucun des deux fichiers n'est touché par une PR ouverte (mesure firsthand
check_lane_claim.py 16638 --paths ...->CLEAR). Les 12 autres paires de la famille restent occupées (#24992 sweep bannière .NET, #24938, #24778, #24899) et sont hors périmètre — pas de contournement, pas de--force.Les 9 paires concernées sont ré-attestées dans le second commit (
1251b936efbe), après le commit de contenu, comme l'exige la garde de parité (#8957) : le blob de chaque carnet change, l'attestation doit suivre.Périmètre de la fournée (seuils §A)
24 fichiers, 658 insertions / 592 deletions : au-dessus du seuil
changedFiles > 15, mais dans l'exemption « fournée homogène » (décision user 2026-11-03, Q162 a) : une seule classe de correction (restauration d'accent), produite par un fixer déterministe, vérifiée par l'organe de cette classe (rc=0 cité plus haut), plafonnée à une série entière (Search/Part3-Cas-pratiques). Le body nomme le fixer, l'organe et sa sortie avant/après. Les 9 attestations de parité sont des pièces de preuve produites par l'outil, pas une deuxième classe de correction ; la promotion du dictionnaire est le mécanisme même de la classe.Couplages hors périmètre (mesurés, non bloquants)
COURSE_CATALOG.generated.json: le catalogue est propriété de l'automatisation (catalog-pr-hygiene) ; son seul écrivain légitime estcatalog-cron.yml(quotidien surmain) etcatalog-drift.ymlest explicitement read-only advisory. Cette PR ne le régénère pas.translations/search-part2/*.csv: même logique (translation-drift.yml= read-only advisory) ; la tranche précédente Fix(accents,#16638): tranche Search/Part2-CSP -- restauration canonique des accents (markdown seul) #20790 ne les a pas touchés non plus.Ce qui n'est pas dû
Aucune ré-exécution n'est due (C.2) : le diff ne touche que des cellules markdown — 0 cellule de code, 0 sortie, 0
execution_countmodifié.Résiduel (honnête)
Le fixer signale des formes hors table laissées non curées :
complete/completee(mots français valides sans accent, donc hors table par construction) et quelques participes contextuels (explore,respecte,visites). Cette tranche ne prétend pas les traiter.Captures et verdict de l'audit visuel : dashboard RooSync workspace CoursIA (EPIC #10921, critère 5).
See #16638
Part of #21277
🤖 Generated with Claude Code