Repository navigation
[#7265 · residu B2] Logic/Probability/Neural -- descripteurs AIMA (IKVM) et AIFH : scope et decision de port #19197
Description
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,ProbabilityetNeuraln'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 :
Logic(PL/FOL) — le dépôt porte déjàTweetyen 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 ») etZ3.Linqpour le SMT. Porter un second pont FOL serait un doublon d'organe.Probability(bayésien) — le dépôt porte Infer.NET (Probas/). Idem : la question est « Infer.NET tient-il le rôle ? », pas « comment porterBayesianNetworkInfo».Neural—Encog/AIFH-Vol3sont des DLL tierces, etSystem.Web.Securityest 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-implementationdans le body de la PR qui le porte.
Mesures prises firsthand sur Aricie.PortalKeeper@master (arbre local), 2026-10-05.
Activity
jsboige commentedon Oct 5, 2026
[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.
jsboige commentedon Oct 5, 2026
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
*Infodevant une DLL tierce (AIMA Java via IKVM pourLogic/Probability, AIFH_Vol3 pourNeural). 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 :Logic(PL/FOL)MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/— 19 projets de shading (build-Tweety7aShade.csproj…), +SMT/Z3.Linqpour le SMTProbability(bayésien)MyIA.AI.Notebooks/Probas/Infer/(+DecisionTheory/, inventaires de paritéPARITY-INVENTORY.md,LEAN_INVENTORY.md)NeuralMicrosoft.MLréférencé dansMyIA.AI.Notebooks/MyIA.AI.Notebooks.csprojVerdict, 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-implementationinterdit 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.BayesianNetworkInfone 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 dansLibraries/AI/external/Encog/) et le fichier tireSystem.Web.Security(WebForms, hors ciblenet9.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 deProbability.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 (
*Infosérialisables, décorés pour leComponentModeldu 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 surmain.Reste à faire (acceptance)
External/{Aima,Aifh}/.inventory.json— non fait ici : il demande de mesurer les DLL et les noms de types par réflexion, ce qui est une tranche à part entière.Logic/Probability/Neuraly sortent de « non réclamés » et y entrent comme hors cible, motif organ-first.myia-ai-01 commentedon Oct 8, 2026
[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.)jsboige commentedon Oct 8, 2026
Livraison de l'inventaire : PR #19994 (
feature/19197-aima-aifh-inventories, têtee6978990631) —MyIA.AI.Shared/External/{Aima,Aifh}/.inventory.json, +308 lignes, sur le précédent Flee.System.Reflection.Metadataen lecture seule (PEReader + MetadataReader), SHA-256 parGet-FileHash— aucune exécution IKVM, aucun binaire tiers embarqué.limits_not_measured— pas transformées en couverture totale.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/Neuralde « non réclamés » — reste à sa lane porteuse ; le claim paths reste actif jusqu'au merge de la PR.See #19197 · Part of #7265
fix(shared,#19197): liste integrale des 230 namespaces encog dans l'i…
jsboige commentedon Oct 8, 2026
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.Fix(shared,#19197): suites review NanoClaw -- convention de comptage …
feat(shared,#19197): inventaires metadata-only External/{Aima,Aifh} -…
myia-ai-01 commentedon Oct 14, 2026
[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)