更新 2.77
2026/6/10
SIN 鏈條建構器閘門3:AiScriptLab 驗證橋接器,用於 `SinApplyPlan`(read-only)— 驗證計劃,執行 NOT 套用;SIN 保持 BLOCKED 以進行寫入。 工作線 Jarvis-NEMESIS(MAGIC/SIN)。開啟 SIN 鏈條建構器的 閘門3:它接收 SHINRYU 的 preview-only `SinApplyPlan`(閘門2),並對其執行 AiScriptLab/`AiValidator` 相容 檢查,仍然 不載入怪物、不使用 `Rebuild`/`Splice`、不進行 AEON 差異比對、不使用磁碟,也不套用任何內容。它只回答一個問題:「這個 preview-only 計劃在結構上是否可接受(它會發出的位元組碼是 well-formed),以及還有哪些誠實的阻礙/警告/錯誤橫亙在它與套用之間?」。`FfxLib/Ai/Sin` 中的新類別:`SinPlanValidator`(`Validate(SinApplyPlan) → SinPlanValidationResult`,僅讀取 `AiScript_File` 靜態表 + `AiStackModel` + 該計劃)、`SinPlanValidationResult`(在計劃層級鏡像 `AiValidationReport` 的詞彙:`Errors`/`Blockers`/`Warnings`/`Infos`,`StructurallyValid` = 無錯誤,`ApplyAcceptable` = 在閘門3 依建構為 false)以及 `SinAiScriptLabBridge`(對鬆散的 low-level 串流執行 `AiInstruction` 檢查,無 `AiScriptFile`)。檢查(SOUND 離線子集,與 `AiValidator` 本身使用的相同):(1)每個操作碼 ∈ 48 個已驗證的操作碼(`AiScript_File.IsKnownOpcode`);(2)`HasOperand` 符合 `0x80` 大小規則(`IsOperandBearing`)— 否則 `Emit()` mis-sizes 該串流;(3)per-instruction RT0(`Emit()` re-decodes 到相同的操作碼+運算元);(4)透過 statement-level 進行 `AiStackModel` 堆疊平衡(線性主體淨值為 0;守衛留下 正好 1 個布林值 給 D7/POPXNCJMP)。三位飛行員的判決: 所有 結構有效的 BUT apply-BLOCKED (preview-only) — SIN-006/SIN-009 (線性) 平衡為淨零;SIN-010 (HP-guard) 恰好留下 1 個布林值 + 一個 net-0 動作。SHINRYU 的 DIV/MUL 發現處理了 EXPLICITLY (NEMESIS 決定 = 保留為 EXPECTED BLOCKER,執行 NOT 修正): 方向已證實 (透過 345 隻怪物普查 + `0x16=DIV` `0x17=MUL` + FFXDataParser 的 IDA/`FFX_Atel_InterpretWorkerOpcodes@0x864180`),因此 `AiSnippetLibrary` 的 `MUL` 繫結至 `0x16` 是一個已確認的錯誤 — 但 完整調和 (修正常數 + re-validate EVERY 消費者:`MonsterAiEditor`、`AiAutomation`、`--aiasm-rt0`/`--ai2`/`--ai3` + re-prove RT0/RT2) 是一個 專用的 PATCH,位於 read-only 驗證閘門之外 (且 RT2 在閘門 3 中被禁止)。結構性見解證明瞭為何它必須是 BLOCKER 而非錯誤:`AiStackModel` 給出 BOTH DIV 和 MUL 的淨值 -1 → 堆疊平衡完全相同,位元組 re-parses,且 只有 RT2 捕捉到錯誤的算術。驗證器將其顯示為 警告 + 阻擋,附上完整證據,且閘門確認 HP% 配方 保持封鎖 且已 NOT 靜默修正 (規劃器仍會發出 `0x16`,`AiSnippetLibrary` 未受影響)。附加 (non-breaking) 擴充: `SinPlannedStep` 獲得了 `GuardOps`/`BodyOps` (規劃器已計算出的原始 `AiInstruction`),因此驗證器 精確 檢查規劃器產生的內容 (單一事實來源;預設為空 → 每個 Gate-2 建構站點持續編譯,且 `--sin-dryrun-rt0` 保持 PASS)。新的 read-only 閘門 `--sin-validate-rt0`:驗證 3 個試點並斷言 structurally-valid + apply-NOT-acceptable + 誠實的阻擋者 + 晉升階梯未滿足 + 無候選人→authoring-ready + (SIN-010) 存在 DIV/MUL 阻擋器且 not-fixed;確定性驗證。MINOR (NEW 可執行能力:驗證器 + 閘門)。範圍/誠實性: SIN 保持 BLOCKED 以進行寫入 — 閘門 3 驗證計劃,但不套用計劃;「清理 DESIGN 尚未解鎖給 WRITING」 — 而且 clean-structure 也不會解鎖寫入。它會 NOT 執行寫入器/儲存/`Rebuild`/`Splice`/AEON 差異/備份/RT2/按鈕/UI;它會 NOT 觸及 `monster_.bin`/runtime/Aurora/native-menu/Blitzball/Shop/Mix/Sphere/`Common`(ANIMA) 或 `MonsterAiEditor`。建置 0 錯誤;`--sin-validate-rt0` + `--sin-dryrun-rt0` (閘門 2,無回歸) + `--aicmdmeta-rt0` + `--spiraatlas-rt0` + `--aiasm-rt0` (AiScriptLab,真實語料庫上 346/346 RT0) 全部 PASS。文件:`docs/ai/SIN_NEMESIS_AISCRIPTLAB_VALIDATION_RESULT_2026-06-10.md` + `docs/ai/HANDOFF_NEMESIS_SIN_AEON_DIFF_GATE_NEXT_2026-06-10.md`。[前一個:`v2.76.0`] — Jarvis-NEMESIS
閱讀說明