Skip to content

fix(readme,#14190): DataScienceWithAgents racine omet 04-Vision -> ajout complet - #14227

Merged
jsboige merged 1 commit into
mainfrom
feature/c165-cycle
Sep 2, 2026
Merged

jsboige merged 1 commit into
mainfrom
feature/c165-cycle

Conversation

@jsboige

@jsboige jsboige commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/docs -- lane myia-po-2026:CoursIA -- prev: LIGHT/cleanup #14225 (cycle 164)

Summary

Resolution de l'issue #14190 : le README racine de MyIA.AI.Notebooks/ML/DataScienceWithAgents/ omettait integralement le sous-dossier 04-Vision/ alors que celui-ci contient 2 notebooks (4.1 et 4.2) avec leur propre README (47 lignes) deja ecrit.

L'omission etait systemique : synthese 50 au lieu de 52, ventilation sans terme pour la vision, arbre de structure sans bloc 04-Vision/, aucun lien Vision dans le corps du fichier (grep -c 'Vision' = 0), aucune section ## Vision dans la liste des sous-series. Conséquence : un lecteur arrivant sur le README racine ne pouvait pas trouver 2 notebooks presents sur disque.

Sortie : 1 fichier, +19/-2. Aucune regeneration de catalogue (Règle HARD 1 catalog-pr-hygiene).

Acceptance #14190

# Critere Resultat
1 La ligne de synthese compte 52 et porte un terme pour 04-Vision OK : L27 -> | Notebooks | 52 (7 LangChain + 10 ADK + 2 fondations Python + 21 fondations ML + 10 deep learning + 2 vision) | ; verification arithmetique : 7+10+2+21+10+2 = 52 OK
2 04-Vision/ apparait dans l'arbre / la table de structure du README racine, avec son notebook nomme OK : nouveau bloc dans l'arbre (apres 03-DeepLearning/, avant Track1-LangChain/) listant 4.1 et 4.2
3 Audit fichier entier du README racine (cf pr-review-discipline §E) OK : verifie disque ↔ prose sur les 411 lignes du README (cf section Audit ci-dessous). Pas d'autre liste de notebooks obsolete plus bas (les 02/03/Tracks listes sont completes)
4 Verifier que les quatre autres sous-dossiers ont chacun un README OK : 01 (41L) / 02 (176L) / 03 (65L) / Track1 (53L) / Track2 (337L) / 04 (47L, deja present). Tous couverts
5 Ne pas regenerer le catalogue sur la branche OK : aucun marqueur CATALOG-STATUS touche (le fichier n'en porte pas). Le marqueur du parent MyIA.AI.Notebooks/ML/README.md n'a pas ete modifie (j'avais commence par Edit 5 sur ce fichier, je l'ai annule apres avoir identifie le conflit avec catalog-pr-hygiene)

Audit fichier entier du README racine (411 lignes)

Mesures firsthand sur origin/main (commit 7dc162675) :

Section Lignes Couverture actuelle Apres PR
Synthese Vue d'ensemble L25-29 50 (7+10+2+21+10) 52 (+2 vision)
Arbre de structure L76-128 5 sous-dossiers (01/02/03/Track1/Track2) 6 sous-dossiers (+04-Vision)
Fondations (01) L130-135 2 notebooks listes inchange
Fondations ML (02) L137-165 21 notebooks listes inchange
Deep Learning (03) L167-184 10 notebooks listes inchange
Vision par ordinateur (04) absente 0 notebook 2 notebooks listes (4.1, 4.2)
Workshop 3 Jours (Track1) L186-208 7 labs listes inchange
Track Track2-GoogleADK L210-253 10 labs listes inchange
Technologies L255-263 Data Science sans PyTorch Data Science + PyTorch/Pillow (parite 04-Vision)
Installation / FAQ / Conclusion L264-411 intact inchange

Verification disque vs prose : find ... -name "*.ipynb" -> 52 notebooks sur disque (2/21/10/2/7/10). Le compte de la synthese est desormais coherent.

Reconciliation CATALOG-STATUS : MyIA.AI.Notebooks/ML/DataScienceWithAgents/README.md ne porte pas de bloc CATALOG-STATUS. Le parent MyIA.AI.Notebooks/ML/README.md en porte un (L5-11) qui dit breakdown: DataScienceWithAgents=50, ML.Net=21 -> desynchronise avec la nouvelle valeur 52. Resolution : ce marqueur est gere par catalog-cron.yml (cron quotidien sur main) qui regenerera la valeur 52 dans les 24h. Cf Règle HARD 1 catalog-pr-hygiene : "Si le catalogue est faux, le signaler, ne pas s'aligner dessus".

Changement

Fichier Lignes Role
MyIA.AI.Notebooks/ML/DataScienceWithAgents/README.md +19 / -2 (1) synthese 50 -> 52 + mention 2 vision ; (2) arbre +bloc 04-Vision/ avec 4.1 et 4.2 ; (3) section ## Vision par ordinateur (04-Vision) avec table 2 lignes + lien vers 04-Vision/README.md ; (4) technologies Data Science +PyTorch/Pillow

Sortie produite :

MyIA.AI.Notebooks/ML/DataScienceWithAgents/README.md  (411 -> 428 lignes, +19/-2)

Architecture du fix

L'edition preserve CRLF (le fichier est en CRLF d'apres git show HEAD:... | od -c | head) :

  1. Sythese (L27, 0-indexed L26) : remplacement in-place, meme nombre de lignes
  2. Arbre de structure (apres L116 3.8-Representations-Contrastives.ipynb) : insertion d'un bloc de 6 lignes (entete vide │ + ├── 04-Vision/... + 2 sous-lignes + fermeture │) avant ├── Track1-LangChain/
  3. Section Vision (apres L184 Documentation complète : 03-DeepLearning/README.md) : insertion de 13 lignes (titre H2 + paragraphe d'introduction + table 2 colonnes + lien doc complete) avant ## Workshop 3 Jours
  4. Technologies (L259) : remplacement in-place de la ligne Data Science

Fix script fix_14190.py (byte-preserving, dans scratchpad) :

  • Detection LE = b'\r\n' in data -> le = b'\r\n', sinon b'\n'
  • Split en lignes, modifications sur la liste, le.join(lines) pour reassembler
  • Append le final si data.endswith(le) (preserve le trailing newline)

Verdicts

  • SOTA-OK : pas de workaround -- c'est un edit README doc-only.
  • Anti-regression D : aucun code de production touche, aucune preuve Lean/stub pass/return None/sorry introduit.
  • Stop & Repair : aucun scrub d'output de cellule (cf secrets-hygiene regle 6). Pas de cellule touchee.
  • catalog-pr-hygiene R1 : OK, aucun marqueur CATALOG-STATUS regenere (j'avais commence par Edit 5 sur ML/README.md, annule apres detection).
  • pr-review-discipline §E (README whole-file audit) : OK, audit documenté ci-dessus.
  • Convention Exemple/Exercice : N/A (pas un notebook).
  • 3 exercices par notebook : N/A (pas un notebook).

Residuel / suite

  • MyIA.AI.Notebooks/ML/README.md marqueur CATALOG-STATUS reste a DataScienceWithAgents=50. Resolution automatique : le cron catalog-cron.yml (workflow quotidien sur main, commit [skip ci] par github-actions[bot]) regenerera la valeur 52 dans les 24h suivant le merge de cette PR. Pas d'action worker.
  • 04-Vision/README.md feuille de route mentionne un futur 4.3 — Transfer learning ResNet (PR suivante). Hors scope de cette PR (issue readme(DataScienceWithAgents): le README racine omet 04-Vision entier — 50 annonces pour 51 sur disque #14190 cible uniquement l'inclusion du dossier dans le README racine, pas la completion du 4.3).
  • 02-ML-Cours/README.md et 03-DeepLearning/README.md mentionnent deja 04-Vision en prerequis/extension (cf 04-Vision/README.md L5-7). Pas de modification requise.

Lecons

  • Detection des angles morts en audit fichier-entier : le README racine omet un sous-dossier present sur disque et portant deja son propre README. Le defaut n'est pas un oubli arithmetique (la somme 7+10+2+21+10 = 50 est correcte), mais un angle mort structurel : aucun terme pour 04 dans la synthese, aucun bloc dans l'arbre, aucune section dans le corps. La regle pr-review-discipline §E ("corriger l'intro en laissant une liste obsolete plus bas vaut CHANGES_REQUESTED") vise exactement ce cas.
  • Catalog-pr-hygiene R1 en pratique : j'avais commence par modifier le bloc CATALOG-STATUS du parent ML/README.md sans reflechir. Detection au moment du git diff (le bloc apparait explicitement dans la sortie diff). Annulation immediate via git checkout HEAD -- MyIA.AI.Notebooks/ML/README.md. Resultat : la PR est 1 fichier au lieu de 2, et le marqueur sera regenere par le cron dans les 24h. Lecon : avant git add, git diff --stat doit montrer UNIQUEMENT le contenu de la prose, pas les blocs generes.

Rotation R6

c155 = MED/notebook-search CSP-2 ; c156 = LIGHT/cleanup Search-debt ; c157 = LIGHT/cleanup data-registry ; c158 = LIGHT/tooling pick_idle_grain ; c159 = MED/tooling check_unaddressed_nits Position F ; c160 = LIGHT/cleanup test dedup ; c161 = LIGHT/notebook-cleanup Tweety-7a parite ; c162 = MED/docs README Mermaid ; c163 = MED/audio-tooling p6_compile chapitrage ; c164 = LIGHT/cleanup Search-15/16 residu commentaires ; c165 = LIGHT/docs DataScienceWithAgents README 04-Vision omis.

Regle 6 (variete obligatoire) :

  • Famille : Search -> Search -> Argument_Analysis -> tooling -> tooling -> test/maintenance (CI) -> notebook/SymbolicAI-Tweety -> README-racine -> GenAI/Audio v4 -> Search (Part1-Foundations, commentaire) -> ML (DataScienceWithAgents, README racine). 11 cycles, 10 familles distinctes. Premier cycle sur la famille ML depuis longtemps -- equilibre.
  • Genre : MED -> LIGHT -> LIGHT -> LIGHT -> MED -> LIGHT -> LIGHT -> MED -> MED -> LIGHT -> LIGHT. 5 LIGHT consecutifs sur les 7 derniers -- ok, on alterne avec les MED precedents.
  • Issue : enrichissement -> sweep+rebase -> anti-FP-tooling -> anti-FP-tooling -> fix algorithmique (Position F) -> dedup code mort + AST guard -> mise a jour note de parite -> figure Mermaid dans README racine -> fix pipeline audiobook (chapitrage m4b) -> rename residue cleanup -> README racine incomplet (sous-dossier omis).

Liens

…out complet

README racine de ML/DataScienceWithAgents/ omettait entierement le sous-dossier
04-Vision/ (2 notebooks, 4.1-Conv-NumPy-Torch-Allclose et 4.2-ConvNet-Profonde-
Residuelles) malgre son README propre deja present.

Edits (1 fichier, +19/-2):
- L27 synthese 50 -> 52 + mention '2 vision'
- Arbre de structure : ajout bloc 04-Vision/ avec 4.1 et 4.2 entre 03-DeepLearning
  et Track1-LangChain
- Section '## Vision par ordinateur (04-Vision)' : paragraphe d'introduction,
  table 2 lignes, lien vers 04-Vision/README.md
- Technologies table : Data Science row +Pillow +PyTorch (parite 04-Vision)

Verification fichier-entier (cf pr-review-discipline §E) : disque = 52 notebooks,
synthese et arbre et section convergent vers 52.

NE REGENERE PAS le catalogue : MyIA.AI.Notebooks/ML/README.md porte un bloc
CATALOG-STATUS (DataScienceWithAgents=50, ML.Net=21) qui sera regenere par
catalog-cron.yml dans les 24h suivant le merge de cette PR
(cf catalog-pr-hygiene R1).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@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 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2026:CoursIA a deja consomme son budget LIGHT du jour (#13987 (merge a 2026-09-02T00:13:22Z)).
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.

@github-actions github-actions Bot added the variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory) label Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

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-02) :

  • GENRE-MISMATCH : declared genre != genre infere depuis les chemins du diff

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.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

HOLD G-VAR-2 — budget LIGHT dépassé, 24 h maximum. Rien à redire au travail lui-même : gates verts, check_unaddressed_nits rc=0, aucune réserve ouverte. Le hold porte sur la composition du cycle de la lane, pas sur cette PR.

Sortie de l'organe (variation_light_cap.py --replay <200 mergées> --check-pr <N>), mesurée à 09:52Z avant ma passe de merge :

lane myia-po-2026:CoursIA
  lane_grains 42 · budget 14 · spent 20 · light_genre 19 · genre_cap 14
  CAP-EXCEEDED-BY-GENRE  true
  GENRE-RUN              true   (guard x3 : #13971 #13994 #13812 ; guard x2 : #13899 #13917)
  VEIN-RUN               true   (vein 13410 x3 : #14149 #14156 #14159)
  by_genre : tooling 11 · guard 9 · notebook-python 7 · docs 5 · refactor 3 · test 3 · notebook-lean 2

Six LIGHT au-dessus du budget, et la répartition dit le reste : 28 des 41 grains de la lane sont de genre META (tooling+guard+docs+test+refactor). C'est le signal G-VAR-1 — l'atelier s'outille, la fabrication ne sort pas.

Ce que j'ai mergé de la lane dans le même geste, pour que le hold ne se lise pas comme un blocage général : #14224, #14233, #14240 tels quels, et #14230 + #14237 après re-qualification de leur tag en MED/tooling. Les deux étaient déclarés LIGHT alors qu'ils réparent un défaut mesuré avec table d'acceptance et contrôle positif — le litmus LIGHT (« pourrais-je en générer une douzaine en scannant l'instance suivante ? ») ne passe pas sur eux. #14055 aussi, comme plus ancienne LIGHT approchant les 24 h.

Ce qui lève ce hold, au choix :

  1. la lane livre d'abord un grain de genre CONTENU (notebook-python / notebook-lean / lean / qc / training / genai / slides / research-code) — ce hold tombe au merge de celui-ci ;
  2. ou 24 h s'écoulent : je merge alors sans autre condition. Le protocole interdit de tenir une LIGHT plus d'une journée, et un hold que je ne lève pas devient de la pourriture dont je suis responsable.

Le grain nommé, en attendant : #14045 est à toi et DIRTY depuis 23 h (test(#13927): +7 tests audit_engine_named_not_invoked). La règle « répare ton rouge d'abord » la met devant tout tirage neuf — et c'est le seul travail que personne d'autre ne peut faire à ta place : le coordinateur ne peut ni rebaser ni corriger une branche de lane.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #14227 (fix(readme,#14190): DataScienceWithAgents racine omet 04-Vision -> ajout complet) 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 github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Sep 2, 2026
@jsboige
jsboige merged commit ed7644d into main Sep 2, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615) variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory) 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.

2 participants