アップデート 2.79
2026/6/10
v2.79.0BETAMINOR
Seymour
SIN Chain Builder Gate 5:operator-gated バックアップ/適用 SANDBOX――使い捨ての COPY に適用し、UNDOES を byte-identical;SIN は公開書き込み用に BLOCKED のまま
- (MAGIC/SIN)。SIN Chain Builder の Gate 5 を開き、
SinApplyPlan検証済み(Gate 3/NEMESIS)かつ AEON-reviewed 済み(Gate 4/OMEGA)のものが、サンドボックス/管理下のコピーで 適用して元に戻せることを証明――ゲームにも実ユーザーファイルにも触れず、RT2 も公開ボタンも使わない。バックアップ/適用サンドボックスは公開 authoring ではない。 sandbox-only クラスをFfxLib/Ai/Sinに追加:SinSandboxApplyGate(SinSandboxEligibility――8つの read-only 条件:structurally-valid・ApplyAcceptableは false のまま・SEPARATE による明示的なAllowSandboxApply権限・AEON ADDED-only・クリア可能な足場以外に重大なブロッカーがないこと。Gate 5 自身が解消するブロッカー(plan-blocker/rung-ladder)と、実際のブロッカー(candidate/blocked payload、divmul-integrity、jump-slots、step-blocker)を分ける規則)、SinSandboxApplySession(オーケストレーター:コピー → backup-before-write → コピーにだけ実エミット → 実 diff → 元が変更されていないことを確認 → 復元 → byte-identical)、SinSandboxBackup(コピーの.prev.bak+pre-image ハッシュ+Restore)、SinSandboxRestoreVerifier(SHA-256+byte-compare)およびSinSandboxApplyResult(検査可能な結果+出力テンプレート)。 REAL は実証済み codec 経由で適用: 対象レシピでは 実モンスターの使い捨てコピー(コーパスの read-only →work/)をロードし、AppendGuardedAction(always-true ガードPUSHII 1) で線形ボディを構築する――既存オフセットを安定させたまま、コード末尾に 追加する唯一のクリーンで self-relocating な方法。SpliceAiFileIntoMonsterGrowを実行し、re-reads(re-parses の clean=offline-emittablerung)し、REALAiScript_Diff.Compare(original, edited)(意図した ADDED ブロックだけ、0 modified / 0 removed=AEON-reviewedrung、ドリフトなし)+AiValidator.ValidateRebuilt(AiScriptLab-cleanrung)を実行し、その後で初めて COPY に書き込む(.prev.bak=backup-readyrung の後)。3つのパイロットレシピ(正直さの判断であり、無理に green にしない): SIN-006(Véu de Bevelle、turn-1 self-buff;実証済みの Self ターゲット、no command payload、0x16/0x17 なし)=唯一の ONLY 対象→実サンドボックス適用(m201、OnTurn はAiWorkerMapping.TryResolveCombatOnTurn経由で解決、diff +15 ~0 -0、byte-identical restore、元/コーパスのハッシュ不変);SIN-009(Mandato do Maester;candidate ペイロード)=保守的に BLOCKED(使い捨てコピーだからといって不正直なペイロードを書き込む理由にはならない;判断を記録);SIN-010(Farplane Toll、HP%)=BLOCKED、0x16DIV と意図した HP% の乗算の不整合による(divmul-integrity)――0x16/0x17 は別レーンの専用 PATCH であり、NEVER はここで修正済み。追加の証拠:AllowSandboxApply権限なしでは SIN-006 さえ BLOCKED(operator-gated);予期しない(改ざんされた)diff は拒否される(同じ保守的な述語、+0 ~1 -0 → conservative=False)。 元のファイルには決して書き込まない(参照コピーAppliedToOriginal=NOと実コーパスのソースの両方をハッシュして AND 証明)。新しいゲート--sin-sandbox-rt0:3つのレシピを実行し、バックアップ/復元/分離を証明し、ファイルシステムガード(work/の外には何も書き込まない、出力ディレクトリに.prev.bak/monster_*.binを作らない、すべての実フィクスチャが read-only でハッシュ不変、最後にサンドボックスディレクトリを清掃――残留物なし、コミットもしない)。(NEW の実行可能な機能:サンドボックス適用レイヤー+ゲート;コピー上で offline-emittable/AiScriptLab-clean/AEON-reviewed/backup-ready の各 rung を通過)。対象範囲/正直さ: SIN は BLOCKED のまま公開書き込み用――Gate 5 はサンドボックス/コピーにだけ適用し、NOT RT2 であり、NOT 公開ボタンではない;PublicApplyAllowed=NO/Rt2=NOは構造上そうなる。公開 writer/save/runtime/RT2/UI/button をMonsterAiEditor内で NOT は行わず、実monster_*.bin/Aurora/native-menu/Blitzball/Shop/Mix/Sphere/Common(ANIMA)にも NOT は触れない;SinDryRunPlanner/SinPlanValidator/SinAeonDiffPlanner+AiScript_File.AppendGuardedAction/SpliceAiFileIntoMonsterGrow/AiScript_Diff/AiValidatorを再利用(round-trip は--aiasm-rt0によりすでに345/345を実証済み)。ビルドは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-rt0はすべて PASS。ドキュメント: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