Atualização 2.79
10/06/2026
v2.79.0BETAMINOR
Seymour
SIN Chain Builder Gate 5: backup/apply operator-gated SANDBOX — aplica a um COPY descartável e UNDOES byte-identical; SIN fica BLOCKED para escrita pública
- Abre o Gate 5 do SIN Chain Builder: prova que um
SinApplyPlanvalidado (Gate 3/NEMESIS) e AEON-reviewed (Gate 4/OMEGA) pode ser aplicado e desfeito numa cópia sandbox/controlada — sem tocar o jogo, sem tocar nenhum arquivo real de usuário, sem RT2 e sem botão público. Backup/apply sandbox não é autoria pública. Novas classes sandbox-only emFfxLib/Ai/Sin:SinSandboxApplyGate(SinSandboxEligibility— as 8 condições read-only: structurally-valid ·ApplyAcceptablepermanece falso · uma permissão SEPARATE explícitaAllowSandboxApply· AEON ADDED-only · sem blocker crítico fora do scaffolding limpável, a regra que separa os blockers que o próprio Gate 5 resolve (plan-blocker/rung-ladder) dos reais (payload candidato/bloqueado,divmul-integrity,jump-slots, step-blocker)),SinSandboxApplySession(orquestrador: copy → backup-before-write → emit real só na cópia → diff real → verificar o original intocado → restore → byte-identical),SinSandboxBackup(.prev.bakda cópia + hash pre-image +Restore),SinSandboxRestoreVerifier(SHA-256 + byte-compare) eSinSandboxApplyResult(resultado inspecionável + template de output). Apply REAL via o codec provado: para a receita elegível ele carrega uma cópia descartável de um monstro real (read-only do corpus →work/), constrói o corpo linear viaAppendGuardedAction(guard always-truePUSHII 1) — o único método limpo, self-relocating que anexa no fim do código (offsets existentes estáveis), rodaSpliceAiFileIntoMonsterGrow, re-reads (re-parses limpo = toqueoffline-emittable), roda um REALAiScript_Diff.Compare(original, edited)(só o bloco ADDED pretendido, 0 modificado / 0 removido = toqueAEON-reviewed, sem drift) +AiValidator.ValidateRebuilt(toqueAiScriptLab-clean), e só então escreve no COPY (após o.prev.bak= toquebackup-ready). 3 receitas piloto (decisão de honestidade, nunca verde forçado): SIN-006 (Véu de Bevelle, turn-1 self-buff; target Self provado, sem payload de comando, sem 0x16/0x17) = a elegível ONLY → apply sandbox real (m201, OnTurn resolvido viaAiWorkerMapping.TryResolveCombatOnTurn, diff +15 ~0 -0, restore byte-identical, original/corpus com hash inalterado); SIN-009 (Mandato do Maester; payload candidato) = conservadoramente BLOCKED (uma cópia descartável não é desculpa para escrever um payload desonesto; decisão documentada); SIN-010 (Farplane Toll, HP%) = BLOCKED pelo0x16DIV vs multiplicar HP% pretendido (divmul-integrity) — 0x16/0x17 é um PATCH dedicado em outra lane, NEVER corrigido aqui. Provas extras: sem a permissãoAllowSandboxApplyaté SIN-006 é BLOCKED (operator-gated); um diff inesperado (adulterado) é rejeitado pelo mesmo predicado conservador (+0 ~1 -0 → conservative=False); o original nunca é escrito (AppliedToOriginal=NO, provado hasheando tanto a cópia de referência AND a fonte real do corpus). Novo gate--sin-sandbox-rt0: roda as 3 receitas, prova backup/restore/isolação e um guard de filesystem (nada escrito fora dework/, sem.prev.bak/monster_*.binno dir de output, toda fixture real read-only com hash inalterado, o dir do sandbox limpo no fim — sem resíduo, nunca commitado). (capacidade executável NEW: camada de apply sandbox + gate; cruza os toques offline-emittable/AiScriptLab-clean/AEON-reviewed/backup-ready numa cópia). Escopo/honestidade: SIN fica BLOCKED para escrita pública — o Gate 5 aplica só a um sandbox/cópia, é NOT RT2 e NOT um botão público;PublicApplyAllowed=NO/Rt2=NOpor construção. Não NOT faz writer/save/runtime/RT2/UI/botão público noMonsterAiEditor; não NOT toca ummonster_*.bin/Aurora/native-menu/Blitzball/Shop/Mix/Sphere/Commonreal(ANIMA); reutilizaSinDryRunPlanner/SinPlanValidator/SinAeonDiffPlanner+AiScript_File.AppendGuardedAction/SpliceAiFileIntoMonsterGrow/AiScript_Diff/AiValidator(o round-trip já provado 345/345 por--aiasm-rt0). Build 0 erros;--sin-sandbox-rt0+--sin-aeon-preview-rt0(Gate 4) +--sin-validate-rt0(Gate 3) +--sin-dryrun-rt0(Gate 2) +--aicmdmeta-rt0+--spiraatlas-rt0+--aiasm-rt0todos 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