Aggiornamento 2.40
09/06/2026
v2.40.0BETA
Seymour
AI Assembler: un correttore stack (Level 1+2) — avvisa quando un edit svuota lo stack + dice come fixarlo
- Il proprietario ha chiesto un "mini-correttore AI" che aiuti a fixare errori di assembly. Il validator già catturava opcode non valido / jump pendente / index OOB, ma (letterale tecnico: mini-AI)non l'errore #1 di hand-edit: lo sbilanciamento stack. Ora lo fa. RE-grounded (FFXDataParser): nuovo
FfxLib/Ai/AiStackModel.cs= effetto stack per-opcode (daOPCODE_STACKPOPS) + arity di 269 funzioni (ScriptFuncLibinput counts; accessor = subject?+index+value?).AiValidatorsimula la profondità stack (reset a 0 a entrypoint/jump-target) e riporta l'underflow. Twist onesto chiave: le arity del parser non sempre corrispondono al VM reale (provato:setSelfFloating 0x7029il parser dice 2, il corpus spinge 1) — quindi invece del conteggio assoluto (che darebbe falsi positivi su codice valido), diffa lo stack (letterale tecnico: false-positive)ORIGINAL vs EDITED: il rumore di arity esiste in entrambi e si cancella, lasciando solo ciò che il TUO edit ha rotto. Il messaggio (Level 2) dice in linguaggio semplice dove si è svuotato + (letterale tecnico: YOUR)come fixarlo ("rimetti il PUSH che era un argomento; ogni statement spinge gli argomenti POI chiama"). Auto-emerge nel pannello Validation. Gate (letterale tecnico: THEN) (letterale tecnico: Auto-surfaces)--ai2: validator pulito 346/346 (zero falsi positivi sul corpus) + stack-break catturato 1/1 (prova che cattura un arg-push rimosso);--ai3PASS; RT0 byte-identical (solo analisi, zero byte). Build editor 0 errori. Onesto: rileva ciò che l'edit introduce; l'arity fine di alcune funzioni = RE pubblica (calibrazione corpus = futuro)
v2.39.2
v2.40.1BETA
Seymour
AI Assembler: un pulsante "Try to fix" (Level 3, auto-fix onesto)
- Chiude il correttore: un pulsante 🪄 Try to fix accanto a Validate/Save. La regola onesta (quella del proprietario): applica solo un fix che ha UNA singola risposta corretta; suggerisci il resto, mai indovinare. Nel modello assembler (che deriva (letterale tecnico: SINGLE)
HasOperanddall'opcode stesso), l'unico fix non ambiguo è ripristinare una riga che hai marcato per la rimozione ma che risulta essere il TARGET di un jump/entrypoint — DEVE restare (ri-puntare il branch cambierebbe il comportamento = una congettura). Il pulsante ri-valida in loop, un-rimuove quei target pendenti (risolvendo il caso #1 "ho rimosso qualcosa e si è rotto"), e per gli errori SENZA una singola risposta (opcode non valido, jump-index OOB, l'underflow stack Level-1) (letterale tecnico: MUST) (letterale tecnico: re-pointing) (letterale tecnico: re-validates) (letterale tecnico: un-removes) (letterale tecnico: WITHOUT)spiega nel report cosa fare ma NON li tocca (letterale tecnico: NOT) — "non indovino la tua intenzione". Riporta quanti ne ha fixati + quanti richiedono ancora la tua decisione.MonsterAiEditor_DataModel.Assembler.TryAutoFixAssembler(usa l' (letterale tecnico: gate-tested)AiValidatorgate-testato; non modifica mai un operando/opcode né rimuove nulla). Build editor 0 errori;--ai2/--ai3PASS (RT0 byte-identical — capovolge solo i flag di rimozione della VM, nessun cambio byte). Onesto: un auto-fix che indovina l'intento = un bug silenzioso, quindi il pulsante è conservativo by design
v2.40.0