Technical Design: Dry-run & Validation (hsm check)
Этот документ описывает механизмы предварительной проверки конфигурации стека перед его реальной сборкой. Логика валидации вынесена в отдельный модуль hsm/src/hyper_stack_manager/core/validator.py.
1. Задача
Пользователь хочет убедиться, что выбранная комбинация групп, пакетов и контейнеров в hsm.yaml корректна, компоненты существуют в Реестре, а Python-зависимости разрешимы, не выполняя долгую установку.
2. Решение: Многоуровневая валидация
2.1. Уровень 1: Структурная проверка (Manifest Check)
HSM проверяет hsm.yaml на соответствие схеме:
- Наличие обязательных полей.
- Корректность типов данных (например,
selectionдолжен быть списком для стратегииM-of-N).
2.2. Уровень 2: Проверка Реестра (Registry Check)
HSM проверяет, что все компоненты, указанные в hsm.yaml, существуют в Реестре:
- Поиск в
packages/,containers/,package_groups/иcontainer_groups/. - Проверка наличия необходимых источников (
sources) для выбранного режима.
2.3. Уровень 3: Разрешимость зависимостей (Dependency Check)
Для Python-пакетов HSM использует uv lock как быстрый валидатор:
- Генерация временного артефакта: HSM создает временный
pyproject.tomlв памяти или в.hsm/tmp/. - Запуск резолвера: Выполняет
uv lockв этой временной директории. - Анализ: Если
uvнаходит конфликт версий, HSM транслирует ошибку пользователю, не меняя основнойpyproject.tomlпроекта.
3. Интеграция в CLI
hsm check
Логика выполнения:
- Загрузить
hsm.yaml. - Для каждой группы и пакета найти манифест в Реестре.
- Сформировать полный список требований.
- Вызвать адаптеры в режиме
dry-run(если поддерживается) или черезlock. - Вывести вердикт: "Stack configuration is valid" или список ошибок.
4. Преимущества
- Скорость: Проверка занимает секунды, так как не требует скачивания и установки тяжелых пакетов или образов.
- Безопасность: Гарантирует, что последующий
hsm syncпройдет успешно. - Информативность: Дает четкое понимание причин конфликтов на раннем этапе.