# Phase 3: mod wrappers Phase 3 завершена: `mcpack add`, `remove`, `update `, `update --all` делегируют операции закреплённому packwiz. Config/путь source/бинарник проверяются до вызова; оригинальные prompts, stdout/stderr и exit code packwiz сохраняются. Add поддерживает штатные Modrinth version URLs. ## Реальная integration-проверка `bash scripts/verify-phase3.sh` успешно выполнен в тестовом clone `.tools/phase3-check.m9vdq6/clone`. Лог: `.tools/phase3-integration.log`; diff source: `.tools/phase3-check.m9vdq6/source-changes.diff`. 1. Remove Backpacks удалил `.pw.toml` и обновил index. 2. Add version URL создал metadata для 3.26.6.2174 / `pJxNzk4X`; уже установленный Core сохранился. 3. Update одного мода заменил Backpacks на 3.26.7.2182 / `Igmp9PwW`. 4. Для update --all снова установлена старая версия. Команда реально обновила её, после чего metadata вернулась к 3.26.7.2182. 5. После каждого состояния успешен full build: `phase3-remove`, `phase3-add`, `phase3-update`, `phase3-all`. Для всех прошли Compose config и SHA256SUMS, source metadata осталась консистентной. Тестовые versions менялись только в clone, чтобы сохранить неизменяемые готовые релизы. Основной pack остаётся 0.0.4 с прежними тремя модами; активный сервер и мир не изменялись и не перезапускались. ## Автоматические проверки `npm test`: 16/16 успешны. Помимо 12 build-тестов проверены: - точное отображение команд/аргументов packwiz, включая --all и --yes; - отклонение неверных комбинаций до запуска tool; - выбор source directory через config при вызове из другого cwd; - literal search argv без shell execution; - сохранение stdout/stderr и тестового exit code 17; - отказ при изменённом hash packwiz. Bash/Node syntax и `git diff --check` успешны. Реальные GUI/server проверки новых модов не входят в Phase 3; wrappers меняют source, не deployment. Пользовательские команды и контракт — [mods.md](mods.md).