3.2 KiB
Phase 4: server runtime
Phase 4 завершена для NeoForge 21.1.252 / Minecraft 1.21.1. Full release
0.0.4 реально запущен с пустой директорией данных через scripts/server.sh.
Реальная Docker-проверка
- Server root:
.tools/phase4-server, project:minecraft-lab-phase4. - Настройки: EULA=TRUE по ранее полученному принятию, UID/GID=1000:1000, memory=2G, IPv4 loopback port=25566.
- Первый
up -d --wait --wait-timeout 600завершился healthy. Лог подтвердил создание нового мира, Minecraft 1.21.1, NeoForge 21.1.252, Backpacks 3.26.7 и Core 1.5.5. Mouse Tweaks отсутствовал в серверных JAR. - Docker inspect подтвердил обычные абсолютные bind mounts: host runtime
→
/datarw, release →/modpacksro, server/config →/configro. world/level.datпринадлежит 1000:1000. Pack загружен из.mrpack, server override marker=server-override-v1,online-mode=falseиenforce-secure-profile=falseподтверждены.- Restart того же контейнера завершился healthy.
- После остановки и
create --force-recreateвсе 23 файла мира совпали по путям/SHA256 до нового запуска. Неуправляемый config marker сохранился. - Вновь запущенный контейнер healthy; mc-health отвечает Minecraft 1.21.1.
- Финальная версия wrapper дополнительно проверена реальным up/exec/down после добавления проверки принадлежности Compose project.
- Тестовый контейнер/network удалены через down, runtime и binding сохранены. Основной сервер на 25565 не пересоздавался и остался healthy.
Свидетельства: .tools/phase4-evidence/first-start.log, mounts.json,
before-recreate-world.json, recreate-verification.txt,
recreated-start.log. Test root остаётся пригодным для последующих проверок.
Автоматические проверки
npm test: 25 тестов. Новые runtime tests используют controlled Compose/Docker
substitutes и проверяют integrity/coverage, EULA/UID/GID, immutable binding,
смену release/project, защиту существующего мира, failed startup/exit code,
operation lock, offline/bind contract, paths и конфликт project другого root.
Build/mod regression tests также проходят. Реальная Docker-проверка выше
подтверждает integration, которую substitutes сами по себе не доказывают.
Bash/Node syntax и git diff --check пройдены. Backup, миграция существующего
мира, remote deployment и расширенная диагностика healthcheck не реализуются
этим этапом. Контракт и команды — runtime.md.