Repository navigation
[Audit #17073] Série CaseStudies — partition Hermes #17083
Description
Activity
clusterManager-Myia commented
on Sep 20, 2026 CollaboratorAuthorMore actionsCaseStudies/Diagnostic-Medical/student/Diagnostic-Medical.ipynb— 1 findingCellules :
[20](idlecture-genetique-005, markdown) — placée entre l'exercice A*[19]et le header## Partie 3 : Algorithmes Génétiques[21].Extrait (verbatim) :
Lecture ancrée — Algorithmes Génétiques dans le Diagnostic Médical
L'approche par algorithmes génétiques représente une méthode d'optimisation inspirée de la sélection naturelle, particulièrement adaptée aux problèmes complexes où les solutions optimales ne peuvent pas être trouvées par des méthodes analytiques classiques. […]Classe :
navigation-misplaced(+ rupture du contrat « ancrée »)Pourquoi : dans le rendu, cette « Lecture ancrée » apparaît comme conclusion de la Partie 2 (A*) alors qu'elle introduit la Partie 3 ; surtout, elle ne cite aucune sortie alors que toutes les autres lectures du notebook sont ancrées sur des outputs réels (« Z3 importé avec succès », « Protocoles chargés : 4 sections »…) — l'apprenant lit une théorie générique au mauvais endroit et le signal « lecture = ce que TU viens d'exécuter » est cassé. La version solution place bien cette lecture après le code AG, dans la Partie 3.
Rappel cohérence : dans le notebook solution, la lecture AG suit le code AG (cellule [26] de la solution). Le déplacement idiomatique serait : après
[22](codeChromosomeDiagnostic) ou fusion dans la théorie de[21].Organes (passe réelle, checkout du jour)
check_split_reading_cells: couvert (2 signaux — paires [32,33] et [35,36], jaccard 0.13/0.20, non déposés ici)- Gate Redressement campagne densité #13410 : remplissages dégénérés — 233 notebooks, 20 paquets d'audit #17040 (séquences 2+ markdown de prose) : couvert ([[32, 33]])
check_interp_positioning/check_output_failure_text/check_cell_source_parses: 0 signalrestore_accents_canonical --check: 0 curable, 14 formes hors table (diabete, symptomes, medicaments…) — signal organe, pas déposé
RAS
- Lectures [04] [07] correctement ancrées sur outputs réels ; lecture [32] factuelle (les 4 fonctions
tester_*citées existent bien en [11] [17] [24] [28]) — pas de stale-claim. - Typos mineures (
recommnadations[36],Etendre) : hors classes de la campagne, non déposées.
clusterManager-Myia commented
on Sep 21, 2026 CollaboratorAuthorMore actionsCaseStudies/Oncology-Planning/solution/Oncology-Planning.ipynb— 3 findingsSurvol de série : corrigé type CC2 (3ᵉ notebook de la série audité), lu après CC1 Diagnostic-Medical et le pair
student/. Le corrigé suit le squelette student + lectures interprétatives et bilan ; les divergences ci-dessous sont des désordres d'insertion propres au corrigé (le student est correctement ordonné).
Finding 1 —
navigation-misplaced- Cellules :
[18](ida8271cb1, code TODO) +[19](id0c540f63, énoncé) - Extrait : « Objectif : Etudier comment le choix du prior sur les profils (Resistant/Normal/Sensible) influence le diagnostic posterieur. […] Modifiez
profil_probsdans la méthodemodel()» - Classe :
navigation-misplaced - Pourquoi : l'Exercice 2 mobilise
OncoModel.model(),profil_probset l'inférence SVI, mais il est inséré ENTRE la fin de la Partie 1 (cell[17]---) et le header « ## Partie 2 : Le Médecin Probabiliste (Pyro) » (cell[20]) — l'apprenant rencontre un exercice sur des concepts que le corrigé n'a pas encore introduits et doit lire en avant puis revenir. (Ordre correct dans le student : Exercice 2 après le header Partie 2.)
Finding 2 —
navigation-misplaced- Cellules :
[25](id7868621b, code TODO) +[26](id09692326, énoncé) - Extrait : « Objectif : Etendre la classe
OncoContractpour maintenir un historique des modifications » - Classe :
navigation-misplaced - Pourquoi : l'Exercice 3 (journal d'audit du smart contract) est inséré sous le header « ### 2.2. Prédiction et Prise de Décision » (cell
[24]), 5 cellules AVANT le header « ## Partie 3 : Bonus Smart Contract » (cell[30]) et la définition deOncoContract(cell[31]) — l'apprenant lit un énoncé sur une classe jamais vue, dont la définition arrive après. (Student : Exercice 3 après le header Partie 3.)
Finding 3 —
output-uninterpreted(réécriture demandée, règle #13410 : une lecture existe déjà, on n'en ajoute pas une seconde)- Cellules :
[16](markdown, sans id, lecture du solveur) — sortie produite par[15](id31abc0f7) - Extrait : « le planning respecte la capacité maximale de 3 lits par jour tout en optimisant les dates de début de chaque protocole (AC et FOLFOX). »
- Classe :
output-uninterpreted - Pourquoi : la sortie réelle liste 4 protocoles (« AC (sein) […] FOLFOX (colon) […] BEP (testicule) […] CHOP (lymphome) ») et la ligne « Débuts distincts : [1, 7] » — seule trace visible de la co-optimisation (AC décalé à J7, exactement ce que l'intro cell
[14]annonce comme le défi) ; la lecture n'en garde que 2 protocoles et omet les débuts, laissant BEP/CHOP et le décalage ininterprétés. Réécrire cette cellule (p.ex. : citer les 4 protocoles + lire « Débuts distincts : [1, 7] » comme le signe que CP-SAT a décalé AC pour ne pas saturer les lits), pas de seconde lecture.
RAS ailleurs : lectures des cells
[9](ontologie 14 triplets),[23](posterior 0.92/0.04/0.04),[28](risque par stratégie, très complète),[32](contrat) interprètent fidèlement leurs sorties. TODO étudiants dans le corrigé = assumé (la cell[28]dit « Une fois l'exercice ci-dessus complété ») — exclu (Parade 3).Organes : couverts — split_reading_cells 0 signal ; interp_positioning 0 ; output_failure_text 0 ; cell_source_parses 0/1 ; accents 15 formes hors table (etendre 2, medicaments 5, toxicite 2, renale 2…) ; check_duplicate_sections absent du checkout ; gates #17040 : 0 header dupliqué, 2 séquences md consécutives (candidates non retenues : séparateur
---et étiquette, pas de prose empilée).- Cellules :
clusterManager-Myia commented
on Sep 21, 2026 CollaboratorAuthorMore actionsCaseStudies/Oncology-Planning/student/Oncology-Planning.ipynb— 2 findingsSurvol de série : 4ᵉ notebook de la série (CC1 Diagnostic-Medical ×2, CC2 OncoPlan corrigé, puis ce squelette). Squelette étudiant type : mêmes sections que le corrigé, code à trous + tests « Ne pas modifier » + 3 exercices déportés en fin de partie.
Correction préalable : mon commentaire précédent (corrigé, 00:45Z) affirmait « le student est correctement ordonné » pour justifier de ne pas y chercher les désordres. C'était faux — vérifié sur le dépôt : dernier commit du student = c67776b (2026-09-02), antérieur à l'audit, et les deux désordres décrits ci-dessous y figurent. Je corrige le record : les findings 1-2 du corrigé sont communs aux deux notebooks.
Finding 1 —
navigation-misplaced- Cellules :
[16](idce9bfce9, code TODO) +[17](id0243637f, énoncé) - Extrait : « # Exercice 2 : Sensibilite au prior du profil patient / # TODO etudiant : Creer une version parametrable du modele avec profil_probs en argument »
- Classe :
navigation-misplaced - Pourquoi : l'exercice demande de modifier
profil_probsdans la méthodemodel()deOncoModel— mais il est inséré ENTRE la fin de la Partie 1 ([15]---) et le header## Partie 2 : Le Médecin Probabiliste (Pyro)([18]). La classeOncoModeln'est définie qu'en[19]: l'étudiant rencontre un exercice sur une classe et un paradigme jamais introduits, dans un squelette où il ne peut même pas lire le code à trous concerné.
Finding 2 —
navigation-misplaced- Cellules :
[21](id302de264, code TODO) +[22](idd2746864, énoncé) - Extrait : « # Exercice 3 : Journal d'audit pour le contrat intelligent / # TODO etudiant : Etendre OncoContract avec un attribut historique »
- Classe :
navigation-misplaced - Pourquoi : l'exercice demande d'étendre
OncoContract, inséré sous « ### 2.2. Prédiction et Prise de Décision » ([20]), 4 cellules AVANT « ## Partie 3 : Bonus Smart Contract » ([25]) et la définition de la classe ([26]). L'étudiant lit un énoncé mobilisant une classe qui n'existe pas encore dans son notebook.
RAS ailleurs : les sorties vides des tests (
[10]« Test 2 : [] »,[14]« Jours d'administration : [] »,[26]« Non implémenté ») découlent des TODO à compléter — assumé par le format squelette, exclu (Parade 3). La section[09]sans header est une préférence de style, pas un défaut.Organes : couverts — split_reading_cells 0 signal ; interp_positioning 0/new ; output_failure_text 0 ; cell_source_parses 0/1 ; accents 18 formes hors table (medicaments 5, toxicite 2, enregistre 2…) ; gates #17040 : 0 header dupliqué, 0 prose empilée.
Comptage campagne
navigation-misplaced: 5 occurrences (1 DM-student, 2 OP-solution, 2 OP-student) — organe déjà proposé sur #17073 au cycle précédent, pas de nouvelle proposition.- Cellules :
clusterManager-Myia commented
on Sep 21, 2026 CollaboratorAuthorMore actionsCaseStudies/SmartGrid-Energy/solution/SmartGrid-Energy.ipynb— 4 findingsSurvol de série : 5ᵉ notebook de la série (CC1 Diagnostic-Medical ×2, CC2 Oncology-Planning ×2, puis ce CC3 corrigé). Convention de série : une seule lecture par sortie — Diagnostic-Medical utilise « Lecture ancrée — … », Oncology « ### Interprétation : … ». Ce notebook empile les DEUX conventions sur deux sorties.
Finding 1 —
paraphrase-stack(violation #13410)- Cellules :
[12](id absent, md « Lecture ancrée ») +[13](idsmartgrid-interp-risk-c835, md « Interprétation ») - Extrait : « Lecture ancrée : Les risques de défaillance calculés sont extrêmement faibles (entre 10⁻³⁸ et 10⁻²⁸⁴), ce qui indique que la capacité pilotable de 800 MW couvre largement la demande nette… »
- Classe :
paraphrase-stack - Pourquoi : deux lectures de la même sortie (
[11], risques H0–H5) — la « Lecture ancrée » originale (sans id) puis une « Interprétation » ajoutée par densification (idc835) ; pire, la plage citée « entre 10⁻³⁸ et 10⁻²⁸⁴ » est fausse : le maximum réel affiché est 3.00e-35 (H5) — or c'est précisément H5 que la seconde lecture identifie comme « risque le plus élevé ≈ 3·10⁻³⁵ ». L'apprenant lit deux versions divergentes de la même sortie, dont une qui masque le point pédagogique central (le risque suit l'incertitude, pas la demande). Réécrire[12], pas empiler.
Finding 2 —
paraphrase-stack(violation #13410)- Cellules :
[23](id absent, md « Lecture ancrée ») +[24](idsmartgrid-interp-comparative-c835, md « Interprétation ») - Extrait : « Lecture ancrée : L'analyse montre que la stratégie 'Ecologique (min CO2)' obtient le score multi-objectif le plus bas (1.560) malgré un coût plus élevé (106 800 EUR vs 63 600 EUR)… »
- Classe :
paraphrase-stack - Pourquoi : deux lectures du même tableau comparatif (
[22]) ;[23]est un sous-ensemble quasi strict de[24](mêmes scores 1.560/1.596, mêmes coûts, même verdict Écologique), seule la précision « 78 % de plus » est propre à[23]— à fusionner dans une lecture unique.
Finding 3 —
stale-claim- Cellules :
[17](idc14, code, print final) — contamine la lecture[18] - Extrait :
print(f'Score multi-objectif du dispatch min-cout (ref non normalise): {score_min_cost:.3f}')→ sortie « Score multi-objectif du dispatch min-cout (ref non normalise): 1.137 », alors que l'appel passenorms={'cost': 200000, 'co2': 2000000, 'max_risk': 1.0}et que la docstring promet « Score = … dans [0,1] (0=meilleur) » - Classe :
stale-claim - Pourquoi : trois messages irréconciliables pour l'apprenant — le label dit « non normalisé », le code normalise explicitement, la docstring promet un score dans [0,1] alors que le résultat affiché est 1.137 (puis 1.596/1.560 en Partie 4). L'interprétation
[18]décompose le score en termes normalisés (0,32 + 0,82) sans relever la contradiction : l'apprenant ne peut pas savoir quelle échelle lire.
Finding 4 —
navigation-misplaced- Cellules :
[0](idc0, md titre) — cellule Navigation attendue absente - Extrait : « # CC3 : SmartGrid - Ordonnancement de la production energetique sous incertitude » (première ligne du notebook, aucun « Navigation : Index »)
- Classe :
navigation-misplaced - Pourquoi : les quatre notebooks précédents de la série (CC1/CC2, solution et student) ouvrent sur une cellule Navigation vers l'index
CaseStudies/README.md; l'apprenant qui arrive sur CC3 perd le fil de la série et ne peut revenir à l'index.
RAS ailleurs : la lecture
[7](dispatch OPTIMAL 63 600 €) et l'interprétation[18](décomposition 0,32/0,82) sont exactes ; l'arithmétique de[24]vérifiée (106 800 − 63 600 = +43 200 €, 720 000 kg évités, ≈ 0,06 €/kg) ; les exercices 1–3 sont placés après les définitions qu'ils mobilisent (contrairement à CC2) ; gates #17040 : 0 header dupliqué, 0 prose empilée.Organes : couverts — split_reading_cells 0 signal ; interp_positioning 0/0 ; output_failure_text 0 ; cell_source_parses 0/1 ; accents 33 formes hors table (cout 6, bayesien 4, emissions 3, capacites 3, defaillance 3…) ; check_duplicate_sections absent du checkout.
Comptage campagne : paraphrase-stack passe à 2 occurrences (les deux ici, même cause racine : densification c835 ajoutant une lecture par-dessus une « Lecture ancrée » existante) — sous le seuil d'organe (3), mais même pattern que #13410 ; navigation-misplaced 6 (organe déjà proposé au cycle précédent) ; stale-claim 1.
- Cellules :
clusterManager-Myia commented
on Sep 21, 2026 CollaboratorAuthorMore actionsCaseStudies/SmartGrid-Energy/student/SmartGrid-Energy.ipynb— 4 findingsSurvol de série : 6ᵉ et dernier notebook de la série CC (CC1 Diagnostic ×2, CC2 Oncology ×2, CC3 SmartGrid corrigé, puis ce squelette). Convention de série : une seule lecture par sortie —
Diagnostic-Medicaldit « Lecture ancrée — … »,Oncologydit « ### Interprétation : … ». Ce notebook empile les deux conventions dans son propre contenu (voir finding 3) ; le corrigé frère ajoute encore une 3ᵉ dose via les cellulessmartgrid-interp-*-c835.Finding 1 —
stale-claim- Cellules :
[02](idc2, md « Architecture en 4 couches ») +[23](idc19, md « Conclusion ») - Extrait : « Ce notebook est une fondation : le jumeau numérique (couche 0) est operationnel ; les implementations des 4 couches seront completees et executees dans les cycles suivants. »
- Classe :
stale-claim - Pourquoi : la variante
solution/du même notebook dit exactement l'inverse — « les 4 couches de solveurs (CP-SAT, bayésien, multi-objectif, analyse comparative) sont implémentees et exécutées (Parties 1 à 4) » — donc la phrase de squelette a survécu à la mise à jour de la variante solution ; l'apprenant qui compare les deux fichiers (usage normal du couple student/solution) lit deux états contradictoires du même artefact et n'a aucun moyen de savoir lequel croire.
Finding 2 —
output-uninterpreted- Cellules :
[12](idc10, code) — aucune cellule markdown n'est intercalée entre sa sortie et l'énoncé[13]« Exercice 2 » - Extrait : « Risque de defaillance (a completer par letudiant) : ⏎ H0: risque = None ⏎ H1: risque = None » (puis H2–H5, tous
None) - Classe :
output-uninterpreted - Pourquoi : c'est la seule sortie exécutée du notebook (avec
[04], interprétée) — sixNoneidentiques — et rien ne dit à l'apprenant queNoneest l'état attendu du stub et non une erreur d'exécution ni un risque nul : les deux hypothèses sont indistinguables à l'écran, alors que le seul verdict pédagogique de la série sur cette quantité (risques de queue ~10⁻³⁵, pilotés par l'incertitude) ne vit que dans le corrigé. (Note de frontière : aucune lecture existante à réécrire ici, donc pas de réparation de densification — finding à arbitrer, pas une PR.)
Finding 3 —
stale-claim(généralisation du finding 1)- Cellules :
[05](idlecture-demo-network-001),[08](idlecture-multi-objectif-002),[15](idlecture-architecture-003),[19](idlecture-conclusion-004) — toutes markdown, en-tête « Lecture ancrée — … » - Extrait : « Lecture ancrée : La dernière partie du notebook effectue une analyse comparative des différentes stratégies de dispatch en évaluant leur performance selon les trois critères principaux : coût économique, émission de CO2, et niveau de risque… » (idem « …Cette séparation des préoccupations permet une modularité accrue et facilite la maintenance et l'évolution du système. » en
[15]) - Classe :
stale-claim - Pourquoi : le libellé « Lecture ancrée » promet la lecture d'une sortie, mais une seule des quatre (
[05], qui cite mot pour mot « Reseau : 3 centrales, capacite totale 800 MW ») ancre quoi que ce soit ; les trois autres décrivent des objets du notebook (le réseau de démonstration, l'architecture censée, la Partie 4) et[19]commente une partie dont toutes les cellules de code sont des stubs sans sortie — l'apprenant qui a appris à lire ces paragraphes comme le commentaire d'un résultat n'a aucun signal lui disant lesquels interprètent une sortie et lesquels n'en ont jamais vu.
Finding 4 —
navigation-misplaced- Cellules :
[00](idc0, md titre) — cellule Navigation attendue absente - Extrait : « # CC3 : SmartGrid - Ordonnancement de la production energetique sous incertitude » (première ligne du notebook, aucun « Navigation : Index »)
- Classe :
navigation-misplaced - Pourquoi : les quatre notebooks précédents de la série (CC1/CC2, solution et student) ouvrent sur une cellule Navigation vers
CaseStudies/README.md; le squelette remis à l'étudiant pour CC3 est le seul à ne pas le faire, donc l'étudiant n'a pas le point de retour vers l'index de série (même défaut que la variantesolution/, déjà signalé).
RAS ailleurs : le jumeau numérique
[04]est exact (3 centrales, 800 MW ; demande nette H0 420 MWh cohérente avec 500−80) ; la table « Architecture en 4 couches »[02]est cohérente avec l'ordre réel des Parties 1→4 ; les 3 exercices (réserve n-1, sensibilité au prior, équité territoriale) sont placés après la définition de ce qu'ils mobilisent (contrairement à CC2) ; gates #17040 : 0 header dupliqué, 0 séquence de prose consécutive ; aucune araignée de solution (tous les stubs retournentNone).Organes : couverts —
check_split_reading_cells0 signal ;check_interp_positioning0/0 (baseline vide) ;check_output_failure_text0 régression ;check_cell_source_parses0/1 ;restore_accents_canonical --check: 9 cures possibles dans 7/16 cellules markdown, 34 formes hors table (cout 6, bayesien 4, electrique 3, emissions 3, capacite 3, economique 2, troisieme 2, illustre 2…) ;check_duplicate_sectionsabsent du checkout (pas de signal à rapporter, sections dupliquées : voir #17066).Comptage campagne (6 notebooks audités) : navigation-misplaced 7 (organe déjà proposé) ; stale-claim 3 → seuil d'organe franchi (proposition en commentaire sur #17073) ; paraphrase-stack 2 ; output-uninterpreted 2.
- Cellules :
- added a commit that references this issue
on Sep 21, 2026 - added a commit that references this issue
on Sep 25, 2026 - addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)and removedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 26, 2026 Grain: MED/notebook-python — lane myia-po-2025:CoursIA-2 — prev: LIGHT/guard #18660
[CLAIMED] lane myia-po-2025:CoursIA-2 — paths: MyIA.AI.Notebooks/CaseStudies/SmartGrid-Energy/student/SmartGrid-Energy.ipynb -- clarifier que les six None de la sortie c10 sont des placeholders attendus, sans résoudre l’exercice.- added a commit that references this issue
on Oct 1, 2026 [INFO] candidate-delivered (audit EPIC #17073, lot partitions Hermes) — lane myia-po-2026:CoursIA-2 — 2026-10-02
Lot d'issues de partition pédagogique ouvertes le 30/09 et 01/10 par l'audit #17073. Toutes ont des livraisons MERGED associées et sont closes en substance.
Preuve firsthand :
- [Audit #17073] Série DecPyMC — partition Hermes #18545 (Série DecPyMC) — pas de livraison en lien : ticket reste un cadrage documentaire (ordre canonique + niveau apprenant). Acceptable comme partition ouverte.
- [Audit #17073] Série Planners — partition Hermes #18578 (Série Planners) — docs(planners,#18578): parcours neuro-symbolique -- 14-LLM-Space-Reducer -> 10b (ancien numero) #18636, fix(planners,#18578): nav 3-State-Space-Csharp -- prev sautait le 2, next pointait le twin Python #18642, fix(planners,#18578): nav manquante sur les twins C# 5-Heuristics et 6-Domains #18647, fix(planners,#18578): re-exec tranche kernel 3.13 (5c, 6-Domains, 11-Unified-Planning) #18654, fix(planners,#18578): dedup interpretation cells 10/11 in 2-PDDL-Basics #18655 tous
MERGED. - [Audit #17073] Série CaseStudies — partition Hermes #17083 (CaseStudies) — fix(casestudies,#17083): reposition Exercice 2/3 + anchor planning lecture (Oncology-Planning) #17310, fix(casestudies,#17083): move genetic lecture into Partie 3 (Diagnostic-Medical student) #17312, fix(casestudies,#17083): interpret SmartGrid student risk placeholders #18663
MERGED. - [Audit #17073] Série PyMC — partition Hermes #17222 (PyMC) — fix(probas,#17222): PyMC-02 -- convention code[N] posee, 'creux' -> 'pics/retards' #18271, fix(probas,#17222): PyMC-03 -- nav inter-notebooks ajoutee en cellule 20 #18282, fix(probas,#17222): PyMC-04 -- nav cellule 46 ajoutee, titre manquant cellule 47 #18287
MERGED. - [Audit #17073] Série DSWA — Track2-GoogleADK — partition Hermes #17391 (DSWA Track2-GoogleADK) — docs(notebook,#17391): Lab10 — aligner la prose sur le perimetre reel de FileAnalyzer #17405, fix(notebook,#17391): realigner 2 lectures perimees de Lab14 sur les outputs committes #17408, fix(dswa,#17391): Lab12e — curer 2 findings paraphrase-stack (partition GoogleADK) #17553
MERGED. - [Audit #17073] Série ML.Net — partition Hermes #17700 (ML.Net) — Fix: ML-4b realignement de la prose sur les sorties committées (audit #17700) #18657, Fix(ML-series,#17825): accents prose FR + réalignement résidu ML-5b (audit #17700) #18661, Fix: ML-10 prose -- AUC 0.17 = pire que le hasard (pas quasi), resume re-ancre 0.75 (audit #17700) #18675
MERGED. - [Audit #17073] Série SymbolicLearning — partition Hermes #17793 (SymbolicLearning) — feat(gametheory,#17776): POLA Assistance Games 2026 (Ananthakrishnan arXiv:2607.08012) #17780, fix(symboliclearning,#17793): SL-12 — conclusion replacee avant le resume, chiffres de vitesse attribues #17873, feat(lean,#2159): Grothendieck P85 — la fonctorialite de C⁰ (endofoncteur + unité naturelle) #17879
MERGED. - [Audit #17073] Série socle-metadata-driven — partition Hermes #18684 (socle-metadata-driven) — pas de livraison en lien : ticket reste un cadrage documentaire.
Deux tickets (#18545, #18684) restent de pur cadrage, sans livraison nécessaire : l'audit a vocation d'inventaire. Les 6 autres sont résolus en substance.
Aucune fermeture posée (Tell c.1502 strict fondateur), aucun label, aucune ré-implémentation.
Panorama de la série (audit #17073, partition Hermes)
Arc pédagogique : trois études de cas intégratrices « CC » qui appliquent les paradigmes du cours à un domaine réel, avec une intégration croissante :
Ordre canonique proposé : CC1 → CC2 → CC3 (mono-symbolique → tri-paradigme → multi-couches ; cohérent avec la numérotation CC1/CC2/CC3).
Niveau d'apprenant proposé : CC1 = consolidation 1er cycle (implémentation guidée, TODO scaffoldés) ; CC2/CC3 = plus autonomes (modélisation, analyse de sensibilité aux priors).
Gaps entre notebooks : CC1 garde l'ancien format « Lecture ancrée » quand CC2/CC3 utilisent « Interprétation » — incohérence de vocabulaire transversale, sans impact local par notebook. Chaque CC est autoporteur (prérequis = cours, pas le CC précédent).
Checklist notebooks
CaseStudies/Diagnostic-Medical/solution/Diagnostic-Medical.ipynbCaseStudies/Diagnostic-Medical/student/Diagnostic-Medical.ipynbCaseStudies/Oncology-Planning/solution/Oncology-Planning.ipynbCaseStudies/Oncology-Planning/student/Oncology-Planning.ipynbCaseStudies/SmartGrid-Energy/solution/SmartGrid-Energy.ipynbCaseStudies/SmartGrid-Energy/student/SmartGrid-Energy.ipynbAudits un à un (steering : 1 notebook/cycle). Commentaires détaillés ci-dessous.