From 5e91a6db8a0013646b53766e0e1c6dba6874f477 Mon Sep 17 00:00:00 2001 From: jsboige Date: Wed, 30 Sep 2026 16:17:28 +0200 Subject: [PATCH 01/43] fix(closure-gate): le gabarit rend l'item d'acceptation sous acceptance: render_template posait la ligne d'item apres comments-reviewed. Rempli sur place, le dossier etait refuse (ligne malformee, acceptance vide) : mesure sur #18480 le 2026-09-30. L'item vit maintenant juste sous acceptance:, sans espace de fin. Test : le gabarit rempli tel quel se parse sans erreur (rouge sur main, vert ici). Co-Authored-By: Claude Opus 5 (1M context) --- scripts/check_closure_dossier.py | 11 +++++++++-- scripts/tests/test_check_closure_dossier.py | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/scripts/check_closure_dossier.py b/scripts/check_closure_dossier.py index 2170e95c98..fc1b639f39 100644 --- a/scripts/check_closure_dossier.py +++ b/scripts/check_closure_dossier.py @@ -487,8 +487,15 @@ def render_template(snapshot: dict[str, Any], lane: str) -> str: ("open-prs", str(len(snapshot["open_prs"]))), ("comments-reviewed", str(n_comments)), ) - lines = [START, *(f"{key}: {value}" for key, value in fields)] - lines.append(" - REPLACE_WITH -> ") + lines = [START] + for key, value in fields: + lines.append(f"{key}: {value}".rstrip()) + if key == "acceptance": + # Les items vivent SOUS `acceptance:` : poses apres + # `comments-reviewed`, ils sont lus comme lignes malformees et le + # dossier rempli tel quel est refuse (mesure sur #18480). + lines.append( + " - REPLACE_WITH -> ") lines.append(END) return "\n".join(lines) diff --git a/scripts/tests/test_check_closure_dossier.py b/scripts/tests/test_check_closure_dossier.py index 4d767ae0ee..06af9799a8 100644 --- a/scripts/tests/test_check_closure_dossier.py +++ b/scripts/tests/test_check_closure_dossier.py @@ -386,6 +386,24 @@ def test_template_rend_les_champs_mecaniques(): assert "REPLACE_WITH_CLOSE_OR_KEEP" in out +def test_template_rempli_tel_quel_se_parse(): + """Remplir chaque REPLACE_WITH sur place doit donner un dossier valide : + l'item d'acceptation est rendu sous `acceptance:`, pas apres + `comments-reviewed` (#18480 : le gabarit rempli sur place etait refuse).""" + snap = _snapshot(comments=[_comment("x")]) + out = render_template(snap, "myia-po-2026:CoursIA-3") + filled = (out + .replace("REPLACE_WITH_CLOSE_OR_KEEP", "CLOSE") + .replace("REPLACE_WITH_none_OR_followup_#M_OR_waiver:_", + "none") + .replace("REPLACE_WITH -> ", + "critere du body -> #17901")) + assert "REPLACE" not in filled + dossier, errors = parse_dossier(filled, 0, "jsboige") + assert errors == [] + assert dossier.fields["verdict"] == "CLOSE" + + def test_main_rc_close_0_keep_3_refuse_1_inconnu_2(monkeypatch, capsys): close_snap = _snapshot(comments=[_comment(_dossier_body())]) keep_snap = _snapshot(comments=[ From 977eb66c4a1f2d2ca8bf6792df1ae5777c682563 Mon Sep 17 00:00:00 2001 From: Jean-Sylvain Boige Date: Wed, 30 Sep 2026 16:35:01 +0200 Subject: [PATCH 02/43] =?UTF-8?q?vibe(#17636):=20relay=20c15=20=E2=80=94?= =?UTF-8?q?=20w8=20md=20prose=20(12=20files=20+=2024=20attestations=20KEEP?= =?UTF-8?q?)=20(#18564)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(M10,#17636): resorber les mesures d'artefact en prose -- supprimer '(273 lines)' et '(398 lines)' dans la section Files * fix(m11g,#17636): supprimer la mesure d'artefact en prose (~250 lignes) -- predicat conserve (recette ai-01, verdict GO (a) 30/09) * docs(m16,#17636): resorber les mesures d'artefact en prose (8/8 cellules, 84 lignes de controle) * docs(quick-tour,#17636): resorber les mesures d'artefact en prose (2x '55 notebooks') * docs(alpha-correl,#17636): resorber la mesure d'artefact '38 cells (37 code + 1)' en prose du README.en.md (tri: 1 editee, reste KEEP figure) * docs(quantconnect,#17636): DynamicVIXSpyRegime-QC README.en - supprimer les mesures d'artefact en prose (29/27 cells, 13 executed), predicats conserves * chore(analysis,#17636): resorber les mesures d'artefact en prose du crosscheck deck 02 (5slides) * slides(S4-trading): supprimer mesures d'artefact (~27 notebooks) de la prose, garder predicats * docs(lean-prerequisites,#17636): resorber 2 mesures d'artefact en prose (~950 lignes, lignes 1-80) * docs(claudish,#17636): absorber la mesure d'artefact en prose (1 ligne de config -> prédicat conservé) * absorber mesure artefact prose (438 lignes) - issue #17636 * checkpoint: resorber mesure d'artefact en prose (84 lignes) dans roo_task_sep-8-2025_3-18-45-am.md (issue #17636, recette ai-01 GO(a)) --- .../GameTheory/social_choice_lean/LEAN_PREREQUISITES.md | 4 ++-- .../GenAI/Vibe-Coding/Claudish/docs/Claudish-Proxy.md | 2 +- .../demo-1-planification/roo_task_sep-7-2025_6-40-54-pm.md | 2 +- .../demo-3-communication/roo_task_sep-8-2025_3-18-45-am.md | 2 +- .../ML-Training-Pipeline/docs/M10_REALIZED_GARCH_VOL.md | 4 ++-- .../ML-Training-Pipeline/docs/M11g_FEE_AWARE_KELLY.md | 2 +- .../ML-Training-Pipeline/docs/M16_HAR_ASYMMETRIC.md | 4 ++-- MyIA.AI.Notebooks/QuantConnect/QUICK_TOUR.md | 4 ++-- .../projects/Alpha-Correlation-Analysis/README.en.md | 2 +- .../QuantConnect/projects/DynamicVIXSpyRegime-QC/README.en.md | 4 ++-- .../analysis/crosscheck-exact-5slides-20260419.md | 3 +-- slides/S4-trading-algorithmique/_archive/slides.marp.md | 4 ++-- 12 files changed, 18 insertions(+), 19 deletions(-) diff --git a/MyIA.AI.Notebooks/GameTheory/social_choice_lean/LEAN_PREREQUISITES.md b/MyIA.AI.Notebooks/GameTheory/social_choice_lean/LEAN_PREREQUISITES.md index 55ce4d3be3..2858c91341 100644 --- a/MyIA.AI.Notebooks/GameTheory/social_choice_lean/LEAN_PREREQUISITES.md +++ b/MyIA.AI.Notebooks/GameTheory/social_choice_lean/LEAN_PREREQUISITES.md @@ -112,7 +112,7 @@ La reproduction des preuves de `Basic.lean` n'est pas realiste a ce niveau — l ### Durée totale estimée : 30-38h (lecture + exercices Mathlib) -Pour reproduire les preuves existantes : **45-55h** supplémentaires. Les preuves d'Arrow.lean (~950 lignes) représentent le gros du travail. +Pour reproduire les preuves existantes : **45-55h** supplémentaires. Les preuves d'Arrow.lean représentent le gros du travail. --- @@ -189,7 +189,7 @@ L'ordre `Voting.lean` avant `Arrow.lean` est recommandé car : ## Points d'entrée rapides **Pour lire les énoncés sans reproduire les preuves** : -1. Ouvrir `Basic.lean`, lire les `def` et `structure` (lignes 1-80) +1. Ouvrir `Basic.lean`, lire les `def` et `structure` 2. Ouvrir `Arrow.lean`, lire les definitions de `weak_pareto`, `ind_of_irr_alts`, `is_dictatorship`, puis l'énoncé `arrow_impossibility` 3. Ouvrir `Sen.lean`, lire `is_decisive_over`, `minimal_liberal`, puis l'énoncé `sen_impossibility` diff --git a/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claudish/docs/Claudish-Proxy.md b/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claudish/docs/Claudish-Proxy.md index 2b9c2cf4bb..bdebec7b7a 100644 --- a/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claudish/docs/Claudish-Proxy.md +++ b/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Claudish/docs/Claudish-Proxy.md @@ -136,7 +136,7 @@ Les bots autonomes (Hermes, NanoClaw) parlent parfois un wire non-Anthropic. Dep | Option | Quoi faire | Quand | |--------|------------|-------| -| **Remap de nom (recommandée)** | Le bot envoie un **nom de modèle Claude** (ex. `claude-sonnet-4-6`). Claudish le remappe vers le modèle budgeté du tier (`glm-5.3` via `gc@`) selon le profil actif. **1 ligne de config côté bot, aucun patch de wire.** | Le bot sait juste poster un `model` dans sa requête. | +| **Remap de nom (recommandée)** | Le bot envoie un **nom de modèle Claude** (ex. `claude-sonnet-4-6`). Claudish le remappe vers le modèle budgeté du tier (`glm-5.3` via `gc@`) selon le profil actif. **De la config côté bot, aucun patch de wire.** | Le bot sait juste poster un `model` dans sa requête. | | Wire OpenAI direct | Poster sur `/v1/chat/completions` avec la clé proxy (`Authorization: Bearer` accepté, mesuré 2026-09-09). | Le bot est OpenAI-native et vous voulez la route la plus courte. | | Patch du wire | Faire parler le bot Anthropic natif (messages/tools au format Anthropic). | Le bot a déjà une intégration Anthropic, ou on contrôle son code. | diff --git a/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Roo-Code/Corrections/corriges-ateliers-roo/ateliers-initiaux/02-orchestration-taches/demo-1-planification/roo_task_sep-7-2025_6-40-54-pm.md b/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Roo-Code/Corrections/corriges-ateliers-roo/ateliers-initiaux/02-orchestration-taches/demo-1-planification/roo_task_sep-7-2025_6-40-54-pm.md index 1bdefa71f1..f7d3f4969a 100644 --- a/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Roo-Code/Corrections/corriges-ateliers-roo/ateliers-initiaux/02-orchestration-taches/demo-1-planification/roo_task_sep-7-2025_6-40-54-pm.md +++ b/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Roo-Code/Corrections/corriges-ateliers-roo/ateliers-initiaux/02-orchestration-taches/demo-1-planification/roo_task_sep-7-2025_6-40-54-pm.md @@ -3623,7 +3623,7 @@ Mission accomplie ! J'ai créé un corrigé complet pour l'exercice "demo-1-plan - **Structure exemplaire** : rétroplanning, organisation des équipes, mesures de succès - **Vision long terme** : perspectives d'évolution et prochaines éditions -Le plan de 438 lignes constitue un exemple complet de ce qu'un étudiant devrait produire, avec le niveau de détail et de professionnalisme attendu pour un exercice de planification de tâches avec Roo. +Le plan constitue un exemple complet de ce qu'un étudiant devrait produire, avec le niveau de détail et de professionnalisme attendu pour un exercice de planification de tâches avec Roo. diff --git a/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Roo-Code/Corrections/corriges-ateliers-roo/ateliers-initiaux/03-assistant-pro/demo-3-communication/roo_task_sep-8-2025_3-18-45-am.md b/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Roo-Code/Corrections/corriges-ateliers-roo/ateliers-initiaux/03-assistant-pro/demo-3-communication/roo_task_sep-8-2025_3-18-45-am.md index 3c4453eda0..535376049b 100644 --- a/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Roo-Code/Corrections/corriges-ateliers-roo/ateliers-initiaux/03-assistant-pro/demo-3-communication/roo_task_sep-8-2025_3-18-45-am.md +++ b/MyIA.AI.Notebooks/GenAI/Vibe-Coding/Roo-Code/Corrections/corriges-ateliers-roo/ateliers-initiaux/03-assistant-pro/demo-3-communication/roo_task_sep-8-2025_3-18-45-am.md @@ -938,7 +938,7 @@ L'email professionnel rédigé illustre parfaitement les bonnes pratiques de com 5. **Application des modèles** : Respect strict du modèle d'email d'annonce fourni dans les ressources 6. **Bonnes pratiques respectées** : Clarté, concision, adaptation à l'audience, professionnalisme -L'email de 84 lignes constitue un exemple parfait de communication managériale efficace, alliant information complète, rassurance et accompagnement au changement. +L'email constitue un exemple parfait de communication managériale efficace, alliant information complète, rassurance et accompagnement au changement. diff --git a/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M10_REALIZED_GARCH_VOL.md b/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M10_REALIZED_GARCH_VOL.md index 12e5be5e79..77536ec1f3 100644 --- a/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M10_REALIZED_GARCH_VOL.md +++ b/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M10_REALIZED_GARCH_VOL.md @@ -98,6 +98,6 @@ The M10 proposal expected 5-15% MSE improvement based on Hansen et al. (2012) eq ## Files -- `scripts/realized_garch.py`: Core M10 model (273 lines) -- `scripts/train_realized_garch.py`: Walk-forward training pipeline (398 lines) +- `scripts/realized_garch.py`: Core M10 model +- `scripts/train_realized_garch.py`: Walk-forward training pipeline - `scripts/results/m10_realized_garch_full.json`: Full 84-combo results diff --git a/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M11g_FEE_AWARE_KELLY.md b/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M11g_FEE_AWARE_KELLY.md index 416692ca00..b66b4eafc3 100644 --- a/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M11g_FEE_AWARE_KELLY.md +++ b/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M11g_FEE_AWARE_KELLY.md @@ -88,7 +88,7 @@ non clippée, par exemple), pas sur Kelly capé. ## Fichiers - Verdict (this) : `MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M11g_FEE_AWARE_KELLY.md` -- Script : `scripts/m11g_fee_aware_kelly.py` (~250 lignes, réutilise LW2008 de m11c) +- Script : `scripts/m11g_fee_aware_kelly.py` (réutilise LW2008 de m11c) - Results : `results/m11g_fee_aware_kelly/results.{csv,json}` (525 rows) ## Cross-references diff --git a/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M16_HAR_ASYMMETRIC.md b/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M16_HAR_ASYMMETRIC.md index d370c6b318..845da4e560 100644 --- a/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M16_HAR_ASYMMETRIC.md +++ b/MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/docs/M16_HAR_ASYMMETRIC.md @@ -137,7 +137,7 @@ Le sweep historique comparait les MSE de deux prévisionneurs dont les biais OOS Les biais résiduels sont proches de zéro (`biais² ≤ 2,6e-5`) : l'écart restant porte essentiellement sur la variance des erreurs. Le résultat brut était gonflé, surtout aux horizons longs (+23,6 %/+36,7 % → +3,4 %/+5,1 %), mais le signal ne disparaît pas. **Verdict BTC révisé : 2/3 BEATS, 1/3 INCONCLUSIVE, 0/3 NO BEATS.** M16 reste un keeper BTC moyen/long horizon ; h=1 est retiré du claim. Le verdict cluster historique reste `NO BEATS`. -L'OLS est déterministe : les quatre seeds sont bit-identiques et servent de contrôle de reproductibilité. `edge/σ` cross-seed est donc non applicable, pas artificiellement infini. Le notebook `m3_har_asymmetric_semivariance.ipynb` recalcule les MSE depuis les prévisions persistées et porte 8/8 cellules code exécutées. +L'OLS est déterministe : les quatre seeds sont bit-identiques et servent de contrôle de reproductibilité. `edge/σ` cross-seed est donc non applicable, pas artificiellement infini. Le notebook `m3_har_asymmetric_semivariance.ipynb` recalcule les MSE depuis les prévisions persistées. ```bash python scripts/har_asymmetric.py \ @@ -199,7 +199,7 @@ Le test principal réduit d'abord les trois horizons à un verdict par actif, pu Ces fenêtres hétérogènes interdisent d'interpréter les écarts entre actifs comme un panel temporel homogène. Pour `h ≥ 2`, la récursion partage chaque RV future prévue à 50/50 entre RV+ et RV−. Cette fermeture est une convention fixe, non un paramètre appris ; elle est conservée pour la comparabilité avec M16 historique, mais limite l'interprétation des résultats h=5 et h=10. -L'artefact `scripts/results/m16_har_asymmetric_debiased_7asset.json` contient 84 lignes de contrôle, 21 agrégats actif×horizon, les cinq folds des deux modèles, les biais signés, les prédictions et cibles OOS alignées, le manifeste des sources et le verdict cluster. Le notebook historique reste inchangé : cette revalidation est produite par le script, sans édition manuelle de sortie de cellule. +L'artefact `scripts/results/m16_har_asymmetric_debiased_7asset.json` contient 21 agrégats actif×horizon, les cinq folds des deux modèles, les biais signés, les prédictions et cibles OOS alignées, le manifeste des sources et le verdict cluster. Le notebook historique reste inchangé : cette revalidation est produite par le script, sans édition manuelle de sortie de cellule. ## References diff --git a/MyIA.AI.Notebooks/QuantConnect/QUICK_TOUR.md b/MyIA.AI.Notebooks/QuantConnect/QUICK_TOUR.md index f5bfe34331..afa187e548 100644 --- a/MyIA.AI.Notebooks/QuantConnect/QUICK_TOUR.md +++ b/MyIA.AI.Notebooks/QuantConnect/QUICK_TOUR.md @@ -1,6 +1,6 @@ # QuantConnect AI Trading - Quick Tour -**116 stratégies backtestées (projects/) | 55 notebooks Python (Python/) | 20 patterns confirmés | Composite robuste (TrendWeather Sharpe aligné 0.948)** +**116 stratégies backtestées (projects/) | notebooks Python (Python/) | 20 patterns confirmés | Composite robuste (TrendWeather Sharpe aligné 0.948)** Cette section contient un parcours complet de trading algorithmique sur **QuantConnect LEAN**, du débutant au déploiement live. Tout est exécutable gratuitement sur le cloud QC. @@ -14,7 +14,7 @@ Cette section contient un parcours complet de trading algorithmique sur **QuantC 3. **[Patterns confirmés](../../docs/qc/quantconnect.md)** — 20 patterns valides sur 30+ iterations (risk-adjusted momentum, skip-month, stop-loss -8/-12%, monthly rebalancing, anti-overfitting) et 10 anti-patterns critiques (SPY Parking, backtests courts, yfinance != QC cloud). -4. **[Notebooks pédagogiques](Python/)** — 55 notebooks en 8 phases progressives (cf. classification 4-types par modalité d'exécution dans [`Python/README.md`](Python/README.md) — quantbook QC Cloud / research companion / standalone local / placeholder pédagogique) : fondations LEAN, universe/asset classes, risk management, Algorithm Framework, données alternatives, ML (RF/XGBoost), deep learning (LSTM/Transformers), RL et LLMs pour trading. +4. **[Notebooks pédagogiques](Python/)** — notebooks en 8 phases progressives (cf. classification 4-types par modalité d'exécution dans [`Python/README.md`](Python/README.md) — quantbook QC Cloud / research companion / standalone local / placeholder pédagogique) : fondations LEAN, universe/asset classes, risk management, Algorithm Framework, données alternatives, ML (RF/XGBoost), deep learning (LSTM/Transformers), RL et LLMs pour trading. 5. **[Mapping livre Jared Broad](BOOK_MAPPING.md)** — 63 exemples du livre *Hands-On AI Trading* (2025) mappés à nos notebooks et projets. 22 stratégies ML du Chapitre 6 importées. diff --git a/MyIA.AI.Notebooks/QuantConnect/projects/Alpha-Correlation-Analysis/README.en.md b/MyIA.AI.Notebooks/QuantConnect/projects/Alpha-Correlation-Analysis/README.en.md index 6f2fd7d061..dc0ca0f6c1 100644 --- a/MyIA.AI.Notebooks/QuantConnect/projects/Alpha-Correlation-Analysis/README.en.md +++ b/MyIA.AI.Notebooks/QuantConnect/projects/Alpha-Correlation-Analysis/README.en.md @@ -124,7 +124,7 @@ jupyter nbconvert --execute "MyIA.AI.Notebooks/QuantConnect/projects/Alpha-Corre ## Files -- `quantbook.ipynb` — 38 cells (37 code + 1 original markdown). **Single source of truth** for the figures. Outputs cell[22]/[28]/[34]/[36] preserved. Disclaimer #8772 in cell[2]. +- `quantbook.ipynb` — **Single source of truth** for the figures. Outputs cell[22]/[28]/[34]/[36] preserved. Disclaimer #8772 in cell[2]. - `README.md` — Overview + multi-source + honest reading (c.1285 fix). - `README.en.md` (this file) — English sibling sync. diff --git a/MyIA.AI.Notebooks/QuantConnect/projects/DynamicVIXSpyRegime-QC/README.en.md b/MyIA.AI.Notebooks/QuantConnect/projects/DynamicVIXSpyRegime-QC/README.en.md index e1f5b5ab16..c7504eb7a9 100644 --- a/MyIA.AI.Notebooks/QuantConnect/projects/DynamicVIXSpyRegime-QC/README.en.md +++ b/MyIA.AI.Notebooks/QuantConnect/projects/DynamicVIXSpyRegime-QC/README.en.md @@ -25,8 +25,8 @@ QC Strategy Library #50 clone (Dynamic VIX-SPY Regime Switching by Ahmet Kasti). - **`research.ipynb`** reproduces the ML+VIX logic on a **full 10-year window (2015-2025)** including the 2022 bear (LUNA/FTX), which mechanically degrades Sharpe (more trading days = more variance). The local baseline (0.97) **outperforms** SPY Buy & Hold (0.536) by **+80%** in Sharpe — the strategy's edge is reproducible, but the **1.72 figure is not reproducible locally**. **Why this PR does not touch `research.ipynb` or `main.py`**: -- `research.ipynb`: 29 cells, 13 executed (`execution_count: 1..13`), consistent outputs, 0 errors. This is the **pedagogical reference** for local reproduction. cell[9] output = `Sharpe 0.97, CAGR 23.83%, MaxDD -22.09%` confirmed by Papermill re-run. -- `research_output.ipynb`: 27 cells, 13 executed, consistent outputs with `research.ipynb` (same baseline 0.97 and best 1.023). +- `research.ipynb`: (`execution_count: 1..13`), consistent outputs, 0 errors. This is the **pedagogical reference** for local reproduction. cell[9] output = `Sharpe 0.97, CAGR 23.83%, MaxDD -22.09%` confirmed by Papermill re-run. +- `research_output.ipynb`: consistent outputs with `research.ipynb` (same baseline 0.97 and best 1.023). - `main.py`: docstring explicitly contains the library reference `# OOS 1Y Sharpe 1.72, 5Y CAGR 29.76%` + URL `https://www.quantconnect.com/strategies/50` — the source is traceable, it was the README that omitted this distinction. **For the strategy as locally deployable**: `research.ipynb` is the reference. Sharpe 1.72 remains the **library claim** (to be validated before any live trading pass). diff --git a/slides/02-resolution-problemes/analysis/crosscheck-exact-5slides-20260419.md b/slides/02-resolution-problemes/analysis/crosscheck-exact-5slides-20260419.md index 441b40de00..6e7783b222 100644 --- a/slides/02-resolution-problemes/analysis/crosscheck-exact-5slides-20260419.md +++ b/slides/02-resolution-problemes/analysis/crosscheck-exact-5slides-20260419.md @@ -20,10 +20,9 @@ Methode: sk-agent vision (glm-4.6v) sur PPTX references + extraction Slidev mark **PPTX (slide 48):** - Pseudocode complet ALGORITHME-GENETIQUE (boucle population, SELECTION-ALEATOIRE, REPRODUIRE, MUTATION) - Fonction REPRODUIRE(x,y) detaillee avec LONGUEUR, SOUS-CHAINE -- ~15 lignes de code **Slidev (slide 52):** -- Pseudocode condense en 1 ligne: `algorithme genetique (selection, reproduction, mutation, retour meilleur individu)` +- Pseudocode condense: `algorithme genetique (selection, reproduction, mutation, retour meilleur individu)` - Concepts cles (population, genes, phenotype, fitness) preserves - Fonction REPRODUIRE absente diff --git a/slides/S4-trading-algorithmique/_archive/slides.marp.md b/slides/S4-trading-algorithmique/_archive/slides.marp.md index 60996128e0..51764dbaf7 100644 --- a/slides/S4-trading-algorithmique/_archive/slides.marp.md +++ b/slides/S4-trading-algorithmique/_archive/slides.marp.md @@ -1857,7 +1857,7 @@ Documentation officielle QuantConnect # Pour aller plus loin : Notebooks -**Notebooks QuantConnect (~27 notebooks disponibles)** +**Notebooks QuantConnect disponibles** - Strategies de base: `QuantConnect/BasicTemplateAlgorithm.ipynb` - Moyennes mobiles: `QuantConnect/MovingAverageCrossover.ipynb` - RSI Strategy: `QuantConnect/RSIStrategy.ipynb` @@ -1880,5 +1880,5 @@ Documentation officielle QuantConnect Jean-Sylvain Boige jsboige@myia.org -> **Notebooks associes:** `QuantConnect/` (~27 notebooks) +> **Notebooks associes:** `QuantConnect/` > Strategies de trading, backtesting, optimisation, machine learning From 932550ddd9d1c32b1cb6721428a48fd84ce3b4e4 Mon Sep 17 00:00:00 2001 From: Jean-Sylvain Boige Date: Wed, 30 Sep 2026 18:57:02 +0200 Subject: [PATCH 03/43] Add: EPIC reconnue par label OU prefix titre [EPIC] dans le sweep delaissement (#18203 geste 2) (#18593) Avant : list_open_epics ne lisait que le label EPIC -- une EPIC titree [EPIC] x sans label etait invisible du balayage quotidien. Le predicat pur is_epic (label OU prefix, case-insensitive) sert de filtre ; 8 nouveaux controles unitaires + 4 controles self-test, rouges sur main (is_epic absent) et verts sur branche. See #18203 Co-authored-by: Claude Sonnet 4.6 (1M context) --- scripts/epic_neglect_sweep.py | 36 +++++++++++++++---- scripts/tests/test_epic_neglect_sweep.py | 45 ++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/scripts/epic_neglect_sweep.py b/scripts/epic_neglect_sweep.py index 6b69474f73..229f02508c 100644 --- a/scripts/epic_neglect_sweep.py +++ b/scripts/epic_neglect_sweep.py @@ -26,7 +26,8 @@ What it measures ---------------- -For each OPEN issue labeled `EPIC`: days since `updatedAt` (`inact`) and the +For each OPEN issue recognized as an EPIC -- label `EPIC` OR title prefix +`[EPIC]` (#18203): days since `updatedAt` (`inact`) and the number of MERGED PRs citing `#N` (title or body) within the window of the last `--merged-limit` merged PRs. The window is the REAL span of that fetch (min..max mergedAt) and is WRITTEN in the report -- a ranking without a @@ -262,16 +263,30 @@ def _repo_default() -> str: return out or "jsboige/CoursIA" +EPIC_TITLE_PREFIX = "[EPIC]" + + +def is_epic(d: dict) -> bool: + """Pure recognition predicate: label `EPIC` OR title prefix `[EPIC]` (#18203). + + The two conventions coexist on this repo: most EPICs carry the label, some + only carry the title prefix. A sweep that reads one channel misses the + other half -- so recognition is label-OR-title. Prefix (not substring): a + plain issue mentioning "[EPIC]" mid-title is not an EPIC. Case-insensitive + to match the label's own tolerance. + """ + if any(lb.get("name") == EPIC_LABEL for lb in (d.get("labels") or [])): + return True + title = (d.get("title") or "").strip().upper() + return title.startswith(EPIC_TITLE_PREFIX) + + def list_open_epics(repo: str) -> list[Epic]: raw = _gh_json([ "issue", "list", "--repo", repo, "--state", "open", "--limit", "400", "--json", "number,title,createdAt,updatedAt,labels", ]) or [] - return [ - Epic.from_gh_dict(d) - for d in raw - if any(lb.get("name") == EPIC_LABEL for lb in (d.get("labels") or [])) - ] + return [Epic.from_gh_dict(d) for d in raw if is_epic(d)] def list_recent_merged_prs(repo: str, limit: int) -> list[MergedPr]: @@ -381,6 +396,15 @@ def check(name: str, ok: bool) -> None: # Citation parser. check("citation parser reads title+body", MergedPr(1, "x #12", "See #34", now).cited_issues() == {12, 34}) + # EPIC recognition: label OR title prefix (#18203). + check("epic recognized by label", + is_epic({"title": "x", "labels": [{"name": "EPIC"}]})) + check("epic recognized by title prefix without label", + is_epic({"title": "[EPIC] Tirage des grains", "labels": []})) + check("plain issue not an epic", + not is_epic({"title": "Bug report", "labels": []})) + check("mid-title mention not an epic", + not is_epic({"title": "Note about [EPIC] conventions", "labels": []})) if failures: print(f"SELF-TEST FAILED ({len(failures)} control(s)): {failures}") diff --git a/scripts/tests/test_epic_neglect_sweep.py b/scripts/tests/test_epic_neglect_sweep.py index 94167590a4..f0c3f42320 100644 --- a/scripts/tests/test_epic_neglect_sweep.py +++ b/scripts/tests/test_epic_neglect_sweep.py @@ -178,5 +178,50 @@ def test_parse_iso_handles_z(self): self.assertIsNotNone(d.tzinfo) +class TestEpicRecognition(unittest.TestCase): + """#18203 geste 2: an EPIC is recognized by label OR title prefix. + + On `main`, recognition reads the label only, so an EPIC titled `[EPIC] x` + without the label is invisible to the sweep -- it can fall behind with no + report ever naming it. These controls fail on `main` (`is_epic` does not + exist there) and pass on this branch. + """ + + def test_label_recognized(self): + self.assertTrue(_mod.is_epic( + {"title": "Tirage des grains", "labels": [{"name": "EPIC"}]})) + + def test_title_prefix_recognized_without_label(self): + self.assertTrue(_mod.is_epic( + {"title": "[EPIC] Tirage des grains", "labels": []})) + + def test_title_prefix_case_insensitive(self): + self.assertTrue(_mod.is_epic( + {"title": "[epic] lowercase prefix", "labels": []})) + + def test_title_prefix_after_leading_space(self): + self.assertTrue(_mod.is_epic( + {"title": " [EPIC] padded prefix", "labels": []})) + + def test_plain_issue_not_epic(self): + self.assertFalse(_mod.is_epic( + {"title": "Bug report", "labels": [{"name": "bug"}]})) + + def test_mid_title_mention_not_epic(self): + """Prefix, not substring: a note MENTIONING [EPIC] is not one.""" + self.assertFalse(_mod.is_epic( + {"title": "Note about [EPIC] conventions", "labels": []})) + + def test_no_title_no_labels_not_epic(self): + self.assertFalse(_mod.is_epic({"title": None, "labels": None})) + + def test_both_channels_coexist_dedup(self): + """Label AND prefix on the same issue: still one EPIC (bool predicate, + no double count -- the dedup happens because recognition is a filter + over the issue list, not a union of two lists).""" + d = {"title": "[EPIC] double convention", "labels": [{"name": "EPIC"}]} + self.assertTrue(_mod.is_epic(d)) + + if __name__ == "__main__": unittest.main() From 8858fb07b0ce646c724daed5f740ded5c7ec969b Mon Sep 17 00:00:00 2001 From: Jean-Sylvain Boige Date: Wed, 30 Sep 2026 19:17:13 +0200 Subject: [PATCH 04/43] =?UTF-8?q?vibe(#17636):=20relay=20c19=20=E2=80=94?= =?UTF-8?q?=20w8=20md=20prose=20docs=20(5=20files=20incl.=202=20rescued=20?= =?UTF-8?q?refusals)=20(#18591)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(prose,#17636): dotnet-plotly-zero-restore -- absorber les mesures d'artefact du rollout (5 non converti + 3 partiel) (cherry picked from commit 108847700b8e10f88b854bc21f58e7cd5d6280b1) * prose(#17636): w8-277 readme-series-gabarit -- resorber les mesures d'artefact md-prose (L67, L86) (cherry picked from commit f9db8a43da652e6fbba1aa0eb1d78f095260521a) * docs(archive,#17636): ecosystem-readme -- resorber 3 mesures d'artefact en prose (N notebooks) (cherry picked from commit 559554455323a32e63a92164da0e90c1440ecda3) * fix(prose,#17636): qc-strategies-status archive -- resorption mesure artefact (830 lignes, 137 KB) du canonique vivant, 11 occurrences KEEP justifiees (cherry picked from commit c6b830895de3eb65a9fecd2e0ad9bf153ba18050) * fix(prose,#17636): curriculum/_inventory.md -- resorption md-prose de 2 mesures d'artefact (~400 lignes L64, ~150 lignes L120) ; 5 KEEP justifies (cherry picked from commit c9cb2068b23d804799631212fa78d03cd6b15bcc) --- docs/archive/genai/ecosystem-readme.md | 6 +++--- docs/archive/qc-strategies-status.md | 4 ++-- docs/curriculum/_inventory.md | 6 +++--- docs/reference/dotnet-plotly-zero-restore.md | 2 +- docs/reference/readme-series-gabarit.md | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/archive/genai/ecosystem-readme.md b/docs/archive/genai/ecosystem-readme.md index 1745b48404..efc87efad6 100644 --- a/docs/archive/genai/ecosystem-readme.md +++ b/docs/archive/genai/ecosystem-readme.md @@ -89,9 +89,9 @@ Bienvenue dans l'**Écosystème GenAI Images CoursIA** - une plateforme complèt ### ⏱️ Durées Estimées -- **🟢 Niveau Foundation** : 2-3 heures (4 notebooks) -- **🟠 Niveau Advanced** : 4-5 heures (3 notebooks) -- **🔴 Niveau Expert** : 6-8 heures (7 notebooks) +- **🟢 Niveau Foundation** : 2-3 heures +- **🟠 Niveau Advanced** : 4-5 heures +- **🔴 Niveau Expert** : 6-8 heures **Total : ~15 heures** de formation complète GenAI Images diff --git a/docs/archive/qc-strategies-status.md b/docs/archive/qc-strategies-status.md index 8437dbc27a..3e016f42ef 100644 --- a/docs/archive/qc-strategies-status.md +++ b/docs/archive/qc-strategies-status.md @@ -1,4 +1,4 @@ -> **ARCHIVED 2026-07-22** — c.728y+46 docs-hygiene triage #7422 (`docs/archive/` racine, 1 fichier). Snapshot T22.12 du 2026-05-28 (issue #1628) = classification 4-types (a/b/c/d) + inventaire exhaustif `MyIA.AI.Notebooks/QuantConnect/` (~192 notebooks, 95 projets) consolidé cycle 91 depuis issue #29. **Verdict KEEP-AS-ARCHIVE (SUPERSEDED)** : **15+ inbound refs actifs** depuis `docs/qc/qc-strategies-status.md` (canonique vivant, 830 lignes, 137 KB, alimenté quotidiennement par catalog-cron + tr.1-23) **ET** depuis 4 stale cross-refs vers l'archive (à dispatcher c.728y+48 ref-quality, hors scope c.187) : `MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/README.md:67`+`README.en.md:16` (2×) + `Python/README.md:24`+`:28` (2×) — devraient pointer vers `docs/qc/qc-strategies-status.md` canonique. Snapshot préservé pour traçabilité historique (cycles 5, 91, dedup 50 projets audit #1627) ; SUPERSEDED-BY canonique = `docs/qc/qc-strategies-status.md` (single source of truth pour les classifications de stratégies QuantConnect). Source triage : issuecomment à venir (#7422). +> **ARCHIVED 2026-07-22** — c.728y+46 docs-hygiene triage #7422 (`docs/archive/` racine). Snapshot T22.12 du 2026-05-28 (issue #1628) = classification 4-types (a/b/c/d) + inventaire exhaustif `MyIA.AI.Notebooks/QuantConnect/` consolidé cycle 91 depuis issue #29. **Verdict KEEP-AS-ARCHIVE (SUPERSEDED)** : **15+ inbound refs actifs** depuis `docs/qc/qc-strategies-status.md` (canonique vivant, alimenté quotidiennement par catalog-cron + tr.1-23) **ET** depuis 4 stale cross-refs vers l'archive (à dispatcher c.728y+48 ref-quality, hors scope c.187) : `MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/README.md:67`+`README.en.md:16` (2×) + `Python/README.md:24`+`:28` (2×) — devraient pointer vers `docs/qc/qc-strategies-status.md` canonique. Snapshot préservé pour traçabilité historique (cycles 5, 91, dedup 50 projets audit #1627) ; SUPERSEDED-BY canonique = `docs/qc/qc-strategies-status.md` (single source of truth pour les classifications de stratégies QuantConnect). Source triage : issuecomment à venir (#7422). # QC Strategies & Notebooks — Unified Status @@ -227,5 +227,5 @@ Full classification table in [Python/README.md](../MyIA.AI.Notebooks/QuantConnec ## Actions Taken - **Cycle 5 (2026-05-07)**: Initial classification from issue #29 — 34 strategies, 5 categories (BROKEN_PEDAGOGICAL, BROKEN_TO_FIX, NEEDS_IMPROVEMENT, HEALTHY, NO_BACKTEST) -- **Cycle 91 (2026-05-28)**: Full refonte — 4-type classification (a/b/c/d) covering ~192 notebooks across 7 directories, merged with 95-project performance data from projects/README.md +- **Cycle 91 (2026-05-28)**: Full refonte — 4-type classification (a/b/c/d) covering the notebook corpus across 7 directories, merged with 95-project performance data from projects/README.md - **2026-05-29 (po-2023, #1627)**: Dedup audit — 50 projects scanned across 9 families (EMA-Cross, DualMomentum, BTC, ML-*, Crypto, Vol-*, Pairs, Cloud-*, HAR-RV). 4 archived (BTC-MACD-ADX misleading name, ML-Pairs-PCA-Selection no main.py, Cloud-DualMomentum-NoTLT duplicate, Simple-Equity-EMA-Crossing minimal). 1 dead code removed (EMA-Cross-Stocks/alpha_model.py). 7 README fixed. 0 duplicates remaining. diff --git a/docs/curriculum/_inventory.md b/docs/curriculum/_inventory.md index a9cb0960ca..5d9a9d8816 100644 --- a/docs/curriculum/_inventory.md +++ b/docs/curriculum/_inventory.md @@ -16,7 +16,7 @@ **Date** : 2026-08-31 (premier balayage) · 2026-09-02 (complément). **Complément du 2026-09-02** : l'entrée #8 citait `SymbolicAI/Lean/social_choice_lean/`, chemin absent de `main` — le lake vit sous `GameTheory/`. Un second balayage a par ailleurs relevé six fichiers manquants : trois embryons réels (#35-37) et trois faux positifs du motif, inscrits `DROP` (#38-40) pour ne pas être re-investigués. **Source** : `Grep "^## \s*(Parcours|parcours|Phase)" MyIA.AI.Notebooks/**/*.md` + lecture ciblée des 17 fichiers les plus structurants. -**Livré via** : `docs/curriculum/_inventory.md` (portée : 1 fichier nouveau, **< 200 lignes**). +**Livré via** : `docs/curriculum/_inventory.md` (portée : fichier nouveau, taille bornée). **But** : cet inventaire **ne modifie aucun fichier de parcours existant**. Il les classe. La promotion effective (`genai-rush.md`, `symbolic-formalization.md`, `aima-walk.md`, etc.) appartient aux phases 2+ de l'EPIC #13844. @@ -61,7 +61,7 @@ | 26 | `MyIA.AI.Notebooks/GenAI/RAG-et-Memoire-Semantique/README.md` L61 + L226 | Apprenant RAG / Kernel Memory | Variable | « Parcours de lecture par niveau » tabulaire (Débutant+ / Intermédiaire / Avancé / Pratique) | **RELOCATE** — table « niveau » la plus propre du dépôt, modèle à exporter | | 27 | `MyIA.AI.Notebooks/GenAI/SemanticKernel/README.md` L91 | Apprenant Semantic Kernel | Variable | « Parcours recommandé » | **INTEGRATE** — branche du GenAI rush | | 28 | `MyIA.AI.Notebooks/GenAI/Vibe-Coding/docs/ROO-GUIDED-PATH.md` | Apprenant Roo Code (tutor agent intégré) | Variable | « Parcours progressif » lié à un outil spécifique | **ARCHIVE** — chemin agent-tutor, hors syllabus général | -| 29 | `MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/.../livresagites-parcours.md` | Cas d'usage industriel WordPress + LLM | 5 parcours numérotés (0-4) | Monolithique ~400 lignes | **INTEGRATE** — modèle « N parcours numérotés » pour un cas d'usage ; à ne pas intégrer tel quel (trop long), à scinder | +| 29 | `MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/.../livresagites-parcours.md` | Cas d'usage industriel WordPress + LLM | 5 parcours numérotés (0-4) | Monolithique | **INTEGRATE** — modèle « N parcours numérotés » pour un cas d'usage ; à ne pas intégrer tel quel (trop long), à scinder | | 30 | `MyIA.AI.Notebooks/RL/README.md` L75-99 | Apprenant reinforcement learning | Variable | « Parcours d'apprentissage » | **INTEGRATE** — branche GenAI rush / ML | | 31 | `MyIA.AI.Notebooks/Sudoku/README.md` L40-80 + L475-496 | Débutant → Avancé IA symbolique | Débutant / Intermédiaire / Avancé + parcours C#/Python complets | « Parcours par niveau » + parcours complets par langage | **ARCHIVE** — série isolée (standalone), sans lien narratif transverse | | 32 | `MyIA.AI.Notebooks/SymbolicAI/SmartContracts/0X-*/README.md` (6 sous-séries) | Idem 14 | Idem 14 | Sous-parcours par phase (0X-Foundations → 06-Real-World) | **INTEGRATE** — granularité plus fine que le README parent | @@ -117,7 +117,7 @@ serve de référence à l'EPIC #13844. |---|---| | Un seul fichier `_inventory.md` créé | ✅ | | Aucun fichier existant modifié | ✅ | -| < 200 lignes diff (cible PR atomique) | ✅ (~150 lignes) | +| diff borné (cible PR atomique) | ✅ | | 30+ embryons identifiés | ✅ | | Chaque embryon cité avec source `path:LN` | ✅ | | Statut proposé (RELOCATE / INTEGRATE / ARCHIVE / DROP) | ✅ | diff --git a/docs/reference/dotnet-plotly-zero-restore.md b/docs/reference/dotnet-plotly-zero-restore.md index 777d3e610f..4b3682bb54 100644 --- a/docs/reference/dotnet-plotly-zero-restore.md +++ b/docs/reference/dotnet-plotly-zero-restore.md @@ -111,7 +111,7 @@ Le pointeur `MGS-10 cell[8]`, lui, est devenu **exact** entre-temps, mais par ac | **Partiel** (SVG inline **et** cellules CDN résiduelles) | `GameTheory-03-Topology2x2-CSharp`, `Infer-17-Kalman-Filter`, `Sudoku-18-Comparison-Csharp` | | **Non converti** (CDN seul → blanc en statique) | `Infer-11-Topic-Models`, `Infer-12-Modeles-Hierarchiques`, `DecInfer-06-Value-Information`, `DecInfer-07-Expert-Systems`, `DecInfer-08-Sequential` | -Mesure reproductible : source de cellule de code contenant `PlotSvg` / `cdn.plot.ly` / `PlotlyHtml`, sur `git ls-files "*.ipynb"`. Les 5 « non converti » + 3 « partiel » sont le reste du rollout #6927 sous l'EPIC #3801. +Mesure reproductible : source de cellule de code contenant `PlotSvg` / `cdn.plot.ly` / `PlotlyHtml`, sur `git ls-files "*.ipynb"`. Les « non converti » + « partiel » sont le reste du rollout #6927 sous l'EPIC #3801. ## Refactor possible (memo) diff --git a/docs/reference/readme-series-gabarit.md b/docs/reference/readme-series-gabarit.md index 0277ea464d..1ffb3f7558 100644 --- a/docs/reference/readme-series-gabarit.md +++ b/docs/reference/readme-series-gabarit.md @@ -64,7 +64,7 @@ References academiques avec couverture par notebook + bibliotheques + formalisat 1. **Decompte avant le pourquoi** -- bandeau de chiffres en gras en ouverture (`GenAI/README.md:12`). Les chiffres font foi dans `COURSE_CATALOG.generated.md` ; le README ouvre sur la pedagogie. 2. **Duplication parent/enfant quasi-verbatim** -- ex. « l'audio, parent pauvre » present dans `GenAI/README.md:58` ET `GenAI/Audio/README.md:12`. Regle : le parent resume en un paragraphe + lien ; le detail appartient a l'enfant. 3. **Ponts copies-colles** -- bloc « Cross-series bridges » au format identique dans 9 READMEs sur 12, connexions generiques d'une ligne (`ML/README.md:264-269`). Cf. format section 9. -4. **FAQ hypertrophiees** -- souvent le plus gros bloc du fichier (`Sudoku/README.md:606-668` : 63 lignes ; `GameTheory/README.md:354-420` : 67 lignes). Borner a ~6 questions ; le surplus remonte dans l'intro ou part en doc dediee. +4. **FAQ hypertrophiees** -- souvent le plus gros bloc du fichier (`Sudoku/README.md:606-668` ; `GameTheory/README.md:354-420`). Borner a ~6 questions ; le surplus remonte dans l'intro ou part en doc dediee. 5. **Navigation absente** -- generaliser la barre de `GenAI/Image/README.md:3` (cf. section 2). ## Regles de redaction (heritees de la passe Partie 1) @@ -83,5 +83,5 @@ Les blocs CATALOG-STATUS et `COURSE_CATALOG.generated.*` sont **bot-owned** : ja - **1 livrable par PR** : une serie, ou un petit lot coherent de 4-6 sous-series. Pas de composite. - **Conserver les specificites legitimes** de chaque serie (miroirs C#/Python, phases, sous-series) : le gabarit normalise la structure, pas le contenu. -- **Cibles prioritaires (bimodalite niveau 2)** : remonter les stubs (`GenAI/CaseStudies` 61 lignes, `QuantConnect/projects` 86, `Search/Part1` 111) vers le gabarit ; reequilibrer les tres longs (`Probas/Infer` 1069 lignes) sans perte de contenu réel. +- **Cibles prioritaires (bimodalite niveau 2)** : remonter les stubs (`GenAI/CaseStudies`, `QuantConnect/projects`, `Search/Part1`) vers le gabarit ; reequilibrer les tres longs (`Probas/Infer`) sans perte de contenu réel. - **Enrichissement** : rapprocher chaque entrée de table du contenu réel du notebook (ce qu'il demontre, point cle), pour prolonger les intros du README principal. From 28aa5196c2d5195351c8f59b0779195b1364102f Mon Sep 17 00:00:00 2001 From: Jean-Sylvain Boige Date: Wed, 30 Sep 2026 19:53:28 +0200 Subject: [PATCH 05/43] Fix(Tweety): 5 notebooks C# sous Linux et macOS, RID IKVM derive de la machine (lot B2) (#18514) Tweety-06, 07a, 07b, 08 et 09 en C# codaient le RID win-x64 en dur dans leur configuration IKVM. Le RID est desormais derive de OperatingSystem et RuntimeInformation.ProcessArchitecture, comme dans les lots A et B1 ; la ligne #r IKVM.Image.runtime.win-x64, redondante avec IKVM.Image, est retiree. Tweety-09 C# affiche le chemin de la DLL relativement au dossier du notebook, pour que la sortie ne depende plus de la machine. Markdown : Tweety-07a C# (cellule 19) et le tableau comparatif du jumeau Python Tweety-09 (cellule 22) ne citent plus le runtime win-x64. Les cinq notebooks C# sont re-executes sous Linux (dotnet-interactive 1.0.617701, .NET 9), 0 erreur. Claude-Session: https://claude.ai/code/session_01VuVMY5fhzd5cQhzHiyvjka Co-authored-by: Claude Co-authored-by: myia-ai-01 --- ...y-06-Structured-Argumentation-CSharp.ipynb | 666 ++++++----- ...weety-07a-Extended-Frameworks-CSharp.ipynb | 1062 +++++++++-------- ...ety-07b-Ranking-Probabilistic-CSharp.ipynb | 285 ++--- .../Tweety-08-Agent-Dialogues-CSharp.ipynb | 478 ++++++-- .../Tweety/Tweety-09-Preferences-CSharp.ipynb | 633 ++++++---- .../Tweety/Tweety-09-Preferences-Python.ipynb | 2 +- ...6-2026-09-29-claude-cloud-hors-flotte.yaml | 6 + ...6-2026-09-29-claude-cloud-hors-flotte.yaml | 6 + ...2-2026-09-29-claude-cloud-hors-flotte.yaml | 6 + ...9-2026-09-29-claude-cloud-hors-flotte.yaml | 6 + ...8-2026-09-29-claude-cloud-hors-flotte.yaml | 6 + 11 files changed, 1906 insertions(+), 1250 deletions(-) create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation/0006-2026-09-29-claude-cloud-hors-flotte.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0016-2026-09-29-claude-cloud-hors-flotte.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic/0012-2026-09-29-claude-cloud-hors-flotte.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues/0009-2026-09-29-claude-cloud-hors-flotte.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-9-preferences/0008-2026-09-29-claude-cloud-hors-flotte.yaml diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb index e9ed274485..1ffb1efedc 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb @@ -5,10 +5,10 @@ "id": "d1dc9363", "metadata": { "papermill": { - "duration": 0.002347, - "end_time": "2026-07-06T14:55:30.435129", + "duration": 0.004876, + "end_time": "2026-09-29T22:55:23.323429+00:00", "exception": false, - "start_time": "2026-07-06T14:55:30.432782", + "start_time": "2026-09-29T22:55:23.318553+00:00", "status": "completed" }, "tags": [] @@ -39,21 +39,136 @@ "id": "ae983e52", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:30.449998Z", - "iopub.status.busy": "2026-07-06T14:55:30.443326Z", - "iopub.status.idle": "2026-07-06T14:55:32.597484Z", - "shell.execute_reply": "2026-07-06T14:55:32.585412Z" + "iopub.execute_input": "2026-09-29T22:55:23.348318Z", + "iopub.status.busy": "2026-09-29T22:55:23.340103Z", + "iopub.status.idle": "2026-09-29T22:55:26.421133Z", + "shell.execute_reply": "2026-09-29T22:55:26.420172Z" }, "papermill": { - "duration": 2.160708, - "end_time": "2026-07-06T14:55:32.597765", + "duration": 3.094031, + "end_time": "2026-09-29T22:55:26.421357+00:00", "exception": false, - "start_time": "2026-07-06T14:55:30.437057", + "start_time": "2026-09-29T22:55:23.327326+00:00", "status": "completed" }, "tags": [] }, "outputs": [ + { + "data": { + "text/html": [ + "\r\n", + "
\r\n", + " \r\n", + " \r\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/plain": [ @@ -93,10 +208,10 @@ "id": "32384654", "metadata": { "papermill": { - "duration": 0.003126, - "end_time": "2026-07-06T14:55:32.609198", + "duration": 0.003408, + "end_time": "2026-09-29T22:55:26.428867+00:00", "exception": false, - "start_time": "2026-07-06T14:55:32.606072", + "start_time": "2026-09-29T22:55:26.425459+00:00", "status": "completed" }, "tags": [] @@ -119,16 +234,16 @@ "id": "47701331", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:32.620007Z", - "iopub.status.busy": "2026-07-06T14:55:32.619646Z", - "iopub.status.idle": "2026-07-06T14:55:32.970050Z", - "shell.execute_reply": "2026-07-06T14:55:32.969799Z" + "iopub.execute_input": "2026-09-29T22:55:26.436561Z", + "iopub.status.busy": "2026-09-29T22:55:26.436149Z", + "iopub.status.idle": "2026-09-29T22:55:26.639665Z", + "shell.execute_reply": "2026-09-29T22:55:26.638845Z" }, "papermill": { - "duration": 0.355899, - "end_time": "2026-07-06T14:55:32.970146", + "duration": 0.207915, + "end_time": "2026-09-29T22:55:26.639780+00:00", "exception": false, - "start_time": "2026-07-06T14:55:32.614247", + "start_time": "2026-09-29T22:55:26.431865+00:00", "status": "completed" }, "tags": [] @@ -185,10 +300,10 @@ "id": "c5233106", "metadata": { "papermill": { - "duration": 0.003634, - "end_time": "2026-07-06T14:55:32.976979", + "duration": 0.003172, + "end_time": "2026-09-29T22:55:26.646975+00:00", "exception": false, - "start_time": "2026-07-06T14:55:32.973345", + "start_time": "2026-09-29T22:55:26.643803+00:00", "status": "completed" }, "tags": [] @@ -211,16 +326,16 @@ "id": "a95de405", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:32.984598Z", - "iopub.status.busy": "2026-07-06T14:55:32.984421Z", - "iopub.status.idle": "2026-07-06T14:55:33.247356Z", - "shell.execute_reply": "2026-07-06T14:55:33.247212Z" + "iopub.execute_input": "2026-09-29T22:55:26.655451Z", + "iopub.status.busy": "2026-09-29T22:55:26.655161Z", + "iopub.status.idle": "2026-09-29T22:55:26.798014Z", + "shell.execute_reply": "2026-09-29T22:55:26.797823Z" }, "papermill": { - "duration": 0.266555, - "end_time": "2026-07-06T14:55:33.247426", + "duration": 0.147958, + "end_time": "2026-09-29T22:55:26.798107+00:00", "exception": false, - "start_time": "2026-07-06T14:55:32.980871", + "start_time": "2026-09-29T22:55:26.650149+00:00", "status": "completed" }, "tags": [] @@ -308,10 +423,10 @@ "id": "ded28d27", "metadata": { "papermill": { - "duration": 0.002475, - "end_time": "2026-07-06T14:55:33.252598", + "duration": 0.00323, + "end_time": "2026-09-29T22:55:26.805383+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.250123", + "start_time": "2026-09-29T22:55:26.802153+00:00", "status": "completed" }, "tags": [] @@ -336,16 +451,16 @@ "id": "9858e9a7", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:33.258883Z", - "iopub.status.busy": "2026-07-06T14:55:33.258691Z", - "iopub.status.idle": "2026-07-06T14:55:33.454550Z", - "shell.execute_reply": "2026-07-06T14:55:33.454366Z" + "iopub.execute_input": "2026-09-29T22:55:26.813387Z", + "iopub.status.busy": "2026-09-29T22:55:26.813146Z", + "iopub.status.idle": "2026-09-29T22:55:27.031534Z", + "shell.execute_reply": "2026-09-29T22:55:27.031251Z" }, "papermill": { - "duration": 0.199647, - "end_time": "2026-07-06T14:55:33.454628", + "duration": 0.223251, + "end_time": "2026-09-29T22:55:27.031712+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.254981", + "start_time": "2026-09-29T22:55:26.808461+00:00", "status": "completed" }, "tags": [] @@ -354,15 +469,15 @@ { "data": { "text/plain": [ - "--- Theorie ASPIC+ ---\r\n", - "ArgumentationSystem [rules=[T -> b, T -> c, b, c => a, b => d, a => !d]]\r\n", - "\r\n", - "--- Arguments construits (5) ---\r\n", - " - -> b\r\n", - " - -> c\r\n", - " - b, c => a [ -> b, -> c]\r\n", - " - b => d [ -> b]\r\n", - " - a => !d [b, c => a [ -> b, -> c]]\r\n" + "--- Theorie ASPIC+ ---\n", + "ArgumentationSystem [rules=[T -> b, T -> c, b, c => a, b => d, a => !d]]\n", + "\n", + "--- Arguments construits (5) ---\n", + " - -> b\n", + " - -> c\n", + " - b, c => a [ -> b, -> c]\n", + " - b => d [ -> b]\n", + " - a => !d [b, c => a [ -> b, -> c]]\n" ] }, "metadata": {}, @@ -395,10 +510,10 @@ "id": "94fbfb65", "metadata": { "papermill": { - "duration": 0.002699, - "end_time": "2026-07-06T14:55:33.460258", + "duration": 0.005238, + "end_time": "2026-09-29T22:55:27.043019+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.457559", + "start_time": "2026-09-29T22:55:27.037781+00:00", "status": "completed" }, "tags": [] @@ -429,16 +544,16 @@ "id": "07e1da2a", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:33.471018Z", - "iopub.status.busy": "2026-07-06T14:55:33.470620Z", - "iopub.status.idle": "2026-07-06T14:55:33.581063Z", - "shell.execute_reply": "2026-07-06T14:55:33.580926Z" + "iopub.execute_input": "2026-09-29T22:55:27.057354Z", + "iopub.status.busy": "2026-09-29T22:55:27.056951Z", + "iopub.status.idle": "2026-09-29T22:55:27.228744Z", + "shell.execute_reply": "2026-09-29T22:55:27.228531Z" }, "papermill": { - "duration": 0.115413, - "end_time": "2026-07-06T14:55:33.581130", + "duration": 0.18029, + "end_time": "2026-09-29T22:55:27.228832+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.465717", + "start_time": "2026-09-29T22:55:27.048542+00:00", "status": "completed" }, "tags": [] @@ -447,9 +562,9 @@ { "data": { "text/plain": [ - "--- Attaques generees (2) ---\r\n", - " - (b => d [ -> b], a => !d [b, c => a [ -> b, -> c]])\r\n", - " - (a => !d [b, c => a [ -> b, -> c]], b => d [ -> b])\r\n" + "--- Attaques generees (2) ---\n", + " - (b => d [ -> b], a => !d [b, c => a [ -> b, -> c]])\n", + " - (a => !d [b, c => a [ -> b, -> c]], b => d [ -> b])\n" ] }, "metadata": {}, @@ -489,10 +604,10 @@ "id": "a3ea9a35", "metadata": { "papermill": { - "duration": 0.002393, - "end_time": "2026-07-06T14:55:33.586377", + "duration": 0.005021, + "end_time": "2026-09-29T22:55:27.238139+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.583984", + "start_time": "2026-09-29T22:55:27.233118+00:00", "status": "completed" }, "tags": [] @@ -519,16 +634,16 @@ "id": "91699731", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:33.592749Z", - "iopub.status.busy": "2026-07-06T14:55:33.592542Z", - "iopub.status.idle": "2026-07-06T14:55:33.714312Z", - "shell.execute_reply": "2026-07-06T14:55:33.714179Z" + "iopub.execute_input": "2026-09-29T22:55:27.248019Z", + "iopub.status.busy": "2026-09-29T22:55:27.247614Z", + "iopub.status.idle": "2026-09-29T22:55:27.324100Z", + "shell.execute_reply": "2026-09-29T22:55:27.323856Z" }, "papermill": { - "duration": 0.125669, - "end_time": "2026-07-06T14:55:33.714380", + "duration": 0.082649, + "end_time": "2026-09-29T22:55:27.324259+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.588711", + "start_time": "2026-09-29T22:55:27.241610+00:00", "status": "completed" }, "tags": [] @@ -537,11 +652,11 @@ { "data": { "text/plain": [ - "--- Conversion en AF de Dung ---\r\n", - "Arguments (5) : -> b, -> c, a => !d [b, c => a [ -> b, -> c]], b => d [ -> b], b, c => a [ -> b, -> c]\r\n", - "\r\n", - "--- Extension grounded ---\r\n", - "{ -> b, -> c, b, c => a [ -> b, -> c] }\r\n" + "--- Conversion en AF de Dung ---\n", + "Arguments (5) : -> b, -> c, a => !d [b, c => a [ -> b, -> c]], b => d [ -> b], b, c => a [ -> b, -> c]\n", + "\n", + "--- Extension grounded ---\n", + "{ -> b, -> c, b, c => a [ -> b, -> c] }\n" ] }, "metadata": {}, @@ -597,10 +712,10 @@ "id": "8d1a78b2", "metadata": { "papermill": { - "duration": 0.002244, - "end_time": "2026-07-06T14:55:33.719211", + "duration": 0.005332, + "end_time": "2026-09-29T22:55:27.335321+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.716967", + "start_time": "2026-09-29T22:55:27.329989+00:00", "status": "completed" }, "tags": [] @@ -634,16 +749,16 @@ "id": "ac3186b9", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:33.725041Z", - "iopub.status.busy": "2026-07-06T14:55:33.724883Z", - "iopub.status.idle": "2026-07-06T14:55:33.807869Z", - "shell.execute_reply": "2026-07-06T14:55:33.807709Z" + "iopub.execute_input": "2026-09-29T22:55:27.348520Z", + "iopub.status.busy": "2026-09-29T22:55:27.348046Z", + "iopub.status.idle": "2026-09-29T22:55:27.397544Z", + "shell.execute_reply": "2026-09-29T22:55:27.397312Z" }, "papermill": { - "duration": 0.086597, - "end_time": "2026-07-06T14:55:33.807942", + "duration": 0.056612, + "end_time": "2026-09-29T22:55:27.397625+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.721345", + "start_time": "2026-09-29T22:55:27.341013+00:00", "status": "completed" }, "tags": [] @@ -652,18 +767,18 @@ { "data": { "text/plain": [ - "+---------------------+------------------------------------------------+--------------------------------+\r\n", - "| Formalisme | Idee cle | Dans ce twin C# ? |\r\n", - "+---------------------+------------------------------------------------+--------------------------------+\r\n", - "| ASPIC+ | Regles strictes/defaisables, rebut/undercut/undermine -> Dung | From-scratch (sections 1-5) |\r\n", - "| DeLP | Programmation logique defaisable + arbre dialectique | Intrinseque (moteur Java arg.delp) |\r\n", - "| ABA | Attaque d'hypotheses (assumptions) par contraires | Intrinseque (moteur Java arg.aba) |\r\n", - "| Arg. deductive | Arbre de preuve PL + contre-arguments | Intrinseque (moteur Java arg.deductive) |\r\n", - "| ASP | Ensembles-reponses d'un programme logique | Intrinseque (solveur dlv/clingo) |\r\n", - "+---------------------+------------------------------------------------+--------------------------------+\r\n", - "\r\n", - "Verdict #3801 : ASPIC+ = SOTA-OK (moteur from-scratch). DeLP/ABA/ASP/Arg.deductive = INTRINSIC\r\n", - "(pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution).\r\n" + "+---------------------+------------------------------------------------+--------------------------------+\n", + "| Formalisme | Idee cle | Dans ce twin C# ? |\n", + "+---------------------+------------------------------------------------+--------------------------------+\n", + "| ASPIC+ | Regles strictes/defaisables, rebut/undercut/undermine -> Dung | From-scratch (sections 1-5) |\n", + "| DeLP | Programmation logique defaisable + arbre dialectique | Intrinseque (moteur Java arg.delp) |\n", + "| ABA | Attaque d'hypotheses (assumptions) par contraires | Intrinseque (moteur Java arg.aba) |\n", + "| Arg. deductive | Arbre de preuve PL + contre-arguments | Intrinseque (moteur Java arg.deductive) |\n", + "| ASP | Ensembles-reponses d'un programme logique | Intrinseque (solveur dlv/clingo) |\n", + "+---------------------+------------------------------------------------+--------------------------------+\n", + "\n", + "Verdict #3801 : ASPIC+ = SOTA-OK (moteur from-scratch). DeLP/ABA/ASP/Arg.deductive = INTRINSIC\n", + "(pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution).\n" ] }, "metadata": {}, @@ -695,7 +810,16 @@ { "cell_type": "markdown", "id": "38510be6", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.003276, + "end_time": "2026-09-29T22:55:27.404804+00:00", + "exception": false, + "start_time": "2026-09-29T22:55:27.401528+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "## Tranche 2 : parite avec la lib Tweety reelle (IKVM / ASPIC+)\n", "\n", @@ -710,123 +834,23 @@ "cell_type": "code", "execution_count": 8, "id": "9ade28b8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\r\n", - "
\r\n", - " \r\n", - " \r\n", - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-29T22:55:27.413353Z", + "iopub.status.busy": "2026-09-29T22:55:27.413117Z", + "iopub.status.idle": "2026-09-29T22:55:34.005448Z", + "shell.execute_reply": "2026-09-29T22:55:34.005249Z" }, + "papermill": { + "duration": 6.597442, + "end_time": "2026-09-29T22:55:34.005536+00:00", + "exception": false, + "start_time": "2026-09-29T22:55:27.408094+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ { "data": { "text/html": [ @@ -839,27 +863,42 @@ ], "source": [ "#r \"nuget: IKVM, 8.15.0\"\n", - "#r \"nuget: IKVM.Image, 8.15.0\"\n", - "#r \"nuget: IKVM.Image.runtime.win-x64, 8.15.0\"" + "#r \"nuget: IKVM.Image, 8.15.0\"" ] }, { "cell_type": "code", "execution_count": 9, "id": "65037c37", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-29T22:55:34.015385Z", + "iopub.status.busy": "2026-09-29T22:55:34.014940Z", + "iopub.status.idle": "2026-09-29T22:55:36.601962Z", + "shell.execute_reply": "2026-09-29T22:55:36.601682Z" + }, + "papermill": { + "duration": 2.592346, + "end_time": "2026-09-29T22:55:36.602050+00:00", + "exception": false, + "start_time": "2026-09-29T22:55:34.009704+00:00", + "status": "completed" + }, + "tags": [] + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "IKVM home=OK\r\n" + "IKVM home=OK\n" ] } ], "source": [ "using System.IO;\n", - "string ikvmVer = \"8.15.0\", ikvmRid = \"win-x64\";\n", + "// RID de la machine courante (win-x64, linux-x64, osx-arm64...) : IKVM.Image tire l'image native de chaque plateforme.\n", + "string ikvmVer = \"8.15.0\", ikvmRid = (OperatingSystem.IsWindows() ? \"win\" : OperatingSystem.IsMacOS() ? \"osx\" : \"linux\") + \"-\" + System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture.ToString().ToLowerInvariant();\n", "string nugetRoot = Environment.GetEnvironmentVariable(\"NUGET_PACKAGES\")\n", " ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), \".nuget\", \"packages\");\n", "string ikvmBaseAny = Path.Combine(nugetRoot, \"ikvm.image\", ikvmVer, \"ikvm\", \"any\", \"any\");\n", @@ -890,13 +929,28 @@ "cell_type": "code", "execution_count": 10, "id": "7d3ca88a", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-29T22:55:36.615986Z", + "iopub.status.busy": "2026-09-29T22:55:36.615714Z", + "iopub.status.idle": "2026-09-29T22:55:37.808816Z", + "shell.execute_reply": "2026-09-29T22:55:37.808591Z" + }, + "papermill": { + "duration": 1.200775, + "end_time": "2026-09-29T22:55:37.808920+00:00", + "exception": false, + "start_time": "2026-09-29T22:55:36.608145+00:00", + "status": "completed" + }, + "tags": [] + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Tweety (IKVM) charge : org.tweetyproject.tweety-aspic v1.30.0.0 (8,0 Mo).\r\n" + "Tweety (IKVM) charge : org.tweetyproject.tweety-aspic v1.30.0.0 (8.0 Mo).\n" ] } ], @@ -913,7 +967,16 @@ { "cell_type": "markdown", "id": "bc43479e", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.0082, + "end_time": "2026-09-29T22:55:37.824033+00:00", + "exception": false, + "start_time": "2026-09-29T22:55:37.815833+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "### Refaire l'exemple de la section 3 avec la lib ASPIC+\n", "\n", @@ -924,20 +987,35 @@ "cell_type": "code", "execution_count": 11, "id": "15d346f2", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-29T22:55:37.835457Z", + "iopub.status.busy": "2026-09-29T22:55:37.835251Z", + "iopub.status.idle": "2026-09-29T22:55:39.888490Z", + "shell.execute_reply": "2026-09-29T22:55:39.888339Z" + }, + "papermill": { + "duration": 2.059251, + "end_time": "2026-09-29T22:55:39.888573+00:00", + "exception": false, + "start_time": "2026-09-29T22:55:37.829322+00:00", + "status": "completed" + }, + "tags": [] + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "=== Theorie ASPIC+ (lib Tweety) ===\r\n" + "=== Theorie ASPIC+ (lib Tweety) ===\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ArgumentationSystem [rules=[ -> c, -> b, b, c => a, b => d, a => !d]]\r\n" + "ArgumentationSystem [rules=[ -> c, -> b, b, c => a, b => d, a => !d]]\n" ] } ], @@ -974,90 +1052,105 @@ "cell_type": "code", "execution_count": 12, "id": "b1670ddb", - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-29T22:55:39.898463Z", + "iopub.status.busy": "2026-09-29T22:55:39.898149Z", + "iopub.status.idle": "2026-09-29T22:55:39.978634Z", + "shell.execute_reply": "2026-09-29T22:55:39.978465Z" + }, + "papermill": { + "duration": 0.085896, + "end_time": "2026-09-29T22:55:39.978715+00:00", + "exception": false, + "start_time": "2026-09-29T22:55:39.892819+00:00", + "status": "completed" + }, + "tags": [] + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "=== AAF genere par la lib ===\r\n" + "=== AAF genere par la lib ===\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "nb arguments = 5\r\n" + "nb arguments = 5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "attaques = [(b => d [ -> b],a => !d [b, c => a [ -> b, -> c]]), (a => !d [b, c => a [ -> b, -> c]],b => d [ -> b])]\r\n" + "attaques = [(b => d [ -> b],a => !d [b, c => a [ -> b, -> c]]), (a => !d [b, c => a [ -> b, -> c]],b => d [ -> b])]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\r\n" + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Extension fondee :\r\n" + "Extension fondee :\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " { -> b, -> c,b, c => a [ -> b, -> c]}\r\n" + " { -> b, -> c,b, c => a [ -> b, -> c]}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Extension preferee :\r\n" + "Extension preferee :\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " {b => d [ -> b], -> b, -> c,b, c => a [ -> b, -> c]}\r\n" + " {b => d [ -> b], -> b, -> c,b, c => a [ -> b, -> c]}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " { -> b, -> c,b, c => a [ -> b, -> c],a => !d [b, c => a [ -> b, -> c]]}\r\n" + " { -> b, -> c,b, c => a [ -> b, -> c],a => !d [b, c => a [ -> b, -> c]]}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Extension stable :\r\n" + "Extension stable :\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " {b => d [ -> b], -> b, -> c,b, c => a [ -> b, -> c]}\r\n" + " {b => d [ -> b], -> b, -> c,b, c => a [ -> b, -> c]}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " { -> b, -> c,b, c => a [ -> b, -> c],a => !d [b, c => a [ -> b, -> c]]}\r\n" + " { -> b, -> c,b, c => a [ -> b, -> c],a => !d [b, c => a [ -> b, -> c]]}\n" ] } ], @@ -1086,7 +1179,16 @@ { "cell_type": "markdown", "id": "bae2deae", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.004513, + "end_time": "2026-09-29T22:55:39.987781+00:00", + "exception": false, + "start_time": "2026-09-29T22:55:39.983268+00:00", + "status": "completed" + }, + "tags": [] + }, "source": [ "### Lecture : parite from-scratch <=> lib Tweety\n", "\n", @@ -1100,10 +1202,10 @@ "id": "63611905", "metadata": { "papermill": { - "duration": 0.003189, - "end_time": "2026-07-06T14:55:33.814023", + "duration": 0.003884, + "end_time": "2026-09-29T22:55:39.995766+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.810834", + "start_time": "2026-09-29T22:55:39.991882+00:00", "status": "completed" }, "tags": [] @@ -1119,10 +1221,10 @@ "id": "aac6e2c5", "metadata": { "papermill": { - "duration": 0.003005, - "end_time": "2026-07-06T14:55:33.820221", + "duration": 0.004078, + "end_time": "2026-09-29T22:55:40.004533+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.817216", + "start_time": "2026-09-29T22:55:40.000455+00:00", "status": "completed" }, "tags": [] @@ -1145,16 +1247,16 @@ "id": "25156861", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:33.828860Z", - "iopub.status.busy": "2026-07-06T14:55:33.828376Z", - "iopub.status.idle": "2026-07-06T14:55:33.916161Z", - "shell.execute_reply": "2026-07-06T14:55:33.916044Z" + "iopub.execute_input": "2026-09-29T22:55:40.016315Z", + "iopub.status.busy": "2026-09-29T22:55:40.015983Z", + "iopub.status.idle": "2026-09-29T22:55:40.043315Z", + "shell.execute_reply": "2026-09-29T22:55:40.043052Z" }, "papermill": { - "duration": 0.092914, - "end_time": "2026-07-06T14:55:33.916220", + "duration": 0.034073, + "end_time": "2026-09-29T22:55:40.043396+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.823306", + "start_time": "2026-09-29T22:55:40.009323+00:00", "status": "completed" }, "tags": [] @@ -1188,10 +1290,10 @@ "id": "e3949f49", "metadata": { "papermill": { - "duration": 0.002379, - "end_time": "2026-07-06T14:55:33.921189", + "duration": 0.004123, + "end_time": "2026-09-29T22:55:40.051943+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.918810", + "start_time": "2026-09-29T22:55:40.047820+00:00", "status": "completed" }, "tags": [] @@ -1214,16 +1316,16 @@ "id": "c4ac640c", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:33.927326Z", - "iopub.status.busy": "2026-07-06T14:55:33.927156Z", - "iopub.status.idle": "2026-07-06T14:55:33.971481Z", - "shell.execute_reply": "2026-07-06T14:55:33.971336Z" + "iopub.execute_input": "2026-09-29T22:55:40.067950Z", + "iopub.status.busy": "2026-09-29T22:55:40.067697Z", + "iopub.status.idle": "2026-09-29T22:55:40.087837Z", + "shell.execute_reply": "2026-09-29T22:55:40.087650Z" }, "papermill": { - "duration": 0.047873, - "end_time": "2026-07-06T14:55:33.971550", + "duration": 0.0266, + "end_time": "2026-09-29T22:55:40.087939+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.923677", + "start_time": "2026-09-29T22:55:40.061339+00:00", "status": "completed" }, "tags": [] @@ -1252,10 +1354,10 @@ "id": "b040d65c", "metadata": { "papermill": { - "duration": 0.002931, - "end_time": "2026-07-06T14:55:33.977578", + "duration": 0.00449, + "end_time": "2026-09-29T22:55:40.097670+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.974647", + "start_time": "2026-09-29T22:55:40.093180+00:00", "status": "completed" }, "tags": [] @@ -1278,16 +1380,16 @@ "id": "13b54263", "metadata": { "execution": { - "iopub.execute_input": "2026-07-06T14:55:33.984784Z", - "iopub.status.busy": "2026-07-06T14:55:33.984581Z", - "iopub.status.idle": "2026-07-06T14:55:34.044966Z", - "shell.execute_reply": "2026-07-06T14:55:34.044824Z" + "iopub.execute_input": "2026-09-29T22:55:40.108747Z", + "iopub.status.busy": "2026-09-29T22:55:40.108540Z", + "iopub.status.idle": "2026-09-29T22:55:40.131896Z", + "shell.execute_reply": "2026-09-29T22:55:40.130644Z" }, "papermill": { - "duration": 0.06456, - "end_time": "2026-07-06T14:55:34.045038", + "duration": 0.029748, + "end_time": "2026-09-29T22:55:40.131990+00:00", "exception": false, - "start_time": "2026-07-06T14:55:33.980478", + "start_time": "2026-09-29T22:55:40.102242+00:00", "status": "completed" }, "tags": [] @@ -1316,10 +1418,10 @@ "id": "74f90ebc", "metadata": { "papermill": { - "duration": 0.00605, - "end_time": "2026-07-06T14:55:34.054332", + "duration": 0.004187, + "end_time": "2026-09-29T22:55:40.141410+00:00", "exception": false, - "start_time": "2026-07-06T14:55:34.048282", + "start_time": "2026-09-29T22:55:40.137223+00:00", "status": "completed" }, "tags": [] @@ -1355,17 +1457,17 @@ }, "papermill": { "default_parameters": {}, - "duration": 6.562924, - "end_time": "2026-07-06T14:55:34.191983", + "duration": 38.850381, + "end_time": "2026-09-29T22:55:40.264096+00:00", "environment_variables": {}, "exception": null, "input_path": "Tweety-06-Structured-Argumentation-CSharp.ipynb", - "output_path": "tweety6_exec.ipynb", + "output_path": "Tweety-06-Structured-Argumentation-CSharp.ipynb", "parameters": {}, - "start_time": "2026-07-06T14:55:27.629059", + "start_time": "2026-09-29T22:55:01.413715+00:00", "version": "2.6.0" } }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb index 61875427be..bc5833d86e 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "id": "e5b98aaf", "metadata": { - "tags": [], "papermill": { - "duration": 0.014419, - "end_time": "2026-09-02T02:09:35.239693+00:00", + "duration": 0.01356, + "end_time": "2026-09-29T22:55:46.053986+00:00", "exception": false, - "start_time": "2026-09-02T02:09:35.225274+00:00", + "start_time": "2026-09-29T22:55:46.040426+00:00", "status": "completed" - } + }, + "tags": [] }, "source": [ "# Tweety-7a : Frameworks d'Argumentation Etendus (C#)\n", @@ -45,14 +45,14 @@ "cell_type": "markdown", "id": "8882d6c7", "metadata": { - "tags": [], "papermill": { - "duration": 0.016316, - "end_time": "2026-09-02T02:09:35.271450+00:00", + "duration": 0.011996, + "end_time": "2026-09-29T22:55:46.078950+00:00", "exception": false, - "start_time": "2026-09-02T02:09:35.255134+00:00", + "start_time": "2026-09-29T22:55:46.066954+00:00", "status": "completed" - } + }, + "tags": [] }, "source": [ "## 1. Pourquoi etendre le cadre de Dung ?\n", @@ -71,14 +71,14 @@ "cell_type": "markdown", "id": "07a8453b", "metadata": { - "tags": [], "papermill": { - "duration": 0.014538, - "end_time": "2026-09-02T02:09:35.300978+00:00", + "duration": 0.012595, + "end_time": "2026-09-29T22:55:46.103462+00:00", "exception": false, - "start_time": "2026-09-02T02:09:35.286440+00:00", + "start_time": "2026-09-29T22:55:46.090867+00:00", "status": "completed" - } + }, + "tags": [] }, "source": [ "## 2. Brique commune : logique 3-valued de Kleene\n", @@ -101,20 +101,20 @@ "execution_count": 1, "id": "48b92c85", "metadata": { - "tags": [], "execution": { - "iopub.execute_input": "2026-09-02T02:09:35.337145Z", - "iopub.status.busy": "2026-09-02T02:09:35.331189Z", - "iopub.status.idle": "2026-09-02T02:09:37.125773Z", - "shell.execute_reply": "2026-09-02T02:09:37.121161Z" + "iopub.execute_input": "2026-09-29T22:55:46.148317Z", + "iopub.status.busy": "2026-09-29T22:55:46.140613Z", + "iopub.status.idle": "2026-09-29T22:55:48.426555Z", + "shell.execute_reply": "2026-09-29T22:55:48.422809Z" }, "papermill": { - "duration": 1.810911, - "end_time": "2026-09-02T02:09:37.125993+00:00", + "duration": 2.31043, + "end_time": "2026-09-29T22:55:48.426703+00:00", "exception": false, - "start_time": "2026-09-02T02:09:35.315082+00:00", + "start_time": "2026-09-29T22:55:46.116273+00:00", "status": "completed" - } + }, + "tags": [] }, "outputs": [ { @@ -122,10 +122,11 @@ "text/html": [ "\r\n", "
\r\n", - "