Skip to content

[#7265 · residu B2] Logic/Probability/Neural -- descripteurs AIMA (IKVM) et AIFH : scope et decision de port #19197

Closed

Description

@jsboige

Sous-grain de #7265 (volet B, lane myia-po-2024:CoursIA). Le corps de l'EPIC le nomme sans le trancher :

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.

Et la PR B2 (#19142) le déclare hors de son propre périmètre : « 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 ».

Mesure firsthand de la source

Patrimoine Aricie.PortalKeeper (master), Libraries/AI/ :

Fichier Lignes Ce qu'il contient Moteur sous-jacent (usings)
Logic.cs 400 PLKbInfo, FolDomainInfo, PLKbInferInfo, FolKbInferInfo, enums de procédures d'inférence aima.core.logic.fol.* — AIMA Java via IKVM
Probability.cs 874 RandomVariableInfo, BayesianNodeInfo, BayesianNetworkInfo, BayesInferenceInfo, modes d'inférence exacte/approximative aima.core.probability.bayes.* — AIMA Java via IKVM
Neural.cs 484 NeuralLayerInfo, BasicNetworkInfo, BackPropagationInfo, INeuralNetwork, ILearningMethodInfo AIFH_Vol3.* (Jeff Heaton) + System.Web.Security

Densité mesurée (propre au fichier, hors descripteurs) :

Logic        methodes=12  branches=14
Probability  methodes=46  branches=33
Neural       methodes=14  branches=5

Nature réelle — c'est le point qui décide. Ces trois fichiers ne sont pas des moteurs : ce sont des descripteurs sérialisables (classes *Info, décorées [XmlIgnore]/[JsonIgnore]/[Browsable] — le vocabulaire du ComponentModel du socle A) doublés d'un adaptateur paresseux. Exemple textuel, PLKbInfo.KnowledgeBase : la propriété construit un KnowledgeBase AIMA à la demande, puis lui tell les Sentences du descripteur. Le calcul vit dans la DLL en dessous, pas ici.

Binaires embarqués par le projet (Libraries/AI/external/, mesurés) :

Dossier Contenu Poids
AIMA/ aima-core.dll, aima-gui.exe 1,0 Mo + 0,1 Mo
IKVM/ IKVM.OpenJDK.*.dll (Core, Beans, Media, Misc…), IKVM.AWT.WinForms.dll ~18 Mo
Encog/ AIFH-Vol3-Core.dll, AIFH-Vol3.exe, encog-core-cs.dll, CsvHelper.dll 1,2 Mo
Math.Net/ MathNet.Numerics.dll 1,1 Mo

Ce que le scope doit trancher (organ-first)

La question n'est pas « porter ces 1758 lignes » — elles ne portent presque pas de logique propre. Elle est : quel organe natif .NET tient le rôle du moteur sous-jacent, et un descripteur a-t-il une valeur sans lui ? Les cinq questions d'organ-first-implementation s'appliquent telles quelles, avec trois pistes à confronter avant d'écrire la moindre ligne :

  1. Logic (PL/FOL) — le dépôt porte déjà Tweety en IKVM côté .NET (cf. [EPIC] Tweety .NET — port C#/IKVM de la série (fenêtre de compatibilité Java 15 ↔ IKVM 11) #4667 / [EPIC] Parité .NET ⇄ Python des séries de notebooks — IKVM/PythonNet/NuGet, marathon pas sprint #4956, et la parité nommée dans [EPIC] Argument_Analysis v3 — submodule Argumentum (prémerge v0.9.0) + remontées moteur (CsvDiff/DatasetUpdater/Owl) + landing essence multidimensionnelle EPITA-IS #4960 : « TweetyBridge JPype côté Python ⇄ IKVM côté .NET ») et Z3.Linq pour le SMT. Porter un second pont FOL serait un doublon d'organe.
  2. Probability (bayésien) — le dépôt porte Infer.NET (Probas/). Idem : la question est « Infer.NET tient-il le rôle ? », pas « comment porter BayesianNetworkInfo ».
  3. Neural — Encog/AIFH-Vol3 sont des DLL tierces, et System.Web.Security est du WebForms : la cible .NET 9 n'est pas acquise. À confronter à ML.NET.

À l'inverse, ce qui a une valeur propre et pourrait survivre au moteur : la forme des descripteurs (le contrat *Info sérialisable) — c'est elle qui s'intègre au ComponentModel du socle A. Un inventaire informatif sur le modèle de MyIA.AI.Shared/External/Flee/.inventory.json (reliquat #15321) peut conserver cette information sans porter de code.

Acceptance

  • Les trois composants reçoivent chacun un verdict : porter (avec cible + moteur retenu) ou hors cible (avec motif organ-first nommé).
  • Le verdict est fondé sur une mesure du recouvrement avec les organes existants du dépôt (Tweety/IKVM, Z3.Linq, Infer.NET, ML.NET) — pas sur une préférence.
  • Si « hors cible » : le reliquat informatif est déposé (External/<lib>/.inventory.json) pour que l'information ne se reperde pas, sur le précédent Flee.
  • Aucun port de descripteur sans avoir répondu aux 5 questions d'organ-first-implementation dans le body de la PR qui le porte.

Mesures prises firsthand sur Aricie.PortalKeeper@master (arbre local), 2026-10-05.

Activity

  1. jsboige commented on Oct 5, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2024:CoursIA — scoping du residu B2 : verdict de port par composant, fonde sur le recouvrement mesure avec les organes du depot.

  2. jsboige commented on Oct 5, 2026

    @jsboige
    OwnerAuthor

    Verdict de scoping — mesure du recouvrement organ-first

    Le point décisif est que ces trois fichiers ne portent pas de moteur : ce sont des descripteurs *Info devant une DLL tierce (AIMA Java via IKVM pour Logic/Probability, AIFH_Vol3 pour Neural). La question n'est donc pas « comment les porter » mais « le dépôt a-t-il déjà l'organe qui tient ce rôle ». Mesuré sur cet arbre :

    Composant Organe du dépôt qui tient le rôle Mesure
    Logic (PL/FOL) Tweety ponté en .NET par IKVM MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/ — 19 projets de shading (build-Tweety7aShade.csproj …), + SMT/Z3.Linq pour le SMT
    Probability (bayésien) Infer.NET MyIA.AI.Notebooks/Probas/Infer/ (+ DecisionTheory/, inventaires de parité PARITY-INVENTORY.md, LEAN_INVENTORY.md)
    Neural ML.NET (voie .NET du dépôt) Microsoft.ML référencé dans MyIA.AI.Notebooks/MyIA.AI.Notebooks.csproj

    Verdict, composant par composant

    • Logic.cs → HORS CIBLE. Le pont Java→.NET est déjà outillé pour Tweety (19 projets de shading IKVM) ; AIMA y ajouterait un second pont FOL pour la même sémantique. Porter un descripteur devant un moteur redondant est exactement le geste qu'organ-first-implementation interdit sans nommer l'organe contourné.
    • Probability.cs → HORS CIBLE. Infer.NET est l'organe probabiliste du dépôt, avec sa parité déjà suivie. BayesianNetworkInfo ne serait qu'un descripteur de plus devant un second moteur bayésien.
    • Neural.cs → HORS CIBLE, motif différent. Ici il n'y a pas d'organe du dépôt à doubler — il y a une absence de moteur portable : les deux implémentations sont des DLL tierces (AIFH-Vol3-Core.dll, encog-core-cs.dll, mesurées dans Libraries/AI/external/Encog/) et le fichier tire System.Web.Security (WebForms, hors cible net9.0). Un descripteur de couches et de backpropagation n'a pas de moteur à lui ; ML.NET est la voie .NET.

    Portée du non-vérifié — à lire avant de s'appuyer sur ce verdict

    Ce verdict est fondé sur la présence et le rôle des organes, pas sur une mesure de couverture capacité par capacité. Je n'ai pas établi que Tweety couvre chacune des procédures d'inférence de Logic.cs, ni qu'Infer.NET couvre les modes exact/approximatif de Probability.cs. Ce qui est mesuré : le rôle est tenu, le pont existe, et le descripteur n'apporte pas de moteur. Une tranche qui voudrait porter quand même devra répondre aux 5 questions d'organ-first-implementation — et le fardeau de la preuve est là, pas ici.

    Ce qui survit, et où il va

    La forme des descripteurs (*Info sérialisables, décorés pour le ComponentModel du socle A) porte une information réelle. Elle se conserve sans porter de code, par un inventaire informatif sur le précédent déjà en place dans le dépôt : MyIA.AI.Shared/External/Flee/.inventory.json (reliquat #15321, posé après l'abandon du port Flee). C'est le seul geste de cette sous-issue qui produit un artefact sur main.

    Reste à faire (acceptance)

  3. myia-ai-01 commented on Oct 8, 2026

    @myia-ai-01
    Collaborator

    [CLAIMED] lane myia-po-2024:CoursIA -- Reprise résiduelle : inventaires metadata-only Aima/Aifh selon précédent Flee, sans exécuter IKVM ni embarquer DLL ; mesurer limites du recouvrement et conserver provenance/licence, aucun port moteur. -- paths: MyIA.AI.Shared/External/Aima/, MyIA.AI.Shared/External/Aifh/

    (check_lane_claim #9774 -- server-stamped UTC; body timestamps are NOT authoritative. Release with [RELEASED] when your PR lands.)

  4. jsboige commented on Oct 8, 2026

    @jsboige
    OwnerAuthor

    Livraison de l'inventaire : PR #19994 (feature/19197-aima-aifh-inventories, tête e6978990631) — MyIA.AI.Shared/External/{Aima,Aifh}/.inventory.json, +308 lignes, sur le précédent Flee.

    • Méthode : System.Reflection.Metadata en lecture seule (PEReader + MetadataReader), SHA-256 par Get-FileHash — aucune exécution IKVM, aucun binaire tiers embarqué.
    • Mesuré : 7 binaires (aima-core 506/578 types, aima-gui, IKVM.OpenJDK.Core 1865/2728 + 11 fichiers/18,8 Mo, AIFH-Vol3-Core, AIFH-Vol3.exe, encog-core-cs 887/933 sur 229 namespaces, CsvHelper 2.13.2), chacun avec SHA intégral et namespaces comptés.
    • Témoins : 26 usings (Logic.cs + Probability.cs) + 7 (Neural.cs) tous résolus mécaniquement contre les namespaces publics mesurés — validateur cité dans le body de la PR.
    • Verdict 05/10 conservé sans élargissement : les non-mesures capacité par capacité (Tweety vs procédures de Logic.cs, Infer.NET vs modes de Probability.cs, ML.NET vs besoins de Neural.cs) vivent dans limits_not_measured — pas transformées en couverture totale.
    • Licence : non mesure (aucun fichier LICENSE dans le clone, métadonnées vides pour aima), pointeurs upstream consignés (aimacode/aima-java, heatonresearch, JoshClose, AricieConseil).

    Le reliquat restant de l'acceptance — réécriture du corps de l'EPIC #7265 pour faire sortir Logic/Probability/Neural de « non réclamés » — reste à sa lane porteuse ; le claim paths reste actif jusqu'au merge de la PR.

    See #19197 · Part of #7265

  5. added a commit that references this issue on Oct 8, 2026
  6. jsboige commented on Oct 8, 2026

    @jsboige
    OwnerAuthor

    Correction de compte : encog-core-cs.dll porte 230 namespaces publics, pas 229 (recompte firsthand depuis la mesure brute ; le compte initial etait faux d'un). Corrige dans l'inventaire par l'amend e2d1a1af800, qui remplace aussi les extraits par la liste integrale (conservation dans le depot, pas dans le journal de lane). Tete de PR #19994 : e2d1a1af800.

  7. added a commit that references this issue on Oct 9, 2026
  8. added a commit that references this issue on Oct 10, 2026
  9. myia-ai-01 commented on Oct 14, 2026

    @myia-ai-01
    Collaborator

    [CLOSE] Fermeture par le coordinateur apres verification.

    Les trois verdicts sont rendus (Logic, Probability et Neural hors cible, avec le motif organ-first) et le reliquat informatif est depose dans MyIA.AI.Shared/External/{Aima,Aifh}/.inventory.json (PR #19994). La mise a jour du corps de l'EPIC #7265 reste sous #7265.

    Controles firsthand : PRs liees mergees (#19994), aucune PR ouverte qui reference l'issue, commentaires posterieurs a la livraison relus.

    Si un critere vous semble encore ouvert, rouvrez l'issue en le nommant.

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

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