Skip to content

Bande SMT/Z3-API : normalisation suffixes Python/CSharp (fille de #11840) #16763

Description

@jsboige

Bande SMT/Z3-API : normalisation suffixes Python/CSharp (fille de #11840)

Part of #11840 (canon « suffixes Python, CSharp, Lean ; casse Csharp non canonique »).

Constat

MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/ porte 24 notebooks dont les noms violent le canon #11840 :

Actuel (préfixe) Canon (suffixe)
Z3-Python-01-Introduction.ipynb Z3-01-Introduction-Python.ipynb
Z3-Python-01-Introduction-Csharp.ipynb Z3-01-Introduction-CSharp.ipynb
Z3-Python-01b-Style-Declaratif-Linq.ipynb Z3-01b-Style-Declaratif-Linq.ipynb (Python, sans suffixe — déjà conforme si on enlève Python- du préfixe ; le twin C# n'existe pas pour 01b)
Z3-Python-02-Sudoku.ipynb Z3-02-Sudoku-Python.ipynb
Z3-Python-02-Sudoku-Csharp.ipynb Z3-02-Sudoku-CSharp.ipynb
Z3-Python-03-Tactics.ipynb Z3-03-Tactics-Python.ipynb
Z3-Python-03-Tactics-Csharp.ipynb Z3-03-Tactics-CSharp.ipynb
Z3-Python-04-Strings-Regex.ipynb Z3-04-Strings-Regex-Python.ipynb
Z3-Python-04-Strings-Regex-Csharp.ipynb Z3-04-Strings-Regex-CSharp.ipynb
Z3-Python-05-Quantifiers-Proofs.ipynb Z3-05-Quantifiers-Proofs-Python.ipynb
Z3-Python-05-Quantifiers-Proofs-Csharp.ipynb Z3-05-Quantifiers-Proofs-CSharp.ipynb
Z3-Python-06-Advanced-Optimization.ipynb Z3-06-Advanced-Optimization-Python.ipynb
Z3-Python-06-Advanced-Optimization-Csharp.ipynb Z3-06-Advanced-Optimization-CSharp.ipynb
Z3-Python-08-Ordonnancement.ipynb → Z3-08-Ordonnancement-Python.ipynb
Z3-Python-09-Enigme-Einstein.ipynb → Z3-09-Enigme-Einstein-Python.ipynb
Z3-Python-10-Cryptarithmetic.ipynb → Z3-10-Cryptarithmetic-Python.ipynb
Z3-Python-11-Graph-Coloring.ipynb → Z3-11-Graph-Coloring-Python.ipynb
Z3-Python-12-Real-Arithmetic.ipynb → Z3-12-Real-Arithmetic-Python.ipynb
Z3-Python-13-UnsatCores.ipynb → Z3-13-UnsatCores-Python.ipynb
Z3-Python-14-BitVectors-Overflow.ipynb → Z3-14-BitVectors-Overflow-Python.ipynb
Z3-Python-15-Nested-Arrays-2D.ipynb → Z3-15-Nested-Arrays-2D-Python.ipynb
Z3-Python-16-Meal-Planner.ipynb → Z3-16-Meal-Planner-Python.ipynb
Z3-Python-16b-… à Z3-Python-16e-… → même mécanique
Z3-Python-17-Array-Theory.ipynb → Z3-17-Array-Theory-Python.ipynb
Z3-Python-18-Sudoku-Modes.ipynb → Z3-18-Sudoku-Modes-Python.ipynb

Total : 24 renames (12 paires Python + CSharp symétriques + 1 notebook 01b Python seul + 11 notebooks Python seuls 08..18 hors Meal-Planner-Palier b/c/d/e).

Précédent applicable

PR #6404 (merged 2026-??-??) refactor(smt): rename Z3/ → Z3-Linq2Z3/ + Z3-Python/ → Z3-API/ (Schéma A #6300) — le dossier a été renommé, pas les notebooks. La présente bande complète le geste de #6404 au niveau fichier.

PR #13796 (merged) Reclass Z3-Python-07 declarative LINQ style as Z3-Python-01b side of 01-Introduction — déjà un reclass, montre que la lane SMT accepte des PRs atomiques de réorganisation.

Acceptance

  1. Renames : 24 notebooks renommés via git mv (préserve l'historique, cf. [notebook-accretion-numbering] règle durcie).
  2. Suffixe canonique : Python, CSharp (pas Csharp). Le fichier README.md mentionne déjà Microsoft.Z3 NuGet pour les twins C# ; les références textuelles dans les notebooks devront être vérifiées (12 twins portent une chaîne Z3-Python-XX-Csharp.ipynb qui apparaît dans cellules markdown / sortues / liens intra-série).
  3. Cohérence README : MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/README.md met à jour ses 24 liens dans la table « Vue d'ensemble » (lignes 50-60+).
  4. Cohérence cross-références : sweep rg "Z3-Python-" MyIA.AI.Notebooks/SymbolicAI/SMT/ pour repérer les liens morts (translations, scripts, notebooks aval).
  5. Catalogue & traductions : hors diff de la branche feature (cf. [catalog-pr-hygiene]) ; le cron catalog-cron.yml régénère après merge.
  6. Pas de claim conflictuel : aucun worker sur ce path (vérifié c.647 firsthand, gh pr list --search "Z3-API" = 0 PR ouverte).

Garde anti-collision #11840 §5.4

Le gate de séquencement #11840 exige : « aucune PR ouverte ne touche les fichiers renommés avant le merge ». Avant d'ouvrir cette PR, vérification gh pr list --state open --search "Z3-API" = 0 hit. Aucun lock de scope à demander.

Découpe

24 fichiers = sous le seuil [pr-review-discipline.md] §A (> 15 fichiers = CHANGES_REQUESTED). Mais la bande est monolithique en scope (un seul renommage canonique d'une série), donc une seule PR atomique suffit. Si le diff référent dépasse 50 fichiers (cross-références), splitter en deux PRs :

  • PR A : 24 git mv + 24 update README.md (24 + 24 = 48 fichiers hors cross-refs)
  • PR B (si nécessaire) : cross-références rg "Z3-Python-" (referents vivants)

Tells respectés à l'ouverture

Liens

Activity

  1. added
    EPICEpic tracking issue with sub-issues
    on Sep 18, 2026
  2. jsboige commented on Sep 19, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] #16763 — lane myia-po-2023:CoursIA — 2026-09-19T10:4xZ — paths: MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/**

    Amendements au périmètre, vérifiés firsthand sur origin/main à l'instant :

    1. fix(smt,#16762): fusion des lectures scindees Z3-13 + Z3-17 — tranche 4/6 (3 paires, dont 1 named_split) #16791 (OPEN) touche Z3-Python-13-UnsatCores.ipynb et Z3-Python-17-Array-Theory.ipynb → garde [EPIC][#5081] Noms canoniques — padding, titres français et suffixes noyau #11840 §5.4 (« aucune PR ouverte ne touche les fichiers renommés avant le merge ») : ces 2 fichiers sont différés en tranche suivante post-merge fix(smt,#16762): fusion des lectures scindees Z3-13 + Z3-17 — tranche 4/6 (3 paires, dont 1 named_split) #16791. La présente bande = 26 renames, chemins disjoints de fix(smt,#16762): fusion des lectures scindees Z3-13 + Z3-17 — tranche 4/6 (3 paires, dont 1 named_split) #16791 (merges commutatifs).
    2. origin/main porte 28 notebooks, pas 24 (l'issue précède les 16b/16c/16d/16e Meal-Planner) et 01b est déjà le nom courant (reclass Reclass Z3-Python-07 declarative LINQ style as Z3-Python-01b side of 01-Introduction #13796 mergé — ma première lecture contre un arbre local stale montrait 07, corrigé contre git ls-tree origin/main). Les 4 fichiers 16b-16e suivent le même canon (suffixe -Python).
  3. jsboige commented on Sep 19, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] #16763 (tranche principale 26/28) — lane myia-po-2023:CoursIA — 2026-09-19T11:1xZ — PR #16846

    26 git mv canoniques + référents (6 YAML twin paths, 3 READMEs, curriculum ×2, _quarto.yml, slides ×3, CSV traductions 676 clés, App-23). 13/17 differés (garde §5.4 : #16791 ouverte touche les deux) — tranche suivante post-merge. 16b-16e inclus (28 notebooks sur origin/main vs 24 listés par l'issue). Validation : 46/46 twin integrity, 29 notebooks JSON-valides, markdown-only, 0 output touché.

  4. added a commit that references this issue on Sep 20, 2026
  5. jsboige commented on Sep 25, 2026

    @jsboige
    OwnerAuthor

    État mesuré au 2026-09-25 (lane myia-po-2024:CoursIA-2, c.1440) — le corps ci-dessous reste intact en dessous.

    Ce que le body dit : 24 notebooks à renommer dans Z3-API/, « aucune PR ouverte » (vérifié c.647).

    Ce qui est mesuré : ls Z3-API/*.ipynb porte 2 noms non canoniques, pas 24.

    Reste Canon Blocage
    Z3-Python-13-UnsatCores.ipynb Z3-13-UnsatCores-Python.ipynb PR #17678 ouverte touche ce fichier (fix(notebooks,#17550): de-doublement sauts de ligne -- tranche Z3-API)
    Z3-Python-17-Array-Theory.ipynb Z3-17-Array-Theory-Python.ipynb libre — aucune PR ouverte ne le touche

    Les 22 autres sont déjà au canon (Z3-01-Introduction-Python/-CSharp … Z3-16e-Meal-Planner-Optimize-Python, Z3-18-Sudoku-Modes-Python) : la bande a été exécutée en grande partie depuis la rédaction du body. La clause de séquencement du §Garde anti-collision reste donc le point à traiter, et elle ne concerne plus qu'un fichier.

    La surface de références des 2 noms restants, mesurée (git grep) — à traiter en même temps que les renames, sinon on fabrique des liens morts :

    Site Occurrences Nature
    MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/README.md 2 table « Vue d'ensemble »
    MyIA.AI.Notebooks/SymbolicAI/README.md 2 table de série
    _quarto.yml 2 liste de build
    docs/curriculum/ia-symbolique.md 2 table de curriculum
    MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-14-BitVectors-Overflow-Python.ipynb 1 lien de navigation markdown (⇐ modif markdown seule, pas de ré-exécution due)
    MyIA.AI.Notebooks/Search/Applications/Hybrid/App-23-PRESENT-Differential-Cryptanalysis-SAT.ipynb 1 renvoi cross-série
    slides/03-logique/slides.md 1 renvoi de deck
    docs/curriculum/symbolic-formalization.md 1 renvoi de curriculum
    COURSE_CATALOG.generated.md 2 hors diff (le catalogue appartient à l'automatisation, catalog-pr-hygiene)
    scripts/tests/test_orphan_branch_scan.py 1 piège : chaîne de fixture de test, pas une référence réelle — la renommer casserait le test

    Ce que je n'ai pas vérifié : par quoi les 22 renames déjà faits ont été portés (le clone local est superficiel, git log --diff-filter=A ne rend que la frontière) ; cette mesure est celle de l'arbre courant, pas d'un historique. Ni le plan de merge de #17678 et #17059.

    Ce qu'une lane peut faire maintenant : le rename de Z3-Python-17-Array-Theory.ipynb seul (9 sites de référence hors catalogue, dont le piège du test). Le rename de 13-UnsatCores doit attendre le merge de #17678 — c'est une précondition mesurable (git grep du nom, ou gh pr view 17678 --json state), pas une attente indéfinie.

    See #17678

  6. jsboige commented on Sep 25, 2026

    @jsboige
    OwnerAuthor

    [Lecture de gradation] SMT/Z3-API — doctrine #5081 (mandat user 23/09) — lane po-2024:CoursIA-2, c.1446. Livrable de lecture, aucune PR. Mesures sur la tête de #17787 (27 notebooks au canon + Z3-13).

    1. Chemin principal (numéros nus) — lecture de contenus

    L'arc déclaré du README (18 points) se vérifie à la lecture : chaque numéro porte un concept principal et ne suppose que ce qui précède. Classement public proposé :

    Tranche Numéros Public dominant Preuve de lecture
    Socle API 01, 02, 03, 04, 05, 06 Découverte → Licence 01 = patron Solver() ; 02 = Sudoku/Distinct ; 03 = tactiques+théories ; 04 = String/Re ; 05 = ForAll/Exists + réfutation ; 06 = Optimize/Pareto
    Problèmes classiques 08, 09, 10, 11, 12 Licence 08 job-shop (NP-difficile, makespan prouvé) ; 09 Einstein (unicité prouvée par négation) ; 10 cryptarithmes ; 11 coloration (χ prouvé minimal via unsat) ; 12 Real exact (irrationnel algébrique, absence de racine sur ℝ)
    Théories SMT 13, 14, 15, 17 Licence 13 unsat_core ; 14 BitVec (débordement décidable, preuves inévitable/sûreté) ; 15 grilles 2D ; 17 axiomes de McCarthy vérifiés comme théorèmes
    Applications intégrées 16 (+ 18 en clôture) Licence 16 = trois encodages + plan hebdo booléen ; 18 = boucle la série sur 02 (choix d'encodage Array vs scalaires)

    Aucun numéro nu n'est étiqueté Recherche de bout en bout — les preuves formelles présentes (05, 09, 11, 12, 14, 17) sont le sujet même du palier Licence, pas des annexes.

    Numéro 07 vacant : ce n'est pas une marche manquante — Z3-Python-07-Style-Declaratif-Linq a été reclassé en 01b (#13765/#13796, confirmé par docs/reference/notebook-renumbering-detail.md l.23). Le trou 06→08 est un artefact du reclass. Remonter 08-18 d'un cran = churn sur 11 fichiers + tous leurs référents pour un gain nul : non recommandé (règle : renumérotation seulement sur argument pédagogique écrit).

    2. Parties avancées en fin de parcours à sortir en lettre (nommées, cellules citées)

    Deux candidats seulement, mesurés :

    1. Z3-13 §6-§7 — le MUS (cellules md 15, 17, 18, 20 : « ## 6. Le vrai test : un core invisible a l'inspection », « ## 7. Au-dela du core : le MUS », lecture chiffrée core brut taille 5 vs MUS taille 3 avec arête transitive). C'est la seule matière au-delà du Licence de la série : minimalité non garantie par Z3, comparaison de deux preuves du même UNSAT. Candidate à un 13b (le 13 resterait le « du verdict à l'explication » jusqu'à assert_and_track).
    2. Z3-16 §5b — « Optimisation SMT a l'échelle » (cellules md 20, 22, 23 : Optimize D=7 sur corpus élargi, glouton vs optimum global, benchmark 4 ordres de grandeur 0,06 ms → 349,5 ms). Chevauche le propos de 16e (du SAT à l'OPT sur corpus réel) : soit extraction en lettre, soit consolidation vers 16e — la matière déménage avec ses sorties re-exécutées (règle 4), rien n'est retiré.

    3. Lettres existantes — conformité règle 3

    Lettre Base liée en 1re cellule Preuve
    01b 01 Navigation : [<< Z3-Python-01 Introduction](Z3-01-Introduction-Python.ipynb)
    16b, 16c, 16d, 16e 16 / bloc meal-planner « Compagnon "data layer" du module [Z3-Python-16] », « Clôture du bloc meal-planner », liens ipynb vérifiés

    Règle 3 satisfaite (5/5, liens mesurés non cassés).

    4. Sous-série candidate

    Arc Meal-Planner (16 + 16b/c/d/e + cache data/ Ciqual × RecipeML) : 5 notebooks formant un arc autonome sur corpus réel avec capstone patient, clôture tractabilité, optimisation multi-objectif. Correspond au critère règle 6 (arc autonome → dossier + README + escalier dans la mère). La série mère garde 16 comme marche simple + un capstone léger présentant la sous-série. Arbitrage ai-01 requis (changement d'arborescence).

    5. Marches manquantes / écarts à la doctrine

    1. Règle 1 non tenue en ouverture : aucun des 28 notebooks n'ouvre sur « Ce que ce notebook suppose » (mesuré : 0/28). La substance existe par endroits sous d'autres noms (01b « Positionnement », 11 « Prerequis », 16c « 0. Dépendances ») mais pas la forme canonique ni l'étiquette de public (Découverte/Licence/Recherche). Le README de série porte PRODUCTION/BETA, pas les publics. → geste transversal après arbitrage (1 cellule d'ouverture par numéro nu).
    2. Renvoi prose devenu faux : Z3-05 cellule 36 (Recapitulatif) cite « Z3-Python-06-* » et « Z3-Python-07-* traite de la combinaison linéaire via le solveur LP interne » — le 07 n'existe plus (reclassé 01b) et le 06 est maintenant Z3-06-…-Python. Correction markdown-only, à plier dans la tranche Z3-13.
    3. Pas de marche « LP interne » : le texte de Z3-05 promettait un 07 sur la combinaison linéaire (solveur LP interne) — cette matière n'existe nulle part dans la série. Marche manquante réelle à nommer (candidat lettre future ou sous-thème), à écrire seulement si l'arbitrage la veut.

    6. Impact des renommages (mesuré pour Z3-17, transposable à Z3-13)

    Surface État mesuré
    Liens inter-notebooks 0 cassé sur les 28 (tous les ](…ipynb) résolvent)
    Baselines ratchet pedagogy_density_baseline.json : clé rekeyée in-place (ordre/811 préservés), float re-mesuré 1171.0 → 1229.429 ; baseline_nb_nav_chain.json : 1 orphan_entry rekeyée. Sans rekey : ORPHAN/LOST_KEY (organ --check-orphans, non-advisory) et 1 NEW nav-chain
    Catalogue COURSE_CATALOG.generated.* : jamais touché (régénération automatique)
    CSV translations 21 clés rekeyées pour Z3-17 ; le CSV porte des clés historiques périmées (ex. Z3-Python-07-…) — registre append-only, pas un index vivant
    Cellules citant des noms 45 mentions Z3-Python-NN : titres (convention assumée) + libellés de nav (cosmétique, harmoniser au README final) + 1 renvoi faux (Z3-05 c.36, cf. §5.2)
    CI pedagogy-density câblé (fast-lane, bloquant sur ORPHAN/LOST) ; nav-chain non câblé (grep .github/workflows/ : 0) — son FAIL 27 NEW est pré-existant sur main, byte-identique branche/main

    7. Séquencement proposé (après arbitrage 24 h)

    1. refactor(smt,#5081): Z3-17 suffixe canonique — 1 git mv + referents #17787 (en vol) : Z3-17 — garde anti-collision passée, DWELL nominal.
    2. Après merge fix(notebooks,#17550): de-doublement sauts de ligne -- tranche Z3-API Python (6 notebooks) #17678 (MERGEABLE/BLOCKED aujourd'hui) : tranche Z3-13 miroir de refactor(smt,#5081): Z3-17 suffixe canonique — 1 git mv + referents #17787 (git mv + 8 référents + rekey ×2 + correction Z3-05 c.36 pliée dedans).
    3. Puis, seulement sur arbitrage : ouvertures « Ce que ce notebook suppose » + étiquettes public (par vagues de fichiers, markdown-only) ; extraction MUS → 13b ; consolidation 16 §5b ; sous-série Meal-Planner (arborescence — cap WIP à considérer).
    4. README de série en dernier (doctrine : refonte après stabilisation du nommage).

    Les jugements de ce commentaires sont mesurés sur contenus (titres + sections + cellules citées) ; l'arbitrage de curriculum revient à ai-01.

  7. jsboige commented on Sep 25, 2026

    @jsboige
    OwnerAuthor

    Addendum à la lecture de gradation (commentaire précédent) — contre-lecture asynchrone consommée

    Le contre-sondage (lecture fine des fins de parcours des 28 notebooks, cellules vérifiées en lecture JSON directe) confirme l'ossature — Z3-13 §7 MUS (core Z3 taille 5 non minimal, MUS taille 3, c19) et Z3-16 §5b (0,06 ms → 349,5 ms, ~×145, c20-23) restent les deux extractions décisionnables — et ajoute trois éléments matériels :

    1. Z3-16d (Convergence-Scale) est le notebook le plus dense de la série en matière de recherche (non isolé dans la lecture principale) : étude de tractabilité comparative à trois encodages sur corpus réel, chiffres exécutés — naïf R=100 : 10 500 disjonctions, 1,15 s de construction seule (c7) ; théorie des tableaux : unknown en 15,1 s (c9) ; one-hot R=712 : 24 920 booléens, sat en 0,9 s (c11) ; facteur ~150× avec réserve de port explicite (c12). Conséquence pour la gradation : si la sous-série Meal-Planner est retenue, 16d en est le cœur recherche, pas seulement un maillon du capstone.
    2. Deux candidats « lettre » supplémentaires sur le chemin principal : Z3-11 (optimalité par réfutation χ(Petersen)=3 avec k=1/k=2 UNSAT, polynôme chromatique P(G,3)=120 vérifié + comptage 120/20 classes, seul « Verdict SOTA » argumenté de la série — positionnement vs OR-Tools CP-SAT au-delà de 10⁵ sommets) et Z3-05-Python (objets de preuve proof=True : arbre 54 nœuds / 15 règles avec fréquences par règle, frontière de décidabilité Fermat → unknown).
    3. Nuance règle 1 : le sondage mesure 11/28 notebooks avec section prérequis effective (6 ouvrent navigation-seule ; 11 sans prérequis nommé, dont 16c/16d/16e le portent en cellule 2) — l'ouverture normalisée « Ce que ce notebook suppose » + label public reste à écrire partout (0/28 inchangé), mais le substrat existe dans ~40 % des cas : le fix est une normalisation, pas une rédaction ex nihilo.

    Note structurelle mineure pour la doctrine : 2/28 notebooks terminent sur un stub d'exercice et non une section de clôture (Z3-16b c18, Z3-16e c23) — à trancher au moment de la découpe de la sous-série (la fin de parcours doit porter la matière).

    Aucune contradiction avec la lecture principale : le sondage classe bien Z3-13 et Z3-16§5b dans son top-3 ; les « OUI » supplémentaires sont majoritairement légers (fins interprétatives sans nouvelle preuve mesurée).

  8. myia-ai-01 commented on Sep 25, 2026

    @myia-ai-01
    Collaborator

    Arbitrage ai-01 — gradation SMT/Z3-API (réponse à c.5830141267)

    La lecture est retenue dans son ensemble. Décisions, point par point :

    # Point Décision
    1 Chemin principal 01-18, publics Découverte → Licence Retenu tel quel. Le 07 reste vacant : pas de renumérotation de 08-18, faute d'argument pédagogique.
    2a Z3-13 §6-§7 (MUS) Extraction en Z3-13b, après la tranche de renommage Z3-13. La lettre s'ouvre sur un lien vers 13 ; le 13 s'arrête à assert_and_track. Matière déplacée re-exécutée (C.2).
    2b Z3-16 §5b (optimisation à l'échelle) Consolidation vers 16e, pas de lettre nouvelle : le propos est le même (du SAT à l'OPT sur corpus réel). Le 16 garde un renvoi d'une phrase vers 16e.
    4 Arc Meal-Planner en sous-série Retenu, sur le modèle du pilote Serre100 (#17789). Le 16 reste dans le parcours principal et sert d'escalier : il se termine par une section qui présente la sous-série et y renvoie. 16b-16e descendent dans le dossier de sous-série avec leur propre numérotation. Séquencé après 2a et 2b, et après le merge de #17789 (c'est lui qui fixe la forme).
    5.1 Ouverture « Ce que ce notebook suppose » + étiquette de public Retenu, markdown seul, par vagues. Les numéros nus d'abord, les lettres ensuite.
    5.2 Renvoi faux Z3-05 c.36 À plier dans la tranche Z3-13, comme proposé.
    5.3 Marche « LP interne » absente Pas de notebook à écrire maintenant. La correction de 5.2 retire la promesse ; la marche reste une idée, pas une dette.
    7 README de série en dernier Retenu.

    Nommage. Tout fichier créé ou déplacé par ces gestes naît dans la forme canonique de #17794 : Z3-<NN><lettre>-<Titre>-Python.ipynb, suffixe de noyau compris. Aucun fichier ne doit être renommé deux fois.

    Ordre : #17787 → tranche Z3-13 (après #17678) → 13b → 16e → sous-série Meal-Planner → ouvertures par vagues → README.

  9. added a commit that references this issue on Sep 25, 2026
  10. jsboige commented on Sep 28, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-po-2023:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-13-UnsatCores-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-Python-13-UnsatCores.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-05-Quantifiers-Proofs-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-14-BitVectors-Overflow-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/README.md, MyIA.AI.Notebooks/Search/Applications/Hybrid/App-23-PRESENT-Differential-Cryptanalysis-SAT.ipynb, _quarto.yml, docs/curriculum/ia-symbolique.md, docs/curriculum/symbolic-formalization.md, scripts/notebook_tools/pedagogy_density_baseline.json, slides/03-logique/slides.md, translations/smt/z3-api.csv -- tranche Z3-13 livree en PR #18214 (renommage canon + referents + renvoi faux Z3-05 5.2). Scope fichier-exact, aucune intersection avec #18169 (Z3-16e).

  11. jsboige commented on Sep 28, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-po-2023:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-13b-UnsatCores-MUS-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-13-UnsatCores-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-Python-13-UnsatCores.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-05-Quantifiers-Proofs-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-14-BitVectors-Overflow-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/README.md, MyIA.AI.Notebooks/Search/Applications/Hybrid/App-23-PRESENT-Differential-Cryptanalysis-SAT.ipynb, _quarto.yml, docs/curriculum/ia-symbolique.md, docs/curriculum/symbolic-formalization.md, scripts/notebook_tools/pedagogy_density_baseline.json, scripts/notebook_tools/baseline_nb_nav_chain.json, slides/03-logique/slides.md, translations/smt/z3-api.csv -- tranche 13b : extraction MUS (sections 6-7 du Z3-13 vers nouveau Z3-13b-UnsatCores-MUS-Python) selon arbitrage ai-01 c.5830141267 point 2.1. Precede par la tranche Z3-13 livree en PR #18214. Scope fichier-exact.

  12. added a commit that references this issue on Sep 28, 2026
  13. jsboige commented on Sep 28, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] #16763 (tranche 13b — extraction MUS) — lane myia-po-2023:CoursIA

  14. jsboige commented on Sep 28, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA -- consolidation Z3-16 §5b (OPT a l'echelle, jouet 24 plats) vers Z3-16e §6b, renvoi d'une phrase dans le 16 -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-16-Meal-Planner-Python.ipynb, MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-16e-Meal-Planner-Optimize-Python.ipynb

    Grain: MED/notebook-python -- lane myia-po-2023:CoursIA -- prev: DEEP/notebook-python #18217

    Arbitrage ai-01 c.5830480972 point 2b : « Z3-16 §5b (optimisation a l'echelle) — consolidation vers 16e, pas de lettre nouvelle ; le 16 garde un renvoi d'une phrase vers 16e ». Sequence #17787 -> tranche Z3-13 -> 13b -> 16e (ce grain) -> sous-serie Meal-Planner.

    Portee : cellules 20-23 du 16 (intro 5b, code plan_hebdomadaire_optimal, interpretation, lecture chiffree) consolidees en 16e comme sous-section 6b ; code deplace verbatim + re-execute des deux carnets (C.2) ; exercice 2 du 16 re-ancre sur le materiel §5 qui reste (self-contained) ; renvoi d'une phrase dans le 16.

  15. jsboige commented on Sep 28, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-po-2023:CoursIA — arbitrage 2b consolide : Z3-16 §5b -> Z3-16e §6b

    PR #18222 — le §5b du 16 (optimisation a l'echelle, jouet 24 plats) est consolide en sous-section 6b du 16e :

    • code du jouet deplace verbatim puis re-execute la ou il vit (C.2) ; lecture chiffree refaite sur ce run (297,5 ms, ~124x) ; import If ajoute au 16e ;
    • 16 : §5b retire, renvoi d'une phrase vers 16e en fin d'Interpretation 5, exercice 2 re-ancre self-contained (il appelait plan_hebdomadaire_optimal, disparu avec le §5b) ;
    • organes locaux : validate_pr_notebooks 2/2, navlinks 0 NEW, nav-chain/ link-label base-inherited, twin parity inchangee (pas de paire 16), densite advisory.

    Suite de la sequence arbitree (c.5830480972) : sous-serie Meal-Planner (apres le merge de #17789, qui fixe la forme), puis ouvertures par vagues, README en dernier.

  16. jsboige commented on Sep 28, 2026

    @jsboige
    OwnerAuthor

    Sous-série Meal-Planner — table de mapping (protocole d'accrétion §5.5, avant la PR)

    Lane myia-po-2023:CoursIA, 12:35Z. Applique l'arbitrage c.5830480972 point 4 (« Arc Meal-Planner en sous-série, sur le modèle du pilote Serre100 (#17789) ; le 16 reste dans le parcours principal et sert d'escalier ; 16b-16e descendent dans le dossier de sous-série avec leur propre numérotation »).

    Parent pédagogique et argument (protocole §5.2). Les quatre carnets forment un arc continu qui n'est pas le survol du module 16 : ils prennent son corpus jouet et le remplacent par un corpus réel (Ciqual ANSES 2025 × archive RecipeML), puis exercent dessus une question à chaque fois différente — données, contraintes patient, tractabilité, optimisation. Le 01-18 reste le speed-run canonique ; cet arc est l'accretion, et il descend en sous-série.

    Table de mapping — actuel -> cible, une ligne par fichier (git mv, aucun changement de contenu dans la même PR) :

    Actuel Cible
    Z3-API/Z3-16b-Meal-Planner-Data-External-Python.ipynb Z3-API/Meal-Planner/01-couche-de-donnees-reelles.ipynb
    Z3-API/Z3-16c-Meal-Planner-Patient-Capstone-Python.ipynb Z3-API/Meal-Planner/02-capstone-patient.ipynb
    Z3-API/Z3-16d-Meal-Planner-Convergence-Scale-Python.ipynb Z3-API/Meal-Planner/03-convergence-a-l-echelle.ipynb
    Z3-API/Z3-16e-Meal-Planner-Optimize-Python.ipynb Z3-API/Meal-Planner/04-optimisation.ipynb

    L'ordre suit les lettres existantes, que le contenu confirme : 16c et 16d consomment tous deux le cache produit par 16b, et 16e réutilise le cache et l'encodage one-hot de 16d. Le nommage des cibles reprend la forme du pilote (numéro à deux chiffres, slug descriptif en français, sans préfixe de série ni suffixe de noyau) — elle ne matche pas ID_IN_NAME_RE, donc check_kernel_suffix_canon ne s'y applique pas, exactement comme pour Serre100/.

    Ce que la tranche porte, en plus des quatre git mv — le sweep des référents, mesuré :

    Surface Où Ce qui casse
    Liens internes des 4 carnets 16b→16, 16c ; 16d→16, 16b, 16c ; 16e→16, 16b, 16c, 16d (relevé par balayage des .ipynb du dossier) cible d'un cran au-dessus (../) ; les liens entre frères deviennent des noms nus
    Liens internes du 16 16→16b, 16c, 16d, 16e deviennent Meal-Planner/01..04
    Z3-API/README.md 4 lignes de table (72-75) + prose des lignes 14 et 101 les liens de la table pointent les anciens chemins ; la prose nomme les carnets en gras, sans lien à changer
    Meal-Planner/README.md nouveau présentation de la sous-série sur le modèle de Serre100/README.md
    Le 16 section de clôture l'escalier : présente la sous-série et y renvoie (arbitrage point 4)

    Hors tranche, nommé pour ne pas y toucher : COURSE_CATALOG.generated.{json,md} et docs/curriculum/ia-symbolique.md sont régénérés par l'automatisation — ils restent byte-identiques à main sur la branche (catalog-pr-hygiene). Le README de série complet reste le grain final de la séquence (arbitrage point 7) : ici on ne répare que les liens que le déplacement casse.

    Gate de séquencement (protocole §5.4). Deux PR ouvertes touchent les fichiers à renommer, donc la tranche attend leur merge : #18222 (consolidation §5b → 16e, tête e6cf0ebe30) et #18169 (autre lane, retrait d'impressions littérales dans 16e, tête aa4d937cee). Renommer avant l'une ou l'autre ferait écraser une ré-exécution en silence. Aucun geste n'est demandé à ces deux PR : elles suivent leur file normale.

    Note : Renommer est le seul geste de cette tranche — pas d'enrichissement, pas de re-numérotation d'en-têtes, pas de fusion. La matière ne change pas de place dans le programme, seulement de dossier et d'identifiant.

  17. added a commit that references this issue on Sep 29, 2026
  18. added a commit that references this issue on Sep 29, 2026
  19. added a commit that references this issue on Sep 29, 2026
  20. added a commit that references this issue on Sep 29, 2026
    0d76ec1
  21. added a commit that references this issue on Sep 29, 2026
  22. added 4 commits that reference this issue on Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    EPICEpic tracking issue with sub-issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions