Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions scripts/notebook_tools/twin_pairs.d/app-34-15-puzzle.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
bridge_verdict: SOTA-OK
bridge_verdict_reason: "Le 15-puzzle et l'A* admissible sont reconstruits from-scratch des deux cotes : Python en numpy autonome (pas d'ortools, pas de deap) sur des etats tuples immuables, C# en BCL pure 0 NuGet avec l'etat encode en 4 bits par case dans un `ulong`. Aucun moteur SOTA partage n'est invoque ni invocable a la place des deux implementations : le sujet pedagogique EST l'ecriture de la recherche informee, pas l'appel a un solveur. Les DEUX jumeaux couvrent les memes cinq sections (espace d'etats, invariant de parite des inversions, Manhattan et linear conflict, mesure noeuds x longueur contre glouton, trois exercices) avec les MÊMES trois exercices. Verdict SOTA-OK : le from-scratch est la contrepartie attendue (bucket 3 de #10382), et l'asymetrie de representation de l'etat (tuples Python vs `ulong` C#) est un idiome de langage, pas une asymetrie de couverture moteur."
known_differences:
- "Audit de parite 2026-11-03 (myia-ai-01:CoursIA-2, #23020) : derive cote C# SEUL, cote Python byte-identique a main. Mesure contre le blob enregistre : 18 cellules -> 18 cellules, 9 cellules markdown modifiees, **identiques aux accents pres** (comparaison NFD sans diacritiques : egalite stricte, 3369 mots avant et apres), 0 cellule de code et 0 sortie touchee. Cause unique : #23268 (accentuation complete du markdown des trois carnets Part3). Correction typographique pure : la lecture des deux cotes est inchangee, aucun nombre en jeu. Attestation (le blob SHA se deplace), pas reparation."
- "Representation de l'etat : Python = tuples immuables hachables (idiome collections/typing) ; C# = encodage 4 bits par case dans un `ulong` (idiome BCL, pas de dependance). Meme espace d'etats (S, s0, A, T, G), meme definition des successeurs."
- "Le carnet C# declare expliciter l'encodage en `ulong` comme motif de performance BCL ; le carnet Python s'appuie sur les tuples et laisse numpy porter les mesures. Aucun des deux n'introduit de bibliotheque de recherche."
- "Le carnet Python porte l'expose de mesure le plus detaille (diagramme noeuds x profondeur, echelle log) ; le C# reste compact et renvoie au carnet Python pour le protocole experimental, dont il reproduit les sections."
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
date: '2026-11-03'
by: myia-ai-01:CoursIA-2
python_sha: cdcb708bdc85a12ceb27c07c795c783273be5596
csharp_sha: 5525ccd8d385c1fa35457cec9de0d67c2a118ef6
content_python_sha: 507e4cca216c9b4f17571800af8d023fbf3c9229028c06dcec16b1a80530d4c5
content_csharp_sha: 5b53cd3bc37522fe600f7aad7bb58747f5b3a4d47004666d0b76d302ac34e863
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
bridge_verdict: SOTA-OK
bridge_verdict_reason: "Python = `ortools` PyPI (Google, Apache-2.0, CP-SAT solver SOTA-tier specialise Job-Shop : `from ortools.sat.python import cp_model` + `CpModel()` + variables job_op[j][o] interval + `AddNoOverlap` pour machines + precedence constraints job interne + `solver.Solve()` pour makespan minimisation). C# = `Google.OrTools` NuGet (Google, Apache-2.0, meme solver CP-SAT natif : `#r \"nuget: Google.OrTools\"` + `using Google.OrTools.Sat;` + `CpModel()` + `AddNoOverlap2D` + precedence arc constraints + `solver.Solve()`). Verdict SOTA-OK (modele owner PR #10400 MERGED 2026-08-11 tranche 2 lib-vs-lib) : les DEUX cotes utilisent LE MEME solveur Google OR-Tools CP-SAT natif, le module CP-SAT a une specialisation Job-Shop documentee (interval variables + no-overlap), parite directe sur le makespan optimise. Substantive : meme moteur, meme modelisation, meme sortie (permutation schedule par machine)."
known_differences:
- "Audit de parite 2026-11-03 (myia-ai-01:CoursIA-2, #23020) : derive cote PYTHON SEUL, cote C# byte-identique a main. Mesure contre le blob enregistre : 69 -> 72 cellules, +3 cellules markdown d interpretation inserees et 11 cellules markdown transformees en Interpretation (le texte d introduction d origine est conserve en fin de cellule), 0 cellule de code et 0 sortie modifiee. Cause unique : #23317 (lectures ancrees, redressement #17040, markdown-only). Ecart nomme : le jumeau Python porte une couche d interpretation que le jumeau C# ne porte pas -- asymetrie pedagogique de contenu, sans contradiction : aucun nombre retire cote Python n est cite par le jumeau C#. Attestation (le blob SHA se deplace), pas reparation."
- "Bibliotheque vs from-scratch puis lib-vs-lib : Python invoque OR-Tools CP-SAT (IntervalVar + AddNoOverlap + Minimize makespan) comme solveur SOTA. C# = deux tranches -- Tranche 1 (sections 3-4) reimplementation from-scratch pedagogique (5 regles de dispatching glouton + branch-and-bound, en BCL pure System.* 0 NuGet) PRESERVEE integralement ; Tranche 2 (PR #10382 cycle 14) ajoute Google.OrTools 9.15 (.NET natif, deja en service dans Sudoku-10/18, App-8, App-15b, App-1, App-3) avec le MEME modele canonique CP-SAT que le Python (IntervalVar par operation, precedence end<=start entre operations d'un job, AddNoOverlap par machine, AddMaxEquality+Minimize makespan) sur la MEME instance ft03 (3 jobs x 3 machines). parite verifiee : status=Optimal, makespan=11 (= Python OPTIMAL 11 ; LB=10, le moteur prouve l'optimum global). parity_level=native-both (Python/ortools ET C#/Google.OrTools atteignent chacun le moteur de production CP-SAT de leur ecosysteme)."
- "Asymetrie de couverture : Python (visualisation matplotlib gantt + experimentation a grande echelle avec courbe de convergence CP-SAT + search_helpers) ; C# (25 cellules : heuristiques from-scratch Tranche 1 + pont CP-SAT Tranche 2 + 3 exercices + visualisation ASCII). La visualisation matplotlib et le benchmark a grande echelle restent propres au Python ; la parite porte sur le solveur SOTA (CP-SAT) et le socle theorique (IntervalVar + NoOverlap + makespan)."
- "Idiomes framework : Python = OR-Tools CP-SAT (cp_model.CpModel, model.NewIntervalVar, model.AddNoOverlap, model.Minimize) ; C# = Google.OrTools.Sat (CpModel, model.NewIntervalVar, model.AddNoOverlap, model.AddMaxEquality, model.Minimize) + from-scratch System.*. Meme socle theorique (Job-Shop Scheduling, intervalles, precedence, non-chevauchement machine, makespan). Le C# valorise la reimplementation pedagogique (Tranche 1) ET l'invocation du moteur SOTA (Tranche 2) -- les intervalles etant la brique CP-SAT que les N-Reines (App-1) et le Nurse-Rostering (App-3) en booléens n'exercent pas."
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
date: '2026-11-03'
by: myia-ai-01:CoursIA-2
python_sha: b379f85e1210ade202baa09d0a89632517dea701
csharp_sha: 5c6577f4b8a3633fae0165f3c19035254bee00b4
content_python_sha: 26472593ff973214d52d8204ae3b269055ec1cade75140af486839a6586b047e
content_csharp_sha: 35ea7b33815e92794b4a72e9703a6e6b8685dd9457b722bbe6609ee901bca781
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
bridge_verdict: SOTA-OK
bridge_verdict_reason: 'Les DEUX jumeaux atteignent le meme moteur de production Choco (parite lib-vs-lib stricte, mandat owner #10382 ''lib vs lib c''est encore mieux''). C# = Choco-solver 4.10.17 (Java, Apache-2.0) via IKVM 8.15.0 home shade DLL (recette #4711). Python = pychoco (binding Python officiel de Choco, PyPI MIT), section 6bis ajoutee 2026-08-19 (#10382) : les trois demonstrations du jumeau C# sont rejouees avec le meme modele (IntVar par etat 0..2 + arithm ''!='' pour l''Australie ; boucle solve() pour l''enumeration ; all_different + scalar/arithm diagonales pour les 8-Reines). Convergence mesuree : enumeration Australie = 18 solutions des deux cotes ; solutions valides sur les memes instances. Socle pedagogique from-scratch (classe CSP, backtracking, MRV, LCV) conserve intact des deux cotes ; python-constraint reste en section 6 cote Python comme moteur leger avant le pont industriel. Visualisation : Python = matplotlib, C# = rendu ASCII (inchange).'
known_differences:
- "Audit de parite 2026-11-03 (myia-ai-01:CoursIA-2, #23020) : derive cote C# SEUL, cote Python byte-identique a main. Mesure contre le blob enregistre : 50 cellules -> 50 cellules, 1 seule cellule markdown modifiee (cellule 0), ajout de 2 lignes de navigation : **Serie .NET** : [Index](../README.md) | [CSP-2-Consistency-CSharp >>](CSP-2-Consistency-CSharp.ipynb). 0 cellule de code, 0 sortie, 0 execution_count touchee. Cause unique : #23344 (chaine de navigation .NET cablee sur Search/Part2-CSP). Suivi de lien pur : aucun nombre en jeu, aucune divergence de contenu, la lecture des deux cotes est inchangee. Attestation (le blob SHA se deplace), pas reparation."
- "Re-baseline 2026-10-26, 2e attestation (myia-po-2028:CoursIA, #22597 review-fixes post-0029) : deux commits de correction pousses APRES l'attestation 0029 ont deplace le blob python sans nouvelle attestation. (1) ae5002805 : la cellule markdown de lecture du resultat de l'exemple guide est deplacee APRES la cellule code qu'elle interprete (regle cell-interpretation-ordering) ; (2) e8a9541d5 : l'indice de l'exercice 4 X-Sudoku est aligne sur l'enonce (variante deux diagonales), propage dans translations/search-part2.csv (12 lignes). PORTEE VERIFIEE par git show --stat des deux commits : cote Python seul (markdown + squelette d'exercice), cote C# byte-identique, aucun fichier C# touche. Parite semantique inchangee, meme nature d'asymetrie que l'entree #22594 ci-dessous. --update en DERNIERE operation (cf #8957)."
- "2026-10-26 (myia-po-2028:CoursIA, #22594) : EDITION UNILATERALE cote Python seul -- digestion d'un rendu etudiant (regle exercise-example-labeling, cas 1 : la solution rendue devient un exemple guide credite, un exercice neuf prend sa place). PORTEE MESUREE du diff Python (origin/main -> HEAD) : 3 cellules INSEREES apres l'interpretation de l'arbre d'Australie (1 markdown d'intro avec metadata `credited_from = #22594`, 1 cellule code modelisant le Sudoku 4x4 et le resolvant par backtracking avec mesures derivees, 1 markdown de lecture du resultat) et 2 cellules REECRITES en place (ids `fr0whufdu8r` et `suhmqzd7qko` : l'enonce de l'exercice 4 devient la variante X-Sudoku -- deux diagonales -- et son squelette reste un stub C.1 non resolu). Carnet 88 -> 91 cellules, 88/88 ids d'origine conserves. Execution papermill complete apres edition : 34 cellules code, 0 erreur, `check_exec_sequence --check` CLEAN 1..34, `check_c2_compliance` 1/1 conforme, sorties reelles commitees. Cote C# BYTE-IDENTIQUE a main, et il n'y a rien a aligner de son cote : le jumeau C# ne porte aucun materiel Sudoku (verifie par lecture : 50 cellules dont 19 code, exercices 1-3 = 4-Reines manuel, MRV sur 4-Reines, SEND+MORE avec Choco ; la seule occurrence de allDifferent est l'exemple illustratif de la section 6.2). L'ajout est donc une extension asymetrique d'un seul cote, de la meme nature que les asymetries deja declarees ci-dessous (section Choco sans equivalent Python a l'origine, jeux d'exercices differents par cote). Porter cet exercice cote C# exigerait un modele Choco .NET neuf plus une execution dotnet-interactive : grain distinct, hors du perimetre de #22594. Parite SEMANTIQUE inchangee : le socle from-scratch commun (classe CSP, backtracking, MRV, LCV) et les sections Choco des deux cotes sont intacts -- c'est une attestation de l'extension, pas une reparation. --update en DERNIERE operation (cf #8957), strips outilles deja appliques par les hooks pre-commit."
- "2026-10-21 (myia-po-2028:CoursIA, #21770 / tranche 2 #19253) : re-baseline de forme, sans changement de fond. La tranche a aplati `Search/Applications/` en `Search/Part3-Cas-pratiques/` ; ce carnet a suivi mecaniquement pour deux raisons : un lien croise `../Search/Applications/` devenu mort, reancre sur `../Search/Part3-Cas-pratiques/`, et le LF final restaure apres la reecriture JSON. Aucune cellule de code, aucune sortie et aucun enonce ne sont modifies : la divergence entre les deux jumeaux est inchangee."
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
date: '2026-11-03'
by: myia-ai-01:CoursIA-2
python_sha: cfec52792bf502e83d00f892863b866f6c7d1c5d
csharp_sha: 81b9545cae52cfed25c2774c986f3ae2ae004827
content_python_sha: 3b8f258af987483a7aaf213c04b934294104ecef7a9fb704ec912dae1b0affe8
content_csharp_sha: f1ade393c31d3888a88d7ebbc01facc10b00b304a39c88e7345e1f519e72d82a
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
bridge_verdict: SOTA-OK
bridge_verdict_reason: "Python = stdlib + networkx (helper viz graph + heuristic lookup) + heapq (priority queue A*/Greedy/Best-First). Pas de lib SOTA-tier Python pour informed search pure (`aima-python` est jouet non maintained, `pySearch` est un essai), le port pedagogique AIMA ch.4 from-scratch reste canonique. C# = `QuikGraph` NuGet (Pelikan521, MIT-license, lib SOTA graphe .NET : `using QuikGraph;` + `using QuikGraph.Algorithms.ShortestPath;` + `DijkstraShortestPathAlgorithm<TVertex,TEdge>` / `AStarShortestPathAlgorithm<TVertex,TEdge>`, version 2.5.0). Verdict SOTA-OK (modèle owner PR #10412 MERGED pour Sudoku-09 / PR #10387 MERGED pour Search-02b NetworkX) : QuikGraph EST la lib SOTA graphe canonique .NET (Bellman-Ford, Dijkstra, A*, BFS, DFS -- tout y est), l'API `AStarShortestPathAlgorithm` permet un bridge direct A* avec heuristique. Asymetrie documentee : PY from-scratch (algos pedagogiques AIMA), C# bridge via lib SOTA (algo canonique)."
known_differences:
- "Audit de parite 2026-11-03 (myia-ai-01:CoursIA-2, #23020) : derive cote PYTHON SEUL, cote C# byte-identique a main. Mesure contre le blob enregistre : 77 -> 84 cellules, +7 cellules (3 de code, 4 de markdown) formant une section nouvelle 'Le plafond naif : ce que couterait une recherche exhaustive' (#22964 : enumeration de l espace atteignable du taquin 8 -- 181 440 etats --, mise en fraction de l espace retenu par chaque algorithme, extrapolation au taquin 15 -- 10 461 394 944 000 etats, soit 57 657 600 fois le taquin 8), plus 1 cellule markdown de separation ; les 28 cellules de code du carnet sont inchangees et le jumeau C# (35 cellules) est byte-identique. Verification des chiffres : 9!/2 = 181 440 et 16!/2 = 10 461 394 944 000, ratio 57 657 600 exact. Ecart nomme : le jumeau C# ne porte pas cette mesure du plafond exhaustif (il reste centre sur les benchmarks d A* et de la recherche gloutonne) -- **asymetrie pedagogique de contenu, la plus forte des sept** : le Python enseigne une borne de complexite que le C# n enseigne pas. Aucune contradiction : le jumeau C# ne cite ni 181 440, ni 10 461 394 944 000, ni 57 657 600, ni aucun des nombres retires cote Python. Attestation (le blob SHA se deplace), pas reparation ; ecart de contenu signale pour rattrapage du jumeau C#."
- "Audit de parite 2026-10-27 (myia-po-2028:CoursIA-2, #22267) : derive des DEUX cotes, symetrique. Mesure contre les blobs enregistres (python 794968d2 -> 698d9bc9 ; csharp e05d11b0 -> 2bd851b1) : les deux cotes ont ete modifies par le meme commit 951b68d16 (#21740, 2026-10-24, 'Greedy graph-search completude + IDA* mesure la profondeur de pile reelle'), plus les blocs de fin canoniques (#21172 cote Python, #21176 cote C#). Desalignement cellule par cellule (alignement par source, pas par indice brut) : Python 3 sources retirees / 3 ajoutees (classe Node + attributs iterations/max_stack_depth, tableau recapitulatif, mesure IDA*), C# 2 / 2 (maxStackDepth + constructeur) ; differences de sortie : durees d'execution, ordre d'iteration d'un set Python, et le changement de libelle attendu ('Frontiere max' -> 'Profondeur de pile max' + 'Iterations'). Les compteurs affiches par les deux jumeaux (pile de profondeur 3 / 4 iterations en Python, pile de profondeur 4 / 5 iterations en C#) sont ceux de la tranche #21193 deja documentee. Parite de contenu preservee (mise a jour symetrique) : attestation (les blob SHA se deplacent), pas reparation. --update en DERNIERE operation (cf #8957)."
- 'Purge 2026-10-24 (myia-ai-01:CoursIA-2, #22334) : retrait des attestations 0026 a 0029 (toutes du 2026-10-21, lane myia-ai-01:CoursIA-2), qui ne decrivaient aucun etat porte par `main` -- leurs `python_sha` ne sont blob d''aucune revision du carnet, et leurs `content_python_sha` n''egalent le contenu d''aucun commit touchant le fichier (recherche sur tout l''historique du path). Elles rendaient rouges `test_audit_shas_exist_in_file_history`. L''attestation 0025 (2026-10-17, myia-po-2024:CoursIA) redevient la derniere du journal ; etat de parite de la paire inchange (DRIFT cote Python, comme avant la purge).'
- 'Re-baseline 2026-10-17 (myia-po-2024:CoursIA, #19297 -> #21172) : edition unilaterale cote Python seul, MARKDOWN UNIQUEMENT -- blocs de fin canoniques de la finition de serie (#19297) : renommages "### Ce qu''il faut retenir" -> "### A retenir" et "### References" -> "### Pour aller plus loin", insertion "### Verifiez votre comprehension" (4 questions a reponses repliees, tirees des sorties reelles du carnet) et renvoi aux carnets suivants Search-03e / Search-04. Aucune ligne executable touchee, aucun `execution_count` ni sortie modifie ; le cote C# est byte-identique a main (sa re-baseline suit dans #21176 des le merge de celle-ci, meme traitement canonique). Parite semantique inchangee : attestation de parite (le blob SHA du Python se deplace), pas une reparation.'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
date: '2026-11-03'
by: myia-ai-01:CoursIA-2
python_sha: bde4cf18da7a94fb26685dce6dbd548d7613c790
csharp_sha: 2bd851b1f63a6a304524a55461da4568c5b9ca29
content_python_sha: 8b5a8e02c59a0c0b13e3c4f84bdfb6decae10bfa467c4ae9e31aa15f7f041226
content_csharp_sha: c6180817641c73b249354cb414cb83f772eb63cff0053cb3d1a0fa957d60f538
Loading
Loading