Repository navigation
fix(notebooks,#17498): tranche residuel -- 15 defauts de rendu corriges (15 -> 0) - #17755
Conversation
…es (15 -> 0) Quatrieme et derniere tranche du rollout #17498 (apres SymbolicAI, GenAI, GameTheory). Perimetre : ML / Probas / RL / Complexity / IIT, 9 carnets. Mesure check_math_render, jambe KaTeX ON des deux cotes : 15 -> 0. Trois mecanismes, tous en cellule markdown uniquement : 1. `\*` -> `*` DANS UN SCOPE MATH (9 defauts, 10 occurrences). `\*` n'existe pas en KaTeX ; l'etoile d'exposant s'ecrit `^*`. Le cadrage est indispensable : hors scope, `\*` est un asterisque echappe legitime du markdown. La definition du scope est celle de l'organe, importee (`MATH_SCOPE`, `BACKTICK_SPAN`, `FENCED_BLOCK`, `ESCAPED_DOLLAR`) ; aucune detection reimplementee. 2. Caracteres de controle = inverse exact du macro (4 occurrences, 2 carnets). `\v` + `ert` = `\vert` (Complexity-05) ; `\v` + `arepsilon` = `\varepsilon` (CausalBridges-01, dont la puce scindee en 3 elements par un ecrivain fonde sur `splitlines()` est rejointee -- meme regle que la tranche GameTheory). 3. Editions litterales declarees (7) : devises non echappees (3, ML-1), formule nue + marqueur d'outil `865` isole dans tout le corpus (Infer-2), indice `_` dans un `\text{}` refuse par KaTeX (CausalBridges-08). Deux reconstructions declarees dans le body de PR : le marqueur `865` (artefact d'ecriture, balayage corpus) et les deux symboles `p_K` / `n` manquants d'Infer-2, fournis par nous. Normalisation annexe DECLAREE : le hook `scrub-papermill-paths` a ramene au basename 6 chemins ABSOLUS deja presents dans `metadata.papermill` de 3 carnets (worktrees d'autres lanes : CoursIA-complexity03, CoursIA-16795-qc, CoursIA-16795). Normalisation sanctionnee de METADATA : aucune sortie de cellule editee, aucune re-execution requise. A noter, l'un des chemins designait encore `Complexity-03` dans un carnet renomme `Complexity-05`. Verification : 0 occurrence restante (KaTeX ON) ; structure identique a origin/main sur les 9 carnets (nombre de cellules, cell_type, sources de code byte-identiques, outputs/execution_count intacts) ; seules des sources markdown et ces 6 chemins de metadata different ; cliquets split-reading et papermill verts avec l'organe de main. See #17498 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
…che residuel Le gate `Twin parity audit (#8057)` a nomme exactement deux paires, et le registre stocke le blob SHA de CHAQUE jumeau : toute edition le deplace, y compris markdown-only. Le rebaseline ATTESTE la parite, il ne la repare pas -- et il va en DERNIER, apres tout strip outile (le hook scrub-papermill-paths a deja tourne au commit precedent, #8957). Re-audit firsthand avant d'attester (les deux jumeaux sont sur un moteur DISTINCT, `parity_level: native-both`) : - **ML-1 Introduction** (cote Python edite : 3 devises non echappees). Le jumeau C# `ML-1-Introduction.ipynb` mesure **0 defaut** de `check_math_render`, jambe KaTeX ON. - **Probas-2 Gaussian-Mixtures** (cote C# edite : formule nue, marqueur `865`, deux symboles reconstruits). Le jumeau Python `PyMC-02-Gaussian-Mixtures.ipynb` mesure **0 defaut** et ne porte aucun bloc BIC. Correction unilaterale a juste titre dans les deux cas : une entree `known_differences` en tete de chaque paire la documente (date, lane, raison, et l'etat mesure du jumeau). Controle de parse du registre apres edition manuelle des YAML : 1630 fichiers lus, **0 casse**, les deux nouvelles entrees en tete. See #17755, See #8057 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Path-collision (organ #13359/#13615)Cette PR #17755 (
|
|
[ADJOINT PREFLIGHT] |
…es -- renumerotation en 0017 (#17858) Deux PRs mergees le 2026-09-25 ont ecrit le meme index 0016 dans la meme paire du registre jumelle : #17808 (lane myia-po-2024:CoursIA, mergee 17:37:44+02:00) et #17755 (lane myia-po-2026:CoursIA, mergee 22:19:02+02:00). Chacune a calcule `max(index) + 1` = 0016 sur une base qui ne voyait pas l'autre -- mesure par le contenu : chacune atteste un seul cote courant, l'autre perime, depuis une base commune anterieure aux deux. `test_audit_index_unique_and_no_identical_duplicates_per_pair` rougit depuis sur main (run Scripts Tests (CPU) sur 9882979 = failure, precedent = success), ce qui rougit le job sur toute PR ouverte descendant de ce main. L'entree entree dans main en second prend l'index suivant, 0017 : l'index est la cle de tri du journal, et l'ordre chronologique observable est l'ordre d'entree dans main. Les deux attestations sont conservees -- elles ne sont pas byte-identiques (SHA de contenu et motifs distincts), donc aucune ne se deduit de l'autre. Renumerotation pure : aucun octet de contenu modifie, aucun SHA reecrit, aucun `--update` passe. Verification : test_twin_registry_integrity.py 1 failed -> 46 passed ; collisions d'index sur le registre entier 1 -> 0. Co-authored-by: Claude Code <noreply@anthropic.com>
Grain: MED/notebooks -- lane myia-po-2026:CoursIA -- prev: MED/notebooks #17754
Tranche « residuel » de #17498 : 15 defauts mesures, corriges a 0
Quatrieme et derniere tranche du rollout, apres SymbolicAI (#17745), GenAI (#17751) et GameTheory (#17754). Perimetre :
ML/Probas/RL/Complexity/IIT, 9 carnets, jambe KaTeX ON des deux cotes.check_math_renderKATEX-UNRENDERABLE12,NUDE-LATEX2,ODD-DOLLARS11.
\*->*dans un scope math (9 defauts, 10 occurrences)\*n'existe pas en KaTeX (« Undefined control sequence ») ; l'etoile d'un exposant s'ecrit^*. Rencontre sur\varepsilon^\*,w^\*,a^\*,k^\*.Le cadrage est le sujet, pas l'etoile. Hors scope,
\*est un asterisque echappe legitime du markdown : un remplacement fichier-entier changerait la prose. La definition du scope est donc celle de l'organe, importee (MATH_SCOPE,BACKTICK_SPAN,FENCED_BLOCK,ESCAPED_DOLLAR) -- aucune detection reimplementee. Le masquage est reecrit en longueur egale (espaces au lieu des substitutions courtes de l'organe) pour que les positions restent celles du texte d'origine, et la substitution se fait par splice aux offsets exacts : un\*hors scope dans le meme element reste intact. Le compte est verifie par fichier (10 attendues, 10 faites -- un ecart aurait fait echouer le script).2. Caracteres de controle : l'inverse exact du macro (4 occurrences, 2 carnets)
Meme regle que la tranche GameTheory, ou elle a ete validee sur 4
KATEX-UNRENDERABLE:\v+ert=\vert,\v+arepsilon=\varepsilon. Rien a deviner, c'est la substitution inverse de la corruption JSON.CausalBridges-01porte le deuxieme artefact du meme incident : un ecrivain fonde sursplitlines()(qui coupe sur la VT) avait scinde la puce en 3 elements de source, avec un LF au milieu de chaque macro. Les recoller est necessaire -- sans fusion, la substitution seule rendrait\v+ LF +arepsilon, soit un accent sur une lettre sans rapport. La puce est rendue en un element,$\varepsilon_W, \varepsilon_Y$.3. Les 4 autres defauts
ODD-DOLLARS) :une transaction à 1 800 $ouvrait un scope que rien ne fermait. Deux autres$de devise dans un autre paragraphe de la meme cellule sont corriges au passage : ceux-la s'apparient (nombre pair = aucun orphelin) et formaient un faux scope de prose en italique -- invisible a la detection d'orphelins de l'organe. Meme classe, meme remede quetouche 2 $de la tranche GameTheory._dans un\text{}(CausalBridges-08) : KaTeX refuse un indice en mode texte (« Expected 'EOF', got '_' »). Mesure sur les deux modes d'affichage :\text{... comme si x_0 »)}echoue,\text{... comme si } x_0 \text{ »)}passe.NUDE-LATEXx2) :BIC_K = -2 \ln(\hat{L}_K) + p_K \ln(n)sans delimiteurs. Encadree en$$...$$.Deux reconstructions DECLAREES (a confirmer par le proprietaire)
865. La formule d'Infer-2 etait entouree de865:865BIC_K = ... \ln(n)865. Balayage du corpus entier (11 608 carnets, elements de source commencant par 3 chiffres colles a une lettre) : une seule occurrence, celle-ci. C'est un artefact d'ecriture, pas du contenu -- la formule elle-meme est intacte, seuls les delimiteurs manquaient. Retire.ou $\hat{L}_K$ est la vraisemblance maximisee, $ le nombre de paramètres du modèle a K composantes, et $ le nombre de données.Les deux symboles manquants sont ceux de la formule ci-dessus, dans l'ordre de la phrase (p_K, puisn). Fournis par moi :$p_K$et$n$. La reconstruction est fondee (la formule est a deux lignes au-dessus) mais elle reste une reconstruction.Portee
git diff --stat(trois points vsorigin/main) : 13 fichiers, 35 insertions / 23 suppressions -- 9 carnets de contenu edite (les 15 lignes corrigees, plus le net-2de la fusion de la puce 3 elements -> 1, plus 12 lignes demetadata.papermill), plus 4 fichiers du registre twin (section suivante).Verification structurelle des 9 carnets contre
origin/main: nombre de cellules identique,cell_typeidentique, sources des cellules de code byte-identiques,outputsetexecution_countintacts. Seules des sources markdown (12 cellules) et 6 chemins de metadata different. Edition markdown-only : aucune re-execution requise (C.2).Normalisation annexe DECLAREE : le hook
scrub-papermill-pathsa ramene au basename 6 chemins absolus deja presents dansmetadata.papermillde 3 carnets (worktrees d'autres lanes :CoursIA-complexity03,CoursIA-16795-qc,CoursIA-16795). Normalisation sanctionnee de metadata -- aucune sortie de cellule editee. A noter : l'un de ces chemins designait encoreComplexity-03dans un carnet renommeComplexity-05.Twin parity : 2 paires mises en DRIFT, rebaselinees dans cette PR
Le gate
Twin parity audit (#8057)a nomme exactement 2 paires (base=OK head=DRIFT) : ML-1 Introduction (cote Python edite) et Probas-2 Gaussian-Mixtures (cote C# edite,Infer-2). Le registre stocke le blob SHA de chaque jumeau, donc toute edition le deplace, y compris markdown-only : rebaseliner atteste la parite, il ne la repare pas -- et il va en dernier, apres tout strip outile (le hookscrub-papermill-pathsavait deja tourne au commit precedent, #8957).Re-audit firsthand avant d'attester, les deux paires etant sur des moteurs distincts (
parity_level: native-both) : le jumeau C# de ML-1 (ML-1-Introduction.ipynb) et le jumeau Python de Probas-2 (PyMC-02-Gaussian-Mixtures.ipynb) mesurent 0 defaut decheck_math_render(jambe KaTeX ON), et le second ne porte aucun bloc BIC. La correction est donc unilaterale a juste titre : une entreeknown_differencesen tete de chaque paire la documente (date, lane, raison, etat mesure du jumeau). Controle de parse du registre apres edition manuelle des YAML : 1630 fichiers lus, 0 casse.Cliquets (avec l'organe de
main)Complement, meme classe vue par l'autre organe (advisory,
check_latex_control_chars). Mesure sur le perimetre des 9 carnets : 2 occurrences / 1 carnet -> 0 (leVT -> \vertdeComplexity-05, x2).Sur le corpus entier, cette branche en laisse 5 occurrences / 3 carnets, toutes hors perimetre : 2 faux positifs
LF -> \nu(GameTheory-02c) documentes dans #17754 -- laisses en place, les « corriger » falsifierait deux formules correctes -- et 3BS -> \bardeja corriges par #17754 (2) et #17751 (1), non encore mergees.A noter, la difference de perimetre entre les deux organes, mesuree ici : les 2 VT de
CausalBridges-01sont invisibles pour l'organe advisory (son discriminant « un scope inline ne franchit pas un saut de ligne brut » -- or c'est exactement la forme de la corruption,$\x0b\narepsilon), et c'est la jambe KaTeX decheck_math_renderqui les voit. Deux organes, deux perimetres, meme famille de defaut.Reste du rollout #17498
Search (tranche 2, lane
po-2023) et QC. Ces deux-la n'appartiennent pas a cette lane.See #17498🤖 Generated with Claude Code