diff --git a/MyIA.AI.Notebooks/GenAI/PostTraining/PT_11b_grpo_qwen_rlvr_on_verifiers.ipynb b/MyIA.AI.Notebooks/GenAI/PostTraining/PT_11b_grpo_qwen_rlvr_on_verifiers.ipynb index 1a849d8b24..18c5bc0313 100644 --- a/MyIA.AI.Notebooks/GenAI/PostTraining/PT_11b_grpo_qwen_rlvr_on_verifiers.ipynb +++ b/MyIA.AI.Notebooks/GenAI/PostTraining/PT_11b_grpo_qwen_rlvr_on_verifiers.ipynb @@ -35,7 +35,7 @@ "avec Qwen3.5-0.8B QLoRA 4-bit, ≥100 steps GRPO, courbe de reward reelle, et signal Goodhart\n", "via `rewardspy.watch` ONLINE (cf acceptance #10289).\n", "\n", - "## Note méthodologique — quand ce notebook est utile (et quand il ne l'est pas)\n", + "> **Note méthodologique — quand ce notebook est utile (et quand il ne l'est pas) :**\n", "\n", "**Cas d'usage adaptés** : (1) fine-tuner un modèle 0.8B pour suivre des\n", "contraintes formelles (math, code, logique) ; (2) démontrer la boucle\n", diff --git a/MyIA.AI.Notebooks/GenAI/Security/Oversight/Oversight-Scaling-Laws-Analytics.ipynb b/MyIA.AI.Notebooks/GenAI/Security/Oversight/Oversight-Scaling-Laws-Analytics.ipynb index 9e69b01e38..2582f777e6 100644 --- a/MyIA.AI.Notebooks/GenAI/Security/Oversight/Oversight-Scaling-Laws-Analytics.ipynb +++ b/MyIA.AI.Notebooks/GenAI/Security/Oversight/Oversight-Scaling-Laws-Analytics.ipynb @@ -203,7 +203,7 @@ "\n", "**Objectif** : calculer le gap Elo correspondant a un win rate de garde de 0.62 (Guard gagne 62 % des parties).\n", "\n", - "# Indice : la formule est `delta = -400 * log10(1/w - 1)` ; la fonction `elo_gap_from_winrate` de la cellule precedente la implemente deja.\n" + "> **Indice :** la formule est `delta = -400 * log10(1/w - 1)` ; la fonction `elo_gap_from_winrate` de la cellule precedente la implemente deja.\n" ] }, { @@ -391,7 +391,7 @@ "\n", "**Objectif** : calculer le niveau optimal NSO `n*` pour un seuil de detection q = 0.10 (au lieu de 0.05), pour D = 150 Elo.\n", "\n", - "# Indice : la formule est `n* = log(q) / log(1 - D/400)` ; la fonction `n_star(D, q)` de la section 2 la implemente.\n" + "> **Indice :** la formule est `n* = log(q) / log(1 - D/400)` ; la fonction `n_star(D, q)` de la section 2 la implemente.\n" ] }, { @@ -576,7 +576,7 @@ "\n", "**Objectif** : refaire le fit de la droite OLS (2 parametres) en ajoutant un 7e point (D = 420, w = 0.05) au jeu de la section 3, et recalculer le MSE.\n", "\n", - "# Indice : `np.polyfit(D, w, 1)` retourne (pente, intercept) ; le MSE de la section 3 se recalcule avec `np.mean((w - (a + b*D))**2)`.\n" + "> **Indice :** `np.polyfit(D, w, 1)` retourne (pente, intercept) ; le MSE de la section 3 se recalcule avec `np.mean((w - (a + b*D))**2)`.\n" ] }, { diff --git a/MyIA.AI.Notebooks/GenAI/SemanticKernel/04-SemanticKernel-Filters-Observability.ipynb b/MyIA.AI.Notebooks/GenAI/SemanticKernel/04-SemanticKernel-Filters-Observability.ipynb index 681aae9153..06611513f6 100644 --- a/MyIA.AI.Notebooks/GenAI/SemanticKernel/04-SemanticKernel-Filters-Observability.ipynb +++ b/MyIA.AI.Notebooks/GenAI/SemanticKernel/04-SemanticKernel-Filters-Observability.ipynb @@ -1733,7 +1733,7 @@ "- `gen_ai.usage.input_tokens` et `gen_ai.usage.output_tokens` : les tokens consommés (prompt + génération) — la grandeur facturable, capturée automatiquement ;\n", "- `gen_ai.operation.name` : `chat` pour l'appel LLM, et un span frère `execute_tool` pour l'invocation de fonction SK.\n", "\n", - "### Note de parité\n", + "> **Note de parité :**\n", "\n", "Côté Python, le **collecteur** OTEL (ou un SaaS comme LangSmith / Langfuse) joue le même rôle d'agrégation que le dashboard Aspire côté .NET. La différence : Aspire embarque le dashboard + l'endpoint OTLP out-of-the-box, là où l'écosystème Python assemble ces briques séparément. Le protocole (OTLP) est commun — un backend .NET peut donc observer une chaîne Python, et réciproquement.\n", "\n", diff --git a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.5c-Equite-Sous-Groupes.ipynb b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.5c-Equite-Sous-Groupes.ipynb index f0bd81c113..7ec6b098e7 100644 --- a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.5c-Equite-Sous-Groupes.ipynb +++ b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.5c-Equite-Sous-Groupes.ipynb @@ -698,11 +698,11 @@ "tags": [] }, "source": [ - "# Note pedagogique -- degenerescence baseline (cf. revue NanoClaw 2026-08-26).\n", - "# Si les intervalles bootstrap TPR/FPR/PP ci-dessus resortent a [0.000, 0.000],\n", - "# c'est le symptome classique d'une baseline qui ne predit JAMAIS positif\n", - "# au seuil 0.5 quand la prevalence reelle est faible (~2-5 %). Information\n", - "# IMPORTANTE, pas un bug -- c'est le sujet du notebook (cf. section 5.1 verdict).\n" + "> **Note pedagogique -- degenerescence baseline (cf. revue NanoClaw 2026-08-26).**\n", + "> Si les intervalles bootstrap TPR/FPR/PP ci-dessus resortent a [0.000, 0.000],\n", + "> c'est le symptome classique d'une baseline qui ne predit JAMAIS positif\n", + "> au seuil 0.5 quand la prevalence reelle est faible (~2-5 %). Information\n", + "> IMPORTANTE, pas un bug -- c'est le sujet du notebook (cf. section 5.1 verdict).\n" ] }, { diff --git a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.9e-MIPS-Extraction-Programme.ipynb b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.9e-MIPS-Extraction-Programme.ipynb index a08b497c1a..9ea4ae5846 100644 --- a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.9e-MIPS-Extraction-Programme.ipynb +++ b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.9e-MIPS-Extraction-Programme.ipynb @@ -1810,7 +1810,7 @@ "2. **La tâche « Newton »** (loi de Newton avec ressort / champ magnétique), proposée par l'issue d'origine. Elle produit une sortie **continue**, donc elle relève de l'autoencodeur **entier** (App. A/B) que notre essai de lattice finder n'a pas su faire fonctionner faute de structure affine (§4). Le §7 montre exactement ce mode d'échec sur `sum_last5`, et l'exercice 1 est le point d'entrée pour le reprendre.\n", "3. **La vérification formelle** du programme extrait : le papier la fait en Dafny (App. F.1). Ici la vérification est **exhaustive sur les 4096 entrées** — plus faible qu'une preuve, plus forte qu'un échantillon. C'est le pont vers T10 qui reste à construire.\n", "\n", - "### Pistes pour la suite\n", + "> **Pistes pour la suite :**\n", "\n", "- **Reproduire la chaîne complète** (Jordan → Toeplitz → de-bias → quantification des poids) pour transformer le réseau du §3 en machine à états minimale, et refermer le maillon manquant.\n", "- **Reprendre l'autoencodeur entier** (App. A/B) : notre essai de lattice finder a échoué faute de structure affine, ce qui est cohérent avec le §4 et demande la normalisation complète.\n", diff --git a/MyIA.AI.Notebooks/ML/ML.Net/ML-10-TSAD-Benchmark-Flaws-Python.ipynb b/MyIA.AI.Notebooks/ML/ML.Net/ML-10-TSAD-Benchmark-Flaws-Python.ipynb index 77e2868c08..6c556eee6a 100644 --- a/MyIA.AI.Notebooks/ML/ML.Net/ML-10-TSAD-Benchmark-Flaws-Python.ipynb +++ b/MyIA.AI.Notebooks/ML/ML.Net/ML-10-TSAD-Benchmark-Flaws-Python.ipynb @@ -972,7 +972,7 @@ "\n", "**À faire :** charger `InternalBleeding16`, calculer le score SPC, et expliquer **pourquoi** `M + 3σ` ne voit pas un décalage lent de niveau (alors que l'auto-encodeur, lui, le voit). Formuler la réponse en termes de « anomalie ponctuelle vs contextuelle » — c'est la distinction que le Matrix Profile (ML-11) traite.\n", "\n", - "# TODO étudiant\n" + "> **TODO étudiant :**\n" ] }, { @@ -1026,7 +1026,7 @@ "\n", "Un benchmark ne devrait pas être plus d'~5 % anormal. **À faire :** écrire une fonction qui mesure la densité d'anomalies (fraction de points étiquetés) d'un benchmark quelconque, et l'appliquer pour comparer une série UCR réaliste à un benchmark « gonflé » (50 %+ anormal).\n", "\n", - "# TODO étudiant\n" + "> **TODO étudiant :**\n" ] }, { @@ -1079,7 +1079,7 @@ "\n", "La baseline **run-to-failure** gagne sans rien détecter. **À faire :** l'implémenter (score croissant vers la fin) et **montrer** qu'elle obtient un AUC élevé sur une série dont l'anomalie est strictement à la fin — puis expliquer pourquoi ce score est trompeur.\n", "\n", - "# TODO étudiant\n" + "> **TODO étudiant :**\n" ] }, { diff --git a/MyIA.AI.Notebooks/Probas/PyMC/PyMC-04-Bayesian-Networks.ipynb b/MyIA.AI.Notebooks/Probas/PyMC/PyMC-04-Bayesian-Networks.ipynb index 56f067db17..4a730de5ec 100644 --- a/MyIA.AI.Notebooks/Probas/PyMC/PyMC-04-Bayesian-Networks.ipynb +++ b/MyIA.AI.Notebooks/Probas/PyMC/PyMC-04-Bayesian-Networks.ipynb @@ -1982,7 +1982,7 @@ "- P(Flu=1 | Fever=1) ~ 0.18.\n", "- P(Cold=1, Flu=1 | Fever=1) ~ 0.01 (explaining away).\n", "\n", - "### Indice\n", + "> **Indice :**\n", "\n", "Reprendre la structure du modèle de code[2] (réseau Wet Grass) en changeant les variables, puis conditionner Fever=1 avec `observed=1` comme dans code[5]." ] diff --git a/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-01-StateSpace.ipynb b/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-01-StateSpace.ipynb index 66cf85f81e..61ba3e60f4 100644 --- a/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-01-StateSpace.ipynb +++ b/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-01-StateSpace.ipynb @@ -1893,7 +1893,7 @@ "tags": [] }, "source": [ - "#### Indices pour l'exercice 1\n", + "> **Indices pour l'exercice 1 :**\n", "\n", "**Rappels** :\n", "- Utilisez une recherche en largeur (BFS) pour explorer l'espace d'etats\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Planners/02-Classical/Planners-6-Domains.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Planners/02-Classical/Planners-6-Domains.ipynb index ca28a0d277..4722fd3166 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Planners/02-Classical/Planners-6-Domains.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Planners/02-Classical/Planners-6-Domains.ipynb @@ -3177,7 +3177,7 @@ "3. Afficher le plan trouve et calculer le nombre d'étapes\n", "4. (Bonus) Ajouter une contrainte de carburant (numérique) et resoudre avec un solver qui supporte les fluents numériques\n", "\n", - "### Indices\n", + "> **Indices :**\n", "\n", "- Fluents booléens : `at(robot, lieu)`, `holding(robot, colis)`, `at_box(colis, lieu)`, `free(robot)`\n", "- `up.BoolType()` pour les fluents booléens, `up.UserType(\"Robot\")` pour les types\n", @@ -3348,7 +3348,7 @@ "- Le problème doit etre **soluble** avec un plan non-trivial (au minimum 3 actions)\n", "- Choisissez un domaine du monde reel (cuisine, logistique, jeu de plateau...)\n", "\n", - "### Étapes\n", + "> **Étapes :**\n", "1. Définir les types, fluents et actions avec `unified_planning.shortcuts`\n", "2. Créer un problème avec etat initial et objectif\n", "3. Resoudre avec `OneshotPlanner` et afficher le plan\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-03-Tactics-Python.ipynb b/MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-03-Tactics-Python.ipynb index 95776ad1cc..1bfc723df1 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-03-Tactics-Python.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-03-Tactics-Python.ipynb @@ -1223,7 +1223,7 @@ "\n", "Créez un pipeline de tactiques `Then(simplify, solve-eqs)` et appliquez-le a un `Goal` contenant ces contraintes. Affichez les sous-but obtenus, puis resolvez le système avec un `Solver` pour obtenir les valeurs de `a`, `b` et `c`.\n", "\n", - "### Indices\n", + "> **Indices :**\n", "- Créez un `Goal()`, ajoutez les 4 contraintes.\n", "- Construisez `Then(Tactic('simplify'), Tactic('solve-eqs'))` et appliquez-le au goal.\n", "- Utilisez `len(result)` pour le nombre de sous-but et `result[i].size()` pour le nombre de contraintes.\n", @@ -1303,7 +1303,7 @@ "\n", "Trouvez la clef `k` (8 bits) telle que `message ^ k == 0xA5` et `message` soit un multiple de 4.\n", "\n", - "### Indices\n", + "> **Indices :**\n", "- Un multiple de 4 en binaire se termine par `00` (les 2 bits de poids faible sont nuls).\n", "- Contrainte : `(message & BitVecVal(3, 8)) == BitVecVal(0, 8)`.\n", "- Le chiffrement XOR est reversible : `message = 0xA5 ^ k`." @@ -1384,7 +1384,7 @@ "\n", "Verifiez cette propriete en tentant de trouver un contre-exemple (le solveur doit repondre `unsat`).\n", "\n", - "### Indices\n", + "> **Indices :**\n", "- Créez deux tableaux : `seq1 = Store(Store(a, i, v1), j, v2)` et `seq2 = Store(Store(a, j, v2), i, v1)`.\n", "- Ajoutez la contrainte `i != j`.\n", "- Ajoutez `Select(seq1, k) != Select(seq2, k)` pour un index `k` quelconque.\n", diff --git a/scripts/notebook_tools/md_hierarchy_baseline.json b/scripts/notebook_tools/md_hierarchy_baseline.json index d761523a0c..c2627868ad 100644 --- a/scripts/notebook_tools/md_hierarchy_baseline.json +++ b/scripts/notebook_tools/md_hierarchy_baseline.json @@ -1,22 +1,8 @@ { "_comment": "Per-notebook finding counts of scan_md_hierarchy.py. BURNDOWN, do not grow: a PR that increases any count is flagged by scan-md-hierarchy-drift.yml (#11831). Regenerate (same commit as any scanner rule change) with: python scripts/notebook_tools/scan_md_hierarchy.py MyIA.AI.Notebooks/ --update-baseline", - "generated_at": "2026-09-21T13:36:36+00:00", - "total_findings": 113, + "generated_at": "2026-09-25T20:39:54+00:00", + "total_findings": 51, "notebooks": { - "MyIA.AI.Notebooks/GameTheory/GameTheory-14-DifferentialGames.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-5-Multi-Model-TTS-Gateway.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-9-AceStep-Music-Generation.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/GenAI/Audio/06-Diffusion-SOTA/06-1-AudioLDM-SOTA-Comparison.ipynb": { - "H1-DEEP": 5, - "HINT-AS-HEADING": 1, - "MULTI-H1": 1 - }, "MyIA.AI.Notebooks/GenAI/CaseStudies/Fort-Boyard/fort-boyard-python.ipynb": { "H1-DEEP": 1 }, @@ -26,15 +12,6 @@ "MyIA.AI.Notebooks/GenAI/Image/04-Applications/04-2-Creative-Workflows.ipynb": { "HINT-AS-HEADING": 2 }, - "MyIA.AI.Notebooks/GenAI/PostTraining/PT_11b_grpo_qwen_rlvr_on_verifiers.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/GenAI/SemanticKernel/04-SemanticKernel-Filters-Observability.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/GenAI/Texte/22_Evaluating_Generated_Text.ipynb": { - "HINT-AS-HEADING": 1 - }, "MyIA.AI.Notebooks/GenAI/Video/01-Foundation/01-3-Qwen-VL-Video-Analysis.ipynb": { "HINT-AS-HEADING": 2 }, @@ -47,21 +24,6 @@ "MyIA.AI.Notebooks/GenAI/Video/02-Advanced/02-4-SVD-Image-to-Video.ipynb": { "HINT-AS-HEADING": 2 }, - "MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.5c-Equite-Sous-Groupes.ipynb": { - "H1-DEEP": 5, - "HINT-AS-HEADING": 1, - "MULTI-H1": 1 - }, - "MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-DeepLearning/3.9e-Compression-Quantization-SOTA.ipynb": { - "H1-DEEP": 15, - "HINT-AS-HEADING": 3, - "MULTI-H1": 1 - }, - "MyIA.AI.Notebooks/ML/ML.Net/ML-10-TSAD-Benchmark-Flaws-Python.ipynb": { - "H1-DEEP": 3, - "HINT-AS-HEADING": 3, - "MULTI-H1": 1 - }, "MyIA.AI.Notebooks/ML/ML.Net/ML-11-MatrixProfile-Multidim-Python.ipynb": { "H1-DEEP": 7, "MULTI-H1": 1 @@ -70,21 +32,6 @@ "H1-DEEP": 6, "MULTI-H1": 1 }, - "MyIA.AI.Notebooks/Probas/DecisionTheory/DecInfer/DecInfer-01-Utility-Foundations.ipynb": { - "HINT-AS-HEADING": 2 - }, - "MyIA.AI.Notebooks/Probas/DecisionTheory/DecPyMC/DecPyMC-3-Multi-Attribute.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/Probas/Infer/Infer-3-Factor-Graphs.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/Probas/Infer/Infer-8-TrueSkill.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/Probas/PyMC/PyMC-04-Bayesian-Networks.ipynb": { - "HINT-AS-HEADING": 1 - }, "MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-04-Research-Workflow.ipynb": { "H1-DEEP": 2, "MULTI-H1": 1 @@ -96,26 +43,8 @@ "MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-29-Derivatives-Valuation.ipynb": { "H1-DEEP": 1 }, - "MyIA.AI.Notebooks/Search/Applications/Hybrid/App-18-HyperparameterTuning.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/Search/Part1-Foundations/Search-01-StateSpace.ipynb": { - "HINT-AS-HEADING": 1 - }, "MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Agentic-3-orchestration_agent.ipynb": { "H1-DEEP": 1 - }, - "MyIA.AI.Notebooks/SymbolicAI/Planners/02-Classical/Planners-6-Domains.ipynb": { - "HINT-AS-HEADING": 2 - }, - "MyIA.AI.Notebooks/SymbolicAI/Planners/04-NeuroSymbolic/Planners-10-LLM-Planning.ipynb": { - "HINT-AS-HEADING": 1 - }, - "MyIA.AI.Notebooks/SymbolicAI/Planners/04-NeuroSymbolic/Planners-11-Unified-Planning.ipynb": { - "HINT-AS-HEADING": 2 - }, - "MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-03-Tactics-Python.ipynb": { - "HINT-AS-HEADING": 3 } } }