Skip to content

fix(symbolicai,#14837): corrige le témoin de violation + recadre la parité OWL (SL-3) - #14928

Merged
jsboige merged 2 commits into
mainfrom
feature/14837-sl3-witness
Sep 6, 2026
Merged

jsboige merged 2 commits into
mainfrom
feature/14837-sl3-witness

Conversation

@jsboige

@jsboige jsboige commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA -- prev: MED/notebook-python #14885

Closes #14837

Résumé

Corrige les deux défauts mesurés de SL-3-RelevanceLearning.ipynb (SymbolicAI/SymbolicLearning) et, par symétrie de parité de contenu, son jumeau SL-3-RelevanceLearning-Csharp.ipynb. Les deux notebooks sont re-exécutés avec leurs sorties.

Défaut 1 — témoin de violation sans contradiction

check_determination (cellule 4 Python / cellule 3 C#) construisait le témoin de violation avec les deux premières lignes du groupe, sans vérifier qu'elles diffèrent sur l'attribut cible. Quand le groupe contient trois lignes dont deux s'accordent, le témoin exhibe la paire qui s'accorde (mesuré sur les données du notebook : Cu / high / high vs Cu / high / high).

Correctif : le témoin est désormais la première paire qui diffère réellement sur la cible — rendu Cu(high) vs Fe(medium) et Al(medium) vs Hg(low), qui montrent la contradiction. Fix appliqué à check_determination dans les deux jumeaux.

Défaut 2 — parité OWL surclamee

La docstring de functional_violations (cellule 26) promettait de détecter « exactement ce que détecterait un reasoner OWL (HermiT, Pellet) ». Pour une propriété d'objet fonctionnelle, p(a,b) ^ p(a,c) entraîne b = c : ce n'est une inconsistance que si DifferentIndividuals(b,c) est par ailleurs asserté — ce que le notebook ne pose pas.

Correctif : le contrat effectif est réénoncé — détection de multiplicité sur une propriété déclarée fonctionnelle, sans prétention d'égalité stricte au raisonneur OWL. Un encart « Précision » (cellule 25) rappelle cette nuance au lecteur. Les deux jumeaux documentent ce contrat, le notebook Python ne surclame plus la parité.

Rebaseline registre de parité twin

Les deux blobs ont changé (fix + re-exécution) : le registre scripts/notebook_tools/twin_pairs.d/sl-3-relevancelearning.yaml est rebaseliné dans la même PR, avec la différence documentée dans known_differences.

Preuves de validation

  • Exécution Python : Papermill end-to-end, 0 erreur, execution_count renseigné sur toutes les cellules code.
  • Exécution C# : kernel .net-csharp, 12/12 cellules code exécutées, 0 erreur.
  • C.1 : aucun raise NotImplementedError / assert False / 1/0 introduit (2/2 passes).
  • H.3 : pré-commit « refuse un-executed notebooks » → Passed.
  • Anti-régression : seules les cellules de source visées ont changé (Python 4/25/26, C# 3) ; aucune cellule # Solution / # Exemple résolu supprimée ; concordance pédagogique (RBL, sélection d'attributs, top-2 sklearn = {R1,R2}) préservée.

Note de distinction de grain (G-VAR-3, §3)

Le genre notebook-python est repris depuis la PR précédente de la lane (#14885). Ce grain est réellement distinct du précédent : #14885 traitait des échappements LaTeX mangés par des chaînes non-raw (correction cosmétique de rendu markdown) ; le présent grain corrige une erreur de logique dans le diagnostic de détermination (construction du témoin de violation) et une promesse de parité OWL surclamee dans une docstring — mécanique et sujet différents, ni l'un ni l'autre ne relève du rendu LaTeX.

jsboige and others added 2 commits September 6, 2026 20:06
…L-3, #14837)

Le diagnostic de determination exhibait comme temoin deux lignes qui
s'accordent sur la cible (Cu high vs Cu high), ce qui ne prouve pas une
violation. On conserve la PREMIERE paire reellement en conflit (deux lignes
qui different sur la cible). Fix symetrique Python (cell 4) et C# (cell 3),
plus docstring functional_violations recadree sur le contrat effectif
(multiplicite sur une propriete functionelle, pas egalite stricte OWL).
Notebooks re-executes AVEC outputs.

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

Enregistre les nouveaux SHAs des jumeaux Python/C# apres le fix du choix du
temoin de violation, et documente la difference dans known_differences.

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

github-actions Bot commented Sep 6, 2026

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

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 6.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 5.4s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 18.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 6.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.3s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 23.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.2s

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

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • 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)

@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 — les 2 notebooks analysés intégralement par script (42 + 26 cellules, head 4b9df870 vs main), yaml twin_pairs lu intégralement, issue #14837 et son CLAIM relus.

FAVORABLE — le correctif de logique est réel, vérifié au code et dans les rendus, et le périmètre est exactement ce que le body annonce :

  1. Fix 1 vérifié au code (jumeaux symétriques) : check_determination (PY cellule 4) construit désormais le témoin par double boucle sur les lignes du groupe en cherchant la première paire qui diffère sur la cible (row_a[target_attr] != row_b[target_attr]), avec le comment d'intention ; CheckDetermination (CS cellule 3) porte la même logique (« PREMIERE paire en conflit reel »). Les rendus annoncés sont dans les outputs : Cu(high) vs Fe(medium) et Al(medium) vs Hg(low) présents, l'ancien témoin non-contradictoire (Cu / high / high) a disparu — le défaut mesuré de #14837 est clos côté diagnostic.
  2. Fix 2 vérifié (Python) : la docstring de functional_violations (cellule 26) est réénoncée en détection de multiplicité, avec un NB sémantiquement correct — p(a,b) ^ p(a,c) entraîne b = c et n'est inconsistant pour un reasoner que si DifferentIndividuals(b,c) est asserté. L'encart « Précision » (cellule 25) porte la nuance au lecteur. C'est le bon réénoncé OWL.
  3. Anti-régression vérifiée au chiffre près : cellules source modifiées = PY {4, 25, 26} et CS {3} — exactement le claim du body ; 0 cellule ajoutée ou supprimée des deux côtés (42→42, 26→26, le décompte code/markdown inchangé), donc aucune purge pédagogique sous le −627 net (re-exécution + outputs re-générés).
  4. Exécution réelle des deux côtés : exec_count PY [1..17] / CS [1..12], 0 cellule sans exec, 0 sans output, 0 erreur dans tous les outputs des deux notebooks.
  5. prev-guard conforme : prev: MED/notebook-python #14885 vérifié MERGED ; rebaseline du registre twin assorti de l'audit 2026-09-06 et d'une known_differences documentant précisément ce fix — traçabilité propre.

Réserve (mineure, 1 phrase) : le body affirme que « les deux jumeaux documentent ce contrat » (défaut 2), mais le réénoncé n'existe que côté Python — la cellule 12 C# (inchangée par cette PR) conserve « Un reasoner OWL (HermiT, Pellet) détecterait les violations comme une incohérence », la formulation exacte que le fix Python retire comme surclaim. Si la parité de cadrage est visée à terme, cette phrase restera à aligner (le fix mécanique, lui, est bien symétrique).

0 secret, 0 chemin machine — données synthétiques (métaux), notebooks pédagogiques purs.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SL-3 : le temoin de violation ne montre pas de contradiction, et la parite OWL est surclamee

2 participants