From 284110c70bc4b0920b99c04f79da58088c87a172 Mon Sep 17 00:00:00 2001 From: jsboige Date: Sat, 10 Oct 2026 17:38:57 +0200 Subject: [PATCH 1/2] Fix(notebooks,#18053): ordre de lecture -- 4 derniers constats annonce/lecture (Texte, Vibe-Coding, SemanticWeb, Tweety) Co-Authored-By: Claude Haiku 4.5 (1M context) --- .../GenAI/Texte/09b_Prompt_Security_RedTeam.ipynb | 2 +- .../Claude-Code/notebooks/01-Claude-CLI-Bases.ipynb | 2 +- .../SymbolicAI/SemanticWeb/RDF.Net-Legacy/RDF.Net.ipynb | 2 +- .../Tweety/Tweety-05-Abstract-Argumentation-Python.ipynb | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/MyIA.AI.Notebooks/GenAI/Texte/09b_Prompt_Security_RedTeam.ipynb b/MyIA.AI.Notebooks/GenAI/Texte/09b_Prompt_Security_RedTeam.ipynb index 774beedec2..7960772f53 100644 --- a/MyIA.AI.Notebooks/GenAI/Texte/09b_Prompt_Security_RedTeam.ipynb +++ b/MyIA.AI.Notebooks/GenAI/Texte/09b_Prompt_Security_RedTeam.ipynb @@ -786,7 +786,7 @@ "\n", "**Limite honnête** : le filtre est **mécaniquement fiable pour le marqueur connu**, mais **fragile** — un attaquant qui contourne le motif (variante de casse, paraphrase, encodage) réintroduit le canal. Le filtre **rattrape**, il ne **prévient** pas, et il n'attrape un marqueur que si le modèle le rend effectivement.\n", "\n", - "La règle de production qui en découle : **défense en profondeur**, jamais un seul mur. La cellule suivante formalise cela en test de non-régression.\n" + "La règle de production qui en découle : **défense en profondeur**, jamais un seul mur. Le tableau ci-dessous agrège les verdicts observés, et la suite de tests red-team, plus bas, formalise cela en test de non-régression.\n" ] }, { diff --git a/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claude-Code/notebooks/01-Claude-CLI-Bases.ipynb b/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claude-Code/notebooks/01-Claude-CLI-Bases.ipynb index a759317933..938d6c005b 100644 --- a/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claude-Code/notebooks/01-Claude-CLI-Bases.ipynb +++ b/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claude-Code/notebooks/01-Claude-CLI-Bases.ipynb @@ -576,7 +576,7 @@ "source": [ "**Lecture.** La réponse JSON est **emballée** par un wrapper Anthropic (`type: result`, `subtype: success`, `session_id`, `total_cost_usd`, `usage`). Le contenu utile est dans `result` -- ici une string qui contient un **bloc markdown JSON** (`\\`json` ... `\\`).\n", "\n", - "**Ce qu'il faut comprendre :** le format `run_claude_json()` ne **parse** pas automatiquement le markdown dans la réponse -- il rend la string `result` telle quelle. Pour récupérer la vraie structure JSON, il faudrait soit demander au modèle de répondre en JSON natif (sans markdown), soit appliquer un `re.search(r'\\[.*\\]', result, re.DOTALL)` côté client. C'est un piège classique documenté dans la cellule suivante." + "**Ce qu'il faut comprendre :** le format `run_claude_json()` ne **parse** pas automatiquement le markdown dans la réponse -- il rend la string `result` telle quelle. Pour récupérer la vraie structure JSON, il faudrait soit demander au modèle de répondre en JSON natif (sans markdown), soit appliquer un `re.search(r'\\[.*\\]', result, re.DOTALL)` côté client. C'est un piège classique documenté plus loin — voir la correction guidée de l'exercice 4, section « Corrections guidées — exercices 4 à 9 »." ] }, { diff --git a/MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/RDF.Net-Legacy/RDF.Net.ipynb b/MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/RDF.Net-Legacy/RDF.Net.ipynb index 81d267bfe9..6c1f246d30 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/RDF.Net-Legacy/RDF.Net.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/RDF.Net-Legacy/RDF.Net.ipynb @@ -8473,7 +8473,7 @@ "\n", "```\n", "\n", - "> **Note** : La cellule suivante necessite un fichier `Ontology.rdf` d'exemple (absent dans le notebook vierge)." + "> **Note** : les démonstrations ci-dessous construisent leur exemple en mémoire — aucun fichier `Ontology.rdf` externe n'est requis ; le bloc XML ci-dessus est purement illustratif." ] }, { diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-05-Abstract-Argumentation-Python.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-05-Abstract-Argumentation-Python.ipynb index c352464fbf..714037f350 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-05-Abstract-Argumentation-Python.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-05-Abstract-Argumentation-Python.ipynb @@ -361,13 +361,13 @@ "\n", "**Illustration sur AF1 (`a1 <-> b1 -> c1`).** Partons de `S = ∅` :\n", "- `F(∅)` = arguments non attaqués du tout = `∅` (chacun de `a1`, `b1`, `c1` est attaqué : `a1` par `b1`, `b1` par `a1`, `c1` par `b1`).\n", - "- On est déjà en point fixe : `F(∅) = ∅`. L'extension grounded vaut donc `{}` — c'est exactement ce que renvoie `SimpleGroundedReasoner().getModel(af1)` dans la cellule suivante. Le conflit symétrique `a1 <-> b1` laisse le raisonneur sceptique incapable de trancher.\n", + "- On est déjà en point fixe : `F(∅) = ∅`. L'extension grounded vaut donc `{}` — c'est exactement ce que renvoie `SimpleGroundedReasoner().getModel(af1)` dans la cellule de code ci-dessous. Le conflit symétrique `a1 <-> b1` laisse le raisonneur sceptique incapable de trancher.\n", "\n", "**Lemme fondamental de Dung (monotonie de l'admissibilité).** Si `S` est admissible et `a` est acceptable vis-à-vis de `S`, alors `S ∪ {a}` reste admissible. En clair : **on peut toujours étendre une position admissible en acceptant un argument qu'elle défend, sans jamais perdre la propriété d'admissibilité**. Ce lemme est le moteur qui garantit :\n", "- l'**existence** d'extensions preferred (on peut grandir tant qu'on reste admissible, jusqu'à un maximal),\n", "- la **convergence** de l'itération de `F` vers le grounded.\n", "\n", - "C'est aussi ce qui explique pourquoi, dans la sortie de la cellule suivante, `{a1}` figure parmi les extensions admissibles d'AF1 : `a1` se défend lui-même contre `b1` (puisque `a1` attaque `b1`), donc accepter `a1` seul est une position défendable — même si elle n'est ni complete (elle ne contient pas tout ce qu'elle défend) ni maximale." + "C'est aussi ce qui explique pourquoi, dans la sortie de la cellule de code ci-dessous, `{a1}` figure parmi les extensions admissibles d'AF1 : `a1` se défend lui-même contre `b1` (puisque `a1` attaque `b1`), donc accepter `a1` seul est une position défendable — même si elle n'est ni complete (elle ne contient pas tout ce qu'elle défend) ni maximale." ], "metadata": {} }, From fa8f911bbb6679538509ba0e34a8e5ff524b39f1 Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 11 Oct 2026 18:24:16 +0200 Subject: [PATCH 2/2] Fix(twin,#8057): rebaseline Tweety-5 Abstract-Argumentation -- edit de prose Python (cellule suivante -> cellule de code ci-dessous, lexique #18053) Le cote Python du jumeau Tweety/IKVM-JPype evolue seul : l'edit est une cure de reference relative (ordre de lecture #18053), pas un changement semantique. Attestation --update au nom de myia-ai-01:CoursIA-2, sans strip ulterieur. Co-Authored-By: Claude Sonnet 5.5 --- .../0017-2026-10-11-myia-ai-01-CoursIA-2.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-5-abstract-argumentation/0017-2026-10-11-myia-ai-01-CoursIA-2.yaml diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-5-abstract-argumentation/0017-2026-10-11-myia-ai-01-CoursIA-2.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-5-abstract-argumentation/0017-2026-10-11-myia-ai-01-CoursIA-2.yaml new file mode 100644 index 0000000000..5f9d66544e --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-5-abstract-argumentation/0017-2026-10-11-myia-ai-01-CoursIA-2.yaml @@ -0,0 +1,6 @@ +date: '2026-10-11' +by: myia-ai-01:CoursIA-2 +python_sha: 714037f350870839fbba973cdb03e37f58e6547a +csharp_sha: 9b3d5cc6969a9d66ca1e5f7e8e16bd4ad70f177f +content_python_sha: 86c263be589e35dfbd3e02cf0dbc49bf65d7c35c25181673f220e5c1977732cd +content_csharp_sha: e2f3c2addc59bf0dcd4aa246ce7dd1ca3b3caa4ce84132ad166f1a4e51984620