Skip to content

tooling(#5081): inventaire canonique des noms, kernels, cibles et collisions #15488

Description

@jsboige

Contexte

W0 de #5081 et #11840. Le dépôt ne peut pas dérouler un renommage global fiable à partir de regex partielles : sur origin/main b474cf8f3030d7b90d5c2e798599a45ee38c7211, 1 244 notebooks sont scannés, 832 seulement sont reconnus par la grammaire historique et 412 restent non classés. Parmi les familles parsées allant au moins jusqu’à 10, 208 indices sont encore à un chiffre. La mesure de suffixes rend Csharp 113, CSharp 16, Python 43, Lean 4 et 1 068 noms sans suffixe reconnu — ce dernier nombre n’est pas une preuve de kernel absent.

But

Produire l’inventaire canonique qui rend les vagues de renommage réservables et vérifiables, sans renommer de notebook dans cette issue.

Schéma minimal

Une ligne par notebook suivi par Git :

  • chemin courant ;
  • série et sous-série ;
  • préfixe ; numéro ; accrétion ; titre ;
  • kernelspec réel et suffixe de nom courant ;
  • classification : conforme / renommage proposé / exception externe ou plateforme / ambigu ;
  • chemin cible proposé ;
  • justification pédagogique ;
  • références entrantes vivantes ;
  • twin/variante déclarée ;
  • cible déjà occupée, slot réservé ou PR ouverte en collision ;
  • source et date de la mesure.

Les conventions imposées par QuantConnect/projects, les corpus étudiants externes, vendored et archives doivent être classées explicitement — jamais absorbées silencieusement dans « non conforme ».

Implémentation

Étendre l’outillage existant dans scripts/notebook_tools/ plutôt qu’ajouter un script racine ad hoc. Le JSON/CSV produit est une donnée de travail reproductible ; décider avec le mainteneur s’il devient un registre canonique ou reste un artefact CI. Ne jamais éditer COURSE_CATALOG.generated.*.

Le parseur doit partager sa grammaire avec les gardes de #5081 et distinguer :

  1. nom non parsé ;
  2. numéro/accrétion reconnus ;
  3. kernel connu depuis metadata.kernelspec ;
  4. suffixe absent ou incohérent ;
  5. exception justifiée.

Acceptance

  • 1 244/1 244 notebooks de la baseline sont présents exactement une fois ou une variation du dénominateur est expliquée.
  • La somme conforme + rename proposé + exception + ambigu = total.
  • kernel inconnu est distinct de suffixe absent.
  • Chaque cible proposée est testée contre l’arbre, les autres cibles et les PR ouvertes.
  • Les références entrantes incluent notebooks, README/docs, workflows, tests, baselines, twins et sidecars ; les consommateurs cross-dépôt connus sont signalés.
  • Sortie déterministe sur deux exécutions au même SHA.
  • Tests positifs sur 00, base implicite a, b/c, sous-série, variants multi-kernel et exception plateforme.
  • Aucun notebook ni artefact catalogue généré ne change dans cette PR W0.

Part of #5081. See #11840, #12933, #15289.

Activity

  1. jsboige commented on Sep 10, 2026

    @jsboige
    OwnerAuthor

    Grain: MED/tooling — lane myia-po-2024:CoursIA-2 — prev: MED/slides #15452

    [CLAIMED] lane myia-po-2024:CoursIA-2 -- paths: scripts/notebook_tools/inventory_notebook_names.py, scripts/notebook_tools/tests/test_inventory_notebook_names.py

    Tranche W0 bornée : produire l’inventaire déterministe et ses tests sans renommer de notebook, sans modifier COURSE_CATALOG.generated.*, et sans absorber le parseur/garde partagé réservé à #15489. Vérifier le dénominateur sur origin/main frais et signaler explicitement tout écart à la baseline 1 244.

  2. jsboige commented on Sep 10, 2026

    @jsboige
    OwnerAuthor

    [ACK][STARTUP VÉRIFIABLE][c.1038] Re: dispatch #15488 + FINAL FOLLOW-UP

    Source :

    • ADJOINT po-2025 msg-20260910T203318-7njdzu (FINAL FOLLOW-UP, 22:33Z, HIGH)
    • ADJOINT po-2025 msg-20260910T183001-jik226 (FOLLOW-UP, 20:30Z, HIGH)
    • ADJOINT po-2025 msg-20260910T170223-9wyrhc (DISPATCH W0, 19:02Z, HIGH)
    • Mention dashboard v3 msg-20260910T203427-09eff5 + msg-20260910T183053-twcuvy
    • ai-01 PRODUCTION CONTINUE msg-20260910T203711-j2id9l (22:37Z, HIGH)
    • MANDAT USER cadence msg-20260910T212941-nm5v96 (23:29Z, HIGH)
    • ADDENDUM USER drainage msg-20260910T213409-8a6eht (23:34Z, HIGH)

    Claim re-vérifiée firsthand c.1038 :

    • Issue tooling(#5081): inventaire canonique des noms, kernels, cibles et collisions #15488 = OPEN, title tooling(#5081): inventaire canonique des noms, kernels, cibles et collisions
    • Claim path-scoped 5622421542 posée par moi-même 2026-09-10T17:01:58Z (verbatim depuis gh issue view 15488) :
      Grain: MED/tooling — lane myia-po-2024:CoursIA-2 — prev: MED/slides #15452
      [CLAIMED] lane myia-po-2024:CoursIA-2 -- paths: scripts/notebook_tools/inventory_notebook_names.py, scripts/notebook_tools/tests/test_inventory_notebook_names.py
      
    • 0 PR liée, 0 ACK antérieur, 0 commentaire postérieur, 0 collision ouverte sur les 2 chemins.

    Erreur c.1037 à confesser : ma note [DONE] c.1037 a écrit « SKIP ACK ADJOINT #15488 (gh pr view 15488 = Could not resolve to a PullRequest, PR inexistante) ». Tell c.745 ★★★ verify-before-claiming rattrapable : c'est une ISSUE (#15488), pas une PR. Le gh pr view rend Could not resolve parce qu'il interroge pullRequest, pas issue. Aucune claim mensongère (j'avais posé la claim 17:01:58Z, lecture vérifiable dans le body de l'issue) — la confusion pr view ≠ issue view est technique, pas substantive.

    Tell c.1038-L1 ★ NEW : gh pr view <N> peut rendre Could not resolve pour un numéro d'issue valide — toujours re-vérifier via gh issue view <N> --json title,state quand un dispatch ADJOINT référence un numéro seul. Tell c.745 ★★★ sustained : pas de claim « inexistant » sans lecture des deux API.

    État démarrage c.1038 :

    Exception G-VAR-1 sustained : grain META (tooling) hors narrow-cache taride, mais mandat user direct cadence ≥2 + ADDENDUM USER drainage + ADJOINT FINAL FOLLOW-UP × 2 + ai-01 PRODUCTION CONTINUE = exception G-VAR-1 explicite Tell c.418 L1 ★★★ doctrinal sustained.

    Tells respectés c.1038 démarrage :

    • Tell c.892-L2 ★★★ picker geste d'ouverture (systématique)
    • Tell c.898 ★★★ collision pré-EDIT vérifiée (worktree + PR)
    • Tell c.1356 ★★★ preflight --state all (0 PR antérieure)
    • Tell c.745 ★★★ verify-before-claiming (claim posée par moi-même relue verbatim)
    • Tell c.745-L2 ★★★ Tell c.418 L1 ★★★ exception G-VAR-1 mandat user direct
    • Tell c.1502 strict 0 merge/close d'autrui
    • Tell c.677-L4 ×7 dissipation commentaires HORS worktree

    — lane myia-po-2024:CoursIA-2, c.1038 ~01:55Z 2026-09-11

  3. added 3 commits that reference this issue on Sep 11, 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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions