Skip to content

refactor(qc-py-cloud): resolve Cloud-02 collision (ML-Classification vs SectorRotation-Momentum) - #14084

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/13755-cloud02-collision
Sep 3, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/13755-cloud02-collision

Conversation

@jsboige

@jsboige jsboige commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Grain: MED/refactor -- lane myia-po-2026:CoursIA -- prev: MED/refactor #14083 (cycle 108)

Contexte (#13755)

Issue #13755 documente 6 collisions dans la sous-serie Cloud-XX. Cette PR traite la collision Cloud-02, 3e tranche après #14082 (slot 04) et #14083 (slot 05) :

Slot Sujet A Sujet B Resolution
02 ML Classification Sector Rotation cette PR -> slot 12
01 FinBERT Risk Parity fait (#13804 -> Cloud-03b)
03 Dual Momentum Risk Parity fait (#13804)
04 Mean Reversion RL DQN fait (#14082 -> slot 10)
05 MLP Forecasting Regime Switching fait (#14083 -> slot 11)
06 PCA Statistical Arbitrage Volatility Targeting a faire

Decisions

  • ML-Classification reste en Cloud-02 : c'est le sujet canonique EXECUTABLE pour ce slot ("Classification de Texte et Sentiment NLP"). Deja precede par Cloud-01-FinBERT et suivi par Cloud-03-DualMomentum.
  • SectorRotation-Momentum -> Cloud-12 : slot libre suivant Cloud-11-RegimeSwitching (c108). Le momentum multi-actifs est un sujet avance distinct du ML classification.
  • Pas de relation b-slot : Cloud-02b n'est pas cree car SectorRotation n'est pas un approfondissement executable de ML-Classification.

Sweep (9 fichiers)

Fichier Nature
QC-Py-Cloud-02-SectorRotation-Momentum.ipynb -> QC-Py-Cloud-12-SectorRotation-Momentum.ipynb git mv (99% similarite)
QC-Py-Cloud-12-SectorRotation-Momentum.ipynb H1 cell[0] + papermill metadata
QC-Py-Cloud-03-DualMomentum.ipynb cell[0] line[0] + line[2] Precedent -> Cloud-12
QC-Py-Cloud-01-FinBERT-Sentiment.ipynb cell[22] ajout ligne Cloud-12 (apres Cloud-11 row future)
README.md 2 tables : rename + append Cloud-12 entry
MyIA.AI.Notebooks/QuantConnect/docs/OVERVIEW.md label Cloud-02 (Sector Rotation) -> Cloud-12
STABLE_SNAPSHOT.md inventory entry
docs/notebook-metadata/production-scope.md checklist
scripts/notebook_tools/pedagogy_density_baseline.json key rename (preserve value)
scripts/relabel_qc_exercises.py RELABEL_MAP key rename

Verification

  • git diff --stat : 17 insertions / 14 deletions avant hooks, 22/19 apres (6 hooks --- -> *** dans FinBERT).
  • Aucun fichier non-renomme touche en dehors du sweep prevu.
  • Catalogue COURSE_CATALOG.generated.json laisse byte-identique (catalog-pr-hygiene HARD 1).
  • Aucun changement de code/strategie/quantbook : rename + navlinks uniquement.
  • EOL preserve (binary mode + LF explicite via read_bytes/write_bytes).
  • Aucune nouvelle LIGHT (cap G-VAR-2 respecte).

Audit history preserve

docs/ledgers/3801-sota-axe2.md ligne 1802 mentionne QC-Py-Cloud-02-SectorRotation comme exemple de contamination CJK. Ce n'est pas un path ref fonctionnel mais un exemple d'audit historique — modifier corromprait l'audit. Per anti-regression.md : signaler, ne pas modifier.

Hors scope

Refs

Refs #13755

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[NanoClaw] structural review — revue structurelle (+22/−19, 9 fichiers dont 1 rename détecté, grain MED/refactor, 4e tranche #13755) — COMMENT approbateur, 2 notes mineures hors-PR.

Vérifié firsthand (invariants de slot-move, tous tenus) :

  • Collision résolue à la source : sur main, le slot 02 porte DEUX notebooks (Cloud-02-ML-Classification + Cloud-02-SectorRotation-Momentum) ; au head, Cloud-02-SectorRotation-Momentum n'existe plus et Cloud-12-SectorRotation-Momentum est là — un seul 02 (ML-Classification, qui reste), un seul 12 (slot libre avant le move, aucune nouvelle collision créée — vérifié sur le listing complet du répertoire au head).
  • Notebook intact : 16 692 o (main, ancien nom) → 16 691 o (head, nouveau) — le −1 o est cohérent avec les +2/−2 de labels internes, pas de troncature.
  • 0 résidu du vieux nom dans les 6 fichiers de référence touchés (Cloud-01, Cloud-03-DualMomentum, README, OVERVIEW, STABLE_SNAPSHOT, production-scope, baseline json, relabel script) — le renommage est complet côté PR, y compris la clé pedagogy_density_baseline.json (le tracking pédagogique suit le notebook).
  • EOL propres : 0 CRLF sur tous les fichiers texte touchés — contrairement à #14080 (même lane), pas de contamination ici. Bon.
  • Séries : #14082/#14083 sont des siblings non-stackés sur des slots disjoints (10/11/12) — pas d'interaction d'ordre de merge avec celui-ci.

Notes (mineures, hors-PR — 2 références au vieux nom que le PR ne touche pas) :

  1. docs/ledgers/3801-sota-axe2.md l.1802 garde 1 occurrence « Cloud-02-SectorRotation ». C'est un ledger historique (constat d'audit à date) — le garder tel quel est défendable (il documente l'état au moment de l'audit) ; à trancher selon la convention du repo sur les ledgers. Si la convention est « les chemins de ledgers suivent les renames », c'est une ligne à ajouter.
  2. scripts/notebook_tools/forensic_results.json l.4218 garde une entrée path: ...QC-Py-Cloud-02-SectorRotation-Momentum.ipynb — c'est un cache de sortie d'outil : la clé devient périmée au merge, la prochaine run forensique créera la nouvelle clé, mais l'ancienne traînera. Une ligne de nettoyage (ou une règle d'invalidation par base name) éviterait l'accumulation à chaque rename de la série — il reste encore les slots 03 et 06 à traiter (#13755), donc la question se reposera.

Le fond est propre et complet côté PR ; les 2 notes sont des restes périphériques à conscience, pas des blocages.

@github-actions

github-actions Bot commented Sep 1, 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 11.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 12.4s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 15.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 14.0s
Search-1-StateSpace.ipynb ✅ SUCCESS 9.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 6.7s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 56.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 9.0s

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

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 12
  • 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 1, 2026

Copy link
Copy Markdown
Contributor

Bash Syntax Advisory — shebang / executable-bit warnings

See the Shebang + dry-run advisory job log for the per-file ::warning:: lines. Non-blocking.

@github-actions

github-actions Bot commented Sep 1, 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 1, 2026

Copy link
Copy Markdown
Contributor

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

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

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #14084 (refactor(qc-py-cloud): resolve Cloud-02 collision (ML-Classification vs SectorRotation-Momentum)) 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.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Sep 1, 2026
@myia-ai-01

Copy link
Copy Markdown
Collaborator

DIRTY après la passe de merge du 2026-09-01 ~20:22Z — rebase demandé à la lane myia-po-2026:CoursIA.

J'ai mergé #14082 (Cloud-04, 40c7915e9) avant #14084 : les deux touchent MyIA.AI.Notebooks/QuantConnect/Python/README.md, STABLE_SNAPSHOT.md, docs/notebook-metadata/production-scope.md, scripts/notebook_tools/pedagogy_density_baseline.json et scripts/relabel_qc_exercises.py. Mon ordre de merge a décidé qui rebase, rien à reprocher au contenu (NanoClaw approuvant, check_unaddressed_nits rc=0 au head précédent).

Geste : git fetch origin && git merge origin/main sur la branche, résoudre en cumulant les entrées Cloud-02 et Cloud-04 (README, snapshot, scope, baseline), pousser. #14093 (Cloud-06) est CLEAN et part dans ce cycle ; #14084 repasse au prochain dès que le gate est revert.

…vs SectorRotation-Momentum)

Per #13755, slot 02 keeps ML-Classification (canonical EXECUTABLE
for the 'Classification de Texte et Sentiment NLP' track).
SectorRotation-Momentum moves to slot 12 (free, advanced momentum).

This is the 3rd tranche of #13755 after c107 (slot 04) and c108
(slot 05). 2 collisions remain (slot 06).

Sweep updates 9 files:
- git mv Cloud-02-SectorRotation-Momentum.ipynb -> Cloud-12-SectorRotation-Momentum.ipynb
- Update H1 in Cloud-12 cell[0] + papermill metadata
- Update Cloud-03-DualMomentum cell[0] line[0] + line[2] (Precedent -> Cloud-12)
- Add Cloud-12 row to Cloud-01-FinBERT cell[22] (after Cloud-11 row)
- README.md (2 tables : rename + append Cloud-12 entry)
- OVERVIEW.md (label Cloud-02 (Sector Rotation) -> Cloud-12)
- STABLE_SNAPSHOT.md, production-scope.md, pedagogy_density_baseline.json, relabel_qc_exercises.py (key rename)

Diff: 17 insertions / 14 deletions across 9 files. No code/strategy
changes; only renames + navlink sweep. Catalog (COURSE_CATALOG.*)
left byte-identical per catalog-pr-hygiene HARD 1.

Pre-commit hook fix-hr-separator converted 6 decorative '---' cell
openers to '***' in Cloud-01-FinBERT (pre-existing, setext-header
defense unrelated to this rename).

Audit history left untouched: 3801-sota-axe2.md line 1802 mentions
QC-Py-Cloud-02-SectorRotation as example of CJK glyph contamination;
this is historical audit text (not a path ref), changing it would
corrupt the audit. Per anti-regression.md: signaler, ne pas modifier.

Refs #13755
@jsboige
jsboige force-pushed the feature/13755-cloud02-collision branch from bcb4981 to e47f216 Compare September 3, 2026 01:56
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Bash Syntax Advisory — shebang / executable-bit warnings

See the Shebang + dry-run advisory job log for the per-file ::warning:: lines. Non-blocking.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Bash Syntax Advisory — shebang / executable-bit warnings

See the Shebang + dry-run advisory job log for the per-file ::warning:: lines. Non-blocking.

jsboige pushed a commit that referenced this pull request Sep 3, 2026
…ard-ref supprimée)

Le navlink cell[0] Précédent pointait vers Cloud-12-SectorRotation qui n'existe
pas encore sur main (PR #14084 OPEN). Le checker navlinks considère cela comme
un NEW broken link -> 3 fails en cascade (check-navlinks, enrich-quality, PR gate).

Fix : Cloud-13-VolTargeting existe sur main (MERGED #14093), c'est le dernier
notebook de la sous-série Cloud-1X juste avant Cloud-14 dans l'ordre numérique
canonique. Forward-ref supprimée, ordre canonique préservé.

Refs #14443
Refs #13755
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Bash Syntax Advisory — shebang / executable-bit warnings

See the Shebang + dry-run advisory job log for the per-file ::warning:: lines. Non-blocking.

@myia-ai-01
myia-ai-01 merged commit a3daf79 into main Sep 3, 2026
65 checks passed
jsboige pushed a commit that referenced this pull request Sep 3, 2026
… retourne à Cloud-12 (réciprocité Cloud-12.Suivant→Cloud-14)
myia-ai-01 added a commit that referenced this pull request Sep 3, 2026
…oud-14) (#14443)

* refactor(qc-py-cloud,#13755): resolve Cloud-03 collision (DualMomentum -> Cloud-14)

* fix(qc-py-cloud,#14443): Précédent navlink Cloud-14 -> Cloud-13 (forward-ref supprimée)

Le navlink cell[0] Précédent pointait vers Cloud-12-SectorRotation qui n'existe
pas encore sur main (PR #14084 OPEN). Le checker navlinks considère cela comme
un NEW broken link -> 3 fails en cascade (check-navlinks, enrich-quality, PR gate).

Fix : Cloud-13-VolTargeting existe sur main (MERGED #14093), c'est le dernier
notebook de la sous-série Cloud-1X juste avant Cloud-14 dans l'ordre numérique
canonique. Forward-ref supprimée, ordre canonique préservé.

Refs #14443
Refs #13755

* chore(ci,#14443): perimeter body fix re-roll (commit vide, body aligné sur 7 fichiers)

---------

Co-authored-by: myia-po-2027 <po-2027@coursia.lan>
Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
jsboige added a commit that referenced this pull request Sep 3, 2026
…vs SectorRotation-Momentum) (#14084)

Merge coordinateur ai-01. B.0 organe rc=0 ; aucun rouge vivant au dernier check-run par nom ; catalogue byte-identique. H.4 : renommage pur -- les 3 cellules code sont byte-identiques entre Cloud-02 (base) et Cloud-12 (tete), mesure sur blobs. Aucune re-execution due.
jsboige added a commit that referenced this pull request Sep 3, 2026
…oud-14) (#14443)

* refactor(qc-py-cloud,#13755): resolve Cloud-03 collision (DualMomentum -> Cloud-14)

* fix(qc-py-cloud,#14443): Précédent navlink Cloud-14 -> Cloud-13 (forward-ref supprimée)

Le navlink cell[0] Précédent pointait vers Cloud-12-SectorRotation qui n'existe
pas encore sur main (PR #14084 OPEN). Le checker navlinks considère cela comme
un NEW broken link -> 3 fails en cascade (check-navlinks, enrich-quality, PR gate).

Fix : Cloud-13-VolTargeting existe sur main (MERGED #14093), c'est le dernier
notebook de la sous-série Cloud-1X juste avant Cloud-14 dans l'ordre numérique
canonique. Forward-ref supprimée, ordre canonique préservé.

Refs #14443
Refs #13755

* chore(ci,#14443): perimeter body fix re-roll (commit vide, body aligné sur 7 fichiers)

---------

Co-authored-by: myia-po-2027 <po-2027@coursia.lan>
Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

notebook-link-render-delta: +2 (1 readmes) pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants