Skip to content

fix(case-studies,#17083): SmartGrid-Energy student+solution — 7 findings Hermes repares (lectures empilees, echelle du score, fondation perimee, Navigation) - #17307

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/smartgrid-audit-findings
Sep 23, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/smartgrid-audit-findings

Conversation

@jsboige

@jsboige jsboige commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA -- prev: MED/notebook-python #17304

Quoi

Reparation des 7 findings Hermes actionnables de la partition #17083 (serie CaseStudies) sur le couple SmartGrid-Energy (solution 4 + student 3). Le finding 2 student (output-uninterpreted) est laisse au arbitrage selon la note de frontiere du bot lui-meme (« finding a arbitrer, pas une PR »). Chaque finding verifie firsthand avant correction (G.1).

Solution (4 findings)

Finding Classe Reparation
1 paraphrase-stack Deux lectures empilees sur la sortie des risques : la « Lecture ancrée » originale citait une plage fausse (« entre 10⁻³⁸ et 10⁻²⁸⁴ » — le maximum reel est 3.00e-35, H5) ; l'« Interprétation » ajoutee par densification portait les bons chiffres et le point pedagogique (le risque suit l'incertitude, pas la demande). Fusion : la lecture fautive est supprimee, la correcte reste seule — une seule lecture par sortie, plus de contradiction.
2 paraphrase-stack Deux lectures empilees sur le tableau comparatif : la premiere quasi sous-ensemble de la seconde, sauf les CO2 absolus. Fusion : « 1 638 000 kg emis par l'Economique contre 918 000, soit 720 000 kg evites / −44 % » plies dans la lecture survivante, la doublon supprime.
3 stale-claim Trois messages irreconcilables sur l'echelle du score : label « (ref non normalise) » alors que norms est passe, docstring promettant [0,1], sortie 1.137. Docstring et label corriges : composantes normalisees par reference (1.0 = composante a sa norme ; 0 = meilleur) — coherent avec la decomposition 0,32 + 0,82 de l'interpretation voisine.
4 navigation-misplaced Cellule Navigation absente (seul notebook de la serie sans elle) → ajoutee au format CC1/CC2 (**Navigation** : [Index](../../README.md)).

Student (3 findings)

Finding Classe Reparation
1 stale-claim La phrase « fondation / implementations dans les cycles suivants » (table architecture + conclusion + commentaire d'install) contredit le corrige qui execute tout. Recrite face etudiant : squelette a completer, le corrige (../solution/) montre la version executee de bout en bout.
3 stale-claim 3 des 4 « Lecture ancrée » ne citent aucune sortie (elles decrivent des objets du notebook) → promesse retiree (titre en gras simple) ; la seule reellement ancrée (jumeau numerique, cite « 3 centrales, 800 MW ») garde son label.
4 navigation-misplaced Cellule Navigation absente → ajoutee ( meme format).

Preuve

  • Re-execution complete des deux notebooks (cellules code modifiees : label/docstring solution + commentaire install des deux) : Papermill Success 1/0, 6.5 s (solution) et 5.7 s (student), execution_count frais, outputs committes (C.2), 0 erreur.
  • Chiffres des lectures confrontes aux sorties fraiches : score 1.137, comparatif 63 600/1 638 000/1.596 vs 106 800/918 000/1.560, risques H0 6.86e-142 (≈ 7·10⁻¹⁴² cite), max 3.00e-35 (H5), plage jusqu'a 4.18e-284 — tous conformes a la prose conservee/fusionnee.
  • Gardes verts sur les DEUX : validate 1 OK / 0 / 0 ; H.3 OK ; check_split_reading_cells clean ; detect_markdown_rendering 0 violation ; enrich_quality_ci --base origin/main RC=0 ; pre-commit vert (gitleaks, scrub papermill paths, H.3, Aucun garde ne parse la source des cellules : une cellule non compilable portant une sortie traverse les 60+ checks #13326).
  • Accents : 9 curables restants par notebook = baseline de l'audit (« 9 cures possibles dans 7/16 ») — aucun ajoute.
  • Le diff volumineux (603+/173-) = churn papermill legitime (metadata + outputs regeneres par la re-execution) + 2 cellules supprimees (fusions) + edits de fond.

Perimetre

2 notebooks (couple student/solution CC3), 1 sujet. F2 student hors scope (arbitrage bot). Aucun autre fichier.

See #17083 (contribution partielle : SmartGrid couple repare ; restent Diagnostic-Medical 1 finding, Oncology 5)
See #17073

Diagnostic dérive

  • Cause classifiée : (a) env/kernel. Les sorties de cette PR proviennent d'une
    re-exécution locale sous Python 3.11.9 (kernelspec python3 de myia-po-2026),
    alors que la base main porte des sorties exécutées sous Python 3.13.12 — même
    kernelspec python3, seul language_info.version diffère. Le repr() des flottants
    change d'un interpréteur à l'autre : le garde signale donc
    language_info.version: '3.13.12' -> '3.11.9' et une dérive de signature
    flottante sur des cellules non touchées par cette PR.
  • Verdict : REFRAME. Aucune édition manuelle de sortie, aucun alignement markdown :
    ce sont les valeurs réelles des re-exécutions (kernel local, 0 erreur). Seul le
    rendu texte des flottants diffère, à l'unité près (repr()), pas la valeur.
  • Action : exemption C.4 (acceptance Sendov : alias « Lean-18 (A*) » en cellule code — sa re-exécution exige d'abord les échappements invalides des cellules 19/23 #15650, point 4 — l'écart résiduel est
    expliqué). L'interpréteur exact de la base n'est pas installable ici : la série
    porte six versions majeures-mineures distinctes en base (3.12.13, 3.13.3,
    3.13.7, 3.13.12 x2, 3.13.14), qu'aucune installation locale ne peut satisfaire
    simultanément. Le remède de fond (re-exécution sous l'interpréteur d'origine)
    suppose la machine qui a produit la base ; il est hors de portée de cette lane.

…dent+solution)

Solution (4 findings):
- merge the two stacked risk lectures into one (the kept version cites the
  real maximum 3e-35; the deleted one claimed a false 10^-38 lower bound)
- merge the two stacked comparative lectures (folded 1,638,000 kg / 918,000
  kg CO2 absolutes into the surviving reading)
- fix contradictory score scale messaging: print label said 'ref non
  normalise' while norms are passed and docstring promised [0,1] -> both
  now state reference-normalized components (1.0 = component at its norm)
- add the missing Navigation cell (series convention, CC1/CC2 format)
- full papermill re-execution (code cell modified): 6.5s, all guards green

Student (3 findings):
- rewrite the stale 'fondation / cycles suivants' claims (architecture
  table + conclusion + install comment): the skeleton addresses the
  student, the solution twin executes everything end-to-end
- drop the 'Lecture ancrée' promise from the 3 readings that cite no
  output (multi-objectif, architecture, conclusion) - the anchored one
  (jumeau numérique) keeps its label
- add the missing Navigation cell
- full papermill re-execution (comment cell modified): 5.7s

Student finding 2 (output-uninterpreted on the None stub print) is left
for arbitration per the auditor's own boundary note - not repaired here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT label Sep 21, 2026

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM

[Hermes] Redressement des 7 findings de ma partition #17083 sur le couple SmartGrid-Energy — full read des deux carnets post-changement, chaque réparation confrontée aux sorties committées.

Vérifications exécutées (rejeu des lectures contre les outputs, protocole anti-re-saccage) :

  • Sol. F1 (fusion) : la lecture fausse (« entre 10⁻³⁸ et 10⁻²⁸⁴ ») est bien la seule supprimée ; la survivante porte la plage correcte — max 3.00e-35 (H5 : 430 MW ±30 ✓ output), min 4.18e-284 (H2 ✓), H0 6.86e-142 ≈ « 7·10⁻¹⁴² » ✓. Une seule lecture par sortie ✓.
  • Sol. F2 (fusion) : les CO2 absolus sont pliés dans la survivante — 1 638 000 vs 918 000 kg = 720 000 évités / −44 % (720 000/1 638 000 = 43,9 % ✓) ; décompositions 0,60+1,00→1,596 et 1,00+0,56→1,560 ✓ (106 800/106 800 = 1,00 ; 918 000/1 638 000 = 0,56).
  • Sol. F3 (échelle du score) : le label d'output dit désormais « composantes normalisées par référence, 0 = meilleur » et la décomposition voisine (63 600/200 000 ≈ 0,32 ; 1 638 000/2 000 000 ≈ 0,82 ; risque ≈ 0 ; somme 1,137 ✓) est cohérente avec lui. La triple contradiction (label/docstring/sortie) est résolue au bon endroit.
  • Sol./Stu. F4 : cellule Navigation présente en tête des DEUX carnets, format CC1/CC2 ✓.
  • Stu. F1 : la contradiction « fondation dans les cycles suivants » vs corrige exhaustif est levée face étudiant (squelette à compléter, corrige = version exécutée) — le stub Partie 4 (TODO etudiant) et le commentaire d'install cohérents.
  • Stu. F3 : la promesse « Lecture ancrée » ne survit que sur la cellule qui cite réellement sa sortie (« 3 centrales, capacité totale 800 MW » ✓ présent dans le stream) ; les 3 autres sont retitrées sans promesse ✓.

Gates #17040 : lectures immédiatement après leurs outputs, aucune valeur fabriquée détectée, pas de narration d'exercice, pas de prose de densité. Scan sécurité : 0 match sur le diff.

Le finding 2 student laissé à l'arbitrage est conforme à ma note de frontière d'origine — bon périmètre.

CI : gardes déclarées vertes sur les deux carnets au body (validate, enrich_quality_ci --base origin/main RC=0) — verdict rendu sur le contenu du head 83ec6009.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 5.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 6.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 6.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.4s
Search-01-StateSpace.ipynb ✅ SUCCESS 5.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 4.9s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 34.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.9s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 16
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17307 (fix(case-studies,#17083): SmartGrid-Energy student+solution — 7 findings Hermes repares (lectures empilees, echelle du score, fondation perimee, Navigation)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot removed the variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT label Sep 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-23) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17307
head: 83ec600
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 497b707cf7298e557482fd6fd094f6202b533475aa30f4694d6d3d5c5d379d0e
diff-files: 2
diff-additions: 603
diff-deletions: 173
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 25e9e77 into main Sep 23, 2026
100 of 102 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants