アップデート 2.40
2026/6/9
v2.40.0BETA
Seymour
AI Assembler: スタック補正機能(Level 1+2)— 編集でスタックが空になったときに警告し、修正方法を示す
- オーナーは、アセンブリのエラー修正を助ける「mini-AI 補正機能」を求めた。バリデーターはすでに invalid opcode/dangling jump/index OOB を検出していたが、#1 hand-edit エラーであるスタック不整合は検出していなかった。今回から検出する。RE-grounded(FFXDataParser): 新しい
FfxLib/Ai/AiStackModel.cs= per-opcode のスタック効果(OPCODE_STACKPOPS由来)+ 269関数のアリティ(ScriptFuncLibの入力数。accessor = subject?+index+value?)。AiValidatorはスタック深度をシミュレートし(entrypoint/jump-target で0にリセット)、アンダーフローを報告する。正直なところ重要な点: パーサーのアリティは実際の VM と常に一致するわけではない(実証例:setSelfFloating 0x7029のパーサーは2とするが、コーパスは1つpushする)。そのため絶対数(有効なコードでも false-positive になってしまう)ではなく、ORIGINAL と EDITED のスタックを差分比較する。アリティのノイズは両方に存在して相殺され、残るのは YOUR の編集が壊した部分だけになる。Level 2のメッセージは、どこで空になったかを平易に説明し、修正方法も示す(「引数だった PUSH を戻すこと。すべてのステートメントは THEN 呼び出しの引数をpushする」)。Auto-surfaces をValidationパネルに追加。ゲート--ai2: validator clean 346/346(コーパスで誤検出0)+ stack-break が1/1を検出(削除された arg-push を捕捉できることを証明);--ai3PASS; RT0 byte-identical(解析のみ、バイト変更0)。エディターのビルドエラー0。正直なところ: 編集によって導入されたものを検出する。いくつかの関数の正確なアリティ = 公開 RE(コーパスによる調整は今後)
v2.39.2
v2.40.1BETA
Seymour
AI Assembler: 「Try to fix」ボタン(Level 3、正直な auto-fix)
- 補正機能を仕上げるため、Validate/Save の隣に 🪄 Try to fix ボタンを追加した。正直なルール(オーナー自身の方針): SINGLE 正解が確定している修正だけを適用し、それ以外は提案にとどめ、決して推測しない。
HasOperandをオペコード自体から導出するアセンブラーモデルでは、唯一曖昧さのない修正は、削除対象に印を付けた行が実はジャンプ/エントリーポイントの TARGET だった場合に復元すること — MUST は残す(re-pointing ブランチが変わって挙動が変わるのは推測になる)。ボタンはループ内で re-validates、そのダングリングターゲットを un-removes(#1の「I が何かを削除して壊れた」ケースを解決)し、単一の答えがないエラー(invalid opcode、jump-index OOB、Level-1 スタックアンダーフロー)については WITHOUT、レポートで何をすべきかを説明するが NOT 触れない — 「I は意図を推測しない」。修正した件数と、ユーザーの判断がまだ必要な件数を報告する。MonsterAiEditor_DataModel.Assembler.TryAutoFixAssembler(gate-testedAiValidatorを使用。オペランド/オペコードの編集や削除は一切しない)。エディターのビルドエラー0;--ai2/--ai3PASS(RT0 byte-identical — VM の削除フラグを反転するだけで、バイト変更はない)。正直なところ: 意図を推測する auto-fix は静かなバグになるため、ボタンは設計上保守的にしている
v2.40.0