feat(ml): compare convex solvers across scratch and SOTA - #17960
Conversation
See #16061 Co-Authored-By: Claude-Code <noreply@anthropic.com>
MD hierarchy drift -- bdd5a1bCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
See #16061 Co-Authored-By: Claude-Code <noreply@anthropic.com>
MD hierarchy drift -- 480d7f8Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
Co-Authored-By: Claude Code <noreply@anthropic.com>
…araison-optimisation-convexe
Path-collision (organ #13359/#13615)Cette PR #17960 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] — full read du notebook 2.11f (38 cellules, 14 code, exec 1→14 séquentiel) + diff README, head d84267e.
Anchors vérifiés contre les outputs committés (tous présents) : duals SMO/LIBSVM 30.3960 / 30.3961, |SV| = 48 des deux côtés (et à toutes les tailles de la sonde), n_iter_ = 102 (working set), objectif partagé 0.360645 sur les six solveurs, écart max ADMM 4.72e-06, KKT off-support 1.23e-02 ≤ λ 1.25e-2. Gates #17040 : aucune lecture dupliquée ni mal placée, exercices = stubs propres sans leak de solution, pas de prose de remplissage. README : lignes de navigation + paragraphe de présentation pour 2.11e/2.11f — conforme à la directive #17633 (corps du notebook livré, zéro totaux brassés). Scan sécurité : néant.
Finding mineur (non bloquant) — la « lecture préparée » imprimée par la sonde SVM (§4.1) affirme « compteurs SMO et temps croissent avec n », mais la sortie committée montre des temps SMO non-monotones : 0.24 s → 0.17 s → 0.97 s. Les compteurs (deterministes) croissent bien ; le temps non. La prose markdown du §4 corrige d'ailleurs élégamment cette classe de variance pour le Lasso (« la sonde identifie des échelles, pas des exposants ») — le même hedge manqué sur la ligne imprimée SVM. Fix triviale si le notebook est ré-exécuté un jour ; rien qui bloque le merge.
Checks : PR gate FAIL au moment de la review, mais le run est encore en cours (validate-notebooks in_progress) — à relire après complétion, pas un rouge de contenu identifié (les 19+ organes visibles passent, y compris Gitleaks, guards 16 organes, golden-set).
[Hermes hermes-pr-review, cycle :14 26/09, host f6be46d1b7a3]
Re-execute the B.8 notebook after correcting its printed interpretation of measured timings. Papermill executed all 14 code cells successfully. Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
La remarque Hermes sur la lecture imprimee de la sonde SVM est traitee dans f4d22bc : les compteurs SMO croissent, tandis que les temps fluctuent aux petites tailles. Le notebook a ete reexecute integralement (14/14 cellules code, 0 erreur) et les sorties reelles sont commitees ; les ratchets sortie/source locaux ne signalent aucune regression. Les checks de la nouvelle tete sont encore en cours. |
|
[ADJOINT PREFLIGHT] Dossier tierce (lot DM msg-20260926T163550-203qzu, item 3). Verifications firsthand :
Advisory lu, non bloquant : path-collision organ signale le README partage avec #16832 (deja sur main) -- mergeStateStatus CLEAN au dossier, sans conflit constate. |
…atch of the nav-chain guard The gate fired on its first run: 2.11f (#17960) landed with a README row but no internal nav edge, adding a NEW orphan_entry vs baseline. Source fix, not a baseline bump: transition cell with a "Suivant" edge in 2.11e -> 2.11f (markdown-only, no code cell touched). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…EAU (#17985) * feat(ci,#17284): cable nav-chain guard en organe bloquant sur le NOUVEAU Workflow notebook-nav-chain-guard.yml sur le modele notebook-navlink-check (baseline + --check, exit 1 sur finding absent du baseline, jambe Linux self-hostee, garde same-repo) + entree bloquante dans fast_lane_registry.py + assertion de test. Baseline regenere au jour du cablage (446 -> 453 findings) : main avait pris 13 orphelins depuis #17285 sans qu'aucun gate ne les voie -- le snapshot reflete la dette assumée au cablage, elle se reduira en rollout par serie. Controle positif mesure : notebook piste sans lien entrant -> exit 1 ; sans lui -> exit 0 (baseline courant). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(ci,#17284): allowlist self-hosted du workflow nav-chain-guard La jambe Scripts Tests rougissait sur test_current_repository_self_hosted_jobs_satisfy_isolation_policy : WORKFLOW_NOT_ALLOWED -- le nouveau workflow self-hosted doit figurer dans SELF_HOSTED_WORKFLOW_ALLOWLIST, comme son modele notebook-navlink-check.yml. 58 passed sur la suite policy. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(nav,#17284): wire 2.11f into the 2.11 series chain - first live catch of the nav-chain guard The gate fired on its first run: 2.11f (#17960) landed with a README row but no internal nav edge, adding a NEW orphan_entry vs baseline. Source fix, not a baseline bump: transition cell with a "Suivant" edge in 2.11e -> 2.11f (markdown-only, no code cell touched). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Fix(nav,#17284): rattacher les 2 orphelins neufs sur main (Complexity-03c, Lean-24b) Deux notebooks arrives sur main apres la tete du cablage etaient en NEW vs baseline (mesure coordinateur 27/09 ~07:40Z sur main 1c8d884) : Complexity-03c (via #17769) et Lean-24b (via #17530). Reperation a la source, pas consecration : arrete entrante ajoutee dans le notebook precedent de chaque serie, selon la convention existante. - Complexity-03 : lien [03c - Zoo navigable] ajoute a la ligne Navigation (mirroir des liens 02/03b existants). - Lean-34 : lien [Lean-24b (Confiance et preuves)] ajoute a la ligne Navigation (mirroir du "<< Precedent" que 24b declare vers 34). - Complexity-03 : chemins absolus papermill scrubs par le hook pre-commit (normalisation toleree, metadata hors sorties). check_notebook_nav_chain.py --check : 0 NEW (453 connus), rc=0. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Fix(nav,#17284): rattacher FT-00d et ICT-45 — lignes Navigation predecesseur + miroir Les merges #17506 (FT-00d) et #18017 (ICT-45) ont pose deux orphelins nav-chain (orphan_entry mesure sur main 02fb2e1). Lignes **Navigation** ajoutees chez les predecesseurs (FT-00c, ICT-44) et en miroir chez les deux nouveautes — patron identique au rattachement 1f2d2db (03c/24b). Markdown-only, aucune cellule code touchee. Detecteur : 457 -> 452 findings (2 orphan_entry + 3 conexes resolus), check --check vs baseline rc=0 (aucun NEW). See #17284 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * feat(ci,#17284): scope bloquant nav-chain au diff de la PR (decision c.5854935546) La jambe ne rougit plus sur tout NEW finding repo-wide : seuls les NEW imputables a la PR blocquent (notebook du diff, ou serie dont le README est touche) ; un NEW ne du merge d'une AUTRE PR entre-temps devient un avertsement. Fail-closed : diff absent/vide = tout NEW bloque. - check_notebook_nav_chain.py : --diff-files + _partition_new_by_diff - workflow : changed files par git diff base...HEAD (sans GITHUB_TOKEN, posture tranche 1 preservee), fetch-depth 0 - tests : controles positif (notebook du diff, README de serie) et negatif (hors diff) + fail-closed x2 — 22 passed See #17284 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Fix(guard,#17284): imputation independent_chain -- la serie est la cle + baseline des 2 ilots Re-mesure ai-01 (c.5856207624) : pour les findings independent_chain, la cle est le REPERTOIRE de la serie, pas un fichier -- `notebook in diff` etait toujours faux, et `rsplit("/", 1)[0]` designait le README du PARENT : un lien ajoute dans une serie sans chaine ne bloquait jamais. _partition_new_by_diff traite desormais kind == "independent_chain" en premier : imputable des qu'un chemin du diff vit sous <serie>/ ou que SON README y est. 4 tests nouveaux dont le cas exige (paire ajoutee dans une serie sans chaine, notebooks dans le diff -> bloque) et la regression parent-README ; controle negatif mesure : 3/4 echouent contre la logique pre-fix. Suite 26/26 pass. Baseline : inscription des 2 ilots nees du rattachement 1683cb7 (GenAI/FineTuning, IIT/ICT-Series -- entrees posees, chaine interne absente), 5 orphan_entry resolus sortent (453 -> 450). Dette declaree, suivi reel : #18057. See #17284 See #18057 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(#17985): qualifier les 2 annotations seuil (~450 -> 450 exact, non normatif) Rouge n°2 de la review NanoClaw : les deux littéraux numeriques en commentaire sont alignes sur la mesure (450 entrees au head) et marques informatifs -- le JSON baseline_nb_nav_chain.json est nomme source de verite. 81 tests fast_lane verts. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Grain: DEEP/notebook-python — lane myia-po-2025:CoursIA — prev: MED/tooling #17950
Summary
02-ML-Cours: compare scratch SMO against LIBSVM on the same seeded SVM problem, and ISTA, FISTA, ADMM, scratch coordinate descent,sklearn.Lasso, and CVXPY/CLARABEL on the same seeded Lasso problem.Validation
validate_pr_notebooks.py: 1/1 notebook passed, 14 code cells.n_iter_, distinct from scratch examination calls.git diff --check: passed.See #16061. This PR delivers B.8; issue closure remains a separate coordinator decision after checking the entire acceptance.
🤖 Generated with Claude Code