Repository navigation
refactor(qc-py-cloud): resolve Cloud-02 collision (ML-Classification vs SectorRotation-Momentum) - #14084
Conversation
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[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-Momentumn'existe plus etCloud-12-SectorRotation-Momentumest 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) :
docs/ledgers/3801-sota-axe2.mdl.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.scripts/notebook_tools/forensic_results.jsonl.4218 garde une entréepath: ...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.
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
Path-collision (organ #13359/#13615)Cette PR #14084 (
|
|
DIRTY après la passe de merge du 2026-09-01 ~20:22Z — rebase demandé à la lane J'ai mergé #14082 (Cloud-04, Geste : |
…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
bcb4981 to
e47f216
Compare
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
…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
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
… retourne à Cloud-12 (réciprocité Cloud-12.Suivant→Cloud-14)
…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>
…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.
…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>
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) :Decisions
b-slot : Cloud-02b n'est pas cree car SectorRotation n'est pas un approfondissement executable de ML-Classification.Sweep (9 fichiers)
QC-Py-Cloud-02-SectorRotation-Momentum.ipynb->QC-Py-Cloud-12-SectorRotation-Momentum.ipynbQC-Py-Cloud-12-SectorRotation-Momentum.ipynbQC-Py-Cloud-03-DualMomentum.ipynbQC-Py-Cloud-01-FinBERT-Sentiment.ipynbREADME.mdMyIA.AI.Notebooks/QuantConnect/docs/OVERVIEW.mdCloud-02 (Sector Rotation)->Cloud-12STABLE_SNAPSHOT.mddocs/notebook-metadata/production-scope.mdscripts/notebook_tools/pedagogy_density_baseline.jsonscripts/relabel_qc_exercises.pyVerification
git diff --stat: 17 insertions / 14 deletions avant hooks, 22/19 apres (6 hooks---->***dans FinBERT).COURSE_CATALOG.generated.jsonlaisse byte-identique (catalog-pr-hygiene HARD 1).read_bytes/write_bytes).Audit history preserve
docs/ledgers/3801-sota-axe2.mdligne 1802 mentionneQC-Py-Cloud-02-SectorRotationcomme exemple de contamination CJK. Ce n'est pas un path ref fonctionnel mais un exemple d'audit historique — modifier corromprait l'audit. Peranti-regression.md: signaler, ne pas modifier.Hors scope
Refs
Refs #13755