fix(nb,#11925): Sudoku-15 C# — solveur v4 max-product hongrois réel (0/51 → 9/11 Medium ATTEINT) - #12769
Conversation
…0/51 → 9/11 Medium ATTEINT) Le portage v4 hérité (MaxSweeps+Decimate+InitBeliefs, rng statique) laissait les croyances quasi statiques et échouait 0/51. Remplacement par le portage fidèle du twin Python #11801 : messages f2c = meilleure affectation injective du mineur 8x8 (couplage hongrois Kuhn-Munkres sur -log p), messages c2f extrinsèques, damping 0.5, bruit log-uniforme aux redémarrages, tirage selon la croyance sous plateau, seed=k par grille, table d'unités autonome. Re-exécution complète via exec_dotnet_persist.py (kernel .net-csharp) : 26 cellules, 0 erreur. Bench : Easy51 51/51, Medium hardest 9/11 (81,8% — critère ATTEINT), top95 9/15. Réparation env règle F (DOTNET_ROOT sans SDK → kernel ne restaurerait pas #r nuget:) documentée en body PR. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
|
Review [Hermes] — SHA 2dd620a · Sudoku-15 C# v4 max-product hongrois. Vérifié en profondeur (solveur + bench + outputs), pas de LGTM mécanique : 1. Solveur v4 (cell E) — réel, implémentation correcte. 2. Bench C17 — outputs réels, claim 9/11 substantié. 3. Honnêteté des limites — point fort. 4. Leak-path check. Observation tracker (non-bloquante) : le corpus top95 tombe à 9/15 (60%) et totalise 194 contradictions — le v4 traite bien le critère Medium mais chute sur top95. C'est documenté dans le bench (pas caché), mais à surveiller si une future PR veut étendre la couverture top95. Hors scope ici. Verdict : portage substantiel et authentique, critère atteint avec outputs réels. LGTM. Note de process : post en COMMENT car token jsboige sur repos jsboige/* est en self-review cap (APPROVE non dispo). |
MD hierarchy drift -- 2dd620aCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
✅ No fragmented stream outputs detected. See |
|
✅ No render volume delta signal (notebooks modified vs merge-base preserve >= 50% of base rendered output per MIME family). See |
|
No new degraded-mode confessions in modified notebooks (vs merge-base). Inherited confessions are tolerated by design (frozen-inheritance). Detector: |
…4 csharp + known_differences (PR #12769) Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
|
Rouge Les 2 liens navlinks cassés ( |
|
No new ASCII flowchart introductions in modified notebooks (vs merge-base). Inherited flowcharts are tolerated by design (frozen-inheritance #11840). Detector: |
MD hierarchy drift -- 468d19aCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
|
Diagnostic rouge (lane po-2027, 2026-08-24T17:1xZ) : |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
MD hierarchy drift -- 8ff7a08Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- b8b0cafCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 825db25Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 698b948Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
|
[INFO][po-2027] Checks requête restes en file (queued depuis 2026-08-28T14:13Z, update-branch d'hier) -- drainage file CI #11860 en cours, cause infra (cf dashboard : ~109 jobs hier, en baisse). Aucun rouge de substance : failing=[] au dernier sondage. La lane re-sondera au prochain cycle ; pas de geste re-run (remettrait en queue de file). |
Conflits resolus : - Sudoku-15-Infer-Csharp.ipynb : version main (reecrit/re-execute par #12769 solveur v4, 13k lignes) — les 2 corrections navlink zero-pad de la branche y sont caduques (la version main ne reference plus les siblings non paddes, verifie par grep). - twin_pairs.d/sudoku-15-infer.yaml : attestation 2026-08-24 (po-2027, solveur v4) conservee ; mon entree 2026-08-28 retiree — elle attestait les SHA d'une version du notebook C# remplacee par main. Le jumeau Python (3 navlinks zero-pad auto-merges) sera re-atteste par rebaseline post-merge. Co-Authored-By: Claude-Code <noreply@anthropic.com>
Merge 8c01614 integrated main's Sudoku-15-Csharp v4-solver rewrite (#12769) and dropped this branch's obsolete navlink edits in the C# twin. The Python twin on this branch keeps its 3 zero-pad navlink edits, so its content sha moved d495bc4b -> 2f77da91. Fresh attestation by check_twin_parity --update; full check 157/157 OK. Co-Authored-By: Claude-Code <noreply@anthropic.com>
…he Sudoku) (#13357) * chore(naming,#11840): zero-pad Sudoku series N in [1..9] -> 0N (tranche Sudoku) Pattern pilote #12241 (GameTheory). git mv 18 notebooks Sudoku-{1..9}-* -> Sudoku-0{1..9}-* ; H1 + nav headers + refs croisees (~140 fichiers : READMEs, docs, slides, translations CSV, scripts/tests, workflows, _quarto.yml). Edits notebooks markdown-only (exceptions C.2) : les commentaires // touches par le sed initial ont ete restaures a l'identique de main. metadata.papermill input/output_path epargnes (provenance, pattern pilote). Catalogue byte-identique (cron-owned). Registre twin : paths paddes dans 18 yamls + slugs renommes sudoku-{1..9}-*.yaml -> sudoku-0{1..9}-*.yaml + check_twin_parity --update (ordre #8957, apres commit) de 25 paires : Sudoku-01..09, Sudoku-10..18 (nav editee), Search-3/5/8/10/13, App-6/20, GameTheory-3, SocialChoice-3, Z3-Python-02 (prose citant les notebooks renommes). Sudoku-14 no-op legitime (non editee). Validation : check_twin_parity 157/157 OK 0 DRIFT ; papermill ratchet 0 regressions (43 changed) ; navlinks 0/1151 ; docs-links 0/5168 ; 0 cellule code modifiee (5 notebooks externes verifies vs main). Co-Authored-By: Claude-Code <noreply@anthropic.com> * fix(scripts,#13357): repair PR gate reds — revert hand-edited translation CSVs, align test assertion Translation guard (#10042): the 6 translations/** CSVs were hand-edited by the zero-pad refactor; they are derived artifacts owned by translation-sync.yml. Reverted to origin/main — the bot re-derives them from the renamed source notebooks (this is the guard's sanctioned exit #1). Scripts Tests (CPU): test_number_extraction_from_name asserted '| 3 |' while the refactor renamed the fixture to Sudoku-03-Test; the extraction correctly yields '03'. Aligned the assertion to '| 03 |' (canonical zero-padded naming). Co-Authored-By: Claude Code <noreply@anthropic.com> * chore(twin-parity): re-attest Sudoku-15 Infer post-merge origin/main Merge 8c01614 integrated main's Sudoku-15-Csharp v4-solver rewrite (#12769) and dropped this branch's obsolete navlink edits in the C# twin. The Python twin on this branch keeps its 3 zero-pad navlink edits, so its content sha moved d495bc4b -> 2f77da91. Fresh attestation by check_twin_parity --update; full check 157/157 OK. Co-Authored-By: Claude-Code <noreply@anthropic.com> * fix(gametheory): restore 27b assignment notebook + LEAN_INVENTORY section erased by branch bootstrap Hermes review 2026-08-28T22:39Z: the branch's founding commit 3bb0b75 (10:23:02Z) was cut from a stale tree 20 min after #12911 merged the notebook (10:03:44Z), recording its deletion. Merge 8c01614 preserved the deletion (delete-wins, main untouched since). Restored byte-identical from origin/main per the review's demande: neither file touches any Sudoku rename. Co-Authored-By: Claude-Code <noreply@anthropic.com> --------- Co-authored-by: Claude-Code <noreply@anthropic.com>
Grain: DEEP/notebook-dotnet — lane myia-po-2027:CoursIA — prev: LIGHT/guard #12724
Problème
Sudoku-15-Infer-Csharpaffichait 0/51 au benchmark v4. La cause : le solveur C# ne faisait pas de vrai message-passing max-product arity-9. Le portage hérité (MaxSweeps+Decimate+InitBeliefs) laissait les croyances quasi statiques (uniforme + bruit), les décimations aléatoires, sans réinitialisation de grille entre redémarrages, avec unRandomstatique global — d'où un échec quasi systématique.Correctif
Portage fidèle du twin Python #11801 (
Arity9MaxProductSolver+ helpers) :−log p(implémentation C# ~50 lignes, pas d'Or-Tools dont le namespace varie selon la version 9.x) ;Plateau=0.25) — jamais d'argmax précoce ;seed=k, reproductible, comme le twin Python) ;DecimSweeps=4;Arity9SolverHelpers.UNITS(une classe séparée ne peut pas référencer un champ statique top-level par nom simple en .NET Interactive —BP_UNITSreste en cellule B pour la démo de Hall, le solveur possède sa copie).ISudokuSolverconservée (Solve(SudokuGrid)— seed 0), ajout deSolveFlat(int[,] cells, int seed)+ compteurs de coût (LastMs,LastContradictions,LastSweeps,LastRestarts).Aucune propagation déterministe, aucun repli. Squelette v3 conservé ; les deux randomisations probabilistes standard (bruit de redémarrage + tirage sous plateau) complètent la décimation.
Validation réelle
Ré-exécution de bout en bout :
scripts/notebook_tools/exec_dotnet_persist.py(kernel.net-csharp, cwd =MyIA.AI.Notebooks/Sudoku/pour résoudre#!import Sudoku-0-Environment-Csharp.ipynbet le corpusPuzzles/). Vrai run, outputs commités (C.2).Cellule 42 (bench v4, exécutée) :
Critère d'acceptation (feat(sudoku): Sudoku-15-Csharp v4 twin — facteurs AllDiff arite 9 (portage du geste #11801 cote C#) #11925) — Medium ≥ 9/11 (≥ 80 %) : ATTEINT (9/11, 81,8 %).
Pré-mesure console (Release, solveur seul, mêmes corpus, seed=k) : Easy51 51/51 (100 %), Medium hardest 11 9/11 (82 %), top95 15 9/15 — reproductible.
Réparation d'environnement (règle F, note pour les reviewers)
Le kernel
.net-csharpne démarrait pas :dotnet-interactive.exeexigeaitMicrosoft.AspNetCore.App 9.0.0introuvable dansDOTNET_ROOT=C:\Users\Jesse\.dotnet(ce.dotnetn'exposait alors queMicrosoft.NETCore.App), et le restore#r "nuget: Microsoft.ML.Probabilistic"échouait via le bugPackageRestoreResult(old tool). Réparé localement : runtimesaspnetcore+dotnet9.0.19 et 10.0.11 installés dans.dotnetviadotnet-install.ps1, etdotnet tool update --global Microsoft.dotnet-interactive(1.0.617701 → 1.0.712001). Le notebook se re-exécute alors end-to-end.Verdict honnête
La cellule I (coût par balayage max-product hongrois vs sum-product permanente) reste la mesure de l'écart de coût ; le sum-product scalaire C# n'est pas re-bench sur les 11 grilles hardest (≈7× plus lent par balayage que la permanente Ryser vectorisée du twin Python, cf cellule H).
Observation (principe 3 — signalé, non traité ici)
Cellule 51 (test #11778, non modifiée par la PR) commit une sortie HTML exposant
C:\Program Files\dotnet\shared\Microsoft.NETCore.App\...(location d'assemblys .NET). Pré-existante (présente dans origin/main), bénigne (chemin d'install standard, aucun username/IP/hostname). Hors scope #11925 — à purger dans une PR dédiée, pas ici.See #11925