first cycle lab release

This commit is contained in:
2026-10-04 00:30:09 +07:00
parent 85f6897365
commit d134daafd8
92 changed files with 5623 additions and 9 deletions
+43
View File
@@ -0,0 +1,43 @@
# 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).