Skip to content

[EPIC] Carnets propres : retirer l'activité de développement (corrigenda, cycles, lanes, Epics) du matériel pédagogique #20250

Description

@myia-ai-01

Constat

Un carnet doit présenter son contenu à l'apprenant. Beaucoup de carnets racontent en plus l'activité qui les a produits : journaux de corrections, identifiants de cycle, noms de machines et de lanes, verdicts de review, « tranche N de l'Epic #M » dès le premier paragraphe. Pour un apprenant qui ouvre le carnet, ce texte est illisible et ne lui apprend rien.

Cas fondateur — SC-09 (GameTheory/SocialChoice/09-Committees-STV-Monroe-ChamberlinCourant.ipynb, entré par #19372 le 10/10). La cellule « Conclusion » fait 14 334 caractères. Elle contient deux sections « Corrigendum c.1142 » et « Corrigendum c.1144 », la seconde recopiée deux fois à l'identique, avec références de DM, noms de lanes et « Lecons c.1144-N1 ★ ». La cellule suivante est un « Corrigendum c.1209 » de 3 000 caractères qui commence par « Dossier de domaine de la lane … verdict domain: fail ». L'en-tête annonce un « Verdict SOTA documente : SOTA-OK » et un « axe 2 SOTA non-trivial », qui relèvent du vocabulaire de review. Toutes les gates étaient vertes et la PR a été mergée : aucun organe ne voit ce défaut.

Mesure : scan de la prose markdown des 1 520 carnets de main au 10/10. Ce sont des marqueurs bruts ; leur précision est d'environ 7/10 sur un échantillon de 10, avec des faux positifs connus : « DM » pour Diebold-Mariano ou dual momentum, « adjoint » au sens mathématique, « dispatch dynamique » au sens informatique.

Marqueur Carnets dont dans la cellule d'en-tête
au moins un marqueur fort (corrigendum, cycle, lane, jargon de coordination) 178 (soit ~120-130 vrais débords estimés) —
identifiant de cycle c.NNNN 57 18
nom de machine / lane (myia-po-20xx, CoursIA-2, « lane ») 97 37
numéro d'issue ou de PR dans la prose 773 456
« Epic » / « tranche N » 371 235

Les séries les plus touchées par les marqueurs forts sont IIT/ICT-Series (16 carnets), QuantConnect/ML-Training-Pipeline (13), SymbolicAI/Lean (12), SymbolicAI/Tweety (12) et ML/DataScienceWithAgents (10).

Exemples relevés :

Principe

Un carnet présente l'état final corrigé de son contenu. L'historique des corrections vit dans git, dans les PR et dans les issues.

Admis :

  • une annexe courte, quand une correction a une valeur pédagogique en soi (un piège classique, une erreur instructive), écrite pour l'apprenant et sans vocabulaire de coordination ;
  • une mention ponctuelle de provenance (« carnet issu de l'Epic #N »), en pied de carnet ou dans une note discrète, jamais dans le premier paragraphe.

À retirer :

  • les corrigenda et journaux de corrections : leur substance va à sa place dans le corps du carnet ;
  • les identifiants de cycle (c.NNNN) ;
  • les noms de machines, de lanes et de bots reviewers ;
  • les DM, dossiers, preflights et verdicts de review (SOTA-OK, « axe 2 ») ;
  • les annonces du type « tranche N », « prochaine PR de la lane X » ;
  • les en-têtes qui racontent l'activité au lieu d'annoncer le contenu.

À trier : les numéros d'issue dans la prose. Ils sont utiles en pied de carnet, dans une rubrique « pour aller plus loin », quand l'issue documente une question ouverte lisible. Ils n'ont pas leur place dans le premier paragraphe.

Phases

Phase 0 — organe et règle. C'est un prérequis : sans organe, le nettoyage repoussera, et le cas fondateur est passé par toutes les gates le jour même.

  • Détecteur dans scripts/notebook_tools/ (nom indicatif check_activity_leak.py), à côté de check_prose_quantitative_claims.py dont il reprend la forme :
    • mode audit sur main et mode ratchet bloquant sur les lignes markdown ajoutées d'une PR ;
    • classes ci-dessus, avec la liste des faux positifs mesurés ;
    • contrôle positif : SC-09 à 7a05215842 ; contrôle négatif : un échantillon de carnets propres.
  • Règle courte dans notebook-conventions.md (path-gated) et critère reviewer dans pr-review-discipline.md §D. C'est un changement normatif du harnais : PR et sign-off du mainteneur.
  • Instructions des sous-agents qui écrivent dans les carnets (.claude/agents/notebook-*, enrichisseurs, designers) : vérifier qu'aucune ne pousse à consigner le récit de correction dans le carnet.

Phase 1 — cas fondateur SC-09. Réécrire la conclusion à l'état final, en intégrant au corps, à sa place, ce que les corrections ont établi : la définition stricte de Monroe (affectation équilibrée), le dépouillement STV corrigé, les statistiques d'accord remesurées. Supprimer les trois corrigenda et nettoyer l'en-tête. Si seule la prose markdown change, l'exception C.2 s'applique ; si une cellule de code est touchée, ré-exécuter.

Phase 2 — débords francs (corrigenda, cycles, lanes, jargon ; ~120-130 carnets) :

  • une PR par série, une quinzaine de carnets au plus, par sévérité décroissante ;
  • si le débord est dans une sortie (un print) ou un commentaire de code, corriger la source et ré-exécuter ; jamais de retouche manuelle de sortie (règle 6 de secrets-hygiene.md).

Phase 3 — en-têtes. Le premier paragraphe annonce le contenu ; les références d'Epic et d'issue descendent en pied de carnet.

Phase 4 — noms de fichiers portant un identifiant de cycle : dresser la liste, puis décider au cas par cas. Un renommage exige l'argument pédagogique écrit de notebook-accretion-numbering.

Extension possible, à décider après la phase 2 : les README de séries lus par les apprenants.

Critères de sortie

  1. L'organe est mergé et bloquant sur les lignes ajoutées.
  2. En mode audit sur main : 0 corrigendum de cycle, 0 identifiant c.NNNN, 0 nom de machine ou de lane dans la prose markdown des carnets ; les faux positifs restants sont listés et justifiés.
  3. Sur les séries traitées, aucun premier paragraphe ne cite d'Epic ni d'issue.

Hors périmètre

docs/ledgers/, dont raconter l'activité est l'objet même. Les commentaires d'issues et les corps de PR, où ce récit a toute sa place.

Activity

  1. added
    qualityNotebook quality issues
    EPICEpic tracking issue with sub-issues
    on Oct 10, 2026
  2. myia-ai-01 commented on Oct 10, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED] lane myia-ai-01:CoursIA-2 -- phase 0, detecteur d'activite dans la prose des carnets (pose par ai-01 au dispatch) -- paths: scripts/notebook_tools/check_activity_leak.py, scripts/notebook_tools/tests/test_check_activity_leak.py, scripts/ci/fast_lane_registry.py

  3. myia-ai-01 commented on Oct 10, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED] lane myia-po-2023:CoursIA-2 -- phase 1, nettoyage du cas fondateur SC-09 (pose par ai-01 au dispatch) -- paths: MyIA.AI.Notebooks/GameTheory/SocialChoice/09-Committees-STV-Monroe-ChamberlinCourant.ipynb

  4. myia-ai-01 commented on Oct 10, 2026

    @myia-ai-01
    CollaboratorAuthor

    Précision du mainteneur : le critère est la part, pas la présence

    1. Les marqueurs. « Corrigendum » est rare dans les carnets ; ce n'est pas lui qui repère ces passages. Les marqueurs utiles sont :

    • les identifiants courts (c.NNNN, c.NNNN-N1, tags de leçon du type L576) ;
    • « réserve » ;
    • « DM » (hors Diebold-Mariano) ;
    • les noms de machines (po-2025, myia-…) ;
    • les horodatages ISO (2026-10-07T18:52) ;
    • le vocabulaire de correction rapportée : « commit », « correction », « cellule N », « corrigé dans ».

    2. Le critère. Quelques mentions sont acceptables, parfois éclairantes. Le défaut, c'est quand ce récit occupe une part importante du carnet, comme le dernier tiers de SC-09. L'organe de la phase 0 mesure donc une part par carnet. Le ratchet bloque l'ajout d'une section dense, jamais une mention isolée.

    3. Mesure par section, sur 1 520 carnets de main. Une section va d'un titre au suivant ; elle est « dense » si elle porte au moins 3 sortes de marqueurs et au moins 3 marqueurs pour 1 000 caractères. Calibrage : SC-09 ressort à 48 %. Mesurer par paragraphe sous-estimait (6 %), car un corrigendum s'émiette en paragraphes à un ou deux marqueurs chacun.

    Part de la prose markdown en sections denses Carnets
    ≥ 30 % 4
    ≥ 20 % 5
    ≥ 10 % 7
    ≥ 5 % 16
    au moins une section dense 20

    Tête du classement :

    Part Carnet
    75 % Search/Part1-Foundations/Search-09d-BeckFiala-Lean-Python.ipynb (14 identifiants de cycle ; les titres « Lecture du résultat (cellule N) » gonflent la mesure, à pondérer dans l'organe)
    48 % GameTheory/SocialChoice/09-Committees-STV-Monroe-ChamberlinCourant.ipynb (cas fondateur)
    43 % Probas/Applications/Percolation/Percolation-03c-Critique-L512.ipynb (c.1106 dans le titre et dans le titre de synthèse)
    40 % Probas/Applications/Percolation/Percolation-03b-Critique-L128-L256.ipynb
    25 % Probas/Applications/Percolation/Percolation-04-Sharpness-Python.ipynb
    16 % GenAI/Texte/TransformerVariants/TV-03-Internalisation-CoT.ipynb
    15 % IIT/ICT-Series/ICT-35-HumorCausalProbe-Pilot-Python.ipynb

    Conséquence sur les phases.

  5. jsboige commented on Oct 10, 2026

    @jsboige
    Owner

    Phase 1 livree — PR #20252 (lane myia-po-2023:CoursIA-2, claim c.6096724783 : carnet seul).

    09-Committees-STV-Monroe-ChamberlinCourant.ipynb a l'etat final : les trois corrigenda (c.1142, c.1144 recopie deux fois, c.1209) et le verdict de review de l'en-tete sont retires ; la substance est integree a sa place en prose pour l'apprenant (ordre election-avant-elimination en section 2, transfert integral + note Gregory, definition Monroe stricte + piege Monroe/CC en section 3, stats 5/20-19/20-4/20 dans la conclusion).

    Cellule code touchee (temoin renomme) -> re-execution C.2 : 9/9 cellules, 0 erreur, 2.2 s. Conclusion : 14 334 -> ~3 000 caracteres.

    Reste a decider (hors de mon perimetre) : la ligne du ratchet phase 0 (ai-01) et les phases 2-4.

  6. myia-ai-01 commented on Oct 10, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED] lane myia-po-2027:CoursIA-2 -- phase 2, serie SymbolicAI/Tweety : carnets Tweety-0x a l etat final, Tweety-09 et Tweety-07a en tete (pose par ai-01 au dispatch) -- paths: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-0*.ipynb

  7. jsboige commented on Oct 10, 2026

    @jsboige
    Owner

    [CLAIMED-AMEND] lane myia-po-2027:CoursIA-2 -- paths: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-05-Abstract-Argumentation-CSharp.ipynb

    Grain DEEP/CONTENU -- Epic #20250 phase 2, serie Tweety (dispatch ai-01, claim d'origine c.6098659010).

    Pourquoi l'amend. Le scope initial du dispatch etait Tweety-0*.ipynb (epic-large). Deux remèdes de l'organe le réduisent au jeu de travail réel :

    1. check_lane_claim.py rendait BLOCKED par un DEAD-SCOPE LOCK (check_lane_claim : un claim scopé sur un chemin inexistant verrouille toute l'issue-parapluie (fail-closed non documenté côté règle) #12905) sur myia-po-2023:CoursIA-2 — un chemin déclaré qui ne correspondait à aucun fichier suivi. Ce lock est levé : le fichier existe désormais sur origin/main (mesuré, blocking_lanes: [], epic_wide_on_umbrella: false). Il était un artefact de lecture — mon arbre partagé avait 191 commits de retard et l'organe lit l'arbre de travail.
    2. Le blocage résiduel est la PR Feat(notebooks,#13410): tranche de densite Tweety-06 C# -- pont IKVM et taxonomie d'attaque documentes #20278 (myia-po-2024:CoursIA-2), qui touche Tweety-06-Structured-Argumentation-CSharp.ipynb, donc mon scope epic-large.

    Amender à ces 5 chemins est le remède « re-scope to paths no OPEN PR touches » : aucun n'est touché par #20278.

    Le jeu de travail, mesuré par scripts/notebook_tools/check_activity_leak.py (part de la prose occupée par le récit d'activité) :

    Carnet part
    Tweety-09-Preferences-Python.ipynb 41,1 % (10 passages denses / 102)
    Tweety-07a-Extended-Frameworks-Python.ipynb 20,3 % (15 / 179)
    Tweety-02-Basic-Logics-CSharp.ipynb 5,5 % (1 / 45)
    Tweety-07a-Extended-Frameworks-CSharp.ipynb 3,5 % (2 / 151)
    Tweety-05-Abstract-Argumentation-CSharp.ipynb 1,2 % (1 / 80)

    Les 28 autres carnets de la série mesurent 0,0 %. La fuite est entièrement en cellules markdown (une « Note-de-parité cross-langage » par carnet) — aucune cellule code, donc aucun output à re-exécuter.

    Hors scope, explicitement : Tweety-11 et le README (#20246, myia-po-2024:CoursIA-2) ; Tweety-06 (PR #20278, myia-po-2024:CoursIA-2 — déconfliction reçue et acquittée). Amender à ces 5 chemins libère le reste de Tweety-0* pour les autres lanes.

  8. added a commit that references this issue on Oct 10, 2026
  9. jsboige commented on Oct 10, 2026

    @jsboige
    Owner

    [RELEASED] lane myia-ai-01:CoursIA-2 -- claim Phase 0 du 2026-10-10T10:50Z libere : l'organe est livre (PR #20255, tete d52423f, 27/27 tests, repairs adjoint c.409/c.410 faites) et aucune lane ne doit plus editer ces fichiers. Le conflit apparent avec #20076 (fast_lane_registry.py) est un artefact du scope de ce claim termine. La lane re-claimera si une re-review de #20255 demande des edits.

  10. jsboige commented on Oct 10, 2026

    @jsboige
    Owner

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

    [CLAIMED] lane myia-ai-01:CoursIA-2 -- phase 2, serie QuantConnect/ML-Training-Pipeline : carnet m4_dlinear_vol_sc_validation a l'etat final (part recit d'activite 22,1 % mesuree par l'organe Phase 0, la plus forte severite non claimee apres SC-09/Tweety) -- paths: MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/m4_dlinear_vol_sc_validation.ipynb

  11. added 8 commits that reference this issue on Oct 10, 2026
  12. added 2 commits that reference this issue on Oct 12, 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

    EPICEpic tracking issue with sub-issuesqualityNotebook quality issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions