Verify behavior

Код: internal/agent/service.go (VerifyArtifact, executeJobVerificationRun). Результат хранится как storage.VerificationResult.

Статусы

HTTP/JSON поле status остаётся строкой (success / failed / error и т.д.), совместимой с существующими клиентами. Дополнительно используется поле reason с машиночитаемыми кодами:

Reason Условие
MISSING_MANIFEST Нет записи manifest в bolt
MISSING_ARTIFACT В manifest отсутствует path
DESTINATION_READ_ERROR Ошибка destination.Get или чтения потока
CHECKSUM_MISMATCH Несовпадение хэша
SIZE_MISMATCH Несовпадение размера
UNSUPPORTED_DESTINATION Нет провайдера destination
INTERNAL_ERROR Прочие ошибки (job lookup, etc.)

Инварианты