업데이트 2.197
2026. 7. 31.
v2.197.0.0BETAMINOR
Seymour2026년 7월 31일
P2 L2: AtelPhaseRotationAdapter (오프라인 byte-local 작성자) + OperationPreview (사용 가능한 3-layer diff) + source/IDA 검증
Core/Writers/AtelPhaseRotationAdapter.cs(atel-recipe-phase-rotation, 카탈로그에 등록됨, 10개 테스트): 몬스터 빈에서 추출한AiPhaseRotationRecipe.Apply에 대해 API (실제 in-memory, AiFile)을 적용합니다; WHOLE-bin 해시 전제 조건은ValidateMonsterBinHash을 통해 검증합니다 (불일치 시 → 스테이징에 접근하기 전에 예외 발생); pre-validationCodeWalkClosedExactly; post-validation의 3중 조합 (CodeWalkClosedExactly+UnknownOpcodes == 0+RoundTripsByteIdentical); re-insertion을 통한SpliceAiFileIntoMonsterGrow(실제 코덱 API) 및 re-slice 검증; 실제 레시피 구조를 반영한 허용 목록 (BattleStart/AfterAnyValidTurn 트리거 차단 — 정직한 클래스 B/성장);ComputeDryRunDiff(AiFiles에서 슬라이스된 3개 레이어). 실제 테스트 케이스에서 검증됨: m001(변수 5개 + 진입점 2개)은 적용됨; m000(변수 0개)은 정직하게 거부됨.Core/OperationPreview.cs(테스트 5개):OperationPreview/FilePreviewSummary— 3단계 차이점(바이트/디스어셈블리/의미론) 노출 PER FILE, null-safe 제공자(파일 하나에서 오류가 발생해도 미리보기가 중단되지 않음);BuildFromPlan는 실행기(post-stage preview = 정확히 승격될 내용)와 동일한 스테이징 규칙을 사용합니다. 전체 e2e 테스트: EditSession → OperationPlan → OperationExecutorV2 → ReceiptBuilder → 편집 내용이 반영된 출력물 (CostMp=7) — 시뮬레이션→검토→적용→영수증 기능이 실제 Core에서 정상 작동합니다. end-to-enddocs/ai/P2_VALIDACAO_SOURCE_2026-07-31.md(출처/IDA 검증): 게임이 WHOLE 몬스터 빈을 불러오고, 고정된 헤더 오프셋(FFX_Battle_LoadMonsterFilesIntoMemoryChr@0x783730,InstallMonsterFileSectionPointers@0x783BB0 — pointer-trust, 런타임 해시 없음)을 통해 파티션을 해결합니다 → whole-bin 해시 전제 조건이 올바른 것으로 확인됨; ATEL 내의 IDA 디스패치 (FFX_Atel_InterpretWorkerOpcodes@0x864180,DispatchNativeCall@0x877720, 배틀 테이블 @0xC42618); 오퍼코드 0xAE/0x9F/0xA0/0xB5/0xD8 corpus-proven; RT0 게이트는 구조적 round-trip을 검증합니다(in-game 동작은 아님 — RT2은 설계상 아직 미해결 상태임);ffx-reconstructed배틀은 stub-level입니다(런타임 진실은 IDA 문서에 명시되어 있음).- 기준치: 223/223 PASS (207 → 223). ### MINOR
v2.196.0.0
v2.197.1.0BETAPATCH
Seymour2026년 7월 31일
`--phase-rotation-rt0` gate fix (stale shape check) + integration into `offline_ci.ps1`
RuntimeTools/AiScriptLab/Program.cs(PhaseRotationRt0): 형상 검사에서 추가된 블록 내에서D8 0x700B(PerformCommand)을 기대했으나,AiPhaseRotationWriter는 현재 레시피에서D8 0x705A(ForcePerformCommand —CommandCallFor)을 출력함 → 319/319개의 코퍼스 항목에서queued=False→ (마지막으로 기록된 실행은 전환 전인 v2.85.x).0x705A로 수정하고hasForcedPerform로 이름을 변경했습니다. 체계적인 진단 결과: apply/validator/splice는 이미 319/319를 통과했으며, 유일한 오류 원인은queued이었습니다(--json을 통해 확인한 319건의 실패 사례 모두에서 동일하게 나타남).RuntimeTools/offline_ci.ps1:--phase-rotation-rt0게이트 추가됨 로 해당 AiScriptLab 섹션 — 닫힘 해당 Goal-4 "패밀리 RT0 게이트 이전 Build" 르쿠이르먼트, 어떤 에엑스이스트드 에서 AiScriptLab 그러나 였음 아님 연결된 해당 공식 CI.- 결과:
--phase-rotation-rt0PASS (레시피 적용 319/319, 검증기 319/319, 스프르이크에 319/319, 시아프에 검사 319/319, var1 저장 300/300). offline_ci: 1 남은 pre-existing 우느르르아트드 FAIL —BattleCompanionActivationLab(mcyt00_21드르이프트 스에느트이느에르: 해당FFX Extracted코퍼스 임 다시 바닐라 — slot0=m213, 포메이션 213/37/37 — 동안 해당 스에느트이느에르 문서 해당 아레나+ 레인 Dark 에온 334/335/336 변형; 보류 중 판단: 복원 해당 아레나+ 아르트이프아크트, 업데이트 해당 스에느트이느에르, 또는 수락 해당 문서화된 드르이프트). - 기준값: 223/223 PASS (전체 세트는 변경 없음; 수정 사항은 tooling-gate에만 해당). ### MINOR ### MINOR
v2.197.0.0
v2.197.1.1BETAREVISION
Seymour2026년 7월 31일
P3-L1: runtime/integrations/release contracts foundation
docs/ai/P3_RUNTIME_CONTRACTS_2026-07-31.md(거버넌스 문서, read-only — 바이트 단위 변경 없음): per-resource 런타임 계약 —FfxDinput8Probe(마스터 main-thread 키, MMFLocal\FFXProbeBlock_v1, STANDBY 기본값, RT2 PROVEN 2026-06-03, 진단 모드mon/read/arena-flags),FfxHooksDll(23개의 훅, F7 플래그, per-layer 계약), 11개의 read-only RT2 프로브 (프로브별 진단 모드); 증거를 통해 해결된 강제 전투 모순 (크래시 = 메인 스레드 외 →CreateRemoteThread폐기; main-thread 브리지 PROVEN on-screen 메커니즘 / LAB 제품 — 제품화 대기 중); 외부 도구(프로브, 후크, 크트르, 코퍼스)를 위한 설치/구성/폴백/actionable-error 계약; 호환성 매트릭스 (FFX.exe = 단일 대상; 프프엑스오프이크이얼 = IDA 참조; PS2 = 오프라인 코퍼스); P3 배치 L2–L6 측정 가능한 목표 포함 (GameEnvironmentProbe, 12개 항목 작업 모음, 릴리스 매니페스트+해시, Gemini 계약, per-family RT2).- 행동 변화 없음 — 기준치 223/223PASS은 변경되지 않음. ### PATCH
v2.197.1.0