Mise à jour 2.40
09/06/2026
v2.40.0BETA
Seymour
Assembleur d’IA : un correcteur de pile (Niveau 1+2) — avertit quand une édition vide la pile + dit comment la corriger
- Le propriétaire a demandé un « mini-correcteur IA » qui aide à corriger les erreurs d'assemblage. Le validateur attrapait déjà opcode invalide / jump pendant / index OOB, mais pas l'erreur #1 d'édition manuelle : le déséquilibre de pile. Maintenant il le fait. RE-grounded (FFXDataParser) : nouveau
FfxLib/Ai/AiStackModel.cs= effet de pile par opcode (depuisOPCODE_STACKPOPS) + arité de 269 fonctions (ScriptFuncLibcomptes d'entrée ; accesseur = subject?+index+value?).AiValidatorsimule la profondeur de pile (réinitialiser à 0 à l'entrypoint/jump-target) et rapporte l'underflow. Twist honnête clé : les arités du parser ne correspondent pas toujours à la vraie VM (prouvé :setSelfFloating 0x7029parser dit 2, le corpus pousse 1) — donc au lieu du compte absolu (qui ferait un faux positif sur du code valide), il diffe la pile ORIGINALE vs ÉDITÉE : le bruit d'arite existe dans les deux et s'annule, ne laissant que ce que VOTRE édition a cassé. Le message (Niveau 2) dit en langage clair où elle s'est vidée + comment la corriger (« remettez le PUSH qui était un argument ; chaque instruction pousse les args PUIS appelle »). Auto-surfacé dans le panneau Validation. Porte--ai2: validateur propre 346/346 (zéro faux positif sur le corpus) + stack-break attrapé 1/1 (prouve qu'il attrape un arg-push supprimé) ;--ai3PASS ; RT0 byte-identique (analyse seulement, zéro octets). Build éditeur 0 erreur. Honnête : il détecte ce que l'édition introduit ; l'arite fine de certaines fonctions = RE publique (calibration corpus = futur)
v2.39.2
v2.40.1BETA
Seymour
Assembleur d’IA : un bouton « Try to fix » (Niveau 3, auto-fix honnête)
- Ferme le correcteur : un bouton 🪄 Try to fix à côté de Validate/Save. La règle honnête (celle du propriétaire) : n'appliquer qu'un fix qui a UNE SEULE réponse correcte ; suggérer le reste, ne jamais deviner. Dans le modèle assembleur (qui dérive
HasOperandde l'opcode lui-même), le seul fix sans ambiguïté est restaurer une rangée que vous avez marquée pour suppression et qui s'avère être la CIBLE d'un jump/entrypoint — elle DOIT rester (re-pointer la branche changerait le comportement = une devinette). Le bouton re-valide en boucle, dé-supprime ces cibles pendantes (résolvant le cas #1 « j'ai supprimé quelque chose et ça a cassé »), et pour les erreurs SANS réponse unique (opcode invalide, jump-index OOB, l'underflow de pile Niveau-1) il explique dans le rapport quoi faire mais ne les touche PAS — « je ne devine pas votre intention ». Rapporte combien il a fixé + combien attendent encore votre décision.MonsterAiEditor_DataModel.Assembler.TryAutoFixAssembler(utilise leAiValidatortesté par la porte ; ne modifie jamais un opérande/opcode ni ne supprime quoi que ce soit). Build éditeur 0 erreur ;--ai2/--ai3PASS (RT0 byte-identique — il ne fait que retourner les drapeaux de suppression de la VM, aucun changement d'octets). Honnête : un auto-fix qui devine l'intention = un bug silencieux, donc le bouton est conservateur par design
v2.40.0