Skip to content

feat(shadow,#18923): gel de la 676, premiere candidate QC ; plan-qc lit le chemin depuis la racine - #19250

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/18923-freeze-676
Oct 5, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/18923-freeze-676

Conversation

@jsboige

@jsboige jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/tooling — lane myia-po-2024:CoursIA-3 — prev: DEEP/qc #19247

Résumé

Première inscription au registre du suivi en ombre (#18923), et correction de plan-qc, qui ne trouvait aucun fichier lorsqu'on suivait les commandes du README.

Gel de la 676. shadow/registry.json est créé avec une entrée :

Champ Valeur
id mhm676 (projet MultiHorizonMomentum676, évalué par #19174, verdict NO BEATS)
sha bb7d7b61c5…, le merge de #19182
frozen_on 2026-10-05, date du verdict (commentaire de #19174)
entrypoint dossier du projet, et un projet QC créé pour les seuls passages en ombre
params aucun : la configuration préinscrite, valeurs par défaut du code
fee_model modèle de frais par défaut de Lean pour ce courtier

C'est le point 6 du protocole de #19174 : geler le code à la date du verdict et l'inscrire au registre. Le premier passage tombe à la première séance de novembre.

Correction de plan_qc. La fonction listait les fichiers du projet avec git ls-tree, dont le chemin se lit par rapport au dossier courant. Le README lance les commandes depuis ML-Training-Pipeline/, avec --repo à sa valeur par défaut .. Le chemin du point d'entrée, relatif à la racine du dépôt comme le README le documente, ne correspondait alors à rien, et plan-qc levait no .py file under …. L'option --full-tree lit le chemin depuis la racine, quel que soit le dossier de lancement. Le rejeu local n'avait pas ce défaut : il construit ses chemins depuis la racine d'un worktree détaché.

Validation

  • pytest scripts/tests/test_shadow_replay.py : 33 passed. Le nouveau test appelle plan_qc avec un sous-dossier comme --repo. Contrôle négatif : il échoue sur l'ancien code (no .py file).
  • validate : OK 1 candidates, 0 passes.
  • plan-qc --pass-date 2026-11-02, lancé depuis ML-Training-Pipeline/ sans --repo, comme dans le README : plan écrit, paramètres start=2026-10-05, end=2026-11-02. Le main.py extrait a l'empreinte SHA-256 a5f8a4248526…, celle du fichier exécuté sur QC pour le verdict de [QC][Explorer] Évaluer « Multi-Horizon ETF Momentum Rotation » (676) sous frais du courtier #19174.
  • Aucun backtest lancé : le plan est un dry-run, écrit hors dépôt.

Part of #18923. Les candidates inverse-volatilité (#19145) s'ajouteront au registre après leur merge, avec la même commande.

🤖 Generated with Claude Code

…solves paths from the repo root

- shadow/registry.json: first entry, mhm676 (MultiHorizonMomentum676, #19174),
  frozen at bb7d7b6 (the #19182 merge) on 2026-10-05, verdict date, as
  required by point 6 of the #19174 protocol. Dedicated QC project for passes.
- plan_qc listed the project files with `git ls-tree` relative to the current
  directory: from ML-Training-Pipeline/ with the default --repo ".", as the
  README commands do, it found no .py file. `--full-tree` makes the
  entrypoint path root-relative, as documented. New test runs plan_qc from a
  subdirectory; it fails on the previous code (negative control).

Part of #18923

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19250 (feat(shadow,#18923): gel de la 676, premiere candidate QC ; plan-qc lit le chemin depuis la racine) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19250
head: 9fe1c90
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 89054b371fd82a1d07e8fb30fc9317ffba25ad17b0774f60a45f39ba41916671
diff-files: 3
diff-additions: 25
diff-deletions: 2
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19250
organ-rc: 0
[/ADJOINT PREFLIGHT]

note: LIGHT/tooling #18923 etape 1 -- premiere candidate QC gelee dans shadow/registry.json, lane porteuse myia-po-2024:CoursIA-3. Fichiers: shadow_replay.py + test_shadow_replay.py + shadow/registry.json, 3 fichiers, 27 lignes, aucun interdit. PR gate SUCCESS (rerun post-DWELL 09:45:49Z), B.0 rc=0 OK. LIGHT -> merge_ready eligible, merge rapide.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants