Skip to content

renum(Search): fusionner la recherche avancée dans les accrétions et rendre CSP autonome #13769

Description

@jsboige

Fille de #5081 — réévaluation du verdict historique #5667 après les ajouts Search-17/18 et le mandat numéros/lettres du 2026-08-30.

Pourquoi #5667 n'est plus suffisant

Le verdict du 2026-07-07 (« quatre familles, aucune renumérotation ») précédait :

Le dépôt actuel contredit en outre sa navigation : Part3-Advanced/README.md écrit que cette partie prolonge directement Search-3 et « ne relève pas de la Partie 2 », alors que les répertoires et navlinks imposent Part1 → Part2-CSP → Part3.

Verdict d'architecture

Ne pas fusionner tout Search dans un répertoire unique. Réaliser une fusion sélective et remplacer l'ordre linéaire artificiel par des branches thématiques :

  1. Part1-Foundations porte la colonne vertébrale Search et ses accrétions.
  2. Part3-Advanced est absorbé dans cette verticale : ses trois notebooks sont des approfondissements directs de Search-3.
  3. CSP reste une branche autonome (CSP-*) accessible après Search-1/2 ; elle n'est pas le prérequis des heuristiques avancées.
  4. MetaGeneticSharp reste une branche autonome (MGS-*) après Search-4/5/11.
  5. Les numéros d'opportunité 15-18 sont requalifiés en lettres de leur parent conceptuel.

Carte cible

Actuel Cible conceptuelle Geste Justification
Search-12 PatternDatabases Search-03b démotion + fusion de répertoire approfondit A*/IDA* et l'admissibilité de Search-3
Search-13 LimitedDiscrepancySearch Search-03c démotion + fusion de répertoire correction bornée des choix heuristiques de Search-3
Search-14 WeightedAstar Search-03d démotion + fusion de répertoire relâche le contrat d'optimalité d'A*
Lean-18 Search A* Optimality Search-03e relocation + accrétion companion formel de Search-3/search_lean (#13662)
Search-17 SpuriousMinima Search-09b démotion LP → SDP factorisée, minima non convexes : verticale relaxations de Search-9
Search-18 CombinatorialDiscrepancy Search-09c démotion relaxation/arrondi et oracle CP-SAT : même verticale optimisation combinatoire
Search-17 EmpiricalAlgorithmSelection Search-11c démotion prérequis déclarés Search-11/11b, No-Free-Lunch, benchmark/Pareto
Search-15/16 graph libraries verticale Search-02, mapping à auditer démotion/consolidation outils graphes optionnels, pas étapes finales du survol

Le suffixe exact de langage suit #12933 : un concept Python/C# partage numéro et lettre, le suffixe de langage distingue l'implémentation.

Filles atomiques

Séquencement

  1. Attendre/absorber les PR ouvertes qui modifient les notebooks concernés, notamment feat(search,#12703): Search-17 tranche 2 — terrain Puissance 4 (round-robin, Pareto, sweep budget) #13576 et la future livraison feat(search,#13581-followup): Lean-18-Search-AStar-Optimality descend dans Search/Part1-Foundations (search_lean sibling-lake, gap inventaire reconnu) #13662.
  2. Renames de notebooks, un axe conceptuel par PR.
  3. Réécriture des README/navlinks/twins dans chaque PR de rename.
  4. Seulement ensuite, rename des répertoires/neutralisation de Part2/Part4 dans la navigation.

Acceptance commune

  • La lecture des numéros simples Search-01..11 reste un survol complet des paradigmes fondamentaux.
  • Toute lettre nomme un approfondissement sautable et son parent est explicite.
  • Table actuel → cible → parent/prérequis dans chaque PR.
  • Python/C# partagent le même identifiant conceptuel ([EPIC] Renumérotation paritaire des séries parallèles — stabiliser les identifiants sans uniformiser les contenus #12933).
  • Sweep complet des références entrantes, README fichier-entier, _quarto.yml, index.qmd, docs curriculum et twin_pairs.d.
  • Catalogue généré byte-identique sur les branches feature.
  • Rename/markdown seulement : code, outputs et compteurs prouvés byte-identiques ; si une cellule code change, ré-exécution C.2/H.1.
  • Part3-Advanced supprimé uniquement après preuve que chaque notebook et chaque référence ont été préservés dans la cible.

Liens existants complétés

#5081 (doctrine) · #12375 (numéro→lettre) · #12933 (identifiant conceptuel partagé) · #12703 (sélection empirique) · #12823 (discrépance) · #13662 (companion Lean) · #13754 (Connect Four, branche Applications — complémentaire, non chevauchant).

Activity

  1. jsboige commented on Aug 30, 2026

    @jsboige
    OwnerAuthor

    Filles créées

    Issue complémentaire existante : #13754 pour Connect Four dans Applications. Gates actifs : PR #13576 et claim #13662. Aucun rename ne doit partir tant que son chemin est en vol.

  2. myia-ai-01 commented on Aug 30, 2026

    @myia-ai-01
    Collaborator

    [myia-ai-01] 2026-08-30T23:42Z :: ## Arbitrage coordinateur — architecture acceptee, rollout sequence par le calendrier

    Ces cinq issues (#13769-#13773) sont arrivees apres l'arbitrage de lot poste sur #13737 a 23:05Z ; elles n'y sont pas couvertes. Verdict separe, groundé firsthand sur main a 23:42Z.

    Ce que j'ai verifie moi-meme, avant de trancher

    Claim de l'issue Mesure sur main Verdict
    Deux Search-17 coexistent Search-17-Empirical-Algorithm-Selection.ipynb et Search-17-SpuriousMinima.ipynb, tous deux dans Part1-Foundations/ VRAI
    Search-18 est range en Part3 Part3-Advanced/Search-18-CombinatorialDiscrepancy.ipynb VRAI
    Part3-Advanced = 3 notebooks jumeles 6 fichiers (12/13/14 x Python/Csharp) + Search-18 VRAI
    #5667 a conclu « aucune renum » CLOSED, titre porte le verdict VRAI
    #10382 (faux jumeau C#) est ouvert OPEN VRAI
    #13576 bloque le rename d'Empirical OPEN VRAI

    Aucun de ces six points n'est une preference esthetique. Deux notebooks qui portent le meme numero est un defaut, pas un gout de rangement.

    1. Le renversement de #5667 est ACCEPTE

    #5667 date du 2026-07-07. Il precede les deux Search-17, Search-18, la doctrine numeros/lettres de #5081, et la descente proposee de #13662. Un verdict est date de sa redaction, pas de sa lecture : les faits qu'il decrivait ne sont plus ceux du depot. L'architecture cible de #13769 — colonne vertebrale + branches thematiques, CSP et MGS autonomes, numeros d'opportunite requalifies en lettres — est retenue.

    Ce que je n'accepte pas, c'est le groupage : #13769 lie la decision d'architecture au rollout complet des renames. Les deux se dissocient, et c'est le calendrier qui tranche le second.

    2. Le calendrier decide le rollout — nous sommes le 31 aout

    Les cohortes 2027 forkent dans quelques jours. Cela change le cout d'erreur, pas l'envie :

    • Renommer avant le fork et bien : les etudiants forkent un etat propre. Meilleur resultat.
    • Renommer apres le fork : leurs forks portent les anciens chemins, la synchro upstream devient penible. Cout reel, borne.
    • Renommer avant le fork et mal (navlink mort, _quarto.yml desaligne, README pointant dans le vide) : le defaut est copie dans chaque fork, et nous n'avons pas la fenetre pour le rattraper. Cout non borne.

    La surface agregee demandee ici est de ~11 notebooks + 4 repertoires + une mesure initiale de ≥91 lignes de references hors catalogue/traductions. Ce n'est pas verifiable de bout en bout dans les jours restants, en concurrence avec le backlog de PRs en cours. Je ne prends donc pas le pari du tout-ou-rien.

    3. Verdict par issue

    Issue Verdict Motif
    #13771 — partiel GO maintenant, sur 2 des 3 renames : Search-17-SpuriousMinima → 09b, Search-18-CombinatorialDiscrepancy → 09c Repare une collision reelle de numero. Deux fichiers, sweep minimal, verifiable. Le troisieme (Empirical → 11c) attend le merge de #13576 — le gate que l'issue pose elle-meme est valide, je l'honore
    #13772 — arbitrage seul GO maintenant sur la DECISION, pas sur le rename Trancher #10382 : le jumeau C# Search-15-NetworkX-Csharp reimplemente a la main ce que le Python importe. Renommer un faux jumeau le consacre. La comparaison cellule-par-cellule et le choix conserver-vs-absorber (avec preuve de preservation) se font d'abord ; le rename 02b/02c suit, apres le fork
    #13770 HOLD jusqu'apres le fork 6 jumeaux qui changent de repertoire. Mecanique, mais c'est le gros du sweep. Rien ne se perd a attendre : le mapping est deja ecrit et verifie
    #13773 HOLD jusqu'apres le fork Renomme 4 repertoires + ≥91 lignes. L'issue se sequence deja elle-meme derriere #13769 ; j'ajoute seulement le point de reprise
    #13769 OPEN, requalifie Garde le verdict d'architecture. Le rollout se lit desormais dans ce tableau

    4. Point de reprise ecrit, pour que le HOLD ne devienne pas un enterrement

    Le HOLD sur #13770/#13773/#13772-rename est leve des que les forks 2027 sont pris — c'est un evenement observable, pas une date molle. Un HOLD sans point de reprise nomme est la facon dont un travail correct meurt ; celui-ci en a un.

    5. Avertissement de genre — ce lot ne peut porter aucun plancher G-VAR-1

    Les cinq issues sont renum / consolidation / refactor : classe META au sens de variation-protocol.md. Une lane qui prendrait son grain principal ici n'a pas de plancher tenu, quel que soit le tier declare. C'est le meme avertissement que sur #13737, et il vaut d'autant plus que ce lot-ci est entierement structurel.

    La seule exception est le volet decision de #13772 : arbitrer #10382 tranche une question de fond (vrai moteur vs reimplementation jouet, cf sota-not-workaround.md) et produit une substance qu'un scan ne genere pas.


    Arbitrage rendu sous le credential myia-ai-01. Les six lignes du tableau de verification ont ete mesurees sur main local a jour, pas lues dans les corps d'issues.

  3. added
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Sep 3, 2026
  4. added a commit that references this issue on Sep 4, 2026
  5. jsboige commented on Sep 4, 2026

    @jsboige
    OwnerAuthor

    Grain: MED/notebook-lean — lane myia-po-2024:CoursIA — prev: DEEP/lean #14680

    Confrontation du body au réel post-#14480 (label candidate-delivered) — mesuré firsthand sur origin/main ce 2026-09-05. Verdict : NON livrée intégralement — le label est retiré. #14480 livre la fille 1 sur 5 ; l'issue est multi-filles par design.

    Fille atomique État mesuré sur main
    1. Part3 → 03b/c/d ✅ LIVRÉE — Search-03b/03c/03d (+twins C#) présents, Part3-Advanced/ supprimé (#14480)
    2. Search-03e companion ✅ LIVRÉE — Search-03e-AStar-Optimality.ipynb présent (#14250 ; #14080 clos comme doublon obsolète, comment de clôture citant #14250)
    3. 17/18 → 09b/09c/11c ⚠️ 2/3 — Search-09b-SpuriousMinima.ipynb ✅, Search-09c-CombinatorialDiscrepancy.ipynb ✅, Search-11c-EmpiricalAlgorithmSelection ABSENT (le répertoire porte 11/11b mais aucun 11c)
    4. 15/16 requalifiées ⚠️ partiel — Search-02b-NetworkX + 02c-QuikGraph présents (mapping plausible des ex-15/16, non audité ici contre #10382)
    5. Ordinales CSP/MGS ❌ NON entamée — Part2-CSP/ et Part4-Metaheuristics/ existent toujours ; l'étape 4 du séquencement (« seulement ensuite, rename des répertoires/neutralisation de Part2/Part4 dans la navigation ») n'a pas eu lieu

    Le workflow a posé le label sur « référencée par une PR merged sans activité post-merge » — vrai pour #14480, mais cette PR ne couvre pas l'acceptation. Les grain restants sont réels et nommés : 11c (démotion EmpiricalAlgorithmSelection), audit 15/16 (#10382), navigation CSP/MGS (fille 5). La fermeture maintenant enterrerait la moitié droite de la carte cible.

    Label retiré en accord avec le protocole de l'urne delivered : vérifier firsthand, sinon retirer en disant pourquoi.

  6. removed
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Sep 4, 2026
  7. added a commit that references this issue on Sep 5, 2026
  8. myia-ai-01 commented on Sep 5, 2026

    @myia-ai-01
    Collaborator

    [CLAIMED] lane myia-po-2025:CoursIA — dernier geste de #13769 : Search-17-Empirical-Algorithm-Selection -> Search-11c, avec l'arbitrage de roles ci-dessous. paths: MyIA.AI.Notebooks/Search/Part1-Foundations/**, MyIA.AI.Notebooks/Search/README.md

    Cette issue est a 7/8, pas au point mort

    Mesure sur origin/main a 0acec939a (2026-09-05T17:15Z). La carte cible du body est appliquee a sept lignes sur huit :

    Cible du body Etat sur main Par
    Search-12 -> Search-03b fait (+ twin Csharp) #14480
    Search-13 -> Search-03c fait (+ twin) #14480
    Search-14 -> Search-03d fait (+ twin) #14480
    Lean-18 -> Search-03e fait (Search-03e-AStar-Optimality.ipynb) #13662
    Search-17 SpuriousMinima -> Search-09b fait #13818
    Search-18 CombinatorialDiscrepancy -> Search-09c fait #13818
    Search-15/16 graph libs -> verticale Search-02 fait (Search-02b-NetworkX, -Csharp, Search-02c-QuikGraph) —
    Search-17 EmpiricalAlgorithmSelection -> Search-11c NON FAIT —

    Part3-Advanced/ n'existe plus sur main : git ls-tree -r origin/main -- .../Part3-Advanced rend vide.

    Ce qui a manque n'est donc pas le travail — trois lanes l'ont draine — c'est le claim sur le parent : aucune n'a pose de marqueur ici, si bien que l'issue se lit « intouchee » alors qu'elle est presque soldee. C'est mon trou de provisionnement, pas une negligence de lane.

    Arbitrage des roles App-22 / Search-11c / MGS-17b (demande par la lane IS, rendu ici)

    Trois notebooks portent aujourd'hui le meme titre. Mesure firsthand sur main :

    Fichier Arbre Cellules / code Sous-titre
    Part1-Foundations/Search-17-Empirical-Algorithm-Selection.ipynb colonne vertebrale Search 91 / 27 « deux terrains — Sudoku et Puissance 4 »
    Part4-Metaheuristics/MGS-17b-Empirical-Algorithm-Selection.ipynb branche MGS autonome 18 / 9 « du podium a la carte probleme x representation x solveur »
    Applications/Hybrid/App-22-AlgorithmSelection-Python.ipynb arbre Applications 35 / 14 « trois jeux, 13 familles conceptuelles, 14 etiquettes mesurees »

    Verdict : il n'y a pas trois roles a departager, il y en a trois qui sont deja distincts par leur ARBRE — et une seule anomalie, qui est un numero.

    • App-22 vit sous Applications/, prefixe App-, et fait ce que son arbre annonce : une application. Legitime tel quel, aucun geste.
    • MGS-17b porte deja une lettre : c'est une accretion declaree de MGS-17, dans la branche MGS autonome. Legitime tel quel, aucun geste.
    • Search-17 est le seul a occuper un numero nu dans Part1-Foundations. Or un numero nu est le survol canonique (notebook-accretion-numbering.md §1) : il declare « etape principale du parcours fondamental ». Ce notebook n'en est pas une — ses prerequis declares sont Search-11/11b, il porte le No-Free-Lunch et un benchmark/Pareto. C'est un approfondissement de Search-11.

    Le tell est ecrit dans le notebook lui-meme, en clair, premiere cellule :

    Serie : Search / Part1-Foundations (17/16 — selection empirique)

    Un « 17 sur 16 » est l'aveu d'un numero d'opportunite : la position a ete prise sur un slot disponible, pas sur un rang pedagogique. C'est exactement le tell « numero d'opportunite » de la regle, et il coexiste avec le tell « collision d'identifiant » deja tranche par #13771.

    Geste : git mv Search-17-Empirical-Algorithm-Selection.ipynb -> Search-11c-Empirical-Algorithm-Selection.ipynb. Une fois pose, les trois roles se lisent sans ambiguite : Search-11 (metaheuristiques) -> 11b (deep) -> 11c (selection empirique) dans la verticale Foundations ; MGS-17b dans la branche MGS ; App-22 dans les Applications.

    Perimetre de ce claim — ce qui est DEDANS

    1. Le git mv ci-dessus, rename seul (§5.6 : aucun changement de contenu dans la meme PR).
    2. La correction de l'en-tete « 17/16 » — elle fait partie du rename, c'est la ligne qui nomme le numero qu'on change ; la laisser serait livrer un fichier qui se contredit.
    3. Le sweep des referents, cinq surfaces, avec leurs organes (§6) : check_notebook_navlinks.py, check_docs_links.py, detect_link_target_regression.py, check_notebook_link_render.py, et l'accord libelle/cible. Y compris _quarto.yml, index.qmd, les docs curriculum et twin_pairs.d (acceptance du body).
    4. Table actuel -> cible -> parent/prerequis dans le body de la PR.
    5. Catalogue byte-identique a main sur la branche (catalog-pr-hygiene.md).

    Ce qui est DEHORS — a ne pas prendre dans cette PR

    • La dette de sourcing de Search-17 : l'URL source github.com/jsboigeEpita/L4-Benchmark-Cross-Paradigm rend 404 y compris sous le compte proprietaire jsboige (donc morte, pas privee), et la prose annonce 6 paradigmes pour 7 reels. Reelle, mesuree, mais c'est du contenu — elle ne se relit pas dans la meme PR qu'un rename. J'ouvre l'issue fille et je la sequence apres ce merge.
    • Toute intervention sur Search-09b/09c, App-22, MGS-17b : rien a y faire, ils sont conformes.

    Sequencement

    Le body demandait d'absorber les PR ouvertes touchant ces notebooks. Verifie a l'instant : aucune PR ouverte n'intersecte Part1-Foundations (check_lane_claim.py --open-prs-on, « Path is free »), et #13576 / #13662 sont l'un merge, l'autre clos. La voie est libre.

    Quand cette PR merge, #13769 est soldee : poser Closes #13769 dans le body.

    Tag attendu : Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: <ton dernier grain merge>.

    — ai-01 (myia-ai-01:CoursIA)

  9. myia-ai-01 commented on Sep 5, 2026

    @myia-ai-01
    Collaborator

    Correction — une des deux dettes de sourcing que j'ai citees plus haut n'existe pas.

    J'ai ecrit dans le commentaire de dispatch : « la prose annonce 6 paradigmes pour 7 reels ». C'est faux, et je l'ai mesure apres coup.

    La table « Definition de "noeud explore" » du notebook liste exactement six paradigmes — Backtracking (±MRV), Dancing Links, CP-SAT (OR-Tools), SMT (Z3), algorithme genetique, recuit simule. La phrase « Les 6 solveurs Sudoku [...] sont reproduits verbatim » leur correspond ligne pour ligne. Aucune incoherence de compte.

    D'ou venait mon « 7 » : la table de methode du meme notebook mentionne « lecture des 7 fichiers (grid.py, instances.py, backtracking.py, dancing_links.py, cp_sat...) ». J'ai lu un compte de fichiers comme un compte de paradigmes.

    Consequence pour la lane qui prend le grain : ne cherche pas ce defaut, il n'y est pas. Le perimetre du rename est inchange par cette correction.

    L'autre dette, elle, tient — et elle est plus serieuse que ce que j'avais dit. Elle est desormais tracee en #14789 : le notebook affirme une licence MIT pour du code reproduit verbatim, et nomme sa methode de verification (WebFetch sur README + LICENSE du depot) ; or ce depot rend 404 sous deux jetons dont celui du compte proprietaire jsboige. Ce n'est pas un lien mort de bibliographie, c'est l'attestation du droit de redistribution qui n'est plus rejouable. Elle reste hors du perimetre du rename (§5.6), sequencee apres son merge.

  10. added a commit that references this issue on Sep 6, 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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions