--- id: TASK-0018 title: Добавить миграции формата сохранений между версиями summary: Реализовать BackLog-задачу на версионирование save format и безопасные миграции world save и player save между версиями проекта. priority: Medium area: persistence owner: unassigned created: 2026-03-30 updated: 2026-03-30 execution_time: 1d depends_on: - TASK-0004 - TASK-0006 canonical_docs: - docs/tasks/Index.md related_files: - Assets/Scripts/WorldGen/InfiniteWorldGenerator.cs --- # TASK-0018 - Добавить миграции формата сохранений между версиями ## Status Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там. Допустимые значения статуса: - `BackLog` - `ToDo` - `InProgress` - `Review` - `Done` ## Why Миграции save format важны для долгоживущего проекта, но не блокируют первый MVP. Поэтому задача вынесена в `BackLog`. ## Expected Outcome Система сохранений имеет version field и pipeline миграций, позволяющий безопасно читать старые world/player save после изменений схемы. ## Current Context Базовая схема сохранений и enemy bitmask должны быть определены раньше. Иначе мигрировать будет нечего. ## Source Of Truth - `docs/tasks/items/TASK-0004.md` - `docs/tasks/items/TASK-0006.md` - future save schema docs ## Read First - `docs/tasks/items/TASK-0004.md` - `docs/tasks/items/TASK-0006.md` ## Scope In - versioning для world/player save - up-migration pipeline - базовые правила обратной совместимости чтения - обработка ошибок и fallback policy ## Scope Out - cross-game import/export tools - поддержка всех исторических pre-release форматов без ограничений ## Constraints - миграции не должны молча повреждать данные - player и world save мигрируются независимо, но по общим правилам versioning ## If You Find Drift - если save schema меняется без version bump, это нарушение задачи ## Suggested Approach 1. Добавить version field в save schemas. 2. Описать up-migration pipeline по шагам версий. 3. Подготовить тестовые старые примеры сохранений для проверки. ## Acceptance Criteria - save format имеет версию - старый save может быть прочитан и мигрирован в текущую схему - ошибки миграции не приводят к тихой потере world/player state ## Verification - ручной тест чтения старого save fixture после изменения схемы ## Risks / Open Questions - нужно определить политику для несовместимых breaking changes worldgen или enemy slot layout ## Human Decisions Needed - none currently ## Decision Log - `2026-03-30` - задача добавлена в `BackLog` по явному запросу пользователя. ## Handoff Notes Пока задача в `BackLog`, новые persistence changes все равно должны по возможности закладывать version field заранее.