Repository navigation
feat(symbolicai): resync taxonomies Argumentum verbatim + garde d'intégrité (7 semaines de dérive silencieuse) - #13554
Conversation
…eam 344ac8c3 + garde d'integrite
Les deux CSV de Argument_Analysis/data/ sont des copies verbatim de l'amont
ArgumentumGames/Argumentum. Ils alimentent les notebooks Argument_Analysis,
FallacyDetection (02/03) et scripts/fallacy_detection/. Le dernier import datait
du 03/07 (amont ac33f607) : ils ont donc pourri sept semaines sans que rien ne
rougisse, un CSV perime parsant parfaitement (meme nombre de lignes, memes 1408
PK, tous les notebooks au vert).
Mesure de la derive avant resynchronisation :
- AIF_attackType / AIF_attackedNode : colonnes ABSENTES cote CoursIA, alors que
l'amont en type 145 lignes -- le "graphe d'attaques AIF type" que le capstone
ICT declare consommer n'existait pas ici ;
- couche crosslinks a 8 cellules renseignees contre 940 en amont ;
- 3938 cellules divergentes sur les colonnes communes (campagnes i18n #994,
#1103, #1114 et integration ontologique #763) ;
- Virtues : les 3 familles renommees les 6-7/08 portaient encore leurs anciens
libelles (Langage exact, Raisonnement valide, Rigueur mathematique). Chercher
un libelle courant y rendait 0 ligne -- un zero qui se lit comme "rien a
faire" alors qu'il signale un instrument casse.
Structure inchangee de part et d'autre : 1408 PK Fallacies, 223 Virtues, aucun
noeud ajoute ni supprime. La derive est de contenu et de schema, pas de perimetre.
Trois gestes :
1. .gitattributes -- regle `-text` sur les deux snapshots. La source porte 139
sauts de ligne ISOLES a l'interieur de cellules citees ; sous autocrlf=true et
sans regle, git les normalise en CRLF. C'est ce qui est arrive a l'import de
juillet (#5183), dont le message annoncait "verbatim" alors que le blob stocke
differait de l'amont. Verifie ici par egalite des SHA de blob avec la source :
fdba6a1 (Fallacies) et 7d694b9 (Virtues).
2. Resynchronisation verbatim des deux CSV depuis l'amont 344ac8c3.
3. Garde d'integrite (7 tests, stdlib only, hermetique) : SHA de blob, colonnes
AIF_*/crossLink_* requises, volumes, et libelles de familles Virtues. Verifiee
rouge sur l'etat de juillet (7/7 en echec, le message nommant les trois anciens
libelles) et verte apres resynchronisation -- une garde qui n'a jamais ete vue
rouge ne prouve rien.
Un renommage amont fera desormais rougir la garde au lieu de filer en silence :
le geste attendu est une resynchronisation, jamais une edition de l'attente.
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] — APPROVE motivé (checklist postmortem). Vérifications firsthand sur a1a6593 :
- Verbatim prouvé au niveau blob : j'ai retrouvé indépendamment les deux blobs dans l'arbre amont
ArgumentumGames/Argumentum@344ac8c3—Cards/Fallacies/Argumentum Fallacies - Taxonomy.csv=fdba6a16,Argumentum Virtues - Taxonomy.csv=7d694b95. Égalité SHA exacte avec les blobs livrés côté CoursIA : rien n'a été converti, le claim « verbatim » est byte-level vrai. - Garde exécutée firsthand : fichiers récupérés au SHA head (tests + manifeste + 2 CSV), suite lancée dans un venv propre → 7/7 passent (0.50s). Le docstring documente le contrat rouge→resynchroniser (jamais éditer l'attendu) — bonne discipline anti-théâtre.
- Claims quantitatifs vérifiés sur le CSV livré : 1408 lignes ✓, colonnes
AIF_attackType/AIF_attackedNodeprésentes ✓, 145 lignesAIF_attackTyperenseignées (claim : 145) ✓, les 3 anciens libellés de familles (Langage exact,Raisonnement valide,Rigueur mathematique) absents, les 8 nouveaux présents ✓. .gitattributes-text: règle ciblée sur les 2 chemins exacts, avec le motif de corruption root-causé (139 LF nus internes vs autocrlf). Cohérent avec les règles existantes du fichier.- Sécurité : 0 match sur le diff (les CSV sont byte-identiques à un repo public — risque secret nul par construction ; tests stdlib only, hermétiques).
- Note mineure (non bloquante) : le tableau de dérive annonce « 940 crosslinks renseignés en amont » — mon comptage sur le blob exact livré donne 1081 cellules non vides (
Leverages350,Mirrors304,IsRelatedTo286…) / 844 lignes avec ≥1 crosslink. Ni l'un ni l'autre ne fait 940 ; chiffre probablement dérivé d'une mesure à méthode différente. Sans effet sur l'artefact (l'égalité blob fait foi), mais à corriger si le tableau est recopié ailleurs. - Périmètre : le pointeur sous-module Argumentum (252 commits derrière) explicitement hors scope et instruit comme geste séparé — position saine. Le manifeste
argumentum_snapshot.jsonporte le commit amont + SHA de blob → la garde est auto-portante.
Approve : les trois gestes (règle EOL, resync verbatim prouvée par blob, garde vue rouge sur les snapshots de juillet) forment un fix complet avec régression testée.
…ne ref de branche de travail Le manifeste enregistrait 344ac8c3, qui est un commit de la branche de travail sur laquelle la resynchronisation a ete preparee cote Argumentum -- pas un commit de master. Le CONTENU copie etait bien celui de master (verifie a l'epoque : les deux CSV portaient des SHA de blob identiques entre HEAD, origin/master et le disque), mais la reference etait introuvable pour un tiers, ce qui vide le manifeste de son role : dire d'ou vient l'instantane. Corrige en a23e9568 (master). Les SHA de blob sont inchanges, la garde reste verte 7/7.
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
…A 0 -> 2566) Les deux OWL de Argument_Analysis/ontologies/ portaient ObjectPropertyAssertion = 0. Les aretes du graphe argumentatif -- crosslinks transverses et typage d'attaque AIF -- n'existaient qu'en AnnotationAssertion, c'est-a-dire HORS de la semantique logique d'OWL : SPARQL les voit, aucun raisonneur (HermiT, Pellet, owlrl) ne les voit. Consequence directe pour #13567, dont le critere 3 exige un delta d'inferences owlrl non vide : ce delta etait vide PAR CONSTRUCTION, quelle que soit la qualite de l'outillage aval. Le vide se serait lu comme un verdict sur la greffe ICT alors que la panne etait en amont. L'amont a corrige (ArgumentumGames/Argumentum #1231, master c86b71ff) en emettant les DEUX formes, jamais l'une pour l'autre : retirer l'annotation casserait la lecture SKOS du thesaurus, n'emettre que l'annotation prive l'ontologie de toute consequence inferable. On distille ici le resultat. argumentum_fallacies.owl OPA 0 -> 2122 AA 18284 -> 18388 argumentum_virtues.owl OPA 0 -> 444 AA 2639 -> 3305 Verbatim prouve par EGALITE DES SHA DE BLOB avec l'amont (4b4fc62, c67d08f), pas par une affirmation dans un message de commit -- c'est precisement ce qui avait manque a l'import #5183. Cette egalite exige une regle `-text` : ces fichiers sont en CRLF et argumentum.owl porte 41 LF nus, donc `text eol=crlf` les ecraserait tout autant que la normalisation par defaut. L'organe d'integrite couvre desormais les ontologies (6 tests de plus) : identite octet a octet, ObjectPropertyAssertion > 0 et conforme au manifeste, et conservation des AnnotationAssertion -- une regression amont vers l'annotation seule rougit ici. Verifie rouge sur l'artefact d'avant-fix (message "ne porte AUCUNE ObjectPropertyAssertion") puis vert : 13 passed. Manifeste repointe sur c86b71ff ; les deux CSV sont inchanges depuis a23e9568 (SHA de blob identiques), le commit unique reste donc exact. `upstream_path` y consigne le renommage argumentum.owl -> argumentum_fallacies.owl, sans quoi un tiers ne retrouve pas la source. Refs #13567
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
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 |
|
Périmètre élargi après votre APPROVE — ne pas considérer l'approbation comme acquise sur le nouveau commit. Votre revue portait sur
Vous pouvez rejouer la même vérification firsthand : blobs amont attendus Pourquoi ce volet compte pour #13567 : les arêtes n'existaient qu'en annotation, donc hors sémantique logique d'OWL — le delta d'inférences owlrl exigé par le critère 3 était vide par construction, et ce vide se serait lu comme un verdict sur la greffe ICT alors que la panne était en amont. Je ne merge pas tant que l'approbation n'est pas étendue à ce commit. 🤖 lane |
…is CSVs (#13999) Le ticket #13989 (relève par NanoClaw en review de #13918) signalait qu'une ligne du DATASET_REGISTRY etait perimee : argumentum_fallacies_taxonomy.csv — taille 4 069 575 o / sha 3ff86bb2... alors que le blob a head fait 4 139 986 o / sha fdba6a1... (mesure ai-01 verifiee firsthand ce jour). Le ticket prevenait explicitement : 'une seule ligne perimee est rarement seule'. Lance `python scripts/audit/check_dataset_registry.py` AVANT toute correction : global_status: DRIFT total_entries: 31 drift_count: 2 (les 2 fichiers du dossier Argument_Analysis/data/) - argumentum_fallacies_taxonomy.csv : 4 069 575 -> 4 139 986 sha 3ff86bb2... -> 457ca19a40d5587b - argumentum_virtues_taxonomy.csv : 997 855 -> 921 641 sha c5af3145... -> fb3b0bbc5b1e3f20 Fix : rafraichir les 2 lignes (taille + SHA truncated 16 hex + suffixe de troncature '...') avec les valeurs actuelles. Apres fix, re-run du validateur : global_status: OK drift_count: 0 ok_truncated_count: 31/31 Source du drift : PR #13554 'resync taxonomies Argumentum verbatim + garde d'integrite' (commit 5df1769) a remis a jour les blobs sur disque mais n'a pas rafraichi la ligne correspondante dans le DATASET_REGISTRY. Le garde d'integrite lance apres ce commit a sans doute signale la derive, mais l'observabilite a ete absorbee par la queue de merges du moment (cf dashboard 'production saturation'). Hors scope (intentionnel) : - Le script check_dataset_registry.py lui-meme : intact (il detecte correctement le drift, c'est son job) - Les autres 29 entrees : deja OK_TRUNCATED - Le catalogue : catalogue byte-identique a main (la regeneration automatique par le cron quotidien -- pas de touche manuelle) Scope : 1 commit, 1 fichier, +2/-2 (2 lignes, 4 cellules de tableau). Grain: LIGHT/data -- lane myia-po-2026:CoursIA -- prev: LIGHT/tooling #13998 cycle 74. Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…wl — 4 stale-claims (resource-drift) Root cause: committed outputs were executed against the pre-resync blob (848,820 bytes); #13554 updated argumentum_virtues.owl to 1,199,984 bytes with 666 new AnnotationAssertion — every re-execution diverged from the published lectures. Fix: full re-exec on HEAD data (0 error, ec 1-9) + 8 markdown cells re-anchored on the NEW outputs: - F1 arithmetic: 1,199,984 bytes / 1,178,524 chars / 21,460 gap (was 848,820/846,857/1,963) - F2 inventory: graph 3,083 triplets (was 2,639), table closes exactly; narrative of the 444 new literal triplets (aifAttackType 222 + aifAttackTypeProvenance 222; aifAttackedNode objects are IRIs -> 0 triplet) - F3 broader chain: ...correctDeductions -> inferentialMastery -> validArgument (validReasoning no longer exists) - F4 badTenorOf myth removed from 5 cells (intro, S6 intro, lecture 18, Exercice 3 bonus, S8 links): verified firsthand badTenorOf = 0 occurrence in argumentum_fallacies.owl AND none of the 14 virtue scheme names appears there; fallacies classify via inScheme -> fallacyScheme. Bonus rewritten executable (explore the asymmetry itself) Code sources byte-identical to origin/main; outputs = fresh re-exec. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…wl — 4 stale-claims (resource-drift) (#17345) Root cause: committed outputs were executed against the pre-resync blob (848,820 bytes); #13554 updated argumentum_virtues.owl to 1,199,984 bytes with 666 new AnnotationAssertion — every re-execution diverged from the published lectures. Fix: full re-exec on HEAD data (0 error, ec 1-9) + 8 markdown cells re-anchored on the NEW outputs: - F1 arithmetic: 1,199,984 bytes / 1,178,524 chars / 21,460 gap (was 848,820/846,857/1,963) - F2 inventory: graph 3,083 triplets (was 2,639), table closes exactly; narrative of the 444 new literal triplets (aifAttackType 222 + aifAttackTypeProvenance 222; aifAttackedNode objects are IRIs -> 0 triplet) - F3 broader chain: ...correctDeductions -> inferentialMastery -> validArgument (validReasoning no longer exists) - F4 badTenorOf myth removed from 5 cells (intro, S6 intro, lecture 18, Exercice 3 bonus, S8 links): verified firsthand badTenorOf = 0 occurrence in argumentum_fallacies.owl AND none of the 14 virtue scheme names appears there; fallacies classify via inScheme -> fallacyScheme. Bonus rewritten executable (explore the asymmetry itself) Code sources byte-identical to origin/main; outputs = fresh re-exec. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…(145/87/53/5) + re-exec C.2 Suite a la reserve 5798823741 : la prose citait les nombres de la derniere exec complete de la base (#11598, 2026-08-18 : 93/61/29/3) alors que les outputs frais mesurent 145/87/53/5 (OWL resynchronise par #13554 le 2026-08-30). 20 remplacements sur 12 cellules, dont l'inversion de la « Precaution methodologique » (l'OWL commite porte desormais 145 ; c'est l'ancien compte 93 qui est l'etat perime) et du bloc « 61 grep vs ~82 audit » (le grep 87 depasse desormais l'audit, les deux bornes datent d'etats distincts de l'ontologie). Commentaire de la cellule 29 touche -> re-exec papermill complete (49/49 cellules, 18/18 code avec outputs, 0 erreur) ; drift outputs limite aux dates/id SVG et au decoupage des streams. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…r la garde en CI (#17604) * fix(argumentum,#17580): regenerer le snapshot au pin ae84c91c + cabler la garde en CI Le manifeste `argumentum_snapshot.json` etait reste sur c86b71ff et les anciens SHA de blob apres la resync des CSV par PR #14578 : la garde d'integrite rougissait sur main depuis 19 jours en silence, parce que `scripts/fallacy_detection/tests` n'etait ni dans pytest.ini ni dans scripts-tests.yml. Quatre changements sur le meme theme, scope strict : 1. `scripts/fallacy_detection/regenerate_argumentum_snapshot.py` (nouveau) : calcule les SHA de blob, comptes de lignes/colonnes, familles Virtues et assertions OWL a partir des donnees sur disque, et ecrit le manifeste a l'identique de la structure posee par #13554. Aucun SHA n'est edite a la main. 2. `argumentum_snapshot.json` : regenere au pin ae84c91c par le script. upstream_commit et synced_on (2026-09-23) mis a jour. 14/14 tests d'integrite verts sur le meme runner Python 3.13.7 win32 (rouge avant regen, vert apres, controle positif #17580 critere 3). 3. `pytest.ini` : `scripts/fallacy_detection/tests` ajoute aux testpaths (la garde devient un test de la collection locale). 4. `.github/workflows/scripts-tests.yml` : - 3 entrees `paths:` symetriques (push + pull_request) pour couvrir `MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/data/**`, `.../ontologies/**`, `scripts/fallacy_detection/**`. Le cas de #14578 (resync qui ne touche pas scripts/**) tire maintenant la garde explicitement. - `scripts/fallacy_detection/tests` ajoute a la liste passee a pytest dans le job. Verification end-to-end : 72/72 tests de `scripts/fallacy_detection/tests` verts (14 integrite + 58 autres). YAML du workflow parse. Perimetre non verifiee documentee (les OWL n'ont pas bouge entre c86b71ff et ae84c91c -- 4 tests ontology_* OK sur SHA identiques). Refs #17580 * fix(ci,#17604): declarer scripts/fallacy_detection/tests dans WORKFLOW_COVERAGE Le commit 85c3f78 a ajoute le testpath au pytest.ini et au job scripts-tests.yml mais pas au dict source de verite du garde WORKFLOW_COVERAGE de scripts/check_testpaths_coverage.py : les trois rouges (testpaths vs CI coverage, fastlane phase 1, Scripts Tests CPU) ont cette seule cause. Verifie dans le worktree : check_testpaths_coverage.py rc=0, pytest scripts/tests/test_check_paths_coverage.py 10 passed. Geste nomme par l'adjoint (DM adj-c64, dossier verifie firsthand sur la tete 85c3f78 sans rien pousser). Refs #17580 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…s §5.1/§6/§7/§8 + exercice 5 (#17579) * feat(notebook,#17557): AIF Ontology — mindmap SVG du noyau + exemples illustres 5.1/6/7/8 + exercice 5 Chantier A : mindmap SVG (option A2, out/argumentum_mindmap.svg, 134 Ko) du noyau pedagogique (racine fallacy + 7 branches + petits-enfants), aretes colorees par famille de predicat (SKOS gris, cross-links orange — 10 liens directs mesures, AIF violet en panneau lateral 61/29/3). Chantier B : cluster mirrors du geste social (bow/genuflection/curtsy/salute/ theFinger, degres 14/12/10/10/10, 3 parents broader distincts) en table + SVG ; fiche definition/example officielle de semanticAmbiguity + sous-graphe SVG + 3 enfants expliques ; exemples RA/I/CA labellises FR/EN avec definition OWL ; graphe scheme-vs-conflit avec noeud fantome hasConflictedElement (0 instance). Chantier C : encadre Source Argumentum (CSV canonique CrossLinks, EPIC #4960) ; choix d'outil documente (pyvis iframe non rendu GitHub vs matplotlib SVG statique) ; exercice 5 conforme C.1. Parseur regex et comptages bruts intacts (12 cellules code d'origine re-executees, 18/18 code cells avec execution_count + outputs, 0 erreur). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(argumentum,#17579): realigner la prose AIF sur les outputs frais (145/87/53/5) + re-exec C.2 Suite a la reserve 5798823741 : la prose citait les nombres de la derniere exec complete de la base (#11598, 2026-08-18 : 93/61/29/3) alors que les outputs frais mesurent 145/87/53/5 (OWL resynchronise par #13554 le 2026-08-30). 20 remplacements sur 12 cellules, dont l'inversion de la « Precaution methodologique » (l'OWL commite porte desormais 145 ; c'est l'ancien compte 93 qui est l'etat perime) et du bloc « 61 grep vs ~82 audit » (le grep 87 depasse desormais l'audit, les deux bornes datent d'etats distincts de l'ontologie). Commentaire de la cellule 29 touche -> re-exec papermill complete (49/49 cellules, 18/18 code avec outputs, 0 erreur) ; drift outputs limite aux dates/id SVG et au decoupage des streams. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(notebook,#17557): reserve 18:53Z — mindmap originale importée + top-10 explicité (1) Import de l'artefact original du dépôt Argumentum (Fallacies_fr.svg, 2,85 Mo, généré depuis fallacy_map.mm) affiché depuis le sous-module épinglé ; le zoom génératif est repositionné en aide de lecture. Encadré Source Argumentum (Chantier C de l'issue). (2) Le top-10 des émetteurs mirrors porte désormais prefLabel FR/EN + parent broader pour chaque entrée (lus dans l'OWL au run), et la lecture décompose les quatre familles mesurées : gestes non verbaux, jargons de prestige, discrimination, erreur de modalité. Papermill 51/51, 0 erreur, 0 exec_count nul ; SVG originale embarquée en sortie (C.2) ; check_c2_compliance 1/1 compliant ; 0 fuite (chemins machine, préfixes de clés). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(argumentum,#17579): prose cellule 5 + intro ancrees sur la sortie OWL commitee Reserve Hermes (relecture 3eff425, residu 2) : la cellule 5 disait ~6,0 MB / ~96 800 lignes alors que la sortie commise (cellule 4) rend 6 791 708 octets / 107 895 lignes. Meme correction pour l'intro (~6,8 MB). Markdown seul, aucune cellule code touchee (exemption C.2 markdown-only). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(argumentum,#17579): claims de provenance et de lecture §5.1 corriges sur la mesure Trois affirmations refutees par la lecture amont (myia-ai-01:Argumentum) et verifiees firsthand avant reecriture : - provenance : la carte ne vient pas de `fallacy_map.mm` (302 octets, 4 noeuds, aucun code ne le lit, bouchon de test) mais du CSV de taxonomie, via MindMapCreator -> .mm de build -> export FreeMind/Batik -> post-traitement. 8 langues + 2 gabarits (et non 10) ; trois variantes fr (brut / .content / .links). - millesime : la cellule 14 presentait la carte comme « la taxonomie que ce notebook audite (1 509 classes, 720 mirrors) » — faux, la carte est posterieure au nettoyage des liens transverses (le CSV du pin ne porte plus que 2 cellules crossLink_Mirrors) et l'OWL vendore porte encore 720. Les compteurs decrivent l'OWL, jamais la carte. - §5.1 : la lecture disait que `mirrors` « traverse la hierarchie SKOS au lieu de la dupliquer ». Mesure : 716 des 720 triplets relient deux freres (parent broader commun), et les 5 membres du « cluster » forment 3 fratries disjointes (8 triplets internes, 0 traversant un parent). La relation duplique l'arbre. Cellule 23 : la duplication devient mesurable dans le notebook (3 lignes) ; cellule 22/24 : lecture reecrite sur la mesure ; cellule 13 : commentaire de provenance corrige. Re-execution complete : papermill 51/51, 0 erreur, execution_count 1-19 ; aucune derive numerique sur les 17 autres cellules de code (comparaison des sorties avant/apres). See #17579 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…ique 104 colonnes Dérive C.4(d) : la taxonomy a gagne 2 colonnes (AIF_attackType, AIF_attackedNode, resync #13554) et l'OWL a grossi (5.9->6.8 Mo, 7 773->7 825 AnnotationAssertion-resource) depuis la derniere exec du 22/08 -- prose (cellules 0, 8) et output df.shape (cellule 9) figes a 102 colonnes. Re-execution complete (C.2, kernel python3 3.13.13, cwd serie) : 12/12 cellules, 0 erreur, 0 ec_null, outputs rafraichis sur les 4 cellules dependantes des donnees (2, 4, 9, 16). Cellule 10 : l'ancre 'moins d'un Mo' (taille CSV reelle 4.1 Mo) replacee par un renvoi a la cellule qui mesure -- doctrine compteurs #9377/#17636. Aucune cellule code source modifiee. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ique 104 colonnes (#18380) Dérive C.4(d) : la taxonomy a gagne 2 colonnes (AIF_attackType, AIF_attackedNode, resync #13554) et l'OWL a grossi (5.9->6.8 Mo, 7 773->7 825 AnnotationAssertion-resource) depuis la derniere exec du 22/08 -- prose (cellules 0, 8) et output df.shape (cellule 9) figes a 102 colonnes. Re-execution complete (C.2, kernel python3 3.13.13, cwd serie) : 12/12 cellules, 0 erreur, 0 ec_null, outputs rafraichis sur les 4 cellules dependantes des donnees (2, 4, 9, 16). Cellule 10 : l'ancre 'moins d'un Mo' (taille CSV reelle 4.1 Mo) replacee par un renvoi a la cellule qui mesure -- doctrine compteurs #9377/#17636. Aucune cellule code source modifiee. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…post-#763/#13554) (#19064) * docs(readme,Argument_Analysis): realigner le README sur l'OWL livre (post-#763/#13554) Le README de la serie portait encore les chiffres pre-#763 sur 16 lignes descriptives, alors que les carnets Onto-01/02/03 ont ete realignes par #18876/#18947. Realignement sur les mesures firsthand (outputs re-executes des 3 carnets + comptage direct du blob 4b4fc62) : - OWL fallacies : 6,8 MB (vs 4,7 MB), 1 513 classes (1 509 concepts + 4 nœuds AIF), 18 388 AnnotationAssertion (vs 10 976 NamedIndividual + 4 183 OPA), 36 ObjectExactCardinality bien formees (vs « 37 mal formees ») - CSV crossLinks : 539 cellules, 34,6% des sophismes couverts (vs 22 / 1,5%) - Mappings AIF : 116 (64/33/19), concordants avec les *Match AA de l'OWL a l'epingle (vs 70, dits « absents de l'OWL ») - Vertus SKOS : 1,1 MB, 2 897 triplets, 225 concepts (vs 863 KB, 2 639, 224) - Gap OWL<->CSV : inventaires concordants ~7% (vs facteur x7,8) - badTenorOf retire (le carnet porte desormais « sans propriete duale ») - clause de datation sur la note PR-B #4960 (recit historique conserve) CATALOG-STATUS byte-identique (catalog-pr-hygiene R1) ; aucun notebook touche (la re-execution C.2 ne s'applique pas). See #17331 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(readme,#17331): retirer le compteur d'artefact en prose (prose-counts) L'organe `prose-counts` (bloquant sur lignes ajoutees, #17636) refuse « 539 cellules », compteur d'artefact ecrit a la main dans la prose : les donnees quantitatives sont tenues par le CI et la sortie des carnets, pas par un README qui derive au prochain ajout (#9377). Suppression de la mesure, conservation du predicat, dans les 5 lignes qui la portaient (tables Notebooks / Ce que chaque notebook apporte / Concepts cles / Gap OWL-CSV, et la clause de datation de la note PR-B). L'enumeration des compteurs par relation disparait au meme endroit : c'est la meme classe de chiffre fige, la garder aurait ete corriger a la lettre ce que l'organe mesure. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix: harmoniser ligne 358 du README avec la cause reelle du pont SemanticWeb La ligne 358 disait « axiom mal-formes, rdflib en echec » — les deux moities sont contredites par le carnet Onto-01 (cellule cell-3) : les 36 ObjectExactCardinality sont bien formees, et rdflib echoue par TypeError au parse, pas a cause d'axiomes mal formes. Formulation alignee sur les lignes 97/129/207 deja corrigees par cette PR. Markdown-only (reserve adjointe c.5981913706/#19064). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Grain: MED/ledger — lane myia-ai-01:CoursIA — prev: MED/guard #13513
Ce que ça corrige
Les deux CSV de
MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/data/sont des copies verbatim de l'amontArgumentumGames/Argumentum. Ils alimentent les notebooks Argument_Analysis, FallacyDetection (02/03) etscripts/fallacy_detection/. Le dernier import datait du 03/07 (amontac33f607).Ils ont donc pourri sept semaines en silence, et c'est le point important : rien n'a rougi. Un CSV périmé parse parfaitement — mêmes 1408 PK, mêmes volumes, tous les notebooks au vert. La panne était invisible par construction.
Dérive mesurée avant resynchronisation
AIF_attackType,AIF_attackedNode)AIF_criticalQuestion,print_and_play)Deux conséquences concrètes :
Langage exact,Raisonnement valide,Rigueur mathématique. Chercher un libellé courant rendait 0 ligne — et ce zéro se lit comme « rien à faire » alors qu'il signale un instrument cassé.La structure est intacte des deux côtés (aucun nœud ajouté ni supprimé) : la dérive est de contenu et de schéma, pas de périmètre.
Les trois gestes
1.
.gitattributes— règle-text. La source porte 139 sauts de ligne isolés à l'intérieur de cellules citées, en plus de ses 1409 CRLF de fin d'enregistrement. Souscore.autocrlf=trueet sans règle, git normalise ces LF internes en CRLF — c'est exactement ce qui est arrivé à l'import de juillet (#5183), dont le message annonçait « verbatim » alors que le blob stocké différait de l'amont.Vérifié ici par égalité des SHA de blob avec la source :
fdba6a16(Fallacies),7d694b95(Virtues). Même contenu ⇒ même SHA, quel que soit le dépôt : c'est la preuve que rien n'a été converti.2. Resynchronisation verbatim des deux CSV depuis l'amont
344ac8c3.3. Garde d'intégrité — 7 tests, stdlib only, hermétique : SHA de blob, colonnes
AIF_*/crossLink_*requises, volumes, libellés de familles Virtues.La garde a été vue rouge
Une garde qui n'a jamais échoué ne prouve rien. Réinjection des snapshots de juillet :
puis 7 passed après resynchronisation. Elle attrape donc précisément le défaut qui a motivé la PR.
Un renommage amont fera désormais rougir la garde au lieu de filer en silence. Le geste attendu est alors une resynchronisation, jamais une édition de l'attente — c'est écrit dans le docstring et dans le message d'échec.
Ce que cette PR ne fait pas
7e72f3e5, 15/07, 252 commits en arrière). Les scripts et notebooks lisent le CSV dérivé, pas le sous-module — c'est le canal réel de distillation, et c'est lui qui est traité ici. Le bump du pointeur est un geste distinct, à instruire séparément.03_taxonomy_coverage_gap.ipynb(1408 nœuds / 894 feuilles) restent valides en structure, mais tout ce qui dépend du contenu — traces SFT, crosslinks, typage AIF — gagne 7 semaines d'amont.Ajout — les ontologies aussi (commit
7381ecc38)Le même canal, le même défaut, la même preuve. Les deux OWL de
Argument_Analysis/ontologies/portaientObjectPropertyAssertion = 0: les arêtes du graphe argumentatif — crosslinks transverses et typage d'attaque AIF — n'existaient qu'enAnnotationAssertion, donc hors de la sémantique logique d'OWL. SPARQL les voit ; HermiT, Pellet et owlrl ne les voient pas.C'est ce qui rendait le critère 3 de #13567 inatteignable : « le delta d'inférences owlrl est non vide et exhibé » aurait été vide par construction, quelle que soit la qualité de l'outillage ICT — et ce vide se serait lu comme un verdict sur la greffe alors que la panne était en amont.
L'amont a corrigé (
ArgumentumGames/Argumentum#1231, masterc86b71ff) en émission additive : les deux formes, jamais l'une pour l'autre.ObjectPropertyAssertionAnnotationAssertionargumentum_fallacies.owlargumentum_virtues.owlVerbatim prouvé par égalité des SHA de blob avec l'amont (
4b4fc620,c67d08f0) — pas par une affirmation dans un message de commit, ce qui est précisément ce qui avait manqué à l'import #5183. Cette égalité exige une règle-text:argumentum.owlporte 41 LF nus au milieu de ses 107853 CRLF, donctext eol=crlfles écraserait tout autant que la normalisation par défaut.L'organe d'intégrité gagne 6 tests : identité octet à octet,
ObjectPropertyAssertion > 0et conforme au manifeste, conservation desAnnotationAssertion. Vérifié rouge sur l'artefact d'avant-fix, vert après — 13 passed.Le manifeste repointe sur
c86b71ff; les deux CSV sont inchangés depuisa23e9568(SHA de blob identiques), le commit unique reste donc exact.upstream_pathy consigne le renommageargumentum.owl→argumentum_fallacies.owl, sans quoi un tiers ne retrouve pas la source.Grain: MED/guard -- lane myia-ai-01:CoursIA -- prev: MED/test #13538