Repository navigation
Argument_Analysis : certifier l'integrite structurelle de la taxonomie vendorisee (cibles crossLink, fermeture de l'arbre, coherence depth) #22730
Description
Part of #4960
Constat
La taxonomie des sophismes vendorée dans CoursIA (data/argumentum_fallacies_taxonomy.csv, copie verbatim de ArgumentumGames/Argumentum) est consommée par plusieurs carnets et scripts de la série Argument_Analysis :
scripts/fallacy_detection/argumentum_taxonomy_explorer.pymonte l'arbre des sophismes à partir de la colonnepath;Argumentation-Onto-02-CrossLinks-CSV-Python.ipynblit les huit colonnescrossLink_*comme les arêtes d'un graphe ;scripts/fallacy_detection/cartesian_dataset_builder.pyéchantillonne des nœuds par famille.
La garde existante (tests/test_argumentum_snapshot_integrity.py) certifie que la copie locale est octet pour octet celle du pin déclaré — c'est la garantie de provenance. Elle ne certifie pas que la copie est cohérente avec elle-même.
Or les propriétés que les carnets consomment réellement sont structurelles :
- l'intégrité référentielle — chaque cible d'une relation
crossLink_*doit désigner un nœud de l'arbre ; - la fermeture de l'arbre — chaque nœud doit avoir un parent présent ;
- la cohérence de la profondeur — la colonne
depthdoit porter le nombre de segments dupath.
Une copie peut être fidèle à son pin et structurellement cassée : une cible crossLink_* qui ne désigne rien disparaît silencieusement de tous les carnets (le lien ne résout vers rien, et rien ne dit que rien ne résolvait). C'est la même famille de panne que la dérive silencieuse de sept semaines documentée dans le module voisin, prise par l'autre bout.
Mesure sur la copie locale (pin 6bc573f73, 1408 sophismes, 104 colonnes)
| Mesure | Valeur |
|---|---|
arêtes crossLink |
581 (40 cellules portent plusieurs cibles séparées par ;) |
| nœuds portant au moins un lien | 487 (34,6 % du corpus) |
| degré sortant maximal / moyen | 4 / 1,19 |
| cibles non résolues | 0 (581/581 résolues) |
| chemins orphelins | 0 (l'arbre est fermé) |
| boucles directes | 0 |
écarts depth / segments du path |
1 |
Réciprocité par relation (une arête est réciproque si l'arête inverse existe dans la même relation) :
| Relation | arêtes | sources | réciproques | taux |
|---|---|---|---|---|
Mirrors |
2 | 2 | 2 | 100 % |
Opposes |
25 | 23 | 12 | 48 % |
Inverts |
41 | 41 | 20 | 49 % |
Leverages |
327 | 295 | 20 | 6 % |
PredatesOn |
31 | 31 | 0 | 0 % |
Denounces |
9 | 9 | 0 | 0 % |
Allows |
60 | 56 | 0 | 0 % |
IsRelatedTo |
86 | 82 | 0 | 0 % |
Deux lectures que rien ne documentait jusqu'ici : les relations bilatérales (Opposes, Inverts, Mirrors) le sont effectivement dans le CSV, les relations de dépendance (Leverages, Allows) et les relations de contexte (IsRelatedTo, PredatesOn, Denounces) ne le sont pas — la flèche y est orientée par construction. Un carnet qui lit Opposes comme une relation symétrique sans le dire se trompe ; un carnet qui lit Leverages comme symétrique se trompe aussi, et plus silencieusement.
Finding : un écart de profondeur en amont
PK 824, path 5.1.2.3.2.24 : la colonne depth vaut 7 alors que le path compte 6 segments. Ses frères (5.1.2.3.2.1, .2, .3) portent depth 6. C'est le seul écart du corpus (1407/1408 conformes, la racine 0 exceptée). L'organe le mesure et le tolère explicitement (tolérance 1 %) : la correction appartient à l'amont, pas au dépôt.
Ce que la PR apporte
scripts/fallacy_detection/argumentum_taxonomy_integrity.py— un organe de mesure : il lit la copie locale, extrait le graphecrossLink(une arête par cible, cellules multi-cibles comprises), mesure couverture, degré, réciprocité par relation, et confronte six invariants structurels. Exécutable (--jsonpour la sortie machine), sans dépendance hors stdlib.scripts/fallacy_detection/tests/test_argumentum_taxonomy_integrity.py— la garde qui refute ces six invariants quand ils cessent de tenir.
Les invariants sont indépendants du contenu : aucun compte de lignes, de colonnes ou d'arêtes n'est figé (ces comptes changent à chaque resynchronisation amont, et un test qui les fige rougit sur un CSV sain). Ce qui est figé, ce sont les relations entre ces comptes et les propriétés de cohérence.
Critères d'acceptation
-
python scripts/fallacy_detection/argumentum_taxonomy_integrity.pyrend les six invariants au vert sur la copie locale et sort en 0 -
python -m pytest scripts/fallacy_detection/tests/vert (301 tests) - une copie abîmée fait rougir l'organe (cible
crossLinkfantôme, chemin sans parent, boucle directe) — contrôle positif sur un jeu synthétique, pas seulement sur le cas nominal - la deviation
PK 824est mesurée et nomée, pas cachée : elle est dans le rapport de l'organe, dans le corps de la PR et dans ce ticket
Hors périmètre
- La correction de l'écart
PK 824: elle appartient à l'amont (ArgumentumGames/Argumentum). Le dépôt ne réécrit pas une copie verbatim. - La resynchronisation de la copie locale au nouveau pin : c'est le geste de Argument_Analysis : resynchroniser les copies locales des taxonomies Argumentum et le manifeste au pin du sous-module #21849 / PR Fix(symbolicai,#21849): bump du gitlink Argumentum + resync verbatim au pin dc42437ce9 #22415, portée par
myia-ai-01:CoursIA-2. Cet organe est conçu pour survivre à cette resynchronisation (invariants indépendants du contenu) et pour la suivre : si la copie resynchronisée casse une relation, il rougit. - La ré-exécution des carnets dont les sorties sont indexées sur ces données : même volet, même lane.
Activity
jsboige commentedon Oct 26, 2026
[CLAIMED] lane myia-po-2028:CoursIA-2 -- paths: scripts/fallacy_detection/argumentum_taxonomy_integrity.py, scripts/fallacy_detection/tests/test_argumentum_taxonomy_integrity.py -- grain DEEP/research-code : organe de mesure de l'integrite structurelle de la taxonomie Argumentum vendorisee (cibles crossLink resolues, arbre ferme, coherence depth) + sa garde, et mesure du profil du graphe crossLink (581 aretes, 34,6 % de couverture, reciprocite par relation).
Grain: DEEP/research-code -- lane myia-po-2028:CoursIA-2 -- prev: DEEP/research-code #22719
jsboige commentedon Oct 26, 2026
[DELIVERED] lane myia-po-2028:CoursIA-2 -- PR #22731
Grain: DEEP/research-code -- lane myia-po-2028:CoursIA-2 -- prev: DEEP/research-code #22719
Deux fichiers nouveaux : l'organe de mesure
scripts/fallacy_detection/argumentum_taxonomy_integrity.pyet sa gardescripts/fallacy_detection/tests/test_argumentum_taxonomy_integrity.py(14 tests, suite complete du dossier : 301 passed). Mesure sur la copie locale (1408 sophismes) : 581 aretes crossLink, 487 noeuds porteurs d'un lien (34,6 %), 0 cible non resolue, 0 chemin orphelin, reciprocite par relation (Opposes 48 %, Inverts 49 %, Mirrors 100 %, Leverages 6 %, PredatesOn/Denounces/Allows/IsRelatedTo 0 %). Ecart nomme : PK 824 (5.1.2.3.2.24, depth 7 pour 6 segments) -- seul ecart du corpus, correction amont, ticket #22730.Add(argumentation,#22730): certifier l'integrite structurelle de la t…