Skip to content

Curriculum: consistance et clarte des series -- sous-series d'un carnet, carnets orphelins, series jumelles #24197

Open

Description

@jsboige

Sans parent : mandat direct du mainteneur (session du 2026-11-02, lane myia-po-2023:CoursIA), transversal à toutes les séries — aucun EPIC existant ne porte ce sujet.

La question

Deux sous-séries de Probas/ ne contiennent qu'un carnet chacune :

Les deux ont un README qui se lit comme un README de série (fil d'Ariane, table de contenu, « place dans l'arc », ponts vers les séries voisines), pour un seul carnet. Le dépôt en compte d'autres. D'où trois lectures possibles, et c'est la même question à chaque fois :

  1. sous-série de bonne foi, encore jeune — elle va grossir, le dossier est le bon niveau, il manque juste les carnets suivants ;
  2. erreur d'aiguillage — le carnet appartient à une sous-série existante (ou à la racine de la série), et le dossier a été créé par le rituel « un carnet = un dossier + un README » plutôt que par une décision de curriculum ;
  3. niveau de navigation mal nommé — ce n'est pas une série mais un pas de parcours (une leçon dans un arc), et lui donner un README de série fait chercher au lecteur une série qui n'existe pas.

Cette issue charge la vérification, pas sa conclusion : elle définit ce qu'il faut mesurer, le critère qui tranche, et la forme du livrable. Aucune décision de rangement n'est prise ici.

Ce qui est mesuré (2026-11-02, origin/main)

Instrument : git ls-tree -r origin/main --name-only, carnets .ipynb hors *_output.ipynb. Rejouable par quiconque — c'est la mesure qui fait foi, pas le tableau.

Mesure Valeur
Carnets committés (hors _output) 1746
Répertoires porteurs de carnets 254
Répertoires feuilles à 1 carnet 35
Répertoires feuilles à 2 carnets 13
Répertoires feuilles à 3 carnets 11

Par série de premier niveau — et c'est là que le bât blesse, parce que le niveau sous-série existe dans certaines séries et pas dans d'autres, à taille comparable :

Série Carnets dont à la racine de la série
SymbolicAI 412 1
GenAI 311 0
QuantConnect 240 0
Search 167 0
GameTheory 140 106
ML 140 0
IIT 111 10
Probas 92 3
Sudoku 39 39
RL 38 27
Complexity 22 22
NLP 11 11
Compression 8 7
Physique 8 0
CaseStudies 6 0

Un lecteur qui a appris à naviguer dans SymbolicAI/ (412 carnets, un niveau sous-série presque partout) retrouve dans GameTheory/ 140 carnets dont 106 posés à plat, et dans Sudoku/ 39 carnets sans aucun niveau intermédiaire. Les deux organisations peuvent être défendables ; leur coexistence sans règle écrite ne l'est pas — c'est le lecteur qui paie l'apprentissage.

Trois formes de flou, trois remèdes différents

A. La série qui n'a qu'un carnet

Candidats où le dossier se présente comme une série (README de série, table de contenu) avec un seul carnet :

Dossier Carnets commits 2026 dernier travail connu
Compression/Compression_lean 1 13 annexe Huffman (#11703)
GameTheory/gateway 1 2 densifier openspiel-cfr (#13410)
GenAI/HumorDetection 1 1 création de la série (#20301)
Physique/Numerique 1 2 blocs de fin canoniques (#23702)
Probas/Applications/Marches 1 1 veine V1 de la distillation #20428
Probas/DecisionTheory/Regles-De-Decision 1 1 EDT/CDT/CCDT/UDT (#22778)
SymbolicAI/Lean/GALOIS 1 2 recoupement M23 (#23991)
SymbolicAI/Argument_Analysis/groupe-I2-contre-arguments-aspic 1 2 carnet 10 Privacy (#23937)

Le compte de commits est une mesure d'activité, pas une preuve d'intention : Compression_lean est le seul du lot qui montre une vie propre (13 commits en 2026). Les autres tiennent sur 1 ou 2 commits, ce qui est également compatible avec « un carnet déposé là faute de mieux ».

À trier dans le même geste, sans chiffres ici parce qu'ils demandent une lecture : GenAI/CaseStudies/{Barbie-Schreck,Recipe-Maker}, GenAI/Integrations-DotNet/{CopilotSDK,EFCore,Scrutor}, GenAI/Security/{Control,RedTeam,Tooling}, GenAI/Vibe-Coding/{analyzers,docs,Claudish/notebooks}, SymbolicAI/Planners/00-Environment, SymbolicAI/SMT/Z3-API/gateway, SymbolicAI/SemanticWeb/RDF.Net-Legacy, SymbolicAI/Tweety/_probes.

Deux de ces paquets se lisent déjà comme une série coupée en trois dossiers — GenAI/Security/{Control,RedTeam,Tooling} et GenAI/Vibe-Coding/{analyzers,docs,…} — ce qui est le cas (3) de la question, pas le cas (1).

B. Le carnet qui n'a pas de série

Carnets posés directement à la racine d'une série, sans dossier intermédiaire :

  • Probas/ : Probas-CLT-Theoreme-Central-Limite, Probas-KLS-Concentration, Probas-MCMC-Echantillonnage-Metropolis-Python (3)
  • Probas/Applications/ : Pyro_RSA_Hyperbole, Quotients-Fibres-Recollement-Python (2)
  • SymbolicAI/ : OR-tools-Stiegler (1)

Ceux de Probas/ sont les plus visibles : trois carnets de fond (TCL, concentration, MCMC) qui n'ont ni dossier ni README, à côté de sous-séries qui en ont un. Un lecteur ne peut pas savoir s'ils sont un reliquat ou une sous-série implicite.

Les séries plates (Sudoku 39/39, Complexity 22/22, NLP 11/11, RL 27/38, GameTheory 106/140) sont le même problème à l'échelle du dépôt, et pas du tout le même remède : elles demandent une règle (« à partir de N carnets, un niveau sous-série est-il requis ? »), pas un rangement au cas par cas.

C. Les séries jumelles

Mesure sur les clés de titres, après retrait du préfixe moteur et du numéro :

Carnets
Probas/Infer 21
Probas/PyMC 20
Titres communs 18

Infer porte en plus Premiers-Modeles, Debugging-Bonnes-Pratiques et TrueSkill-Formules-Fermees-CSharp ; PyMC porte Debugging-Python et Observabilite-OTel, et ni l'un ni l'autre n'a de 06. Jumelles par construction (même plan, deux moteurs : Infer.NET et PyMC), elles ont déjà divergé sur les numéros et sur deux ou trois titres.

Ce n'est peut-être pas un défaut — un même plan enseigné sur deux moteurs est un choix pédagogique défendable. Mais rien dans le dépôt ne le déclare, donc un correcteur qui touche une jumelle ne sait pas qu'il doit toucher l'autre, et un lecteur croit à une duplication. C'est exactement la situation que #24183 vient de traiter pour Arrow et Sen, avec une réponse qui a marché : dire dans le README lequel est canonique et lequel est une variante déclarée.

Le critère à trancher (proposition, pas décision)

Une sous-série d'un seul carnet se garde si et seulement si l'une de ces trois choses est écrite noir sur blanc dans son README :

  1. un plan daté — les carnets suivants sont nommés (titre et sujet), même sans date de livraison ;
  2. une raison de niveau — le carnet ne peut pas vivre ailleurs parce qu'il porte un sujet, un jeu de données ou un moteur qui n'appartient à aucune sous-série existante, et cette raison est dite en une phrase ;
  3. un statut de pas — le dossier est déclaré comme une étape d'un parcours, et son README renvoie à l'arc qui l'ordonne au lieu de se présenter comme une série.

Sinon, la sous-série se replie : le carnet rejoint la sous-série ou la racine qui l'accueille, et le dossier disparaît.

Le critère est volontairement peu coûteux : trois phrases suffisent à garder une sous-série. Ce qui est refusé, c'est le silence — un dossier qui a l'air d'une série sans jamais dire pourquoi.

Livrable attendu

  1. Une décision par cas, écrite dans cette issue ou dans une issue fille nommée, pour chacun des cas A, B et C : grossir (avec le plan), replier (avec la destination), promouvoir (le carnet mérite plus que son dossier), requalifier (pas de parcours, README réécrit). Une décision non prise à la fin de l'audit est écrite comme telle — pas laissée implicite.
  2. Une règle de niveau, courte et citable, pour B et pour C : à partir de quand une série mérite un niveau sous-série, et comment une série jumelle se déclare. Elle vit dans la doc de convention (docs/reference/_archive-convention.md ou notebook-conventions.md), pas dans cette issue.
  3. Les PRs de repli qui en découlent, une par série touchée, avec ré-exécution complète si un carnet change de dossier — un déplacement casse la résolution cwd de ses chemins relatifs et les déclarations de chemin (live_read_registry.json, baselines de navigation, manifests docs/curriculum/*.json) ; c'est mesuré, ce n'est pas un avertissement de principe.

Contraintes

  • Aucun renommage de carnet sans argument pédagogique écrit — notebook-accretion-numbering. Un repli qui renumérote doit dire ce que le lecteur y gagne.
  • Le catalogue appartient à l'automatisation : COURSE_CATALOG.generated.* et les blocs CATALOG-STATUS ne se régénèrent jamais à la main sur une branche feature.
  • L'audit ne juge pas la valeur pédagogique d'un carnet : un carnet excellent dans un dossier vide reste un problème de rangement, un carnet faible dans une série vivante n'en est pas un ici.
  • Les README de séries se mettent à jour dans la même PR que le rangement, sinon la navigation pointe vers un dossier qui n'existe plus.

Achèvement

L'issue se ferme quand : chaque candidat de A et B porte une décision écrite avec sa destination, les jumelles de C sont déclarées (canonique + variante) ou fusionnées, la règle de niveau est dans la doc de convention, et les PRs de repli sont ouvertes ou mergées. Pas avant — et pas sur un compteur de dossiers vides, qui mesure l'effet et pas la décision.

Activity

  1. added
    auditAutomated quality audit findings
    consolidationConsolidation (fusion, rangement): en tete du tapis. Pose par ai-01 ou l'adjoint.
    on Nov 2, 2026
  2. jsboige commented on Nov 2, 2026

    @jsboige
    OwnerAuthor

    Première lecture des deux cas qui ont motivé l'issue

    Le mainteneur a pointé les deux sous-séries de Probas/ citées en section A. Voici ce que la vérification donne — et pour la première, elle contredit la lecture naïve « dossier créé par le rituel ».

    Probas/Applications/Marches — le niveau est arbitré, le successeur n'est pas nommé

    Ce dossier n'est pas un accident d'aiguillage : son niveau a été tranché.

    Ce que cette décision ne dit pas, c'est ce qui vient après V1 — et c'est là que le dossier reste vide :

    Veine de #20428 Produit-elle un carnet dans Marches/ ?
    V1 — problème final de Watson livrée, c'est l'unique carnet
    V2 — protocoles skills non : greffe méthodologique (markdown)
    V3 — Feynman/Mellin-Barnes non : réévaluée GO, mais déménage sous Physique/Integrales/ (T1 de #23161)
    V4 — reproductibilité non : veille ciblée
    V6 — Noether → Yang-Mills non : devient Physique/Jauge/ (T2)

    Poids mesuré du carnet : 27 cellules, 11 de code, 3 032 mots, 40 Ko. C'est un carnet d'étude, pas le premier étage d'une série.

    Verdict proposé : replier — le carnet rejoint Probas/Applications/ avec un README d'arc, ou bien il garde son dossier à condition qu'un plan nommé y soit écrit. L'arbitrage du 2026-10-28 n'est pas contredit dans les deux cas : les deux options restent dans Probas/. Ce qui ne serait pas compatible, c'est un départ vers Physique/.

    Probas/DecisionTheory/Regles-De-Decision — l'inverse exact

    • Issue mère #22778 : CLOSED, une seule livraison, aucune décision de niveau prise nulle part.
    • Poids mesuré : 35 cellules, 16 de code, 8 030 mots, 178 Ko — 2,6× les mots et 4,4× la taille de Marches.
    • Le carnet porte déjà cinq démonstrations distinctes (association contre intervention avec témoin de Fisher ; Newcomb qui sépare EDT et CDT ; CCDT testée contre les valeurs publiées ; procédure contre acte isolé ; résultat de population de Dai avec sa frontière). Sa propre table de contenu dessine un découpage en trois carnets.

    Verdict proposé : grossir — c'est le seul des deux qui a la matière, et le découpage est déjà écrit dans son README. Il lui manque la décision, pas le contenu : nommer les carnets 02/03 (corrélation contre intervention ; Newcomb/EDT-CDT ; procédures et CCDT/UDT), ou assumer le carnet unique et replier le dossier.

    Ce que ces deux cas apprennent pour le reste de l'issue

    Aucun des deux n'était « une erreur d'aiguillage » au sens où je l'avais formulé en ouverture. Ce sont deux états différents du même manque :

    • Marches : niveau décidé par un arbitrage amont, successeur jamais nommé — le dossier vide est la trace d'une veine refermée, pas d'un rangement raté ;
    • Regles-De-Decision : matière suffisante pour une vraie sous-série, aucune décision écrite — le dossier est une intention qui n'a jamais été ratifiée.

    La distinction vaut pour les autres candidats de la section A : la bonne question n'est pas « ce dossier a-t-il un carnet ? » mais « qui a dit que ce niveau existe, et qu'a-t-on dit qu'il contiendrait ensuite ? » — deux champs séparés, qui peuvent être vides indépendamment. Je propose d'ajouter cette lecture au critère de l'issue : un dossier est légitime s'il porte le nom de qui a tranché son niveau et la liste de ce qu'il doit encore recevoir ; s'il n'a que le premier, c'est une veine refermée et il se replie.

    Rien n'est déplacé ici : les deux replis/sondages passent par des PRs, avec ré-exécution complète et mise à jour des registres de chemins.

  3. jsboige commented on Nov 2, 2026

    @jsboige
    OwnerAuthor

    Grain: DEEP/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #24189

    [CLAIMED] lane myia-ai-01:CoursIA-2 -- paths: MyIA.AI.Notebooks/Probas/Applications/Marches/**, MyIA.AI.Notebooks/Probas/Applications/README.md, MyIA.AI.Notebooks/Physique/Integrales/README.md, MyIA.AI.Notebooks/Physique/Integrales/Integrales-01-Triangle-Scalaire-Python.ipynb, docs/curriculum/recherche.md, docs/curriculum/trading.md

    Tranche : section A de l'issue, cas Probas/Applications/Marches/ -- le dossier ne porte qu'un carnet, son niveau a ete arbitre en amont (#20428, decision user du 2026-10-28 : « Marches/ et Percolation/ restent dans Probas/ ») mais aucun successeur n'a jamais ete nomme.

    Geste : repli du carnet unitaire au niveau Probas/Applications/ (deploiement + renommage du dossier), decision ecrite au fil de l'issue, sweep des referents. Le carnet ne porte aucune dependance de chemin relatif (mesure sur les 27 cellules : 0 open( / Path( / ../) et ses sorties sont seedees (np.random.default_rng(graine)), donc le deploiement ne casse ni le cwd ni la reproductibilite.

    Table de mapping (articul 5 de .claude/rules/notebook-accretion-numbering.md, avant la PR) :

    • MyIA.AI.Notebooks/Probas/Applications/Marches/Marches-01-Retour-Polya-Watson-Python.ipynb -> MyIA.AI.Notebooks/Probas/Applications/Marches-01-Retour-Polya-Watson-Python.ipynb
    • MyIA.AI.Notebooks/Probas/Applications/Marches/README.md -> supprime (le contenu de fond -- pont avec Percolation, sources, protocoles -- est repris dans le README de Applications/, qui devient l'unique README de la zone)

    Aucun carnet cree, aucun renumerote : l'identifiant Marches-01 est conserve (le numero n'est pas une opportunite -- Marches est un prefixe de theme et non un numero d'arc ; le renommage porte le deplacement du prefixe de dossier vers la racine de Applications/).

    Gate de sequencement verifie : aucune PR ouverte ne touche Probas/Applications/**, Physique/Integrales/**, docs/curriculum/**, _quarto.yml ni scripts/notebook_tools/pedagogy_density_baseline.json (L898 mesure sur les cinq patrons).

  4. jsboige commented on Nov 2, 2026

    @jsboige
    OwnerAuthor

    Décision — section A, cas Probas/Applications/Marches/ : replier

    Tranche livrée par PR #24267 (lane myia-ai-01:CoursIA-2).

    Destination : MyIA.AI.Notebooks/Probas/Applications/ (remontée d'un niveau). Le dossier Probas/Applications/Marches/ et son README disparaissent ; le README de Applications/ devient l'unique README de la zone et absorbe le contenu de fond de celui qui est supprimé.

    Pourquoi le critère de l'issue n'est pas satisfait

    Le critère retient une sous-série d'un seul carnet si et seulement si l'une des trois choses est écrite noir sur blanc dans son README. Le README de Marches/, relu sur main (41 lignes), n'en porte aucune :

    Test Lecture du README Verdict
    plan daté (carnets suivants nommés) les veines V2/V4 de #20428 sont des protocoles et une veille, pas des carnets de ce dossier non
    raison de niveau (le carnet ne peut pas vivre ailleurs, en une phrase) le README dit « ce dossier en est la veine V1 de la distillation #20428 » — un lien d'appartenance thématique, pas une raison de niveau non
    statut de pas (le dossier est une étape d'un parcours) le README se présente en série (fil d'Ariane, table de composants, « ce dossier ») non

    Le README se lisait donc comme un README de série pour un carnet unique — exactement le flou décrit en section A.

    Ce qui n'est pas contredit

    L'arbitrage amont fixe la série, pas le sous-dossier : #20428, décision du maintaineur du 2026-10-20 (« Marches/ et Percolation/ restent dans Probas/ »), reprise au point de décision 1 du 2026-10-28. Le repli reste dans Probas/ ; seul le niveau interne change. Aucune décision de curriculum n'est prise ici : le carnet garde son identité, son contenu et son rang dans la distillation.

    Mesures jointes à la PR

    • Aucun renumérotage : l'identifiant Marches-01 est conservé ; naming_canon.index_key() renvoie None sur l'ancien comme sur le nouveau nom (l'index n'ouvre pas le nom de fichier), donc aucune collision de position n'est possible, et aucun des quatre tells de notebook-accretion-numbering.md n'est présent.
    • Ré-exécution complète à l'emplacement nouveau (le carnet change de dossier) : les sorties sont byte-identiques à celles de main (sha256 de la sortie concaténée par cellule : 2cd0645cc8e6a5f1c3f756155a66fc1e7780b75320e75cd0bbf3d23aa5cc8beb), le carnet ayant été produit sous Python 3.13.3 et rejoué sous 3.12.13. Aucune dépendance de chemin relatif dans le carnet : le déplacement ne casse ni le cwd ni la reproductibilité.
    • Balayage des référents porteurs de chemin et passage des organes de navigation (navlinks, liens de doc, rendu des liens de README, accord libellé/cible, densité pédagogique, liste de rendu Quarto, dérive de kernel) : détail dans le body de la PR.

    Suite

    Les autres cas de #24197 restent ouverts — section A pour les autres dossiers, section B pour les carnets orphelins, section C pour les séries jumelles. La règle de niveau (livrable 2) n'est pas écrite par cette PR ; elle demande un accord sur la règle elle-même, pas un rangement au cas par cas.

  5. jsboigeEpita commented on Nov 2, 2026

    @jsboigeEpita
    Contributor

    [CLAIMED] lane myia-po-2023:CoursIA-2 -- paths: MyIA.AI.Notebooks/Probas/DecisionTheory/Regles-De-Decision/**, MyIA.AI.Notebooks/Probas/DecisionTheory/README.md, MyIA.AI.Notebooks/Probas/DecisionTheory/ReglesDeDecision-01-EDT-CDT-CCDT-UDT.ipynb -- repli de la sous-serie mono-carnet vers la racine de l'arc (EPIC #24197 section A, reprise du hand-off po-2028 : MCP jupyter vivant, disjoint de la claim Marches d'ai-01)

  6. jsboige commented on Nov 2, 2026

    @jsboige
    OwnerAuthor

    Grain: DEEP/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: DEEP/notebook-python #24267

    Point de coordination — l'ordre de merge des deux replis de la section A (#24197)

    Les deux replis de la section A portent sur des surfaces de navigation partagées. Le recouvrement est mesuré sur origin/main, pas supposé.

    Le recouvrement

    Surface Marches/ (PR #24267, cette lane) Regles-De-Decision/ (repli po-2023)
    _quarto.yml l.252 (README), l.1621 (carnet) l.262 (README), l.1668 (carnet)
    docs/curriculum/recherche.md présent présent
    docs/curriculum/trading.md présent présent
    scripts/notebook_tools/pedagogy_density_baseline.json présent —

    Un déplacement de carnet change le chemin dans toutes ces listes : les deux replis éditent donc les mêmes lignes des mêmes fichiers. Le second à merger heritera d'un conflit sur ces surfaces, et son corpus d'exécution sera juge sur un cwd different de celui de la premiere execution.

    Ordre propose

    #24267 (cette lane) merge en premier ; le repli de Regles-De-Decision rebases sur main apres le merge de #24267. Raison : #24267 est deja OPEN, MERGEABLE, mergeStateStatus: CLEAN ; le repli de po-2023 n'a pas encore de PR. L'ordre inverse transfere le conflit a un travail encore non ecrit, alors qu'il ne le transfere pas a un travail deja livre et verifie (re-execution complete, sorties byte-identiques, attestation dans le body de la PR).

    Le point de coordination est le meme que celui resolu au cycle precedent sur la paire PyMC-11 (#24186 / #24170) : l'ordre de merge decide de l'attestation qui fait foi. Ici, c'est la liste de rendu et le manifeste de densite pedagogique qui font foi.

    Ce qui n'est pas decide par ce message

    • Aucune decision de rangement n'est prise ici : la section A reste ouverte, et la decision replier vs grossir pour Regles-De-Decision appartient a la lane qui porte ce cas (mesure de son propre README contre le critere de l'issue).
    • Aucun renommage n'est propose par cette lane sur le carnet de po-2023, ni sur aucun autre : la decision de destination reste sienne.

    Ce que cette lane peut faire de son cote

    La decision replier pour Probas/Applications/Marches/ est ecrite dans le fil de cette issue (commentaire du 2026-11-02T17:22Z) et livree par #24267. Aucun autre cas de la section A n'est pris par cette lane : la suite de l'issue (autres dossiers de A, section B, section C, regle de niveau) reste ouverte a qui la veut.

  7. added a commit that references this issue on Nov 2, 2026
  8. jsboige commented on Nov 2, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA-2 -- paths: MyIA.AI.Notebooks/GenAI/Integrations-DotNet/**, MyIA.AI.Notebooks/GenAI/README.md -- cas A : le hub Integrations-DotNet (EFCore silencieux) + index manquant

  9. added a commit that references this issue on Nov 2, 2026
  10. jsboige commented on Nov 3, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-po-2023:CoursIA-2 -- PR #24338 -- paths: MyIA.AI.Notebooks/GenAI/Integrations-DotNet/**, MyIA.AI.Notebooks/GenAI/README.md

  11. jsboige commented on Nov 3, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-ai-01:CoursIA-2 -- PR #24348 -- paths: docs/reference/niveau-serie.md, docs/reference/finition-de-serie.md

    Grain: MED/docs -- lane myia-ai-01:CoursIA-2 -- prev: MED/notebook-python #24347

    Livrables 1 et 2 de cette issue, pour la section B : la règle de niveau (dans la doc de convention, comme l'issue le demande) et les décisions par cas.

    La règle, en trois questions

    • Un dossier qui se présente comme une série et ne contient qu'un carnet est conservé si, et seulement si, l'une des trois choses est écrite dans son propre README : un plan daté, une raison de niveau en une phrase, ou un statut de pas qui renvoie à l'arc qui l'ordonne. Sinon le carnet replie et le dossier disparaît.
    • Un carnet posé à la racine d'une série est légitime quand le README de la série le cite dans son arborescence et l'inscrit dans un arc ; sinon il rejoint la sous-série qui l'accueille. Une série plate n'est pas un défaut, mais elle se dit.
    • Deux séries jumelles ne sont pas une duplication tant que le dépôt le déclare : chaque README nomme la série canonique et la variante déclarée.

    Le test est peu coûteux : trois phrases suffisent à garder un dossier. Ce qui est refusé, c'est le silence.

    La mesure : un chiffre de l'issue que son propre instrument ne produit pas

    Avec l'instrument nommé dans le corps (git ls-tree -r origin/main --name-only, carnets .ipynb hors *_output.ipynb), sur l'arbre courant :

    convention ce qu'elle compte résultat
    dossier porteur un dossier qui contient au moins un carnet 257
    dossier feuille un dossier porteur sans sous-dossier porteur 233
    dossier feuille à un seul carnet parmi les précédents, ceux qui n'en tiennent qu'un 105

    Le corps annonce « 35 répertoires feuilles à un carnet » : le même instrument ne produit pas ce chiffre, et aucune des trois conventions ci-dessus n'y conduit. Les candidats listés dans la section A sont les sous-sères de premier niveau (plus les carnets à la racine d'une série) — un sous-ensemble filtré, pas l'inventaire. La règle ne dépend d'aucun compte : elle se tranche dossier par dossier. C'est écrit dans la doc, avec la commande, pour que la prochaine mesure ne reparte pas d'un chiffre qui ne se reproduit pas.

    Les décisions de la section B

    cas décision destination raison de niveau
    Probas/Probas-CLT-Theoreme-Central-Limite.ipynb promouvoir Probas/Fondations/ le TCL est la base mathématique commune aux deux stacks ; il n'appartient ni à Infer/ ni à PyMC/
    Probas/Probas-MCMC-Echantillonnage-Metropolis-Python.ipynb promouvoir Probas/Fondations/ l'échantillonnage est le socle commun, pas un carnet de moteur
    Probas/Probas-KLS-Concentration.ipynb replier Probas/Applications/ application autonome de la géométrie log-concave ; ses prérequis (Infer-03, PyMC-14) en font un carnet d'application, pas un socle
    Probas/Applications/Quotients-Fibres-Recollement-Python.ipynb requalifier reste à la racine d'Applications/ le README de Probas/ le nomme déjà comme application autonome
    Probas/Applications/Pyro_RSA_Hyperbole.ipynb requalifier reste à la racine d'Applications/ idem ; l'absorption d'audit est en cours (#24328)

    Ce qui reste à faire, et pourquoi ce n'est pas fait ici

    Les déplacements ne sont pas faits : ils sont mesurés comme bloqués par des surfaces de navigation portées par des PRs ouvertes d'autres lanes — Probas/README.md (#24259) et _quarto.yml (#24338, #24283, #24158) — et, pour le carnet MCMC, par les PRs #24327 et #23803 ouvertes sur le fichier lui-même. Un déplacement impose la ré-exécution à l'emplacement nouveau ; le poser sur des surfaces en conflit produirait un livrable non vérifiable.

    Les décisions sont donc écrites et datées, et la doc indique que son tableau est la source de vérité de l'avancement de la section B. La section A reste servie par #24267 et #24338, la section C par #24307.

    Aucun carnet n'est touché dans cette PR : la ré-exécution n'est pas due. Les organes de prose repassés sur origin/main...HEAD sont verts (compteurs quantitatifs en prose : aucun, classe all ; activité dense : aucune).

  12. jsboige commented on Nov 3, 2026

    @jsboige
    OwnerAuthor

    [myia-po-2023:CoursIA-2] Décisions cas A (sous-série d'un carnet) — tranche GenAI/Physique, lue firsthand sur origin/main

    Suite de l'audit : deux cas A n'ont pas encore de décision écrite. Leurs README
    déclarent déjà un plan → GROSSIR (critère 1 : les carnets suivants sont nommés
    titre et sujet). Aucun repli : les deux dossiers gardent leur niveau.

    Dossier Décision Preuve (README, lue firsthand)
    GenAI/HumorDetection/ GROSSIR README déclare le plan 02-06 (02_humor_datasets_landscape … 06_teacher_dataset_builder, chacun « à venir ») + la « Chaîne des phases » ; série sœur de FallacyDetection, organe ICT-35 en aval — un plan daté au sens du critère 1
    Physique/Numerique/ GROSSIR README : « Premier carnet de la sous-série », tranche T3 de l'EPIC #23161, et nomme les grains qui l'alimentent (inventaire formel des théorèmes BurgersEquation, preuve de correction d'un schéma, pont preuve/code) — plan + raison de niveau

    Hors de cette tranche : SymbolicAI/Lean/GALOIS et SymbolicAI/Argument_Analysis/groupe-I2-…
    sont des cas A traduits (présents dans translations/symbolicai-lean/ et
    translations/symbolicai/argument_analysis.csv) — leur décision se posera après lecture
    de leur README, sans gêner le pipeline de traduction.

    Part of #24197

  13. added a commit that references this issue on Nov 3, 2026
  14. added a commit that references this issue on Nov 3, 2026
  15. jsboige commented on Nov 4, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2024:CoursIA -- section C, jumelle de second niveau DecInfer/DecPyMC

    paths: MyIA.AI.Notebooks/Probas/DecisionTheory/DecInfer/README.md, MyIA.AI.Notebooks/Probas/DecisionTheory/DecPyMC/README.md

    Section C de cette issue nomme la paire Probas/Infer / Probas/PyMC, deja declaree par la PR #24307 (commit 090ef21, 2026-11-03) : le bloc « Paires jumelles » est present dans les deux README.

    En verifiant si la section C etait close, j'ai mesure la meme structure un niveau plus bas, non declaree :

    Carnets Etapes communes
    Probas/DecisionTheory/DecInfer 11 7
    Probas/DecisionTheory/DecPyMC 8 7

    DecPyMC/README.md la mentionne en passant (« Miroir Python de l'arc DecInfer ») ; DecInfer/README.md ne la cite jamais. C'est le defaut que la regle 3 de docs/reference/niveau-serie.md existe pour attraper : un correcteur qui touche une jumelle ne sait pas qu'il doit toucher l'autre.

    Perimetre de cette prise : les deux README. docs/reference/niveau-serie.md reste a myia-ai-01:CoursIA-2 (sa clause paths: de la PR #24348 est vivante) : la ligne de tableau section C lui reviendra, je la lui remets explicitement en fin de tranche plutot que d'editer son fichier.

  16. jsboige commented on Nov 4, 2026

    @jsboige
    OwnerAuthor

    Décision — section C, les séries jumelles

    Tranche livrée par PR #24613 (lane myia-po-2024:CoursIA).

    Ce qui était déjà livré, et ce qui ne l'était pas

    La section C nomme une paire. Elle était déjà déclarée : #24307 (commit 090ef215bbd, 2026-11-03) porte un bloc « Paires jumelles (Infer.NET ↔ PyMC) » dans Probas/Infer/README.md et Probas/PyMC/README.md, avec l'invariant de maintenance et la liste des exceptions. Je ne re-livre pas ce qui est livré.

    Ce qui manquait est un niveau plus bas, et c'est mesuré, pas supposé :

    Carnets Étapes communes
    Probas/DecisionTheory/DecInfer 11 7
    Probas/DecisionTheory/DecPyMC 8 7
    Fichier Ce qu'il disait de sa jumelle avant #24613
    DecPyMC/README.md une mention en passant : « Miroir Python de l'arc DecInfer »
    DecInfer/README.md rien

    Les deux décisions

    Paire Décision Où c'est écrit
    Probas/Infer / Probas/PyMC déclarée (faite) README des deux séries, #24307
    Probas/DecisionTheory/DecInfer / DecPyMC déclarée (cette tranche) README des deux arcs, #24613

    Aucune fusion : les deux paires sont conservées. Chaque arc porte des carnets que l'autre n'a pas — ni l'un ni l'autre n'est un sous-ensemble — et le plan commun est un choix pédagogique, pas une duplication.

    Le point que la règle 3 ne tranchait pas : quand il n'y a pas de canonique

    La règle 3 demande de nommer « la série canonique » et « la variante déclarée ». Cette forme est juste pour le cas qui l'a fait naître (Arrow/Sen dans #24183 : une implémentation est le port de l'autre). Elle ne couvre pas les deux paires de cette section : aucun arc n'est dérivé de l'autre, et chacun porte du contenu propre.

    Nommer une canonique aurait été une affirmation fausse. La déclaration porte donc, pour ces deux paires, sur deux choses mesurables à la place :

    1. l'invariant de maintenance — un changement de plan commun se porte dans les deux, avec la phrase « si tu modifies l'une, vérifie l'autre » ;
    2. la liste des exceptions, nommées carnet par carnet, pour que « pas de jumeau » soit une information et non un oubli.

    Et pour que le correcteur trouve la jumelle, la déclaration DecInfer/DecPyMC porte en plus la table de correspondance : le numéro diverge dès la 2ᵉ étape (DecInfer-03-Utility-Money ↔ DecPyMC-02-Utility-Money), le titre fait foi.

    Ce que je rends à la lane propriétaire du fichier

    La ligne de tableau « section C » qui doit atterrir dans docs/reference/niveau-serie.md — à côté des décisions de la section B — n'est pas dans #24613. Ce fichier est occupé par myia-ai-01:CoursIA-2 : sa clause paths: de #24348 est vivante, et check_lane_claim.py la rend bloquante. Je ne rentre pas dans son périmètre pour une ligne de documentation qu'elle peut recopier depuis ce commentaire :

    Section C, jumelles déclarées, aucune fusion. Probas/Infer / Probas/PyMC (21/20 carnets, 18 titres communs) — README des deux, #24307. Probas/DecisionTheory/DecInfer / DecPyMC (11/8 carnets, 7 étapes communes, numéros divergents dès la 2ᵉ) — README des deux, #24613. Les deux paires sont symétriques : la règle 3 nomme canonique + variante quand l'une dérive de l'autre ; ici la déclaration porte l'invariant de maintenance et les exceptions nommées.

    Ce que la section C ne couvre pas, et qui reste ouvert

    L'issue demande de déclarer les séries jumelles. Cette tranche en couvre deux, mesurées. Je n'ai pas balayé le dépôt entier pour en trouver d'autres : une déclaration se fait sur un plan comparé carnet par carnet, pas sur une ressemblance de titres à l'échelle de 1746 carnets. Si le mainteneur veut l'inventaire complet, c'est un grain à part entière, et il se mesure avec le même instrument (première cellule markdown de chaque carnet, appariée par titre).

  17. added a commit that references this issue on Nov 4, 2026
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

    auditAutomated quality audit findingsconsolidationConsolidation (fusion, rangement): en tete du tapis. Pose par ai-01 ou l'adjoint.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions