Update 2.79
6/10/2026
v2.79.0BETAMINOR
Seymour
SIN Chain Builder Gate 5: operator-gated backup/apply SANDBOX — applies to a throwaway COPY and UNDOES it byte-identical; SIN stays BLOCKED for public writing
- Opens Gate 5 of the SIN Chain Builder: it proves a
SinApplyPlanvalidated (Gate 3/NEMESIS) and AEON-reviewed (Gate 4/OMEGA) can be applied and undone in a sandbox/controlled copy — without touching the game, without touching any real user file, without RT2 and without a public button. Backup/apply sandbox is not public authoring. New sandbox-only classes inFfxLib/Ai/Sin:SinSandboxApplyGate(SinSandboxEligibility— the 8 read-only conditions: structurally-valid ·ApplyAcceptablestays false · a SEPARATE explicitAllowSandboxApplypermission · AEON ADDED-only · no critical blocker outside the clearable scaffolding, the rule that separates the blockers Gate 5 itself resolves (plan-blocker/rung-ladder) from the real ones (candidate/blocked payload,divmul-integrity,jump-slots, step-blocker)),SinSandboxApplySession(orchestrator: copy → backup-before-write → real emit to the copy only → real diff → verify the original is untouched → restore → byte-identical),SinSandboxBackup(.prev.bakof the copy + pre-image hash +Restore),SinSandboxRestoreVerifier(SHA-256 + byte-compare) andSinSandboxApplyResult(inspectable result + output template). REAL apply via the proven codec: for the eligible recipe it loads a throwaway copy of a real monster (read-only from the corpus →work/), builds the linear body viaAppendGuardedAction(always-true guardPUSHII 1) — the only clean, self-relocating method that appends at end of code (existing offsets stable), runsSpliceAiFileIntoMonsterGrow, re-reads (re-parses clean =offline-emittablerung), runs a REALAiScript_Diff.Compare(original, edited)(only the intended ADDED block, 0 modified / 0 removed =AEON-reviewedrung, no drift) +AiValidator.ValidateRebuilt(AiScriptLab-cleanrung), and only then writes to the COPY (after the.prev.bak=backup-readyrung). 3 pilot recipes (an honesty decision, never forced green): SIN-006 (Véu de Bevelle, turn-1 self-buff; proven Self target, no command payload, no 0x16/0x17) = the ONLY eligible one → real sandbox apply (m201, OnTurn resolved viaAiWorkerMapping.TryResolveCombatOnTurn, diff +15 ~0 -0, byte-identical restore, original/corpus hash unchanged); SIN-009 (Mandato do Maester; candidate payload) = conservatively BLOCKED (a throwaway copy is no excuse to write a dishonest payload; documented decision); SIN-010 (Farplane Toll, HP%) = BLOCKED by the0x16DIV vs intended HP% multiply (divmul-integrity) — 0x16/0x17 is a dedicated PATCH on another lane, NEVER fixed here. Extra proofs: without theAllowSandboxApplypermission even SIN-006 is BLOCKED (operator-gated); an unexpected (tampered) diff is rejected by the same conservative predicate (+0 ~1 -0 → conservative=False); the original is never written (AppliedToOriginal=NO, proven by hashing both the reference copy AND the real corpus source). New gate--sin-sandbox-rt0: runs the 3 recipes, proves backup/restore/isolation, and a filesystem guard (nothing written outsidework/, no.prev.bak/monster_*.binin the output dir, every real fixture read-only with an unchanged hash, the sandbox dir cleaned at the end — no residue, never committed). (NEW executable capability: sandbox apply layer + gate; crosses the offline-emittable/AiScriptLab-clean/AEON-reviewed/backup-ready rungs on a copy). Scope/honesty: SIN stays BLOCKED for public writing — Gate 5 applies only to a sandbox/copy, it is NOT RT2 and NOT a public button;PublicApplyAllowed=NO/Rt2=NOby construction. It does NOT do a public writer/save/runtime/RT2/UI/button inMonsterAiEditor; it does NOT touch a realmonster_*.bin/Aurora/native-menu/Blitzball/Shop/Mix/Sphere/Common(ANIMA); it reusesSinDryRunPlanner/SinPlanValidator/SinAeonDiffPlanner+AiScript_File.AppendGuardedAction/SpliceAiFileIntoMonsterGrow/AiScript_Diff/AiValidator(the round-trip already proven 345/345 by--aiasm-rt0). Build 0 errors;--sin-sandbox-rt0+--sin-aeon-preview-rt0(Gate 4) +--sin-validate-rt0(Gate 3) +--sin-dryrun-rt0(Gate 2) +--aicmdmeta-rt0+--spiraatlas-rt0+--aiasm-rt0all PASS. Docs:docs/ai/SIN_PENANCE_BACKUP_APPLY_SANDBOX_RESULT_2026-06-10.md+docs/ai/HANDOFF_PENANCE_SIN_RT2_PILOT_NEXT_2026-06-10.md
v2.78.1