アップデート 2.198
2026/8/1
v2.198.0.0BETA
Seymour2026年7月31日
P3-L2: `GameEnvironmentProbe`(ランタイム環境の健全性チェック)
Core/GameEnvironmentProbe.cs(新規、テスト10件): ランタイム環境のバージョン検出/健全性チェック — P3 契約を満たす(プロンプト L410-416: detector · install/config/permission/path契約 · fallback · 生のスタックトレースを含まない実行可能なエラー · 互換性マトリックス)。検出対象:FFX.exe(FileVersionInfo のバージョン +data\jppc/intl/us/eu経由のリージョン)、modules\ffx-probe.dll+modules\FfxHooksDll.dll、有効なフラグ(config\*.flagとroot)、FfxProbe_Service経由のライブプローブ(MMFLocal\FFXProbeBlock_v1— IsAttached/IsHooked/Heartbeat、read-only、有効化されたものはなし)。ゲームrootの検出:FFX_GAME_ROOTenv → Steamレジストリ →libraryfolders.vdf(unescapeして解析、テスト可能)→ 一般的な候補。型付き結果GameEnvironmentReport(State Ok/Warning/Error +EnvironmentIssueCode/Message/ActionableMessage)— UI は型付き状態を表示し、生のスタックトレースは決して表示しない。- ベースライン: 233/233 PASS(223 + 新規10件)。 ### REVISION ### REVISION
v2.197.1.1
v2.198.1.0BETAPATCH
Seymour2026年7月31日
P3-L3: operations-platform hardening (cancel/rollback/journal/lock/redaction) + resilience suite (12 tests)
Core/OperationExecutorV2.cs((強化):ExecuteAsync(plan, CancellationToken)(ステージ前、操作間、プロモート前、プロモート中)とStageAsync; プロモート時の自動ロールバック (失敗/キャンセルが既にプロモートされた出力をバックアップから復元、 already-promoted またはこのプロモートが作成した出力を削除); の journal.json (状態 BackupRoot (promoting/success/cancelled/失敗 — リカバリ契約、ベストエフォートはopを決して失敗させない) best-effort ; プロモートを直列化する 静的ロック (並行契約 — 同じ出力の2つのopが決してインターリーブしない); //の リダクション (LlmRedactor) 技術情報 ErrorMessage/RecoveryInstructions技術情報 /(秘密が失敗サーフェスに決して現れない)。FFXProjectEditor.Tests/Core/OperationResilienceTests.cs((新規、12テスト): ステージ前キャンセル / ステージ中キャンセル(アダプターがトークンを観測)→ 何も書かれない; 注入されたプロモート失敗 → 既にプ ロ already-promoted モートされた出力のロールバック(元のハッシュ復元); journal失敗/成功 + 元のバイトの.bakバックアップ; 並行性(同じ出力の2並行実行 → 無傷結果、1つの完全勝者); 失敗メッセージからリダクションされた秘密; 空プラン → 「なし operations」; 禁止差分(が許可リスト外のフィールドを拒否) (EditSession.Build ; ラウンドトリップ; OperationPlan JSON round-trip; 失敗レシート一貫(=0)。=0) (FilesWritten=0).- ベースライン: 245/2 PASS ((233 + 12新規)。 ### MINOR ### MINOR
v2.198.0.0
v2.198.2.0BETAPATCH
Seymour2026年7月31日
FfxSaveSphereGrid hardening (bounds guard + native truth) + Ghidra/Fahrenheit symbol-table import into the canonical DB (8,281 renames)
FfxLib/Save/FfxSaveSphereGrid.cs((修正):FfxSaveSphereGridNodeSnapshot.Read/Write/ReadActivation/WriteActivationが実行可能なNodeIndex((レガシーモデルの0..859)をガードするようになった FFXED — セーブバッファへの潜在書き込みを修正; 新しい定数ArgumentOutOfRangeException技 OOB 術情報NativeTableBase((=8684)とNativeMaxNodeIndex((=1279)がネイティブセーブ容量を公開; XML ドキュメントがFfxSaveSphereGridRuntimeTableことを明確化。 NOT 技術情報FfxLib/Save/FfxSaveSphereGridRuntimeTable.cs((doc): cross-confirmed hrenheit/Ghidraシンボルテーブルで相互確認 —eiAbmDataInit(SaveSphereGrid*)@ 0xA53DE0 とMsGetSaveAbilityMap() → SaveSphereGrid*@ 0x785000 が状態ブロックが実際のエンジン型であることを証明; ネイティブ容量1280ノード / 1280リンク / カーソル。FfxLib/Save/FfxSaveBatchActions.cs((doc):ImportSphereGridRegionをレガシー+64モデルとして文書化; 860グリッド用のネイティブパス(スパン8684..13579)を指摘。- RE — Fahrenheit-crewシンボルテーブルインポート: symbol-table 技術情報 7,609関数 + 672グローバル をベース DB
ffxoficial.exe.i64(でリネーム(合計8,281; ソース USER_DEFINED 460 + IMPORTED 460 + 460 + 2, ANALYSIS 816 + フィルタ済み 7,570; プロジェクトのFFX_*名を決して上書きしない — 3,774保持); グローバルはプリミティブ型を取得; バックアップbackups_ffxoficial\ffxoficial.exe.before_ghidra_renames_20260731_231338.i64. 内のプラグイン(ポート13338)経由でチームの DBffxoficial_COPY.i64に伝播: ida-pro-mcp に7, RPC 440関数 GUI (+ 490グローバル適用、17スキップ(名保持) COPY, 技術情報 (GUI 、保存; バ DB ックアップffxoficial_COPY.before_ghidra_renames_20260731_233813.i64. 発見:LpAbilityMapEngine構造体(0x12FC0; clusters[128]/nodes[1024]/links[1024] — 完全レイアウトはdoc)、静的.dataバッファ0x16AD870(InitLpamng @ A572E0), 技術情報1024ループを持つ12関数 をマップ( 、 (RenderPathNodes A50290, eiAbmCalc A53570, eiAbmParaGet A54860, ClearNodeTransforms A57120, ReadAndProcessInputState A57520, BuildLinkBatchSegment A57710, UpdatePlacementSlotTransform A58080, DialogDispatch A583E0, InitPlacementGrid A5B230, レンダー861 (681DB0/7F4900)元の名前eiAbm*/+AbmapState_*/abmap_*,SaveSphereGrid型確認。 重要結論: ネイティブセーブは既に1280/1280をサポート — 1024を超えるボトルネックは静的ランタイム構造体 + ループ + レンダーであり、セーブではない。ドキュメント:docs/reverse/FFX_GHIDRA_FAHRENHEIT_SYMBOL_IMPORT_2026-07-31.md; スクリプト/レポートはwork/_fahrenheit_probe/. - ステータス:
Needs Testing— グリーンビルド; 新しいガードは範囲外 out-of-range コンシューマーなし(doc以外のコード使用なし)。 ### PATCH
v2.198.1.0
v2.198.2.1BETA
Seymour2026年7月31日
fahrenheit-excel: 実際のカーネルフィールド名をエディターに適用(KeyItem/Important + Treasure/takara)+ 「Excel」コンテナを文書化
- ソース: 2番目のfahrenheitリポジトリ(
fahrenheit-excel)— 8つの新しいstruct +excel.csの書き換え(Excelコンテナ:ExcelProlog0x8 +ExcelHeader0xC +ExcelTextOffset0x4 — 私たちのCustomization_File.ReadHeader、HeaderLength 0x14 と一致)。 FfxLib/Common/KeyItem_File.cs+ KeyItemEditor(改名):PrimerByte10/RawByte11/RawByte12/OrderingByte13→ItemType/ItemValue/Icon/Number(実際のGhidra名;0x10 = 「is Al Bhed Primer?」、0x13 = primer number)— XAML、summary、RT0 を更新。FfxLib/Treasure/Treasure_File.cs+ TreasureEditor + BukiGetTreasureCatalog + TaskRewardGameFileLoader + TreasureRt0(改名):Treasure_Entry.Type→ItemId(fahrenheitTreasure{item_id u16}を確認);VMTreasureRow.Type/TypeHex/TypeDecimal→ItemId/ItemIdHex/ItemIdDecimal;XAML のバインディングを更新。- 確認:
MixRecipe= ushort[0x70] はMixTable_Fileと一致(EntryLength 0xE0);SphereGridNodeType.amount@0x14はIncreaseAmountを確認;SphereGridNodeTypeInfo→SphereGridNodeTypeUiInfo(lpamngnode_type_infos配列は UI-only)。 - 文書化(将来のwriter向け):
Sphere(ACTIVATOR/MODIFIER + 11ステータスbitmask + NORMAL/UNLIMITED 範囲)、Rate、WeaponName、HelpText/NameHelpText、Treasure。 - ベースライン: 245/245 PASS · Build 0 errors。ドキュメント:
docs/reverse/FFX_GHIDRA_FAHRENHEIT_SYMBOL_IMPORT_2026-07-31.md§fahrenheit-excel。 ### PATCH
v2.198.2.0
v2.198.3.0BETAPATCH
Seymour2026年7月31日
P3-L4: release — `scripts/release_manifest.ps1` (verifiable manifest) + process doc
scripts/release_manifest.ps1((新規、運用): リリースマニフェスト — csprojの<Version>からバージョン(真実の源) SHA-256 、全.exe/.dllビルドアーティファクトの(.経由の.sha256サイドカー付き — このマシンのと互換)NET SHA256 、最初のチェンジログエントリ(クロスチェック) PS)技術情報), (cross-check),gitCommit/gitDirty(dirty-worktree = アラート)、signing: "not-signed"((実行なしに署名を完了と決して宣言しない)。検証: Releaseビルドの103アーティファクトを正しいハッシュで。docs/ai/P3_RELEASE_2026-07-31.md((新規): 7ステップリリースフロー(ビルド → テスト → offline ci → 全ターゲットデプロイ → マニフェスト → ハッシュ検証 → 署名);.gitignore監査(カバレッジ既存 — bin/obj/work/.vs、変更不要; 外国の作業があるワークツリーでの破壊的クリーンアップなし); 署名を計画として文 AS A PLAN ((signtool/Authenticode — 未実行、証明書インポートなし)。- エディタ動作変更なし — ベースライン245/245 PASS 未変更。 ### PATCH
v2.198.3.3
v2.198.3.1BETA
Seymour2026年7月31日
P3-L5: 短い ウルフラマイター 契約(UI ↔ Core)
docs/ai/P3_GEMINI_CONTRACT_2026-07-31.md(実際の型に基づく契約): ファイル所有権(Core = backend / Modules+AXAML = UI);公開DTO(CapabilityDescriptor、OperationPlanPreview/ChangeSetSummary、OperationProgress、CommitReceipt、ValidationResult、OperationResult、FilePreviewSummary/OperationPreview、GameEnvironmentReport);コマンド(EditSession fluent、OperationExecutorV2、OperationPreview、ReceiptBuilder、GameEnvironmentProbe);型付き状態 loading/empty/unavailable/warning/blocked/failure(実際の発生元付き);ValidationIssue コード;実際のケイパビリティID 10個;モック/暫定(ヒューリスティックなSteam検出、LAB FfxProbe_Service、opt-in LlmHttpAdapter、完全な配線なしの OperationProgress);厳格なルール(UI は OperationPlan の外部にwriterを決して作成しない;メッセージはすでに秘匿化済み;AXAML/テーマは調整時のみ)。Read-only — ベースライン245/245の PASS は未変更。 ### PATCH
v2.198.3.0
v2.198.3.2BETAREVISION
Seymour2026年7月31日
P3-L6: per-family RT2 ) — : ファミリーごとのプロトコル(再現可能、ログ付き)
- 前版:
v2.198.3.1] docs/ai/P3_RT2_PROTOCOL_2026-07-31.md((プロトコル; 実行 = 人間ランタイム): 終了ゲート付きの明確な//( RT0/RT1/RT2 = バイト同一ゲート; (RT0 = CLI byte-identity 技術情報 RT2 = 再現可能なbefore/afterログ + 使い捨てセーブ); セッション前提条件(プローブデプロイ、ffxprobectl mon, 使い捨てセーブ、エディタクローズ); フェーズ Rotationファミリーパイロット 内で 7ステップ(レシピ適用 → ハッシュ H2 → バニラバックアップでデプロイ → バトル H1 → 5観測ターン → 読み取り専用カウンター読み取り read-only counter-var 技術情報 H1 → 復元 → ログ付きでのみ昇格); per-family ファミリーごとのチェックリスト(probe PROVEN/強制 バトル 1シナリオ/フェーズ Rotation保留/フック 部分的な/読み取り専用プローブ)read-only ; 昇格ルール(な RT0しで→productionを決してしない; RT2; メインセーブを決してしない; CreateRemoteThread)を決してしない); 強制 Battle矛盾を参照(メカニズム (PROVEN / 製品)。読み取り専用 LAB 技術情報 Read-only — ベースライン245/245 PASS 未変更。 ### REVISION ### REVISION
v2.198.3.3BETAREVISION
Seymour2026年8月1日
ウルフラマイター ) — Geminiプロンプト更新: P3 完全バックエンドを反映(245/245、エグゼキューターcancel/rollback/journal/lock、実アダプター、必須↔Core契約) UI技術情報
- 前版:
v2.198.3.2] docs/ai/PROMPT_GEMINI_UI_UX_FINAL_2026-08-01.md((更新): バージョン2.198.3.2+ 245/245 PASS; のヘッダー; 必須読書にP3_GEMINI_CONTRACT_2026-07-31.md((項目5 — 公式↔Core契約) UIを含む; 更新されたOperationExecutorV2(CancellationToken 4チェックポイント、自動ロールバック、、、リダクション済みメッセージ) journal.json, PromoteGate, , + 新しい型OperationPreview/FilePreviewSummary((3層差分)のCoreテーブル; アダプターテーブル修正 ((10登録 — 10行で「8」だった — と IDs: 技 REAL 術情報ability-commandとatel-recipe-phase-rotation, 以前は間違っていた); 発見付きGameEnvironmentProbe(env/registry/););libraryfolders.vdf); 新しい「Backend state」ブロック ((245/245、信頼できるエグゼキューター、既にリダクション済みメッセージ、 already-redacted 技術情報 exception-free 技術情報 例外なしヘルスチェック、3層プレビュー、リリースマニフェスト、 RT2 プロトコル、 other-lane changes — FfxSaveSphereGrid — 他レーンの変更 — 境界ガード、fahrenheitリネーム、既知の注釈 FAILmcyt00_21)技術情報 ); 制限が (lane race 技術情報git add -A). No behavior change — baseline 245/245 PASS untouched. ### REVISION ### REVISION
v2.198.3.4BETA
Seymour2026年8月1日
SphereGrid sphere.bin をfahrenheitの `Sphere` structに適応(実名 + enum + corpus-proven validator修正)
FfxLib/SphereGrid/SphereGrid_File.cs(+Write.cs)(改名+enum):SphereGridSphereTypeEntryActionValue/ActivationBitfield/RangeValue/AlwaysZero→Behavior/Activates/Range/Reserved0x0E(Ghidra/fahrenheitSphereの実名);新enumSphereBehavior(なし/Activator/Modifier)、SphereTargets[Flags](11ステータス、All=0x07FF— ビット順は 未実証、vanilla値を文書化)、SphereRange(なし/Normal/Unlimited=0x20);派生プロパティBehaviorKind/ActivatesTargets/RangeKind;ActionLabelを修正(「Mutator」→「Modifier」)。Core/Writers/SphereGridAdapter.cs(修正+堅牢化): キーを改名(Behavior/Activates/Range/Reserved0x0E);SpecialRolevalidatorを 0x0F→0x1F に修正(vanillaコーパスは最大24までの特殊ロールを使用 — sphere.bin のスロット14..29;旧validatorは正当なグリッドを拒否していた);Behaviorを0..2で検証(コーパスが0..2のみを証明);メッセージはenumを参照。SphereGridExplorer(改名): VMSphereGridSphereTypeEditorRow+ state + helper + XAML を更新;SetSelectedOptions/diffs/baseline を改名。- コーパスによる証明(jppc
battle\kernel\sphere.bin、50エントリ、elem 0x10): ACTIVATOR=1(Ability/Power/メンタルW/Speed/幸運 + Key L1–L4 の特殊8..11 + Friend 0x07FF)、MODIFIER=2(Return=1、Teleport=2、Clear=3、Master=4)、範囲 0x01 NORMAL / 0x20 UNLIMITED;インデックスはSphereGridNodeSphereRequirementKindと一致(Ability=0..幸運=4)。ドキュメント:docs/reverse/FFX_GHIDRA_FAHRENHEIT_SYMBOL_IMPORT_2026-07-31.md§sphere.bin。 - ベースライン: 245/245 PASS · Build 0 errors。ステータス:
validated(byte-idempotent の改名 + RT0/RoundTrip は維持)。 ### REVISION
v2.198.3.3
v2.198.4.0BETAPATCH
Seymour2026年8月1日
Clean no-hook RT2 test path for True New Node + crash-theory correction + external community confirmation (1024/1024/128)
SphereGridDeployPolicy.cs((リビジョン): 「 861/882クラッシュno-hook exit」発見は退役した v RT2 5フックスタック(マニフェスト/サイドカー/)の実行から来た)SEH) — クリーンデプロイからは決して来なかった. 今日の(ヘッダー駆動エンジン; RE (header-driven ( 静的LpAbilityMapEngine1024/1024/128; ネイティブセーブ1280/1280)で、カウント≤1024は フック不要. 疑わしい実際の天井: レンダー (681DB0861×48バッファ +7F4900n861 >= 861ゲート)。新しいオ opt-in プトインオーバーライドbuilder.AllowRuntimeTestDeploy((デフォルト) OFF) がクリ SaveToProject/SaveSquareToProject / ンテスト用の変更カウント付き/をアンロック。SphereGrid_File.Builder.cs:AllowRuntimeTestDeployプロパティ + ドキュメント。SphereGridCanvas_DataModel.cs+SphereGridCanvas_Control.axaml: 「Allow RT2 テスト )」ツールバーチェックボックス; (no-hook)技術情報RefreshTopologySafetySummaryがテスト状態を表示(🧪使い捨てセーブ警告付き解放 disposable-save / 🚫修正説明付きブロック)。- 外部確認: EvelynTSMG() (fahrenheit-crew) が天井 1024ノード / 1024リンク / 128クラスター を確認 — 私たちが実証した
LpAbilityMapEngine(//の配列、 //, 0x808/0xA808/0x8,.dataバッファ)と完全一致。 0x16AD870)Dragoon(コミュニティ)が彼のエディタで追加/結合/拡張をテスト。 - クリー RT2 ンテストプロトコルを文書化 ((doc RE §external confirmation): Standard → Square Mode → +1ノード/+1リンク → チェックボックス → 保存 → デプロイ → 使い捨てセーブ → 開く/移動/退出 → クラッシュなし = 天井超過(900/1024を繰り返し); クラッシュ = レンダーが天井(2バイトパッチ、フックなし)。
- ベースライン: 245/2 PASS · ビルド0エラー。ステータス:
Needs Testing((人間)。 ) RT2). ### PATCH
v2.198.3.4
v2.198.4.1BETAPATCH
Seymour2026年8月1日
ATEL 比較オペコードの意味論的修正(///) (0x0A/0x0B/0x0E/0x0F) ///) — インタープリター逆コンパイルで実証
- 前版:
v2.198.4.0] - 発見(ソース: noclip.website
src/FinalFantasyX/script.ts— field-script フィールドスクリプトオペコードenum): コーデックマッピング (GT=0x0A, LT=0x0B, GE=0x0E, LE=0x0F) はに対して 反転 していた (LT=0x0A, GT=0x0B...). 逆コンパイルで実証 のFFX_Atel_InterpretWorkerOpcodes@0x864180+FFX_FieldVM_PopOperand@0x86DE90((pop = 上位): スタック[A(base), B(top)], 0x0B はA < B, 0x0A はA <= B(0x0E/0x0F = float変種)。 直接の「」はないgreater-than" — コンパイラーはA > Bを[B, A] + 0x0B(B < A)として表現する。 RT0 ゲート(構造的ラウンドトリップ) round-trip) は意味論的エラーを捕捉できない — 逆コンパイルだけがそれらを露出させる。 - 修正:
AiVarConditionBuilder(GreaterThan/GreaterOrEqual /が現在は交換順[N, var]+ LT/LE; LessOrEqual 技術情報 0x0F→0x0A),AiAutomation((フィールド/ステータス/Overdriveガード:[threshold, field]+ LT; GT/GE ; / ; /定数削除)、AiPhaseRotationRecipe(final-phase 技術情報[FinalLimit, counter]+ LT),AiBibleCatalog(0x0A–0x0F (– 技術情報.i64をケースでコメント(/)— 。ドキュメント:/) — (0x8646E4/0x864759) — GOLDEN RULE. 技術情報docs/reverse/FFX_ATEL_COMPARISON_OPCODE_SEMANTICS_2026-08-01.md((3ソース: インタープリター = 真実、noclip = 方向、fahrenheit = 命名)。 - 検証:
--phase-rotation-rt0319/319 PASS · AI + プラットフォームテスト 64/64 PASS · ベースライン254(1失敗は進行中の新しいレーンテスト、 SphereGrid-lane test 範囲外)。 ### PATCH
v2.198.4.2BETAREVISION
Lulu2026年8月1日
C3-1: magic DLL resource-key catalog VALIDATED - draft premise refuted (0/149 keys index the root table; real semantics = host global table, runtime-populated)
v2.198.4.1