World Dimension Loader 1.4.0 - アップグレードガイド

============================================================
1. 更新前に
============================================================
必ず次をバックアップしてください。
1) config/worlddimensionloader/
2) WDL_custom_dimensions/
3) WDLを使用しているMinecraftセーブ全体

WDL 1.4.0はConfigキーや初期値を新しく追加しません。
そのため、1.3.0から1.4.0への更新だけを理由にConfig再生成は必須ではありません。

最新のコメントを確認したい場合だけ:
- 旧Configを退避
- 一度起動して再生成
- 自分が変更した値だけ新Configへ移す

既存Configは自動上書きされません。

============================================================
2. 1.4.0の重要変更 - Reset OFF時の固定Physical ID
============================================================
新規/Pristine Runtimeで:

reset_on_empty = false

の場合、1.4.0はtimestampを付けず次を使用します。

Physical Dimension ID:
wdl:<id>

保存先:
dimensions/wdl/<id>/

固定IDが必要な他MODと組み合わせる場合は、最初からReset OFFで新しくRuntimeを作るのが正式な利用方法です。

============================================================
3. 既存1.3.0 timestamp Runtime
============================================================
1.3.0ですでにcurrentになっているtimestamp Runtimeは、1.4.0へ更新してResetをOFFにしても固定IDへ自動移行しません。

例:
wdl:test_world_01/20260822123000

は、そのままcurrentとして維持されます。

1.4.0はtimestamp -> wdl:<id> の:
- 自動reverse migration
- in-place移行コマンド
を提供しません。

Runtimeフォルダを手動でリネーム/移動しないでください。
Physical Dimension IDをファイル操作だけで変更すると、プレイヤー位置、他MODのSavedData/キャッシュ、Recovery authorityなどと不整合になる可能性があります。

============================================================
4. Reset OFF -> ON
============================================================
固定ID Runtimeを後から:

reset_on_empty = true

へ変更しても即時リネームしません。

現在のfixed Runtimeをそのまま使用し、最初の実Resetが成立したときにtimestamp物理世代へRotationします。

Resetを実際に利用するDimensionでは、以後固定Physical IDを永続保証できません。

============================================================
5. 曖昧なRuntime storageはFAIL-CLOSED
============================================================
exact lifecycle authorityが無い状態で、同じlogical IDに複数のPhysical候補が見つかる場合があります。

例:
dimensions/wdl/test_world_01/                 # fixed payload
dimensions/wdl/test_world_01/<timestamp>/     # timestamp generation

また、旧canonical保存先:
dimensions/worlddimensionloader/test_world_01/
が同時に残る場合も同様に曖昧として扱います。この旧パスは既存authority互換のために扱うもので、新規1.4.0 Reset OFFの保存先ではありません。

1.4.0はこの状態で「どちらが新しいか」を推測しません。

安全動作:
- 自動採用しない
- 新規Generationを勝手に作らない
- フォルダを移動しない
- 候補を削除しない
- Startup GCもcurrentを証明できない候補を削除しない
- FAIL-CLOSEDとして診断可能な状態を維持

手動削除で解決しようとせず、バックアップとlatest.log/debug.logを保管してください。

============================================================
6. Reset中にConfigを変更した場合
============================================================
Resetがまだ破壊処理へ進む前なら、Reset OFFへの変更でキャンセルできる場合があります。

ただし、同一Reset operationの破壊/Recovery authorityがすでに成立した後は、Config変更だけでは単純キャンセルしません。

Recovery/transaction safetyがConfigより優先されます。

破損/競合したauthorityを「何もない」と扱って続行することもしません。安全側で停止します。

============================================================
7. Gate selection
============================================================
1.3.0以降の現行仕様:
- selection_mode省略 + dimensionsあり -> LIST
- selection_mode="LIST" -> LIST
- selection_mode="ALL" -> READYなWDL Dimension全体
- modeもdimensionsも省略 -> 旧Config互換ALL

既存Gateで意図的にALLを使う場合は selection_mode="ALL" を明示してください。

============================================================
8. Cleanup / Resident
============================================================
現行キー:
runtime.defer_dimension_cleanup_until_restart

旧互換キー:
runtime.resident_reset_compatibility

安全側初期値はtrueです。

true:
旧Generationをプレイ中に削除せず、次回起動時Startup GCで安全確認後に整理。

false:
live unload/deleteを試す上級設定。非推奨。

Valkyrien Skies検知時はdeferred cleanupを強制します。

resident_gc_backup初期値はfalseです。

============================================================
9. 互換性
============================================================
Valkyrien SkiesとDistant Horizonsはどちらも任意依存です。
どちらも導入していない環境が通常baselineです。

現在の保護/検証は:
- Valkyrien Skies 2.4.11
- Distant Horizons 3.2.0-b
の挙動を中心にしています。

将来の未知バージョンまで保証するものではありません。

============================================================
10. 更新後の確認
============================================================
最低限:
1) /wdl scan
2) /wdl list
3) /wdl status
4) 既存Dimensionへ入れることを確認
5) 新規Reset OFF Dimensionが wdl:<id> になることを確認
6) 既存timestamp Dimensionが勝手に移動していないことを確認

STARTUP ONLY設定を変更した場合は完全な再起動が必要です。
