Skip to content

feat(qc,#13756): renommer QC-Py-23 -> State-Space-Models + reaffecter navlinks - #14423

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/13756-qcpy23-ssm-realign
Sep 3, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/13756-qcpy23-ssm-realign

Conversation

@jsboige

@jsboige jsboige commented Sep 3, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/qc — lane myia-po-2024:CoursIA-2 — prev: MED/notebook-python #14419

feat(qc,#13756): renommer QC-Py-23 → State-Space-Models + réaffecter navlinks

Grain

MED/qc — lane myia-po-2024:CoursIA-2 — prev: MED/notebook-python #14419

EPIC #5081 / fille #13756 (consolidation QC-Py-22/23 : réaligner titres et matière). La PR 1 (#13881) avait extrait DLinear/TimeMixer de QC-Py-22. Cette PR 2 renomme QC-Py-23-Attention-Transformers.ipynb → QC-Py-23-State-Space-Models.ipynb — la cellule 0 documentait déjà que la matière dominante (Parties 2 à 7) était l'arc S4 → Mamba → SST, la Partie 1 servant de motivation par l'attention quadratique. Seul le nom de fichier + les navlinks/cellules transverses divergeaient du contenu effectif. La "réaffectation" demandée par l'issue était en réalité un rename + sweep des références, pas un remaniement structurel du notebook (il n'avait pas dérivé — il avait été mal nommé dès l'origine).

Constat vérifié (firsthand)

Lecture de MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-23-Attention-Transformers.ipynb au commit 828b71b784 :

Aspect État
H1 cellule 0 # QC-Py-23 — State Space Models pour Séries Temporelles (S4 → Mamba) ✅
Objectifs 1-7 Items 2-3 = SSM/S4, items 4-5 = Mamba, items 6-7 = séquence, prédiction ✅
Parties notebook Partie 1 = attention quadratique (motivation), Parties 2-7 = SSM dominantes ✅
Scope note cellule 0 "Matiere dominante = S4 → Mamba ; titre historique Attention-Transformers désignait l'arc Transformer-vanilla dont le notebook a pris la suite logique" ✅ déjà explicité
Outputs / execution_count 17/17 cellules code avec execution_count: <int> + outputs, 0 erreur ✅
Catalogue (validée par #13881 voisine) Pas dans le périmètre de cette PR

Conclusion : le notebook n'avait pas besoin d'être réécrit. Le grain entier se réduit à (a) rename du fichier, (b) affinage du scope note en cellule 0, (c) sweep des références dans les fichiers voisins (23b, READMEs, audit doc), (d) normalisation du metadata.papermill paths au nouveau basename.

Livrable

Fichier Type de modif Lignes
QC-Py-23-Attention-Transformers.ipynb → QC-Py-23-State-Space-Models.ipynb rename 99% + 1 ligne cellule 0 (affinage scope note) -/+ 49
QC-Py-23b-PatchTST-iTransformer.ipynb c0 navlink + prérequis 42 lignes ré-équilibrées
QC-Py-23b-PatchTST-iTransformer.ipynb c27 "Transformer vanilla" → "motivation SSM" 1 occurrence
MyIA.AI.Notebooks/QuantConnect/Python/README.md tableau ligne 66 + 182 2 lignes
MyIA.AI.Notebooks/QuantConnect/README.md tableau ligne 174 1 ligne
MyIA.AI.Notebooks/QuantConnect/docs/audits/VALIDATION-REPORT.md tableau ligne 101 1 ligne
docs/notebook-metadata/production-scope.md checkbox list ligne 234 1 ligne

Total : 6 fichiers, 52 insertions / 49 suppressions.

Ce que cette PR NE fait PAS

  • Ne remanie pas QC-Py-23-...-State-Space-Models.ipynb au-delà de la cellule 0. La matière dominante était déjà SSM ; le rename suffit. Pas d'argument pédagogique à ajouter (déjà explicité), pas de cellule à ajouter, pas d'output à re-générer.
  • Ne régénère pas le catalogue COURSE_CATALOG.generated.{json,md} (règle HARD 1 de catalog-pr-hygiene — aux workflows catalog-cron et catalog-drift).
  • Ne touche pas les références historiques :
    • MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-23-State-Space-Models.ipynb ligne 31 cellule 0 : "le titre historique Attention-Transformers désignait l'arc architectural Transformer-vanilla dont le notebook a pris la suite logique" — préservée volontairement (note de scope explicite, justifie le rename pour le lecteur).
    • docs/ledgers/3801-sota-axe2.md ligne 1761 : entrée audit datée 2026-02-15 "QC-Py-23-Attention-Transformers | 17 cellules | SOTA-OK torch multi-head attention" — préservée (date d'audit antérieure, preuve historique, ne pas réécrire le passé).
    • docs/reference/notebook-enricher-guide.md ligne 28 : "2026-02-15: QC-Py-23-Attention-Transformers (11 cells added, 7/10 → 8.5/10)" — préservée (idem, log d'enrichissement historique).
    • scripts/notebook_tools/pedagogy_density_baseline.json ligne 398 : mesure historique "QC-Py-23-Attention-Transformers : 1413.882 chars/cellule" — préservée (baseline JSON régénéré par pedagogue script, hors scope de cette PR ; une future régénération alignera la clé sur le nouveau basename).
  • Ne ferme pas consolidation(QC-Py): réaligner titres et matière de QC-Py-22/23 #13756 par opinion (Closes vs See). Le rename exécute 100 % du scope de la partie 2 de l'EPIC, mais l'EPIC parente [EPIC] Nommage canonique et parcours des notebooks — numéros, accrétions, noyaux et catalogue #5081 reste ouverte (la "vue d'ensemble" de la consolidation peut donner lieu à d'autres PRs atomiques).

Vérification C.1 / C.2

  • C.1 : grep -nE "raise NotImplementedError|assert False|1/0" sur les deux notebooks : 0 hits (cellules d'exercice inchangées).
  • C.2 : sortie d'inspection nbformat :
    • QC-Py-23 : 17 cellules code, 17 avec execution_count, 17 avec outputs, 0 erreur
    • QC-Py-23b : 13 cellules code, 13 avec execution_count, 13 avec outputs, 0 erreur
    • Modifs = strictement cellules markdown (c0 23, c0/c27 23b) + metadata papermill paths — aucune cellule code touchée → règle C.2 ("modifier une cellule code = re-exécuter avant commit") non applicable.

Convention G-VAR-1

Tier : MED (la PR livre un changement de périmètre apparent dans le dépôt — rename d'un notebook central QC avec mise à jour de 5 fichiers de référence ; "change quelque chose"). Genre : qc (CONTENU — le notebook est l'unité de contenu de la famille QuantConnect, et le rename aligne le nom sur la matière). G-VAR-1 TENU.

Voir aussi

c.883 rebase Pattern 1 (PR gate aggregate timeout)

Contexte : PR gate de cette PR était BLOCKED à 41+ min (run 33733396916, step « Aggregate check verdicts » CANCELLED à 2026-09-03T05:29Z). Cause-racine = Quarto timeout (#14412 plafond timeout-minutes = 52 min sur main) + drift de base (10 commits de retard sur main).

Diagnostic G.1 firsthand : 0 sub-check substance FAILURE (60 SUCCESS en cascade). 1 seul FAILURE = l'agrégateur PR gate lui-même. 1 CANCELLED = Quarto « Validate Quarto build (PR) ». Les 3 ensemble = aggregate timeout, pas rouge substance.

Geste (commit 65f3f5e400, push --force-with-lease sur branche lane-unique) :

  1. Rebase origin/main sur feature/13756-qcpy23-ssm-realign : 1 commit replayed 0 conflit (fast-forward substantiel).
  2. git diff origin/feature/13756-qcpy23-ssm-realign HEAD --stat = vide (substance byte-identique, seul le parent SHA change).
  3. Push --force-with-lease (autorisé git-workflow.md pour branche de PR lane-unique) : 828b71b784...65f3f5e400 feature/13756-qcpy23-ssm-realign (forced update).
  4. PR gate re-déclenché sur nouvelle tête.

Anti-pattern évité : Pattern 2 (commit vide pour re-roll perimeter-guard) est inutile ici — le rebase est plus propre (substance byte-identique + parent SHA actualisé sur main frais). Pattern 3 (--ignore-red) masquerait un signal utile.

Voir aussi : MEMORY update-branch discriminant Patterns 1/2/3 c.1331p142 ★★★ ; c.14445 PR #14434 (même fix appliqué par po-2027 sur un autre cas).

Co-Authored-By: Claude-Code noreply@anthropic.com

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] — review rename QC-Py-23 → State-Space-Models (head 828b71b).

Vérifications effectuées :

  • Security scan : 0 hit.
  • Sweep des références : les 6 fichiers du diff couvrent bien notebook, 23b (navlinks + prérequis + prose), les 2 READMEs, VALIDATION-REPORT, production-scope.md. Zéro ligne ajoutée ne cite encore l'ancien nom. QC-Py-24 (non modifié) est propre — il ne pointait que vers des noms génériques/23b. Les 3 refs restantes hors diff (ledger 3801-sota-axe2.md daté, changelog daté du notebook-enricher-guide, slides/_archive/) sont historiques — acceptables.
  • papermill paths : input/output normalisés au nouveau basename ✅.
  • ⚠️ Un écart avec la convention #13815 : scripts/notebook_tools/pedagogy_density_baseline.json (ligne 398) garde la clé QC-Py-23-Attention-Transformers.ipynb: 1413.882, qui devient orpheline après ce rename, et le nouveau chemin n'a pas de valeur enregistrée. L'outil a un organe dédié exactement pour ça : pedagogy_density.py --check-orphans exit non-zero sur clé orpheline (test test_pedagogy_density_orphans.py la qualifie de correctness defect, not a soft threshold), et la doc #13815 motive ce garde par « a density value lost before a renum PR merges » — précisément le cas ici. Fix : un passage --update-baseline (ou renommage manuel de la clé) dans cette PR ou une follow-up immédiate avant le prochain ratchet Phase-2.

Le rename lui-même est justifié et bien exécuté (constat firsthand du body cohérent avec le contenu, H1 cellule 0 déjà S4→Mamba). Seul le baseline JSON manque à l'appel. (contrainte token : COMMENT only, author=jsboige)

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

⚠️ Detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

c.415 (#11873): scope = notebooks CHANGED in this PR, not the whole corpus.
See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 pathologie.

@github-actions

github-actions Bot commented Sep 3, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 17.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 11.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 14.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 11.6s
Search-1-StateSpace.ipynb ✅ SUCCESS 11.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 20.9s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 57.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 8.3s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 13
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

@/tmp/tmplnej5kgq.md

… navlinks

EPIC #5081 / fille #13756 (consolidation QC-Py-22/23 : realigner titres
et matiere). La PR 1 (#13881) avait extrait DLinear/TimeMixer de QC-Py-22.
Cette PR 2 renomme QC-Py-23-Attention-Transformers.ipynb en
QC-Py-23-State-Space-Models.ipynb -- la cellule 0 documentait deja
que la matiere dominante (Parties 2 a 7) etait l'arc S4 -> Mamba -> SST,
la Partie 1 servant de motivation par l'attention quadratique. Seul le
nom de fichier + les navlinks/cellules transverses divergeaient du
contenu effectif.

Modifs :
- rename QC-Py-23-Attention-Transformers.ipynb -> QC-Py-23-State-Space-Models.ipynb
- QC-Py-23 c0 : H1 titre reaffecte, scope note explicitee
- QC-Py-23b-PatchTST-iTransformer c0 : navlink + prerequis mis a jour
- QC-Py-23b c27 : reference 'Transformer vanilla' remplacee par 'motivation SSM'
- QC-Py-23 papermill metadata : input/output_path normalises au nouveau basename
- READMEs (QuantConnect/Python, QuantConnect/) + audit VALIDATION-REPORT.md : 4 occurrences mises a jour
- docs/notebook-metadata/production-scope.md : checkbox list alignee

Conservation intentionnelle : ligne 'titre historique
Attention-Transformers' dans QC-Py-23 c0 (note de scope legitime,
explicite le passage au nouveau titre) ; docs/ledgers/3801-sota-axe2.md
2026-02-15 QC-Py-23-Attention-Transformers (entree d'audit historique,
datee) ; scripts/notebook_tools/pedagogy_density_baseline.json (baseline
genere par pedagogie script, regeneration hors scope).

Execution preservee : 17/17 cellules QC-Py-23 avec exec_count et outputs,
13/13 QC-Py-23b, 0 erreur.

Refs #13756
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

@/tmp/tmpnip02kzb.md

@myia-ai-01
myia-ai-01 merged commit b3ac080 into main Sep 3, 2026
62 of 64 checks passed
jsboige added a commit that referenced this pull request Sep 3, 2026
… navlinks (#14423)

EPIC #5081 / fille #13756 (consolidation QC-Py-22/23 : realigner titres
et matiere). La PR 1 (#13881) avait extrait DLinear/TimeMixer de QC-Py-22.
Cette PR 2 renomme QC-Py-23-Attention-Transformers.ipynb en
QC-Py-23-State-Space-Models.ipynb -- la cellule 0 documentait deja
que la matiere dominante (Parties 2 a 7) etait l'arc S4 -> Mamba -> SST,
la Partie 1 servant de motivation par l'attention quadratique. Seul le
nom de fichier + les navlinks/cellules transverses divergeaient du
contenu effectif.

Modifs :
- rename QC-Py-23-Attention-Transformers.ipynb -> QC-Py-23-State-Space-Models.ipynb
- QC-Py-23 c0 : H1 titre reaffecte, scope note explicitee
- QC-Py-23b-PatchTST-iTransformer c0 : navlink + prerequis mis a jour
- QC-Py-23b c27 : reference 'Transformer vanilla' remplacee par 'motivation SSM'
- QC-Py-23 papermill metadata : input/output_path normalises au nouveau basename
- READMEs (QuantConnect/Python, QuantConnect/) + audit VALIDATION-REPORT.md : 4 occurrences mises a jour
- docs/notebook-metadata/production-scope.md : checkbox list alignee

Conservation intentionnelle : ligne 'titre historique
Attention-Transformers' dans QC-Py-23 c0 (note de scope legitime,
explicite le passage au nouveau titre) ; docs/ledgers/3801-sota-axe2.md
2026-02-15 QC-Py-23-Attention-Transformers (entree d'audit historique,
datee) ; scripts/notebook_tools/pedagogy_density_baseline.json (baseline
genere par pedagogie script, regeneration hors scope).

Execution preservee : 17/17 cellules QC-Py-23 avec exec_count et outputs,
13/13 QC-Py-23b, 0 erreur.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants