fix(qc,#17066): redressement QC-Py-15 — 8 lectures titrées, 7 fusions de doubles lectures, énoncé Exercice 3 restauré - #17081
Conversation
… generique->mesuree, enonce Exercice 3 restaure - 8 retitrages '### Interpretation : <sujet>' (pattern #17069) dont le QCAlgorithm final repositionne contre son code (87 -> 90 avant les blocs QC Cloud) - 7 doubles lectures fusionnees : la cellule generique '### Interpretation' est absorbee par la lecture mesuree qui lit la meme sortie (31, 34, 50, 53, 65, 73, 85) avec preservation documentee de leur contenu unique (glossaires, legendes, tranches WFER/CV, etapes du pipeline, contraste Sharpe/Calmar recale) - cellule 67 : sauts de ligne perdus de l'enonce Exercice 3 restaures (preuve : egalite whitespace-insensitive, zero caractere modifie) - lecture des helpers repositionnee contre son import (8 apres 6) - organ check_duplicate_sections : 15 titres -> 0 finding ; markdown-only : 32 cellules code byte-identiques, outputs/exec_count inchanges, 92 -> 85 cellules See #17066 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
MD hierarchy drift -- 7e6a568Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
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) |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
[ADJOINT PREFLIGHT] |
… cellule 62 Reproduit localement au head 7e6a568 : detect_markdown_rendering --check rc=1, 2 violations ERROR nouvelles dans la cellule de l'enonce Exercice 3 restaure : [yaml_block_open_no_close] (le separateur initial "---" ouvre un frontmatter jamais ferme, rendu en bloc setext geant) et [heading_in_list] x2 ("- # Indice :" en ATX heading dans un item de liste). Reparation par les fixers outilles prescrits par l organe (fix_hr_separator + fix_hint_headings, notebook entier) : "---" -> "***", "# Indice" passe en code-span. Prose et enonce integralement preserves, markdown-only, aucune re-execution. Gate rc=1 -> rc=0. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
[REPAIR][lane myia-po-2025:CoursIA] Gate Rouge reproduit localement au head précédent (
Réparateurs = ceux que l'organe prescrit lui-même, appliqués au notebook entier (le gating par baseline fait resurgir toute cellule en violation dont le hash a changé). Diff total : 3 lignes dans 1 cellule markdown (+3/−3) — énoncé, ancre savante, règles et indices inchangés au mot près ; aucune cellule code touchée, aucune ré-exécution (markdown-only). Vérification : gate |
|
[ADJOINT PREFLIGHT] |
Grain: DEEP/notebook-python -- lane myia-po-2025:CoursIA -- prev: DEEP/notebook-python #17080
Redressement critique #17066 — QC-Py-15-Parameter-Optimization : consolidation des sections dupliquées (15 titres « Interprétation » identiques → 8 titres uniques, 0 finding), 7 fusions de doubles lectures, énoncé d'exercice corrompu restauré, 2 repositionnements. See #17066 (tranche 5 de la famille QuantConnect/Python, 1 notebook par PR, référence #17069).
Mesure organ (avant → après)
check_duplicate_sections.py: 1 findingdup_reading« interpretation » ×15 = 14 sections en excès → 0 finding (carriers: 0). Reste 1 advisorymulti_closing(préexistant sur main, hiérarchie légitime de conclusion).L'organe à zéro est nécessaire, jamais suffisant : la lecture critique de bout en bout (92 cellules) a de plus attrapé une corruption que l'organ ne voit pas (énoncé Exercice 3, §C).
Diagnostic de la dégénérescence
Motif distinct des tranches 1-4 : les campagnes de densité ont déjà doté ce notebook de lectures mesurées à titres uniques (« ### Le classement du top 10 se lit dans ses répétitions… », « ### Le résultat central du notebook : 16 folds, 16 fois zéro »…) — mais les anciennes cellules génériques « ### Interprétation » sont restées en place, produisant sept paires de doubles lectures où une cellule mesurée et une cellule générique lisent LA MÊME sortie :
Deuxième défaut : un énoncé d'exercice corrompu (cellule 67) — les sauts de ligne ont été perdus (« ---### Exercice 3 : Penalisation de la complexiteLa validation croisee brute…Règles :- Utilisez… »), rendant l'énoncé d'Exercice 3 illisible au rendu. Troisième défaut : deux lectures coupées de leur code (lecture des helpers après le préambule « contrat » ; lecture du QCAlgorithm final séparée de son code par les deux blocs QC Cloud).
PLAN du notebook après réparation
Séquence canonique : code → sa lecture (mesurée, titre unique) collée ; jamais deux cellules lisant la même sortie. Bloc final : code QCAlgorithm (87) → sa lecture (90) → bloc résultats QC Cloud (89) → lecture croisée des deux blocs (88). 92 → 85 cellules (7 fusions).
DÉTAIL de chaque consolidation
A. Retitrage des 8 lectures sans concurrente (aucune suppression). « ### Interprétation : les helpers partagés du dossier shared/ », « … le grid search exhaustif — 672 combinaisons, filtre fast < slow », « … les fitness functions QuantConnect — Sharpe, Sortino, Calmar, CAR, MaxDD », « … la distribution des Sharpe et le nuage Sharpe/drawdown », « … la boucle walk-forward — optimiser IS, tester OOS, avancer », « … les données simulées pour 16 folds glissants », « … les distributions Monte Carlo — percentiles 5/95 comme bornes », « … le QCAlgorithm final — paramètres optimisés et fallback GetParameter ». Pattern #17069 : token « Interprétation » préservé (plan-loss exit 0, 15/15 SUBSTANCE_FOUND).
B. Les 7 fusions — contenu unique préservé, mot pour mot, dans la cellule mesurée. (1) 32 → 31 : glossaire des colonnes du classement (sharpe/total_return/max_drawdown/n_trades/win_rate) + rappel OOS. (2) 35 → 34 : légende de la heatmap (lignes slow, colonnes fast, patterns attendus) + « zones de robustesse », relié au vocabulaire plateau/pic de la lecture 65. (3) 51 → 50 : tranches de lecture du WFER (≈100 % / <50 % / >100 %) et légende de la corrélation IS-OOS — cette légende est celle que la lecture 53 cite explicitement, sa survie dans 50 maintient la continuité. (4) 54 → 53 : légende des quatre panneaux de la figure. (5) 66 → 65 : tranches du coefficient de variation (<20 % / 20-50 % / >50 %). (6) 74 → 73 : contraste conceptuel Sharpe/Calmar par aversion au risque — recalé car l'« observation typique » de 74 (les top paramètres diffèrent) est contredite par la sortie mesurée que documente 73 (classement Calmar dégénéré en constante
-inf) ; la guidance est préservée comme conditionnelle (« quand les deux fitness passent leurs filtres »). (7) 86 → 85 : les étapes du pipeline (grid 70 %, OOS 30 %, WF, Monte Carlo 50 sims) et les trois ingrédients du score composite — 85 en cite le verdict mais n'énumérait ni les étapes ni la composition. Dédoublonné dans chaque cas : la re-description générique de la sortie que la cellule mesurée lit déjà avec ses valeurs (0.8741/2.78/-inf/66.62 % etc. ne sont jamais re-listés).C. Restauration de l'énoncé Exercice 3 (cellule 67). Les sauts de ligne avaient été perdus (« ---### Exercice 3 : Penalisation de la complexiteLa validation croisee brute… », « …terme de complexite.Règles :- Utilisez… »). Restauration : structure d'énoncé standard (titre, contexte, ancre savante Akaike, Objectif/Règles/Indices en listes). Preuve de fidélité : égalité whitespace-insensitive entre ancien et nouveau source — zéro caractère ajouté ou supprimé, seuls les retours à la ligne sont restaurés. Défaut invisible à l'organ, attrapé à la lecture critique.
D. Repositionnements (2). Lecture des helpers (8) → immédiatement après l'import des helpers (6), avant le préambule « contrat » ; lecture du QCAlgorithm final (90) → immédiatement après son code (87), le bloc final devenant : code → sa lecture → bloc résultats QC Cloud (89) → lecture croisée des deux blocs QC Cloud (88, qui cite les deux et se place donc après le second).
VERDICT DE SÉQUENCE (honnête)
Chaque sortie est lue une fois, par une cellule titrée qui la suit immédiatement ; les blocs Exercice restent adjacents et intacts. Résiduel assumé : (1) les Exercices 1 et 2 n'ont pas d'énoncé markdown — leurs consignes vivent dans les commentaires des cellules code (39, 56) ; les écrire serait de la re-densification, interdite dans cette campagne, consigné ici pour une éventuelle tranche séparée ; (2) le premier bloc « Résultats Backtest QC Cloud » (19, OptimizableStrategy) n'a pas de lecture dédiée — lisible via la lecture croisée 88 qui couvre les deux blocs ; (3) l'advisory multi_closing de la conclusion est laissé (préexistant) ; (4) la fusion (6) conserve la guidance Sharpe/Calmar sous forme conditionnelle — c'est un recalage documenté, pas une suppression.
Preuves
outputssha identique (0 octet modifié) ; multisetexecution_countidentique — markdown-only, exception C.2.carriers: 0.lost_section=0(15/15 SUBSTANCE_FOUND) — pattern fix(semanticweb,#17066): redressement critique de SW-4-CSharp-SPARQL -- reference de campagne #17069, aucun marqueur nécessaire.🤖 Generated with Claude Code