Mise à jour 2.79
10/06/2026
v2.79.0BETAMINOR
Seymour
SIN Chain Builder Gate 5 : sandbox de sauvegarde/application opérateur-gated — applique à une COPIE jetable et la DÉFAIT byte-identique ; SIN reste BLOQUÉ pour l'écriture publique
- Ouvre Gate 5 du SIN Chain Builder : il prouve qu'un
SinApplyPlanvalidé (Gate 3/NEMESIS) et revu AEON (Gate 4/OMEGA) peut être appliqué et annulé dans une sandbox/copie contrôlée — sans toucher le jeu, sans toucher aucun vrai fichier utilisateur, sans RT2 et sans bouton public. La sandbox de sauvegarde/application n'est pas de l'édition publique. Nouvelles classes sandbox-only dansFfxLib/Ai/Sin:SinSandboxApplyGate(SinSandboxEligibility— les 8 conditions en lecture seule : structurellement valide ·ApplyAcceptablereste false · une permission explicite SÉPARÉEAllowSandboxApply· AEON ADDED-only · aucun bloqueur critique hors de l'échafaudage effaçable, la règle qui sépare les bloqueurs que Gate 5 lui-même résout (plan-blocker/rung-ladder) des vrais (payload candidat/bloqué,divmul-integrity,jump-slots, step-blocker)),SinSandboxApplySession(orchestrateur : copie → backup-before-write → émission réelle vers la copie uniquement → diff réel → vérifier que l'original est intact → restaurer → byte-identique),SinSandboxBackup(.prev.bakde la copie + hash de pré-image +Restore),SinSandboxRestoreVerifier(SHA-256 + comparaison d'octets) etSinSandboxApplyResult(résultat inspectable + template de sortie). APPLICATION RÉELLE via le codec prouvé : pour la recette éligible, il charge une copie jetable d'un vrai monstre (lecture seule depuis le corpus →work/), construit le corps linéaire viaAppendGuardedAction(garde toujours-vraiePUSHII 1) — la seule méthode propre et auto-relocalisante qui ajoute à la fin du code (offsets existants stables), exécuteSpliceAiFileIntoMonsterGrow, relit (re-parse propre = rungoffline-emittable), exécute un VRAIAiScript_Diff.Compare(original, edited)(seulement le bloc ADDED prévu, 0 modifié / 0 supprimé = rungAEON-reviewed, pas de dérive) +AiValidator.ValidateRebuilt(rungAiScriptLab-clean), et seulement alors écrit vers la COPIE (après le.prev.bak= rungbackup-ready). 3 recettes pilotes (une décision d'honnêteté, jamais forcée au vert) : SIN-006 (Véu de Bevelle, auto-buff tour-1 ; cible Self prouvée, pas de payload de commande, pas de 0x16/0x17) = la SEULE éligible → application sandbox réelle (m201, OnTurn résolu viaAiWorkerMapping.TryResolveCombatOnTurn, diff +15 ~0 -0, restauration byte-identique, hash original/corpus inchangé) ; SIN-009 (Mandato do Maester ; payload candidat) = BLOQUÉ conservateur (une copie jetable n'est pas une excuse pour écrire un payload malhonnête ; décision documentée) ; SIN-010 (Farplane Toll, HP%) = BLOQUÉ par le0x16DIV vs le HP% multiply prévu (divmul-integrity) — 0x16/0x17 est un PATCH dédié sur une autre voie, JAMAIS corrigé ici. Preuves supplémentaires : sans la permissionAllowSandboxApplymême SIN-006 est BLOQUÉ (opérateur-gated) ; un diff inattendu (altéré) est rejeté par le même prédicat conservateur (+0 ~1 -0 → conservative=False) ; l'original n'est jamais écrit (AppliedToOriginal=NO, prouvé en hachetant la copie de référence ET la source réelle du corpus). Nouvelle porte--sin-sandbox-rt0: exécute les 3 recettes, prouve backup/restore/isolation, et une garde de fichiers (rien n'est écrit horswork/, pas de.prev.bak/monster_*.bindans le dossier de sortie, chaque fixture réelle en lecture seule avec un hash inchangé, le dossier sandbox nettoyé à la fin — aucun résidu, jamais committé). (NOUVELLE capacité exécutable : couche d'application sandbox + porte ; traverse les rungs hors ligne-emittable/AiScriptLab-clean/AEON-reviewed/backup-ready sur une copie). Périmètre/honnêteté : SIN reste BLOQUÉ pour l'écriture publique — Gate 5 s'applique seulement à une sandbox/copie, ce n'est PAS RT2 et PAS un bouton public ;PublicApplyAllowed=NO/Rt2=NOpar construction. Il ne fait PAS d'écrivain/save/runtime/RT2/UI/button public dansMonsterAiEditor; il ne touche PAS un vraimonster_*.bin/Aurora/native-menu/Blitzball/Shop/Mix/Sphere/Common(ANIMA) ; il réutiliseSinDryRunPlanner/SinPlanValidator/SinAeonDiffPlanner+AiScript_File.AppendGuardedAction/SpliceAiFileIntoMonsterGrow/AiScript_Diff/AiValidator(le round-trip déjà prouvé 345/345 par--aiasm-rt0). Build 0 erreur ;--sin-sandbox-rt0+--sin-aeon-preview-rt0(Gate 4) +--sin-validate-rt0(Gate 3) +--sin-dryrun-rt0(Gate 2) +--aicmdmeta-rt0+--spiraatlas-rt0+--aiasm-rt0tous 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