Repository navigation
fix(search-09b): aligner la prose du zoom sur les sorties committées - #15231
Conversation
…(deficit 0.5551, gradient ~1e-8) La cellule "Lecture du zoom" citait un deficit de 0,5550 (soustraction des valeurs arrondies affichees) et un gradient riemannien de l'ordre de 10^-5, alors que la sortie committees et une re-execution fraiche donnent 0.5551 et 9.91e-08. Correction de la prose uniquement : aucune cellule code, aucun output ni execution_count modifies. Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Une Pour passer ce gate, réécrivez le champ |
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) |
Grain: MED/notebook-python — lane myia-po-2025:CoursIA-2 — prev: MED/tooling #15212
Discovered and verified by corrective-auditor: CONFIRMED_PEDAGOGY
Résumé
Audit Astra
DISCOVERY(issue #15227) du notebook Search-09b. La question d'audit principale — le seuil Burer–Monteiro emploie-t-iln=sommets au lieu dem=contraintes affines (soupçonné être le nombre d'arêtes pour Max-Cut SDP) — s'est résolue en FALSE_POSITIVE : le notebook est correct. Cette PR ne porte que l'unique défaut adjacent confirmé, une incohérence prose/sortie dans la cellule « Lecture du zoom ».See #15227
Question principale :
m = n— FALSE_POSITIVE (aucune correction)Vérifié contre les sources primaires :
max ⟨C,Y⟩ s.t. 𝒜(Y)=b, Y ⪰ 0avec𝒜: 𝕊^{n×n} → ℝ^m; la condition de rang estp(p+1)/2 > m. Pour Max-Cut,𝒜est la carte diagonalediag(Y)=1,b = 𝟙 ∈ ℝ^n→m = n, pas le nombre d'arêtes. La forme factorisée estdiag(YY^T)=1c'est-à-dire des lignes sur des sphères unité — exactement(BM_r)du notebook.p(p+1)/2 > m», oùmcompte les contraintes d'égalité. La note Barvinok–Pataki du notebook est cohérente avec cette lecture.Le nombre d'arêtes
|E|vit dans l'objectifW, pas dans les contraintes : le soupçon « arêtes » est réfuté par la source, pas seulement par l'expérience.Contre-exemple demandé (n ≠ |E|) — les deux lectures de
mdivergent exactement quandn ≠ |E|:La source primaire tranche :
m = n. La table du notebook (4/4/5) est la bonne.Question secondaire : « trois régimes identiques » — CONFIRMÉ
Ré-exécution fraîche sur
python3(Python 3.13.14, cvxpy 1.9.2, numpy 2.4.4, CLARABEL) : les 7 sorties de cellules code sont byte-identiques aux sorties committées (execution_count1–7, zéro erreur). Le recensement est déterministe sous graines fixes. Les trois régimes (r=1 universellement fallacieux 39/40·40/40·40/40 ; rangs intermédiaires en décroissance 5/40·0·12/40 ; zéro àr ≥ r*) correspondent exactement au tableau, et la nuance « propreté commençant avant r* » (C6 et G10 dès r=3, K8 dès r=2) est la bonne.Défaut corrigé — CONFIRMED_PEDAGOGY
Cellule « Lecture du zoom » (section D), deux nombres de prose contredits par la sortie committée et par la ré-exécution fraîche :
$0{,}5550$deficit 0.5551(pleine précision 0.55507)0.5550 = 14.3249 − 13.7699(soustraction des deux valeurs affichées arrondies). INFERENCE : cohérent avec une prose dérivée des valeurs affichées ; la provenance textuelle n'est pas établie par la section D.$10^{-5}$»9.91e-08(ordre 10⁻⁸)9.91e-08≈ 10⁻⁸, contre prose 10⁻⁵. INFERENCE : peut refléter des paramètres antérieurs — la section D documente un ancien réglage (600 itér. / seuil 10⁻⁵) — mais la provenance textuelle n'est pas établie.Diagnostic dérive (défaut corrigé)
0.5551vs0.5550, gradient9.91e-08vs10⁻⁵.CAUSE_FIXED— la prose cite désormais les valeurs réelles de la sortie committée. Les valeurs étant byte-identiques sous ré-exécution fraîche, il n'y a pas de valeur « qui changera au prochain passage kernel » : la ré-alignement vient d'une exécution réelle, pas d'un alignement byte-surgical.Exécution et preuves
jupyter nbconvert --execute(kernelpython3, hors repo vers scratchpad) : toutes les cellules exécutées, sorties byte-identiques aux committées.scripts/notebook_tools/validate_pr_notebooks.py origin/main: 1/1 PASS (7 cellules code).scripts/notebook_tools/check_papermill_ratchet.py origin/main: 0 changed / 0 regressions (markdown-only ; aucun output,execution_countni metadata touché).scripts/notebook_tools/detect_markdown_rendering.py --check <target>: OK, aucune nouvelle violation.raise NotImplementedError/assert False/1/0) : propre — stubs d'exercice =return None # TODO etudiant.twin_pairs.dni danstranslations/.Périmètre
MyIA.AI.Notebooks/Search/Part1-Foundations/Search-09b-SpuriousMinima.ipynb.$0{,}5550$→$0{,}5551$,$10^{-5}$→$10^{-8}$), byte-minimal : aucune cellule code, aucun output,execution_countni metadata modifiés.Déconfliction
#15227(issuecomment-5589143805) posé par ma lane ;check_lane_claim.py→my_active_claim=true,blocked=false, 0 lane bloquante, chemin libre.SpuriousMinima/Burer). Historique feat(search,#13194): Search-17 minima fallacieux — recensement Burer-Monteiro au seuil r(r+1)/2 > m #13197 (création Search-17) et reclass(search,#13771): renum Search-17-SpuriousMinima->09b et Search-18->09c (Part3->Part1) #13818 (renum → 09b) : mergés.origin/main=58b92cc26(snapshot de l'issue). Le réducteur avait d'abord tourné sous un checkout stale (verdict dead-glob erroné), puis relancé depuis la worktree canonique : exit 0.fix/à lane unique depuisorigin/mainfrais ; pas de force push.Limites / résidualité
m, pas sur la dégénérescence.Co-Authored-By: Claude Code noreply@anthropic.com