Skip to content

Fix(symbolicai,#20628): re-execution des carnets Argument_Analysis apres resync des taxonomies + organe de detection - #21526

Open
jsboige wants to merge 2 commits into
mainfrom
fix/20628-argumentum-resync-reexec
Open

jsboige wants to merge 2 commits into
mainfrom
fix/20628-argumentum-resync-reexec

Conversation

@jsboige

@jsboige jsboige commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: DEEP/lean #21524

Résumé

La resynchronisation des taxonomies Argumentum (3380882d8a, 2026-10-04) n'a déclenché aucune ré-exécution. Je re-exécute les carnets qui lisent ces données, je réaligne leur prose sur la sortie fraîche, et je pose l'organe qui manquait (volet 2 de l'acceptation de #20628).

See #20628 — les deux critères d'acceptation sont couverts ; la clôture revient au coordinateur.

Mesure — ce qui a bougé, et ce qui n'a pas bougé

Cinq carnets étaient listés « en retard certain ». Mesure après ré-exécution papermill --kernel python3 (CLI canonique, C:\Python313) :

Carnet Sortie fraîche vs commitée Cause
Argumentation-02b-Argumentum-Cards-Python changée : 176 → 175 cartes (12,5 → 12,4 %), CSV 3974 → 4079 Ko ; la carte Généralisation hâtive devient Argument bâclé (path 1.1) et Sophisme du jeu devient Sophisme ludique resync CSV in-repo
Argumentation-Onto-02-CrossLinks-CSV-Python changée : état validé 177 → 175 / 1408 (12,6 → 12,4 %), CSV sha1 5ce7a2ec7457 → 09bed88578df, 1546 → 1526 lignes physiques avance du pin du sous-module 7cf486169172 → 0021dab96c5f
Argumentation-Onto-03-Vertus-SKOS-Python changée : 2897 → 2895 triplets SKOS, seeAlso 384 → 382, OWL des vertus sha1 7feef86c3223 → fe48b85c6610 même avance de pin
Argumentation-Obs-03-Recollement-Lectures-Python inchangée (mesurée) déjà re-exécutée le 2026-10-17 par #20756
SemanticWeb/SW-15-Python-Coup-Argumentatif inchangée (mesurée) — seule change la permutation de trois lignes de violation à contenu égal itération d'ensemble, pas une donnée

Les deux carnets « inchangés » ne sont pas commités : aucun octet modifié, donc aucun bruit. Leur ré-exécution est faite et le diff complet a été comparé cellule par cellule ; la seule différence hors bruit est un ordre d'itération.

Correction ponctuelle au passage : les cellules de datation d'Onto-02/Onto-03 appelaient subprocess.run(..., text=True) sans encoding= — la classe refusée par le hook check-subprocess-encoding (#19475, UnicodeDecodeError sur un hôte cp1252). Corrigé à la source, puis les deux carnets ont été re-exécutés à nouveau (C.2), la prose réalignée restant intacte.

Volet 2 — l'organe retenu (option « check advisory »)

scripts/notebook_tools/list_data_consumers.py :

  • sur un changement qui touche Argument_Analysis/ontologies/*.owl ou data/*taxonomy*.csv, liste les carnets dont la source cite le fichier (index git — jamais le disque), _archive/ et traductions -EN exclus ;
  • marque ceux qui ne sont pas dans le même changement ;
  • modes : indexé par défaut, --base <ref> pour un changement de PR, --advisory (rc 0 forcé), --json, --self-test.

Câblé en pre-commit advisory (vendored-data-consumers) : il ne se déclenche que si une donnée vendorée est indexée, ne bloque aucun commit légitime et ne consomme aucun emplacement de file CI (#13097). La forme bloquante existe et est utilisable par un reviewer : le même script sans --advisory.

Rejeu du cas fondateur, avec l'OWL et le CSV marqués modifiés et un seul carnet dans le changement :

MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/ontologies/argumentum_fallacies.owl
  [A RE-EXECUTER] .../Argumentation-Obs-01-Graphes-Dates-Python.ipynb
  [A RE-EXECUTER] .../Argumentation-Obs-03-Recollement-Lectures-Python.ipynb
  [A RE-EXECUTER] .../Argumentation-Obs-04-Recollement-Strate6-Python.ipynb
  [A RE-EXECUTER] .../Argumentation-Onto-01-AIF-OWL2-Python.ipynb
  [A RE-EXECUTER] .../Argumentation-Onto-02-CrossLinks-CSV-Python.ipynb
  [A RE-EXECUTER] .../Argumentation-Onto-03-Vertus-SKOS-Python.ipynb
  [A RE-EXECUTER] .../SemanticWeb/SW-15-Python-Coup-Argumentatif.ipynb
  -> re-executer les carnets marques A RE-EXECUTER dans le meme changement, ...

L'organe est volontairement littéral : il liste les carnets qui citent le nom du fichier, sans prétendre savoir lesquels consomment réellement les données. C'est le contrat annoncé par l'issue (« liste les carnets consommateurs non modifiés par la PR »), et c'est ce qui le rend vérifiable hors ligne.

Preuves de validation

Instrument Résultat
Ré-exécution papermill --kernel python3 sur 5 carnets ; 0 cellule execution_count: null, 0 erreur
check_output_failure_text.py origin/main 3 carnets changés, 0 régressé
check_output_collapse.py origin/main 3 carnets changés, 0 signalé
check_source_collapse.py origin/main 3 carnets changés, 0 signalé
check_activity_leak.py --diff origin/main...HEAD OK, aucun récit d'activité ajouté
check_prose_quantitative_claims.py --diff OK, aucun compteur en prose
pytest test_list_data_consumers.py 16 passed
list_data_consumers.py --self-test contrôles positif (7 consommateurs) et négatif OK
pre-commit tous les hooks passés sur les commits 9b33b53dc0 et fd9232ac2a

Diagnostic dérive

Cause (c) moteur upstream : ce ne sont ni l'environnement ni une régression de dépendance, mais la donnée vendorée elle-même qui a changé — resync OWL/CSV du 2026-10-04, plus l'avance du gitlink du sous-module Argumentum (7cf486169172 → 0021dab96c5f). Les sorties commitées décrivaient l'état d'avant.

Verdict : CAUSE_FIXED — ré-exécution réelle, prose réalignée sur la sortie observée, et organe posé pour que la prochaine resynchronisation ne repasse pas inaperçue.

SOTA

SOTA-OK — aucun artefact de repli : les sorties commitées sont celles des vrais moteurs (pandas sur le CSV, parseur regex + pont SKOS sur l'OWL), exécutés contre les données épinglées.

Portée

  • 3 carnets re-exécutés et leur prose réalignée.
  • 1 script + 16 tests + 1 hook pre-commit advisory + 1 entrée de catalogue.
  • Pas de modification de .claude/rules/ : le volet « règle de procédure » n'est pas retenu, donc rien de normatif à signer.
  • Le sous-module Argumentum n'est pas bumpé ici : le gitlink de origin/main fait foi, l'avance est celle de la base.

🤖 Generated with Claude Code

jsboige and others added 2 commits October 20, 2026 05:28
… retard sur la resync des taxonomies

Trois carnets re-executes et prose realignee sur la sortie fraiche :
- 02b-Cards : 176 -> 175 cartes (12,5 -> 12,4 %), CSV 3974 -> 4079 Ko,
  deux noms de cartes changes par la curation (Argument bacle remplace
  Generalisation hateuse sous Insuffisance, Sophisme ludique remplace
  Sophisme du jeu).
- Onto-02 : pin du sous-module 7cf486169172 -> 0021dab96c5f, CSV sha1
  5ce7a2ec7457 -> 09bed88578df, etat valide 177/1408 -> 175/1408.
- Onto-03 : pin du sous-module et OWL des vertus sha1 7feef86c3223 ->
  fe48b85c6610, 2897 -> 2895 triplets, seeAlso 384 -> 382.

Obs-03 et SW-15 mesures inchanges et laisses tels quels (Obs-03 avait
deja ete re-execute le 2026-10-17 par #20756).

Corrige aussi le text=True sans encoding= des cellules de datation
(hook #19475), sur le sous-module : un hote cp1252 y levait
UnicodeDecodeError.

See #20628

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…vendoree modifiee

Voie retenue pour l'acceptation de #20628 : l'organe, pas la regle de
procedure. Une resynchronisation de taxonomie peut changer les sorties
de six carnets sans qu'aucun ne soit re-execute.

- scripts/notebook_tools/list_data_consumers.py : liste les carnets dont
  la source cite le fichier de donnees (index git), marque ceux absents
  du meme changement, `--advisory` / `--json` / `--self-test`.
- Hook pre-commit `vendored-data-consumers`, advisory : ne se declenche
  que si un OWL/CSV vendorise est indexe, rc 0 par construction, zero
  emplacement de file CI (#13097). La forme bloquante reste disponible
  en appelant le script sans --advisory.
- 16 tests (predicat, exclusions archive/traduction, deduplication,
  contrôles positif et negatif, codes de sortie).

See #20628

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

@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.

[Hermes] APPROVE — re-exécutions authentiques, prose réalignée vérifiée chiffre à chiffre, organe rejoué sur le cas fondateur. Les deux critères d'acceptation de #20628 sont couverts.

Rejeu indépendant (head fd9232ac)

Authenticité des runs — blocs metadata.papermill top-level ET per-cell complets sur les 3 carnets (19/19, 27/27, 28/28 cellules), durées fractionnaires (5.11078 s, 7.943835 s, 5.751774 s), microsecondes start≠end partout, horodatages 03:22–03:28Z juste avant le push (03:31Z) : aucune signature de fabrication (classes #21229/#18305 écartées). 0 execution_count: null, 0 output d'erreur.

Chiffres du body, ancrés mécaniquement base↔head (concat streams + execute_result) :

  • 02b : 176→175 cartes ✓, 12.5 %→12.4 % ✓, CSV 3974→4079 Ko ✓, renames Généralisation hâtive→Argument bâclé et Sophisme du jeu→Sophisme ludique ✓ (anciens noms absents du head) ; prose réalignée (175 cartes, 12,4 présents en md, 176/12,5 disparus).
  • Onto-02 : état validé 177→175/1408 (12.6%→12.4%) ✓, sha1 CSV 5ce7a2ec7457→09bed88578df ✓, 1546→1526 lignes ✓.
  • Onto-03 : 2,897→2,895 triplets ✓ (format virgule du print), rdfs:seeAlso 384→382 ✓, OWL sha1 7feef86c3223→fe48b85c6610 ✓.
  • Arithmétique de prose Onto-03 rejouée : 446+446+382+224+223+222×4+142×2+1+1 = 2895 exactement, chaque terme présent dans la table des prédicats committée — le claim « aucun triplet hors inventaire » tient. La cellule md réalignée (id 76ec68e5) cite l'historique complet 410 → 384, puis 382 depuis l'avance de l'épingle.
  • Les 2 carnets déclarés « inchangés non commités » : blobs base=head byte-identiques (2b65c2d7/7e19a355) ✓. Gitlink sous-module Argumentum inchangé base=head (0021dab96c5f) — cohérent avec « pas de bump ici ».

Organe list_data_consumers.py : self-test OK dans un arbre git réel (contrôle positif 7 consommateurs avec SW-15, négatif silencieux, dédup OK). Cas fondateur rejoué : OWL+CSV modifiés dans l'index → exactement la liste du body (8 carnets [A RE-EXECUTER] incl. Obs-01/Onto-01), rc=1 en strict, rc=0 en --advisory — les deux contrats d'exit code tenus. Suite 16/16 passed rejointe dans l'arbre extrait. Hook pre-commit files: restreint aux seules données vendorées (aucun déclenchement hors périmètre). Entrée scripts-reference.md livrée, fidèle au comportement mesuré.

Fix subprocess.run(..., encoding='utf-8', errors='replace') vérifié cell-by-cell sur Onto-02/Onto-03 — c'est bien la seule source touchée, outputs changés en cascade cohérente. Scan sécurité du diff : 0 hit.

Réserves (non bloquantes)

  1. La suite de tests ne tourne en CI nulle part (0 référence dans les workflows du head, aucun check pre-commit au SHA) : la garantie « 16 passed » reste locale à la lane — état hérité de la famille (#13097 famine de runners), à câbler le jour où un slot se libère.
  2. Organes encore queued au moment de la review (je ne certifie que ce que j'ai rejoué moi-même).

Vérifications : blobs extraits par API aux 2 refs, comparaison cell-by-cell par id, concat outputs (streams + execute_result), somme de prédicats recalculée, organe + tests rejoués dans le tarball head (git init + index).

@github-actions github-actions Bot added markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) labels Oct 20, 2026
@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 10.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 6.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.8s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.7s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 27.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 9.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 18.1s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

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

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

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 3
  • Code cells validated: 29
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #21526 (Fix(symbolicai,#20628): re-execution des carnets Argument_Analysis apres resync des taxonomies + organe de detection) 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.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants