Skip to content

pedagogy_density_baseline.json : 48 cles orphelines laissees par la campagne de renum, et aucun refresh automatique #13815

Description

@myia-ai-01

Le fait

scripts/notebook_tools/pedagogy_density_baseline.json porte 48 cles orphelines : des chemins de notebooks qui n'existent plus, laisses par la campagne de renumerotation/reclassement.

count declare        : 814
cles dans le fichier : 814
notebooks traques    : 1198
CLES ORPHELINES      : 48

Mesure (sur main a 9803c6de2, 2026-08-31) :

import json, subprocess
d = json.load(open('scripts/notebook_tools/pedagogy_density_baseline.json', encoding='utf-8'))
tracked = set(x for x in subprocess.run(['git','ls-files','*.ipynb'],
                                        capture_output=True, text=True).stdout.split('\n') if x)
orph = sorted(k for k in d['notebooks'] if k not in tracked)
print(len(orph))   # -> 48

D'ou elles viennent — ce sont des renommages, pas des suppressions

Les familles orphelines correspondent une a une a des reclassements deja mergés :

Famille orpheline Cles Renommage a l'origine
GameTheory-2..9* 28 reclassement de la serie GameTheory
GenAI/.../AI-Engine-WordPress/* 8 deplacement de sous-serie
Probas/PyMC/PyMC-2..9 8 0d3b026f9 — zero-pad PyMC 1-9 en 01-09
Search/Applications/Search/App-12-ConnectFour* 2 07bf76093 — App-12 devient App-14b/14c
SymbolicAI/Lean/Lean-11-TorchLean-Python 1 b56d8f116 — devient Lean-11b
GenAI/SemanticKernel/Createur de mail personnalise 1 a tracer

Le cas App-12-ConnectFour est le meme renommage qui a laisse main rouge sur check-navlinks le 2026-08-31 au matin (referents non suivis dans Search-17, repare par #13805). Le baseline est la seconde surface que ce renommage a laissee derriere lui — celle qui, elle, n'a rougi nulle part.

Pourquoi ca ne se repare pas tout seul

Le seul workflow qui touche ce fichier est .github/workflows/pedagogy-density-advisory.yml, et il ne peut pas ecrire :

permissions:
  contents: read          # <-- pas write

Aucune etape git commit / git push / create-pull-request n'y figure. Le refresh est manuel (python scripts/notebook_tools/pedagogy_density.py --update-baseline).

C'est une correction a apporter a la lecture courante : la review Hermes de #13796 ecrit que « le baseline se regenere au prochain refresh ». Il n'y a pas de prochain refresh automatique. Une cle orpheline y reste jusqu'a ce que quelqu'un lance la commande.

Ce que la campagne fait deja bien — et qu'il suffit de generaliser

Deux PRs de renum ouvertes mettent deja le baseline a jour, et de la bonne facon : un renommage chirurgical de la cle qui preserve la valeur de densite, pas une regeneration complete.

# #13797 (Search-15/16 -> 02b/02c) : +3/-3
-    "…/Search-15-NetworkX.ipynb": 772.048,
+    "…/Search-02b-NetworkX.ipynb": 772.048,

# #13804 (QC-Py-Cloud-01 -> 03b) : +1/-1
-    "…/QC-Py-Cloud-01-RiskParity-Composite.ipynb": 2224.667,
+    "…/QC-Py-Cloud-03b-RiskParity-Composite.ipynb": 2224.667,

La regeneration complete est a eviter : elle produirait un diff massif melant des entrees sans rapport avec le livrable — le poison-catalogue que catalog-pr-hygiene.md ferme deja pour COURSE_CATALOG.generated.json.

Acceptance

  1. Rattrapage : les 48 cles orphelines resolues — chacune soit renommee vers son chemin actuel en preservant sa valeur, soit retiree si le notebook a reellement disparu (a trancher cle par cle, pas en bloc : une valeur de densite perdue est une mesure perdue).
  2. Prevention : que la prochaine PR de renum ne puisse plus l'oublier. Deux voies, a trancher — (a) un organe advisory qui compte les cles orphelines et le signale sur la PR qui renomme ; (b) une ligne dans la procedure de renum. La (a) est preferable : la (b) repose sur la vigilance, et c'est precisement ce qui a produit 48 orphelines.
  3. Correction de doc : partout ou l'on suppose un refresh automatique de ce baseline, ecrire qu'il est manuel.

Hors scope

Origine

Trouve en arbitrant la reserve Hermes de #13796 (reclassement Z3-Python-07 -> 01b), qui signalait l'instance n° 49. Cette issue porte les 48 autres, que personne ne regardait.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions