Skip to content

[EPIC] Site GitHub Pages jsboige.github.io/CoursIA — audit & refonte (navigation, parcours, rendu notebooks) #10921

Open

Description

@myia-po-2023

État mesuré au 2026-10-05 — consolidation de l'EPIC (#10921)

Ce bloc préfixe sans refermer l'EPIC. Cinq PRs mergées depuis le 2026-10-01 ne sont pas consignées dans le corps ci-dessous (signal vérifié à l'organe scripts/epic_body_staleness.py, fenêtre 26/09 → 05/10). Posture non contredite — l'EPIC reste guidé par les 4 axes de travail initiaux ; les 5 PRs s'y insèrent sans contredire la pose.

Cinq PRs non consignées dans le corps ci-dessous :

PR Date merge Sujet Axe de rattachement
#18970 2026-10-04 Fix(site,#18911): moulinette ipynb_links + garde CI bloquante STALE_LINK #10922 (liens de séries), #10925 (audit moteur Quarto)
#18912 2026-10-03 feat(site,#18423): couverture résiduelle complète + garde zéro-non-couvert #10923 (notebooks servis en JSON brut → couverture résiduelle)
#18765 2026-10-04 feat(preflight,#18208): learner_preflight.py par profil parcours #10924 (navigation / parcours)
#18710 2026-10-02 fix(site,#18422): étendre regen_quarto_render.py pour rendre docs/*.md en HTML #10925 (audit moteur Quarto : .md servis bruts)
#18429 2026-10-01 fix(site,#18421): 58 notebooks hr-bloques convertis --- vers *** + regen _quarto.yml (1181 rendus) #10923 (notebooks servis), #10925 (moteur)

Portée vérifiée : la correction ne touche ni le constat user 2026-08-14 (« site mauvais »), ni la méthode obligatoire (Playwright + vision), ni les 4 axes initiaux. Les 5 PRs livrées s'inscrivent dans les axes existants comme des clôtures d'axes ou des gardes associées. Aucune ne ferme l'EPIC : les axes restent à honorer au complet (Playwright, visionneuse, parcours guidé, audit moteur).

L'EPIC reste OPEN — le critère « Chaque notebook est consultable via une visionneuse » (#10923) demande la bascule notebook-preview: true ou un wrapper équivalent ; le critère « Parcours guide l'apprenant » (#10924) attend learner_preflight.py activé par parcours ; le critère « Audit visuel Playwright documenté » n'a pas de PR fusionnée de mesures visuelles depuis le 2026-08-14 (lane po-2023 : séquence Playwright à reprendre).


Epic — Audit et refonte du site GitHub Pages jsboige.github.io/CoursIA

Constat user (2026-08-14) : le site publié récemment est « très mauvais » — il ne fait pas honneur à la qualité du contenu du dépôt. La navigation est difficile et met en avant des docs techniques obscures sans guider l'apprenant dans les parcours. Pour les parcours, certains notebooks ont des liens, d'autres non ; surtout, les notebooks sont affichés comme des ressources JSON brutes là où GitHub propose une visionneuse qui rend correctement markdown, code et sorties.

Nature du travail : long terme. Il aboutira à modifier autant le contenu du dépôt (liens, prose, navigation) que le moteur qui génère les pages github.io (workflow Quarto + config + scripts).

Méthode obligatoire — Playwright + vision, jamais text-only

  • Audit visuel Playwright obligatoire sur chaque page clé : navigation, rendu des notebooks, liens (pas de test text-only).
  • Lanes CoursIA-2 uniquement pour l'audit : MiniMax M3 et son failover Deepseek ont la vision (contrairement à GLM, lanes CoursIA) — ce sont les modèles de choix. Un QA visuel sur une lane sans vision = angles morts persistants (cf cluster-agents.md, routage capability-driven).
  • Chaque finding est vérifié firsthand (Playwright + capture) avant de devenir une issue.

Constats vérifiés (grounding 2026-08-14, lane myia-po-2023:CoursIA-2)

  1. Liens de séries cassés (7/12) sur MyIA.AI.Notebooks/index.qmd : GenAI, Probas, SymbolicAI, QuantConnect, CaseStudies, IIT, SemanticKernel (+ cross-series/) pointent vers ../<Serie>/README.md → résolvent à la racine du site (https://jsboige.github.io/CoursIA/GenAI/README.md) où les séries n'existent pas → 404 confirmé Playwright (GenAI : "File not found"). Les 5 liens qui marchent (Search/README.md, etc.) sont relatifs dans MyIA.AI.Notebooks/ et réécrits en .html par Quarto.
  2. Notebooks servis en JSON brut : notebook-preview: false dans _quarto.yml (L455) → les .ipynb sont copiés tels quels dans _site/ (outputs embedded), le navigateur affiche le JSON source au lieu d'une visionneuse. Confirmé Playwright : Search-1-StateSpace.ipynb = page de 422 KB de JSON brut.
  3. Navigation ne guide pas l'apprenant : la navbar met en avant les séries techniques (Search, Sudoku, GameTheory, Probas, Documentation) ; le lien "Parcours" est enterré. parcours.qmd liste les séries en texte brut sans liens et les chemins n'incluent pas le préfixe MyIA.AI.Notebooks/.
  4. Moteur de génération à auditer : .github/workflows/quarto-pages-deploy.yml (Quarto 1.7.32, freeze: auto, notebook-preview: false), scripts/regen_quarto_render.py (liste de rendu ~383 README), et le rendu des .md non-README : COURSE_CATALOG.generated.md est servi brut (markdown texte, confirmé Playwright 88 KB) alors qu'il est lié depuis la page d'accueil.

Axes de travail (issues filles)

Critères d'acceptation

  • Chaque lien de série / parcours résout vers une page rendue (0 File not found vérifié Playwright).
  • Chaque notebook est consultable via une visionneuse rendant markdown + code + sorties (type GitHub viewer), pas le JSON brut.
  • Le parcours guide l'apprenant : chemin recommandé explicite, liens vers les séries correctement préfixés.
  • Les fichiers .md non-README liés depuis des pages du site sont rendus (HTML) ou retirés de l'UI.
  • Audit visuel Playwright documenté par page (captures + verdict) sur le dashboard RooSync — jamais de rapport commité dans le repo.
  • Grain: + prev: dans chaque PR (variation-protocol), une PR = un sujet.

Labels

EPIC (parapluie). Les issues filles portent documentation / bug selon leur nature.

Activity

  1. added 4 commits that reference this issue on Aug 14, 2026
  2. added 2 commits that reference this issue on Aug 15, 2026
  3. added 2 commits that reference this issue on Aug 17, 2026
  4. added a commit that references this issue on Aug 18, 2026
  5. jsboige commented on Aug 26, 2026

    @jsboige
    Owner

    Audit de l'acceptance sur le site live (po-2027:CoursIA-2, Playwright, 2026-08-26 — l'EPIC est muette depuis 11 j, les 4 filles sont CLOSED, 12+ PRs mergees ; il fallait la verification publiee).

    Verdicts par critere d'acceptance

    Critere Verdict Preuve mesuree
    Chaque lien de serie / parcours resolve vers une page rendue TENU 15/15 cibles HEAD 200 (13 series + parcours.html + COURSE_CATALOG.generated.html) ; parcours.html : 26/26 liens vivants
    Chaque notebook consultable via une visionneuse rendant markdown+code+sorties NON TENU en majorite Search README : 21/21 liens .ipynb -> JSON brut (0 rendu .html sibling, verifie HEAD sur chaque cible) ; RL README : 11/11 -> JSON brut. Exemple confirme visuellement : Search-3-Informed.ipynb affiche les cells JSON. Seul le pilote #10972 rend : Search-1-StateSpace.html = 200, mais il n'est pas liste au README
    Le parcours guide l'apprenant TENU parcours.html rendu, liens cliquables, 0 mort
    Les .md non-README lies sont rendus (HTML) ou retires TENU COURSE_CATALOG.generated.html = 200 (rendu #11021)

    Le residu precis (critere 2)

    Le travail en tranches de #10923 (#10972 pilote, #11567, #11606 SymbolicAI/Lean...) a produit des rendus HTML, mais les READMEs de series continuent de lier les .ipynb bruts : sur les deux series mesurees (Search, RL), 32/32 liens notebook menent au JSON. Le site a donc deux populations : des pages rendues isolees (accessibles seulement en connaissant l'URL) et l'experience dominante depuis les READMEs = JSON brut.

    Le geste manquant n'est pas de rendre plus de notebooks — c'est de re-brancher les liens des READMEs (.ipynb -> .html quand le rendu existe) et/ou d'etendre la render-list aux notebooks effectivement listes. Une regle de decision est attendue : soit la couverture render-list couvre 100% des notebooks listes dans les READMEs (et les liens basculent), soit les READMEs marquent explicitement les non-rendus.

    Proposition : issue fille dediee au re-branchage de liens READMEs (mesure initiale : sweep HEAD systematique par serie, la methode de cet audit est reproductible en une page Playwright par serie).

  6. added a commit that references this issue on Aug 29, 2026
  7. jsboige commented on Aug 30, 2026

    @jsboige
    Owner

    Grain: MED/slides — lane myia-po-2027:CoursIA-2 — prev: LIGHT/docs #13123

    [CLAIMED] lane myia-po-2027:CoursIA-2 -- paths: parcours.qmd, styles.css

    Sous-grain visuel de #10921, steering ai-01 du 2026-08-30. Grounding Playwright live : parcours.html rend deux H1 « Parcours d'apprentissage » successifs (frontmatter title + H1 body), puis trois longues sections textuelles sans vue comparative ni CTA de choix. Les liens sont vivants ; le défaut est l'expérience de sélection, pas le routage.

    Critères de sortie :

    1. Un seul H1 rendu ; intro concise sans répétition title/body.
    2. Trois parcours présentés comme choix comparables (prérequis, matériel, ce que l'on apprend, séries, action de démarrage), avec progression 1 -> 2 -> 3 lisible.
    3. CSS dédié, responsive, theme-aware ; aucune régression navbar/TOC ; pas d'emoji dans les fichiers générés.
    4. Tous les liens actuels préservés et vérifiés ; aucune modification du catalogue généré.
    5. Quarto render local + Playwright firsthand desktop et mobile sur la page rendue ; captures/verdict sur dashboard, jamais dans le repo.
    6. PR atomique parcours.qmd + styles.css, body avec preuves visuelles et See #10921.

    Collision guard : aucune PR ouverte sur parcours.qmd/styles.css, aucun claim actif #10921 au grounding.

    [RELEASED] lane myia-po-2027:CoursIA-2 -- paths: MyIA.AI.Notebooks/GenAI/Aspire/AgentGuard.Analyzers/, MyIA.AI.Notebooks/GenAI/Aspire/AgentGuard.Demo/, MyIA.AI.Notebooks/GenAI/Aspire/AgentGuard.Verifier/**, MyIA.AI.Notebooks/GenAI/Aspire/06-Aspire-GardeFous-Roslyn.ipynb -- AGENTGUARD004 deferre en deep-queue suivante : steering visuel ai-01 #10921 prime avant ACK/edition, aucun travail worker perdu.

  8. added 2 commits that reference this issue on Aug 30, 2026
  9. 3 remaining items

  10. added a commit that references this issue on Sep 3, 2026
  11. jsboige commented on Sep 8, 2026

    @jsboige
    Owner

    Verification c.305 - label candidate-delivered retire : EPIC vivant avec claims cross-lane actifs, pas un delivered-urn.

    Diagnostic : 20+ PRs MERGED referencant #10921 (refonte visuelle parcours.qmd, navigation, rendu notebooks HTML, audit link render, etc.). MAIS le ticket a 2 CLAIMED-AMEND recents :

    • 2026-09-02T22:18:40Z : [CLAIMED] lane myia-po-2026:CoursIA-2 -- paths: MyIA.AI.Notebooks/**/README.md, scripts/notebook_tools/check_notebook_link_render.py, .github/workflows/notebook-link-render-check.yml
    • 2026-09-02T22:19:42Z : [CLAIMED-AMEND] lane myia-po-2026:CoursIA-2 -- paths: scripts/notebook_tools/check_notebook_link_render.py (nouveau), .github/workflows/notebook-link-render-check.yml (nouveau), MyIA.AI.Notebooks/**/README.md

    Le ticket est explicitement concu comme EPIC de refonte progressive du site GitHub Pages. La refonte est en cours par po-2026 - le label candidate-delivered a ete pose par co-occurrence de mots avec PRs MERGED, mais le ticket reste actif (EPIC vivant, non clos par user).

    Pas de full delivery au sens Closes : le ticket est un EPIC vivant concu pour porter les tranches de la refonte du site. Ticket reste OPEN.

    Tell c.304-L1 sustained : 23ᵉ cas. Pattern EPIC vivant = #8182 + #10921 + #1650 (umbrella) : l'advisory ne distingue pas EPIC long-terme des delivered-urns one-shot. Matcher devrait verifier le statut claim EPIC vivant avant de poser le label.

  12. jsboige commented on Sep 14, 2026

    @jsboige
    Owner

    [CLAIMED-RELEASE] lane myia-po-2026:CoursIA-2 -- residuel = _quarto.yml L1264 'notebook-preview: false' (ticket strategique moteur Quarto, non un guard-tranche).

    Suite au dispatch ai-01 du 2026-09-14T11:16 (msg-20260914T091656-2rwnxe) : ma claim dormante (12 jours) a deja retreci le scope (de 'instrument + scan + lot' a 'check_notebook_link_render.py seul') apres mesure firsthand -- mais le verdict que cette mesure nomme ('_quarto.yml, notebook-preview: false L1264 -- repeindre une jambe de bois sur les READMEs sans corriger la source') est un changement de moteur Quarto du site jsboige.github.io/CoursIA, pas un guard CI.

    Je libere pour deux raisons :

    1. Strategique : un changement du moteur Quarto de prod demande audit de l'architecture site (workflow quarto-pages-deploy, parcours.qmd, navbar) que ma posture worker-outillage ne couvre pas. Une lane avec contexte 'site publie' (po-2023 a deja travaille ce terrain par le pass) sera mieux placee.
    2. Calendaire : 12 jours de dormance sur un umbrella montrent que ce ticket n'est pas dans mon flux actuel ; ma regle R5 dit 'douze jours de dormance = liberez' et c'est ce que je fais.

    Si le coordinateur decide que ce grain reste dans mon scope, je le reprends -- mais l'arbitrage precedent de mon propre scope etait le bon (retrecir apres mesure), et il pointe vers une lane a contexte strategique site.

  13. jsboige commented on Sep 29, 2026

    @jsboige
    Owner

    [INFO] Re-audit visuel du site (Playwright + snapshots, 2026-09-29) — verdict par constat du body du 2026-08-14 :

    Résolus (vérifiés firsthand) :

    • Constat 1 (liens séries) — les pages de série (Search/Part1-Foundations/README.html, ML/README.html, etc.) sont rendues et liées depuis la home.
    • Constat 3 (parcours) — parcours.html rendu, 3 parcours + passerelles, liens fonctionnels vers séries et catalogue.
    • Constat 4 (catalogue) — COURSE_CATALOG.generated.html rendu et lié depuis home + docs + parcours.

    Constat 2 (notebooks servis en JSON brut) — partiellement actif, décomposé en 3 causes mesurées (chiffres : 1454 notebooks git-tracked, 1123 dans la render-list fraîche) :

    1. 58 notebooks exclus par la garde hr-separator (FallacyDetection : le README annonce une taxonomie francophone — elle est traduite en 8 langues (et le corpus d'amorçage n'est pas la stratégie de données) #11451) : un --- seul dans une cellule markdown casse le parse YAML de Quarto → le regen les exclut silencieusement (ex mesurés : ML/1-Introduction.ipynb → 404 ; Probas/Infer-3-Factor-Graphs.ipynb → JSON brut). → Site Pages : 58 notebooks exclus du rendu par la garde hr-separator (#11451) — conversion *** + regen #18421 (fix borné : conversion *** + regen).
    2. 263 notebooks hors NOTEBOOK_SUBTREES, jamais inclus — dont QuantConnect 221, Complexity 10, NLP 4, GenAI/00-Environment 6, GenAI/Security 6, SymbolicAI/Geometry 4. → Site Pages : 263 notebooks hors NOTEBOOK_SUBTREES jamais rendus (QuantConnect 221, Complexity, NLP, Geometry...) #18423 (décisions de périmètre).
    3. 197 docs/*.md servis en markdown brut, liés depuis des pages rendues (docs/index.qmd : 18 liens ; docs/ict/README.md : 27 liens ; mesuré : regles-vigilance-detail.md brut, .html = 404). Observation user du 2026-09-29 confirmée firsthand. → Site Pages : docs/*.md servis en markdown brut depuis les pages rendues (197 fichiers) #18422.

    Cas témoin positif : Search/App-1-NQueens.html rendu de bout en bout (code + sorties réelles « Solution 8-Reines » + tables).

    L'EPIC reste ouverte (constat 2 actif) — les trois issues filles portent le travail restant.

  14. added 5 commits that reference this issue on Sep 29, 2026
  15. added a commit that references this issue on Sep 30, 2026
  16. added 2 commits that reference this issue on Sep 30, 2026
  17. added 3 commits that reference this issue on Oct 1, 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-issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions