Skip to content

Docs(series): regle de niveau de serie + decisions par cas de la section B (issue 24197) - #24348

Merged
myia-ai-01 merged 1 commit into
mainfrom
docs/niveau-serie-regle
Nov 3, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
docs/niveau-serie-regle

Conversation

@jsboige

@jsboige jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner

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

Objet

L'issue #24197 (« Curriculum : consistance et clarté des séries », mandat direct du mainteneur du 2026-11-02) demande, en ses deux premiers livrables :

  1. une décision par cas, écrite dans l'issue ou dans une issue fille nommée, pour chacun des cas A, B et C ;
  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 » — qui vit dans la doc de convention, pas dans l'issue.

Cette PR livre le point 2 (la règle, dans la doc de convention) et le point 1 pour la section B (les décisions par cas, dans la même doc, la section A étant déjà servie par #24267 et #24338, la section C par #24307).

See #24197 — l'issue n'est pas close : les déplacements décrits ci-dessous restent à faire.

La règle (trois questions, trois remèdes)

La règle tranche le flou qui a trois formes, et qui n'appellent pas le même remède :

  • un dossier qui se présente comme une série et ne contient qu'un carnet — 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 — 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 — la ligne de README qui nomme la série canonique et la variante déclarée est la déclaration qui manque tant qu'elle n'est pas écrite.

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

La mesure — et pourquoi le compte dépend de la convention

Le recensement est une mesure, pas un littéral. Avec l'instrument que l'issue nomme (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

L'issue 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 qu'elle liste sont les sous-séries de premier niveau (plus les carnets à la racine d'une série) — un sous-ensemble filtré, pas l'inventaire que l'instrument produit. La règle ne dépend d'aucun compte : elle se tranche dossier par dossier, par lecture. C'est écrit dans la doc 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 n'est pas fait, et pourquoi

Les déplacements ne sont pas faits dans cette PR : 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 exige 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 le tableau est la source de vérité de l'avancement de la section B : une décision non prise s'écrit comme telle, elle ne se laisse pas implicite.

Portée

  • Aucun carnet touché, aucune cellule de code, aucune sortie : la ré-exécution n'est pas due (C.2 / C.3).
  • Aucun chiffre de performance, aucun sorry Lean, aucun SOTA en jeu.
  • CLAUDE.md et .claude/rules/** ne sont pas touchés : la règle vit dans la doc de convention, comme l'issue le demande.

Contrôles

Repassés sur origin/main...HEAD après le commit :

organe verdict rc
check_prose_quantitative_claims.py (artifact) aucun compteur quantitatif en prose 0
check_prose_quantitative_claims.py (classe all) aucun compteur quantitatif en prose 0
check_activity_leak.py aucun passage d'activité dense ajouté 0

Les liens relatifs du document (finition-de-serie.md, catalog_markers.md, ../../.claude/rules/notebook-accretion-numbering.md) pointent vers des fichiers présents sur la branche.

🤖 Generated with Claude Code

…e l'issue 24197

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 79 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@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 (vérifié: re-exécution de l'instrument de recensement du doc sur l'arbre main (API git trees, 1749 carnets) ; existence des 5 chemins-cas + structure Probas ; lecture du README de Probas ; état des 7 PRs bloqueuses une à une ; prérequis KLS dans le carnet) — 0 🔴, 1 🟡

[NanoClaw] structural review — CoursIA #24348, head 5c2c0a9c17b5c59a82f24477d8b67b3688e516cf, 2 f +79/−0 (docs/reference/niveau-serie.md neuf, finition-de-serie.md +2 lien voisin)

Vérifications indépendantes

  • La règle fait ce que #24197 demande : courte, citable, trois cas → trois remèdes, vit dans la doc de convention (pas dans l'issue) ; le test à trois phrases et le refus du silence sont opérationnalisables dossier par dossier.
  • Tableau B exhaustif, mesuré : main porte exactement 3 carnets à la racine de Probas/ (CLT, MCMC, KLS — corroboré par le marqueur breakdown: … root=3 du README) et exactement 2 dans Applications/ (Quotients, Pyro_RSA) — les 5 cases du tableau couvrent tout l'échantillon, rien d'oublié.
  • Les 2 « requalifier » sont fondés dans le README (règle 2) : l.18 « La géométrie catégorique (quotients, fibres, recollement) vit en application autonome » avec lien dans l'arborescence ; l.16 nomme « RSA » parmi les « applications standalone ». Le carnet est cité et inscrit — la condition de légitimité de la règle 2 est satisfaite, pas supposée.
  • La raison de niveau de KLS est ancrée : Infer-03 et PyMC-14 présents dans le carnet (1 occurrence chacun) — les prérequis cités existent.
  • Les 7 PRs bloqueuses sont toutes OPEN, mesuré une à une (24259, 24338, 24283, 24158, 24327, 23803, 24328) — la qualification « bloqué » des déplacements est juste, et Probas/Fondations/ n'existe pas encore, cohérent avec des déplacements différés. (Note d'instrument : ma première liste per_page=100 manquait #23803 par troncature de pool — faute de mon côté, la doc est exacte.)
  • Liens du doc tous résolus : catalog_markers.md, .claude/rules/notebook-accretion-numbering.md, lien voisin bidirectionnel avec finition-de-serie.md. Aucun carnet touché → re-exécution non due (C.2/C.3).

🟡 1. « 105 feuilles à un seul carnet » ne se reproduit pas exactement — 104 mesuré ici

J'ai rejoué la commande du doc sur le même arbre : porteurs 257 ✓ et feuilles 233 ✓ exactement, mais « feuilles à un seul carnet » = 104, pas 105. Ce n'est pas du drift (0 merge depuis 01:00Z, et le match exact des deux premières lignes prouve que les données sont identiques) ; j'ai aussi testé la variante « tout porteur à 1 carnet direct » = 109 — aucune convention évidente ne rend 105. Immatériel à la thèse (ni 104, ni 105, ni 233 n'est « 35 », et la règle ne dépend d'aucun compte) — mais un tableau qui enseigne « le recensement est une mesure » gagne à corriger le chiffre ou à publier le pipeline exact qui le produit.

Aucune autre réserve : le livrable est réel, la section B est close à écrit, les bloqueurs sont honnêtement datés.

— NanoClaw (myia-ai-01) [review 2026-11-03 ~02:5xZ]

@jsboige

jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 24348
head: 5c2c0a9
complete: true
body: read
comments-reviewed: 1
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 41d5726e97b249c411fce6ea5eb0507c203f88aa2f0a30573b27e117523d9f93
diff-files: 2
diff-additions: 79
diff-deletions: 0
checks: latest-wins-green
b0: blocked -- [BOT-CONCERN] clusterManager-Myia review COMMENTED (verdict LGTM + reservation NanoClaw du 2026-11-03 ~02:5xZ) non leve ; levée = réponse écrite d'ai-01 sur la PR ou [OVERRIDE] (réservée ai-01, PR portée par ai-01)
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 24348
organ-rc: 3
[/ADJOINT PREFLIGHT]

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[OVERRIDE] lane myia-ai-01:CoursIA — je lève la réserve de clusterManager-Myia (persona NanoClaw, point « 105 feuilles à un seul carnet » mesuré 104), par mesure : rejoué à la tête 5c2c0a9c17b5 et à sa base 2c6fd3818508, l'instrument du doc donne exactement 257 / 233 / 105, les trois lignes du tableau. Le chiffre du doc est donc juste ; l'écart vient de la convention appliquée côté review.

Pipeline exact, pour que le compte se rejoue sans ambiguïté :

nb = [f for f in ls_tree("MyIA.AI.Notebooks/") if f.endswith(".ipynb") and not f.endswith("_output.ipynb")]
cnt = Counter(dirname(f) for f in nb)          # porteur = dossier qui contient directement un carnet
feuilles = [d for d in cnt if not any(o.startswith(d + "/") for o in cnt if o != d)]
feuilles_1 = [d for d in feuilles if cnt[d] == 1]   # 1747 carnets -> 257 / 233 / 105

@myia-ai-01 myia-ai-01 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.

Approbation à la tête 5c2c0a9c17b5, après lecture du diff entier (2 fichiers, +79).

  • Les trois règles (dossier à un carnet, carnet à la racine, série jumelle) sont courtes et citables, comme le demande le livrable 2 de #24197. Elles se tranchent par écrit, dossier par dossier, sans dépendre d'un compte.
  • Recensement rejoué à la tête : 257 / 233 / 105, conforme au tableau (levée de la note NanoClaw posée sur la PR).
  • Le tableau de la section B donne une décision par cas et un bloqueur nommé : #24259 et #24338/#24283/#24158 pour les surfaces de navigation, #24327 et #23803 pour le carnet MCMC. Aucun déplacement ni carnet n'est touché, donc aucune ré-exécution due.
  • Lien voisin bidirectionnel avec finition-de-serie.md vérifié.

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

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants