Skip to content

feat(search,#10382): CSP-7 C# section 6 Hierarchical CSP — Configuration PC sur Choco, accord cross-moteurs CP-SAT - #12741

Open
jsboige wants to merge 10 commits into
mainfrom
feature/csp7-hierarchical
Open

feat(search,#10382): CSP-7 C# section 6 Hierarchical CSP — Configuration PC sur Choco, accord cross-moteurs CP-SAT#12741
jsboige wants to merge 10 commits into
mainfrom
feature/csp7-hierarchical

Conversation

@jsboige

@jsboige jsboige commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-dotnet — lane myia-po-2024:CoursIA — prev: DEEP/lean #12343

Summary

Section 6 Hierarchical CSP (Mittal & Falkenhainer 1990 — niveaux MANDATORY > STRONG > WEAK) ajoutee au twin C# de CSP-7-Soft, miroir exact de l'exemple resolu Configuration PC du jumeau Python (meme catalogue, meme budget 820 EUR, meme M = 5). Notebook 33 -> 38 cellules :

  • MD titre + cadrage (encodage lexicographique par facteur M : M*strong + weak, M > max cout weak) ;
  • Code Configuration PC sur Choco : MANDATORY postees (arithm compatibilite socket + alimentation >= TDP+80), STRONG/WEAK reifiees par ifThenElse(bool, cstr, cstr) = equivalent exact du double OnlyEnforceIf(b) / OnlyEnforceIf(b.Not()) de CP-SAT, attributs via model.element, objectif scalar({strong, weak}, {M, 1}) + setObjective(false, hierCost), boucle while(solver.solve()) capturant le best ;
  • MD interpretation (accord cross-moteurs + 3 points d'API) ;
  • Exercice 4 station de travail 1200 EUR : enonce MD + stub C.1 (prints d'etapes + // TODO etudiant, aucun raise) ;
  • renumerotation ## 6. Exercices -> ## 7. ; ligne tableau + verdict de la conclusion patchees.

Empilement

PR empilee sur #12616 (branche feature/csp7-semiring-section) : ai-01 decide l'ordre de merge — merger #12616 d'abord, puis celle-ci (base = main, le diff cumule inclut donc la section 5 Semiring).

Execution reelle (H.1 / D.4)

=== Bilan ===
  Prix total  : 815 EUR  (budget 820)  => OK
  Score total : 145       (min 145)   => OK
  TDP total   : 235W + 80W = 315W  (alim 550W)
  [STRONG] Budget     : satisfaite
  [STRONG] Perf min   : satisfaite
  Score objectif : 5 x 0 (strong) + 3 (weak) = 3      (121 ms)
  • Accord cross-moteurs : le jumeau Python (CP-SAT, output commite sur main) trouve le meme optimum objectif = 3 sur le meme catalogue (config i5-12400 / MSI B660M / RTX 3060 / CV550 / NZXT H510 des deux cotes) — preuve de validite.
  • check_exec_sequence.py : CLEAN (1..17) — renumbering transplant pattern feat(csp-7,#10382): section Fuzzy CSP via Choco dans le twin C# #12159 (precedent 26a25a3, commit 3492a9d), permutation pure des labels, sources et outputs byte-identiques.
  • 0 pattern interdit C.1 (raise NotImplementedError / assert False / 1/0 : aucun, verifie par script) ; 17 cellules code, toutes execution_count != null + outputs.

Registre twin-parity (53d8414 + a141f2a)

Reevaluation : bridge_verdict RECOVERABLE-LOCAL -> SOTA-OK, parity_level surface -> semantic — dernier gap nomme (fil Hierarchical) ferme ; accords numeriques x2 (Semiring #12616 : Rome 0.8 ; Hierarchical : Choco<->CP-SAT objectif 3, meme config 815 EUR). Entrees known_differences non datees devenues fausses : superscription datee appended, prose d'origine preservee. Entrees --update reindentees 4/6 -> 2/4 espaces (bug #12617, meme correctif manuel que 63639a4). Checker : 157 paires OK, DRIFT=0.

Verdict SOTA

SOTA-OK — vrai moteur Choco 4.10.17 via IKVM 8.15.0, la sortie commitee est sa vraie sortie.

See #10382 (issue-parapluie, tranche Hierarchical — livraison partielle, pas de Closes)

jsboige and others added 10 commits August 23, 2026 17:56
… + SoftCsp<T>, accord framework vs Choco)

Fermeture du gap Semiring du registre twin csp-7-soft : miroir .NET de la
section 2 du jumeau Python (Bistarelli-Montanari-Rossi 1997). Interface
generique ISemiring<T> (Bottom/Top/Combine/Project) + 3 instances
(Boolean/Fuzzy/Weighted), classe SoftCsp<T> (Evaluate = Project depuis Top,
SolveBruteForce = ordre a+b=b), demo vacances floues 9 combinaisons, et
accord numerique exact framework vs moteur Choco (Rome/Juillet 0.8 = 0.8).

Cellules executees via harness console net9.0 + IKVM 8.15.0 (recette #4711,
recette memoire console-project + transplant), outputs reels transplantes.
Exercices renumerotes 4 -> 6 ; intro et conclusion mises a jour (table de
parite + verdict SOTA). Gap residuel : Hierarchical.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
…ing (gap residuel : Hierarchical uniquement)

Co-Authored-By: Claude-Code <noreply@anthropic.com>
…ec-sequence)

Re-exec reelle des 3 cellules exercices dans un harness console (sorties
byte-identiques aux outputs committes, verifiees par script), puis
renumbering transplant pattern #12159 : Semiring A/B/C = 10/11/12,
exercices = 13/14/15. check_exec_ratchet local : CLEAN->CLEAN, 0
regression. corrige le rouge Exec-sequence ratchet de la CI (#12616).

Co-Authored-By: Claude-Code <noreply@anthropic.com>
…2026-08-23 a 4 espaces (l'indentation 6 cassee par --update rendait le YAML unparseable -> crash des 3 gardes twin/scripts)

Co-Authored-By: Claude-Code <noreply@anthropic.com>
…guration PC sur Choco (accord cross-moteurs CP-SAT)

Fil Hierarchical CSP (Mittal-Falkenhainer) du jumeau Python porte cote C# :
MANDATORY (socket, alimentation) postees, STRONG/WEAK reifiees via ifThenElse
(equivalent OnlyEnforceIf de CP-SAT), objectif lexicographique linearise
scalar({strong,weak},{M,1}). Exemple resolu Configuration PC (meme catalogue,
meme M=5 que le Python) + Exercice 4 station de travail 1200 EUR (stub C.1).

Execution reelle (console .NET 9 + IKVM 8.15.0 + Choco 4.10.17, recette #4711) :
meme optimum que CP-SAT — i5-12400/MSI B660M/RTX 3060/CV550/NZXT, 815 EUR,
score 145, strong 0, weak 3, objectif 3, 121 ms. Conclusion : ligne de parite
+ verdict mis a jour (configuration PC passe dans les problemes partages).

Tranche 2 de la paire apres Semiring #12616 (branche empilee dessus).
Voir #10382 (registre twin), See #4711.

Grain: DEEP/notebook-dotnet — lane myia-po-2024:CoursIA — prev: DEEP/lean #12343

Co-Authored-By: Claude-Code <noreply@anthropic.com>
…rchical — SOTA-OK + parity semantic

Rebaseline apres eec97c8 (csharp_sha 020dfe9, content cf7d94d6) +
reevaluation du verdict : bridge_verdict RECOVERABLE-LOCAL -> SOTA-OK,
parity_level surface -> semantic — dernier gap nomme (fil Hierarchical)
ferme, accords numeriques x2 (Semiring #12616 Rome 0.8 ; Hierarchical
Choco<->CP-SAT objectif 3, meme config 815 EUR).

Entree --update 2026-08-24 reindentee 4/6 -> 2/4 espaces (bug #12617,
meme correctif manuel que 63639a4). Entrees known_differences non
datees devenues fausses : superscription datee appended, prose d'origine
preservee. Checker : 157 paires OK, DRIFT=0.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
…tion section 6 (ratchet exec-sequence)

Renumbering transplant pattern #12159 / precedent 26a25a3 : les 2
cellules section 6 (inserees avant la section Exercices) prennent 13/14,
les stubs exercices passent 13/14/15 -> 15/16/17. Permutation pure des
labels execution_count, sources et outputs byte-identiques (outputs =
execution reelle console .NET 9 + IKVM 8.15.0 + Choco 4.10.17 du commit
eec97c8). check_exec_sequence : UNORDERED -> CLEAN (1..17).

Co-Authored-By: Claude-Code <noreply@anthropic.com>
…c-sequence (blob 9fbca2b) — dedent entree --update (#12617)

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@jsboige

jsboige commented Aug 24, 2026

Copy link
Copy Markdown
Owner Author

Log d'execution reelle du runner console .NET 9 (IKVM 8.15.0 + Choco 4.10.17, recette #4711) — les sources executees sont celles des cellules commitees (transplant) :

IKVM 8.15.0 pret (home=ikvm-home-8.15.0-win-x64, tzdb=True) - Choco-solver charge
========== DEBUT CELLULE B ==========
Configuration PC optimale (Choco, 93 ms)

  CPU         : Intel Core i5-12400            200 EUR  score=70  Intel/Nvidia
  Carte mere  : MSI PRO B660M                  130 EUR
  GPU         : RTX 3060                       320 EUR  score=75  Intel/Nvidia
  Alimentation: Corsair CV 550W                 75 EUR  550W  garantie 3 ans
  Boitier     : NZXT H510                       90 EUR  noir

=== Bilan ===
  Prix total  : 815 EUR  (budget 820)  => OK
  Score total : 145       (min 145)   => OK
  TDP total   : 235W + 80W = 315W  (alim 550W)

Contraintes souples
  [STRONG] Budget     : satisfaite
  [STRONG] Perf min   : satisfaite
  [WEAK]   Marque CPU : Intel/Nvidia (non prefere -- compromis budget/perf)
  [WEAK]   Marque GPU : Intel/Nvidia (non prefere -- compromis budget/perf)
  [WEAK]   Couleur    : noir (prefere)
  [WEAK]   Garantie   : 3 ans (courte)

  Score objectif : 5 x 0 (strong) + 3 (weak) = 3
  Accord cross-moteurs : le jumeau Python (CP-SAT) trouve le meme objectif = 3 sur le meme catalogue.
========== FIN CELLULE B ==========
========== DEBUT CELLULE E (stub exo 4) ==========
Exercice 4 a completer : adaptez la Configuration PC (section 6) au budget 1200 EUR.
Etape 1 : definir le catalogue de composants (RAM et SSD deviennent des variables).
Etape 2 : poster MANDATORY (compatibilite, alimentation), reifier STRONG puis WEAK.
Etape 3 : objectif = M*strong + weak, M > |WEAK|, puis while (solverExo.solve()).
Verifier en fin : la solution respecte le budget de 1200 EUR.
========== FIN CELLULE E ==========

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] — DEEP review a141f2a9 (dédup : 0 review cluster sur ce SHA).

Vérifications effectuées sur le notebook committé (fetch raw au SHA de tête, pas le diff seul) :

  • Hygiène source : 38 cellules (17 code), jointures intactes, 0 octet de contrôle — pas de défaut newline-stripped (classe #11664). execution_count 1→17 contigus, 0 null.
  • Authenticité outputs : les lignes citées dans le body sont présentes verbatim dans les outputs committés (Prix total : 815 EUR, Score objectif : 5 x 0 (strong) + 3 (weak) = 3, bilan TDP 315W / alim 550W, accord cross-moteurs CP-SAT objectif 3). ifThenElse/setObjective/element bien dans les sources.
  • Discipline C.1 : 0 pattern interdit (raise NotImplementedError/assert False/1/0) — stub étudiant propre.
  • Registre twin-parity : delta YAML lu en entier — superscription datée qui préserve la prose d'origine, parity_level surface→semantic et RECOVERABLE-LOCAL→SOTA-OK motivés par les 3 tranches (#12159/#12616/celle-ci), réindentation 2/4 conforme au correctif #12617.
  • Security scan : 0 match (HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN\s*=).

⚠️ Une micro-divergence, non bloquante : le bloc « Extrait committé » du body cite Score objectif : … = 3 (121 ms) mais (121 ms) n'apparaît dans aucun output du notebook committé (timings réels : 103/93/9/3/1 ms). L'extrait présenté comme verbatim ne l'est pas à ce timing près — vraisemblablement la mesure du run scratchpad console-runner plutôt que la sortie transplantée. Cosmétique, à ignorer ou corriger au prochain passage sur le fichier.

Verdict : PASS avec la réserve ci-dessus. (Contrainte token : COMMENT only, self-review cap.)

@github-actions

Copy link
Copy Markdown
Contributor

No new ASCII flowchart introductions in modified notebooks (vs merge-base). Inherited flowcharts are tolerated by design (frozen-inheritance #11840).

Detector: python scripts/notebook_tools/detect_ascii_flowchart.py <notebooks> --json
Rationale: #11962 / SW-12 cell ## 2. Architecture d'un pipeline GraphRAG (founding case, ASCII pipeline vs Mermaid flowchart LR).
Sibling scope: detect_ascii_workaround.py (#3801) targets bar charts; this organ targets flowcharts.

@github-actions

Copy link
Copy Markdown
Contributor

MD hierarchy drift -- a141f2a

Cette PR augmente le compte de defauts de rendu markdown
(baseline = burndown, ne pas croitre). Nouveaux defauts :

  +1 HINT-AS-HEADING  MyIA.AI.Notebooks/GameTheory/GameTheory-04b-Lean-NashExistence.ipynb
  +1 HINT-AS-HEADING  MyIA.AI.Notebooks/GenAI/PostTraining/PT_11_grpo_qwen_rlvr_on_verifiers.ipynb
  -1 HINT-AS-HEADING  MyIA.AI.Notebooks/GameTheory/GameTheory-4b-Lean-NashExistence.ipynb  (burndown)
  -9 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/01-Foundation/01-1-OpenAI-TTS-Intro.ipynb  (burndown)
  -9 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/01-Foundation/01-2-OpenAI-Whisper-STT.ipynb  (burndown)
  -9 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/01-Foundation/01-3-Basic-Audio-Operations.ipynb  (burndown)
  -5 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/01-Foundation/01-4-Whisper-Local.ipynb  (burndown)
  -8 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-1-Chatterbox-TTS.ipynb  (burndown)
  -8 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-2-XTTS-Voice-Cloning.ipynb  (burndown)
  -12 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-3-MusicGen-Generation.ipynb  (burndown)
  -9 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-4-Demucs-Source-Separation.ipynb  (burndown)
  -4 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-5-Multi-Model-TTS-Gateway.ipynb  (burndown)
  -14 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-6-MIDI-Generation.ipynb  (burndown)
  -15 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-7-Song-Generation.ipynb  (burndown)
  -15 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-8-Expressive-TTS.ipynb  (burndown)
  -15 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/02-Advanced/02-9-AceStep-Music-Generation.ipynb  (burndown)
  -8 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/03-Orchestration/03-1-Multi-Model-Audio-Comparison.ipynb  (burndown)
  -8 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/03-Orchestration/03-2-Audio-Pipeline-Orchestration.ipynb  (burndown)
  -8 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/03-Orchestration/03-3-Realtime-Voice-API.ipynb  (burndown)
  -10 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-1-Educational-Audio-Content.ipynb  (burndown)
  -15 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-2-Transcription-Pipeline.ipynb  (burndown)
  -10 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-3-Music-Composition-Workflow.ipynb  (burndown)
  -13 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-4-Audio-Video-Sync.ipynb  (burndown)
  -15 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-5-LiveCoding-LLM-Music.ipynb  (burndown)
  -8 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-6-Audiobook-Pipeline.ipynb  (burndown)
  -12 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/Audio/04-Applications/04-7-TTS-Voice-Benchmark.ipynb  (burndown)
  -9 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/CaseStudies/Barbie-Schreck/barbie-schreck.ipynb  (burndown)
  -9 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/CaseStudies/Fort-Boyard/fort-boyard-python.ipynb  (burndown)
  -9 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/CaseStudies/Medical-Chatbot/medical_chatbot.ipynb  (burndown)
  -9 HEADING-IN-LIST  MyIA.AI.Notebooks/GenAI/PostTraining/PT_11_grpo_qwen_rlvr_on_verifiers.ipynb  (burndown)
  -13 HEADING-IN-LIST  MyIA.AI.Notebooks/Probas/DecisionTheory/PyMC/DecPyMC-3-Multi-Attribute.ipynb  (burndown)
  -19 HEADING-IN-LIST  MyIA.AI.Notebooks/Probas/DecisionTheory/PyMC/DecPyMC-6-Expert-Systems.ipynb  (burndown)
  -8 HEADING-IN-LIST  MyIA.AI.Notebooks/Probas/DecisionTheory/PyMC/DecPyMC-7-Sequential.ipynb  (burndown)
  -8 HEADING-IN-LIST  MyIA.AI.Notebooks/Probas/Infer-101.ipynb  (burndown)
  -4 HEADING-IN-LIST  MyIA.AI.Notebooks/Probas/Infer/Infer-2-Gaussian-Mixtures.ipynb  (burndown)
  -13 HEADING-IN-LIST  MyIA.AI.Notebooks/Probas/Infer/Infer-6-Debugging.ipynb  (burndown)
  -15 HEADING-IN-LIST  MyIA.AI.Notebooks/QuantConnect/ML-Training-Pipeline/hmm_alpha_research.ipynb  (burndown)
  -6 HEADING-IN-LIST  MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-14-Portfolio-Construction-Execution.ipynb  (burndown)
  -6 HEADING-IN-LIST  MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-18-ML-Features-Engineering.ipynb  (burndown)
  -6 HEADING-IN-LIST  MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-19-ML-Supervised-Classification.ipynb  (burndown)
  -6 HEADING-IN-LIST  MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-24-Autoencoders-Anomaly.ipynb  (burndown)
  -6 HEADING-IN-LIST  MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-27-Production-Deployment.ipynb  (burndown)

=== drift: +2 across 2 notebook(s), 386 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...) ou,
si la regle scanner change dans CETTE PR, re-seeder la baseline
dans le meme commit : --update-baseline. See #11831.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No render volume delta signal (notebooks modified vs merge-base preserve >= 50% of base rendered output per MIME family).

See python scripts/notebook_tools/check_render_volume_delta.py --help for re-running locally.
Detector rationale: #11656 / #11351 pathologie (840 B remnants in 195 692 B cells = absolute detectors blind).
Why merge-base not origin/main two-dots: a branch 25+ commits behind would have the detector scan 35 notebooks the PR never touched.

@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 8.0s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.0s
Search-1-StateSpace.ipynb ✅ SUCCESS 3.9s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.8s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 20.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

No new degraded-mode confessions in modified notebooks (vs merge-base). Inherited confessions are tolerated by design (frozen-inheritance).

Detector: python scripts/notebook_tools/detect_degraded_mode.py <nb> --base <merge-base> --check
Rationale: #11754 / #11443 (860 KB lost while all structural gates stayed green).

@github-actions

Copy link
Copy Markdown
Contributor

✅ No fragmented stream outputs detected.

See python scripts/notebook_tools/check_outputs_text_fragmentation.py --help for re-running locally.
Detector rationale: c.354-L2 ★★, PR #11664.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

c.415 (#11873): scope = notebooks CHANGED in this PR, not the whole corpus.
See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 pathologie.

@github-actions github-actions Bot added pedagogy-density-below-threshold A modified notebook measures below the 1200 chars-of-prose-per-code-cell floor (#10479) machine-dep-timing-delta: 0 (1 files) labels Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

machine-dep-timing-delta: 0 (1 files) pedagogy-density-below-threshold A modified notebook measures below the 1200 chars-of-prose-per-code-cell floor (#10479)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant