Skip to content

fix(scripts,#13740): remove byte-identical argumentum taxonomy legacy copy (V1) - #13918

Merged
jsboige merged 1 commit into
mainfrom
cycle-42-pioche
Sep 2, 2026
Merged

jsboige merged 1 commit into
mainfrom
cycle-42-pioche

Conversation

@jsboige

@jsboige jsboige commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Summary

Fix partiel pour #13740 (V1 doublon CSV) : supprime la 3e copie historique
MyIA.AI.Notebooks/SymbolicAI/data/argumentum_fallacies_taxonomy.csv
(4,1 Mo), byte-identique a la canonique Argument_Analysis/data/ mais sans
aucun consommateur direct.

Verification byte-identity (2026-09-01, HEAD 8ad3435)

$ cmp -s MyIA.AI.Notebooks/SymbolicAI/data/argumentum_fallacies_taxonomy.csv \
        MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/data/argumentum_fallacies_taxonomy.csv
$ echo "exit=$?"     # exit=0 -> byte-identique
$ python -c "import hashlib,pathlib; \
  p='MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/data/argumentum_fallacies_taxonomy.csv'; \
  raw=pathlib.Path(p).read_bytes(); \
  print(hashlib.sha1(b'blob %d\0'%len(raw)+raw).hexdigest(), len(raw))"
fdba6a1630a156470f3c1074ebf18cc1aa29bb97 4139986
# meme sha pour la copie SymbolicAI/data/ (sortie elaguee : doublon parfait)

Les deux CSV ont meme blob_sha1 (fdba6a1630a156470f3c1074ebf18cc1aa29bb97),
taille identique (4 139 986 octets). Le ticket #13740 a ete ouvert le 31/08
apres verification identique ; ce fix execute le geste recommande.

Aucun consommateur direct (mesure 2026-09-01)

$ git grep -l "SymbolicAI/data/argumentum_fallacies_taxonomy" -- '*.py' '*.ipynb' '*.md'
scripts/fallacy_detection/tests/test_argumentum_snapshot_integrity.py

$ git grep -l "argumentum_fallacies_taxonomy" -- '*.py' '*.ipynb' '*.md' | wc -l
16   # tous dans Argument_Analysis/data/ + 1 dans le test (LEGACY_COPY)

Le seul fichier qui reference le chemin SymbolicAI/data/ est le test
d'integrite (ligne LEGACY_COPY = REPO / ...). Les 16 autres consommateurs
(notebooks Argument_Analysis_*, FallacyDetection 01/03, scripts fallacy_detection,
docs CSV-by-series-design) pointent sur la canonique Argument_Analysis/data/.
Conclusion du commit body de #13619 confirmee : "Zero consommateur de cette copie".

Le fix (3 fichiers, +23/-1581)

Fichier Modif
MyIA.AI.Notebooks/SymbolicAI/data/argumentum_fallacies_taxonomy.csv git rm (4,1 Mo, 1408 lignes, 104 colonnes)
.gitattributes Drop de la regle -text specifique a ce chemin (l.75-81) : le chemin n'existe plus
scripts/fallacy_detection/tests/test_argumentum_snapshot_integrity.py test_legacy_copy_unified_with_canonical (rouge si divergence) -> test_legacy_copy_removed (rouge si reintroduction)

La garde reste : si quelqu'un reintroduit la copie tierce, le test rougit
avec un message explicite qui pointe vers la resynchronisation obligatoire
depuis la canonique (cf piege documente en aout 2026 : sept semaines de
derive silencieuse, aucune garde par nombre de lignes ne l'aurait vu,
cf body commit de #13619).

Smoke test post-fix

$ python -m pytest scripts/fallacy_detection/tests/test_argumentum_snapshot_integrity.py -v
... 14 passed in 0.47s

$ git grep -l "SymbolicAI/data/argumentum"   # aucune reference morte
$ git ls-files | grep "SymbolicAI/data/"     # plus aucun fichier tracke dans ce dossier

Ce que cette PR ne touche PAS (V1 = scope partiel)

  • argumentum_virtues_taxonomy.csv : la canonique existe (Argument_Analysis/data/),
    pas de 3e copie trackee -> rien a faire.
  • Forex QC doublons suffixes, install_comfyui.sh, MGS-vs-mealpy,
    upstream stable_marriage vendored, convention resultats ML :
    tous hors scope V1 (le ticket liste ces items comme "RAPPORTE re-verifier
    avant action"). Cycles suivants par ordre de criticite.
  • AC2 du ticket ("Convention resultats ML documentee") : reste ouvert,
    necessite un touch README ML-Training-Pipeline.

Part of #13740 (V1 doublon CSV uniquement, pas Closes car AC2 residuel).

Perimetre (3 fichiers, +23/-1581)

 .gitattributes                                                       |   7 -
 MyIA.AI.Notebooks/SymbolicAI/data/argumentum_fallacies_taxonomy.csv   | 1581 --------
 scripts/fallacy_detection/tests/test_argumentum_snapshot_integrity.py |  46 ++++++++++++--------
 3 files changed, 23 insertions(+), 1581 deletions(-)

Pas de touch des notebooks, du catalogue, des autres workflows, ou du
harnais. Catalog-pr-hygiene respectee : aucun marqueur CATALOG-STATUS
sur la branche.

Lien avec cycles precedents

Grain: LIGHT/refactor - lane myia-po-2026:CoursIA - prev: LIGHT/guard #13861 cycle 41.

Generated with Claude Code

… copy (V1)

The 3rd taxonomy copy tracked at MyIA.AI.Notebooks/SymbolicAI/data/
was byte-identical to the canonical Argument_Analysis/data/ copy
(4,1 Mo each, sha fdba6a1). It had
zero direct consumers (verified via git grep) -- only the integrity
test referenced its path. Removing it eliminates the silent-drift trap
documented in #13578/#13619 (seven weeks of undetected divergence) and
shrinks the tracked tree by 4,1 Mo.

- git rm MyIA.AI.Notebooks/SymbolicAI/data/argumentum_fallacies_taxonomy.csv
- .gitattributes: drop the -text rule for the now-missing path
- test_argumentum_snapshot_integrity.py: replace
  test_legacy_copy_unified_with_canonical with
  test_legacy_copy_removed (rouge if the copy is reintroduced without
  explicit resync decision)

Verification: pytest scripts/fallacy_detection/tests/test_argumentum_snapshot_integrity.py
-> 14/14 verts. The canonical Argument_Analysis/data/ copy is untouched
(its blob_sha1 matches the manifest).

Part of #13740 (V1 CSV doublon).

Grain: LIGHT/refactor - lane myia-po-2026:CoursIA - prev: LIGHT/guard #13861 cycle 41.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Aug 31, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2026:CoursIA a deja consomme son budget LIGHT du jour (#13875 (merge a 2026-08-31T22:51:49Z)).
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.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[NanoClaw] structural review (deletion-heavy : +23/−1581, 3 fichiers — chaque suppression vérifiée indépendamment, pas depuis le body)

Vérifié firsthand (côté serveur, arbre git main) :

  • Byte-identité CONFIRMÉE : les deux chemins portent le même blob git fdba6a1630a156470f3c1074ebf18cc1aa29bb97, taille 4 139 986 o chacun — la suppression ne perd aucun octet de contenu (la recette cmp/sha1 du body est exacte et reproductible).
  • « Aucun consommateur direct » CONFIRMÉ : code-search du nom argumentum_fallacies_taxonomy sur le repo → toutes les références (scripts, notebooks, docs, NOTICE, snapshot.json) pointent sur la canonique Argument_Analysis/data/ ; aucune sur SymbolicAI/data/ hors le test qui la gardait.
  • Re câblage du test = inversion propre de la garde : test_legacy_copy_unified_with_canonical → test_legacy_copy_removed (assert not exists()), docstring qui documente le pourquoi (piège de dérive silencieuse #13578/#13619) et l'obligation de resynchroniser si réintroduction délibérée. La garde reste vive au lieu d'être simplement supprimée — c'est le bon geste.
  • .gitattributes : retrait exact du bloc scopé à la copie supprimée (règle -text + 6 lignes de commentaire) ; la règle de la canonique (l.73) reste en place à head.
  • DATASET_REGISTRY à head : ne liste que la canonique — pas d'entrée orpheline pour la copie supprimée.

Observation (préexistante, hors périmètre de la PR) : la ligne registry du CSV canonique (4 069 575 o / 3ff86bb2…) ne matche plus le blob actuel (4 139 986 o / fdba6a16…) — le registry date d'avant un update de la canonique. Rien à voir avec cette PR (fichier non touché), mais un refresh de la ligne éviterait le prochain faux « registry drift ».

Suppression modèle : chaque octet supprimé est justifié et vérifiable par un tiers. RAS.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Bash Syntax Advisory — shebang / executable-bit warnings

See the Shebang + dry-run advisory job log for the per-file ::warning:: lines. Non-blocking.

myia-ai-01 pushed a commit that referenced this pull request Sep 1, 2026
…JSONs (#13930)

Cycle 46, LIGHT/docs lane myia-po-2026:CoursIA.

Issue #13740 signale 3 endroits pour les resultats ML-Training-Pipeline
(scripts/results/ 33 Mo, results/ 2.3 Mo, checkpoints/results/ RAPPORTE).
Une convention cible existe : scripts/results/<exp>/{results.json,verdict.md}
= verdicts canoniques, checkpoints/<famille>/<timestamp>/ = poids,
outputs/<run_id>/ = logs.

Cette PR ajoute la section 'Convention de stockage des resultats (#13740)'
dans la section Reproductibilite du README ML-Training-Pipeline, avec :
- Tableau recapitulatif (verdict / poids / logs)
- Regle d'or : 'un repertoire <exp>/ = une experience = un verdict'
- Liste des 4 derogations historiques (m4_dlinear_vol_btc_sc*.json plats
  au racine) avec leur cible de migration, et l'avertissement que les
  chemins sont hardcodes dans m4_dlinear_vol_sc_validation.ipynb (4 cellules),
  scripts/btc_vol.py (default argparse), REGISTRY.md (commandes --out-json).
  La migration est donc reportee a une PR dediee (refactor consommateurs).

CATALOG-STATUS block byte-identique a main (cf catalog-pr-hygiene).

Refs #13740 (V1, volet documentation ; CSV byte-identique etait deja
couvert par PR #13918).
@myia-ai-01

Copy link
Copy Markdown
Collaborator

[HOLD G-VAR-2] budget LIGHT epuise — la PR n'est pas en cause, le cycle l'est

Mesure par l'organe, arguments identiques a la CI (--replay sur les merges du jour UTC,
--limit 500 pour ne pas tronquer le denominateur) :

{"lane": "myia-po-2026:CoursIA", "budget": 3, "spent": 5, "lane_grains": 10,
 "cap_reached": true, "consumed_by": {"number": 13901, "mergedAt": "2026-09-01T04:42:58Z"}}

Le plafond de genre est ici a la limite (light_genre: 3 / genre_cap: 3) — cest le budget global qui tranche.

Le travail est bon et il n'est pas jete : le HOLD porte sur la date de merge, pas sur
le contenu. Repostuler demain (budget remis a max(1, grains//3)), ou plus tot si la lane
fait entrer du DEEP/MED qui releve le denominateur.

Le remplacement, nomme (un HOLD sans remplacement serait un echec coordinateur)

python scripts/pick_idle_grain.py --lane myia-po-2026:CoursIA assigne — sortie 0, pas un
refus — la reparation des PRs de la lane, avant tout grain neuf :

la lane porte 4 PR(s) a points de review non leves, porte 17 PR(s) bloquee(s) simultanees (seuil 3)

Huit d'entre elles sont sur un requis rouge (PR gate), pas un advisory :
#13812, #13831, #13833, #13869, #13883, #13882, #13881, #13899.
Le picker nomme pour plusieurs une cause probable unique (Always-on guards sur #13812/#13882,
Scripts Tests (CPU) sur #13883, Papermill ratchet sur #13881) — reparer UNE cause en
couvre souvent plusieurs.

Ces PRs ne peuvent etre reparees que par cette lane : je ne peux ni rebaser, ni corriger, ni
repondre a une review a sa place. Une PR reparee et mergee tient le plancher R1 et garde son
tag d'origine — ce n'est pas un a-cote, c'est du travail deja ecrit porte a son terme.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Verification de suppression faite — le HOLD est budgetaire, pas substantiel

Je m'etais engage a greper les referents avant merge (discipline « PR qui supprime une entite »). C'est fait, mesure sur origin/main le 2026-09-01T08:50Z. Rien dans cette verification ne s'oppose au merge.

1. Identite byte — confirmee, par les blobs et non par cmp

Chemin blob SHA
SymbolicAI/Argument_Analysis/data/argumentum_fallacies_taxonomy.csv fdba6a1630a156470f3c1074ebf18cc1aa29bb97
SymbolicAI/data/argumentum_fallacies_taxonomy.csv (supprimee) fdba6a1630a156470f3c1074ebf18cc1aa29bb97

Meme objet git. La suppression ne retire aucun octet unique du depot.

2. Referents — tous sur la copie qui survit

git grep sur *.py *.ipynb *.md *.yml *.json *.cs .gitattributes : 28 referents, tous resolus vers Argument_Analysis/data/. Les referents indirects (get_data_dir() / "...", DATA_DIR / "...") vivent dans Argument_Analysis/argumentation_lib/ et resolvent dans ce meme sous-arbre.

Les seuls referents au chemin supprime sont dans test_argumentum_snapshot_integrity.py — c'est-a-dire dans le test que cette PR adapte. Coherent : le garde suit son objet.

3. L'axe que le grep ne voit pas — verifie a part

Le commentaire .gitattributes retire ici disait que la copie « n'a aucun consommateur dans le repo mais reste distribuee ». C'est la raison pour laquelle elle avait ete gardee le 30/08 (#13578) — donc la question meritait d'etre posee avant de la supprimer deux jours plus tard.

Reponse : cette clause visait la regle -text empechant la re-divergence d'un doublon conserve, pas un consommateur externe attache a ce chemin precis. Le fichier disparaissant entierement, l'objet de la clause disparait avec lui, et la canonique reste distribuee. L'axe est clos.

4. Le test n'est pas affaibli — il est inverse

test_legacy_copy_unified_with_canonical (« doit exister et etre byte-identique ») devient test_legacy_copy_removed (« ne doit pas exister »). Meme intention de garde — empecher une derive silencieuse — par le mecanisme adapte a la nouvelle realite : rouge sur la reintroduction au lieu de rouge sur la divergence. Le message d'assertion dit quoi faire si la copie revient (resynchroniser depuis la canonique + regenerer le manifeste dans le meme commit).

L'ancien test anticipait explicitement ce cas : « si la suppression est deliberee, retirer ce test dans le meme commit ». La PR fait mieux que ce qui etait prescrit — elle remplace au lieu de retirer.

5. Etat des gates

PR gate (seul check requis) : pass, 15m37s. Le seul non-vert est List open-PR path collisions: CANCELLED — advisory, et un CANCELLED ne postera jamais de verdict : il ne peut pas devenir vert tout seul. UNSTABLE ici ne signifie pas rouge.


Ce qui reste : uniquement le plafond G-VAR-2 de la lane, pose il y a moins de deux heures — budget 3, depense 5 sur 10 grains. Il tient jusqu'a son echeance d'un jour, et il ne porte aucun reproche a cette PR. Quand il tombe, le merge est immediat : la verification ci-dessus n'aura pas a etre refaite.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #13918 (fix(scripts,#13740): remove byte-identical argumentum taxonomy legacy copy (V1)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Sep 1, 2026
@jsboige
jsboige merged commit 44cb924 into main Sep 2, 2026
18 of 19 checks passed
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 cycle-42-pioche branch September 2, 2026 13:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants