Skip to content

[Epic] 🧭 Amorce patrimoine Aricie → MyIA.AI.Shared : index récupérable (CSP/Flee, Lucene/Safari, DCP/Redis, fork Lean) + ordre #7265

Description

@jsboige

État mesuré au 2026-10-04 — réécriture d'acceptance 5 de #13906 (lane myia-po-2024:CoursIA ; organe scripts/epic_body_staleness.py : 92 Epics ouvertes, 800 PRs mergées, fenêtre 2026-09-26 → 2026-10-04).

Cette EPIC est tenue par deux lanes, et c'est désormais écrit ici. Partition posée au dispatch ai-01 du 2026-10-04 (ai01-deepq-1004-po2024) :

Volet Contenu Lane Sous-issue PRs ouvertes
A ComponentModel — socle metadata-driven (A1, A1+, A2, A2+, A3) myia-po-2027:CoursIA #19088 (A3) 6
B Search et CSP — moteurs AIMA (B1, B2, B3) myia-po-2024:CoursIA (cette lane) directe 2

Livré / en vol / reste — vérifié fichier par fichier sur main, jamais déduit des titres. Les provenances sont lues à l'API GitHub par chemin : le git log local ne peut pas les rendre, ce clone est shallow et ne remonte qu'à un commit-frontière.

Sous-grain État Preuve sur main PR
A1 ancre LIVRÉ ComponentModel/Attributes/{MainCategoryAttribute,AttributeContainerAttribute}.cs + Entities/{IChildEntity,ISimpleEntity,IMergeable}.cs + Providers/ReflectedProviderContainer.cs #7653
A1+ hiérarchie de providers LIVRÉ Providers/{IProviderContainer,ProviderModel,SimpleProviderContainer,AutoProviderContainer}.cs #7669
A2 sérialisation JSON LIVRÉ Serialization/{MetadataContractResolver,MetadataJsonSerializer}.cs #7661
A2+ sérialisation XML LIVRÉ Serialization/{XmlAwareContractResolver,NodeSurrogate,MetadataXmlSerializer}.cs #7677
B4 moteur Flee LIVRÉ ComponentModel/Rules/FleePredicateBuilder.cs #10167
A3 object explorer EN VOL aucun fichier sur main (git ls-tree : rien de GridView/PropertyEditor/Filter) #19092, #19097, #19120, #19123, #19140, #19141
B1 noyau CSP AIMA EN VOL aucun fichier sur main — cible MyIA.AI.Shared/Search/Csp/ (8 sources + tests) #19138
B2 moteur de recherche AIMA EN VOL aucun fichier sur main — cible MyIA.AI.Shared/Search/Graph/ (5 sources + tests) ; les autres inventaires que le corps d'origine range sous B2 (Logic.cs, Probability.cs, Neural.cs) restent hors cible de cette PR et non réclamés #19142
B3 IA de jeux + Go NON COMMENCÉ aucun fichier Games/gnugo/GoTraxx/CNTK sur main —
C Lucene / Safari NON COMMENCÉ aucun fichier lucene/safari sur main —
D DCP / Redis NON COMMENCÉ aucun fichier OutputCache/CacheManager/CacheableEntity sur main —
E1 convertisseur Lean RELOCALISÉ, VIVANT MyIA.Trading.Converter/ (25 fichiers) — sorti de Shared par #7425 #7425
E2 backtester AutoML TRACKER FERMÉ, CODE VIVANT MyIA.Trading.Backtester/ 60 fichiers + MyIA.Trading.Backtester.Tests/ (14) #7357 — CLOSED/COMPLETED le 2026-09-18

Index de traçabilité : MyIA.AI.Shared/README.md — le contrat décoration → introspection, les 4 PRs de la pipeline A1→A2+ et leurs batteries de tests (48/48 au merge). Le README de MyIA.AI.Shared.Tests/ n'existe pas : la suite vit dans MyIA.AI.Shared.sln.

Ce qui reste, dans l'ordre où une lane devrait le prendre

  1. B1 et B2 (feat(shared,#7265): B1 -- noyau CSP AIMA porte en C# (MyIA.AI.Shared/Search/Csp) #19138, feat(shared,#7265): pepite B2 -- moteur de recherche C# (port AIMA) dans MyIA.AI.Shared/Search #19142) — écrits, en attente de dossier adjoint puis de merge. B4 étant livré, le liant des moteurs B existe déjà.
    Addendum du 04/10, mesure de clôture : aucun des trois inventaires ci-dessus ne porte de prédicat Flee, et B2 n'en a pas besoin — le bijou Flee est attaché à B1 par le corps ci-dessous (« Bijou = contraintes comme expressions Flee compilées »), et B4 (feat(socle,#10161): add FleePredicateBuilder — B4 universal predicate (tests 56/56) #10167) porte déjà le liant. Reste donc, pour B2, un périmètre à scoper séparément avant de le compter comme couvert : Logic, Probability et Neural n'ont ni cible ni PR.
  2. A3 ([#7265 · pépite A3] Object explorer metadata-driven (Filters + PropertyEditor attributes) : port VB->C# vers MyIA.AI.Shared #19088, 6 PRs en vol) — la seule tranche du socle non commencée, et celle que le corps ci-dessous appelle « le vrai bijou architectural ».
  3. B3 — IA de jeux + Go (CNTK + gnugo). Rien n'est prêt : c'est le seul volet B sans code ni cible arrêtée.
  4. C et D — non commencés. Le corps ci-dessous demande lui-même, pour D, une évaluation contre IDistributedCache avant d'ouvrir : ne pas ouvrir sans elle.

Deux rectifications du corps ci-dessous

Portée du non-vérifié. L'organe a examiné 92 Epics ouvertes et 800 PRs mergées (fenêtre 2026-09-26 → 2026-10-04) ; aucune PR mergée de cette fenêtre ne cite #7265, donc unrecorded_merged est vide ici — le corps ne contredit plus ses livraisons, première fois depuis la mesure du 2026-09-01. Les provenances du tableau viennent de l'API GitHub par chemin, hors fenêtre. Les 6 PRs A3 n'ont pas été relues par cette lane (périmètre de po-2027) : leurs libellés de tranche sont ceux de leurs titres.

(Suite : note A3 de la lane myia-po-2027:CoursIA, conservée telle quelle — elle détaille le sous-grain A3 du tableau ci-dessus.)

Etat mesure au 2026-10-04 (lane myia-po-2027:CoursIA, sous-grain A3 ouvert)

  • La liste « Ce qui reste » ci-dessous est périmée sur son item 1 : [E2] MyIA.Trading.Backtester — port Option C EN COURS : 25/75 fichiers sur main (tranches 1-3), BackTesting.cs restant #7357 (E2) est CLOSED/COMPLETED depuis le 2026-09-18 — la continuité E2 est livrée ou clôturée, ce n'est plus le successeur ouvert.
  • A3 (item 2) est maintenant ouvert : sous-grain #19088 créé avec les sources mesurées firsthand (arbre Aricie.PortalKeeper@master : Filters/ 13 fichiers UI-indépendants = T1 ; PropertyEditor Attributes/ ~30 = T2 ; GridView = WebForms System.Web, pattern seulement = T3). Claim posé po-2027, démarrage T1.
  • B1 (item 3) et C/D (item 4) restent dans l'ordre ci-dessous, inchangés.

État au 2026-09-02 — la pompe est amorcée depuis six semaines : le socle A est livré et testé, et le corps disait encore « dossier vide »

Passe de curation (mandat #13906). Cette Epic est le dernier cas reproduisant littéralement le défaut que le user a signalé sur #1210 : un corps qui se déclare en attente alors que le dépôt y a livré. Le statut annonçait 🧭 BACKLOG INDEXÉ — amorce de la pompe, le corps affirmait « Cet Epic = l'index de la pompe, pas son exécution » et « Le dossier existe déjà (vide, .csproj squelette) ».

Mesuré sur main aujourd'hui : MyIA.AI.Shared/ porte 18 fichiers suivis, plus une suite de tests de 9 fichiers. Le dossier n'est pas vide depuis le 2026-07-21.

Ce qui est livré — vérifié fichier par fichier, pas déduit des titres de PR

Item État Preuve sur main
A1 — décoration + hiérarchie infinie LIVRÉ MainCategoryAttribute, AttributeContainerAttribute, IChildEntity, ISimpleEntity, IMergeable, SimpleProviderContainer, AutoProviderContainer, ReflectedProviderContainer (#7653, #7669)
A2 — sérialisation légo décoration-driven LIVRÉ, les deux branches MetadataJsonSerializer + MetadataContractResolver (#7661, JSON) et MetadataXmlSerializer + XmlAwareContractResolver + NodeSurrogate (#7677, XML)
B4 — moteur Flee (prédicat universel) LIVRÉ ComponentModel/Rules/FleePredicateBuilder.cs (#10167)
Tests LIVRÉS MyIA.AI.Shared.Tests/ — AutoProviderContainerTests, MetadataJsonSerializerTests, MetadataXmlSerializerTests, FleePredicateBuilderTests, Fixtures
Ancrage pédagogique LIVRÉ MyIA.AI.Notebooks/cross-series/socle-metadata-driven/Socle-MetadataDriven-Csharp.ipynb (#10165) + référencement cross-série (#10171)
Traçabilité LIVRÉE MyIA.AI.Shared/README.md — index A1→ avec le contrat décoration→introspection (#8041)
E1 — convertisseur datasets Lean RELOCALISÉ ET VIVANT MyIA.Trading.Converter/ (25 fichiers), sorti de MyIA.AI.Shared par #7425 ; a servi la re-exécution DualMomentum sur données LEAN locales (#8401)
E2 — backtester AutoML EN COURS, successeur nommé MyIA.Trading.Backtester/ (21 fichiers) + MyIA.Trading.Backtester.Tests/ ; porté par #7357 (OPEN), qui compte le port à 25/75 fichiers selon sa propre métrique

Une décision d'architecture a été prise et n'était inscrite nulle part dans ce corps — cadrage user du 2026-07-19 : « transverse dans Shared, domaine en projet dédié ». C'est elle qui explique #7425 (sortie de MyIA.Trading.Converter hors de MyIA.AI.Shared), geste qui reste incompréhensible sans elle. Elle vaut pour toute récupération future : transverse → MyIA.AI.Shared, domaine → projet dédié à côté.

Ce qui n'est pas commencé — mesuré, pas supposé

Item État Vérification
A3 — object explorer UI (AdvancedGridView, PropertyEditor, filtres) non commencé aucun fichier GridView/PropertyEditor/EditControl suivi
B1/B2/B3 — moteurs AIMA (CSP, Search, Games/Go), CNTK, gnugo non commencés aucun aima/gnugo/GoTraxx suivi. Attention au faux positif : Sudoku-06-AIMA-CSP-*.ipynb et Search/Part2-CSP/ existent, mais ce sont des notebooks pédagogiques autonomes — pas la récupération du patrimoine Aricie. Les confondre ferait cocher B1 à tort
C — Lucene Search / Safari / DistributedSearch non commencé aucun fichier lucene/safari suivi
D — DCP / cache distribué non commencé aucun OutputCache/CacheManager/CacheableEntity suivi

Ce que la mesure change pour la conduite de cette Epic

Le pari du corps est validé sur son axe le plus dur. Le corps disait : « Ce framework ne demande qu'à grossir », et le pariait sur du grignotage opportuniste plutôt que sur un plan. Six semaines plus tard, la fondation entière (A1 + A2 + B4) est en place, testée, documentée et adossée à un notebook — sans plan de bataille, à l'opportunité. La méthode fonctionne ; c'est la description de l'état qui ne suivait pas.

Et le vrai reste n'est pas où l'ordre du corps le plaçait. L'ordre proposé allait « du socle vers les applications », A → B → C → D → E. Dans les faits, A est fini, E est le plus avancé après lui, et B/C/D n'ont pas bougé. L'ordre de déploiement est bien resté opportuniste, comme le corps l'autorisait explicitement — mais un lecteur qui prend l'ordre A→E au pied de la lettre chercherait le travail au mauvais endroit.

Ce qui reste, dans l'ordre où une lane devrait le prendre

  1. [E2] MyIA.Trading.Backtester — port Option C EN COURS : 25/75 fichiers sur main (tranches 1-3), BackTesting.cs restant #7357 (E2) — seul successeur ouvert avec du travail en cours. C'est là que la continuité existe déjà.
  2. A3 — la seule tranche du socle non commencée, et celle que le corps appelle « le vrai bijou architectural ». Elle a maintenant A1+A2+B4 sous elle : sa dépendance est levée.
  3. B1 (CSP/Flee) — B4 étant livré, le liant de B1 existe déjà. C'est la pépite B la moins chère à amorcer, avec un ancrage naturel dans Search/Part2-CSP.
  4. C et D — à ré-évaluer avant d'ouvrir : le corps le dit lui-même pour D (« à évaluer vs alternatives modernes, IDistributedCache standard »). Ne pas ouvrir sans cette évaluation.

Corps d'origine conservé intégralement ci-dessous (2026-07-18). Son cadrage — grignotage opportuniste, index et non exécution, MyIA.AI.Shared comme cible — reste la bonne description de la méthode ; seule sa description de l'état avait dérivé.

Statut : 🧭 BACKLOG INDEXÉ — amorce de la pompe

Cet Epic scope CE QUI EST RÉCUPÉRABLE et DANS QUEL ORDRE, depuis le patrimoine endormi d'Aricie (~10 ans de travail user). Cadrage user 2026-07-18 : « On va grignoter le patrimoine endormi d'Aricie dans notre dépôt CoursIA lors des prochains mois, à l'opportunité. [...] il faudrait juste amorcer la pompe et prévoir de planifier plus tard. »

Cible désignée : MyIA.AI.Shared/ (déjà créé dans CoursIA, .csproj squelette du 02/07/2026) — l'équivalent moderne d'Aricie.Shared. Le plan explicite est d'y récupérer les bouts récupérables de PortalKeeper/Aricie.Shared (+ autres projets Aricie). Ce framework ne demande qu'à grossir.

Méthode : grignotage opportuniste au fil de l'eau. Chaque pépite ci-dessous = une future issue à ouvrir quand l'opportunité CoursIA se présente (série/notebook/issue qui crée un point d'ancrage naturel). Cet Epic = l'index de la pompe, pas son exécution. Des dizaines d'issues en découleront.

Cible : MyIA.AI.Shared/ (CoursIA)

Le dossier existe déjà (vide, .csproj squelette, créé 02/07/2026). Commit lié 506f7ae93 "Migrating SK material to console app". But : accueillir la couche partagée .NET modernisée issue d'Aricie.Shared — l'équivalent C# moderne (net8/9) du socle Aricie.Shared/Libs/ de PortalKeeper.

Ordre de récupération proposé (du socle vers les applications)

Hiérarchie : le socle (A) conditionne tout le reste. Mais l'ordre de déploiement peut être opportuniste — on ramène une pépite quand sa destination CoursIA est claire, pas forcément dans l'ordre ci-dessous.

A. Socle metadata-driven Aricie.Shared → MyIA.AI.Shared (fondation)

Source : AricieConseil/Aricie.PortalKeeper → Aricie.Shared/Libs/Aricie.Core/Components/ComponentModel/ + Aricie.DNN/UI/PropertyEditor/ + ComponentModel/Providers/ + Web/WebControls/GridView/. Rosetta stone : ComponentModel.cd (class diagram VS).

  • A1 — Décoration + hiérarchie infinie : MainCategoryAttribute, AttributeContainerAttribute, IChildEntity/ISimpleEntity/IMergeable, providers réflexion-driven (AutoProviderContainer, ReflectedProviderContainer, SimpleProviderContainer).
  • A2 — Sérialisation légo (XML/JSON décoration-driven) : XmlAwareContractResolver (hérite DefaultContractResolver, override CreateProperty → lit les attributs) + DynamicSurrogate + XmlConfigElementInfo + collections SerializableDictionary/List/SortedList. Stack Fasterflect + Newtonsoft + Xml.
  • A3 — Object explorer UI : AdvancedGridView (tabs/sections) + PropertyEditor/EditControls/ + Filters/ (FilterExpression, PredicateFilter, SimpleFilter, boutons filtrants sur méthodes annotées).
    Destination : outiller GradeBookApp (moteur générique notation), tooling notebook, ou couche low-code pédagogique. Pépite pour user : le vrai bijou architectural (pattern low-code/no-code avant l'heure).

B. Couche IA Libraries/AI/ ★ (le cœur « My Intelligence Agency »)

Source : AricieConseil/Aricie.PortalKeeper → Libraries/AI/. Rosetta stone : AI.cd. C'est le cœur IA effectif, sous la config 4 Mo.

  • B1 — Moteur CSP (AIMA) : CSP.cs + external/AIMA/ (aima-core.dll, aima-gui.exe). Bijou = contraintes comme expressions Flee compilées (prédicat universel). Destination : Search/Part2-CSP (série Search/CSP descend directement de là).
  • B2 — Search/AIMA : Search.cs, SearchDemos.cs, Logic.cs, Probability.cs, Neural.cs + external/AIMA/. Destination : séries Search + Probas + ML.
  • B3 — IA de jeux + Go : Games.cs, GameDemos.cs, Go/Go.cs + CNTK (réseau convolution 02_Convolution.cntk, modèles entraînés) + gnugo.exe (moteur Go GNU). Destination : GameTheory/ (série jeux).
  • B4 — Moteur Flee : Aricie.Shared/.../Services/Flee/ (FleeExpressionBuilder, FleeHelper, ExpressionVariableInfo, CallObjectMethod...). Expressions .NET compilées = le liant universel de B1-B3. Destination : transverse, sous MyIA.AI.Shared.

C. Lucene Search / Safari (moteur de recherche documentaire)

Source : codeplex ariciels (Aricie Lucene Search, Archive Team) + Libraries/AI/external/GoTraxx/ (SearchEngine.cs, SearchInterface.cs, SearchMethod.cs, DistributedSearch/ = NagCoordinator/NagNode/Worker/WorkerProxy = recherche distribuée) + jsboige/safari3-ia [PRIVÉ] (« SAFARI III — Intégration IA dans la GED de la Fédération des Ascenseurs », maj 2026-06-29 = travail de spec vivant basé sur l'IP Lucene).

  • C1 — Modèle LuceneSearch : pattern d'intégration Lucene .NET (indexation, requêtes, scoring). Destination : Search/ (recherche full-text) ou une série RAG/GenAI (retrieval).
  • C2 — DistributedSearch (GoTraxx) : coordonnateur + workers + proxy = pattern de recherche distribuée. Destination : infra distribuée (à évaluer pertinence moderne vs alternatives actuelles).
  • C3 — Safari spec : travail de spec GED Lucene vivant dans safari3-ia privé — point de référence fonctionnel.

D. DCP / Redis (cache distribué)

Source : Aricie.Shared/.../Services/Caching/ (OutputCacheManager, DiskOutputCacheProvider, CacheHelper, CachedContent, OutputCacheMode, ICacheableEntityDescriptor) + Aricie.PortalKeeper.DNN7/Caching/ + codeplex ariciedcp (16 captures Archive Team).

  • D1 — Patterns de cache distribué : output cache disque, cacheable entity descriptors, cache manager. Destination : infra perf CoursIA (cache cross-machine, GenAI stack) — à évaluer vs alternatives modernes (IDistributedCache standard).

E. Fork Lean (convertisseur + backtester) — déjà partiellement intégré C#

Source : MyIntelligenceAgency/Lean branche MyIABacktesting_integration (namespace MyIA.Trading).

  • E1 — Convertisseur datasets Lean (MyIA.Trading.Converter/) : TradeConverter.cs (19 Ko) binaire → format dossier Lean Data/<mkt>/<sym>/<res>/*.zip. Valeur produit immédiate : voie Equity-locale gratuite vs paywall Security Master QC $600/an, débloque fix(qc,#6891): [RESCOPE] 7 quantbooks en honnetete interimaire — vraie re-exec via kernel QC (RECOVERABLE-USER-HAND, creds absents) #6891. Trou : factor/map files non gérés (à combler). Actionnable indépendamment de la résurrection globale.
  • E2 — Backtester AutoML (MyIA.Trading.Backtester/) : BackTesting.cs (47 Ko) + SVM Accord.NET + AutoML + stratégies. Destination : QuantConnect/ ou ML-Training-Pipeline/.
  • E3 — Visualiseur ESGF (jsboige/lean-monitor-2, fork mirthestam/lean-monitor, Panoptes.Model/) : interface vectorielle résultats backtest. Destination : QA visuelle backtests QC.

Epic séparé (HORS scope ici)

  • Spark.NET BigData : jsboige/5ESGF-BD-2023 (C#, « Spark .Net Term Project », 2023) + MIA/5ESGF-BD-2021. User 2026-07-18 : « On avait aussi tout un travail pertinent dans un cours de BigData sous Spark.net qui pourrait être recyclé, mais ça sera l'objet d'un autre Epic. » → À créer séparément quand opportun (ne pas mélanger ici).

Sources canoniques (vérifiées firsthand 2026-07-18)

Source Localisation Statut
PortalKeeper code AricieConseil/Aricie.PortalKeeper (GitHub, VB.NET) vivant, Libraries/AI/ + Aricie.Shared/
PortalKeeper config Aricie.PortalKeeper.Default.config (4 Mo / 67 357 lignes XML) bots/simulateurs sérialisés
Fork Lean MyIntelligenceAgency/Lean branche MyIABacktesting_integration vivant (push 2026-07-14)
Visualiseur jsboige/lean-monitor-2 fork mirthestam/lean-monitor
Safari jsboige/safari3-ia [PRIVÉ] GED Lucene, vivant (maj 2026-06-29)
CodePlex archives ariciepkp / ariciels / ariciedcp Archive Team dump archive.org/details/archiveteam_codeplex
Spark.NET jsboige/5ESGF-BD-2023, MIA/5ESGF-BD-2021 Epic séparé

Critères d'acceptation (pour CECI Epic = index)

  • Index complet des pépites récupérables avec source + destination CoursIA (fait ci-dessus, A-E).
  • Ordre de récupération proposé (socle → applications, mais opportuniste).
  • Cible MyIA.AI.Shared/ identifiée comme destination fondation.
  • Chaque pépite ramenée au fil de l'eau = une future issue (des dizaines à venir) — cet Epic est l'amorce, pas l'exécution.

Références

  • Mémoires : myia-org-etymology-portalkeeper, portalkeeper-metadata-driven-core, qc-converter-backtester-archaeology
  • Voir : #1210/#6853 (Semantic-Fleet = continuation vivante), #6891 (8 quantbooks — E1 applicable), #1621 (QC strategies)

Activity

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