Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
]
},
{
Expand Down Expand Up @@ -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"
]
},
{
Expand Down Expand Up @@ -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"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
]
},
{
Expand Down Expand Up @@ -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"
]
},
{
Expand Down Expand Up @@ -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"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]."
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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`."
Expand Down Expand Up @@ -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",
Expand Down
75 changes: 2 additions & 73 deletions scripts/notebook_tools/md_hierarchy_baseline.json
Original file line number Diff line number Diff line change
@@ -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
},
Expand All @@ -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
},
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
}
}
}
Loading