44 lines
3.2 KiB
Markdown
44 lines
3.2 KiB
Markdown
# 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
|
|
→ `/data` rw, release → `/modpacks` ro, server/config → `/config` ro.
|
|
- `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](runtime.md).
|