Skip to content

feat(symbolicai): resync taxonomies Argumentum verbatim + garde d'intégrité (7 semaines de dérive silencieuse) - #13554

Merged
jsboige merged 3 commits into
mainfrom
feat/argumentum-taxonomy-resync-2026-08
Aug 30, 2026
Merged

jsboige merged 3 commits into
mainfrom
feat/argumentum-taxonomy-resync-2026-08

Conversation

@myia-ai-01

@myia-ai-01 myia-ai-01 commented Aug 29, 2026 •

Copy link
Copy Markdown
Collaborator

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'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 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

Fallacies Virtues
lignes 1408 = 1408 223 = 223
colonnes absentes côté CoursIA 2 (AIF_attackType, AIF_attackedNode) 4 (+ AIF_criticalQuestion, print_and_play)
cellules divergentes 3938 —
crosslinks renseignés 8 contre 940 en amont —
libellés de familles — 3 périmés

Deux conséquences concrètes :

  • le graphe d'attaques AIF typé que le capstone ICT déclare consommer n'existait pas ici : la colonne était absente, pas vide (145 lignes typées en amont) ;
  • les 3 familles Virtues renommées les 6-7/08 portaient encore 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. Sous core.autocrlf=true et 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 :

7 failed  —  dont test_virtues_families :
  disque : [... 'Langage exact', ... 'Raisonnement valide', 'Rigueur mathématique' ...]

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

  • Elle ne touche pas au pointeur de sous-module Argumentum (à 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.
  • Elle ne rejoue aucun notebook : les mesures publiées dans 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/ portaient ObjectPropertyAssertion = 0 : les arêtes du graphe argumentatif — crosslinks transverses et typage d'attaque AIF — n'existaient qu'en AnnotationAssertion, 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, master c86b71ff) en émission additive : les deux formes, jamais l'une pour l'autre.

ObjectPropertyAssertion AnnotationAssertion
argumentum_fallacies.owl 0 → 2122 18284 → 18388
argumentum_virtues.owl 0 → 444 2639 → 3305

Verbatim 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.owl porte 41 LF nus au milieu de ses 107853 CRLF, donc text eol=crlf les écraserait tout autant que la normalisation par défaut.

L'organe d'intégrité gagne 6 tests : identité octet à octet, ObjectPropertyAssertion > 0 et conforme au manifeste, conservation des AnnotationAssertion. 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 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.

Grain: MED/guard -- lane myia-ai-01:CoursIA -- prev: MED/test #13538

…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.
@github-actions github-actions Bot added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Aug 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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_attackedNode présentes ✓, 145 lignes AIF_attackType renseigné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 (Leverages 350, Mirrors 304, IsRelatedTo 286…) / 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.json porte 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.
@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

…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
@github-actions github-actions Bot added variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) and removed variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) labels Aug 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA a deja consomme son budget LIGHT du jour (#? (merge a ?)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added the variation-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#10020, advisory) label Aug 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-ai-01:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-08-30) :

  • GENRE-RUN : run consecutif d'un genre LIGHT (voir signals.runs dans le log du job)

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 variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot added variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Aug 30, 2026
@jsboige
jsboige merged commit 5df1769 into main Aug 30, 2026
19 of 20 checks passed
@myia-ai-01

Copy link
Copy Markdown
Collaborator Author

Périmètre élargi après votre APPROVE — ne pas considérer l'approbation comme acquise sur le nouveau commit.

Votre revue portait sur a1a6593 (resync des 2 CSV + garde). Depuis, 7381ecc38 ajoute un second volet au même canal :

  • les 2 OWL de Argument_Analysis/ontologies/ resynchronisés — ObjectPropertyAssertion 0 → 2122 (fallacies) et 0 → 444 (virtues), AnnotationAssertion 18284 → 18388 et 2639 → 3305 ;
  • une règle .gitattributes -text sur ontologies/argumentum_*.owl — argumentum.owl porte 41 LF nus au milieu de ses 107853 CRLF, donc text eol=crlf les écraserait autant que la normalisation par défaut ;
  • 6 tests de plus dans l'organe (identité octet à octet, OPA > 0 et conforme au manifeste, conservation des annotations) — vérifiés rouge sur l'artefact d'avant-fix, puis verts : 13 passed ;
  • manifeste repointé sur l'amont c86b71ff (les 2 CSV y sont inchangés depuis a23e9568, SHA de blob identiques — le commit unique reste exact), avec upstream_path pour consigner le renommage argumentum.owl → argumentum_fallacies.owl.

Vous pouvez rejouer la même vérification firsthand : blobs amont attendus 4b4fc620dc3285a04850f7608fde61bb2dc3eb99 et c67d08f01c7876b83383bdc113616bd2887745f0 sur ArgumentumGames/Argumentum@c86b71ff, chemins docs/ontology/argumentum.owl et docs/ontology/argumentum_virtues.owl.

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 myia-ai-01:Argumentum

jsboige added a commit that referenced this pull request Sep 2, 2026
…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>
@jsboige
jsboige deleted the feat/argumentum-taxonomy-resync-2026-08 branch September 2, 2026 13:11
jsboige added a commit that referenced this pull request Sep 22, 2026
…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>
myia-ai-01 pushed a commit that referenced this pull request Sep 23, 2026
…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>
jsboige added a commit that referenced this pull request Sep 23, 2026
…(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>
myia-ai-01 pushed a commit that referenced this pull request Sep 24, 2026
…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>
myia-ai-01 pushed a commit that referenced this pull request Sep 24, 2026
…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>
jsboige added a commit that referenced this pull request Sep 29, 2026
…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>
myia-ai-01 pushed a commit that referenced this pull request Sep 29, 2026
…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>
myia-ai-01 pushed a commit that referenced this pull request Oct 5, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants