fix(semanticweb,#17066): redressement critique de SW-4-CSharp-SPARQL -- reference de campagne - #17069
Conversation
… l'identique Demande user 2026-09-20 : mesurer l'ampleur des notebooks portant un resume final double, apres constat que la passe corrective de densite laisse passer des sections d'interpretation et des resumes en double. Trois signaux : - dup_closing : meme titre de cloture repete (DUR, FP quasi nul) - dup_reading : meme titre d'interpretation repete (DUR) - multi_closing: clotures distinctes en fin de notebook (advisory) Mesure sur main : 218 notebooks porteurs / 1366 scannes. L'organe est un PRODUCTEUR DE LISTE DE TRAVAIL et un plancher refutable, PAS un critere d'acceptation : le champ JSON `not_an_acceptance_criterion` porte ce rappel jusque dans la sortie machine, parce qu'un consommateur qui cable un gate dessus le lira la plutot que dans la docstring. Robustesse : un JSON corrompu est rendu comme finding `unreadable` sans interrompre le balayage -- un scanner qui s'arrete au premier corrompu ne mesure que le prefixe de l'arborescence. Tests : 17 cas, controles positifs (resume double, empilement de lectures, emphase + numerotation) ET negatifs (notebook sain, lectures distinctes, cloture unique), plus la continuation du balayage apres un corrompu. See #13410 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…(reference de campagne) Le notebook signale par le user portait « Resume » deux fois (cellules 60 et 61, adjacentes) et « Interpretation » trois fois. La lecture de bout en bout en a revele bien davantage : 13 sections empilees a consolider, un bloc de code C# OPTIONAL colle quatre fois dont une dans la section UNION ou il n'a rien a faire, deux lectures de sortie placees AVANT le code qu'elles commentent, l'enonce de l'exercice 2 place avant son propre en-tete, le pied de navigation au milieu du notebook, et une FUITE DE SOLUTION : une pseudo-lecture du stub de l'exercice 1 donnant le code attendu complet. Geste : consolidation, jamais suppression a pile ou face. Chaque paire fusionnee garde ce que CHACUNE des deux apportait -- le tableau de correspondance et le piege QueryBuilder de l'une, la decomposition et l'analogie INNER JOIN de l'autre. 46 -> 26 cellules markdown. 16 cellules de code byte-identiques, 36 outputs et tous les execution_count intacts : diff markdown-only, pas de re-execution requise (C.2). Accents restaures via l'organe du depot (restore_accents_canonical.py, 133 cures) plutot qu'un script ad-hoc -- c'est precisement ce que le registre #2876 demande. check_duplicate_sections : 2 findings -> 0 check_split_reading_cells : clean restore_accents_canonical --check : rc=0 See #17066 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Pattern reference #17069 : les 19 titres de lecture prennent la forme '### Interprétation : <sujet>' (le token du titre de base survit, passe 3 du detecteur #14532) et les 7 ex-'Lecture qualitative' portent le lead '**Lecture qualitative ancrée des sorties.**' (passe 2, prefixe bold). Markdown-only, cellules code byte-identiques, organ 0 finding. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
[DIAGNOSTIC PREFLIGHT — myia-po-2026:CoursIA] Rouges du head a88ecdd :
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Path-collision (organ #13359/#13615)Cette PR #17069 (
|
…s de doubles lectures, double bibliographie fusionnee, 2 repositionnements (#17080) - 14 retitrages '### Interpretation : <sujet>' (pattern #17069) + cellule 24 refocalisee sur les baselines + fusion 52+53 en une lecture walk-forward - fusion 42 dans 39 (double lecture de la comparaison RF/XGBoost) - fusion des deux sections 'References academiques' de la conclusion (union 8 entrees) - repositionnements : lecture split apres son code (15), lecture importance RF apres sa demo (25), sorties des blocs Exercice 1/2 - organ check_duplicate_sections : 17 sections en exces -> 0 finding - markdown-only : 28 cellules code byte-identiques, outputs et execution_count inchanges, 67 -> 65 cellules See #17066 Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…es (#17086) - 8x 'Lecture du resultat' + 2x 'Lecture du graphique' identiques -> 10 titres sujet-specifiques (motif reference #17069) ; corps des cellules inchanges - lecture critique de bout en bout (34 cellules) : les 10 lectures sont autonomes, chacune lit une sortie distincte, positions correctes — aucune double lecture, aucune fantome ; incoherence apparente open/close BTC (3746.71 vs 3843) tranchee sur l'output committe : les deux nombres sont exacts (open vs close du 2019-01-01) - accents normalises sur 'resultat' (5 cellules titrees sans accent sur main) - markdown-only : 14 cellules code byte-identiques (sha1 multiset), 34 cellules conservees, diff 10+/10- (titres seulement) See #17066 Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] |
|
UNKNOWN -- pull request changed while prevalidation snapshot was read |
|
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 |
… de doubles lectures, énoncé Exercice 3 restauré (#17081) * fix(qc,#17066): redressement QC-Py-15 - 8 lectures titrees, 7 fusions generique->mesuree, enonce Exercice 3 restaure - 8 retitrages '### Interpretation : <sujet>' (pattern #17069) dont le QCAlgorithm final repositionne contre son code (87 -> 90 avant les blocs QC Cloud) - 7 doubles lectures fusionnees : la cellule generique '### Interpretation' est absorbee par la lecture mesuree qui lit la meme sortie (31, 34, 50, 53, 65, 73, 85) avec preservation documentee de leur contenu unique (glossaires, legendes, tranches WFER/CV, etapes du pipeline, contraste Sharpe/Calmar recale) - cellule 67 : sauts de ligne perdus de l'enonce Exercice 3 restaures (preuve : egalite whitespace-insensitive, zero caractere modifie) - lecture des helpers repositionnee contre son import (8 apres 6) - organ check_duplicate_sections : 15 titres -> 0 finding ; markdown-only : 32 cellules code byte-identiques, outputs/exec_count inchanges, 92 -> 85 cellules See #17066 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * repair(qc,#17066): corriger les 2 violations markdown-rendering de la cellule 62 Reproduit localement au head 7e6a568 : detect_markdown_rendering --check rc=1, 2 violations ERROR nouvelles dans la cellule de l'enonce Exercice 3 restaure : [yaml_block_open_no_close] (le separateur initial "---" ouvre un frontmatter jamais ferme, rendu en bloc setext geant) et [heading_in_list] x2 ("- # Indice :" en ATX heading dans un item de liste). Reparation par les fixers outilles prescrits par l organe (fix_hr_separator + fix_hint_headings, notebook entier) : "---" -> "***", "# Indice" passe en code-span. Prose et enonce integralement preserves, markdown-only, aucune re-execution. Gate rc=1 -> rc=0. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
… en H3 sujet-specifiques (0.88 vs 16.06 MAE, 4 canaux sous 0.65, covariable 0.5285 vs 0.4480, calibration 0.792/0.80) (#17098) Tranche 9 campagne #17066, motif pur #17069 (titration seule — lectures saines et bien positionnees, verifiees contre les outputs commites). Markdown-only, 10 cellules code byte-identiques. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…→0, lectures replacées, corrections factuelles (#17072) * fix(pedagogy,#17066): QC-Py-21 - consolidation sections dupliquees 37->0 Retitrage specifique des 19 lectures (double generation Interpr/Lecture -> une section, contenu integral preserve), fusion 59+60 (deux lectures d'une meme sortie), reecriture 63 (claims faux stub/pass/ImportError corriges - la cellule 62 execute reellement, exec_count 23), lecture comparative unique en 65, placement des lectures 20/29/47 contre leurs demos 17/26/44, closings sujet-d'abord, refs inter-cellules recalees. Markdown-only : 24 cellules code byte-identiques (sha1), outputs intacts, nbformat valide. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(qc,#17066): retablir les tokens plan-loss dans QC-Py-21 Pattern reference #17069 : les 19 titres de lecture prennent la forme '### Interprétation : <sujet>' (le token du titre de base survit, passe 3 du detecteur #14532) et les 7 ex-'Lecture qualitative' portent le lead '**Lecture qualitative ancrée des sorties.**' (passe 2, prefixe bold). Markdown-only, cellules code byte-identiques, organ 0 finding. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Fix: QC-Py-21 — 8 valeurs reancrees sur les sorties (review NanoClaw #17072) Chaque point a ete verifie firsthand contre les sorties committees AVANT correction (le verdict d'un reviewer est un verdict, pas une preuve) : - cellules 27 : les deux « ici » de la generation 1 (« alpha ~ 0.8 ici », « ~50% ici ») sont dementis par la generation 2 de la MEME cellule et par les mesures (alpha = 0.020, condition number 21.3 -> 19.2 = 10%). Bornes au regime generique vise. - cellule 30 : « les poids bougent de moins de 1% par actif » contredit par l'output (ASSET_1 : 0.9% -> 2.1% = +1.2 pt). « d'au plus 1.2 pt, 9 actifs sur 10 sous 1 pt ». - cellules 35 et 38 : R2 test -0.180 -> -0.179 (l'output rend -0.179). - cellules 35 et 38 : importance de return_20d 0.15 -> 0.14 (0.144271 ; 0.15 est kurtosis a 0.154614). - cellule 37 (hors liste du reviewer) : « R2 test modeste (~0.1-0.3) » contredit par -0.179, dans la meme section. Corrige et signale comme tel. Markdown-only, en place : 66 cellules avant et apres, 8 lignes remplacees. Les 24 cellules de code et leurs outputs sont bit-identiques (assertion sur le multiset de SHA du JSON canonique). Note : la citation du reviewer visait « #27 » pour la phrase « moins de 1% » ; elle est en realite dans la cellule 30 (grep exhaustif : 1 occurrence). Le defaut corrige est le defaut reel, pas la citation. Signale, NON corrige ici (sujet distinct, et preexistant a la base) : check_density_anchor signale que les cellules 21 et 30 suivent un stub d'exercice (cellules 20 et 29, byte-identiques en base). L'organe craint une divulgation de reponse ; le contenu n'en divulgue aucune (21 = limites de Mean-Variance, 30 = synthese du shrinkage). Le deplacer serait un autre sujet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] Re-stamp c.92 (recalcul GitHub terminé)Re-stamp exact-head post-recalcul GitHub. Tête Aucun rouge actif à la tête actuelle. Dossier READY pour ai-01. |
… redressement Le redressement du jumeau C# ne touche que le markdown (46 -> 26 cellules, sections dupliquees consolidees) ; les 16 cellules de code sont identiques en source et en sorties entre la base et la tete. L'axe de parite semantique est inchange, le jumeau Python n'est pas touche : rebaseline + ligne en tete de known_differences, comme le demande le Twin parity audit (#8057). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…→0, lectures replacées, 2 fusions (#17078) * fix(qc,#17066): QC-Py-18 consolidation sections dupliquees 17->0 Retitrage specifique des 18 lectures '### Interpretation' (pattern #17069 '### Interpretation : <sujet>'), fusion des 2 doubles lectures (simulation fondamentale 23+29, execution pipeline 53+55), replacement des lectures contre leurs demos (inversions P1-P6 : lectures avant le code qu'elles lisent, lectures apres les exercices), 2 refs recalees, 8 ids cellulaires repares (6 vides pre-existants + 2 des fusions). Markdown-only, 25 cellules code byte-identiques (sha multiset). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(qc,#17066): QC-Py-18 retablir les 6 ids vides pre-existants check_kernel_drift.py aligne les cellules code par id : sur base ces 3 cellules code portent id "" (non matchable dans base_ids) ; les avoir renommees les faisait apparaitre comme 'added code cells' -> faux signature_drift cellfix02/04/06 (cause heuristique NumPy trompeuse). Les ids des 2 cellules fusionnees (markdown) restent : invisibles au garde, valides nbformat. Le deficit nbformat 4.5 des 6 ids vides est pre-existant sur main, hors scope de cette campagne (1 sujet par PR). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(qc,#17078): QC-Py-18 — aligner 3 lectures sur les sorties committées (F1/F2/F3 Hermes) Corrections numériques in-place demandées par la review Hermes du 2026-09-21 (head cac7975, CONCERNS) — md-only, aucune prose ajoutée hors requalification : - F1 (cell 52) : bloc dimensions 350/150/15 -> 312/134/14, valeurs exactes de la sortie committée de la cellule 51 ; cadrage « sortie de l'exécution » explicite dans le titre du bloc. - F2 (cell 52) : comptage features — param n_features=15 (code, inchangé) mais 14 retenues après suppression des corrélées ; « Garder » -> « Demander » sur la ligne de paramètre, retentions corrigées (bullet 4, selected_features_, cell 54 item 4). - F3 (cell 54) : Accuracy Train 0.9295 / Test 0.5597 (sortie cell 53) ; « sur-apprentissage modéré » requalifié « marqué » avec l'écart chiffré. Cellules code byte-identiques (vérifié : seules 52 et 54 changent, +170 c md). Co-Authored-By: Claude-Code <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] Re-stamp c.94 (Twin parity audit levé par push porteur)Re-stamp exact-head post- Aucun rouge actif à la tête actuelle. Dossier READY pour ai-01. |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
…arkdown (43 formes) Le redressement avait desaccentue des formes accentuees en base (Interpretation, predicat, defaut, decroissant, serie...). Markdown seul, hors blocs de code et code inline : aucune cellule de code ni sortie touchee. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…s (markdown seul) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
[INFO] lane myia-ai-01:CoursIA -- Tête |
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 myia-ai-01 |
|
[ADJOINT PREFLIGHT] |
…17069) SW-4-CSharp-SPARQL.ipynb avait ete modifie par la Phase 1 (commit 78ce56a) alors que la note de perimetre de la PR le declare hors scope au profit de #17069. Le fichier est restaure a la version de main : le diff ne le porte plus, et la note de perimetre devient vraie au head. Co-Authored-By: Claude Code <noreply@anthropic.com>
Grain: DEEP/notebook-dotnet -- lane myia-ai-01:CoursIA -- prev: DEEP/guard #17068
Réparation de référence de la campagne #17066. Ce body est le gabarit : les points 1 à 3 (plan, détail des consolidations, verdict de séquence) sont ce que chaque PR de la campagne doit porter. Ils existent pour une raison précise — un reviewer ne peut pas relire 218 notebooks, mais il peut confronter un plan annoncé au notebook en deux minutes, et un plan fabriqué se voit.
Notebook choisi : celui que le user a nommé (
SW-4-CSharp-SPARQL.ipynb), qui portait « Résumé » deux fois — cellules 60 et 61, adjacentes.1. Plan du notebook après réparation
#r nuget+usingusingen .NET Interactive.Object("x")produit une variable, pas un littéral)PREFIX; conjonction de patterns =INNER JOIN; cardinalité du résultat?age(pattern et filtre)unbound;INNER JOINvsLEFT JOIN; leFilterdans l'OptionalOFFSETest O(N),LIMITsansORDER BYest non déterministe^^xsd:stringHasBoundValueest obligatoire côté C#animals.ttlLa progression tient : chaque clause est montrée (requête affichée) en sections 1-5, puis exécutée sur un graphe réel en section 6, puis pratiquée en section 7.
2. Détail de chaque consolidation
Aucune section n'a été choisie à pile ou face. Pour chaque paire, ce que portait A, ce que portait B, ce qui a été gardé.
.Object("John Smith")?ageunbound, comparaison INNER JOIN, bloc C# identiqueOFFSETO(N), présent deux fois, n'est plus dit qu'une fois^^xsd:visibles dans la sortie, que ni A ni B ne commentaientHasBoundValue, méthodes deSparqlResultmainla navigation était au milieu, suivie d'un second RésuméDeux suppressions sans consolidation, justifiées :
Exercice a completer, et qui donnait sous**Code attendu** :la solution complète de l'exercice. C'est une fuite de solution produite par la densification. Supprimée entièrement ; rien n'en a été conservé.***seul dans sa cellule, alors que la cellule suivante commence déjà par***.3. Verdict de séquence
Ce qui va. La progression montrer → exécuter → pratiquer est maintenant lisible de bout en bout. Les interprétations suivent toutes la cellule de code dont elles commentent la sortie — ce n'était le cas que d'une partie d'entre elles sur
main. Les transitions entre cellules sont explicites et justifiées par le contenu (la limite du QueryBuilder sur LIMIT/OFFSET annonce le passage en chaîne brute ; la section 6 annonce l'exécution réelle). Le pied de navigation est en dernière position.Ce qui reste imparfait, sans être de la dégénérescence — je le dis plutôt que de le taire :
animals.ttl) n'a que deux lignes d'énoncé, là où les exercices 1 et 2 ont objectif, sortie attendue et indices. C'est une asymétrie réelle, mais combler cet écart serait de la densification — interdite dans cette PR (§interdit 3 de Redressement critique des 218 notebooks a sections dupliquees -- lecture de bout en bout, consolidation, pas suppression mecanique #17066). À traiter séparément si le déséquilibre gêne.Ce que je n'ai pas vérifié : je n'ai pas ré-exécuté le notebook. Le diff est markdown-only, donc C.2 ne l'exige pas — mais cela veut dire que je n'ai pas revalidé que les sorties committées correspondent au code. Elles sont inchangées depuis
main.4. Comptes de l'organe (plancher réfutable, pas critère)
Ce zéro ne prouve rien à lui seul — c'est le point 2 ci-dessus qui porte la preuve du travail. L'organe dit seulement que le défaut nommé a disparu.
5. Le code n'a pas bougé
Diff : markdown uniquement (compte à jour dans l'onglet Files ; +40/−40 ajoutés par le second passage d'accents).
Note sur les accents
Mon premier jet a réécrit les cellules sans accents (« requetes », « donnees ») là où le notebook en portait — une régression que j'ai introduite. Corrigée par l'organe du dépôt,
restore_accents_canonical.py(133 cures, markdown-cell-source strict, cibles de liens protégées), et non par un script ad-hoc : c'est exactement ce que le registre #2876 demande, et les 11 formes hors table (observée×8,début×2,décale) ont été traitées à part, hors fences et hors cibles de lien.Second passage (25/09, commits
5c8fca1f15eta4cf4d8064). La table de l'organe ne couvrait pas toutes les formes désaccentuées par le premier jet. 43 formes l'étaient encore alors qu'elles portaient un accent en base :Interprétation×11 (titres),prédicat×7,défaut×4,décroissant×4,série,littéral(e),générée,référence(s),chargée,régulières,vérifie,exécutée,triée,complété/complèteselon le contexte,Combinés à.restore_accents_canonical.py --checkrend 0 cure.check_twin_parity.py --updatepuis--check, et SW-4 SPARQL rendOK. L'attestation du 24/09 est remplacée par celle du 25/09. Le seulDRIFTdu registre, Probas-5, est hérité de la base et n'est pas touché par cette PR.See #17066, #13410
🤖 Generated with Claude Code