fix(density,#17040): redressement paquet P19 — SemanticWeb + SmartContracts + SymbolicLearning + Tweety - #17056
Conversation
Cellules ajoutees par la campagne densite PR #16035 (commit 1467cb6) supprimees car elles paraphrasaient des lectures preexistantes sur les memes sorties de cellules code : - 99394809 (lire un graphe comme un schema et ses instances) doublonne la lecture 4.1 'Resultats de la selection' (c08705b85987) sur la meme sortie de l'Exemple guide 1 (14 triplets rdf:type + 4 proprietes rex) - 6d8bdaa5 (4 + 51 = 55, l'union qui ne compte pas deux fois) doublonne la lecture 3.1 'verification manuelle' (2285ee73b077) sur la meme sortie de l'Exemple guide 2 (g1=4 + g2=51 = 55, 0 doublon) - 9c44e108 (l'ordre dans la structure, une liste est un graphe deguise) doublonne la lecture 5.1 'Structure interne' (a3f2896257f9) sur la meme sortie de l'Exemple guide 3 (chainage rdf:first/rdf:rest) Cellule 65a965f1 conservee : elle lit la sortie unique de la cellule code 98842ff2fcf2 (parsing nt vs turtle = 1 triplet) qu'aucune autre lecture ne commentait. Markdown-only, cellules code byte-identiques. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…pprimee Cellule ajoutee par la campagne densite PR #14117 (commit 189cfef) paraphrasant un stub d'exercice etudiant (code 8a441517) supprimee : - la cellule '### Lecture de l'exercice 2 (stub) (ancre sur code[17])' paraphrase la cellule d'exercice 2 (code commente + 'Console.WriteLine( Exercice a completer)') qui n'a aucune sortie exploitable — elle sert uniquement a indiquer ou l'etudiant doit implementer sa requete. Cette lecture ne lit aucune sortie reelle ; elle redouble le titre de l'exercice et detourne l'attention. Supprimee pour respecter la regle (c)(i) du mandat : pas de lecture sur cellule d'exercice. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…pprimee Cellule ajoutee par la campagne densite PR #14119 (commit 65ee8ff) paraphrasant un stub d'exercice etudiant supprimee : - la cellule '### Lecture de l'exercice 3 (stub) (ancre sur code[10])' paraphrase la cellule d'exercice 3 (0083077a-0e66-4910-80ec-6e41a83c3552) qui contient 'TODO etudiant : ecrivez une fonction qui tente de parser un JSON-LD' et sort 'Exercice a completer' — la lecture commentait explicitement la valeur neutre du stub (deux fois False), pas une sortie semantique. Lecture d'une cellule d'exercice : regle (c)(i) du mandat, supprimee. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cellule ajoutee par la campagne densite PR #14161 (commit 4793a4f) supprimee : 'annexe-solutions-exercices' (## Annexe — solutions des exercices). Ce bloc detaille les trois protocoles de preuve `exact` pour les exercices 1-2-3 du notebook, places en fin de document apres la Conclusion. Ce n'est pas une lecture ancree sur une sortie de cellule code (regle (e) du mandat : on ne re-ajoute jamais de prose, et la cellule n'est pas une lecture de sortie unique) ; sa presence releve d'un enrichissement pedagogique non lie aux outputs executes. Markdown-only. Cellule 'Lecture de la convergence et du serrage du perceptron' (idx 21, ajoutee par la meme campagne) conservee : lecture unique de la sortie Lean #check du perceptron (cellule 41438b21), non doublonnee par une lecture preexistante. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ion' supprime Cellule ajoutee par la campagne densite PR #16319 (commit d9e59b9) paraphrasant un exercice etudiant supprimee : - '**Attendus, pour auto-verification.**' detaille les attendus de l'exercice 1 (Tautologie, contradiction ou contingence) qui suit immediatement, sans commenter une sortie executee. Lecture d'une cellule d'exercice : regle (c)(i) du mandat, supprimee. La consigne de l'exercice reste trouveable dans la cellule markdown '#### Exercice 1 : Tautologie...' qui precede le code etudiant. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… en commentaire' supprimees Cellules ajoutees par la campagne densite PR #16396 (commit 9abd646) supprimees car elles lisaient des cellules code sans sortie committée : - 81028500 ('protocole de preservation : le code vit en commentaire') paraphrase dcf476ed, cellule 100% en commentaire IKVM (DLL expose 0 types tweetyproject.logics.*), pas d'output execute - 5a5fbf21 ('base preservee : trois regles medicales sous Maximum Entropy') paraphrase 3ab3804d, idem : cellule entiere en commentaire - b23b4e0c ('requete preservee et echelle des exercices') paraphrase 6b90ee67, idem Regle (c)(iii) du mandat : valeurs absentes des sorties committees — ces trois cellules n'ont aucune sortie executee a commenter (le code est preserve en commentaire pour cause d'incompatibilite IKVM). La documentation du diagnostic IKVM reste portee par le commentaire de chaque cellule code preservee. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…s' supprime Cellule ajoutee par la campagne densite PR #16319 (commit d9e59b9) supprimee : '**Le protocole des exercices.**' introduit les trois exercices (extensions preferees, tour de parole multi-agents, utilite exacte) sans commenter une sortie executee — c'est un chapeau de section place entre la Conclusion et les exercices. Regle (e) du mandat : pas de prose ajoutee qui ne lit pas une sortie unique ; ici la cellule ne lit aucun output, elle paraphrase l'enonce des exercices suivants. Supprimee. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…pprimees Cellules ajoutees par la campagne densite PR #14116 (commit d61b98b) supprimees : - fuse-25 ('### Lecture de l'exercice 1 (stub) (ancre sur code[13])') paraphrase le stub de l'exercice 1 (5e404f56 : 'Console.WriteLine( Exercice a completer)') — regle (c)(i) du mandat. - fuse-26 ('**Objectif** : Utilisez le **QueryBuilder**...') enonce l'exercice 2 (OPTIONAL/QueryBuilder) mais est situee entre le code de l'exercice 1 et l'enonce de l'exercice 2 (6de49146, deja modifie par la campagne : Interpretation -> Interpretation) — c'est un doublon de l'enonce, mal place, redondant avec la cellule 56. Les 20 autres cellules fuse-* conservees : ce sont des lectures de sorties uniques ou des sections structurelles legitimes (titre du notebook, enonces de sections, Resume). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
Concern: Même après ces corrections, les notebooks sont encore dégénérés: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
…consolidation doublons - Interpretation fossile (pip -q) supprimee : la cellule code concernnee est desormais un commentaire 'dependances pre-provisionnees', aucune commande pip n'existe dans le notebook - '#### API des listes' + '### API des listes (synthese)' consolidees en une seule section apres 5.3 : table unique rdflib/comportement/dotNetRDF, difference RemoveFromList-vs-index gardee, note 'quand utiliser' gardee - Titres #### normalises en ### (Comparaison des formats, Resultats de la selection) pour coherence avec les autres interpretations de meme niveau - Markdown seul : cellules code byte-identiques (verifie par signature JSON) - Organe check_duplicate_sections.py : 0 finding avant, 0 apres Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…idation doublons - 3 copies embarquees du C# derivees du code reel supprimees (helpers sans try-catch, connexion x2, Nobel) : le code execute reste la seule source - Fausses claims corrigees : 'logs, retry, timeout' (aucun n'existe), 'LIMIT 50' (le code dit LIMIT 10), pattern 'federation dispatchee' sur fedQuery (requete 100% DBpedia), requete mal citee dans la note du test de connexion, ligne Resume 'Async, retry, logs' - Lectures placees APRES leur code : namespaces (deplacee), Einstein, Pitt+Rowling, aventures (deplacee), comedies (deplacee), wd1, wd2, 2-etapes (deplacee) — les annonces 'Sortie observee de code[N]' pre-code supprimees, le contenu de lecture garde et ancre sur la sortie reelle - Sous-section 'Fonctions utilitaires' dupliquee (cell 7) retiree, absorbee par la section 3 reecrite honnetement - Double lecture du code save/reload (Lecture des formats + Interpretation) consolidee en une section : comparaison JSON/XML gardee, sorties verbatim gardees, gestion d'erreurs gardee - Titres '(ancre sur code[N])' nettoyes (artefacts de campagne) - Lectures nouvellement couvertes : requete 3 Rowling et requete 5 Premier League (jamais lues auparavant), sorties villes/Premier League relues dans l'interpretation DBpedia - Markdown seul : cellules code byte-identiques, ordre relatif preserve - Organe check_duplicate_sections.py : 0 finding avant, 0 apres Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ion doublons
- 3 paires de doubles lectures fusionnees ('Lecture ... (ancre sur code[N])'
+ 'Lecture du resultat') en une seule lecture par experience : parsing
(6 triplets), Schema.org Product (15 triplets), round-trip (isomorphisme)
- 5 copies C# embarquees supprimees, dont le code Product recopie 2x dans
la cellule 13 (une fois maquillee en 'Sortie observee (verbatim)' — c'etait
du code, pas une sortie) et des helpers derive qui chargeaient un Graph
direct alors que le vrai code passe par TripleStore (contredisait la lecon)
- Annonces 'Sortie observee' derivees supprimees : dataset @graph annonce
(bob->charlie) != reel (bob/carol), Turtle round-trip annonce avec
xsd:date + location != reel (chaine littérale, 3 triplets)
- Lectures re-ancreees sur les sorties reelles : piege litteral-vs-IRI de
knows/url (visible dans le Turtle reel), startDate reste une chaine
litterérale, 6 = 4 champs dont knows multi-value + rdf:type implicite
- Header dedouble : une seule liste d'objectifs, une seule justification
twin ; 'subtilite TripleStore' expliquee une fois (helpers) au lieu de 4
- Note CS1701 fossole retiree (contredite par le pin 3.4.0 du code)
- Conclusion : les deux listes des 6 piliers fusionnees en une
- Exercices 1-3 : objectifs dedoubles fusionnes, sorties attendues alignees
sur les stubs reels (titre/auteur/publie ; liste des 3 personnes) ;
'Code attendu' de l'exercice 1 qui fuitait la solution remplace par une
note honnete (compaction = definition du contexte, cf Partie 1)
- Markdown seul : cellules code byte-identiques
- Organe check_duplicate_sections.py : 0 finding avant, 0 apres
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ve — consolidation doublons - Double lecture de Dcoin consolidee : pre-lecture (copie code + 'Trois remarques') absorbee dans la lecture post-code unique ; structure des 3 champs + pourquoi noncomputable/norm_num/simp + pourquoi fondamental gardes - Sections 3, 5, 6 : les lectures post-code repetaient quasi verbatim la chaine de raisonnement / l'explication MGF / le para 'serrage = moitie du travail' deja en tete de section — chaque explication garde UNE fois, renvoi 'tete de section' dans la lecture - Renvoi fantome supprime : les 3 exercices pointaient une 'Annexe — solutions des exercices' inexistante (le notebook finit a la Conclusion) - Caractere parasite chinois (担心) dans la prose francaise corrige - Conclusion : listes 'trois concepts cles' et 'quatre idees forces' (recouvrantes) fusionnees en 'cinq idees a retenir' - En-tete 'Quatre proprietes de Convergence' (6 puces listees) retitre - Claims faux corriges : 'Lean 4 resout les imports paresseusement' (faux), 'Sortie attendue : 5 lignes de confirmation' (le kernel n'emprunte que son echo, Lean n'imprime rien) ; la section Exercices ne re-enume plus les 3 exercices deja detailles en sous-sections - Markdown seul : cellules code byte-identiques - Organe check_duplicate_sections.py : 0 finding avant, 0 apres Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…onsolidation doublons
- 3 paires de lectures redondantes d'une meme sortie consolidees en une
lecture par experience :
* enumeration des mondes (structure du cube + valuation/Tarski fusionnees,
'monde vide = tout faux' dit une fois au lieu de trois)
* raisonnement SAT (asymetrie confirmer/refuter + approches semantique/
syntaxique fusionnees, la strategie KB-et-non-phi expliquee une fois)
* modeles de KB ('jamais a sans b' dit une fois, fermeture transitive et
punchline Tarski integrees a la lecture des quatre survivants)
- Chaque fusion garde ce que chacune apportait : chiffre + intuition + nommage
- Markdown seul : cellules code byte-identiques
- Organe check_duplicate_sections.py : 0 finding avant, 0 apres
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…c-CSharp — consolidation doublons - 'Pourquoi Maximum Entropy ?' traite deux fois (bullets section 3 + section formelle conclusion) : consolide en section 3 (formule de Shannon + principe de Jaynes + unicite Paris/Kern-Isberner), la conclusion ne conserve qu'un renvoi — et perd le claim benchmark invérifiable '10x-100x'. - Diagnostic IKVM dédoublé et mis en cohérence : la conclusion affirmait 'les classes RPCL de surface compilent avec succes' (contredit le verdict exact '0 types exposes') sous un titre 'IKVM 8.15.0' alors que le notebook epingle 8.14.0 — remplace par un recap honnetes renvoyant au diagnostic de la section 1. - Renvois perimes par la renumerotation du commit precedent : 'cellules 7/9/11' et 'section 5' -> references par section. - Formule fausse en section 4 : 'P(flu) = P(flu|fever) * P(fever)' (c'est P(flu et fever)) -> le vrai point pedagogique (conditionnelles fixees, marginales manquantes, ME les fournit). - Annonce de query en section 3 dupliquee de l'ouverture de la section 4, retiree. Markdown only : cellules code byte-identiques. Organ check_duplicate_sections : 0 finding avant, 0 apres. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…p — consolidation doublons
- Lecture du Scénario 1 regroundée sur la sortie réelle : le verdict
OpponentWins (Retract tour 1, riposte impossible, COMP inattaquable)
était simplement absent de la lecture, qui esquivait vers de la prose
générique.
- Scénario 2 : promesse fausse « observer une bascule de verdict » retirée
(le verdict est inchangé, même trace) et « 3e argument » corrigé (c'est
le 4e) ; la lecture décrit maintenant ce que la sortie montre — S entre
dans l'extension ({E,T} -> {S,E,T}), aucun statut existant ne bouge, et
S (KB d'Anti-TL) attaque l'argument de son propre camp.
- Renvoi périmé : « Exercice 3 (cellule suivante) » — l'exercice est en
fin de notebook.
- Paragraphe « value-add » quasi-verbatim du header replié en une ligne en
conclusion, dont la couverture est complétée (Scénarios P4, parité P6 et
son verdict PRO confirmé via IKVM).
- Claim « 0 NuGet, 0 JVM » du footer contredit par la Partie 6 (IKVM) :
scoping Parties 1-5 ; prose absconde du Setup (« InvokeOnBackend-free
display ») éclaircie.
Markdown only : cellules code byte-identiques.
Organ check_duplicate_sections : 0 finding avant, 0 apres.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…dupliquees (interpretations x3, resume x2) Regime #17066, methode stricte : - Interpretations SELECT simple (cells 12+13, meme experience code 11) : fusion dans 12 — table de correspondance QueryBuilder/SPARQL et piege .Object() reanchors verbatim, bloc sparql duplique retire. - Interpretations PREFIX (cells 15+17, meme experience code 14) : fusion dans 15 sous le titre specifique ; supprime la cellule 17 mal placee apres le titre de section 3. - Interpretation generique (cell 50) : sous-ensemble strict des lectures 48+49 de la meme experience (code 47) — occurrence redondante supprimee. - Resume x2 (cells 58+59) : fusion en un seul Resume final, tables et blocs complementaires reunis verbatim. Cellules code, outputs et execution_count byte-identiques (verifie). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine. Le label Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans Seuil, historique et exceptions : cf. |
|
[ADJOINT PREFLIGHT] Motif du BLOCKED — trois points, aucun levé au head.
Reconnu propre : analyse Phase 2 très documentée (7 notebooks, consolidation par paires, SHA des cellules code affichés par notebook), 0 thread non résolu, organe duplicate-sections passé avant/après chaque édition. Le chemin de déblocage : corriger les 2 régressions ratchet, obtenir une review (Hermes/ai-01) et la levée du concern user — ou l'arbitrage |
…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>
Resolution du conflit SW-5-CSharp-LinkedData.ipynb (cellule cd4b16a1) : - les deux cotes reecrivaient la meme cellule. La BRANCHE lit la requete « Films de Brad Pitt » et l'ancre APRES son code (code[15]) ; main y lisait « Villes de France », c'est-a-dire une lecture placee AVANT son propre code (code[17]). La version de la branche est retenue : elle est ancree correctement et sa lecture France vit en cellule 9138db19 (« ### Interpretation : Requetes DBpedia »), apres le code France. - cette lecture France de la branche preserve la substance de celle de main et la depasse (artefacts d'extraction : 183rd_Infantry_Division_of_Africa, Cat's_Eyes_(TV_series), Aurelien_Jeanney ; limites DBpedia). Seul le fragment SPARQL litteral de main manquait : il est RESTAURE dans la cellule 9138db19, pour que la fusion ne perde rien. - aucun compte de lignes manuel de la recette #17636 des deux cotes : retenir la branche ne revoque pas le fix de #17647. - markdown seul : aucune cellule de code, aucune sortie, aucune re-execution due (exception C.2). Effet attendu : SW-4-CSharp-SPARQL ne differe plus de main (redresse sur main par bfce31f), donc le diff de la PR cesse de le porter une fois le merge-base avance. Co-Authored-By: Claude Code <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS
[NanoClaw] review structurelle + exception notebooks (protocole v2 : extraction base/head, cartes cellulaires par empreintes sha256 ; lecture intégrale des markdown de SW-9 uniquement, cartes + 1ʳᵉˢ lignes pour les 6 autres — lecture partielle déclarée). Head 57bfdc97 (base bac79640), +416/−1606 sur 7 notebooks SymbolicAI (P19). Cette review répond au point 3 du preflight adjoint (14:03Z) : « 0 review sur une large-PR ».
Mesuré propre (apport de cette review) :
- Code intégralement intact. Sur les 7 notebooks : 0 cellule code supprimée, 0 ajoutée, 0 source modifiée (comparaison multiset par empreinte des sources), 0 drift d'outputs sur les cellules conservées (hash). La matière première exécutable n'est pas touchée — la PR n'édite que du markdown, le périmètre exact d'un redressement densité.
- Consolidation markdown mesurée (car. base→head) : SW-3b 7 088→2 751 (les « Interpretation » répétées — « Comparaison des formats de sortie », « API des listes » ×2 dont une « (synthese) » — dédoublonnées), SW-5 26 097→19 504, SW-9 40 701→18 685, SL-1b 24 208→17 707, Tweety-02b 4 371→3 059, Tweety-07b 8 030→5 028, Tweety-08 5 581→5 952 (Conclusion réécrite, plus longue).
- Zoom SW-9 (plus gros retrait, −54 % de prose), markdown lu en entier au head : structure pédagogique complète (navigation, objectifs, 6 parties, conclusion) ; UNE lecture par output, placée après la cellule (gate densité) ; toutes les valeurs citées vérifiées dans les outputs committés : « 6 triplets » (
Triplets RDF parses: 6), « 15 triplets » + Casque audio ANC / AudioCo / 199.99 / 4.5/127 / InStock + les 4 types Product/Brand/Offer/AggregateRating, round-trip « 3 triplets » +OUI (isomorphe)+ startDate2026-07-15, et le contraste knows-littéral vs url-IRI est exact dans le Turtle affiché. Rien de fabriqué. - SW-4 sorti du diff au commit
d132cbfe(16:41Z) : le point « résiduel Phase 1 » du preflight est traité — plus aucun fichier SW-4 dans le diff courant.
Réserves (pourquoi CONCERNS) :
- Tweety-02b n'a pas bougé depuis le head du preflight : le fichier est byte-identique (sha256
869db2ca…) entrec0f2a21eet le head courant. Le findingSECOND_READING addedsur Tweety-02b cité par le preflight (ratchet exit 2 :changed: 8, regressed: 2) n'est donc pas adressé — le commit 16:41Z retire SW-4, il ne touche pas Tweety-02b. Si le finding est exact, il est toujours vivant au head. - La 2ᵉ régression ratchet reste non nommée (« dont au moins Tweety-02b ») : mes cartes cellulaires ne couvrent pas la sémantique split-reading du ratchet, je ne l'identifie pas. Au moment de ma mesure (16:52Z, head frais issu du merge main 16:44Z), aucun check-run split-reading n'existe encore au head — le ratchet visible (« Exec-sequence ratchet ») est
queued: à relire au repos. - Le concern [HUMAN] du 20/09 (« sections d'interprétation en double ») : la consolidation SW-3b y répond en structure, mais sa levée reste un geste utilisateur — hors lane review, et le chemin de déblocage du preflight le liste explicitement.
- Consignes d'exercices raccourcies dans SL-1b (« ## Exercices » 1 409→693 car., « Exercice 1 » 1 007→843) : je n'ai pas vérifié que chaque énoncé reste auto-suffisant — c'est la limite de ma lecture partielle.
Chemin vers le vert (celui du preflight, mis à jour par mes mesures) : traiter la/les régressions ratchet au head — Tweety-02b en premier, le fichier étant inchangé depuis le finding — puis levée du concern user. Code, outputs, valeurs citées et sortie de SW-4 : mesurés propres.
[NanoClaw] (myia-ai-01) — mesures : cartes cellulaires base↔head par empreintes (script local), outputs réduits à leurs empreintes, jamais le JSON brut chargé en contexte.
…prose check_prose_quantitative_claims.py --strict (la jambe CI prose-counts) refusait 2 compteurs ajoutes par la campagne densite : « Importer les 5 modules separement » et « le bruit des 200 lignes de tactiques ». Recette de l'issue #9377 : la mesure est supprimee, le predicat garde. Markdown seul, aucune re-execution due (exception C.2). Co-Authored-By: Claude-Code <noreply@anthropic.com>
…densite Le cliquet Twin parity audit rougissait 5 paires DRIFT_INTRODUCED : SW-3 Graph-Operations, SW-5 Linked-Data, SW-9 JSON-LD, Tweety-7b Ranking-Probabilistic, Tweety-8 Agent-Dialogues. Audit firsthand (avant attestation) : un seul cote edite par paire (SW-3 cote Python, les 4 autres cote C#), et sur ce cote le code source ET les outputs sont byte-identiques a la base -- markdown seul (34->29, 34->32, 23->19, 14->11, 18->17 cellules). Le jumeau de chaque paire est intact : la parite native-both (et semantic pour Tweety-8) est preservee, seule la prose a evolue. Recette du precedent #17647 (meme campagne, meme famille) : attestation --update --pair puis ligne known_differences en tete, citant le cote edite et le delta mesure. Co-Authored-By: Claude-Code <noreply@anthropic.com>
Regression de contenu (regle D, anti-regression) : le redressement avait supprime l'annexe « ## Annexe — solutions des exercices » de SL-1b (commit 80ca0e0), puis les 3 renvois qui la pointaient (76d6bb2), en les declarant « fantomes » — reparant le symptome au lieu de la cause. La regle (e) invoquee interdit d'AJOUTER de la prose de campagne ; elle n'autorise pas a RETIRER une annexe de solutions. Mesure : aucun organe ne l'exigeait — check_duplicate_sections.py rend 0 porteur AVEC l'annexe. Ce qui etait perdu et qui revient, byte-identique a la base : - les 3 preuves Lean litterales des exercices 1-2-3 (un seul `exact` chacune), leur sortie attendue et leur cout — contenu UNIQUE, absent des enonces ; - les 3 renvois « **La preuve** est en annexe ... A ouvrir *apres* avoir cherche », qui sont l'anti-fuite explicite du carnet. Markdown seul : 12 cellules de code, source ET sorties identiques, cellules 20 md (base) = 20 md (tete), plan-loss rc=0. Co-Authored-By: Claude Code <noreply@anthropic.com>
…sion Le redressement avait fusionne les DEUX lectures de code[17] (base[19] « **L'asymetrie de l'entailment.** » et base[20] « ### Interpretation : les deux faces de la verite », id `m72867`) en une seule cellule — le remede que le mandat PRESCRIT — mais en rendant `id=None`. Or le cliquet `check_split_reading_cells.py` reconnait une reecriture en place par trois signaux, dont le premier est « l'id de la cellule existe encore en base, MEME a un autre index » (#17044, ecrit pour les fusions). Id perdu => la fusion est classee `SECOND_READING`, alors que le compte de paires BAISSE (1 -> 0). L'organe porte ce geste comme controle NEGATIF canonique de son propre self-test (« negatif 1 -- deux lectures FUSIONNEES en une (le remede prescrit) »), et il ne passe que parce que la cellule fusionnee conserve l'id de l'absorbee. Geste : metadata seule, `id <- m72867` (la cellule absorbe). Diff : une ligne. Aucune source, aucune sortie, aucune prose ne change. Co-Authored-By: Claude Code <noreply@anthropic.com>
Reponse au nit user — sections d'« interpretation » en double, et resume de finNit nomme : 1. Le carnet cite est hors du perimetre de cette PR
2. Sur les 7 carnets de cette PR — mesure a la tete
|
| Carnet | sections Lecture/Interpretation | suites de 2+ lectures pour une meme sortie | resumes de fin |
|---|---|---|---|
| SW-3b-Python-GraphOperations | 15 -> 10 | 0 -> 0 | 1 -> 1 |
| SW-5-CSharp-LinkedData | 10 -> 8 | 1 -> 0 | 1 -> 1 |
| SW-9-CSharp-JSONLD | 8 -> 3 | 3 -> 0 | 1 -> 1 |
| SL-1b-LogicalLearning-Lean-Native | 0 -> 0 | 0 -> 0 | 1 -> 1 |
| Tweety-02b-Semantics-CSharp | 3 -> 2 | 0 -> 0 | 1 -> 1 |
| Tweety-07b-Ranking-Probabilistic-CSharp | 3 -> 0 | 0 -> 0 | 1 -> 1 |
| Tweety-08-Agent-Dialogues-CSharp | 0 -> 0 | 0 -> 0 | 1 -> 1 |
« suites » = cellules de lecture consecutives apres une meme sortie — le cas exact du grief : 4 -> 0 sur l'ensemble. « resumes de fin » = en-tetes Conclusion/Resume/Synthese : 1 partout, aucun carnet n'en porte deux.
Ce qui a ete retire, carnet par carnet
- SW-3b — 1 doublon
#### Interpretation : API des listesfusionne dans sa jumelle ; 3 lectures de campagne### Lecture : ...(schema/instances, union 4+51, ordre d'une liste) absorbees dans les sections qu'elles lisaient. - SW-5 — 4 lectures de campagne
(ancre sur code[3/7/13/15])+ 1 lecture d'un stub d'exercice(ancre sur code[17]); doublonsInterpretationfusionnes, dont « Requetes DBpedia », qui porte desormais le fragmentFILTER NOT EXISTSvenu demain. - SW-9 — 3 lectures de campagne
(ancre sur code[3/5/7])+ 2 lectures de stubs d'exercice(ancre sur code[8/10]); les 6 en-tetes de partie reecrits a la forme du carnet. - SL-1b — doublons pre/post-code de
Dcoinfusionnes ; la Conclusion portait deux listes de synthese recouvrantes (« Trois concepts cles a retenir » + « Quatre idees forces pour la suite ») -> « Cinq idees a retenir », sans perte. - Tweety-02b — 3 fusions de lectures pour une meme sortie, dont celle du grief :
### Interpretation : les deux faces de la veriteabsorbee, titre conserve sous une forme specifique. - Tweety-07b — 3 lectures
### Lecture du protocole / de la base / de la requeteabsorbees dans les sections## 3et## 4. - Tweety-08 — fusions et retitrages ; aucun retrait de substance.
Organes : check_duplicate_sections.py 0 porteur sur les 7 ; check_split_reading_cells.py --base-ref origin/main --head HEAD --fail-on-findings -> rc=0, changed=7 regressed=0 ; plan-loss rc=0 sur les 7 ; cellules de code : source et sorties byte-identiques a la base sur les 7.
Deux corrections apportees dans ce cycle (head da26c51696)
- Tweety-02b — le cliquet signalait encore une cellule, et la lane l'avait d'abord qualifiee de faux positif de l'organe. C'etait une erreur de lecture de ma part : la fusion des deux lectures avait perdu l'
id(m72867) de la cellule absorbee, or l'organe reconnait une reecriture en place par « l'id existe encore en base, meme a un autre index » (guard(notebooks): cabler check_split_reading_cells.py en cliquet bloquant — l'organe existe, 91 findings deja sur main, et la prose du STOP n'a pas tenu 42 minutes #17044) et porte ce geste comme controle negatif de son propre self-test. Restitue — commitda26c51696, diff = une ligne, metadonnee seule. - SL-1b — l'annexe
## Annexe — solutions des exercicesavait ete supprimee par ce redressement sur une invocation erronee de la regle (e) — qui interdit d'ajouter de la prose de campagne, pas d'en retirer une annexe de solutions — puis ses 3 renvois retires en les declarant « fantomes ». C'est une regression de contenu (regle D) : les 3 preuves Lean litterales et les 3 renvois « a ouvrir apres avoir cherche » sont restaures byte-identiques a la base (commit65bc6a2bc5).
Ce que cette reponse ne fait pas
Elle ne leve pas la reserve. Une phrase de l'auteur ne leve pas une reserve posee par un tiers (regle B.0), a fortiori une reserve du user. La levee appartient a jsboige ; ai-01 en est informe par DM.
Rouge
|
| Jambe | Etat | Cause |
|---|---|---|
No markdown content loss in changed notebooks |
failure | 5 TRUNCATED_CELL sur SL-1b-LogicalLearning-Lean-Native.ipynb |
Always-on guards -- 16 organes, 1 checkout |
failure | agrege la precedente (aucune autre garde des 16 n'est rouge) |
PR gate |
failure | FAIL -- failing checks: No markdown content loss in changed notebooks |
Scripts Tests (CPU) |
failure | rouge porte par main, hors perimetre de cette PR (voir plus bas) |
Split-reading ratchet (base vs PR) est vert a cette tete (success, 17:45:22Z) : les
deux regressions signalees au dossier precedent sont soldees.
Les 5 cellules, et pourquoi ce sont des consolidations et non des troncatures
Le gate a findings=0 sur les six autres carnets de la PR ; seul SL-1b releve. J'ai
relu chaque cellule contre la source avant d'ecrire la justification — le contenu retire
survit ailleurs dans le meme carnet, mesure chaine par chaine :
| Cellule | Base -> tete | Ce qui survit, et ou |
|---|---|---|
| 6 | 1336c -> 208c | la cellule 8 porte noncomputable, la tactique intro x; norm_num et l'argument « pourquoi fondamental » (Pourquoi cet exemple est : absente de 6, presente en 8) |
| 13 | 1494c -> 963c | la chaine ERM -> uniforme -> union bound -> n reste en tete de section (cellule 11 : union bound, |H|, minimiseur empirique), et la cellule 13 pointe explicitement vers elle |
| 18 | 1385c -> 972c | l'explication MGF contre Markov survit en cellule 16 (fonction generatrice des moments, M_X(t)) ; sampleExpect_empError_eq_trueError reste en 16/17/18 |
| 21 | 1571c -> 1020c | « le serrage est la moitie du travail » survit en cellules 19 et 30 ; witnessPts reste en 19/20/21/22 |
| 23 | 1189c -> 584c | la section Exercices ne re-enumere plus les trois enonces : chacun est porte par sa propre section, avec son theoreme et son indice |
Le compte de cellules markdown est stable (20 -> 20) et le rapport CI ne releve que des
TRUNCATED_CELL — ni LOST_MOTIF, ni LOST_NAV_LINKS.
Le canal employe
L'organe prevoit lui-meme cette porte (docstring §8, #13491) : un marqueur de body par
cellule retire le finding TRUNCATED_CELL de cette cellule et d'elle seule, en le
requalifiant TRUNCATED_CELL_JUSTIFIED_BY_BODY — la sortie n'est pas masquee, un auditeur
voit ce qui s'est passe. Les cinq lignes sont en fin de body, section « Justifications
md-content-loss ».
Preuve locale, avant de poster
Le detecteur a ete rejoue dans un worktree a origin/main, avec l'argv du registre CI
(--base origin/main --check <carnet>) et le canal d'env de la CI (MD_CONTENT_LOSS_PR_BODY) :
SW-3b rc=0 | SW-5 rc=0 | SW-9 rc=0 | SL-1b rc=0 | Tweety-02b rc=0 | Tweety-07b rc=0 | Tweety-08 rc=0
SL-1b : [JUSTIFIED_BY_BODY] cellules [6, 13, 18, 21, 23]
reste 0 finding non justifie
Somme des rc sur les sept carnets du diff : 0.
Scripts Tests (CPU) — rouge de main, pas de cette PR
L'echec est test_check_arxiv_attributions.py::test_real_registry_lives_against_main_repo :
une entree du registre (arxiv_id 1706.00883, ICT-37-FLens-BeliefState.ipynb cellule 17,
source_pr #17622) n'y trouve plus sa citation — la cellule 17 porte du code. Cette PR ne
touche ni IIT/, ni le registre. Mesure : le meme check, lance a origin/main exactement
(6a422f0214), rend {PASS: 12, FAIL: 1, RENAMED: 0} — identique. Le rouge est donc porte
par main et herite par toute PR ; il ne se repare pas ici (CLAUDE.md §3 : ne pas toucher au
code non lie). Il est signale au coordinateur comme sujet propre.
Methode markdown seule : aucune cellule de code n'est modifiee par ce correctif (le body est
le seul artefact touche), donc l'exemption C.2 tient et le DWELL n'est pas re-arme par un commit.
|
[ADJOINT PREFLIGHT] Mesures derriere le motif — le bloc ci-dessus est le seul contrat ; ce qui suit est le narratif.
|
Mesure du
|
| Predicat (tous falsifiables) | Tete #17056 | origin/main |
|---|---|---|
| doublon exact de cellule markdown (>= 60 car.) | 0 | 0 |
| corps d'interpretation repete dans un meme carnet | 0 | 0 |
cellules d'interpretation (titre interpret / lecture du) |
16 | 25 |
| texte markdown >= 150 car. present dans >= 2 carnets differents | 0 | — |
Le predicat d'interpretation a ete elargi avant de conclure : ma premiere passe ne cherchait que interpret et ratait la forme ### Lecture du resultat, qui est la forme usuelle de ces blocs. Un detecteur se valide par ses faux negatifs, pas par ses hits — le chiffre a bouge de 11 a 16 cellules, la conclusion non.
Portee de la mesure, ecrite pour ne pas etre surestimee : elle couvre le doublon exact, la repetition de corps a l'interieur d'un carnet, et la redite d'un texte entre carnets. Elle ne couvre pas la paraphrase, ni une redite entre une cellule markdown et un commentaire de cellule code. « La classe exacte est absente » n'est donc pas « aucune redondance nulle part ».
Etat, et ce qui reste du
mergeable: MERGEABLE, mergeStateStatus: CLEAN. Le seul point tenant le merge est le Concern user, non leve depuis 129 h. Le dossier [ADJOINT PREFLIGHT] du 19:41Z vise da26c51696e7 ; la tete vive est 838a7178b818 — un re-stamp est donc du, et il doit venir apres ce commentaire, qui perime les surfaces.
|
Point utilisateur du 2026-09-20T20:58Z — etat mesure a la tete Le point visait Ce que la mesure donne, a la tete. Un detecteur de doublons de paragraphes, valide par ses negatifs — il retrouve bien 16 quasi-doublons sur le blob cite, donc il n'est pas aveugle :
Les 3 restants sont identifies et ne sont pas de la degenerescence : deux sont la barre de navigation en tete et en pied (convention de la serie), le troisieme est une paire de sections qui montrent legitimement Ou ce travail a ete fait, et pourquoi le carnet n'est plus dans le diff. Sur cette branche : La meme classe, mesuree sur les 7 carnets que CETTE PR touche (
Deux alertes que j'ai ecartees comme fausses, parce qu'un compteur seul ne juge pas. Un residu reel survit sur Sur la decision. Elle revient a ai-01 : ce commentaire porte la mesure, il ne pose ni ne retire rien. Le perimetre de cette PR est ameliore sur la classe visee, sans regression, et le carnet cite est hors de son diff. |
myia-ai-01
left a comment
There was a problem hiding this comment.
[OVERRIDE] lane myia-ai-01:CoursIA — levee de la reserve de jsboige du 2026-09-20T20:58:36Z (commentaire 5752616279), verifiee a la tete 838a717.
La reserve visait deux defauts, avec SW-4-CSharp-SPARQL.ipynb comme exemple : des sections d'interpretation en double, et un resume de fin repete. Je l'ai mesuree moi-meme, sans reprendre le detecteur de la lane.
Le detecteur. Il signale deux motifs.
- Plusieurs cellules markdown d'interpretation a la suite, sans cellule de code entre elles : c'est la forme paraphrasee du doublon, que la recherche de doublons exacts ne voit pas.
- Plus d'un titre de fin par carnet : resume, conclusion, bilan, synthese ou « a retenir ».
Controle positif, sur le blob cite (commit 78ce56a). SW-4 y donne 4 series d'interpretations en double : cellules 12-13, 15-17, 22-23 et 49-50. Il donne aussi 2 titres ## Resume (cellules 58 et 59). Le detecteur retrouve donc exactement ce que la reserve decrivait.
Mesure a la tete 838a717, sur les 7 carnets du diff :
| Carnet | Interpretations en double | Titres de fin |
|---|---|---|
| SW-3b-Python-GraphOperations | 0 | 1 |
| SW-5-CSharp-LinkedData | 0 | 1 |
| SW-9-CSharp-JSONLD | 0 | 1 |
| SL-1b-LogicalLearning-Lean-Native | 0 | 1 |
| Tweety-02b-Semantics-CSharp | 0 | 1 |
| Tweety-07b-Ranking-Probabilistic-CSharp | 0 | 1 |
| Tweety-08-Agent-Dialogues-CSharp | 0 | 1 |
SW-4 lui-meme n'est pas dans cette PR. Sur main, il a ete redresse par #17069 : 0 serie et 1 titre de fin, mesures avec le meme detecteur.
Ce que je n'ai pas mesure. La redite entre une cellule markdown et un commentaire de code. La paraphrase entre deux cellules separees par du code.
La reserve de jsboige est traitee sur le perimetre de cette PR. Je la leve.
|
[ADJOINT PREFLIGHT] Verification firsthand ai-01 a la tete Portee du diff : markdown seul. Sur les 7 carnets, les cellules de code sont identiques a la merge-base : meme nombre, source identique, sorties identiques octet pour octet. Les cellules markdown passent de 165 a 146. L'exception de C.2 (modification markdown seule) s'applique, et aucune re-execution n'est due. Reserve user du 2026-09-20. Je l'ai mesuree puis levee dans ma review 5325044463 :
Autres verifications :
|
Resolution des deux conflits du registre twin-pairs SW-3 Graph-Operations. Les deux cotes avaient insere une entree a l'ordinal 0011 pour la meme paire, le meme jour, par la meme lane, mais pour deux etats differents : main porte le cliche post-#17056 (cote Python edite), cette branche le cliche post-#17059 (cote C# edite). Ce ne sont pas des doublons. - sw-3-graph-operations.yaml : union des known_differences -- les deux edits sont reels et tous deux presents dans le resultat de fusion, donc les deux narrations sont conservees (#17056 puis #17059). - 0011-2026-09-25-myia-po-2025-CoursIA-2.yaml (add/add) : l'entree de main est PRESERVEE telle quelle. L'ordinal est la cle de tri du journal et doit rester unique par paire (#14911/#15345, garde test_twin_registry_integrity) : deux 0011 ne peuvent pas coexister, et le fichier portant le meme nom, git n'en garderait qu'un -- en liant une entree deux fois plutot qu'en gardant deux. Ma moitie sera re-emise a l'ordinal libre suivant par l'organe lui-meme. Re-stamp du : l'entree de main enregistre csharp_sha=deaf14ee, or cette branche remplace le jumeau C# en amont (f57f5ef). Sans une entree plus recente, l'arbre fusionne rendrait DRIFT sur la paire des le merge. L'audit sera ajoute par check_twin_parity.py --update (SHA lus sur l'arbre fusionne), pas derive a la main. Co-Authored-By: Claude Code <noreply@anthropic.com>
…fusionne L'arbre fusionne porte le jumeau Python de main (c6b07b2, #17056) et le jumeau C# de cette branche (f57f5ef). L'entree la plus recente de la paire avant ce commit (0011, ecrite par main) enregistre csharp_sha=deaf14ee, que cette branche remplace : sans une entree posterieure, la paire rendait DRIFT sur l'arbre fusionne des le merge. L'audit est emis par `check_twin_parity.py --update` (SHA lus sur l'arbre fusionne, content_sha calcules par l'organe), jamais derive a la main. L'ordinal 0012 est le premier libre : l'entree 0011 de main est PRESERVEE comme histoire du journal, aucune entree n'est supprimee. Verifie : `[OK] SW-3 Graph-Operations` ; les 4 DRIFT restants du registre (App-1, App-12, Probas-2, Probas-5) sont herites de main -- le merge ne change que 13 fichiers, aucun de ces 4 carnets. Co-Authored-By: Claude Code <noreply@anthropic.com>
Grain: MED/notebook-python — lane myia-po-2025:CoursIA-2 — prev: DEEP/notebook-python #17043
Redressement critique du paquet P19 en deux phases sur la même branche :
check_split_reading_cells.pyà 0. Le tableau détaillé de cette phase reste dans l'historique d'édition de la PR.Organe commun :
scripts/notebook_tools/check_duplicate_sections.py(branchefeature/17066-duplicate-sections-organ), passé avant et après chaque édition. Zéro finding est nécessaire, jamais suffisant — toute l'analyse ci-dessous vient de la lecture, pas du compteur.SW-3b-Python-GraphOperations.ipynb — commit
d971ea7b08Plan post-réparation : 0. Installation/imports → 1. Lecture de fichiers RDF → 2. Écriture → 3. Fusion → 4. Sélection de triplets → 5. Listes RDF (5.1 créer, 5.2 modifier, 5.3 supprimer, puis Interpretation : API des listes consolidée) → 6. Comparaison cross-langage dotNetRDF vs rdflib → 7. Exercices (3 stubs C.1) → References → Résumé.
Doublon consolidé — « API des listes » ×2 (cells 32+34) :
#### Interpretation : API des listes) portait : le parcours guidé des sorties 5.1/5.2/5.3, la différence d'APIRemoveFromList-par-valeur (dotNetRDF) vs index-puis-del(rdflib).### Interpretation : API des listes (synthese)) portait : la table 4 colonnes Opération/Méthode rdflib/Comportement/Équivalent dotNetRDF + la note « Quand utiliser les listes RDF ».Autres findings de lecture : cell 3 fossile supprimée (« Interpretation » citant
pip install -q— aucune commande pip dans le notebook) ; titres####→###(cells 15, 25) pour aligner le niveau des sections Interpretation.Verdict séquence (honnête) : progression linéaire lecture→écriture→fusion→sélection→listes→comparaison→exercices, chaque Interpretation suit son code. Reste imparfait, assumé : la section 6 (comparaison cross-langage) est une table de référence sans exemple exécuté côté .NET — le twin C# vit dans SW-4.
Organe : 0 finding avant, 0 après. Code intact : 20 cellules code, SHA-256 du tableau JSON identique avant/après (
4ace0fa0c6f0dd9c). Markdown 31→29 cellules.SW-5-CSharp-LinkedData.ipynb — commit
6f8e5583dePlan post-réparation : 1. Installation/imports → 2. Principes du Linked Data → 3. Fonctions utilitaires (intro honnête) → 4. DBpedia : interrogation SPARQL (connexion, Einstein, Pitt/Rowling, villes/Premier League, Nobel) → 5. Wikidata (wd1, wd2, interprétation wd3) → 6. Requêtes fédérées SERVICE → 7. SparqlQueryClient : timeouts et erreurs → Exercices → References → Résumé. Toutes les lectures suivent désormais leur code.
Doublon consolidé — lecture double (cells 42+43) : A = lecture mécaniquement ancrée (« Lecture X (ancre sur code[N]) », rappel de sortie), B =
### Interprétation : Formats et gestion d'erreurs(le fond). Gardé : B comme section unique ; A absorbé.Autres findings de lecture : 4 cellules md déplacées APRÈS leur code (namespaces, aventure, comédies, requête en 2 étapes) ; intro helpers réécrite honnête (DRY/affichage borné/try-catch — suppression de la copie C# embarquée, du faux « logs, retry, timeout » et de la digression ELK) ; sous-section « Fonctions utilitaires » dupliquée supprimée ; 4 lectures retritrées (ancres « (ancre sur code[N]) » → titres de sujet) ; lectures regroundées sur les sorties réelles (Einstein : types rdf:type réellement affichés ; Pitt 10/57 et Rowling 10/19 ; villes : 183rd_Infantry_Division_of_Africa, Cat's_Eyes_(TV_series), Coventry multi-lignes ; wd1/wd2 : P106/Q121594, films réels) ;
LIMIT 50corrigé en10(le code réel affiche 10) ; « Lecture de la requête owl:sameAs » honnête (le graphe reste sur DBpedia) ; résumé : « Async, retry, logs » → « Async, try-catch, affichage borné ».Verdict séquence (honnête) : helpers→DBpedia→Wikidata→fédéré→client .NET→exercices, chaque lecture cite des valeurs présentes dans les sorties commitées. Reste imparfait : la section 7 garde un exemple client plus court que la prose qui l'entoure — le tenant du sujet reste lisible.
Organe : 0 avant, 0 après. Code intact : 19 cellules code, SHA identique (
6a811c7a7d987f81). Markdown 33→32.SW-9-CSharp-JSONLD.ipynb — commit
989004fe13Plan post-réparation : Setup → Helpers RDF↔JSON-LD → P1
@context→ P2 Parser JSON-LD (lecture : expansion en action) → P3 Serialiser → P4 Schema.org Product (lecture : valide) → P5@graph→ P6 Round-trip (lecture : isomorphe — OUI) → Conclusion → Exercices.Doublons consolidés — 3 paires de lectures :
### Lecture : l'expansion en action — 6 triplets(pourquoi 6 = 4 champs dontknowsmulti-valué ×2 +rdf:typeimplicite ; piège littéral-vs-IRI —urlest une IRI via"@type":"@id"tandis queknowsreste litéral, groundé sur la Turtle réelle).### Lecture : Schema.org Product valide(15 triplets, types imbriqués résolus, rich snippets).xsd:date+location absents de la sortie), B = lecture →### Lecture : round-trip isomorphe — OUIhonnête :startDatereste une chaîne litérale, pas dexsd:date.Autres findings de lecture : 5 copies C# embarquées retirées — dont 2 copies du code Product présentées comme « Sortie observée (verbatim) » (du code déguisé en sortie, contredisant la leçon TripleStore du helpers) ; header dédoublonné (une liste d'objectifs, un paragraphe twin, la subtilité TripleStore expliquée une seule fois) ; note fossile CS1701 retirée ; conclusion : deux listes « 6 piliers » → une ; exercices consolidés (objectif unique par exercice, sorties attendues alignées sur les stubs : titre/auteur/publie, 3 personnes alice/bob/carol) ; cellule « Code attendu » qui fuyait la solution → note courte sans la solution.
Verdict séquence (honnête) : flux linéaire en 6 parties, une lecture par sortie, conclusion unique. Reste imparfait, assumé : la P4 (Schema.org) est la plus descriptive des six.
Organe : 0 avant, 0 après. Code intact : 11 cellules code, SHA identique (
0972550f2f7e4f44). Markdown 22→19.SL-1b-LogicalLearning-Lean-Native.ipynb — commit
76d6bb2e0ePlan post-réparation : Plan → 1. Vocabulaire PAC (Dcoin) → 2. Échantillon i.i.d. → 3. Borne de généralisation → 4. Cadre agnostique → 5. Concentration Markov→Hoeffding → 6. Perceptron : convergence et serrage → 7. Lecture du fil → Exercices → Conclusion.
Doublon consolidé —
Dcoinpré-lu puis lu (cells 6+8) : A (cell 6) portait la structureDistribution(3 champs) et les « Trois remarques » ; B (cell 8) portait l'instanciation champ par champ,noncomputable, la sortie attendue et le coût. Gardé : B devient LA lecture consolidée (structure + instanciation + pourquoinoncomputable+ pourquoi fondamental absorbé de A) ; A réduite à une amorce de 3 lignes qui annonce sans relire.Autres findings de lecture : renvois fantômes
**La preuve** est en annexe…supprimés (cells 24/26/28 — aucune Annexe n'existe dans le notebook) ; chaînes explicatives dupliquées intro/lecture dédoublonnées (chaîne 4 étapes en tête de §3 seule, explication MGF en tête de §5 seule, « le serrage est la moitié du travail » en tête de §6 seule — les lectures se terminent par un renvoi « tête de section ») ; conclusion : « trois concepts clés » + « quatre idées forces » → Cinq idées à retenir ; caractère parasite担心→ « crainte » (cell 4) ; « Quatre propriétés » (alors que 6 puces suivent) → « Les briques deConvergenceetTightness» ; claim faux « Lean 4 résout les imports paresseusement » supprimé + « sortie attendue » des imports rendue honnête (écho du kernel, pas 5 lignes) ; section Exercices ne ré-énumère plus les 3 exercices.Verdict séquence (honnête) : chaîne PAC linéaire, chaque lecture suit ses
#check. Reste imparfait, assumé en conclusion et dans le README du lake :MGF/BernoulliMGFne sont visités qu'en prose.Organe : 0 avant, 0 après. Code intact : 12 cellules code, SHA identique (
1b4161e95c534bb4). Markdown 19→19 (restructuration interne).Tweety-02b-Semantics-CSharp.ipynb — commit
7b71e3d40fPlan post-réparation : Objectifs/Prérequis → 1. Configuration IKVM → 2. Signature et mondes possibles → 3. Satisfaction → 4. Raisonnement (entaînement) → Exemple guide : modèles d'une base de croyances → Conclusion. Une seule lecture par expérience.
Doublons consolidés — 3 paires de lectures jumelles :
### Interpretation : mondes possibles et sémantique.KB et non phi/DPLL/Sat4j →### Interpretation : l'asymétrie et les deux approches.Verdict séquence (honnête) : config→mondes→satisfaction→raisonnement→exemple guide→conclusion, chaque lecture suit sa sortie exécutée. Rien de structurel à signaler.
Organe : 0 avant, 0 après. Code intact : 12 cellules code, SHA identique (
d723d980e3b295dc). Markdown 21→18.Tweety-07b-Ranking-Probabilistic-CSharp.ipynb — commit
02e0d190ebPlan post-réparation : Objectifs → 1. Runtime IKVM + Diagnostic — verdict exact (RECOVERABLE-LOCAL, code préservé en commentaire) → 2. Syntaxe RP-CL → 3. RpclBeliefSet et Maximum Entropie (le « pourquoi ME » consolidé ici) → 4. Querying → Exercices (3 stubs) → Conclusion (recap honnête, sans re-explication).
Doublon consolidé — « Pourquoi Maximum Entropy ? » ×2 : A = 3 bullets d'intuition (section 3), B = section formelle en conclusion (formule
H(P), Jaynes, « la plus honnête », claim benchmark « 10x-100x »). Gardé des deux : les bullets d'intuition de A + la formule de Shannon et l'unicité (Paris 1994, Kern-Isberner 2001) de B, en section 3 (là où le lecteur en a besoin). Supprimé : la section de conclusion (un renvoi d'une ligne reste) et le claim benchmark invérifiable.Autres findings de lecture : le diagnostic IKVM de la conclusion contredisait le verdict exact (« les classes RPCL de surface compilent avec succes » alors que la section 1 mesure 0 types exposés), sous un titre « IKVM 8.15.0 » alors que le notebook épingle 8.14.0 → remplacé par un recap honnête « Limites connues du port IKVM » ; renvois périmés par la renumérotation du commit précédent (« cellules 7/9/11 », « section 5 ») → références par section ; formule fausse
P(flu) = P(flu|fever) * P(fever)(c'est P(flu∧fever)) → le vrai point pédagogique : la base fixe les conditionnelles, pas les marginales — ME fournit l'information manquante ; annonce de query dupliquée (fins de section 3 et ouverture de section 4) → retirée de la section 3.Verdict séquence (honnête) : la séquence tient ; les sections 2-4 décrivent un code préservé en commentaire (diagnostic documenté en section 1) — c'est l'état assumé du port, la prose ne le maquille plus.
Organe : 0 avant, 0 après. Code intact : 10 cellules code, SHA identique (
7e2cc4dcee55a0dc). Markdown 11→11.Tweety-08-Agent-Dialogues-CSharp.ipynb — commit
f0d2b37124Plan post-réparation : Objectifs/Pourquoi un twin/Prérequis → Setup → P1 Framework de Dung → P2 Modèle d'agent → P3 Protocole de dialogue → P4 Scénarios (1 négociation, 2 débat enrichi) → P5 Loterie argumentative → P6 Parité IKVM → Conclusion + Exercices. Chaque lecture suit sa sortie et cite le verdict réel.
Doublon consolidé — paragraphe « value-add » quasi-verbatim : A = header « Pourquoi un twin from-scratch ? » (rationale complète), B = conclusion (même argument, quasi mot pour mot). Gardé : A en tête (son rôle) ; B replié en une ligne de renvoi, et la couverture de la conclusion complétée — elle mentionnait les piliers 1/2/3/5 en sautant les Scénarios (P4) et la parité (P6), dont le verdict (
PROgagnant, confirmé via IKVM) figure maintenant.Autres findings de lecture (le gros du travail — lectures non groundées) :
OpponentWins,Retractau tour 1, « riposte impossible ») et esquivait vers de la prose générique → regroundée :COMPest inattaquable, l'acheteur a une bonne carte (UPGdéfaitOVR) mais perd faute de réponse àCOMP— leçon : défendre une claim exige de répondre à chaque attaque.{E,T}à{S,E,T}, aucun statut existant ne bouge, etS(porté par Anti-TL) attaque l'argument de son propre camp — la lecture le documente au lieu de le cacher.InvokeOnBackend-freedisplay») → éclaircie (displayavec repliConsole.WriteLine).Verdict séquence (honnête) : la progression P1→P6 est propre et chaque lecture lit sa sortie. Reste imparfait, assumé : le Scénario 2 met en scène un agent qui porte un argument minant son camp — c'est dans le code (byte-identique), la lecture le nomme désormais.
Organe : 0 avant, 0 après. Code intact : 11 cellules code, SHA identique (
b78dcd5226f2cd37). Markdown 17→17.Vérification finale (les 7 notebooks)
check_duplicate_sections.pyavant → aprèsgit diff 78ce56a7..f0d2b3712478ce56a749..f0d2b37124), pas de force-pushCommits phase 2 :
d971ea7b08(SW-3b) ·6f8e5583de(SW-5) ·989004fe13(SW-9) ·76d6bb2e0e(SL-1b) ·7b71e3d40f(Tweety-02b) ·02e0d190eb(Tweety-07b) ·f0d2b37124(Tweety-08).Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Complétion #17066 — sections dupliquées (régime : lecture exhaustive, consolidation sans perte)
SW-4-CSharp-SPARQL.ipynb — 4 groupes, consolidé-fusionné ×4 :
Aucun pile-ou-face : tout ce qui est gardé provient mot pour mot des cellules d'origine ; seuls les titres de retraitrage sont nouveaux.
Organes au head
b5b8c1e484: duplicate-sections 4 porteurs → 0 (rc=0) ; plan-loss 0 → 0 ; md-loss 0 → 0. Cellules code byte-identiques (16 cells vérifiées).🤖 Generated with Claude Code
Rectifications de la lane (25/09 2026, post-dossier 14:03Z)
SW-4-CSharp-SPARQL.ipynb retire du diff — commit
d132cbfece. La note de perimetre ci-dessus etait vraie du texte mais fausse du diff : la Phase 1 l'avait modifie (78ce56a749residuel). Le fichier est restaure a la version demain, ou SW-4 a ete redresse parbfce31f530(reference #17069). Mesure : le diff de la PR passe de 8 a 7 carnets.Conflit de base resolu — merge
57bfdc9769. La branche etait 70 commits derrieremain. Le conflit portait surSW-5-CSharp-LinkedData.ipynb, cellulecd4b16a1: les deux cotes reecrivaient la meme cellule, la branche lisant « Films de Brad Pitt » apres son code,mainlisant « Villes de France » avant le sien. Resolution : version de la branche, et le seul element perdu — le fragmentFILTER NOT EXISTS { ?city dbo:militaryUnit ?unit }— est restaure dans la lecture France de la cellule9138db19(### Interpretation : Requetes DBpedia), ou la substance de la note demainest deja preservee et depassee. Markdown seul (C.2), aucun compte de lignes manuel de la recette #17636 des deux cotes.Declaration de reecriture (gate enrich-quality, jambe rouge depuis
01:14:12Zsur la tete precedente) — le gate signaleMD_REWRITEsur SW-9 (105/522 lignes markdown de base survivent verbatim, 20 %). Mesure : SW-9 passe de 23 a 19 cellules markdown, et les cellules retirees sont celles de la campagne densite (### Lecture du parsing JSON-LD (ancre sur code[3]),### Lecture de Schema.org Product (ancre sur code[5]),### Lecture du round-trip JSON-LD <-> Turtle (ancre sur code[7])) — le livrable meme du redressement, pas une perte de contenu. Le marqueur implemente par #17744 est donc pose, et la trace reste imprimee (MD_REWRITE_JUSTIFIED_BY_BODY) :enrich-quality: reecriture assumee -- SW-9-CSharp-JSONLD.ipynb : retrait des lectures de la campagne densite ((ancre sur code[N])) et reecriture des en-tetes de partie -- livrable du redressement #17040, markdown seul, cellules code byte-identiques
Rectification du 25/09 (cycle 16:26Z, head
da26c51696) — la lane avait d'abord qualifie ce finding de faux positif de l'organe et annonce une escalade vers ai-01. C'etait une erreur de lecture : l'organe a raison, le defaut etait mien. Corrige ci-dessous.Rectifications du 25/09 (cycle 16:26Z) — head
da26c51696Deux corrections, une par commit, poussees apres le dossier BLOCKED de 14:03Z.
1. Tweety-02b — provenance de la cellule fusionnee (cliquet a 0)
Le redressement avait fusionne les DEUX lectures de
code[17](base[19] « L'asymetrie de l'entailment. » et base[20] « ### Interpretation : les deux faces de la verite », idm72867) en une seule cellule — le remede que le mandat prescrit — mais en rendantid=None. Orcheck_split_reading_cells.pyreconnait une reecriture en place par trois signaux, dont le premier est « l'id de la cellule existe encore en base, meme a un autre index » (#17044, ecrit precisement pour les fusions). Id perdu => la fusion est classeeSECOND_READINGalors que le compte de paires baisse (1 -> 0).L'organe porte ce geste comme controle negatif canonique de son propre self-test (« negatif 1 -- deux lectures FUSIONNEES en une (le remede prescrit) »), et ce controle ne passe que parce que la cellule fusionnee conserve l'id de l'absorbe. Ce n'etait donc pas un faux positif : c'etait une perte de provenance.
Geste, commit
da26c51696: metadata seule,id <- m72867. Diff = une ligne. Aucune source, aucune sortie, aucune prose.2. SL-1b — annexe de solutions restauree (regression D)
80ca0e0c58avait supprime## Annexe — solutions des exercicesen invoquant la regle (e) — qui interdit d'ajouter de la prose de campagne, jamais d'en retirer une annexe de solutions.76d6bb2e0eavait ensuite supprime les 3 renvois qui la pointaient, en les declarant « fantomes » : le symptome repare, pas la cause.La regle D (anti-regression) est HARD : « cellule
# Solutionsupprimee = regression de contenu INTERDITE », et pr-review §D.4 exige une issue referencee — aucune ne l'etait. Mesure : aucun organe ne l'exigeait (check_duplicate_sections.pyrend 0 porteur avec l'annexe).Contenu restaure, byte-identique a la base :
exactchacune), leur sortie attendue et leur cout — contenu unique, absent des enonces ;Commit
65bc6a2bc5. Markdown seul : 12 cellules de code, source et sorties identiques, markdown 20 (base) = 20 (tete), plan-lossmd_cells base=20 head=20 stable=True, lost_section=0.Organes au head
da26c51696check_split_reading_cells.py --base-ref origin/main --head HEAD --fail-on-findings(predicat CI exact)changed=7 regressed=0— SW-51->0, Tweety-02b1->0, les 5 autres0->0detect_notebook_plan_loss.py --checkcheck_duplicate_sections.pycheck_prose_quantitative_claims.py --strict --diff origin/mainCe qui est retire, carnet par carnet (releve mesure)
Les compteurs markdown sont des multisets de sources : toute cellule reecrite y compte a la fois comme retiree et comme ajoutee. Le nombre de cellules est donc la mesure fiable, pas ces deux colonnes.
Nature des retraits, par carnet :
Interpretation : API des listesfusionne ; 3 lectures de campagne### Lecture : ...absorbees dans les sections.(ancre sur code[3/7/13/15])+ 1 lecture d'exercice stub(ancre sur code[17])retirees ; doublonsInterpretationfusionnes.(ancre sur code[3/5/7])+ 2 lectures d'exercice stub(ancre sur code[8/10])retirees ; en-tetes de partie reecrits.Dcoinfusionnes ; annexe de solutions restauree dans ce cycle (etait supprimee a tort).### Lecture du protocole / de la base / de la requeteabsorbees dans les sections.🤖 Generated with Claude Code
Justifications
md-content-loss(organe #13491) — SL-1b, 5 cellules consolideesLe gate mesure, cellule par cellule, la chute du volume markdown normalise. Les cinq
cellules ci-dessous sont sous le seuil de 75 % par consolidation assumee, pas par
troncature : chacune a ete relue contre la source, et le contenu retire survit ailleurs
dans le meme carnet. Ces lignes sont le canal prevu par l'organe (docstring §8) : elles
retirent le finding
TRUNCATED_CELLde la cellule nommee, et uniquement de celle-la(le finding est requalifie
TRUNCATED_CELL_JUSTIFIED_BY_BODY, visible en review).md-content-loss: reecriture assumee -- MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/SL-1b-LogicalLearning-Lean-Native.ipynb cell 6 : doublon Dcoin pre-lu puis lu ; la cellule 8 porte desormais noncomputable, la tactique intro x; norm_num et l'argument « pourquoi fondamental » (verifie : ces trois chaines sont absentes de la cellule 6 au head et presentes en 8)
md-content-loss: reecriture assumee -- MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/SL-1b-LogicalLearning-Lean-Native.ipynb cell 13 : la chaine ERM -> controle uniforme -> union bound -> resolution en n n'est plus deroulee deux fois ; ses concepts restent en tete de section (cellule 11 : union bound, |H|, minimiseur empirique) et la cellule 13 le dit explicitement puis renvoie a la tete de section
md-content-loss: reecriture assumee -- MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/SL-1b-LogicalLearning-Lean-Native.ipynb cell 18 : l'explication MGF contre Markov survit en cellule 16 (fonction generatrice des moments, M_X(t) presents en 16 au head) ; sampleExpect_empError_eq_trueError reste en 16/17/18, l'identite de biais est conservee dans la cellule elle-meme
md-content-loss: reecriture assumee -- MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/SL-1b-LogicalLearning-Lean-Native.ipynb cell 21 : « le serrage est la moitie du travail » survit en cellules 19 et 30, et le vocabulaire witnessPts / novikoff_bound_is_sharp reste en 19/20/21/22 ; la cellule 21 perd la redite, pas le propos
md-content-loss: reecriture assumee -- MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/SL-1b-LogicalLearning-Lean-Native.ipynb cell 23 : la section Exercices ne re-enumere plus les trois enonces ; chacun est porte par sa propre section ci-dessous, avec son theoreme et son indice (detail par exercice dans la section dediee)
Les deux autres categories du gate (
LOST_MOTIF,LOST_NAV_LINKS) ne sont pasconcernees : le rapport CI ne releve que des
TRUNCATED_CELL, et le compte de cellulesmarkdown est stable (20 -> 20).