Mise à jour 2.195
31/07/2026
v2.195.0.0BETAMINOR
Seymour31 juil. 2026
P2-B L2 (adaptateur HTTP du contrat LLM) + P2 L1 (IR sémantique ATEL + diff à trois couches)
- Contrat LLM L2 (
Core/LLM/LlmHttpAdapter.cs+ 8 tests) : appel de modèle avec timeout (CancelAfter), annulation, lecture de flux bornéeMaxResponseBytes, parse JSON strict (JsonUnmappedMemberHandling.Disallow— champ inconnu = MalformedPayload), clé UNIQUEMENT dans l'en-têteAuthorization: Bearer(jamais body/log/exception ; rédaction de motifs + rédaction exacte de clé de session), l'hôte non-loopback refuse sans confirmation AVANT de toucher le réseau, base64 validé, les échecs deviennent toujours unLlmResulttypé avec message rédigé (pas de stack brut).LlmCredentiala gagné un accesseur interne contrôlé (ReadApiKeyCopy— copie, jamais sérialisée ; réflexion retirée). Zéro réseau réel dans les tests (fake DelegatingHandler). - P2 L1 — IR sémantique ATEL (
FfxLib/Ai/AiSemanticScript.cs+AiDiffThreeLayer.cs+ 10 tests) : overlay 100 % additif par-dessus le codec (AiScript_File entièrement intact, RT0 361/361 préservé) :AiEvidenceState(Decoded/Hypothesis/Confirmed — L1 ne produit que du Decoded),AiInstructionNodepar (worker, offset) avecMeaningenrichi via le vraiAiCommandId.Decode(ex.PUSHII -> Firaga) ;ThreeLayerDiff= couche d'octets + désassemblage (AiScript_Diff.Compareréutilisé) + sémantique (noms de commandes/preuves). Validé contre les fixtures réellesm000.bin/m001.bin(vrai AiFile du corpus) + fixture synthétique RT0 byte-identique. Correctif d'attente de sous-agent : le script3C D8 5F 00 3C 3Cde m000 a 4 instructions (RET | CALLPOPA 3B | RET | RET), pas 3 — Build avait raison. - Baseline : 185/185 PASS (164 → 185). ### MINOR
v2.194.0.0