Перейти к основному содержимому

Pack не активируется

Что это

Жизненный цикл пакета — это строгая последовательность состояний (src/raytsystem/packages/service.py): discoveredquarantined (после inspect) → validated/blocked (после validate) → approved (после approve) → installed (после install) → active (после activate). Каждый переход проверяет целостность, карантин и разрешения. package activate или install отклоняется, если предыдущий шаг не пройден.

Когда использовать

Когда package install или package activate возвращает ошибку, а пакет не переходит в active.

Предварительные условия

pack_lifecycle_enabled: true (config/platform.yaml). В этой поставке паки — это индексы каталога с фиксированным корнем, а не marketplace установки.

Пошагово: симптом → причина → диагностика → решение

1. Осмотрите пакет (только чтение)

uv run raytsystem package inspect <источник>

inspect заносит ревизию в карантин (quarantined) и вычисляет content_sha256. Пакеты с симлинками, секретами или превышением лимитов файлов/размера падают сразу.

2. Прогоните валидацию

uv run raytsystem package validate <revision_id>

Валидация переводит ревизию в blocked, если находит проблемы. Возможные причины отказа (src/raytsystem/packages/service.py): invalid_package_signature, dependency_not_pinned (зависимость не закреплена точной версией), dependency_unresolved (нет активной ревизии зависимости), unsafe_reference_path и self_modifying_skill (навык с правом self_modify). Только validated ревизию можно одобрять.

3. Одобрение и доверие

approve требует непустой approval_id и покрытия обязательных eval-наборов пройденными прогонами. Так как целостностный self-hash не является подписью (signature_verified всегда false), для неподписанного пака требуется область разрешения unsigned_pack в дополнение к package_activation. Недостаточная область — «Package approval authority is invalid». См. /security/approvals.

4. Установка и активация

install требует состояния approved и заново сверяет content_sha256 («Package changed after approval», если содержимое изменилось). activate требует состояния installed, совпадения approval_id и повторной проверки хэша установленного содержимого.

Ожидаемый результат

При пройденных validate/approve, совпадающих хэшах и корректном разрешении пакет переходит в active.

Ограничения и безопасность

  • Карантин обязателен: неизвестный пак не может сам объявить себя доверенным.
  • Секреты, YAML-якоря/merge-ключи, дубли ключей и слишком сложные деревья fail-closed.
  • Хэш содержимого перепроверяется на каждом шаге — подмена после одобрения не пройдёт.

Когда открыть issue

Если пакет прошёл validate без находок, одобрен корректной областью и хэши совпадают, но activate всё равно отклоняется — приложите revision_id и текст ошибки (без секретов) и откройте issue.

Связанные страницы

Источники истины

  • src/raytsystem/packages/service.py
  • config/platform.yaml