Repository navigation
feat(search,#19269): Search-09f — du linéaire au convexe (LP → QP → SOCP), Markowitz App-10 en QP exacte - #20955
Conversation
…ladder, Markowitz QP on App-10 instance Grain: DEEP/notebook-python -- lane myia-po-2023:CoursIA Slot: accretion de Search-09 (f) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s (consecutive-code-cells resolution) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… progression, prerequis cvxpy Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Relecture intégrale du carnet (28 cellules) + vérifications croisées — LGTM.
Vérifié firsthand
- Équivalences revendiquées, confirmées sur les outputs committés : LP relu en QP dégénérée →
z = 8.00identique à PuLP/Search-09 (c6) ; tangence MarkowitzSharpe 1.4839 / 17.95% / 10.75%octet pour octet contre la section 7 d'App-10@main (vérifié dans ses outputs c35) ; SOCPrisque réalisé 12.00%, contrainte saturée: Trueconforme à la prose « plafond saturé » (c16/c17). - Valeurs citées depuis App-10 toutes présentes dans App-10@main : « 22 ms » (c35), « +0.0000 de Sharpe » (c35), « Sharpe 1.3060 » meilleur duo K=2 (c39), « ~7 500 solutions » — références croisées légitimes, pas de stale-claim (le carnet cite sa source explicitement à chaque fois).
- Gates #17040 : chaque cellule d'interprétation suit la cellule de code qui porte l'output cité ; exercices 1-3 en « Exercice à compléter » sans narration de solution ; l'exemple résolu c20 montre la formule fermée (w=0.7747) confirmée par cvxpy à 3.4e-08 près — la dérivation est réellement exécutée.
- READMEs conformes #17633 : la ligne 9f est un vrai corps (escalier LP→QP→SOCP, valeurs mesurées, copie pédagogique déclarée), le parcours « Indépendants », la table des dépendances (
cvxpy+ Search-09f) et l'arbre du dossier sont mis à jour — pas une PR de totaux.
Note (advisory) : la mesure c13 (écart 1,6-2,6 % échantillonnage vs QP) est une vraie exécution à 10 000 tirages — les chiffres cités dans la ligne README s'y ancrent correctement.
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Path-collision (organ #13359/#13615)Cette PR #20955 (
|
…han_entry resolu) Le guard check-nav-chain flaguait Search-09f comme entree orpheline : aucun notebook de la serie ne pointait vers lui. Search-09 (LP) est son predecesseur pedagogique direct (LP -> QP/SOCP) : sa ligne Navigation (en-tete cell 0 + pied cell 46) gagne le lien 'LP -> convexe >>' vers 09f, le lien SymbolicAutomata >> etant preserve (09f pointe deja vers Search-10). Guard local : OK, 0 NEW finding vs baseline (2 resolus). Modif markdown-only, pas de cellule code touchee (pas de re-exec due, C.2). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Repair check-nav-chain (orphan_entry Search-09f) — commit
La jambe CI rejouera sur la nouvelle tete ; les autres rouges du gate (Always-on guards sur pool gele) restent en attente externe. |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Approuvé à la tête exacte 20f1558. Dossier tiers myia-po-2025:CoursIA-2 (REVIEW_READY, B.0 clear, checks latest-wins-green). Delta depuis la relecture Hermes LGTM (e53f030) : fusion de main + 20f1558, deux lignes de navigation markdown dans Search-09 (lien entrant vers 09f), sans re-exécution due. Preuve décisive relue : tangence Sharpe 1,4839 identique à App-10 §7, LP z = 8,00 identique au simplexe de Search-09, copie pédagogique déclarée avec les 5 réponses organ-first.
…on ajoute par #20955 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
…de main L'attestation du 2026-10-14 (jamais arrivee sur main) est remplacee par celle de la tete fusionnee, qui couvre la puce de cette PR et le lien de navigation vers Search-09f ajoute par #20955. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
… cote Python (#20771) * Docs(search-09,#19269): nommer le cadre convexe dans la conclusion de Search-09 La cellule « Pour aller plus loin » du carnet Search-09 (Python) ne nomme pas l'optimisation convexe comme cadre du LP. Ajout d'une seule puce, en markdown, dans la liste « Theorie » : LP inclus dans QP, SOCP, SDP puis optimisation convexe generale, le LP de Search-9 etant le cas ou objectif et contraintes sont lineaires ; la QP de Markowitz, listee dans « Applications avancees », est le premier pas hors du lineaire. Verdicts (fiche de repérage, re-verifiee sur origin/main 1cef8a5) : - CONFIRMED : le carnet ne nomme pas le cadre convexe (grep -i 'convex|SOCP' : deux occurrences, « polygone convexe » et « Polyedre convexe », aucune sur le cadre) ; cellule index 46, id 12430632, liste « Theorie » sans cette notion. - La reference Boyd & Vandenberghe est deja livree dans Search/README.md (#19282) : ce commit ne touche pas le README. Non fait, reporte par l'issue #19269 : la tranche QP de Markowitz mesuree face au metaheuristique existant. Aucune cellule de code modifiee : pas de re-execution (C.2). Le jumeau C# n'est pas modifie. See #19269 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA * Docs(twin,#19269): re-attestation de la paire Search-09 apres la puce cote Python La puce qui nomme le cadre convexe (cellule 12430632, cote Python seul, markdown seul) deplace le blob SHA du carnet Python. Entree known_differences ajoutee, puis check_twin_parity.py --update --pair "Search-09 LinearProgramming" en derniere operation (entree d'audit 0007). Cote C# byte-identique a main. See #19269 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA * Docs(twin,#19269): note de re-attestation etendue au lien de navigation ajoute par #20955 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA * Docs(twin,#19269): re-attestation de la paire Search-09 apres fusion de main L'attestation du 2026-10-14 (jamais arrivee sur main) est remplacee par celle de la tete fusionnee, qui couvre la puce de cette PR et le lien de navigation vers Search-09f ajoute par #20955. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA --------- Co-authored-by: Claude <noreply@anthropic.com>
Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA — prev: DEEP/notebook-python #20952
Slot: accretion de Search-09 (f)
See #19269 (tranche « nommer le cadre LP → QP → SOCP » du residuel du dispatch « File profonde » ; la tranche QP Markowitz mesurée existait déjà dans App-10 §7-8 et est citée, pas dupliquée)
Ce que le carnet ajoute
Nouveau compagnon Search-09f-ConvexOptimisation-Python.ipynb (28 cellules, Part1-Foundations, entre 09e et Search-10) — il nomme le cadre que Search-09 utilise sans le dire : l'optimisation convexe, et le démontre étage par étage :
z = 3x₁+2x₂) re-résolue par cvxpy : z = 8,00, x₁ = 2,00, x₂ = 1,00 — identique au simplexe PuLP de Search-09 (croisé cellule par cellule).Copie pédagogique déclarée (organ-first, 5 questions)
Copie pédagogique déclarée, motif : l'instance de portefeuille est reprise à l'identique d'App-10 pour que l'étudiant de la Part 1 voie le cas d'école sans quitter les Fondements ; la cellule d'intro du §3 et la sortie de la tangence le disent toutes deux explicitement.
cp.Problem(...).solve(solver=cp.CLARABEL).optimalrendu par CLARABEL à chaque résolution — le témoin qu'une réimplémentation jouet ne produirait pas.Validation
execution_countréels partout (1-11), sorties committées. La 28e (transition markdown f09-9b) a été ajoutée après exécution — exempte C.2 (modif uniquement markdown).f= plafond §4, baseSearch-09sans lettre présente, aucun conflit).raise NotImplementedError/assert False/1/0en source (stubsprint("Exercice a completer")+# TODO etudiant).20f1558bfb) : le contenu pédagogique et les cellules de code de Search-09-LinearProgramming.ipynb restent inchangés. Ses deux lignes de navigation (en-tête et pied) ajoutent le lien « LP → convexe » vers Search-09f, en conservant le lien vers Search-10. Le diff comprend donc le nouveau carnet, les deux README de série et ces deux ajouts markdown dans Search-09 ; aucune ré-exécution de Search-09 n’est due au titre de C.2.🤖 Generated with Claude Code