Skip to content

docs(symboliclearning,#15641): réconcilier README avec le disque (24 notebooks) + diagnostic catalogue - #15679

Merged
myia-ai-01 merged 1 commit into
mainfrom
docs/symboliclearning-readme-15641
Sep 12, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
docs/symboliclearning-readme-15641

Conversation

@jsboige

@jsboige jsboige commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Grain: MED/docs — lane myia-po-2023:CoursIA — prev: MED/notebook-python #15663

Résumé

#15641 demandait de réconcilier le README SymbolicLearning (catalogue, compteurs, structure) sans régénérer les artefacts catalogue sur la branche. Le diagnostic firsthand a déplacé la cause : le générateur est sain — c'est le cron de régén qui a échoué une fois, laissant sur main un catalogue en snapshot du 2026-09-10. Cette PR réconcile toute la prose avec le disque (24 notebooks), documente la trajectoire catalogue dans une section narrative, et laisse le marqueur CATALOG-STATUS byte-identique à main.

Acceptation 1 — diagnostic : pourquoi SL-13 et SL-12b' manquent du catalogue

Mesures firsthand (main frais, worktree isolé) :

Fait Mesure
Générateur sain generate_catalog.py --git-tracked-only relancé localement sur origin/main → 1136 entrées dont 24 SymbolicLearning — SL-12b-PavlovDLS-Reproduction.ipynb et SL-13-Discover-TPR.ipynb indexées (BETA toutes deux). Le walker ne les exclut pas : aucun terme d'EXCLUDE_PEDAGOGICAL n'est sous-chaîne de leurs chemins
Catalogue committé en retard COURSE_CATALOG.generated.json sur main = 1130 entrées dont 22 SL ; diff regen-vs-committed : 14 notebooks présents sur le disque absents du JSON (mes 2 SL + 8 GameTheory post-renum #15586 + App-18c + Lean-3b) et 8 entrées fantômes (anciens noms GameTheory 24-28 pré-renum) — toutes cohérentes avec un cutoff unique
Cause du cutoff Dernier run réussi de catalog-cron.yml : 2026-09-10T08:21Z ; le run du 2026-09-11T08:16Z a échoué à l'étape « Regenerate catalog » (jobs API : étapes suivantes null ; logs expirés — « log not found », runner ephemeral). Le workflow re-base bien la branche sur origin/main frais à chaque run, mais le run n'a jamais abouti
Guérison workflow_dispatch (activé dans le workflow) lancé : run 34659687724 (2026-09-11T23:52:50Z) — régén depuis main frais, push sur chore/catalog-refresh-pending, PR long-lived #15358 à merger par le coordinateur. Le merge n'est PAS fait par cette PR (ligne rouge worker)

Acceptation 2 — source du catalogue : mesurée, aucun correctif requis

« Corriger la source du catalogue » supposait un défaut dans le générateur. Mesuré : le pipeline entier (generate_catalog → expand_catalog_markers → generate_health_dashboard → generate_parcours) passe vert localement sur main courant. Le défaut était un échec de run unique (logs expirés, runner éphémère) ; l'automatisation reprend via le dispatch ci-dessus. Le marqueur du README reste à 23 (posé par #15537, qui y a inscrit SL-13 à la main — écart catalog-pr-hygiene auto-résorbé à la prochaine régén) ; la régén l'alignera sur 24 (BETA=22, ALPHA=2) avec l'entrée JSON des deux derniers — consistance éventuelle <24 h, le contrat documenté.

Acceptation 3 — compteurs réconciliés prose ↔ table ↔ disque

Endroit Avant Après (= disque)
L28 Prérequis « ~20h05 — 13 Python » (=22) « ~20h55 — 15 Python » (=24)
Vue d'ensemble Notebooks « 23 (14 Python…) » « 24 (15 Python canoniques + 8 jumeaux C# + 1 compagnon Lean) »
Vue d'ensemble Durée « ~1230 min (~20 h 30 : Python 13 h 00…) » « ~1255 min (~20 h 55 : Python 13 h 25…) »
Table de pioche (prose, 4 endroits) « 52 exercices » « 55 exercices » (= 55 rangées comptées)
Phase 6 (en-tête + mermaid + « Quatre notebooks ») SL-10 à SL-12b, ~270 min, Quatre SL-10 à SL-12b', ~295 min, Cinq
Parcours knowledge graphs « ~220 min » « ~205 min » (45+50+55+55)
Table 6 phases : Phase 6 / Total 5 notebooks, BETA=4 / 23 inscrits, BETA=21 6 notebooks, BETA=5 / 24, BETA=22, ALPHA=2
Note maturité « 23 notebooks (14 Python), tous inscrits » « 24 notebooks (15 Python), couverts par l'automatisation »
Table parenté « 12 lignes » (14 rangées réelles) « 15 lignes » (15 rangées : + SL-12b')
Footer version « Total : 23 inscrits (BETA=21) » « Total : 24 (BETA=22, ALPHA=2, réconciliés par le catalog-cron) »
Prose « le README fait 665 lignes » 665 (réel à l'issue : 714) 714

Preuve de cohérence arithmétique : somme des 24 rangées de la table Notebooks = 1255 min = 20 h 55 (recalculée par script) ; Python 805 + Lean 40 + C# 410 = 1255 ; phases 2+4+4+2+5+6 = 23 + SL-1b hors phases = 24 ; BETA 2+4+4+2+4+5 = 21 + SL-1b = 22, + 2 ALPHA = 24.

Acceptation 4 — arbre et contenu détaillé complétés

  • Arbre ## Structure des fichiers : + SL-12b-PavlovDLS-Reproduction.ipynb, + les 2 artefacts -output.ipynb (conservés, annotés « non indexé catalogue »), + assets/ (readme/), tests/, vendor/ (metagol, difflogic), _archive/ — tous présents sur disque, tous cités ailleurs du README.
  • ## Contenu détaillé : + sous-sections SL-12b-PavlovDLS-Reproduction (9 sections, depuis les headings réels du notebook) et SL-13-Discover-TPR (10 sections) avec leurs références arXiv.

Acceptation 5 — audit fichier-entier après correction

Re-scan du fichier final (714 lignes) : grep des 15 motifs périmés (« 52 exercices », « 20h05 », « ~1230 », « ~270 min », « ~220 min », « Quatre notebooks », « 12 lignes », « 665 lignes », « 14 Python », « 23 notebooks », « BETA=21 » hors narratif…) → 0 résidu hors (a) le marqueur lignes 5-10, byte-identique à origin/main (diff vide, vérifié), et (b) la phrase narrative qui cite volontairement son état courant (23) et sa cible (24). Headings ajoutés < 80 caractères (guard mono-ligne). Table de pioche recomptée : 55 rangées.

Acceptation 6 — artefacts catalogue hors de la PR

Diff = 1 fichier (MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/README.md, +65/−26). Aucun COURSE_CATALOG.generated.*, aucun marqueur modifié, aucun workflow. (Le diagnostic a bien impliqué de régénérer localement dans le worktree — tous les artefacts salis ont été restaurés à HEAD avant commit ; ils ne figurent pas dans le diff.)

Résiduels signalés (hors scope, non traités)

Closes #15641

🤖 Generated with Claude Code

…tail sections with disk (24 notebooks)

- counters: 13/14 Python -> 15, totals 22/23 -> 24, durations 1205/1230 -> 1255 min (= table sum), pick-table 52 -> 55 exercises (4 prose spots), parente table 12 -> 15 rows, line count 665 -> 714
- phase 6: SL-12b' included (270 -> 295 min, "Quatre" -> "Cinq notebooks", mermaid P6)
- tree: + SL-12b-PavlovDLS, + 2 -output.ipynb artifacts (kept, not deleted), + assets/ tests/ vendor/ _archive/
- Contenu detaille: + SL-12b' and SL-13 subsections
- catalog stats section rewritten as narrative (marker = automation-owned, left byte-identical to main at 23; cron regen aligns marker+JSON to 24)
- diagnostic: catalog on main = snapshot of main@2026-09-10T08:21Z (last successful cron); the 2026-09-11 run failed at regen step; generator itself measured healthy (local regen on fresh main indexes 24/24 SL entries); heal dispatched via workflow_dispatch run 34659687724

Closes #15641

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory) label Sep 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-12) :

  • 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.

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #15679 (docs(symboliclearning,#15641): réconcilier README avec le disque (24 notebooks) + diagnostic catalogue) 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.

Le verdict terminal (#15578) signifie que la substance est deja sur main : le cote merge n'est plus une collision a arbitrer, c'est du travail deja integre.

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

Labels

variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs(symboliclearning): réconcilier catalogue, compteurs et structure du README

2 participants