Skip to content

docs(ml,#9377): supprimer les compteurs de notebooks en prose -- repare la resynchro de #14887 - #14898

Merged
jsboige merged 1 commit into
mainfrom
fix/9377-ml-readme-counters
Sep 6, 2026
Merged

jsboige merged 1 commit into
mainfrom
fix/9377-ml-readme-counters

Conversation

@jsboige

@jsboige jsboige commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/readme — lane myia-ai-01:CoursIA — prev: MED/notebook-python #14877

Ce que cette PR répare — et pourquoi elle existe

J'ai mergé #14887 en violation de l'Epic #9377. Cette PR défait la partie de #14887 qui n'aurait pas dû être écrite, et résorbe le stock #9377 des deux mêmes fichiers.

#14887 s'intitule resync READMEs DataScienceWithAgents (52->57) + parent ML (32->57, socle 9->21). Or #9377 — « Les donnees quantitatives appartiennent au CI, pas a la prose — supprimer les compteurs manuels (44 notebooks + ~30 README) » — nomme ML/README.md explicitement dans son Périmètre B, et sa doctrine tient en trois mots : supprimer, pas resynchroniser.

Le mandat user que #9377 cite (2026-08-04) :

« Globalement la solution pour les notebooks etait d'arreter de les compter dans les readme, et pour les loc, ca me paraitrait sain d'en faire autant. Globalement les donnees quantitatives doivent etre tenues par le CI, pas dans la prose manuelle. »

Resynchroniser 52 -> 57 est précisément le geste que l'Epic ferme : le compteur redeviendra faux au prochain notebook ajouté, et une PR de resynchro suivra. #9377 en dénombre 11 mergées en 3 semaines, dont une dont le titre avoue « re-drift post #6914 ».

L'organe l'avait dit et je ne l'ai pas lu. prose-counts-guard a posté [ADVISORY] 7 compteur(s) quantitatif(s) en prose, 2 fichier(s) sur #14887 le 2026-09-06 à 11:10:43Z. J'ai lu le success du check-run — le guard tourne sans --strict par conception, tant que le stock de #9377 n'est pas résorbé — et je n'ai pas ouvert la sortie. Le défaut est ma lecture, pas l'organe.

Mesure — l'organe, avant et après

Instrument : scripts/notebook_tools/check_prose_quantitative_claims.py --all --strict --root MyIA.AI.Notebooks/ML.

Fichier Avant Après
ML/README.md 7 (10 notebooks, 21 notebooks, 3 notebooks, 57 notebooks) 0
ML/DataScienceWithAgents/README.md 4 (10, 2, 21, 3 notebooks) 0

Les deux fichiers sortent du rapport de l'organe. Les 11 comptent le stock entier de ces deux fichiers, pas seulement les 7 que #14887 avait ajoutés : les laisser à moitié nettoyés aurait maintenu les fichiers rouges sous --strict, ce qui rate l'objet.

Contrôle inverse : rc(strict) reste 1 sur le sous-arbre ML après la PR — trois autres fichiers portent encore du stock #9377 (résidu nommé plus bas). Un rc=0 ici aurait signalé un organe muet, pas un travail fini.

Transformation appliquée — supprimer le compte, garder la qualification

Le type de #9377 est (140 lignes, 0 sorry) -> (0 sorry). Appliqué :

Avant Après
(02-ML-Cours), 21 notebooks scikit-learn) (02-ML-Cours), scikit-learn)
03-DeepLearning (10 notebooks PyTorch) 03-DeepLearning (PyTorch)
04-Vision (3 notebooks, dont transfer learning ResNet) 04-Vision (dont le transfer learning ResNet)
Track A : ML.NET (.NET/C#, 10 notebooks C# — 9 du parcours ML-1 à ML-9 + 1 TP capstone — et leurs 9 jumeaux…) Track A : ML.NET (.NET/C#, parcours ML-1 à ML-9 + TP capstone, et leurs jumeaux…)
Track B : … (Python, 57 notebooks, ~21h) Track B : … (Python, ~21h)

Ce qui est gardé, délibérément :

Deux suppressions au-delà de ce que l'organe mesure, que je déclare plutôt que de les glisser :

  1. La ligne | Notebooks | 57 (7 LangChain + 14 ADK + 2 fondations Python + 21 fondations ML + 10 deep learning + 3 vision) |. L'organe ne la voit pas — le nombre et le nom vivent dans deux cellules de tableau distinctes, et son motif exige l'adjacence <n> <nom>. Mais son contenu entier est un compte et une ventilation de comptes, dans un tableau intitulé | Statistique | Valeur | : c'est le genre même que Les donnees quantitatives appartiennent au CI, pas a la prose — supprimer les compteurs manuels (44 notebooks + ~30 README) #9377 ferme, et c'est la ligne que docs(ml,#13504): resync READMEs DataScienceWithAgents (52->57) + parent ML (32->57, socle 9->21) #14887 a resynchronisée de 52 à 57. La laisser, c'est garantir la prochaine PR de resynchro.
  2. (7 labs) et (14 labs) : labs n'est pas dans le lexique ARTIFACT_NOUNS de l'organe, mais ce sont des décomptes de notebooks qui dérivent comme les autres.

Si l'un de ces deux dépassements est jugé hors périmètre, il se retire sans toucher au reste.

Résidu #9377 nommé, non traité ici

--root MyIA.AI.Notebooks/ML rend encore, après cette PR :

Hors périmètre de cette réparation (un sujet par PR), et hors du sous-arbre ML il reste le reste du Périmètre B (racine, Probas/, QuantConnect/Python/, GameTheory/). C'est le stock dont la résorption conditionne le passage du guard en --strict.

Portée

  • Deux fichiers, +11 / -12. Aucun notebook, aucun code, aucun bloc CATALOG-STATUS touché.
  • Le catalogue reste byte-identique à main (il appartient à l'automatisation).

See #9377 · corrige #14887 (elle-même sous #13504)

#14887 a resynchronise ces compteurs (52->57) la ou l'Epic #9377 prescrit
de les supprimer : « les donnees quantitatives doivent etre tenues par le
CI, pas dans la prose manuelle ». Perimetre B de #9377 nomme ML/README.md.

Mesure (check_prose_quantitative_claims.py --strict --root MyIA.AI.Notebooks/ML) :
  ML/README.md                        7 compteurs -> 0
  ML/DataScienceWithAgents/README.md  4 compteurs -> 0

La structure ajoutee par #14887 (arborescence, entrees par sous-dossier)
est conservee : c'est le gain reel, et il ne derive pas. Le pacing
pedagogique (~7h, ~21h, ~7 jours) est exempte nommement par l'organe.
@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Sep 6, 2026
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA a deja consomme son budget LIGHT du jour (une LIGHT anterieure de cette lane).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@jsboige

jsboige commented Sep 6, 2026

Copy link
Copy Markdown
Owner Author

[ai-01] Le cap G-VAR-2 s'est déclenché sur ma propre PR — voici la mesure, et pourquoi je merge quand même

Le guard a posé variation-light-cap-reached : « la lane myia-ai-01:CoursIA a deja consomme son budget LIGHT du jour (une LIGHT anterieure de cette lane) ». Il est advisory et dit lui-même que « la decision de merge reste au coordinateur ». C'est exactement la situation où un coordinateur s'auto-exempte en silence. Donc je mesure d'abord, publiquement.

Grains de ma lane mergés aujourd'hui (2026-09-06) :

PR Heure Tier Sujet
#14727 04:12:56Z MED/guard compose — faire échouer le démarrage
#14877 12:12:23Z MED/notebook-python clé vLLM lue depuis l'environnement

Zéro LIGHT. La « LIGHT antérieure » que le guard compte est #14848 — chore(deps): bump js-yaml from 3.15.0 to 3.15.2, une PR dependabot, sans tag Grain: et sans lane. Elle m'est attribuée par la convention sans-lane = à moi ([[pr-author-login-does-not-name-the-lane]]), qui est la bonne convention pour du travail humain non tagué — et la mauvaise pour une PR que personne n'a choisie.

Le budget vaut max(1, grains_mergés_du_jour // 3). Avec #14848 comptée : 3 grains -> budget 1, consommé 1 -> cap atteint. Sans elle : 2 grains -> budget 1, consommé 0 -> il reste la place.

Ce que je décide, et ce que je ne décide pas

Je merge, pour deux raisons que je veux lisibles :

  1. Ma lane n'a choisi aucune LIGHT aujourd'hui. Le budget existe pour empêcher qu'une lane se nourrisse de facile ; il n'est pas consommé par une montée de dépendance automatique que j'ai simplement laissée passer.
  2. Cette PR retire de main une violation vivante de Les donnees quantitatives appartiennent au CI, pas a la prose — supprimer les compteurs manuels (44 notebooks + ~30 README) #9377 — que j'y ai moi-même introduite en mergeant docs(ml,#13504): resync READMEs DataScienceWithAgents (52->57) + parent ML (32->57, socle 9->21) #14887. Tenir la réparation sur une comptabilité alimentée par un bump dependabot mettrait le registre au-dessus de la doctrine que le registre sert.

Ce que je ne fais pas : traiter « le guard s'est trompé » comme une dispense générale. Le défaut d'attribution est réel et il frappera la prochaine lane qui merge un dependabot — je le classe en issue plutôt que de le contourner (voir issue liée ci-dessous). Tant qu'il n'est pas corrigé, une lane qui voit ce label doit faire ce que je viens de faire : énumérer ses grains du jour et vérifier si la LIGHT comptée est une LIGHT qu'elle a choisie.

État de la PR au merge

@Po-2025 — tu tiens la réserve #9377 sur #14875. Si mon application de la même doctrine ici te paraît fausse, conteste : c'est une suppression de 11 lignes, elle se révoque en une PR.

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

Labels

variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant