You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
« J'aimerais que tu crée un nouvel Epic de consolidation globale du dépôt. Les scripts, la doc, et même certains Notebooks se sont éparpillés, certains lakes auraient dû être mutualisés et/ou renommés, les issues de renumérotation et consolidation des Notebooks trainent des pieds, je pense qu'un Epic parapluie ne fera pas de mal pour aider à faire avancer tout ça. La dette technique a de plus en plus de mal à être payée avec un gisement d'issues ouvertes en vol, et je pense qu'à défaut de pouvoir diminuer significativement le nombre d'issues disponibles au picker, augmenter la densité d'issues qui luttent contre l'entropie aidera à compenser celles qui en rajoutent. »
Pourquoi cette Epic et pas une nouvelle vague par axe
Trois Epics chapeau couvrent déjà le périmètre — chacune avec un mandat explicite et un refus d'être remplacée :
Epic chapeau
Périmètre
Mandat explicite
#5081 — Nommage canonique et parcours des notebooks
« Cette Epic reste le programme canonique unique de consolidation des noms, numéros, accrétions et parcours. Elle n'est pas remplacée par une nouvelle Epic. »
#4362 — Lean, harmoniser Mathlib, mutualiser les checkouts, regrouper les lakes
Lean lakes, Mathlib, anti-prolifération
Épique chapeau de l'axe Lean — la mutualisation 15 lakes × 90 Go (#13962/#16034) y est explicitement inscrite
Cette Epic parapluie ne les concurrence pas — elle les coiffe, et assume trois fonctions que les trois chapeau ne portent pas :
Augmenter la densité d'issues qui luttent contre l'entropie. Le user le dit : le pool ouvert grossit, la dette se paie mal, et une partie du stock crée de l'entropie au lieu d'en résorber. Cette Epic rend visibles les issues orphelines (hors chapeau) qui répondent au mandat des chapeau mais n'y sont pas inscrites, et les rattache comme sous-grains — pour que le picker les remonte avec le bon cadrage.
Diagnostiquer pourquoi les issues de consolidation trainent des pieds. Le motif [EPIC] Les body d'Epic ne sont jamais réécrits — 47/51 ignorent leurs propres livraisons #13906 (47/51 Epics ouvertes ont un body périmé) est exactement ce qui produit la stagnation : une issue fille que le chapeau ne mentionne pas devient intravable hors de son contexte, et le picker la saute. Cette Epic rend le diagnostic mesurable.
Forcer la consolidation ≠ archiver à l'échelle du repo. Rappel CLAUDE.md global : « Consolider ≠ Archiver ». Cette Epic vérifie qu'aucune archive (_archive/, .scratch-attic/, _runtime/) ne se crée sans preuve de préservation, et que les fusions (Lean lakes, doublons notebooks, scripts jumeaux) citent leurs numéros de ligne avant de disparaître.
Périmètre — 6 axes complémentaires des chapeau existants
A. Renumérotation notebooks — sous-grains hors #5081
OPEN — doublonnerait avec celles-ci si non déconflictées
Geste attendu : rattacher nominativement ces issues à #5081 (sous forme de liens Part of #5081 ou inscription au body chapeau), sans dupliquer la doctrine. #5081 reste seul habilité à fixer le canon.
Geste attendu : ces doublons/twins sont detectés par des ratchets CI ; leur résorption est soit (a) une suppression légitime (deux notebooks vraiment jumeaux), soit (b) une preuve de distinction à porter dans le body d'un notebook. Aucune de ces issues ne doit fermer sur le label seul.
Geste attendu : #13962 et #16034 sont déjà rattachés à #4362 (vérifier l'inscription dans le body chapeau #4362). #16181 est une dette infra cross-canonique. Les 3 ensemble gagnent ~90 Go d'espace disque et divisent par ~15 la surface de mise à jour Mathlib.
Geste attendu : réouvrir le résidu #3323 en sous-grain nommé (sans rouvrir l'Epic close — créer une sous-EPIC Part of #9535 pour la dépollution scripts), et rattacher #295 comme deuxième sous-grain du même chapeau.
Geste attendu : ces 4 sous-grains couvrent l'axe doc + catalogue. #14623 est déjà inscrite à #13737 ; les trois autres doivent l'être — ou être rattachées à #9535 (nettoyage & rangement) si elles concernent des artefacts morts, à #13737 si elles concernent la structure.
L'Epic #13906 — « Les body d'Epic ne sont jamais réécrits — 47/51 ignorent leurs propres livraisons » — est directement la cause structurelle de la stagnation que le user invoque. Ses 7 têtes de classe :
Geste attendu : tant que #13906 n'est pas livré (organe scripts/epic_body_staleness.py), cette Epic parapluie est elle-même un risque de plus dans la liste : un body long qui s'écrit aujourd'hui sera périmé dans 30 jours. Le sous-grain F assume l'engagement :
Le body de cette Epic sera réécrit à chaque livraison de #13906 (inscription au sommaire, mise à jour de l'avancement). Pas de réécriture en place — bloc > État mesuré au <date> ajouté en tête, historique préservé (cf. #5081 §Relance 2026-09-10 pour le modèle).
Elle ne prescrit aucun git mv ni git rm. Toute fusion ou déplacement de notebook, de script, ou de lake se fait sous l'autorité du chapeau concerné, avec preuve de préservation.
Elle n'ouvre pas de vague fresh. Les sous-grains listés sont des issues déjà existantes que cette Epic rend visibles, pas un programme de création.
Elle ne consomme pas le budget R1/G-VAR-1 des lanes : chaque sous-grain est traité comme un grain ordinaire du pool, et c'est aux chapeau de fixer la cadence.
Acceptance
Cartographie : un audit repo-wide (scripts/audit_consolidation_orphans.py) qui liste les issues orphelines (non rattachées à un chapeau de consolidation) par axe (A-F), avec la preuve (commentaire / See #N / chemin de fichier). Pas un verdict : un tri.
Rattachement : chaque sous-grain listé en §A-F reçoit, dans les 14 jours suivant la création de cette Epic, soit (a) un Part of #<chapeau> + une inscription dans le body chapeau, soit (b) un refus motivé par écrit (pourquoi cette issue n'appartient pas au chapeau). Aucune issue A-F ne reste orpheline sans justification écrite.
Densité picker vérifiée : mesurer, sur 7 jours après ouverture, que la proportion de grains R1/G-VAR-1 (DEEP de contenu, axe B/C en particulier) monte par rapport aux 7 jours précédents — signal que les orphelins sont devenus actionnables.
Aucun git mv orphelin : aucun déplacement de notebook / script / lake lié à cette Epic ne se fait sans See #<chapeau>-<sub> cité dans le commit et une preuve de préservation (cf. CLAUDE.md global « Consolider ≠ Archiver »).
Lane d'origine et tag
Cette Epic est coordonnateur-agnostique — elle ne réclame aucune lane. Les sous-grains seront piochés par le picker selon les règles habituelles (R5 pool global, R6/R7 variété).
Grain: META/consolidation — lane myia-po-2023:CoursIA-2 — prev: DEEP/notebook-python #16466 (PR #16466 = kernel-drift-guard REPAIR — dernier grain DEEP.CONTENU mergé avant création de cette Epic).
Mandat user, 2026-09-17 (verbatim)
Pourquoi cette Epic et pas une nouvelle vague par axe
Trois Epics chapeau couvrent déjà le périmètre — chacune avec un mandat explicite et un refus d'être remplacée :
Cette Epic parapluie ne les concurrence pas — elle les coiffe, et assume trois fonctions que les trois chapeau ne portent pas :
_archive/,.scratch-attic/,_runtime/) ne se crée sans preuve de préservation, et que les fusions (Lean lakes, doublons notebooks, scripts jumeaux) citent leurs numéros de ligne avant de disparaître.Périmètre — 6 axes complémentaires des chapeau existants
A. Renumérotation notebooks — sous-grains hors #5081
candidate-deliveredà confronter à la livraison réelleGeste attendu : rattacher nominativement ces issues à #5081 (sous forme de liens
Part of #5081ou inscription au body chapeau), sans dupliquer la doctrine. #5081 reste seul habilité à fixer le canon.B. Doublons / jumeaux / consolidation notebooks
detect_solution_leaksdoublons FP 9/25check_duplicate_notebook_index224/822check_twin_parityBlockingIOErrorcheck_link_label_agreement32 désaccordsGeste attendu : ces doublons/twins sont detectés par des ratchets CI ; leur résorption est soit (a) une suppression légitime (deux notebooks vraiment jumeaux), soit (b) une preuve de distinction à porter dans le body d'un notebook. Aucune de ces issues ne doit fermer sur le label seul.
C. Lakes Lean — sous-grains hors #4362
find_lake_rootGeste attendu : #13962 et #16034 sont déjà rattachés à #4362 (vérifier l'inscription dans le body chapeau #4362). #16181 est une dette infra cross-canonique. Les 3 ensemble gagnent ~90 Go d'espace disque et divisent par ~15 la surface de mise à jour Mathlib.
D. Scripts sprawl & doublons CLI
infralink-*command sprawlGeste attendu : réouvrir le résidu #3323 en sous-grain nommé (sans rouvrir l'Epic close — créer une sous-EPIC
Part of #9535pour la dépollution scripts), et rattacher #295 comme deuxième sous-grain du même chapeau.E. Doc sprawl & catalogue
Geste attendu : ces 4 sous-grains couvrent l'axe doc + catalogue. #14623 est déjà inscrite à #13737 ; les trois autres doivent l'être — ou être rattachées à #9535 (nettoyage & rangement) si elles concernent des artefacts morts, à #13737 si elles concernent la structure.
F. Fraîcheur des Epics elles-mêmes (#13906)
L'Epic #13906 — « Les body d'Epic ne sont jamais réécrits — 47/51 ignorent leurs propres livraisons » — est directement la cause structurelle de la stagnation que le user invoque. Ses 7 têtes de classe :
Geste attendu : tant que #13906 n'est pas livré (organe
scripts/epic_body_staleness.py), cette Epic parapluie est elle-même un risque de plus dans la liste : un body long qui s'écrit aujourd'hui sera périmé dans 30 jours. Le sous-grain F assume l'engagement :Ce que cette Epic ne fait pas
git mvnigit rm. Toute fusion ou déplacement de notebook, de script, ou de lake se fait sous l'autorité du chapeau concerné, avec preuve de préservation.Acceptance
scripts/audit_consolidation_orphans.py) qui liste les issues orphelines (non rattachées à un chapeau de consolidation) par axe (A-F), avec la preuve (commentaire /See #N/ chemin de fichier). Pas un verdict : un tri.Part of #<chapeau>+ une inscription dans le body chapeau, soit (b) un refus motivé par écrit (pourquoi cette issue n'appartient pas au chapeau). Aucune issue A-F ne reste orpheline sans justification écrite.scripts/epic_body_staleness.py; réécrire le présent body à chaque livraison de l'organe (cf. §F). Le critère de mort d'un sous-grain est l'inscription au chapeau, pas sa closure (qui peut être prématurée — leçon fondateur feat(symbolicai,#10759): Lean-19-Sendov-Complex-Analysis (grain 2/2) — Sendov + Phelps-Rodriguez digest T. Tao 2026 #10761, fix(gametheory,#12580): call_llm_provider reel vLLM + cassette rejouable (lift Hermes reserve) #12798, fix(lean-ci,#12330): SocialChoice sorry-gate fail-open grep -> CERTIFIED.txt contract + lean-axiom.yml wiring #12347).git mvorphelin : aucun déplacement de notebook / script / lake lié à cette Epic ne se fait sansSee #<chapeau>-<sub>cité dans le commit et une preuve de préservation (cf. CLAUDE.md global « Consolider ≠ Archiver »).Lane d'origine et tag
Cette Epic est coordonnateur-agnostique — elle ne réclame aucune lane. Les sous-grains seront piochés par le picker selon les règles habituelles (R5 pool global, R6/R7 variété).
Grain: META/consolidation — lane myia-po-2023:CoursIA-2 — prev: DEEP/notebook-python #16466(PR #16466 = kernel-drift-guard REPAIR — dernier grain DEEP.CONTENU mergé avant création de cette Epic).